CentOS 7上でLEMPスタックとWordPressを構築する

本記事では、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サイトの構築は完了です。

タグ: centos7 nginx MariaDB php-fpm WordPress

8月26日 22:53 投稿