MENU

【VPS構築記・第1日目】ConoHa VPSでWordPressを立ち上げ、SWELLを導入するまでの全記録とエラー解決法

VPSとWordPressを立ち上げる記事のアイキャッチ

今回は、レンタルサーバーではなく「ConoHa VPS」を使い、黒い画面(ターミナル)と格闘しながらゼロからWordPress環境を構築した記録をまとめました。

人気のWordPressテーマ「SWELL」を導入する際に直面した「容量オーバーでアップロードできないエラー」の解決法も詳しく解説しているので、これからVPSでWordPressを立ち上げる方の参考になれば嬉しいです!

【今回の構築環境】

  • サーバー:ConoHa VPS
  • OS:Ubuntu
  • Webサーバー:Nginx
  • プログラム:PHP 8.5
  • データベース:MariaDB(MySQL互換)
  • テーマ:SWELL
目次

1. 【超重要】VPSの初期セキュリティ設定

VPSを契約した直後は「root(全権限を持つ危険なユーザー)」で「パスワードさえ分かれば誰でもログインできる」という無防備な状態です。まずはここを徹底的に防御します。

① 新しいユーザーの作成と権限付与

まずはrootユーザーでログインし、普段使いするための新しいユーザー(ここでは username とします)を作成し、管理者権限(sudo)を与えます。

# 新しいユーザーを作成する
adduser username

# 作成したユーザーに管理者権限(sudo)を付与する
usermod -aG sudo username

② SSH鍵(公開鍵)の新しいユーザーへの移行

今のままだと、新しいユーザーは「パスワード」でしかログインできません。より安全な「公開鍵認証(鍵ファイルを使ったログイン)」ができるように、rootユーザーが持っている鍵の情報を新しいユーザーにコピーしてあげます。

# 新しいユーザーの場所に「.ssh」という隠しフォルダを作成
sudo mkdir /home/username/.ssh

# rootユーザーの鍵ファイル(authorized_keys)をコピーする
sudo cp ~/.ssh/authorized_keys /home/username/.ssh/

# コピーしたフォルダとファイルの「所有者」を新しいユーザーに変更する
sudo chown -R username:username /home/username/.ssh

# 他人が勝手に見られないように、正しい権限(パーミッション)を設定する
sudo chmod 700 /home/username/.ssh
sudo chmod 600 /home/username/.ssh/authorized_keys

③ SSHのセキュリティ強化(ポート変更・パスワード禁止)

鍵の移行が完了したら、ハッカーの攻撃をシャットアウトするために「SSHの設定ファイル」を書き換えます。


# SSHの設定ファイルを開く
sudo nano /etc/ssh/sshd_config

