Apache + PHP + MySQL インストール

FreeBSD で Apache HTTP Server 2.4PHPMySQL を組み合わせた Web サーバ環境(FAMP 環境)を構築する.インストールは FreeBSD のパッケージ管理コマンド pkg で行う.

関連する外部ページ】:

以下のコマンドは root 権限で実行する.

MySQL インストール

MySQL のインストールの手順は, 「MySQL インストール (UNIX の場合)」の Web ページ を見てください.

FreeBSD のパッケージでインストールする場合は次のコマンドを実行する. サーバの自動起動を有効にするため,/etc/rc.confmysql_enable="YES" を設定する.

pkg install mysql84-server mysql84-client
sysrc mysql_enable="YES"
service mysql-server start

初期状態の root パスワードは,エラーログ /var/db/mysql/<ホスト名>.err に一時パスワードとして記録される. 初期設定は mysql_secure_installation で行う.

mysql_secure_installation

Apache と PHP のインストール

Apache HTTP Server 2.4PHP,および PHP から MySQL を利用するための拡張モジュールをインストールする. PHP は,Apache との連携方式として PHP-FPM(FastCGI プロセスマネージャ)を使う. PHP-FPM は,Apache の動作方式(MPM)に依存せず,マルチスレッド型の event MPM とも組み合わせられる方式である.

pkg update
pkg install apache24 php84 php84-extensions php84-mysqli php84-pdo_mysql php84-mbstring

セキュリティ修正が随時公開されるため,導入後も pkg upgrade による更新を継続する. 導入済みパッケージに既知の脆弱性がないかは pkg audit -F で確認できる.

pkg upgrade
pkg audit -F

自動起動の設定と起動

Apache と PHP-FPM の自動起動を有効にするため,/etc/rc.confapache24_enable="YES"php_fpm_enable="YES" を設定する.

sysrc apache24_enable="YES"
sysrc php_fpm_enable="YES"
service php-fpm start
service apache24 start

Apache と PHP-FPM の連携設定

設定ファイル /usr/local/etc/apache24/httpd.conf を編集し,次の 2 行のコメント記号「#」を外して mod_proxymod_proxy_fcgi を有効にする.

LoadModule proxy_module libexec/apache24/mod_proxy.so
LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so

次に,設定ファイル /usr/local/etc/apache24/Includes/php-fpm.conf を新規作成し,拡張子 .php のファイルを PHP-FPM に渡す設定を書く. PHP-FPM は,FreeBSD の初期設定では 127.0.0.1:9000 で待ち受ける.

<FilesMatch "\.php$">
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

設定ファイルの文法を確認したうえで,Apache を再起動する.

service apache24 configtest
service apache24 restart

動作確認

Apache 24 の公開ディレクトリは /usr/local/www/apache24/data である. 動作確認用のファイルを置き,Web ブラウザで「http://<サーバのアドレス>/info.php」を開いて PHP の情報が表示されることを確認する. 確認が済んだら,サーバ構成の情報が外部に公開されないよう,このファイルは削除する.

echo '<?php phpinfo();' > /usr/local/www/apache24/data/info.php
rm /usr/local/www/apache24/data/info.php

Apache の各種設定

仮想ホスト,アクセス制御,SSI などの設定は, apache サーバ基本設定 (apache + PHP + SSI) の Web ページを参考に行ってください.

PHP 設定ファイル php.ini

PHP のパッケージには php.ini は含まれず,ひな型のみが配置される. 本番運用向けのひな型 php.ini-production をコピーして /usr/local/etc/php.ini を作成する.

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

設定例は次の通りである. 文字コードは UTF-8 を用いる. (mbstring.http_input, mbstring.http_output, mbstring.encoding_translation, mbstring.func_overload は PHP 8 では非推奨または削除されており,設定しない.)

default_charset = "UTF-8"

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.detect_order = auto

upload_max_filesize = 10M
post_max_size = 10M

expose_php = Off

php.ini を変更したあとは,PHP-FPM を再起動して設定を反映させる.

service php-fpm restart