PHPサーバの基本設定と運用方法について解説
PHPは、サーバ上で動作するサーバサイドスクリプト言語です。
動的なWebコンテンツの作成やアプリケーション開発が容易になり、個人ブログから大規模システムまで幅広く利用されています。
豊富なライブラリやフレームワークを活用することで、開発効率が向上します。
この記事では、PHPサーバの基本的な仕組みや設定方法、運用のポイントについて分かりやすく解説します。
サーバ環境の初期設定
php.ini の基本設定
エラーログと表示設定
開発環境ではエラー表示を有効にすることで素早く問題箇所を特定できます。
まず、display_errors
の設定でエラーをブラウザに表示するかどうかを設定し、ログ出力用に error_log
を指定するのが基本です。
本番環境では display_errors
を Off
に切り替えることで、機密情報が外部に漏れないように注意してください。
; php.ini のエラーログ設定例
display_errors = On ; 開発時は On、本番は Off に変更してください
error_log = /var/log/php_error.log ; エラーログの出力先
メモリおよび実行時間の調整
PHP の実行過程でメモリ不足や長時間実行が発生しないように、memory_limit
と max_execution_time
の適切な設定が求められます。
これらの設定により、サーバへの負荷が分散され安定した運用が可能になります。
; メモリおよび実行時間の設定例
memory_limit = 128M ; PHP に割り当てる最大メモリ量
max_execution_time = 30 ; スクリプトの最大実行時間(秒)
拡張モジュールの有効化
MySQLや PDO の設定
データベース接続には PDO や MySQL 拡張モジュールの有効化が必要です。
php.ini
で必要な拡張モジュールを有効にすることで、安定したデータベース連携が行えます。
; PDO 拡張モジュールの設定例
extension=pdo_mysql ; MySQL 用の PDO モジュールを有効化
セッション管理の構成
セッション管理は、ユーザーの状態を保持するために重要な構成要素です。
session.save_path
や session.gc_maxlifetime
を設定することで、セッションデータの保存場所や有効期間を明確にします。
; セッション管理の設定例
session.save_path = "/var/lib/php/sessions" ; セッション保存先ディレクトリ
session.gc_maxlifetime = 1440 ; セッションの有効期間(秒)
Webサーバ連携設定
Apache 連携
VirtualHost の構成
Apache の VirtualHost 機能を利用することで、PHP の動作環境を正確に設定できます。
サーバ名やドキュメントルート、そして PHP の処理方法を定義することで複数サイトの運用に役立ちます。
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
# PHP ファイルに対する FastCGI の設定
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
.htaccess の設定
ディレクトリ単位で PHP の設定を上書きする場合、.htaccess
を活用できます。
特定のディレクトリでエラー表示やメモリ制限を調整したい場合に有効です。
# .htaccess の例
php_value display_errors On
php_value memory_limit 256M
Nginx 連携
FastCGI 設定
Nginx では FastCGI 経由で PHP-FPM に処理を委譲する設定が一般的です。
設定ファイル内で fastcgi_pass
や SCRIPT_FILENAME
の指定を行うことで、PHP の処理が正しく動作します。
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
URLリライトの設定
Nginx のリライト設定を利用することで、クリーンな URL 構造にすることができます。
リクエストが存在しないファイルやディレクトリの場合に、index.php
に制御を委譲する基本的な設定例です。
location / {
try_files $uri $uri/ /index.php?$query_string;
}
セキュリティ対策
HTTPS および SSL 設定
HTTPS を導入することで、通信経路の暗号化が可能となり安全な運用が実現します。
サーバ側では SSL 証明書を読み込み、SSLEngine on
の設定により暗号化通信を有効にします。
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/example_com.crt
SSLCertificateKeyFile /etc/ssl/private/example_com.key
</VirtualHost>
不要機能の無効化
PHP バージョン管理
PHP のバージョンがプロジェクトごとに異なる場合もありますが、各環境にあったバージョンを明示的に運用することでトラブルが減少します。
使用しない古いバージョンや互換性の低いモジュールについては適宜無効化し、安定した環境を維持することが重要です。
拡張モジュールの整理
不要な拡張モジュールが動作していると、セキュリティリスクやパフォーマンス低下の原因になります。
実際に使用しないモジュールは無効化するコメントアウトを行い、システムの負荷を軽減してください。
; 拡張モジュールの無効化例
; extension=php_ldap.dll
; extension=php_imap.dll
パフォーマンス調整
キャッシュ設定の活用
OPcache の有効化
OPcache は PHP スクリプトのバイトコードをキャッシュし、再コンパイルを防ぐことで高速化を実現します。
php.ini
内で OPcache のパラメータを設定することで、パフォーマンスの向上が期待できます。
; OPcache の設定例
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
その他キャッシュ技術の導入
Redis や Memcached などのキャッシュエンジンと連携することで、セッション管理やデータキャッシュをより迅速に行えます。
以下は Redis を利用したシンプルなサンプルコードです。
<?php
// Redis キャッシュ利用サンプル
$redis = new Redis(); // Redis クライアントの作成
$redis->connect('127.0.0.1', 6379); // Redis サーバに接続
$key = 'cacheKey'; // キャッシュのキー
$value = 'キャッシュ内容'; // キャッシュする内容
$redis->set($key, $value); // キャッシュに保存
echo $redis->get($key); // キャッシュから値を取得して表示
?>
キャッシュ内容
プロセス管理と高速化
PHP-FPM のプロセス管理設定を調整することで、サーバの負荷が均等に分散され高速なレスポンスが実現できます。
www.conf
等の設定ファイル内でプロセス数や待機プロセスの数を変更することで、アクセス数の多い環境でも安定した運用が可能です。
; PHP-FPM の設定例(www.conf)
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 10
障害対応とログ管理
エラーログの確認方法
システムに不具合が発生した際は error_log
に出力されたログを確認することで原因箇所を特定できます。
ログファイルは定期的にチェックし、問題の早期発見と対応に役立ててください。
$ tail -f /var/log/php_error.log
ファイル権限およびアクセス制御
適切なファイル権限の設定は、サーバのセキュリティ維持において欠かせません。
Web サーバの実行ユーザーとファイルの所有権を揃え、不要な書き込み権限を剥奪することで安全性が向上します。
# Linux のファイル権限調整の例
$ chown www-data:www-data /var/www/html -R
$ chmod 755 /var/www/html -R
まとめ
この記事では、PHPサーバ環境の初期設定および運用方法について、php.iniの基本設定、拡張モジュールの有効化、ApacheとNginxの連携設定、セキュリティ対策、パフォーマンス調整、障害対応とログ管理を具体例とサンプルコードを交えて学びました。
各設定の要点と実践的なコードが網羅され、運用に不可欠な基礎知識が理解できる内容です。
ぜひ、ご自身の環境で実際に設定を見直し、システム改善の一歩にお役立てください。