WEBサーバーApache2導入
インストールの前にUFWでhttp:80番ポートを解放しておく
# ufw allow http
# ufw reload
1 Apache2インストールと設定
Apache2 をインストール
# apt -y install apache2
2.Apache2 の基本設定
# vi /etc/apache2/conf-enabled/security.conf
12行目:変更
ServerTokens Prod
# vi /etc/apache2/mods-enabled/dir.conf
ディレクトリ名のみでアクセスできるファイル名を確認
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
# vi /etc/apache2/apache2.conf
70行目:サーバー名追記
ServerName <domain>
172行目:変更
AllowOverride ALL
# vi /etc/apache2/sites-available/000-default.conf
11行目:管理者アドレス変更
ServerAdmin <your mailaddress>
Apache再起動
# systemctl restart apache2
3. Apache2; Perlスクリプトを利用する
CGI を有効にして Perl スクリプトが利用できるように設定します
①Perl をインストール(dpkg -l | grep perlで確認し、インストールされていない場合)
# apt -y install perl
②CGI モジュールを有効にし再起動
# a2enmod cgid
# systemctl restart apache2
③CGI モジュールを有効確認
テストスクリプト作成
# vi /usr/lib/cgi-bin/test_script
#!/usr/bin/perl
print "Content-type: text/html\n\n" ;
print "Hello CGI\n"
スクリプトファイルに実行権限を与える
# chmod 705 /usr/lib/cgi-bin/test_script
動作確認
# curl http://localhost/cgi-bin/test_script
“-bash: curl: command not found”と表示されたら
# apt install curl
再度
# curl http://localhost/cgi-bin/test_script
Hello CGI
4 Apache2 : PHPスクリプトを利用する
①PHP をインストール
# apt -y install php php-cgi libapache2-mod-php php-common php-pear php-mbstring
②Apache2 の設定
# a2enconf php8.4-cgi
Enabling conf php8.4-cgi.
To activate the new configuration, you need to run:
systemctl reload apache2
# vi /etc/php/8.4/apache2/php.ini
699行目変更
post_max_size = 300M
851行目変更
upload_max_filesize = 200M
966行目:コメント解除しタイムゾーン設定
date.timezone = "Asia/Tokyo"
WordPress導入を考慮し、アップロードファイルのサイズを増やしている
③PHPテストページを作成して動作確認
# vi /var/www/html/info.php
<?php phpinfo(); ?>
ブラウザでhttp://[サーバーIPアドレス]/info.phpにアクセスすると下記画面が表示されればOK

5. バーチャルホストの設定
デフォルトの設定ファイルをコピーし(ファイル名は任意、今回は例としてvhost.conf)、バーチャルホストの設定をします
# cd /etc/apache2/sites-available/
# cp 000-default.conf vhost.conf
設定ファイルを編集
# vi vhost.conf
<VirtualHost *:80>
~省略~
ServerName <FQDN>
ServerAdmin <管理者メールアドレス>
DocumentRoot /var/www/html/<FQDN>/
~省略~
ErrorLog ${APACHE_LOG_DIR}/<FQDN>.error.log
CustomLog ${APACHE_LOG_DIR}/<FQDN>.access.log combined
~省略
</VirtualHost>
設定ファイルにシンボリックリンクを貼り、デフォルトの設定ファイルを無効化する
# cd /etc/apache2/sites-available/
# a2ensite vhost.conf
デフォルト無効化
# a2dissite 000-default.conf
Apache再起動
# systemctl restart apache2
hostsファイルの編集
# vi /etc/hosts
下記を追記
127.0.0.1 <FQDN>
ディレクトリー作成
# mkdir /var/www/html/<FQDN>
テストページを作成し、動作確認
# vi /var/www/html/<FQDN>/index.html
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
Virtual Host Test Page
</div>
</body>
</html>
ブラウザでhttp://<FQDN>/index.htmlにアクセスして確認する。

6. Apache2でDigest認証を行う
http の認証認定方式として有名なBasic 認証は認証情報を平文で送信するので、パケット盗聴されるとID とパスワードが漏洩する危険があります。
一方、Digest 認証は認証情報を暗号化して送信するので、情報漏えいの心配がほとんどありません。Digest 認証はBasic 認証を強化した認証認定方式と言えます。
6.1 Digest認証のパスワードファイルを作成
realmと呼ばれる認証領域を指定する。このrealmが同じディレクトリは認証済みとしてアクセスできるようにするためのものです。
今回は例として、realmは"DigestAuth"で、"secretuser"と言うユーザーを作成する。下記のコマンドを実行すると"secretuser"のパスワードを求められるので入力する。
# /usr/bin/htdigest -c /etc/apache2/.digestauth "DigestAuth" secretuser
New password:
Re-type new password:
確認する
# cat /etc/apache2/.digestauth
secretuser:DigestAuth:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
上記の通り、secretuserと暗号化されたパスワードが作成されています
6.2 Apacheの設定ファイル編集
Digest認証をかけるディレクトリを指定する。(今回はsecretディレクトリーを指定する)
# vi /etc/apache2/apache2.conf
最後尾に下記追加
<Directory /var/www/html/[FQDN]/secret>
AuthType Digest
AuthName "DigestAuth"
AuthDigestDomain [FQDN]/secret/
AuthUserFile /etc/apache2/.digestauth
Require valid-user
</Directory>
Digest認証をかけるディレクトリを作成する
# mkdir /var/www/html/[FQDN]/secret
Digest認証を有効にして再起動する
# a2enmod auth_digest
# systemctl restart apache2
ブラウザでhttp://<FQDN>/secretにアクセスすると「ユーザー名」「パスワード」求める画面が出る

