[Linux] Ubuntu 20.04 LTSにApacheをインストールする方法
WSL(Windows Subsystem for Linux)のUbuntu 20.04 LTSに初めてApacheをインストールしてみた。UbuntuでApacheをインストールするのは初めての経験ではあったが、CentOSでは何度かApache(httpd)をインストールしたことがあるので簡単だろうと油断していたら、初歩的な確認不足により、苦労してしまった。以下、インストールメモ。
Apacheのインストール
Ubuntu 20.04 LTSでApacheをインストールするためにsuでrootユーザに昇格し、「apt install apache2」コマンドを実行。インストールは待っていれば数分もかからずに終了。
apt installコマンドでApache2をインストール中の画面
apt installコマンド実行結果のテキスト
Password:
root@yukio-pc:~# apt install apache2
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libjansson4
liblua5.2-0 ssl-cert
Suggested packages:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom openssl-blacklist
The following NEW packages will be installed:
apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
libjansson4 liblua5.2-0 ssl-cert
0 upgraded, 11 newly installed, 0 to remove and 230 not upgraded.
Need to get 1866 kB of archives.
After this operation, 8088 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://archive.ubuntu.com/ubuntu focal/main amd64 libapr1 amd64 1.6.5-1ubuntu1 [91.4 kB]
Get:2 http://archive.ubuntu.com/ubuntu focal/main amd64 libaprutil1 amd64 1.6.1-4ubuntu2 [84.7 kB]
Get:3 http://archive.ubuntu.com/ubuntu focal/main amd64 libaprutil1-dbd-sqlite3 amd64 1.6.1-4ubuntu2 [10.5 kB]
Get:4 http://archive.ubuntu.com/ubuntu focal/main amd64 libaprutil1-ldap amd64 1.6.1-4ubuntu2 [8736 B]
Get:5 http://archive.ubuntu.com/ubuntu focal/main amd64 libjansson4 amd64 2.12-1build1 [28.9 kB]
Get:6 http://archive.ubuntu.com/ubuntu focal/main amd64 liblua5.2-0 amd64 5.2.4-1.1build3 [106 kB]
Get:7 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 apache2-bin amd64 2.4.41-4ubuntu3.7 [1180 kB]
Get:8 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 apache2-data all 2.4.41-4ubuntu3.7 [159 kB]
Get:9 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 apache2-utils amd64 2.4.41-4ubuntu3.7 [84.4 kB]
Get:10 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 apache2 amd64 2.4.41-4ubuntu3.7 [95.6 kB]
Get:11 http://archive.ubuntu.com/ubuntu focal/main amd64 ssl-cert all 1.0.39 [17.0 kB]
Fetched 1866 kB in 14s (138 kB/s)
Preconfiguring packages ...
Selecting previously unselected package libapr1:amd64.
(Reading database ... 31976 files and directories currently installed.)
Preparing to unpack .../00-libapr1_1.6.5-1ubuntu1_amd64.deb ...
Unpacking libapr1:amd64 (1.6.5-1ubuntu1) ...
Selecting previously unselected package libaprutil1:amd64.
Preparing to unpack .../01-libaprutil1_1.6.1-4ubuntu2_amd64.deb ...
Unpacking libaprutil1:amd64 (1.6.1-4ubuntu2) ...
Selecting previously unselected package libaprutil1-dbd-sqlite3:amd64.
Preparing to unpack .../02-libaprutil1-dbd-sqlite3_1.6.1-4ubuntu2_amd64.deb ...
Unpacking libaprutil1-dbd-sqlite3:amd64 (1.6.1-4ubuntu2) ...
Selecting previously unselected package libaprutil1-ldap:amd64.
Preparing to unpack .../03-libaprutil1-ldap_1.6.1-4ubuntu2_amd64.deb ...
Unpacking libaprutil1-ldap:amd64 (1.6.1-4ubuntu2) ...
Selecting previously unselected package libjansson4:amd64.
Preparing to unpack .../04-libjansson4_2.12-1build1_amd64.deb ...
Unpacking libjansson4:amd64 (2.12-1build1) ...
Selecting previously unselected package liblua5.2-0:amd64.
Preparing to unpack .../05-liblua5.2-0_5.2.4-1.1build3_amd64.deb ...
Unpacking liblua5.2-0:amd64 (5.2.4-1.1build3) ...
Selecting previously unselected package apache2-bin.
Preparing to unpack .../06-apache2-bin_2.4.41-4ubuntu3.7_amd64.deb ...
Unpacking apache2-bin (2.4.41-4ubuntu3.7) ...
Selecting previously unselected package apache2-data.
Preparing to unpack .../07-apache2-data_2.4.41-4ubuntu3.7_all.deb ...
Unpacking apache2-data (2.4.41-4ubuntu3.7) ...
Selecting previously unselected package apache2-utils.
Preparing to unpack .../08-apache2-utils_2.4.41-4ubuntu3.7_amd64.deb ...
Unpacking apache2-utils (2.4.41-4ubuntu3.7) ...
Selecting previously unselected package apache2.
Preparing to unpack .../09-apache2_2.4.41-4ubuntu3.7_amd64.deb ...
Unpacking apache2 (2.4.41-4ubuntu3.7) ...
Selecting previously unselected package ssl-cert.
Preparing to unpack .../10-ssl-cert_1.0.39_all.deb ...
Unpacking ssl-cert (1.0.39) ...
Setting up libapr1:amd64 (1.6.5-1ubuntu1) ...
Setting up libjansson4:amd64 (2.12-1build1) ...
Setting up ssl-cert (1.0.39) ...
Setting up liblua5.2-0:amd64 (5.2.4-1.1build3) ...
Setting up apache2-data (2.4.41-4ubuntu3.7) ...
Setting up libaprutil1:amd64 (1.6.1-4ubuntu2) ...
Setting up libaprutil1-ldap:amd64 (1.6.1-4ubuntu2) ...
Setting up libaprutil1-dbd-sqlite3:amd64 (1.6.1-4ubuntu2) ...
Setting up apache2-utils (2.4.41-4ubuntu3.7) ...
Setting up apache2-bin (2.4.41-4ubuntu3.7) ...
Setting up apache2 (2.4.41-4ubuntu3.7) ...
Enabling module mpm_event.
Enabling module authz_core.
Enabling module authz_host.
Enabling module authn_core.
Enabling module auth_basic.
Enabling module access_compat.
Enabling module authn_file.
Enabling module authz_user.
Enabling module alias.
Enabling module dir.
Enabling module autoindex.
Enabling module env.
Enabling module mime.
Enabling module negotiation.
Enabling module setenvif.
Enabling module filter.
Enabling module deflate.
Enabling module status.
Enabling module reqtimeout.
Enabling conf charset.
Enabling conf localized-error-pages.
Enabling conf other-vhosts-access-log.
Enabling conf security.
Enabling conf serve-cgi-bin.
Enabling site 000-default.
Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /lib/systemd/system/apache2.service.
Created symlink /etc/systemd/system/multi-user.target.wants/apache-htcacheclean.service → /lib/systemd/system/apache-htcacheclean.service.
invoke-rc.d: could not determine current runlevel
Processing triggers for ufw (0.36-6) ...
Processing triggers for systemd (245.4-4ubuntu3.2) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9) ...
root@yukio-pc:~#
Apacheのバージョンを確認
Ubuntu 20.04 LTSにインストールされたApacheのバージョンを確認するために「apache2 -v」コマンドを実行。
apache2 -vコマンドを実行した画面
apache2 -vの実行結果のテキスト
Server version: Apache/2.4.41 (Ubuntu)
Server built: 2021-09-28T22:28:10
ブラウザでApacheの初期ページの表示不可
Apacheのインストールが終わったのでApacheの初期ページ(デフォルトページ)が閲覧できるかどうかを確認するためにブラウザを起動し、Ubuntu 20.04 LTSのIPアドレスをブラウザのアドレス欄に入力してアクセスを試みるが、アクセス不可。
このサイトにアクセスできません
192.168.0.12で接続が拒否されました。
次をお試しください
・接続を確認する
・プロキシとファイアウォールを確認する
ERR_CONNECTION_REFUSED
curlコマンドでApacheにアクセス不可
ApacheをインストールしたLinuxコンソールで「curl localhost」コマンドを実行し、自分自身(localhost)にインストールされているApacheにアクセスを試みるが、アクセス不可。
curl localhostコマンドを実行した画面
curl localhostコマンド実行結果のテキスト
curl: (7) Failed to connect to localhost port 80: Connection refused
Windows PCのファイアウォールの設定を確認
Windows PCのファイアウォールの設定がApacheへのアクセスを遮断している可能性があると考え、PCにインストールしている有料のウイルス対策ソフト「マカフィー リブセーフ」の設定を確認。
「マカフィー リブセーフ」の「ポートとシステムサービス」の設定画面
ファイアウォールの設定項目「ポートとシステムサービス」にある「セキュア ウェブ サーバー (HTTPS) ポート 443 ローカルTCP/IP ポート:443 HTTPS ウェブ サーバー ポート」と「ウェブ サーバー (HTTP) ポート 80 ローカルTCP/IP ポート:80 HTTP ウェブ サーバー ポート」の2つにチェックが入っていなかったのでチェックを入れてみたが、アクセス不可問題は解決せず。Windows 10のファイアウォールについてはマカフィーを利用するために無効化されていたため、Apacheへのアクセス不可問題には関係なしと判断。
Linuxのファイアウォールの稼働状況を確認
ApacheをインストールしたUbuntu 20.04 LTSのコンソールで「ufw status」コマンドを実行してファイアウォールの稼働状況を確認するとエラーメッセージ。
ufw statusコマンドを実行した画面
ufw statusコマンド実行結果のテキスト
ERROR: problem running iptables: iptables v1.8.4 (legacy): can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
iptablesのfilterを初期化できない、という内容のエラーメッセージが出ているが、これだけではよく分からなかったので別のコマンドを実行して確認。
/etc/init.d/ufw statusコマンドの実行結果のテキスト
Password:
root@yukio-pc:~# /etc/init.d/ufw status
* Firewall is not running... [fail]
「Firewall is not running」というエラーメッセージから、Linuxのファイアウォール機能は有効化されていないことが分かったため、LinuxのファイアウォールはApacheへのアクセス不可問題にはたぶん関係なしと判断。
Apacheへのアクセス不可問題について原因が分からず、袋小路に入ってしまったなぁと悩んで、作業を1つ1つ振り返ってみたら、基本的なことを確認していないことに気づく。
Apacheが稼働していないのでは?
Apacheの稼働状況を確認
systemctl status apache2コマンドを実行した画面
systemctl status apache2コマンド実行結果のテキスト
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
これではよく分からないので、確認するコマンドを変更。
/etc/init.d/apache2 statusコマンドを実行した画面
/etc/init.d/apache2 statusコマンド実行結果のテキスト
* apache2 is not running
「apache2 is not running」というエラーメッセージから、ApacheのWebサービスが稼働していないことが分かる。となるとApacheへのアクセス不可問題を解決するためにまず行うべきは、「Apacheの起動」となる。
Apacheを起動
/etc/init.d/apache2 startコマンドを実行した画面
/etc/init.d/apache2 startコマンド実行結果のテキスト
* Starting Apache httpd web server apache2
[Sat Oct 23 11:42:48.178214 2021] [core:warn] [pid 2021:tid 140147993939008] (92)Protocol not available: AH00076: Failed to enable APR_TCP_DEFER_ACCEPT
*
root@yukio-pc:~#
警告(warn)レベルのメッセージが出ることは気になるが、今回は特に何もせず、Apacheが稼働中かどうかを確認。
Apache稼働状況の確認
/etc/init.d/apache2 statusコマンドを実行した画面
/etc/init.d/apache2 statusコマンド実行結果のテキスト
* apache2 is running
root@yukio-pc:~#
「apache2 is running」というメッセージが出たのでApacheが稼働中であることが分かる。これでApacheへのアクセス不可問題が解決したかどうかを確認。
ブラウザでApacheの初期ページの表示可
ブラウザで「Apache2 Ubuntu Default Page」というApacheの初期ページ(デフォルトページ)が表示された。Apacheが稼働中のLinuxコンソールで「curl localhost」コマンドを実行すると、このApacheの初期ページのhtmlソースを取得できることも確認した。
Apacheをインストールした後、Apacheサービスが稼働中かどうかを確認するという基本的な確認作業を怠っていたことで問題解決までに時間がかかってしまった。次回から気を付けなくては!