ファイルの中から以下の3箇所を探し、書き換えます(前に # がある場合は消してください)。

  1. ポート番号の変更: Port 22 ⇨ Port 12345(任意の番号)
  2. rootログインの禁止: PermitRootLogin yes ⇨ PermitRootLogin no
  3. パスワードログインの禁止: PasswordAuthentication yes ⇨ PasswordAuthentication no

# SSHを再起動して設定を反映させる
sudo systemctl restart ssh

これで、「自分が作ったユーザー」+「秘密鍵ファイルを持っているパソコン」からしか絶対にログインできない要塞になりました!

④ ファイアウォール(UFW)の設定とポート開放

最後に、外部からの通信を制限します。Webサイトを表示するためのポートと、先ほど変更した新しいSSH用のポート(例: 12345 番)だけを開放します。

# 基本的な通信をすべて遮断(セキュリティの基本)
sudo ufw default deny incoming

# サーバーの中から外へ出る通信は許可
sudo ufw default allow outgoing

# 変更した新しいSSHポート(例: 12345)を許可
sudo ufw allow 12345/tcp

# Webサイトを表示するためのポート(HTTPとHTTPS)を許可
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# ファイアウォールを起動(有効化)
sudo ufw enable

これで、次回からの安全なログインコマンドは以下のようになります。

ssh -p 12345 username@123.45.67.89

2. Webサーバー・PHP・データベースの構築

セキュリティが固まったら、WordPressを動かすための土台(LEMP環境)を作っていきます。

① 必要なソフトウェアの一括インストール

Ubuntuのシステムを最新状態にしてから、Nginx(Webサーバー)、MariaDB(データベース)、PHP(プログラム)をまとめてインストールします。

# パッケージ一覧を最新にする
sudo apt update && sudo apt upgrade -y

# Nginx、MariaDB、PHP本体と関連モジュールを一気にインストール
# ※環境に合わせてPHPのバージョン(ここでは8.5)は変更してください
sudo apt install nginx mariadb-server php8.5-fpm php8.5-mysql -y

② WordPress用データベースの作成

インストールしたデータベース(MariaDB)に入り、WordPress専用のデータベースと、それを操作するユーザーを作成します。

# データベースの管理画面にログイン
sudo mysql

ここからはSQL(データベースへの命令)を入力します。

-- ①「wordpress_db」という名前のデータベースを作成
CREATE DATABASE wordpress_db DEFAULT CHARACTER SET utf8mb4;

-- ②「wp_user」というユーザーを作り、パスワードを設定(your_passwordの部分を変更)
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'your_password';

-- ③ 作成したデータベースに対するすべての権限をユーザーに与える
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_user'@'localhost';

-- ④ 設定を反映させる
FLUSH PRIVILEGES;

-- ⑤ データベース管理画面から退出する
EXIT;

3. WordPressのダウンロードと配置

土台ができたので、いよいよWordPress本体をサーバーにダウンロードして配置します。

# 日本語版の最新WordPressをダウンロードする
wget https://ja.wordpress.org/latest-ja.tar.gz

# ダウンロードした圧縮ファイルを解凍する
tar -xzvf latest-ja.tar.gz

# 解凍した「wordpress」の中身を、Webサーバーの公開フォルダに丸ごと移動する
sudo mv wordpress/* /var/www/example.com/

# Nginxがファイルにアクセスできるように、フォルダの「所有権」を変更する
sudo chown -R www-data:www-data /var/www/example.com

4. サイトのSSL化(https化)

サイトを安全に表示するため、「Let’s Encrypt」という無料の仕組みを使って通信を暗号化します。

# 全自動設定プログラム(Certbot)のインストール
sudo apt install certbot python3-certbot-nginx -y

# SSL証明書の発行とNginxへの自動設定を実行
sudo certbot --nginx -d example.com

画面の指示に従ってメールアドレス等を入力するだけで、あっという間にアドレスバーに「鍵マーク」が付きました!

5. WordPressのセキュリティと初期設定

ブラウザでサイトにアクセスし、WordPressの初期設定画面で先ほど作成したデータベース情報(DB名、ユーザー名、パスワード)を入力してインストールを完了させます。

その後、記事を書く前に必ず以下の初期設定を行いました。

  1. パーマリンクの設定: 「設定」>「パーマリンク」から、SEOに強い「投稿名」に変更。
  2. 初期データの大掃除: 最初から入っている「Hello world!」などのテスト記事や、不要な初期プラグインを削除。
  3. ログイン画面の隠蔽: 「SiteGuard WP Plugin」を導入し、ハッカーに狙われやすい /wp-admin のログインURLを自分だけのオリジナルの文字列に変更しました。

6. 【山場】SWELL導入時のアップロードエラーと解決法

WordPressの土台が完成し、いざ大人気の有料テーマ「SWELL」をアップロードしようとしたところ、大きな壁にぶつかりました。

エラー①:「413 Request Entity Too Large」

SWELLの親テーマ(zipファイル)をアップロードすると、画面にデカデカとこのエラーが…。 これは、Nginx(Webサーバー)が「初期設定では1MB以上のファイルは通さない!」とブロックしているのが原因でした。

【解決法】Nginxの設定ファイルを編集する

# ご自身のドメイン名がついた設定ファイルを開く
sudo nano /etc/nginx/conf.d/example.com.conf

ファイルを開き、server_name の下の行に制限を50MBに引き上げる設定(client_max_body_size 50M;)を追記します。

server {
  server_name example.com;

  # ↓この1行を追加してアップロードの上限を50MBに引き上げる
  client_max_body_size 50M;

  root /var/www/example.com;
}
# 保存して閉じた後、Nginxを再起動して設定を反映
sudo systemctl restart nginx

エラー②:「アップロードされたファイルが php.ini の upload_max_filesize を越えています」

Nginxのゲートを開けたのに、またエラー!今度は「PHP」側の初期設定(2MB制限)に引っかかっていました。

【解決法】WordPressディレクトリに.user.iniを作成する 長い設定ファイルを探すのは大変なので、WordPressのフォルダに「容量アップの呪文」を書いたファイルをコマンドでポンッと作って解決しました。以下のコマンドを1行ずつ実行します。

# アップロードの最大サイズを50MBにする設定をファイルに書き込む
echo "upload_max_filesize = 50M" | sudo tee /var/www/example.com/.user.ini

# データの送信最大サイズも50MBにする設定を追記する
echo "post_max_size = 50M" | sudo tee -a /var/www/example.com/.user.ini

# PHPを再起動して設定をすぐに反映させる(バージョンは環境に合わせて変更)
sudo systemctl restart php8.5-fpm

これで、すべての制限が解除され、無事にSWELLの親テーマ・子テーマの両方をインストールできました!

おわりに

ボタン一つでWordPressが作れるレンタルサーバーと違い、VPSでの構築は黒い画面(コマンド)との戦いでしたが、その分「サーバーの仕組み」がすごくよく理解できました。

同じようなエラーでつまずいている方の参考になれば幸いです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次