Contents
1.Apache2のインストールとバーチャルホスト設定
1.1 Apache2インストール
①httpdをインストール
| 1 2 3 4 5 6 | # dnf -y install httpd バージョン確認 # httpd -v Server version: Apache/2.4.63 (Fedora Linux) Server built:   Jan 24 2025 00:00:00 | 
1.2 Apache の設定
①httpd.conf ファイルを編集
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_bak # vi /etc/httpd/conf/httpd.conf 91行目 : 管理者アドレス指定 ServerAdmin [Email Address] 101行目あたりServerName の変更 「#ServerName www.example.com:80」の下に「ServerName ドメイン名」を追加 149行目 : 変更 (Indexes は削除) Options FollowSymLinks 156行目 : 変更 AllowOverride All 169行目 : ディレクトリ名のみでアクセスできるファイル名 「index.php index.cgi index.htm」を追加する 最終行に追記 ServerTokens Prod | 
②Firewalld を有効にしている場合は HTTP サービスの許可が必要。HTTP は [80/TCP] を使用します
| 1 2 | # firewall-cmd --add-service=http --permanent # firewall-cmd --reload | 
③Apache の自動起動設定
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # systemctl start httpd # systemctl enable httpd # systemctl status httpd ● httpd.service - The Apache HTTP Server      Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled)     Drop-In: /usr/lib/systemd/system/service.d              mq10-timeout-abort.conf, 50-keep-warm.conf      Active: active (running) since Wed 2025-04-16 14:24:51 JST; 14s ago  Invocation: c81f7020f3c845e19a844fae699c2397        Docs: man:httpd.service(8)    Main PID: 2178 (httpd)      Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:   0 B/sec"       Tasks: 177 (limit: 2246)      Memory: 14.3M (peak: 14.8M)         CPU: 81ms      CGroup: /system.slice/httpd.service              tq2178 /usr/sbin/httpd -DFOREGROUND              tq2181 /usr/sbin/httpd -DFOREGROUND              tq2182 /usr/sbin/httpd -DFOREGROUND              tq2183 /usr/sbin/httpd -DFOREGROUND              mq2187 /usr/sbin/httpd -DFOREGROUND Apr 16 14:24:51 Lepard systemd[1]: Starting httpd.service - The Apache HTTP Server... Apr 16 14:24:51 Lepard (httpd)[2178]: httpd.service: Referenced but unset environment variable evaluates to an empty string: OPTIONS Apr 16 14:24:51 Lepard httpd[2178]: Server configured, listening on: port 80 Apr 16 14:24:51 Lepard systemd[1]: Started httpd.service - The Apache HTTP Server. | 
④動作確認
http://[サーバーIPアドレス] にアクセスすると下記のようにFddora Webserver Test Page が表示されればOK

⑤Welcomeページを非表示にし、Test Pageとして新規にindex.htmlファイルを作成し、apacheの動作確認
ウェルカムページをリネームする
| 1 | # mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.org | 
| 1 2 3 4 5 6 7 8 9 | HTML テストページを作成 # vi /var/www/html/index.html <html> <body> <div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;"> Apache Test Page </div> </body> </html> | 
http://[サーバーIPアドレス] にアクセスすると下記のようにTest Page が表示されればOK

1.3 バーチャルホストの設定
バーチャルホストで運用するドメイン名 [FQDN] を、ドキュメントルート[/var/www/html/[FQDN]] ディレクトリに割り当てて設定します
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # vi /etc/httpd/conf.d/vhost.conf #バーチャルホストのドメインの設定 <VirtualHost *:80> DocumentRoot /var/www/html/[FQDN] ServerName [FQDN] ServerAdmin [Email Address] ←管理者メールアドレス ErrorLog logs/[FQDN].error_log CustomLog logs/[FQDN].access_log combined </VirtualHost> <Directory "/var/www/html/[FQDN]"> Options FollowSymLinks AllowOverride All </Directory> | 
ドキュメントディレクトリーの作成
| 1 | # mkdir /var/www/html/[FQDN] | 
Apacheの再起動
| 1 | # systemctl restart httpd | 
テストページを作成し、動作確認
| 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にアクセスすると下記の画面が出れば正常です。

2. CGIスクリプトの利用確認
①CGIの利用可確認
| 1 2 3 | # grep -n "^ *ScriptAlias" /etc/httpd/conf/httpd.conf 252:    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" 上記が表示され、「/var/www/cgi-bin/」配下で利用可能 | 
②テストスクリプトを作成し、作動確認
| 1 2 3 4 5 | # vi /var/www/cgi-bin/index.cgi #!/usr/bin/python3 print("Content-type: text/html\n") print("CGI Script Test Page") | 
| 1 2 3 | # chmod 755 /var/www/cgi-bin/index.cgi # curl localhost/cgi-bin/index.cgi CGI Script Test Page | 
3. PHPのインストールと設定
3.1.PHPインストール
①インストール
| 1 | # dnf -y install php | 
②バージョン確認
| 1 2 3 4 5 6 | # php -v PHP 8.4.5 (cli) (built: Mar 12 2025 01:55:56) (NTS gcc x86_64) Copyright (c) The PHP Group Built by Fedora Project Zend Engine v4.4.5, Copyright (c) Zend Technologies     with Zend OPcache v8.4.5, Copyright (c), by Zend Technologies | 
php-fpm の設定
| 1 2 | # systemctl enable php-fpm Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service. | 
| 1 | # systemctl start php-fpm | 
③Apache の再起動
PHP インストール後は、Apache  を再起動すればデフォルトで PHP-FPM (FPM : FastCGI Process Manager) が呼び出され、httpd の起動と連動して php-fpm サービスも起動されます
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # systemctl restart httpd # systemctl status php-fpm ● php-fpm.service - The PHP FastCGI Process Manager      Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; preset: disabled)     Drop-In: /usr/lib/systemd/system/service.d              mq10-timeout-abort.conf, 50-keep-warm.conf      Active: active (running) since Wed 2025-04-16 14:35:06 JST; 14s ago  Invocation: af93e056c60b4dd3b199295b751048a6    Main PID: 2916 (php-fpm)      Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0.00req/sec"       Tasks: 6 (limit: 2246)      Memory: 11.4M (peak: 11.7M)         CPU: 46ms      CGroup: /system.slice/php-fpm.service              tq2916 "php-fpm: master process (/etc/php-fpm.conf)"              tq2918 "php-fpm: pool www"              tq2919 "php-fpm: pool www"              tq2920 "php-fpm: pool www"              tq2921 "php-fpm: pool www"              mq2922 "php-fpm: pool www" Apr 16 14:35:06 Lepard systemd[1]: Starting php-fpm.service - The PHP FastCGI Process Manager... Apr 16 14:35:06 Lepard systemd[1]: Started php-fpm.service - The PHP FastCGI Process Manager. | 
④PHP の動作確認
下記のファイルを作成
| 1 2 | # vi /var/www/html/[FQDN]/test.php <?php phpinfo(); ?> | 
ブラウザでhttp://[FQDN]/test.phpにアクセスすると下記のような画面が表示されればOK

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


