Contents
1.Apache2インストール
1.1 httpdをインストール
1 |
# dnf -y install httpd |
バージョン確認
1 2 3 |
# httpd -v Server version: Apache/2.4.57 (Oracle Linux Server) Server built: Aug 8 2024 00:00:00 |
1.2 Apache の設定
①httpd.conf ファイルを編集
1 |
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_bak |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# vi /etc/httpd/conf/httpd.conf 92行目 : 管理者アドレス指定 ServerAdmin <mail address> 102行目 : 追加 「#ServerName www.example.com:80」 ServerName <ドメイン名> 150行目 : 変更 (Indexes は削除) Options FollowSymLinks 157行目 : 変更 AllowOverride All 170行目 : ディレクトリ名のみでアクセスできるファイル名 「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 |
# systemctl start httpd # systemctl enable httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. |
起動確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled) Active: active (running) since Thu 2024-08-29 11:01:51 JST; 12s ago Docs: man:httpd.service(8) Main PID: 9056 (httpd) Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec: 0 B/sec" Tasks: 177 (limit: 21870) Memory: 32.1M CPU: 91ms CGroup: /system.slice/httpd.service tq9056 /usr/sbin/httpd -DFOREGROUND tq9057 /usr/sbin/httpd -DFOREGROUND tq9058 /usr/sbin/httpd -DFOREGROUND tq9059 /usr/sbin/httpd -DFOREGROUND mq9060 /usr/sbin/httpd -DFOREGROUND Aug 29 11:01:51 Lepard systemd[1]: Starting The Apache HTTP Server... Aug 29 11:01:51 Lepard systemd[1]: Started The Apache HTTP Server. Aug 29 11:01:51 Lepard httpd[9056]: Server configured, listening on: port 80 |
④動作確認
http://[サーバーIPアドレス] にアクセスすると下記のようにOracle Apache2 Test Page が表示されればOK
⑤OracleのWelcomeページを非表示にし、Test Pageとして新規にindex.htmlファイルを作成し、apacheの動作確認
ウェルカムページをリネームする
1 |
# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.org |
HTML テストページを作成
1 2 3 4 5 6 7 8 |
# 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 |
# 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 |
2. CGIスクリプトの利用確認
①CGIの利用可確認
下記が表示され、「/var/www/cgi-bin/」配下で利用可能
1 2 |
# grep -n "^ *ScriptAlias" /etc/httpd/conf/httpd.conf 253: ScriptAlias /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のインストールと設定
①インストール
1 |
# dnf -y install php php-mbstring php-pear |
②バージョン確認
1 2 3 4 5 |
# php -v PHP 8.0.30 (cli) (built: Aug 3 2023 17:13:08) ( NTS gcc x86_64 ) Copyright (c) The PHP Group Zend Engine v4.0.30, Copyright (c) Zend Technologies with Zend OPcache v8.0.30, Copyright (c), by Zend Technologies |
Php8.3にバージョンアップする
EPEL リポジトリ、Remi リポジトリが必要になるので、導入していない方はインストールします
1 2 |
# dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm # dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm |
PHP をいったん停止します
1 |
# dnf module disable php |
PHP 8.3 のインストール
1 |
# dnf module install php:remi-8.3 |
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. |
③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 |
# 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) Active: active (running) since Thu 2024-08-29 11:15:00 JST; 6s ago Main PID: 11021 (php-fpm) Status: "Ready to handle connections" Tasks: 6 (limit: 21870) Memory: 14.6M CPU: 41ms CGroup: /system.slice/php-fpm.service tq11021 "php-fpm: master process (/etc/php-fpm.conf)" tq11022 "php-fpm: pool www" tq11023 "php-fpm: pool www" tq11024 "php-fpm: pool www" tq11025 "php-fpm: pool www" mq11026 "php-fpm: pool www" Aug 29 11:15:00 Lepard systemd[1]: Starting The PHP FastCGI Process Manager... Aug 29 11:15:00 Lepard systemd[1]: Started The PHP FastCGI Process Manager. |
④PHP の動作確認
下記のファイルを作成
1 2 3 4 |
# vi /var/www/html/[FQDN]/test.php <?php phpinfo(); ?> |
ブラウザでhttp://<ドメイン名>/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 にアクセスすると「ユーザー名」「パスワード」求める画面が出る