広告

WordPress環境構築まとめ「Vol-02」Apache設定と、HTTPS化

IT

前回、RockyLinux9.7をインストールし、WindowsターミナルでSSH接続できるようになりました
今回は、Apache、MariaDB、PHPをインストールし、WordPressを起動させます
筆者の環境ではすでに自宅内で、Wordpress(このブログサイト)は起動しているのでテスト環境として、仮にwww2.hogehoge.com で設定を行っています
この仮ドメインは、実際のドメインに変更してご利用ください。

広告

Apache

コピペで設定できるように、まとめます
詳細は、こちらを参照してください

RockyLinux9.3で自宅サーバーを再構築V04・LAMPの「A」、Apache編
LAMPの「A」のApacheの構築編です。インストール、セキュリティ対策、ファイヤーウォール、https化、HTTP2通信設定を説明します。さらに例では、CGIも動作できるような設定にしています。

Remi リポジトリのインストール

ApacheやPHPの最新バージョンにも対応したいので、Remi リポジトリのインストールします
Remiのインストールには、「crb」や「epel」のインストールが必要なようです

httpdインストール

続いて、httpd関連をインストールし、自動起動するように設定します

 httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled)
Active: active (running) since Sat 2026-04-18 17:24:47 JST; 54min ago

active (running)とservice; enabledで確認できます。

Firewalld に許可

「http」と「https」を許可します

「services: 」で確認できます

public (active)
target: default
icmp-block-inversion: no
interfaces: wlp8s0
sources:
services: cockpit dhcpv6-client http https ssh

ブラウザのアドレスバーにIPアドレス「http://192.168.*.*」をに入力すれば、テストページが表示されれば動作しています

httpd.conf

サーバー上のディレクトリや、ホスト名など、自分の環境に合わせて設定ファイルを編集します
筆者の場合、「DocumentRoot」を「/home/www/html」に変更します
「ServerName」は、バックアップ用なので本サーバーとの識別のためドメイン名は
「www2」とし「www2.hogehoge.com」に設定します
CGIスクリプトを使用する場合では、AddHandlerでスクリプトの拡張子を指定し、ScriptAlias以外のディレクトリにスクリプトを置く場合には、その指定ディレクトリに「Options ExecCGI」を追加します
まずは、設定ファイル「httpd.conf」はバックアップを取ってから作業します

edhitor

#ServerAdmin root@localhost
ServerAdmin root@localhost

#ServerName www.example.com:80
ServerName www2.hogehoge.com:80

#DocumentRoot "/var/www/html"
DocumentRoot "/home/www/html"

#<Directory "/var/www">
<Directory "/home/www">

#<Directory "/var/www/html">
<Directory "/home/www/html">

#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
ScriptAlias /cgi-bin/ "/home/www/cgi-bin/"

#<Directory "/var/www/cgi-bin">
<Directory "/home/www/cgi-bin">

#Options Indexes FollowSymLinks
Options FollowSymLinks

#AddHandler cgi-script .cgi
# --- 2026/04/19 add by kazuban
AddHandler cgi-script .cgi
<Directory /home/www/html/script>
AllowOverride None
Options ExecCGI FollowSymLinks
Order allow,deny
Allow from all
</Directory>

筆者の場合、デフォルトにディレクトリを変更したので、そのディレクトリを作成し、所有者をapacheに変更します

「Syntax OK」が出れば、正常に変更されています

セキュリティ対策

・テストページや「icons」一覧を非表示にする
・Apacheバージョン情報とTRACEメソッドOFF
・X-Frame-Optionsの有効を確認
・設定したドキュメントルートにindex.htmlを作成

表示させたくないので、削除や名前変更もできますが、自動的に復活するらしいので、<Directory>設定は、全てコメントにしました。
autoindex.confも同様です

httpdを再起動すると、「http://192.168.*.*」は表示されなくなっていれば正常です

さらに、Apacheバージョン情報とTRACEメソッドもOFFにします
/etc/httpd/conf/httpd.confを編集

最終行に、設定コードを追加

##--- kazuban added. 2026/04/19
ServerTokens ProductOnly
ServerSignature off
TraceEnable off

構文チェックしOKであれば、再起動します

X-Frame-Optionsは、Webサイトを不正な埋め込み(クリックジャッキング攻撃)から守るために非常に重要だと言うことなので、こちらも有効になっているか確認します
「/etc/httpd/conf.modules.d/00-base.conf」に、mod_headers.soの記載があればモジュールは入っています

次に、「/etc/httpd/conf/httpd.conf」の最後に、
「 Header append X-FRAME-OPTIONS “SAMEORIGIN” 」
を追加して、apacheを再起動します



##--- kazuban added. 2026/04/19
ServerTokens ProductOnly
ServerSignature off
TraceEnable off

Header append X-FRAME-OPTIONS "SAMEORIGIN"

ドキュメントルートのトップページの表示

