VPSにLAMP環境を構築しWordPressでブログを開設
はじめに
電気通信大学MMA1年のraaaです。MMA Advent Calendar 2025 の19日の記事は私より書かせていただきます。前回はtake37さんの記事でした。競プロはいろいろな所で応用されているのですね。
ブログやりたい!!!!!からの勢いでWordpressの環境構築をした時の手順を備忘録を兼ねて書いてます。ネットワークとかデータベースとか色んなものを一つの記事にまとめました。この記事も今回構築したWordpressで書いてます。
MMAについて
「コンピューターに関することなら何でもしよう」というスタンスで活動しているサークルです。協議プログラミングをしてる人、サーバー触ってる人、弊学のサークル棟のネットワークの管理をしている人…様々です。ツヨツヨの人がたくさ居て自分がいさせてもらって恐縮だ、と感じる場面もあります。けど、何かわからないことを部内チャットツールのSlackで質問したら丁寧に教えてくれます。私は「Atcoder Beginer Contestのこの問題のここが分からん!!!」って感じで呟いて教えてくれる、というのを何度かやってます。この記事がMMAのネガティブキャンペーンにならないことを祈るばかり。
ちなみに、夏合宿では煙火消費保安手帳所持部員の監督のもと花火を上げてます。
「ブログのやり方」の選定
ソフト面
「サーバー関係の知識もついて、日本語の情報量も多い、ブログ向けの機能も豊富1」ということで、VPSにWordpressの環境を作ることにしました。
はてなブログなどのSaaSを使う、AstroやHUGOで静的なサイトを作るといったことも考えられます。前者に関しては無料版では自分のドメインを使うことができないなど、制限が多いので止めました。ていうか何よりロマンがない。後者は学習コストが高そう、情報が少なそうというのでやめました。Web系の経験がないので。なにより、ブログを書くためにVSCodeやgitとにらめっこするのは心理的ハードルが高いと思いました。
ただ、この記事を書いていてもwysiwygエディタあるあるのマウスと格闘するイベントが発生したので一長一短だと思います。
ハード面
自宅サーバーは安全にインターネットに開放するのが難しそう、ブレーカーをよく落としてしまうとかいう問題で選択肢から消えました。(ちなみにMMAには自宅サーバーをしている部員もいます。僕もいつかは挑戦したいです。)
VPSは価格で決めました。100GBのSSDが使えて550円/月のKagoya Cloud VPS1にしました。
スナップショットを作るのに課金が必要なのが不満です。(これって他社は無料で作れるんですかね)
VPSのインスタンス作成~SSHでログイン
スペックの設定
特に難しくはなかったです。CPUのコア数とかOSを選ぶという感じ。CPUは1コア、メモリは1GB、OSは大学の授業でも使ってるという理由でUbuntuにしました。Wordpressがより高速に動くKusanagiというのもあるそうです。
「ログイン用認証キー」の設定
公開鍵認証でSSHを使うための設定です。名前とかは適当に入れて「登録」を押したら、秘密鍵が書かれたファイルがダウンロードされます。これをC:\Users\Username\.sshに配置します。同じディレクトリに"config"という名前のファイルを以下の内容で作成(追記)します。
Host vps
HostName (インスタンスのIPアドレス)
IdentityFile ~/.ssh/(さっきの秘密鍵ファイル名)
User (ユーザー名、デフォルトはubuntu)そして、PowerSellかコマンドプロンプトで
ssh vpsと入力します。これで作ったインスタンスにsshできました。
このあたりのことは、過去に先輩が教えてくださったので難なくできました。
ドメインの設定
ドメイン関係はCloudflare Registerを使いました(MMAでお勧めされました)。ドメインを買うところは省略します。DNS Recordsの画面に行き以下の内容でAレコードを2個追加しました。
| Type | A |
| Name | @ |
| IPv4 address | VPSの管理画面に出ているIPアドレス |
| Proxy status | オン |
| Type | A |
| Name | www |
| IPv4 address | VPSの管理画面に出ているIPアドレス |
| Proxy status | オン |
この内容で保存します。
Apacheの設定
ここからはLAMP環境2を構築していきます。
インストール
ここから先の内容はあらかじめWSL上でリハーサルしておきました。
sudo apt -y update
sudo apt -y upgrade
sudo apt -y install apache2
sudo systemctl start apache2
sudo systemctl enable apache2 # サーバー再起動時に自動起動させる-yというのは「自動Yes」するオプションです。この段階でブラウザのアドレスバーにhttp://(ドメイン名)と入れたら、こんなのが見えました。

SSL/TLS対応
このままでは通信が暗号化されていません。後々ブラウザの画面からwordpressのパスワードを設定するので先にSSL対応を済ませました。

