[PR] 本記事にはプロモーションが含まれています。

Apache 2(Webサーバー)|AlmaLinux 9にインストールして、Cloudflare Tunnel経由で使うための設定

自宅サーバー構築
➔ 自宅サーバー構築メモの目次はこちら

【2026年5月26日時点の情報です】

自宅サーバーに、WebサーバーのApache(httpd)と、WordPressを動かすのに必要なPHPを入れます。

このサーバーでは、Apacheは外に直接公開せず、Cloudflare Tunnelを通して公開しています。そのため、HTTPSの設定はせず、ApacheはHTTPのままで動かしています。公開の手順はCloudflare Tunnelの記事で紹介しています。

1. ApacheとPHPをインストールする

Bash
[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の設定ファイルを編集します。変える場所だけを載せています。

Bash
[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)を使うようにします。

Bash
[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を呼べるようにリンクを作ります。

Bash
[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 があればOK

2-4. 公開するフォルダの持ち主を変える

Webで公開するフォルダ(ドキュメントルート)の持ち主を、普段使うユーザーに変えます。rootにならなくても、ファイルを置いたり書き換えたりできるようになります(almalinux は例のユーザー名)。

Bash
[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 html

3. Apacheを起動する

設定ファイルに間違いがないか確かめてから、起動します。

Bash
[root@almalinux ~]# httpd -t  ※設定ファイルの書き方をチェック
Syntax OK

[root@almalinux ~]# systemctl enable --now httpd  ※Apacheを起動して、自動起動も設定

4. 動きを確かめる

テスト用のページを作って、ブラウザで表示されるか確かめます。

Bash
[root@almalinux ~]# echo test > /var/www/html/index.html  ※テスト用のページを作る

家のLANのPCのブラウザで、サーバーのIPアドレス(例:http://192.168.0.150/)を開き、「test」と表示されればOKです。確かめたら、テスト用のページは消しておきます。

Bash
[root@almalinux ~]# rm -f /var/www/html/index.html  ※テスト用のページを消す

まとめ

ApacheとPHPを入れて、WordPressを動かす準備ができました。Cloudflare Tunnel経由で使うので、ApacheはHTTPのままでよく、ログに訪問者のIPアドレスを記録する設定(%a と mod_remoteip)をしておくのがポイントです。

次は、アクセスログを分析するGoAccessを入れます。手順はWebアクセス解析(GoAccess)の記事で紹介しています。

コメント