Contents
Apache2インストール
最初にUFWでhttp:80番ポートおよびhttps:443ポートをallowしておく
1 2 3 |
# ufw allow http # ufw allow https # ufw reload |
1 Apache2 をインストール
1 |
# apt -y install apache2 |
2 Apache2 基本設定
1 2 3 |
# vi /etc/apache2/conf-enabled/security.conf # 25行目:変更 ServerTokens Prod |
1 2 3 |
# vi /etc/apache2/mods-enabled/dir.conf # 2行目:ディレクトリ名のみでアクセスできるファイル名を確認 DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm |
1 2 3 4 5 |
# vi /etc/apache2/apache2.conf # 70行目:サーバー名追記 ServerName <FQDN> # 172行目:変更 AllowOverride ALL |
1 2 3 |
# vi /etc/apache2/sites-available/000-default.conf # 11行目:管理者アドレス変更 ServerAdmin <your mailaddress> |
Apache再起動
1 |
# systemctl restart apache2 |
3 Apache2 : Perlスクリプトを利用する
CGI を有効にして Perl スクリプトが利用できるように設定します
①Perl をインストール
1 |
# apt -y install perl |
②CGI モジュールを有効にし再起動
1 2 |
# a2enmod cgid # systemctl restart apache2 |
③CGI モジュールを有効確認
テストスクリプト作成
1 2 3 4 5 |
# cat > /usr/lib/cgi-bin/test_script <<'EOF' #!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello CGI\n"; EOF |
スクリプトファイルに権限を与える
1 |
# chmod 705 /usr/lib/cgi-bin/test_script |
動作確認
1 2 3 4 5 6 |
# curl http://localhost/cgi-bin/test_script “curl: コマンドが見つかりません”と表示されたら # apt install curl 再度 # curl http://localhost/cgi-bin/test_script Hello CGI |
4 Apache2 : PHPスクリプトを利用する
①PHP をインストール
1 |
# apt -y install php php-cgi libapache2-mod-php php-common php-pear php-mbstring |
②Apache2 の設定
1 2 3 4 |
# a2enconf php8.1-cgi Enabling conf php8.1-cgi. To activate the new configuration, you need to run: systemctl reload apache2 |
1 2 3 4 5 6 |
# vi /etc/php/8.1/apache2/php.ini # 850行目変更 #upload_max_filesize = 2M upload_max_filesize = 200M 968行目:コメント解除しタイムゾーン設定 date.timezone = "Asia/Tokyo" |
③PHPテストページを作成して動作確認
1 2 3 4 5 6 7 8 9 10 |
# vi /var/www/html/index.php <html> <body> <div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;"> <?php print "PHP Test Page"; ?> </div> </body> </html> |
ブラウザでhttp://<サーバーIPアドレス>/index.php にアクセスすると次のような画面が出れば成功
5 Apache2 : バーチャルホストの設定
①デフォルトの設定ファイルをコピーし(ファイル名は任意、今回は例としてvhost-yourdomain.conf)、バーチャルホストの設定をします
1 2 |
# cd /etc/apache2/sites-available/ # cp 000-default.conf vhost-yourdomain.conf |
②作成した設定ファイルを編集
1 2 3 4 5 6 7 8 9 10 11 |
# vi vhost-yourdomain.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> |
③設定ファイルにシンボリックリンクを貼り、デフォルトの設定ファイルを無効化する
1 2 3 4 |
# cd /etc/apache2/sites-available/ # a2ensite vhost-yourdomain.conf # a2dissite 000-default.conf デフォルト無効化Apache再起動 # systemctl restart apache2 |
④hostsファイルの編集
1 2 |
# vi /etc/hosts 127.0.0.1 <FQDN> |
⑤ディレクトリー作成
1 |
# mkdir /var/www/html/<FQDN> |
⑥テストページを作成し、動作確認
1 2 3 4 5 6 7 8 |
# 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"のパスワードを求められるので入力する。
1 |
# /usr/bin/htdigest -c /etc/apache2/.digestauth "DigestAuth" secretuser |
確認する
1 2 |
# cat /etc/apache2/.digestauth secretuser:DigestAuth:64939177c7b7c6eac3687925b27e771d |
上記の通り、secretuserと暗号化されたパスワードが作成されています
6.2 Apacheの設定ファイル編集
Digest認証をかけるディレクトリを指定する。(今回はsecretディレクトリーを指定する)
1 |
# vi /etc/apache2/apache2.conf |
最後尾に下記追加
1 2 3 4 5 6 7 |
<Directory /var/www/html/[FQDN]/secret> AuthType Digest AuthName "DigestAuth" AuthDigestDomain /secret/ AuthUserFile /etc/apache2/.digestauth Require valid-user </Directory> |
Digest認証をかけるディレクトリを作成する
1 |
# mkdir /var/www/html/[FQDN]/secret |
Digest認証を有効にして再起動する
1 2 |
# a2enmod auth_digest # systemctl restart apache2 |
ブラウザでhttp://<FQDN>/secretにアクセスすると「ユーザー名」「パスワード」求める画面が出る