Fedora45 : WEB サーバー(Apache2)

1.Apache2のインストールとバーチャルホスト設定

1.1 Apache2インストール

①httpdをインストール

# dnf -y install httpd

バージョン確認
# httpd -v
Server version: Apache/2.4.69 (Fedora Linux)
Server built:   Oct  1 2026 00:00:00

1.2 Apache の設定

①httpd.conf ファイルを編集

# 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 [ドメイン名]

149行目 : 変更 (Indexes は削除)
Options FollowSymLinks

156行目 : 変更
AllowOverride All

169行目 : ディレクトリ名のみでアクセスできるファイル名
「index.php index.cgi」を追加する

最終行に追記
ServerTokens Prod

②Firewalld を有効にしている場合は HTTP サービスの許可が必要。HTTP は [80/TCP] を使用します

# firewall-cmd --add-service=http --permanent
# firewall-cmd --reload

③Apache の自動起動設定

# 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
             └─10-timeout-abort.conf
     Active: active (running) since Sun 2026-11-08 11:15:09 JST; 13s ago
 Invocation: 7a2137bd0e8b44f9994b013b20186b2d
       Docs: man:httpd.service(8)
   Main PID: 2035 (httpd)
     Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:   0 B/sec"
      Tasks: 177 (limit: 4564)
     Memory: 14.3M (peak: 14.4M)
        CPU: 99ms
     CGroup: /system.slice/httpd.service
             ├─2035 /usr/sbin/httpd -DFOREGROUND
             ├─2037 /usr/sbin/httpd -DFOREGROUND
             ├─2038 /usr/sbin/httpd -DFOREGROUND
             ├─2039 /usr/sbin/httpd -DFOREGROUND
             └─2040 /usr/sbin/httpd -DFOREGROUND

Nov 08 11:15:09 Lepard systemd[1]: Starting httpd.service - The Apache HTTP Server...
Nov 08 11:15:09 Lepard (httpd)[2035]: httpd.service: Referenced but unset environment variable evaluates to an emp>
Nov 08 11:15:09 Lepard httpd[2035]: Server configured, listening on: port 80
Nov 08 11:15:09 Lepard systemd[1]: Started httpd.service - The Apache HTTP Server.

④動作確認
http://[サーバーIPアドレス] にアクセスすると下記のようにFddora Webserver Test Page が表示されればOK

⑤Welcomeページを非表示にし、Test Pageとして新規にindex.htmlファイルを作成し、apacheの動作確認

ウェルカムページをリネームする

# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.org

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]] ディレクトリに割り当てて設定します

# 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>

ドキュメントディレクトリーの作成

# mkdir /var/www/html/[FQDN]

Apacheの再起動

# systemctl restart httpd

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

# 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の利用可確認

# grep -n "^ *ScriptAlias" /etc/httpd/conf/httpd.conf
254:    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
上記が表示され、「/var/www/cgi-bin/」配下で利用可能

②テストスクリプトを作成し、作動確認

# vi /var/www/cgi-bin/index.cgi
下記を記入
#!/usr/bin/python3
print("Content-type: text/html\n")
print("CGI Script Test Page")
# chmod 755 /var/www/cgi-bin/index.cgi
# curl localhost/cgi-bin/index.cgi
CGI Script Test Page

3. PHPのインストールと設定

3.1.PHPインストール

①インストール

# dnf -y install php

②バージョン確認

# php -v
PHP 8.5.12 (cli) (built: Oct 19 2026 17:02:46) (NTS gcc x86_64)
Copyright (c) The PHP Group
Built by Fedora Project
Zend Engine v4.5.12, Copyright (c) Zend Technologies
    with Zend OPcache v8.5.12, Copyright (c), by Zend Technologies

php-fpm の設定

# systemctl enable php-fpm
Created symlink '/etc/systemd/system/multi-user.target.wants/php-fpm.service' → '/usr/lib/systemd/system/php-fpm.service'.
# systemctl start php-fpm

③Apache の再起動
PHP インストール後は、Apache  を再起動すればデフォルトで PHP-FPM (FPM : FastCGI Process Manager) が呼び出され、httpd の起動と連動して php-fpm サービスも起動されます

# 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
             └─10-timeout-abort.conf
     Active: active (running) since Sun 2026-11-08 11:35:42 JST; 1min 9s ago
 Invocation: 9904c7f4fa4444e3aa6885bb66ce425c
   Main PID: 3242 (php-fpm)
     Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0.00req/sec"
      Tasks: 6 (limit: 4564)
     Memory: 11.2M (peak: 11.6M)
        CPU: 75ms
     CGroup: /system.slice/php-fpm.service
             ├─3242 "php-fpm: master process (/etc/php-fpm.conf)"
             ├─3244 "php-fpm: pool www"
             ├─3245 "php-fpm: pool www"
             ├─3246 "php-fpm: pool www"
             ├─3247 "php-fpm: pool www"
             └─3248 "php-fpm: pool www"

Nov 08 11:35:41 Lepard systemd[1]: Starting php-fpm.service - The PHP FastCGI Process Manager...
Nov 08 11:35:42 Lepard systemd[1]: Started php-fpm.service - The PHP FastCGI Process Manager.

④PHP の動作確認
下記のファイルを作成

# 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"のパスワードを求められるので入力する。

# /usr/bin/htdigest -c /etc/httpd/.digestauth "DigestAuth" secretuser

確認する

# cat /etc/httpd/.digestauth
secretuser:DigestAuth:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

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

4.2 Apacheの設定ファイル編集

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

# vi /etc/httpd/conf/httpd.conf

最後尾に下記追加

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

Digest認証をかけるディレクトリを作成する

# mkdir /var/www/html/[FQDN]/secret

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

# systemctl restart httpd.service

ブラウザでhttp://[FQDN]/secret にアクセスすると「ユーザー名」「パスワード」求める画面が出る