Ubuntu16.04LTS に apache2 をインストール
慣れ親しんだLAMP環境(*)でCMSとか色々作りたいので、早速apacheから入れていく。Xamppとかインストールすれば一発で開発環境が全て整って楽なんだけど、各サーバーの最新の導入仕様をきちんと手を動かし確認しながら進めたいので、急がば回れで一つ一つ導入していく。
(*)Linux, Apache, MySQL, PHP を組み合わせたWebアプリケーションの開発・実行環境のこと。それぞれの頭文字をとって、LAMP環境。
1. apache2のインストール
apt-get からインストール
% sudo apt-get update % sudo apt-get install apache2
2. セキュリティ設定
security.conf を編集
% cd /etc/apache2/conf-available % sudo vim security.conf
デフォルトでは、ServerTokensは「OS」になっている。
ServerTokens OS
この状態だと、http://サーバーのアドレス/にアクセスすると、レスポンスヘッダーのServerのところに、OS名やApacheのバージョンが表示されてしまう。
セキュリティ上好ましくないので、ServerTokensを「Prod」に変更する。
ServerTokens Prod
*ServerTokensを「Prod」に変更すると、サーバのプロダクト名(すなわち、「Apache」)だけの表示となる。ちなみに、「Full」にすると、デフォルト以上に詳細な情報が表示されるようになる。
なお、この設定はサーバ全体に適用され、バーチャルホスト上で有効にしたり 無効にしたりはできない。
次にSignatureの設定を確認。
ServerSignature On
Signatureもデフォルトの「On」のままだとサーバが生成するドキュメント (エラーメッセージ、mod_proxy における FTP のディレクトリリスト、 mod_info の出力、等々) のフッターに、ポート番号など様々な情報が表示されてしまうので変更が必要。
ServerSignature Off
「Off」に変えるとフッターそのものを非表示にできる。
3. バーチャルホストの設定
デフォルト以外の設定を行う場合は次の手順で行う。
(1)/etc/apache2/site-available/ のディレクトリ内にあるデフォルトの設定ファイル"000-default.conf"を元に、設定ファイル"[任意のファイル名].conf"を複製して追加し、ServerName や DocumentRoot などの項目を必要に応じて編集し保存する。
% cd /etc/apache2/sites-available/ % sudo cp -i 000-default.conf [任意のファイル名].conf % sudo vim [任意のファイル名].conf
なお、使用しているドメイン間でそれぞれ設定を変えたい場合は、ドメイン毎にconfファイルを作成する。(ファイル内の ServerName の欄でドメイン名を指定し、その他の設定を書いていく。)
ServerName ドメイン名 DocumentRoot ドキュメントルートまでのパス
以下、その他の追記例。
# 制御するディレクトリ <Directory ドキュメントルートまでのパス> # オプション Options FollowSymLinks # .htaccessの許可 AllowOverride all # アクセス許可 Require all granted </Directory> # エラーログ ErrorLog ${APACHE_LOG_DIR}/error.ドメイン名.log # エラーログを記録するレベル LogLevel warn # アクセスログ CustomLog ${APACHE_LOG_DIR}/access.ドメイン名.log combined
(2)上で作成したファイルのシンボリックリンクを /etc/apache2/sites-enabled のディレクトリ内に保存してapacheを再起動すれば設定が有効になる。(サーバ起動時に、httpd.conf が sites-enabled のディレクトリ内にシンボリックリンクがある全てのconfファイルを読み込む仕組み。)
シンボリックリンク作成の際は、「a2ensite」というコマンドを利用する。(作成した場所から sites-enabled へ簡単にシンボリックリンクが作成できる。)
% sudo a2ensite [任意のファイル名].conf
新しくバーチャルホストを設定した場合、デフォルトの設定ファイルへのシンボリックリンクは、特に必要なければ原則削除する。削除の場合は、「a2dissite」というコマンドを使用。
% sudo a2dissite 000-default.conf
最後にサーバを再起動して終了。
% sudo service apache2 reload
なお、サーバを段階的に停止→スタートする場合は以下のとおり。
sudo service apache2 stop sudo service apache2 start
・・・
<後日追記>
アクセスのあったURLを、正規表現で書き換えてから処理する機能 'mod_rewrite' が初期状態では無効になっているために、少々苦戦したので追記。なんでも Ubuntuのリポジトリから取得出来るApache2はオリジナルのApache2とはディレクトリの構成や設定の方法が違うらしい・・・。当方は、この仕様のために仮想パスで指定した URL がアクセス先でことごとく '404 not found' になって表示不可になってしまい、数時間嵌った・・・。
まずはmod_rewriteが利用可能となっているかを確認
% cat /etc/apache2/mods-available/rewrite.load LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
上のとおり、利用可能なことを確認したら、以下のコマンドで有効化しよう。
% sudo a2enmod rewrite Enabling module rewrite. To activate the new configuration, you need to run: service apache2 restart
上記メッセージのとおり、apache サーバを再起動すると設定が有効になる。
なお、Ubuntu で Apache2 のモジュールを有効にするには a2enmod を使用する。逆に無効化する場合は、同じ書式で a2dismod を使用する。
% sudo a2enmod [module] % sudo a2dismod [module]
有効・無効化できるモジュールは /etc/apache2/mods-available/ にあるため、各々のファイル名を拡張子なしで指定する。