【Ubuntu】/etc/apache2/配下のにある設定ファイルの機能について

目的

最近自PCの環境にLinuxをインストールして、OSSのZabbix構築をしており、その中でドキュメントルートからどのようにしてzabbixへのGUI画面を表示しているのだろうと思い、自分なりに調査。

実際/etc/apache2/apache2.conf配下の詳細な記事はたくさん見かけますが、その補助となる/etc/apache2/conf-配下の機能はconfの情報からどのように連携されるのかなと思い、includeされるのはわかるけど具体的に説明と言われると言葉がつまるため、自分なりに書き起こし。

調査

環境

Windows環境:Linux 用 Windows サブシステム (WSL) を使用

Linux:Ubuntu 22.04.2 LTS

実機確認

root@localhost:~# cat /etc/apache2/apache2.conf |grep -i include| grep -v "#"
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
root@localhost:~#

確認するとapache2.confからincludeされているものがいくつかある状態。それぞれどういったファイルでどのような設定ファイルかを確認する。

IncludeOptional mods-enabled/*.loadIncludeOptional mods-enabled/*.conf

確認してみると、apacheが起動する際に読み込むモジュールの設定ファイルやロードファイルのようなものがある。すべてmods-availableからシンボリックリンクでファイルを読み込んでいるため、上記メインファイルであるapache2.confには記載がない。

よく確認してみるとすべてがリンクに紐づけられているわけではないため、このモジュールを引っ張ってきたい場合は/etc/apache2/mods-enabled配下から削除すれば無効化にできる。コマンドもあるがこちらは割愛。

root@localhost:/etc/apache2/mods-enabled# ll
合計 8
drwxr-xr-x 2 root root 4096 12月 16 11:26 ./
drwxr-xr-x 8 root root 4096 12月 16 11:24 ../
lrwxrwxrwx 1 root root 36 12月 16 11:24 access_compat.load -> ../mods-available/access_compat.load
lrwxrwxrwx 1 root root 28 12月 16 11:24 alias.conf -> ../mods-available/alias.conf
lrwxrwxrwx 1 root root 28 12月 16 11:24 alias.load -> ../mods-available/alias.load
lrwxrwxrwx 1 root root 33 12月 16 11:24 auth_basic.load -> ../mods-available/auth_basic.load
lrwxrwxrwx 1 root root 33 12月 16 11:24 authn_core.load -> ../mods-available/authn_core.load
lrwxrwxrwx 1 root root 33 12月 16 11:24 authn_file.load -> ../mods-available/authn_file.load
lrwxrwxrwx 1 root root 33 12月 16 11:24 authz_core.load -> ../mods-available/authz_core.load
lrwxrwxrwx 1 root root 33 12月 16 11:24 authz_host.load -> ../mods-available/authz_host.load
lrwxrwxrwx 1 root root 33 12月 16 11:24 authz_user.load -> ../mods-available/authz_user.load
lrwxrwxrwx 1 root root 32 12月 16 11:24 autoindex.conf -> ../mods-available/autoindex.conf
lrwxrwxrwx 1 root root 32 12月 16 11:24 autoindex.load -> ../mods-available/autoindex.load
lrwxrwxrwx 1 root root 30 12月 16 11:24 deflate.conf -> ../mods-available/deflate.conf
lrwxrwxrwx 1 root root 30 12月 16 11:24 deflate.load -> ../mods-available/deflate.load
lrwxrwxrwx 1 root root 26 12月 16 11:24 dir.conf -> ../mods-available/dir.conf
lrwxrwxrwx 1 root root 26 12月 16 11:24 dir.load -> ../mods-available/dir.load
lrwxrwxrwx 1 root root 26 12月 16 11:24 env.load -> ../mods-available/env.load
lrwxrwxrwx 1 root root 29 12月 16 11:24 filter.load -> ../mods-available/filter.load
lrwxrwxrwx 1 root root 27 12月 16 11:24 mime.conf -> ../mods-available/mime.conf
lrwxrwxrwx 1 root root 27 12月 16 11:24 mime.load -> ../mods-available/mime.load
lrwxrwxrwx 1 root root 34 12月 16 11:26 mpm_prefork.conf -> ../mods-available/mpm_prefork.conf
lrwxrwxrwx 1 root root 34 12月 16 11:26 mpm_prefork.load -> ../mods-available/mpm_prefork.load
lrwxrwxrwx 1 root root 34 12月 16 11:24 negotiation.conf -> ../mods-available/negotiation.conf
lrwxrwxrwx 1 root root 34 12月 16 11:24 negotiation.load -> ../mods-available/negotiation.load
lrwxrwxrwx 1 root root 29 12月 16 11:26 php8.1.conf -> ../mods-available/php8.1.conf
lrwxrwxrwx 1 root root 29 12月 16 11:26 php8.1.load -> ../mods-available/php8.1.load
lrwxrwxrwx 1 root root 33 12月 16 11:24 reqtimeout.conf -> ../mods-available/reqtimeout.conf
lrwxrwxrwx 1 root root 33 12月 16 11:24 reqtimeout.load -> ../mods-available/reqtimeout.load
lrwxrwxrwx 1 root root 31 12月 16 11:24 setenvif.conf -> ../mods-available/setenvif.conf
lrwxrwxrwx 1 root root 31 12月 16 11:24 setenvif.load -> ../mods-available/setenvif.load
lrwxrwxrwx 1 root root 29 12月 16 11:24 status.conf -> ../mods-available/status.conf
lrwxrwxrwx 1 root root 29 12月 16 11:24 status.load -> ../mods-available/status.load
root@localhost:/etc/apache2/mods-enabled#

Include ports.conf

確認するとApacheのポートをports.confで管理しているみたい。基本初期値から全くいじっていないため、ポートは80番で設定している。

root@localhost:/etc/apache2# cat ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
root@localhost:/etc/apache2#

例えばここのポートを変更したい場合はListenポートを変更することでWebポートが変更になる。

root@localhost:/etc/apache2# cp -ip ports.conf ports.conf_YYYYMMDD
root@localhost:/etc/apache2# vi ports.conf
# If you just change the port or add more ports here, you will   likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80  →  1000  へと変更
root@localhost:/etc/apache2# systemctl restart apache2.service
root@localhost:/etc/apache2# systemctl status apache2.service
Active: active (running)
root@localhost:/etc/apache2#

その後 http://IPアドレス:1000にてアクセスすることで設定変更可能

IncludeOptional conf-enabled/*.conf

こちらも確認すると、availableからいくつかシンボリックリンクにて引っ張ってきているみたいです。前述のモジュールのように利用可能な設定ファイルをenalbedで利用するかどうかを決めているファイルですね。

root@localhost:/etc/apache2/conf-enabled# ll
合計 8
drwxr-xr-x 2 root root 4096 12月 16 11:26 ./
drwxr-xr-x 8 root root 4096 12月 23 21:03 ../
lrwxrwxrwx 1 root root   30 12月 16 11:24 charset.conf -> ../conf-available/charset.conf
lrwxrwxrwx 1 root root   44 12月 16 11:24 localized-error-pages.conf -> ../conf-available/localized-error-pages.conf
lrwxrwxrwx 1 root root   46 12月 16 11:24 other-vhosts-access-log.conf -> ../conf-available/other-vhosts-access-log.conf
lrwxrwxrwx 1 root root   31 12月 16 11:24 security.conf -> ../conf-available/security.conf
lrwxrwxrwx 1 root root   36 12月 16 11:24 serve-cgi-bin.conf -> ../conf-available/serve-cgi-bin.conf
lrwxrwxrwx 1 root root   29 12月 16 11:26 zabbix.conf -> ../conf-available/zabbix.conf
root@localhost:/etc/apache2/conf-enabled#

IncludeOptional sites-enabled/*.conf

000-default.confというどれだけ0が多いんやとツッコミを入れたくなるぐらいの設定ファイルがありました。

root@localhost:/etc/apache2/sites-enabled# ll
合計 8
drwxr-xr-x 2 root root 4096 12月 16 11:24 ./
drwxr-xr-x 8 root root 4096 12月 23 21:03 ../
lrwxrwxrwx 1 root root   35 12月 16 11:24 000-default.conf -> ../sites-available/000-default.conf
root@localhost:/etc/apache2/sites-enabled#

確認すると基本RHEL系にあるhttpd.confと同じ記述をdefaultファイルで定義されていることがわかります。ここでドキュメントルートを指定することで、/var/www/html配下にWebページ(index.htmlなど)を指定することでページの表示が可能となります。

root@localhost:/etc/apache2/sites-enabled# cat 000-default.conf
| sed /^$/d |grep -v "#"
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
root@localhost:/etc/apache2/sites-enabled#

/etc/apache2/conf-enabled/zabbix.conf

ここを確認するとドキュメントルート後の/zabbixをエイリアスとして/usr/share/zabbixへと変換している。/usr/share/zabbix配下には各phpファイルがそろっているため、ここからファイルを読み込んでいるんだなと理解。

root@localhost:/etc/apache2/conf-enabled# cat zabbix.conf
# Define /zabbix alias, this is the default
<IfModule mod_alias.c>
    Alias /zabbix /usr/share/zabbix
</IfModule>

<Directory "/usr/share/zabbix">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all

結論

ドキュメントルートを000-default.confにて指定しているため、そのあとに続くzabbixディレクトリを/etc/apache2/conf-enabled配下に設定することでzabbixのWebページへと遷移することがわかった。

Ubuntu系で初めてZabbixを構築したが、RHEL系とは異なってシンボリックリンクやincludeするファイルが多すぎて確認するのに手間がかかる。。

これであればRHEL系のほうが操作は楽だなと感じた。