# 情報実験機 Apache2 設定法 2021/06/03 人見祥磨 2021/06/07 人見祥磨 追記 2021/06/08 山東俊太 追記 以下、http(s)://hostname/hoge/fuga でアクセス出来るファイルを //hoge/fuga で、 計算機のルート以下のディレクトリ /hoge/fuga を /hoge/fuga で表す。 /etc/apache2/ 以下のファイルは、基本的に相対パスで表す。 ## モジュールの有効化 Apache は、起動する際に apache2.conf 以外にも、./*-enabeled/ 以下のファイルを読み込む。 モジュールや追加設定を有効化するためには、有効にしたいもののシンボリックリンクを ./*-available/ から ./*-enabled/ に張る。基本的に、*.conf と *.load(ないこともある) のふたつのファイルのリンクを作成する。このリンクを作成するためには、a2enmod a2ensite a2enconf コマンドを使用すればよい。それぞれのコマンドはモジュール、仮想ホスト、その他設定の 有効化に対応している。また、リンクを削除する際には a2dismod a2dussute a2dusconf を使用する。 ## Apache の設定変更 Apache の設定を変更するたび、apache を再起動しなければならない。この際、設定ファイルの 書式を間違っていると、apache が起動しないことがある。 ## セキュリティの設定 Apache のバージョンや、OS のバージョンを公開しないために、./conf-eneblad/security.conf で、 ServerTokens Prod ServerSignature Off を設定する。設定の意味は security.conf のコメントに記載されているのでそれを参照。 ## ユーザーごとの公開領域の設定 userdir モジュールを有効にすると、各ユーザーの public_html が公開領域になる。 各ユーザーに公開領域を設けるため、これを有効にする。 ## //icons の公開設定 Apache が自動生成するインデックスページには、ファイルの種類を示す画像が含まれている。 これは //icons に格納されている。計算機内では、/usr/share/apache2/icons である。 これは、初期設定であるが、意図して //icons を公開しているわけではないので、非公開 にする必要があるかもしれない。 そもそも、//icons で /usr/share/apache2/icons にアクセスできるのは、./mods-enabeld/alias.conf で設定されているからである。(//icons でアクセスできるページは、普通に考えたら /var/www/html/icons になるのだが、そのようなディレクトリは存在しない) ./mods-enabled/alias.conf では、ディレクトリに対しての別名を設定することができて、 初期設定では //icons は /usr/share/apache2/icons の別名になっている。これを編集して コメントアウトする。 ## ドキュメントルートの変更 http(s)://hostname で表示するページ(ドキュメントルート)を変更することができる。 デフォルトページが表示されているのはあまり良くないので、適当なユーザーの public_html を ドキュメントルートにするなどしたらよい。 ドキュメントルートは、./sites-enabled/*.conf で設定できる。これらのファイルの DocumentRoot の値を適当なものに書き換えれば良い。この際、ディレクトリ名の末尾には / をつけない。また、80 番ポートでの通信は 000-default.conf、443 番ポートでの通信は default-ssl.conf の設定をそれぞれ見るため、必要なら両方書き換えること。 ## SSL の有効化 SSL を利用するためには SSL モジュールおよび仮想ホストを有効化する必要がある。 具体的には以下のコマンドで https 通信が可能となる。 $ sudo a2enmod ssl #SSL モジュールの有効化 $ sudo a2ensite default-ssl #仮想ホストの有効化 $ sudo service apache2 restart #apache2 の再起動 ただし、初期設定のままでは apache2 インストール時に作成されるサンプルの証明書を用いた 通信となるため、正しい証明書を入手した後に /etc/apache2/sites-enabled/default-ssl.conf を 編集する必要がある。 ## /home/*/public_html に Basic 認証をかける 1. パスワードファイルを /usr/local/apache/filename に配置する(所有者、所有権、パーミッションは root.root 644)。 2. apache2.conf の を削除(下で行う設定と競合する可能性があるので)。 3. ./mods-enabled/userdir.conf に A. 以下を追記。 AuthType Basic AuthName "Type Password" AuthUserFile /usr/local/apache/filename Require valid-user B. Require method GET POST OPTIONS をコメントアウト。