Linuxサーバ

Ubuntu16.04にApache2をインストール・設定する

サーバの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が動いているか見てみましょう。以下のように表示されたら成功です。

 

Apache2

 

 

Ubuntu16.04とApache2のインストール・設定のまとめ

ずいぶん久しぶりのサーバ設定ネタとなりましたが、ひとまずApache2が無事稼働する状態になりました。というかApache2のメジャーバージョンが2.4系のままだったため14.04の時とほぼ同じ手順でApache2が動く状態にできました。大筋の手順をまとめると

  1. apt-get update→apt-get install apache2でパッケージをインストール
  2. /etc/apache2/mods-available/dir.conf、/etc/apache2/conf-available/security.conf、/etc/apache2/apache2.confを編集
  3. /etc/init.d/apache2 restartでApache2を再起動

これでひとまず最低限のWebサーバとして動く状態になりました。続いてはサイト固有の設定やバーチャルホストについて見ていきたいと思います。

オススメの記事

-Linuxサーバ
-,