【ConoHa VPS】WordPressサーバーを構築する完全ガイド

レンタルサーバーの共有環境では物足りなくなってきたとき、VPSへの移行を検討する人は多い。ConoHa VPSはコスパと操作性のバランスが良く、国内VPSとして選ばれやすい選択肢だ。

このガイドでは、ConoHa VPSにNginx + PHP-FPM + MariaDBの構成でWordPressを構築する手順を一通りまとめる。

想定環境

  • ConoHa VPS(メモリ1GB〜)
  • OS: Ubuntu 22.04 LTS
  • Webサーバー: Nginx 1.24
  • PHP: 8.3(PHP-FPM)
  • DB: MariaDB 10.11
  • SSL: Let’s Encrypt(Certbot)
  • サーバーの初期設定

    一般ユーザー作成と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)を開いて、以下の項目を変更する:

  • `PermitRootLogin` を `no` に設定する
  • SSHキー認証のみにする場合は `PasswordAuthentication` も `no` に設定する
  • 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の追加チューニングも検討してみてほしい。