LAMPアーキテクチャとは
LAMPは、Linux、Apache(httpd)、MySQL/MariaDB、PHP の頭文字を取った用語で、Webアプリケーションを構築するためのオープンソース技術スタックです。本稿では、単一サーバー上でPHPをApacheのモジュールとして統合する形態での構成方法について説明します。
Webリソースの種類
- 静的リソース:HTML、CSS、JavaScript、画像ファイルなど、サーバーから直接送信され、クライアント側で変更されることのないコンテンツ。
- 動的リソース:PHPやPythonなどのスクリプトによって生成されるコンテンツ。サーバー上で実行され、その結果がHTTPレスポンスとして返されます。
サーバーとクライアントの処理言語
- クライアントサイド:HTML、CSS、JavaScript、画像形式(JPG/PNGなど)
- サーバーサイド:PHP、Python、JSP、ASP.NET など
PHPはHTML内に埋め込むことができるサーバーサイドスクリプト言語であり、Zendエンジンによりオペコード(中間コード)にコンパイルされ、キャッシュすることで繰り返しのパースコストを削減できます。
CGIとその代替方式
CGI(Common Gateway Interface)は、Webサーバーと外部プログラム間のデータ交換を定義するプロトコルです。しかし、リクエストごとにプロセスを起動するためオーバーヘッドが大きく、現在では非推奨です。
代わりに利用される方式:
- Apacheモジュール(mod_php):PHPをApacheの内部モジュールとして組み込み、リクエストごに分離したプロセスを立ち上げず、効率的に処理。
- FastCGI + php-fpm:独立したPHPプロセスマネージャーとして動作。スケーラビリティに優れる。
Apache MPMモデルとの関係
ApacheのMPM(Multi-Processing Module)に応じて、使用するPHPモジュールが異なります。
- Prefork:スレッド非対応。
libphp5.soを使用。安定性重視の環境向け。 - Worker / Event:マルチスレッド対応。ZTS(Zend Thread Safety)対応版の
libphp5-zts.soが必要。
CentOS/RHEL系では、デフォルトでPreforkが使用されるため、モジュール方式でも問題なく動作します。
PHPとデータベースの連携
PHPからMariaDB/MySQLへ接続するには、php-mysql 拡張モジュールが必要です。この拡張により、mysqli や PDO_MySQL 経由でのデータベース操作が可能になります。
PHP設定ファイルの管理
主な設定ファイルは以下の通り:
/etc/php.ini:メインの設定ファイル/etc/php.d/*.ini:追加モジュールの設定を格納
公式ドキュメント:
設定変更時の反映方法
- Apacheモジュール方式:
systemctl restart httpd - php-fpm方式:
systemctl restart php-fpm
php.iniの記述形式
[section_name]
; コメント(有効化可能な設定行の無効化に使用)
; directive = value
directive = new_value
代表的なPHP設定例
max_execution_time = 60
memory_limit = 256M
display_errors = Off
display_startup_errors = Off
post_max_size = 16M
upload_max_filesize = 8M
max_file_uploads = 20
date.timezone = Asia/Tokyo
short_open_tag = On
実践:単一サーバーへのLAMP構築(CentOS 7)
1. 必要パッケージのインストール
yum install -y httpd mariadb-server php php-mysql php-mbstring
※ php-mbstring は多バイト文字列処理に必要。phpMyAdmin利用時は必須です。
2. サービスの起動と自動登録
systemctl start httpd mariadb
systemctl enable httpd mariadb
3. MariaDBの初期セキュリティ設定
mysql_secure_installation
rootパスワードの設定、匿名ユーザーの削除、テストデータベースの削除などを案内に従って実施。
4. PHP動作確認ページの作成
echo '<h1>Static Page</h1>' > /var/www/html/index.html
cat > /var/www/html/info.php << 'EOF'
<?php
echo "<h2>Current Time: " . date('Y/m/d H:i:s') . "</h2>";
\$link = mysqli_connect('localhost', 'lamp', 'password123', 'testdb');
if (\$link) {
echo "<p style='color:green;'>Database connection successful.</p>";
} else {
echo "<p style='color:red;'>Connection failed.</p>";
}
mysqli_close(\$link);
?>
EOF
5. データベースとユーザーの作成
mysql -u root -p
MySQLコンソール内で以下を実行:
CREATE DATABASE testdb CHARACTER SET utf8mb4;
CREATE USER 'lamp'@'localhost' IDENTIFIED BY 'password123';
GRANT ALL PRIVILEGES ON testdb.* TO 'lamp'@'localhost';
FLUSH PRIVILEGES;
6. 動作確認
ブラウザで以下のURLにアクセス:
http://[サーバーIP]/info.php
日時表示と「Database connection successful」のメッセージが表示されれば成功です。
phpMyAdminの導入手順
1. アーカイブのダウンロードと展開
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz
tar xzf phpMyAdmin-5.2.1-all-languages.tar.gz
mkdir -p /var/www/html/phpadmin
cp -r phpMyAdmin-5.2.1-all-languages/* /var/www/html/phpadmin/
2. 設定ファイルの準備
cd /var/www/html/phpadmin
cp config.sample.inc.php config.inc.php
セキュリティのため、blowfish_secret の値をランダムな文字列に変更することを推奨。
3. Webアクセスの再読込
systemctl reload httpd
4. ブラウザからログイン
http://[サーバーIP]/phpadmin にアクセスし、MariaDBのrootまたはlampユーザーでログイン。
代表的なLAMPベースアプリケーション
- WordPress:PHP+MySQLによるブログ/CMSプラットフォーム。
- phpMyAdmin:Web経由でMySQL/MariaDBを管理。
- EC-CUBE:日本発のオープンソースECシステム(PHP製)。
- DokuWiki:PHPベースの軽量Wikiエンジン。