Yamamoto's Laboratory
Apache

インストールと起動確認

インストール

ubuntu server をインストールするときに,「インストールするソフトウェアーの選択」の画面で,LAMP server をチェックすれば,インストールされます.後からインストールする場合は,コマンド「$ sudo apt install apache2」を使います.

インストールされている apache のバージョンの確認は,以下のようにします.また,コマンド「apache2ctl status」でも分かります.

$ apache2  -v
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2019-07-16T18:14:45

設定・起動

設定

ファイル「/etc/apache2/conf-available/fqdn.conf」にホスト名を記載します.ファイルが無い場合は,ファイルを作成します.パーミッションは,「644」です.ホスト名は,コマンド「hostname」で調べることができます.

ServerName ホスト名

次に,この fqdn.conf を有効にするために,コマンド「$ sudo a2enconf fqdn」を実行します.以下に,コマンドと実行結果を示します.

$ sudo a2enconf fqdn
Enabling conf fqdn.
To activate the new configuration, you need to run:
  systemctl reload apache2

a2enconf は,apache2 を構成するファイルを有効にするためのスクリプトです.

このホスト名の設定を行わないと,以下のエラーが発生します.

AH00558: apache2: 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

起動

Apache を起動するために,コマンド「$ sudo /usr/sbin/apachectl restart」を実行します.以下に,コマンドと実行結果を示します.

$ sudo  apachectl restart

確認

apache の動作は,直接ブラウザにサーバーのIPアドレスを入れることで確認ができます.以下のWebページが表示されるでしょう.このページのソースは,/var/www/html/index.html に書かれています.

図1: apache2 の動作確認ページ

Apache を制御するコマンド

systemctl

以下のコマンドで,Apache2 をコントロールすることができます.これらのコマンドを実行する場合,ルートでの操作 (sudo) が必要です.

systemctl start apache2 Apache のデーモンを起動します.
systemctl stop apache2 Apache のデーモンを停止します.
systemctl restart apache2 Apacheデーモンを再起動します.デーモンが実行されていない場合,起動します.
systemctl reload apache2 設定ファイルを再読込みします.
systemctl status apache2 ステータスを表示します.

apache2ctl

apache2ctl を使っても,Apache2 をコントロールすることができます.以下にこのコマンドの引数とその実行内容を示します (参考: オプション).これらのコマンドはルート (sudo) で実行しますが,説明が色付きのものは一般ユーザーでも実行可能です.

apache2ctl start Apache のデーモンを起動します (追加説明).
apache2ctl stop Apache のデーモンを停止します.
apache2ctl restart Apacheデーモンを再起動します (追加説明).
apache2ctl fullstatus 完全なステータスレポートを表示します (追加説明).
apache2ctl status 簡単なステータスレポートを表示します (追加説明).
apache2ctl graceful グレースフルリスタートします (追加説明).
apache2ctl graceful-stop Apache のデーモンを正常に停止します (追加説明).
apache2ctl configtest 構成ファイルの構文テストを実行します (追加説明).
apache2ctl help 簡単なヘルプを表示します.

「apache2ctl fullstatus」と「apache2ctl status」を実行するためには,テキストベースのブラウザと環境変数の設定が必要です.「環境変数 (envvars)」にその方法を示します.

Apache のファイルと基本設定

設定ファイル

Apache の設定を行う前に,設定ファイルについて説明します.そのほうが,設定の内容を理解できるからです.Apache の設定ファイルは,/etc/apache2/にあります.そこに含まれるファイルと役割は,以下の通りです.

/etc/apache2 にあるファイルとサブディレクトリー
file or directory 内容
apache2.conf Apache サーバーのメイン設定ファイル
envvars 環境変数の設定ファイルです.
magic ファイルの最初の数バイトに基づいて MIME タイプを決定するための命令(?).
ports.conf Apache2がリッスンするTCPポートを決定するディレクティブを格納します.
conf-available このディレクトリには利用可能な設定ファイルが含まれています.以前の「/etc/apache2/conf.d」にあったすべてのファイルは,このディレクトリに移動する必要があります.
conf-enabled conf-available 内のファイルへのシンボリックリンクが含まれます.ファイルがシンボリックリンクされると,次に apache2 を再起動したときに有効になります.
mods-available このディレクトリには,モジュールをロードして設定するための設定ファイルが含まれています.ただし、すべてのモジュールに構成ファイルがあるわけではありません.
mods-enabled mods-available 内のファイルへのシンボリックリンクが含まれます. モジュール構成ファイルがシンボリックリンクされると,次に apache2 が再起動されたときに有効になります.
sites-available バーチャルホストの設定ファイルを保存するディレクトリー
sites-enabled このディレクトリには,Apache2 Virtual Hosts を構成するファイルがあります. 仮想ホストを使用すると,個別の構成を持つ複数のサイトに対して Apache2 を構成できます.

