Apache HTTP Serverの起動設定
Apache HTTP Serverのインストールができたので,起動設定を行う。
まず,以下のコマンドでApacheの起動を試みる。
apachectl
デフォルトのhttpd.conf
の設定では,以下のエラーが出て起動に失敗した。
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message (13)Permission denied: AH00072: make_sock: could not bind to address [::]:80 (13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down AH00015: Unable to open logs
この問題に対応していく。
AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message
まず,1行目の以下のエラーに対応する。
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
これは/etc/hosts
に記載されているIPアドレスとホスト名がApacheの設定ファイルに記載されていないために出ている。
例えば,僕の/etc/hosts
には以下が書かれている。
head -n 2 /etc/hosts
127.0.0.1 localhost 127.0.1.1 TP-E440
このホスト名を$APACHE_ROOT/conf/httpd.conf
にも記載する。なお,元々のhttpd.conf
はoriginalディレクトリーにも存在しているので,特にバックアップをとらなくても大丈夫だ。
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName www.example.com:80
ServerName TP-E440
Apacheのエラー:Could not reliably determine the server’s fully qualified domain name… | Weblogy
この設定のみ変更して,Apacheを起動すると以下のとおりにこのエラーのみ消えた。
apachectl
(13)Permission denied: AH00072: make_sock: could not bind to address [::]:80
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down AH00015: Unable to open logs
(13)Permission denied: AH00072: make_sock: could not bind to address [::]:80
続いて,残りの以下のエラーに対応する。
(13)Permission denied: AH00072: make_sock: could not bind to address [::]:80 (13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down AH00015: Unable to open logs
Apacheのデフォルトの待機ポート番号は80になっている。1024までのWellKnownポートで待機する場合,管理者権限でApacheを実行する必要があるため,このエラーが出ている。
そのため,ユーザー権限でも起動できるように,httpd.confのポート番号を80から例えば8080に変更する。
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
# Listen 80
Listen 8080
これで解決する。再び以下のコマンドでApacheを起動すると,何もエラーが出ないことが確認できる。
apachectl
この状態で,Webブラウザでhttp://localhost:8080
のアドレスにアクセスして,"It works!"
と表示されれば成功だ。
DocumentRootの変更
最後にDocumentRootを変更する。DocumentRootはApacheでサーバーで公開するコンテンツのルートディレクトリーを指定する。
デフォルトは/usr/local/apache/htdocs
だ。ただし,ソースコードからインストールしたり,パッケージマネージャーでインストールした場合,別の値で設定されていることがある。
例えば,Ubuntu 18.04標準のhttpdでは/etc/apache2/sites-available/000-default.conf
でDocumentRoot /var/www/html
と指定されていた。ソースコードからインストールした場合は,~/.local/apache2/conf/httpd.conf
でDocumentRoot "/home/senooken/.local/stow/httpd-2.4.39/apache2/htdocs"
と指定されていた。
自由にファイルを編集できるように,以下のようにDocumentRootとDirectory指令にローカル環境ディレクトリーの~/.local/var/www/html
を指定する。
# DocumentRoot "/home/senooken/.local/stow/httpd-2.4.39/apache2/htdocs"
# <Directory "/home/senooken/.local/stow/httpd-2.4.39/apache2/htdocs">
DocumentRoot "${HOME}/.local/var/www/html"
<Directory "${HOME}/.local/var/www/html">
これでユーザー権限だけでサーバーを制御できる。
“Apache HTTP Serverの起動設定” に対して1件のコメントがあります。