【ConoHa VPS】WordPressサーバーを構築する完全ガイド
レンタルサーバーの共有環境では物足りなくなってきたとき、VPSへの移行を検討する人は多い。ConoHa VPSはコスパと操作性のバランスが良く、国内VPSとして選ばれやすい選択肢だ。
このガイドでは、ConoHa VPSにNginx + PHP-FPM + MariaDBの構成でWordPressを構築する手順を一通りまとめる。
想定環境
サーバーの初期設定
一般ユーザー作成とSSH設定
rootで直接作業するのはセキュリティ上よくない。まず一般ユーザーを作成してsudo権限を付与する。
# rootでログイン後
adduser nakano
usermod -aG sudo nakano
# SSHキーをnakanoユーザーにコピー
mkdir -p /home/nakano/.ssh
cp ~/.ssh/authorized_keys /home/nakano/.ssh/
$ chown -R nakano:nakano /home/nakano/.ssh
$ chmod 700 /home/nakano/.ssh
$ chmod 600 /home/nakano/.ssh/authorized_keys
ファイアウォール設定
# UFWで必要なポートのみ開放
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
sudo ufw status
SSHのroot直接ログインを無効化
sshd_configファイルをテキストエディタで開く。
SSHの設定ファイル(sshd_config)を開いて、以下の項目を変更する:
sudo systemctl restart sshd
Nginxのインストールと設定
sudo apt update
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
WordPress用のNginx設定
Nginxのサイト設定ファイルをテキストエディタで作成する(sites-available ディレクトリ内)。
server {
listen 80;
server_name obaba-win.com www.obaba-win.com;
root /var/www/obaba-win.com;
index index.php index.html;
# WordPress パーマリンク対応
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP-FPM連携
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
# .htaccessは無視(Nginxでは不要)
location ~ /\.ht {
return 403;
}
# アップロードファイルのPHP実行を禁止(セキュリティ)
location ~* /uploads/.*\.php$ {
return 403;
}
# 静的ファイルのキャッシュ
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
client_max_body_size 64M;
}
作成した設定ファイルを sites-enabled にシンボリックリンクし、nginx -t で設定をテストしてからリロードする。
PHP-FPMのインストール
sudo apt install -y php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd \
php8.3-mbstring php8.3-xml php8.3-zip php8.3-intl php8.3-imagick
PHP設定の調整
PHP-FPMの設定ファイル(php.ini)をテキストエディタで開く。
WordPressでよく変更する設定:
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
sudo systemctl restart php8.3-fpm
MariaDBのインストールとWordPress用DB作成
sudo apt install -y mariadb-server
sudo mysql_secure_installation # 初期セキュリティ設定
sudo mysql -u root -p
MariaDBのプロンプトで以下を順番に実行する:
1. 「wordpress」という名前のデータベースを作成(文字コードは utf8mb4)
2. 「wp_user」というDBユーザーを作成し、パスワードを設定
3. 作成したユーザーにwordpressデータベースの全権限を付与
4. 権限を反映させるコマンドを実行
5. MariaDBプロンプトを終了
WordPressのインストール
# Webルートディレクトリを作成
$ sudo mkdir -p /var/www/obaba-win.com
# WordPress最新版をダウンロード
cd /tmp
curl -O https://ja.wordpress.org/latest-ja.tar.gz
tar xzf latest-ja.tar.gz
$ sudo cp -r wordpress/* /var/www/obaba-win.com/
# 権限設定
$ sudo chown -R www-data:www-data /var/www/obaba-win.com
$ sudo find /var/www/obaba-win.com -type d -exec chmod 755 {} \;
$ sudo find /var/www/obaba-win.com -type f -exec chmod 644 {} \;
wp-config.phpの設定
cd /var/www/obaba-win.com
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wp_user' );
define( 'DB_PASSWORD', 'your_strong_password' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
// セキュリティキー(https://api.wordpress.org/secret-key/1.1/salt/ で生成)
define( 'AUTH_KEY', '...' );
define( 'SECURE_AUTH_KEY', '...' );
// ...
SSL証明書の設定(Let’s Encrypt)
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d obaba-win.com -d www.obaba-win.com
Certbotが自動でNginx設定を更新してHTTPS対応にしてくれる。証明書は90日ごとに自動更新される。
# 自動更新の確認
sudo certbot renew --dry-run
動作確認
# 各サービスの状態確認
sudo systemctl status nginx
sudo systemctl status php8.3-fpm
sudo systemctl status mariadb
# Nginxのアクセスログ確認
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
ハマりやすいポイント
try_files の設定ミス: WordPressのパーマリンクが404になる場合、try_files $uri $uri/ /index.php?$args; の ?$args の部分が抜けていることが多い。
PHPのソケットパス: fastcgi_passに指定するPHP-FPMのソケットファイルのパスはPHPバージョンによって変わる。PHPのバージョンに合ったパスを確認して設定する。
パーミッション: www-data が書き込めないと画像アップロードが失敗する。wp-content/uploads/ ディレクトリのオーナーを確認する。
MariaDB文字コード: utf8mb4 を指定しないと絵文字が保存できない。DBとwp-config.phpの両方を確認する。
まとめ
ConoHa VPSにWordPressを構築する手順をまとめた。
共有サーバーと比べてセットアップの手間はかかるが、サーバー設定を自由に変えられる点は大きなメリットだ。特にNginxのキャッシュ設定やPHPのチューニングを細かく調整できるので、表示速度の最適化においては共有サーバーとは次元の違う結果を出せる。
本記事の設定をベースに、Redis(オブジェクトキャッシュ)やPHP OPcacheの追加チューニングも検討してみてほしい。