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

エラーメッセージとその対処あれこれ – think-t の晴耕雨読

これで解決する。再び以下のコマンドで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.confDocumentRoot /var/www/htmlと指定されていた。ソースコードからインストールした場合は,~/.local/apache2/conf/httpd.confDocumentRoot "/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">

これでユーザー権限だけでサーバーを制御できる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です