はじめに
ConoHa VPS でWordpress ブログをデプロイしたので、その手順を記録する。
テーマのGitHubリポジトリ ← 使ったテーマのGitHubリポジトリです。
0.サーバ作成
SSHキーで登録済みキーを利用の場合
- ConoHaの[セキュリティ]>[SSHキー]に公開鍵を追加しておく(以下鍵A)
- 秘密鍵Aが1回だけダウンロードできるのでする
- 秘密鍵AをローカルPCの C:\Users\ユーザー名.ssh に置く
- サーバ作成時に登録済みキーで公開鍵Aを選択
SSHキーで新規キー登録の場合
- 作成時に新規キー登録を選択
- 秘密鍵が1回だけダウンロードできるのでする(以下鍵A)
- ConoHaの[セキュリティ]>[SSHキー]に公開鍵Aが自動で追加される
- 秘密鍵AをローカルPCの C:\Users\ユーザー名.ssh に置く
今回はサーバ作成時にSSHKey利用しているので、パスワードでのSSH接続ができない仕様になっているはずである。
1.ドメイン取得
ムームードメインで初めてドメイン取得をする場合は認証の作業があるが、メールで送られてくる認証方法に従う。認証完了まで1~2日かかる可能性があるので、先にやっておくと楽である。
以下の画像のようにドメイン名登録をする。
AとBはあらかじめ設定されていて、Cは自分のIPアドレス(XXX.XXX.XXX.XXX)を入力して保存する。
ムームードメインの[ドメイン管理]>[ドメイン操作]>[ネームサーバ設定変更]に上記画像のAとBを入力して保存。
しばらくするとドメイン名とIPアドレスが紐づく。
2.SSH接続
今回はコマンドプロンプトからSSH接続をする。
秘密鍵が C:\Users\ユーザー名.ssh にあることを確認する。以下の画像のように .ssh に config というファイルを作り編集。
※ 一般ユーザは以降の工程で作る。
※ Host のところは任意の単語を設定。
ssh c_root
rootでSSH接続できる(コマンドプロンプトのどのディレクトリでやってもよい)。
接続の際yes/noの質問が出てくるのでyesとする。
エラーの可能性
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! が出ることがあるが、自分の場合は .ssh に known_hosts と known_hosts.old というファイルがあったのでファイル内の記述を全て削除すると解決した。
3.一般ユーザーでSSH接続する
root でSSH接続した状態で一般ユーザを作る。
adduser 一般ユーザ名
# 任意のパスワードを入力、Full Name ~ Other までEnter、最後にyで作成
gpasswd -a 一般ユーザ名 sudo
# 一般ユーザにsudo権限を与える
次に /home/一般ユーザ名/.ssh/authorized_keys に公開鍵Aを貼りに行く。
※ 公開鍵Aは 0.サーバ作成 の公開鍵Aのこと
cd /home/一般ユーザ名
mkdir .ssh
cd .ssh
touch authorized_keys
vim authorized_keys
# 公開鍵A(ssh-rsaで始まる)を全部コピーして貼る。
vimコマンド
iで編集(インサートモード)、ESCで編集完了、:wqとEnterで戻る。
:qとEnterで編集せずに戻る。
次に一般ユーザに権限を与える。
知識不足で難しかったが、参考記事(conoha vpsの一般ユーザのssh接続でつまづいた話)を真似させていただき切り抜けた。
cd /home/一般ユーザ名
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
chown 一般ユーザ名:一般ユーザ名 .ssh
chown 一般ユーザ名:一般ユーザ名 .ssh/authorized_keys
logout
ssh c_一般ユーザ名
# c_一般ユーザ名 は、config の Host に書いた任意の単語
一般ユーザでSSH接続完了。
4.Ubuntuの準備
一般ユーザSSH接続状態で続ける。
ここからは参考動画(How to install and Configure WordPress in Ubuntu 22.04 | 20.04)を参考に進めたが、一部自己判断で実行しなかったコマンドもある。
Apache をインストールする。
sudo apt update
# sudo apt upgrade
sudo apt install apache2
sudo systemctl status apache2 # 緑文字の active running が表示
sudo systemctl is-enabled apache2 # enabled が表示
# sudo systemctl enable apache2 # 上のコマンドでenabled でなかった場合に入力
ip addr | grep inet # 自分のIPアドレスが表示
「#」の部分は実行しなかった。
この時、自分のIPアドレスを検索するとApache のデフォルトページが確認できる。Ubuntu の場所で言うと /var/www/html/index.html になる。後で index.html は消す。
以下のコードは動画ではなく参考記事(ConoHa VPSのUbuntu 20.04にWordPress公開環境を構築する方法を解説)を参照させていただいた。
ファイアウォールの設定をする。
sudo ufw status # 状況確認
sudo ufw default deny # すべての通信を拒否
sudo ufw allow 22/tcp # 許可
sudo ufw allow 80/tcp # 許可
sudo ufw allow 443/tcp # 許可
sudo ufw enable
sudo ufw status
最終的には3つのポートが v4 と v6 で2個ずつ空いている状態になるようである。
動画に戻ってMariaDBをインストールする。
sudo apt install mariadb-server mariadb-client
sudo systemctl status mariadb.service
sudo systemctl is-enabled mariadb.service
sudo mysql_secure_installation
sudo mysql -u root
2行目でMariaDB の動作状況が表示される。q でコンソールに戻れる。
4行目でパスワードを聞かれたら Enter を押す。6つほど質問されるので nnyyyy とする。
5行目でMariaDB に入れる。exit で抜けられる。
phpをインストールする。
sudo apt install php libapache2-mod-php php-mysql
sudo systemctl restart apache2
sudo vim /var/www/html/info.php
# vim で info.php に <?php phpinfo(); ?> を書き込む。
XXX.XXX.XXX.XXX/info.phpで検索すると /var/www/html/info.php の内容が表示される。
phpMyAdmin をインストールする。
sudo apt install phpmyadmin
sudo systemctl reload apache2.service
インストールの設問は、Apache、yes、任意のパスワードを2回とする。
動画によると XXX.XXX.XXX.XXX/phpmyadmin で接続できるはずであったが、自分の場合はできなかった。一応 DB はコンソールからも見られる。
ファイアウォールの設定。
sudo ufw allow 'Apache Full'
sudo ufw status
5.WordPressをインストールする
インストール、解凍、/var/www/html 配下に移動させる。
cd /var/www/html
sudo wget -c http://wordpress.org/latest.tar.gz
sudo tar -xzvf latest.tar.gz
sudo mv wordpress/* /var/www/html
権限関係の設定をする。
sudo chown -R www-data:www-data /var/www/html
ls -l /var/www/html
# sudo chown -R 775 /var/www/html
1行目でwww-dataというApacheのユーザに、/var/www/html以下のファイル全ての編集権限を与えている。これをしないとWordPressが使えないそうである。
2行目で確認。
3行目のコードは動画で実行されていたが、今回の場合はそうするとテーマがアップロードできなくなった。間違って実行してしまったときは再度1行目を実行する。
6.DB作成
sudo mysql -u root -p
# パスワードを聞かれたらEnter
SHOW DATABASES;
CREATE DATABASE データベース名;
CREATE USER 'ユーザ名'@'%' IDENTIFIED BY 'パスワード';
GRANT ALL PRIVILEGES ON *.* TO 'ユーザ名'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
データベース名、ユーザ名、パスワードは任意。
※ その他、動画で実行していたが自分はしなかったコード
- nautilus…のインストール
Ubuntuのファイルを、vim を使わずUIで視覚的に操作できるもののようである。 - wp-config-sample.php を wp-config.php に名前変更
今回の場合変更したところ WordPress の設定中に「wp-config-sample.php がない」とエラーが出たので戻した。 - /etc/apache2 配下に conf を自作、000- のものを disable する
よくわからなかったので未実行。
8.WordPressの設定
sudo rm /var/www/html/index.html
index.html を削除すると、XXX.XXX.XXX.XXX で WordPress 開始ページを確認できる。
もし WordPress の設定途中で wp-config-sample.php を自作してコードを書き込むよう指示されたら、以下のように vim で書き込む。
sudo vim wp-config-sample.php
データベースの情報は、さきほど 6.DB作成 で入力したデータベース名、ユーザ名、パスワードである。localhost と wp_ の部分はそのままにする。
9.権限関係で試したこと
作業の途中で、しばらく WordPress の自作テーマをアップロードできないことがあった。
おそらく原因は 5.WordPressをインストールする の sudo chown -R 775 /var/www/html を実行していたことであるが、わからない間に以下のようなことを試した。本来不必要な編集であると考えられるので、次回以降は行わない。
sudo vim apache2.conf
# <Directory /var/www/> 部分を以下のように編集
# <Directory /var/www/>
# Options Indexes FollowSymLinks
# AllowOverride All
# Require all granted
# </Directory>
sudo systemctl restart apache2
# sudo chmod 755 .htaccess
# .htaccessがどこにあるかわからず諦めた
sudo a2enmod rewrite
sudo systemctl restart apache2
sudo find /var/www/html -type f -exec chmod 664 {} \;
sudo find /var/www/html -type d -exec chmod 775 {} \;
10.SSL化
こちらの記事(certbotでSSL証明書を発行するまで)を参考にさせていただいた。
sudo apt update
sudo apt install snapd
sudo snap install hello-world
hello-world
sudo snap install core; sudo snap refresh core
sudo apt-get remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --apache
# 最後にSSL化したいドメイン名を入力
こののち SSL を自動化するスクリプトを書く予定である。
おわりに
ローカルの開発ばかり行っていたので、サーバを使ってみてとても勉強になった。
WordPress をオススメしてくださった先輩 I さん、デプロイをサポートしてくださったインターン先の上司 K さん、アドバイス・サポートいただき本当にありがとうございました。
参考にさせていただいた記事
- VPSスタートアップガイド
※ VPSスタートアップガイドではCentOSを利用しているので、Ubuntuコマンドと差異があります。- Ubuntuでユーザを作成する方法(adduser)
- conoha vpsの一般ユーザのssh接続でつまづいた話
- How to install and Configure WordPress in Ubuntu 22.04 | 20.04
- ConoHa VPSのUbuntu 20.04にWordPress公開環境を構築する方法を解説
- ConoHa VPS で WordPress環境を構築してみる
※ これもCentOS- certbotでSSL証明書を発行するまで