「CloudflareでTLS対応させる」には4種類あります。それぞれ以下の通りです。私はFull(Strict)を選択しました。
| モード | ブラウザ⇔Cloudflare | Cloudflare⇔オリジンサーバー3 |
| Full(Strict) | TLS✅ | TLS✅(正規の証明書が必要) |
| Full | TLS✅ | TLS✅(オレオレ証明書可) |
| Flexible | TLS✅ | TLS無し |
| Off | TLS無し | TLS無し |
ブラウザ⇔CloudflareはFlexible以上の場合Cloudflareが(私が何も考えなくても)やってくれますが、Full(Strict)を使いたい場合は、Cloudflare⇔オリジンサーバーはオリジンサーバーにCloudflare Origin Certificate4をインストールしなければなりません。
手順は90%この記事のままやったのでそっちを参照してください。
PHPのインストール
sudo apt -y install php libapache2-mod-php php-mysql php-mbstring php-gd php-imagick左から順にphp本体、apacheとphpをつなぐモジュール、phpとMySQLをつなぐモジュール、下記で使うテーマで必要と言われたモジュール、phpで画像を扱うためのモジュールx2です。インストール後に設定は不要です。
PHPとMySQLのインストール&データベース作成
インストール
sudo apt -y install mysql-serverで、MySQLをインストールします。
MySQLのセキュリティ設定
sudo mysql_secure_installationで、MySQLのセキュリティの設定をします。脆弱性になりかねない部分は無効にしました。
Would you like to setup VALIDATE PASSWORD component?
パスワードの強度をチェックするかの設定です。noでいいそうですがyesにしちゃった。
Remove anonymous users?
匿名ユーザーがMySQLにログインを許可するか。no
Disallow root login remotely?
yes
Remove test database and access to it?
yes
Reload privilege tables now?
yes
WordPress用のユーザーとデータベースの作成
過剰な権限を持つユーザーがMySQLを操作させるのは良くないので、Wordpress用のユーザーを作ります。
sudo mysqlでMySQLのプロンプトを開きます。以下はMySQLのプロンプト内での操作です。
CREATE DATABASE wordpress;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'wppassword';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;それぞれ
- “wordpress"という名前のデータベースの作成
- WordPress用のユーザーの作成
- wpuserがwordpressに対してすべての操作をできるようにする
ということです。
WordPressのダウンロード
CREATE DATABASE wordpress;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'wppassword';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;www-dataというのはapacheを動かしているユーザーです。
次にブラウザで https://ドメイン/wordpress を開きます。Wordpressへようこそ的なのが出てくるはずです。

さっき、MySQLに設定した奴を入力します。次に送信→インストール実行と押せば進みます。
管理画面が出てきたら完了です!

テーマとプラグインのインストール
標準のテーマでも良いですが、今回はLuxeritas というテーマを使います。GUIの管理画面から設定できるので特に難しくはなかったです。
標準のコードブロックがシンタックスハイライトに(多分)対応していないのでHighlighting Code Blockというプラグインを入れました。管理画面から検索して入れれます。
ハマったポイント
ファイルがデカすぎでアップロードできない
私の場合、Luxeritasをインストールするときに、ファイルが大きくアップロードに失敗しました。
アップロードできる上限サイズを変更するには/etc/php/8.3/php.iniを編集します。
upload_max_filesize = 32Mのように大きめの容量を設定しました。
Luxeritas入れたらエラーが出る!!
php-mbstringというモジュールが必要でした。
記事に画像を張れない!
これは結構大変でした。ChatGPTに聞いたところphp-gdというモジュールが必要では?と指摘されました。しかし、インストールしても解決しない??????何故だ????
phpの設定ファイルを開示しろとChatGPT先生に言われたので/etc/phpを見ていると
$ ls /etc/php
5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3 8.4 8.5なんでこんなにいっぱいあるんだろう、もしかしてphpのバージョンの問題?思って確認してみたら、
$ php -v
PHP 8.1.33 (cli) (built: Jul 3 2025 16:16:18) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.33, Copyright (c) Zend Technologies
with Zend OPcache v8.1.33, Copyright (c), by Zend Technologies
シェルが認識しているphpとWordpressが使ってるphpのバージョンが一致してませんでした。そこで、sudo apt install php8.3-gd という風にバージョンを指定してインストールしたらうまくいきました。
手元のWSLではphp8.3しか入ってなかったので、KagoyaのUbuntuのイメージにいっぱい入ってたのですかね?よく分らん。
感想
慣れないサーバーの操作で大変でした。今後はメールサーバーとか動かしてみたいと思ってます。
記事を書いていて思ったのですが、Windowsのリコール機能が便利。何やってたかを振り返えれます。
参考文献
https://qiita.com/office_porco/items/196d0871d68ff8b9d1e3
https://qiita.com/yuu1111main/items/2ab2b86f9fa4e24a0a8b
https://qiita.com/yuu1111main/items/77976d7ece0ecfb35157
https://developer.wordpress.org/advanced-administration/before-install/howto-install/
ゼロからわかるLinuxサーバー超入門Ubuntu対応版
次回予告
明日はsadatchさんの記事です。楽しみです!