ディレクトリは,*-enabled*-available の二通りがあります.名前の通り,前者 (enabled) は Apache2 で実際に設定が有効になってるファイル (リンク),後者 (available) は利用可能なファイルが保存されます.*-enabled のファイルは,*-available のファイルのシンボリックリンクになっています.*-enabled にシンボリックリンクが作成されると,Apache2 が再起動した時に,そのリンクが読み込まれ有効になります.シンボリックリンクを作成/削除するコマンドは,以下の表のとおりです.

/etc/apache2 のシンボリックリンクの作成/削除コマンド
対象ディレクトリー リンク作成 リンク削除
conf-* a2enconf a2disconf
mods-* a2enmod a2dismod
sites-* a2ensite a2dissite

これらのコマンドの使い方は,簡単です.対象ディレクトリーの *-available で,これらのコマンドをタイプします.引数は,対象ファイルです.

$ sudo  a2enconf  charset                        リンクの作成
Enabling conf charset.
To activate the new configuration, you need to run:
  systemctl reload appache2
$  sudo  a2disconf  charset                      リンクの削除
Conf charset disabled.
To activate the new configuration, you need to run:
  systemctl reload appache2

コマンドはリンクを作成/削除をするだけです,設定の反映には,再起動あるいは設定ファイルの再読み込みが必要です.再読み込みのコマンド「sudo systemctl reload appache2」です.

設定ファイルの読み込みに関して,メインの設定ファイル「apache2.conf」 に以下の記述があります.

IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf

ディレクティブ「Include」は,構成ファイルをインクルードします.ワイルドカードを使うことができます.また,ディレクトリを指定することも可能です. この場合,ディレクトリとそのサブディレクトリ内の全てのファイルをアルファベット順に読み込んで.設定ファイルとして処理します.ディレクティブ「IncludeOptional」も,構成ファイルをインクルードします. ワイルドカードが使用され,ファイルやディレクトリと一致しない,ファイルパスがファイルシステムに存在しない場合,無視 (エラーを出さない) します.

これにより,ディレクトリー「*-enabled」にあるリンクが読み込まれることが分かります.

環境変数 (envvars) の設定

環境変数の設定を行います.

その前に,テキストベースのブラウザ「lynx」をインストールします.インストールコマンドは,「sudo apt install lynx」です.これは,Apache のステータスを見るために必要です.そして,環境変数設定ファイル「/etc/apache2/envvars」の export APACHE_LYNX の行を以下の通りに変更します.

export APACHE_LYNX='lynx -dump'

この設定を行わないと,以下のエラーメッセージが表示されます.

$ sudo  apachectl  status
/usr/sbin/apachectl: 113: /usr/sbin/apachectl: www-browser: not found
'www-browser -dump http://localhost:80/server-status' failed.
Maybe you need to install a package providing www-browser or you
need to adjust the APACHE_LYNX variable in /etc/apache2/envvars

その他の設定

バージョンを隠す

セキュリティのためには,apache や PHP 他のバージョンは隠すべきです.そのために,メインの設定ファイル「/etc/apache2/apache2.conf」の最後の行に以下を記載します.

ServerSignature  Off

設定ファイルを反映させるためには,リロードが必要です.

$ sudo systemctl  reload apache2

HTML5 の動画のために

HTML 5 のビデオタグ <video> を使うために,メインの設定ファイル「/etc/apache2/apache2.conf」の最後の行に以下を記載します.

AddType video/ogg .ogv
AddType video/mp4 .mp4
AddType video/webm .webm

設定ファイルを反映させるためには,リロードが必要です.

$ sudo systemctl  reload apache2

ファビコンの設定

apache2でファビコン(favcon:Favorite icon)を指定することができます.ドキュメントルートに,favicon.ico を保存するだけです.ドキュメントルートは,apache2の設定ファイル,バーチャルホストを使っている場合はその設定ファイルに書かれているはずです.私の場合(参照:バーチャルホスト) は「/etc/apache2/sites-available/www3.conf」に書かれていました.このファイルの「DocumentRoot」と書かれているところで,ドキュメントルートのディレクトリーが指定されています.

