====== Apache2 でWebサーバ ======
Apache2 で Web サーバを構築する。セキュリティを考慮してとりあえず、SSL を使用して 443 "以外" のポートで通信を行うようにする。
===== 環境 =====
==== インストール前の環境 ====
* Ubuntu 14.04.1 LTS 64bit
^ パッケージ名 ^ バージョン ^
| apache2 | 2.4.7-1ubuntu4.1 |
| mysql-server | 5.5.40-0ubuntu0.14.04.1 |
| libapache2-mod-php5 | 5.5.9+dfsg-1ubuntu4.5 |
Apache2、MySQL、PHP は Ubuntu をインストールした際に、ついでにインストール済み。
==== インストールするパッケージ等 ====
===== インストール =====
インストールしていない場合は apt-get でインストール。
$ sudo apt-get install apache2
ufw で 80 ポートへのアクセスを許可する。
$ sudo ufw allow 80/tcp
インストールしてサーバにブラウザでアクセスすると、とりあえず It works! は表示される。
===== apache2 ディレクトリ内のファイル =====
/etc/apache2 ディレクトリ内のファイル
* apache2.conf: メイン設定ファイル。グローバル設定を記述する。
* conf-available: 設定ファイルを格納するディレクトリ。以前は "conf.d" という名前だったが変更された。
* conf-enabled: /etc/apache2/conf-available に格納されている設定ファイルへのシンボリックリンクを格納する。このディレクトリに格納されたシンボリックリンクに対応する設定ファイルが次回の Apache2 起動時に読み込まれる。
* envvars: Apache2 で使用する環境変数を記述する。
* mods-available: モジュールとモジュールの設定ファイルを格納するディレクトリ。ただし、すべてのモジュールが、設定ファイルが必要な訳ではない。
* mods-enabled: /etc/apache2/mods-available に格納されているモジュールへのシンボリックリンクを格納する。このディレクトリに格納されたシンボリックリンクに対応するモジュールが次回の Apache2 の起動時に有効化される。
* ports.conf: Apache2が接続を受け入れるポートの設定。
* sites-available: このディレクトリにはApache2のバーチャルホストの設定ファイルを格納する。
* sites-enabled: /etc/apache2/sites-available に格納されている設定ファイルへのシンボリックリンクを格納する。このディレクトリに格納されたシンボリックリンクに対応するバーチャルホストが次回の Apache2 の起動時に有効化される。
* magic: MIME タイプの認識方法を設定するファイル。
===== サイトの設定 =====
インストール時点でデフォルトのサイトが有効かされている。
このサイトの設定ファイルをコピーして新しいサイトの設定ファイルを作成する。
$ cd /etc/apache2/sites-available/
$ sudo cp ./000-default.conf ./mynewsite.conf
$ sudo vi ./mynewsite.conf
* ServerAdmin: サーバ管理者のメールアドレスを設定する。
* DocumentRoot: サーバが読み込むドキュメント(HTML PHP 等)のフォルダを設定する。
以下のディレクティブを 〜 の間に追記する。
your.domain.com に対する要求に応答するように設定。また、www.your.domain.com 等の頭に他のホスト名が付加されても応答するようにする。
* ServerName your.domain.com
* ServerAlias *.your.domain.com
デフォルトで有効になっていたサイトを無効化し、新規に作成したサイトを有効化する。
$ sudo a2dissite 000-default
$ sudo a2ensite mynewsite
設定ファイルの構文に間違いがないかをチェック
$ sudo apache2ctl configtest
Apache2 を再起動して設定を反映する。
$ sudo service apache2 restart
ブラウザでアクセスして、ページが表示されるか確認する。
===== apacheのSSLを有効にする =====
初期状態で有効になっていたが、念のため SSL モジュールの有効化する。
$ sudo a2enmod ssl
/etc/apache2/sites-available/ に default-ssl が生成あるので、コピーして編集する。
$ cd /etc/apache2/sites-available/
$ sudo cp ./default-ssl.conf ./mynewsite-ssl.conf
$ sudo vi ./mynewsite-ssl.conf
SSL接続を使用するサーバの設定を行う。
* : アクセスするポートを変更する場合は数字を変更
* ServerAdmin: 管理者のメールアドレスに変更
* DocumentRoot: Apache2 のドキュメントルートを任意のパスに変更
応答するアドレスの設定を追加する。
* ServerName your.domain.com
* ServerAlias *.your.domain.com
鍵のパスを実際のパスに変える。
* SSLCertificateFile /etc/ssl/certs/server.crt
* SSLCertificateKeyFile /etc/ssl/private/server.key
アクセスするポートを変更した場合は、/etc/apache2/ports.conf でポート番号を変更する。
$ sudo vi /etc/apache2/ports.conf
* Listen 443: 番号を任意のポート番号に変更
コマンドで default-ssl を有効にする。
$ sudo a2ensite mynewsite-ssl
設定に間違いがないかをチェック。
$ sudo apache2ctl configtest
Apache2 を再起動して設定を反映する。
$ sudo service apache2 restart
ufw でポートを開けてからブラウザからアクセスできるかをチェックする。
===== 参考 =====
[[https://help.ubuntu.com/14.04/serverguide/httpd.html|Ubuntu公式マニュアル]]