上記セキュリティ対策でトップページが表示されなくなったので、「index.html」を作成し、簡単な表示が出るようにしておきます。

これで、「http://192.168.*.*」でトップページが表示されるようになりました

Let’s Encrypt証明書でhttps化

https化を行う場合には、ファイヤーウォールでの許可が必要ですが、上記ですでに許可してますから、ここでは確認だけ行います

「services: 」に「https」があれば、許可済みです

sslモジュール

「mod_ssl」も、上記でインストールされています、確認してみます

Certbot クライアントのインストール

Let’s Encryptで証明書の取得には、「Certbot」と言うソフトを利用します
パッケージの状態を確認します

複数でてきますが、「certbot.noarch」「python3-certbot-apache.noarch」をインストールします

証明書発行

すでにhttpdが動作している場合には、「webroot プラグイン」を使います
動作していない場合には、「Standaloneプラグイン」を使います
ただし、両方とも外部から対象のPCの80番ポートへ通信は必要です
したがって、外部(インターネット側)から、対象のドメインのが名前解決が必要です
私は、無料のサービスhttps://www.mydns.jp/ を利用させてもらっています
80番ポートは「Standalone」の場合は、certbot が占有します
「webroot」は、apacheが使います
したがって、「webroot」はwebサーバーが動作している必要がありますが、「Standalone」では停止しておく必要があります

まず、外部からの80番へのリクエストが、対象のPCアドレスへ転送されるように設定します
自宅であれば、ルーターの「ポートマッピング」などの項目で設定できると思います
次に、httpdの起動状態を確認

80番と、httpdの起動が確認できたら、certbot を起動しましょう
確認はしていませんが、権限が必要なファイルに書き込むので、「su」での起動がいいと思います

対話での設定になります

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel):      <------自分のEメールアドレスを入力

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y <----- 利用規約を読んでください

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y <--------- 電子フロンティア財団からEメールが届いてもいいか?
Account registered.
Requesting a certificate for www2.hogehoge.com and hogehoge.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/www2.hogehoge.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/www2.hogehoge.com/privkey.pem
This certificate expires on 2026-07-18.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Successfully」になれば、証明書ファイルは保管されています

証明書の設定

証明書を「/etc/httpd/conf.d/ssl.conf」で反映させます
まずは、バックアップをとってから、編集します

/etc/httpd/conf.d/ssl.conf


#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/letsencrypt/live/www2.hogehoge.com/fullchain.pem


#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/letsencrypt/live/www2.hogehoge.com/privkey.pem

保存後、確認でOKなら、httpd再起動

https:// でのアクセス確認

証明書発行では80番ポーとを通しましたが、httpsでは443ポートを通してておきます
ただし、筆者の環境のように、同じLAN上にWebサーバーとアクセスPCがある場合には外部DNSを使用しないので、アクセスできない場合があります
その場合、アクセス側PCの「hosts」ファイルで設定しておくと可能になります

C:\Windows\System32\drivers\etc\hosts (windows)
/etc/hosts (Linux)

#Server 
192.168.1.100 hogehoge.com
192.168.1.100 www.hogehoge.com

#TestServer
192.168.1.101 www2.hogehoge.com

この設定後、「https://www2.hogehoge.com」で正常に「index.html」画面が表示されれば証明書は正常です

HTTP/2を利用する

詳細は、こちらを確認してください
まず、eventMPMモジュールとhttp2モジュールが必要ですが、Rocky9では、デフォルトで有効になっているようです。
確認してみます

次に、「httpd.conf」で有効設定する予定ですが、設定前にhttp2の有効状態を確認してみました
確認は、Chromeで「https://www2.hogehoge.com」を表示後、F12キーで表示される開発ページの「Network」「Protocol」で確認できますが、筆者の環境ではすでに「h2」になっていて、http2が有効になっていました。
AIに聞いてみると、Apacheのバージョンによっては、有効になっている場合もあるが、明示的に設定をいれる事を推奨するの事なので、設定はしておこうと思います

設定は、「/etc/httpd/conf/httpd.conf」で行います

最終行に追加して、httpdを再起動


<IfModule http2_module>
Protocols h2 http/1.1
ProtocolsHonorOrder on
</IfModule>

HTTP/2有効確認

Chromeで「https://www2.hogehoge.com」を表示後、F12キーで表示される開発ページの「Network」「Protocol」で確認できますが、「Protocol」が表示されていない場合があります
・開発ページが表示された後、CTRL+R でページを更新
・もし、翻訳のダイアログが出た場合には、「日本語」にしてみます

・開発ページが更新されても、デフォルトでは「Protocol」が非表示になっている場合があります
・「Network」タブの、「Name」セル上でマウス右ボタンで、表示項目の選択ができるので「Protocol」をチェックする事で、表示されます

・表示された「Protocol」が、「h2」や「h3」になっていれば、HTTP/2で応答しています


WordPress環境構築まとめ

コメント

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