サーバのOSについては今のところUbuntu14.04を使い続ける予定にしているのですが、勉強がてらUbuntu16.04にもApache2をインストール・設定しておきます。万が一サーバが壊れても、準備さえしてあればデータを移行するだけで取り急ぎサービスの提供は続けることができますからね。
※2018年10月追記
SSL/TLSを導入してHTTPSを実装する場合は以下のページも併せてご参照いただければと思います。
sudo apt-get installにてApache2をインストールする
端末より以下のとおりコマンドを打ってApache2をインストールします。
↓パッケージの更新 sudo apt-get update ↓Apache2のインストール sudo apt-get install apache2 以下の追加パッケージがインストールされます: apache2-data apache2-utils 提案パッケージ: apache2-doc apache2-suexec-pristine | apache2-suexec-custom 以下のパッケージが新たにインストールされます: apache2 apache2-data apache2-utils アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。 329 kB のアーカイブを取得する必要があります。 この操作後に追加で 1,714 kB のディスク容量が消費されます。 続行しますか? [Y/n] ↑「y」を押してEnter
このあと勝手に色々と処理されてApache2のインストールは完了です。
ここでApache2のバージョンを確認しておきましょう。端末で以下のとおり入力すると表示されます。
$ apache2 -v Server version: Apache/2.4.18 (Ubuntu) Server built: 2016-04-15T18:00:57
それでは続けて設定へと移りましょう。
設定ファイルの確認と設定の方針を決める
Apache2.4系の設定ファイルを先に纏めておきます。過去の経験から不要なファイルを構うとサーバが壊れるだけですので…
主要な設定ファイルは/etc/apache2/以下に配置されています。
ファイル名/ディレクトリ名 | 概要 |
apache2.conf | ファイル。Apache2全般に関する設定を行う。 |
conf-available | ディレクトリ。文字コードやセキュリティに関する設定ファイルが格納されている。 |
conf-enabled | ディレクトリ。 |
mods-available | ディレクトリ。各種モジュールが格納されている。 |
mods-enabled | ディレクトリ。ここにmods-available内のモジュールに対するシンボリックリンクを作成することでモジュールを有効化する(※) |
ports.conf | ファイル。Webサーバが使用するポートに関する設定を行う |
sites-available | ディレクトリ。サイト公開設定に関するファイルを置く。 |
sites-enabled | ディレクトリ。ここにsites-available内のファイルに対するシンボリックリンクを作成することでサイト設定を有効化する(※) |
※実際の使い方は後述しますが
- a2enmod…mods-enabled内にシンボリックリンクを作成してモジュールを有効化
- a2enconf…conf-enable内にシンボリックリンクを作成して設定を有効化
- a2ensite…sites-enable内にシンボリックリンクを作成して設定を有効化
るためのコマンドが用意されています。それでは実際に各種設定を行っていきます。
/etc/conf-available/security.conf
security.confは上記のとおりセキュリティに関する設定ファイルです。変更箇所は以下のとおり。
sudo vi /etc/apache2/conf-available/security.conf 25行目 「OS」から「Prod」変更してレスポンスヘッダ内のサーバ情報を秘匿する ServerTokens Prod 36行目 「On」から「Off」へ変更してエラーメッセージ内のサーバ情報を秘匿する ServerSignature Off 「:wq」で保存して終了
サーバのOSやバージョンなどはセキュリティを考えると不必要に公開するべきではないと考えます。攻撃者に情報を与えるだけですので。
/etc/mods-available/dir.conf
URLで「index.html」や「index.php」などのファイル名を省略した場合にアクセスできるファイルを指定します。
sudo vi /etc/apache2/mods-available/dir.conf DirectoryIndexの後のファイルを適宜追加・削除 <IfModule mod_dir.c> DirectoryIndex index.html index.php </IfModule>
たとえば「http://hogehoge.com」があるサーバ内の「/var/www/html/」というディレクトリを指すよう設定されたWebサーバがあり、上記のとおり設定したとしましょう。WebブラウザのURLに「http://hogehoge.com」と入力すると、サーバ内の「/var/www/html/」ディレクトリへ接続します。
このときhtmlディレクトリ内にindex.htmlかindex.phpが存在するかチェックして存在すればそのファイルを表示、なければディレクトリの一覧を表示します(のちほどの設定にもよりますが)。
自分の場合、サイトを構築する場合はほぼWordpressに頼る形をとるためindex.phpがあれば困ることはないのでしょうが、念のため一般的なindex.htmlも読み込むようにしておきます。
/etc/apache2/apache2.conf
apache2.confは一番メインの設定ファイルで、中を見てみると随所に「Include ~」という記述が見られ各種モジュールや設定ファイルの設定を読み込みながらApache2全体の設定を行います。これも以下のとおり開いて設定しましょう。
sudo vi /etc/apache2/apache2.conf 70行目辺りに以下を追記 ServerName hogehoge(お好きな名前で) ※ここまで設定できたらApache2の再起動を行います。 sudo /etc/init.d/apache2 restart
それではブラウザで「http://localhost」と入力してApache2が動いているか見てみましょう。以下のように表示されたら成功です。
Ubuntu16.04とApache2のインストール・設定のまとめ
ずいぶん久しぶりのサーバ設定ネタとなりましたが、ひとまずApache2が無事稼働する状態になりました。というかApache2のメジャーバージョンが2.4系のままだったため14.04の時とほぼ同じ手順でApache2が動く状態にできました。大筋の手順をまとめると
- apt-get update→apt-get install apache2でパッケージをインストール
- /etc/apache2/mods-available/dir.conf、/etc/apache2/conf-available/security.conf、/etc/apache2/apache2.confを編集
- /etc/init.d/apache2 restartでApache2を再起動
これでひとまず最低限のWebサーバとして動く状態になりました。続いてはサイト固有の設定やバーチャルホストについて見ていきたいと思います。