【2026年5月26日時点の情報です】
自宅サーバーに、WebサーバーのApache(httpd)と、WordPressを動かすのに必要なPHPを入れます。
このサーバーでは、Apacheは外に直接公開せず、Cloudflare Tunnelを通して公開しています。そのため、HTTPSの設定はせず、ApacheはHTTPのままで動かしています。公開の手順はCloudflare Tunnelの記事で紹介しています。
1. ApacheとPHPをインストールする
[root@almalinux ~]# dnf -y install httpd php php-mbstring ※Apache、PHP、日本語などの文字を扱うPHPの機能をインストール
(途中省略)
インストール済み:
httpd-2.4.62-7.el9_7.3.x86_64
php-mbstring-8.0.30-5.el9_7.x86_64
(途中省略)
完了しました!AlmaLinux 9の標準で入るPHPは8.0です。私のサーバーでは、新しいPHPを配布しているRemiのリポジトリから、PHP 8.3を入れて使っています。Remiのリポジトリの追加方法は、phpMyAdminの記事で紹介しています。
2. Apacheを設定する
2-1. httpd.confを編集する
Apacheの設定ファイルを編集します。変える場所だけを載せています。
[root@almalinux ~]# vi /etc/httpd/conf/httpd.conf ※Apacheの設定ファイルを編集
ServerName softdev-learn.cc:80 ← 先頭の # を外して、サーバー名を指定
Options Includes ExecCGI FollowSymLinks ← CGIとSSIを許可(使わないなら不要)
AllowOverride All ← .htaccess を使えるようにする(WordPressのパーマリンクで必要)
#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%a %l %u %t \"%!414r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined ← %hを%aに。長すぎるURL(414エラー)は記録しない
#LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%a %l %u %t \"%r\" %>s %b" common ← %hを%aに
SetEnvIf Remote_Addr 192.168.10 no_log ← 追加(家のLANからのアクセスは記録しない)
SetEnvIf Remote_Addr 127.0.0.1 no_log ← 追加(自分自身からのアクセスは記録しない)
CustomLog "logs/access_log" combined env=!no_log ← それ以外のアクセスを記録する
#AddDefaultCharset UTF-8 ← 先頭に # を付ける(文字化け対策)
AddHandler cgi-script .cgi .pl ← CGIスクリプトに .pl を追加(CGIを使わないなら不要)
※最後の行に追加
TraceEnable off ← TRACEメソッドを無効にする(クロスサイトトレーシング対策)ログの形式の %h を %a に変えるのは、次の 2-2 の設定と合わせて、CloudflareのIPアドレスではなく、訪問者のIPアドレスを記録するためです。
CGIとSSIの許可、.pl の追加は、PerlなどのCGIを動かす場合の設定です。WordPressだけなら不要で、使わない機能は有効にしないほうが安全です。
2-2. 訪問者のIPアドレスを記録できるようにする
Cloudflare Tunnelを通すと、Apacheからは、すべてのアクセスが同じサーバーの中のcloudflared(127.0.0.1)から来たように見えます。そこで、Apacheの mod_remoteip を使って、Cloudflareが付けてくれる訪問者のIPアドレスの情報(X-Forwarded-For)を使うようにします。
[root@almalinux ~]# vi /etc/httpd/conf.d/remoteip.conf ※訪問者のIPアドレスを使うための設定ファイルを作成
<IfModule remoteip_module>
# 訪問者のIPアドレスが入っているヘッダー
RemoteIPHeader X-Forwarded-For
# 信頼する中継先(cloudflaredや家のLANの中)
RemoteIPTrustedProxy 192.168.0.0/16
RemoteIPTrustedProxy 127.0.0.1
</IfModule>詳しい仕組みと確かめ方は、Tunnel経由のApacheで、アクセスログを訪問者のIPアドレスにする方法の記事で紹介しています。
2-3. Perlを /usr/local/bin/perl でも使えるようにする(CGIを使う場合)
CGIのPerlスクリプトには、先頭に #!/usr/local/bin/perl と書かれたものがあるので、その場所からもPerlを呼べるようにリンクを作ります。
[root@almalinux ~]# ln -s /usr/bin/perl /usr/local/bin/perl ※/usr/local/bin/perl から /usr/bin/perl へリンクを作る
[root@almalinux ~]# whereis perl ※Perlの場所を確認
perl: /usr/bin/perl /usr/local/bin/perl /usr/share/man/man1/perl.1.gz ← /usr/local/bin/perl があればOK2-4. 公開するフォルダの持ち主を変える
Webで公開するフォルダ(ドキュメントルート)の持ち主を、普段使うユーザーに変えます。rootにならなくても、ファイルを置いたり書き換えたりできるようになります(almalinux は例のユーザー名)。
[root@almalinux ~]# chown almalinux: /var/www/html/ ※ドキュメントルートの持ち主を変える
[root@almalinux ~]# ll /var/www/ ※確認
合計 0
drwxr-xr-x. 2 root root 6 12月 23 07:37 cgi-bin
drwxr-xr-x. 2 almalinux almalinux 6 12月 23 07:37 html3. Apacheを起動する
設定ファイルに間違いがないか確かめてから、起動します。
[root@almalinux ~]# httpd -t ※設定ファイルの書き方をチェック
Syntax OK
[root@almalinux ~]# systemctl enable --now httpd ※Apacheを起動して、自動起動も設定4. 動きを確かめる
テスト用のページを作って、ブラウザで表示されるか確かめます。
[root@almalinux ~]# echo test > /var/www/html/index.html ※テスト用のページを作る家のLANのPCのブラウザで、サーバーのIPアドレス(例:http://192.168.0.150/)を開き、「test」と表示されればOKです。確かめたら、テスト用のページは消しておきます。
[root@almalinux ~]# rm -f /var/www/html/index.html ※テスト用のページを消すまとめ
ApacheとPHPを入れて、WordPressを動かす準備ができました。Cloudflare Tunnel経由で使うので、ApacheはHTTPのままでよく、ログに訪問者のIPアドレスを記録する設定(%a と mod_remoteip)をしておくのがポイントです。
次は、アクセスログを分析するGoAccessを入れます。手順はWebアクセス解析(GoAccess)の記事で紹介しています。



コメント