本記事では、CentOS 7環境にLEMP(Linux, Nginx, MariaDB, PHP)スタックをセットアップし、その上でWordPressを動作させる手順を解説します。
1. LEMP環境の構築
LEMPは、PHPベースのWebアプリケーションを稼働させるために必要なソフトウェア群です。各コンポーネントの役割は以下の通りです。
- L (Linux): オペレーティングシステム。本ガイドではCentOS 7を使用します。
- E (Nginx): Webサーバー。ユーザーからのリクエストを受け付け、静的コンテンツを配信したり、動的コンテンツのリクエストをPHPプロセッサに転送したりします。
- M (MariaDB): データベース管理システム。WordPressの投稿、設定、ユーザーデータなどを保存するために使用されます。MySQLと互換性があります。
- P (PHP-FPM): PHPスクリプトを実行するPHPプロセッサ。Nginxと連携して動的コンテンツを生成します。
1.1. Nginxのインストール
NginxはCentOSの標準リポジトリからインストールできます。
sudo yum install -y nginx
sudo systemctl start nginx # Nginxサービスを開始
sudo systemctl enable nginx # システム起動時に自動実行するよう設定
1.2. MariaDBのインストールと設定
MariaDBもCentOSの標準リポジトリで提供されています。
sudo yum install -y mariadb mariadb-server
sudo systemctl start mariadb # MariaDBサービスを開始
sudo systemctl enable mariadb # システム起動時に自動実行するよう設定
インストール後、セキュリティ設定スクリプトを実行し、rootパスワードの設定や匿名ユーザーの削除などを行います。
sudo mysql_secure_installation
プロンプトに従ってパスワードを設定し、質問に「Y」と答えてください。設定後、rootユーザーでログインを試行し、正常に動作することを確認できます。
mysql -u root -p
1.3. PHP-FPMと関連モジュールのインストール
CentOS 7の標準リポジトリには古いPHPバージョンしか含まれていないため、最新のWordPressに対応できるよう、Remiリポジトリを利用してPHP 7.4をインストールします。
# EPELリポジトリとRemiリポジトリをインストール
sudo yum install -y epel-release
sudo yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum-utilsをインストール
sudo yum install -y yum-utils
# PHP 7.4を有効化
sudo yum-config-manager --enable remi-php74
# PHPおよびWordPressに必要なモジュールをインストール
sudo yum install -y php php-fpm php-cli php-gd php-mysqlnd php-opcache php-mbstring php-xml php-curl php-zip
# PHPのバージョンを確認
php -v
1.4. PHP-FPMとNginxの設定
PHP-FPMの設定
PHP-FPMのコンフィギュレーションファイル/etc/php-fpm.d/www.confを編集し、NginxユーザーがPHPプロセスを実行できるようにします。
sudo vim /etc/php-fpm.d/www.conf
以下の行を変更または追加してください。
[www]
; ApacheではなくNginxがユーザーとなるよう変更
user = nginx
group = nginx
; TCPソケットではなくUnixドメインソケットを使用するよう変更
listen = /run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
PHP-FPMサービスを開始し、自動起動を設定します。
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
PHPセッションファイルが正しく書き込めるよう、ディレクトリの所有権を設定します。
sudo chown -R root:nginx /var/lib/php
Nginxの設定
WordPressサイト用のNginxサーバーブロックを設定します。/etc/nginx/conf.d/wordpress.confという新しいファイルを作成するのが推奨されます。
sudo vim /etc/nginx/conf.d/wordpress.conf
以下の内容を追加してください(your_server_ip_or_domain.comは実際のサーバーのIPアドレスまたはドメイン名に置き換えてください)。
server {
listen 80;
server_name your_server_ip_or_domain.com; # サーバーのIPアドレスまたはドメイン名を指定
root /var/www/wordpress;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# .htaccessファイルへのアクセスを拒否
location ~ /\.ht {
deny all;
}
# WordPressのパーマリンクが正しく機能するように設定
location /wp-content/uploads/ {
# 特に設定は不要。Nginxが直接ファイルを提供します。
}
# キャッシュ関連の設定(オプション)
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}
設定ファイルを保存し、Nginxの設定構文をテストしてからサービスを再起動します。
sudo nginx -t
sudo systemctl restart nginx
設定の確認
NginxとPHP-FPMが正しく連携しているか確認するため、Webルートディレクトリに簡単なPHP情報ファイルを作成します。
sudo mkdir -p /var/www/wordpress
sudo vim /var/www/wordpress/info.php
以下の内容を追加します。
<?php
phpinfo();
?>
ブラウザでhttp://your_server_ip_or_domain.com/info.phpにアクセスし、PHP情報ページが表示されることを確認してください。確認後、セキュリティのためinfo.phpファイルは削除してください。
sudo rm /var/www/wordpress/info.php
2. WordPressのインストール
2.1. WordPress用データベースの作成
MariaDBにWordPressが使用するデータベースとユーザーを作成します。
mysql -u root -p
MariaDBプロンプトで以下のコマンドを実行します。YOUR_STRONG_PASSWORDは強力なパスワードに置き換えてください。
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'YOUR_STRONG_PASSWORD';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
MariaDBサービスを再起動し、変更を適用します。
sudo systemctl restart mariadb.service
2.2. WordPressファイルのダウンロードと設定
WordPressの最新版をダウンロードし、Webサーバーのドキュメントルートに配置します。
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -zxvf latest.tar.gz
# NginxのドキュメントルートにWordPressファイルを移動
sudo mv wordpress/* /var/www/wordpress/
WordPressの設定ファイルwp-config.phpを作成し、データベース接続情報を設定します。
cd /var/www/wordpress
sudo cp wp-config-sample.php wp-config.php
sudo vim wp-config.php
以下の行を、前のステップで作成したデータベース情報で更新します。
/** WordPressデータベースの名称 */
define('DB_NAME', 'wordpress');
/** MySQLデータベースのユーザー名 */
define('DB_USER', 'wordpressuser');
/** MySQLデータベースのパスワード */
define('DB_PASSWORD', 'YOUR_STRONG_PASSWORD');
/** MySQLホスト */
define('DB_HOST', 'localhost');
/** データベースの文字コード */
define('DB_CHARSET', 'utf8mb4');
/** データベース照合順序。変更しないのがベストです。 */
define('DB_COLLATE', 'utf8mb4_unicode_ci');
また、WordPressのセキュリティキーとソルトを生成し、wp-config.phpに貼り付けます。これらはWordPress公式の秘密鍵生成サービスから取得できます。
ファイルのアクセス権設定
NginxがWordPressファイルにアクセスし、WordPress自身がテーマやプラグインを更新できるよう、適切なアクセス権を設定します。
sudo chown -R nginx:nginx /var/www/wordpress
sudo find /var/www/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/wordpress -type f -exec chmod 644 {} \;
2.3. ファイアウォールの設定
CentOS 7のFirewallDでHTTP/HTTPSトラフィックを許可します。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
2.4. WordPressのセットアップ完了
ブラウザでhttp://your_server_ip_or_domain.comにアクセスします。WordPressの初期設定画面が表示され、サイトのタイトル、管理者アカウントの作成などを指示に従って行います。これでWordPressサイトの構築は完了です。