WEBサーバー設定

バーチャルホスト

設定方法

先に示したデフォルトで表示される図1は,/var/www/html/index.html にあります.ドキュメントルートは,/etc/apache2/sites-available/000-default.conf に書かれています.このドキュメントルートが書かれたファイル「default.conf」は,/etc/apache2/sites-enabled/000-default からシンボリック・リンクが貼られています.したがって,apache2.conf > /etc/apache2/sites-enabled/000-default > /etc/apache2/sites-available/000-default.conf > とファイルが読まれ,default のドキュメントルートの設定が読み込まれます.

最初から設定されているデフォルトに代わり,新たにホストを設定する場合,次の操作が必要です.(1)設定ファイル「www3」を作成し,sites-available に保存する.(2)デフォルトのバーチャルホスト「000-default」のリンクを削除し,新たなバーチャルホスト「www3」のリンクを作成する.(3)Apache の設定ファイルの再読込.

次節以降で,具体的な設定方法をしめします.ただし,バーチャルホストの名前「www3」は変更可能です.

設定ファイル

バーチャルホストの設定ファイル「www3.conf」をディレクトリー「/etc/apache2/sites-available/www3.conf」以下に作成します.私のファイルを以下に示します.

ServerName www.yamamo10.jp
NameVirtualHost *:80

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

<Directory "/home/*/www">
    Options FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
    DirectoryIndex index.html index.php
</Directory>

<VirtualHost *:80>
    ServerAdmin ymm10m34@khaki.plala.or.jp
    ServerName www.yamamo10.jp
    ServerAlias yamamo10.jp

    DirectoryIndex index.php
    Options FollowSymLinks
    DocumentRoot /home/yamamoto/www

</VirtualHost>

設定の反映

デフォルトのバーチャルホスト「000-default」を解除 (リンク削除) し,新たなホスト「www3」を登録 (リンク作成) します.解除にはコマンド「a2dissite」,登録には「a2ensite」を使います.バーチャルホストの解除/登録は,sites-enabled 以下のシンボリックリンクの有無で確認できます.

$ sudo a2dissite  000-default.conf                リンクの削除
Site 000-default disabled.
To activate the new configuration, you need to run:
  systemctl reload apache2

$ sudo a2ensite  www3.conf                        リンクの作成
Enabling site www3.
To activate the new configuration, you need to run:
  systemctl reload apache2

シンボリックリンクができたので,設定の再読込を行います.

$ sudo systemctl  reload  apache2

ユーザー毎のファイル

「http://www.yamamo10.jp/yamamoto」のようにユーザー毎のデフォルトのファイルが読み込めるようにします.「/etc/apache2/mods-available/userdir.conf」を適当に書き換えます.

<IfModule mod_userdir.c>
      UserDir www
      UserDir disabled root

    Alias /yamamoto/ "/home/yamamoto/www/"
    
        <Directory /home/*/www>
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                <Limit GET POST OPTIONS>
                        Order allow,deny
                        Allow from all
                </Limit>
                <LimitExcept GET POST OPTIONS>
                        Order deny,allow
                        Deny from all
                </LimitExcept>
        </Directory>
</IfModule>

この設定では,ユーザーは yamamoto のみです.ユーザーを追加する場合は,このファイルの Alias のところに「 Alias /higa_manami/ "/home/higa_manami/www/"」と並べて記述します.

ファイル作成後,userdir.conf のリンクを作成します.

$ sudo a2enmod  userdir
Enabling module userdir.
To activate the new configuration, you need to run:
  systemctl restart apache2

リンクの作成は,「ls -al /etc/apache2/mods-enabled」で確認できます.リンクができていれば,設定の再読み込みを行います.

$ sudo systemctl  restart apache2

ページ作成情報

参考資料

  1. 自分自身のページですが,「Ubuntu server Apache」を参考しました.
  2. 英語ですが,Apache2 の詳しい説明が「HTTPD - Apache2 Web Server」にあります.
  3. バーチャルホストの設定は,「virtualhost - Apache 2.4 & Ubuntu 14.04 error on Vagrant: "You don't have permission to access / on this server." - Server Fault」を参考にしました.

更新履歴

2019年08月17日 ページの新規作成


no counter