「業務用エアコンのエラーコード」はこちら

Ubuntu Server 22.04 : WEBサーバー(Apache)

Apache2インストール

最初にUFWでhttp:80番ポートおよびhttps:443ポートをallowしておく

# ufw allow http
# ufw allow https
# ufw reload

1 Apache2 をインストール

# apt -y install apache2

2 Apache2 基本設定

# vi /etc/apache2/conf-enabled/security.conf
# 25行目:変更
ServerTokens  Prod
# vi /etc/apache2/mods-enabled/dir.conf
# 2行目:ディレクトリ名のみでアクセスできるファイル名を確認
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml i ndex.htm
# vi /etc/apache2/apache2.conf
# 70行目:サーバー名追記
ServerName <自ドメイン名>
# 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 をインストール

# apt -y install perl

②CGI モジュールを有効にし再起動

# a2enmod cgid
# systemctl restart apache2

③CGI モジュールを有効確認
テストスクリプト作成

# cat > /usr/lib/cgi-bin/test_script <<'EOF'
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello CGI\n";
EOF

スクリプトファイルに権限を与える

# chmod 705 /usr/lib/cgi-bin/test_script

動作確認

# curl http://localhost/cgi-bin/test_script
“curl: コマンドが見つかりません”と表示されたら
# 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.1-cgi
Enabling conf php8.1-cgi.
To activate the new configuration, you need to run:
systemctl reload apache2
# vi /etc/php/8.1/apache2/php.ini
# 850行目変更
#upload_max_filesize = 2M
upload_max_filesize = 200M
968行目:コメント解除しタイムゾーン設定
date.timezone = "Asia/Tokyo"

③PHPテストページを作成して動作確認

# 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)、バーチャルホストの設定をします

# cd /etc/apache2/sites-available/
# cp 000-default.conf vhost-yourdomain.conf

②作成した設定ファイルを編集

# vi vhost-yourdomain.conf
<VirtualHost *:80>
~省略~
ServerName <自ドメイン名>
ServerAdmin <管理者メールアドレス>
DocumentRoot /var/www/html/<自ドメイン名>/
~省略~
ErrorLog ${APACHE_LOG_DIR}/<自ドメイン名>.error.log
CustomLog ${APACHE_LOG_DIR}/<自ドメイン名>.access.log combined
~省略
</VirtualHost>

③設定ファイルにシンボリックリンクを貼り、デフォルトの設定ファイルを無効化する

# cd /etc/apache2/sites-available/
# a2ensite vhost-yourdomain.conf
# a2dissite 000-default.conf  デフォルト無効化Apache再起動
# systemctl restart apache2

④hostsファイルの編集

# vi /etc/hosts
127.0.0.1 <自ドメイン名>

⑤ディレクトリー作成

# mkdir /var/www/html/<自ドメイン名>

⑥テストページを作成し、動作確認

# vi /var/www/html/<自ドメイン名>/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://<自ドメイン名>/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

確認する

# cat /etc/apache2/.digestauth
secretuser:DigestAuth:64939177c7b7c6eac3687925b27e771d

上記の通り、secretuserと暗号化されたパスワードが作成されています

6.2 Apacheの設定ファイル編集

Digest認証をかけるディレクトリを指定する。(今回はsecretディレクトリーを指定する)

# vi /etc/apache2/apache2.conf

最後尾に下記追加

<Directory /var/www/html/secret>
AuthType Digest
AuthName "DigestAuth"
AuthDigestDomain /secret/
AuthUserFile /etc/apache2/.digestauth
Require valid-user
</Directory>

Digest認証を有効にして再起動する

# a2enmod auth_digest
# systemctl restart apache2

ブラウザでhttp://<domain name>/にアクセスすると「ユーザー名」「パスワード」求める画面が出る

タイトルとURLをコピーしました