はじめに
サークルの先輩に Conoha VPS をオススメされたにもかかわらず格好つけて AWS を使い続けた結果、無料利用枠外の RDS を利用して多額の請求が来た。
これを機に Conoha VPS に乗り換える。
前々から WordPress でブログをやりたかったので、ローカルで HTML、CSS、php を使ってページを自作、デプロイに至った。
決して CSS が好きというわけでは全然なく、楽にCSSできる bootstrap を勉強したいと思っている。
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.ドメイン取得
ムームードメイン初回取得の場合は認証作業があるが、メールで送られてくる認証方法の通りすればOK。
認証完了まで1~2日かかる可能性があるので先にやっておくと楽。
以下の画像のようにドメイン名登録。
AとBはあらかじめ設定されている。Cは自分のIPアドレス(XXX.XXX.XXX.XXX)を入力して保存。
ムームードメインの[ドメイン管理]>[ドメイン操作]>[ネームサーバ設定変更]に上記画像のAとBを入力して保存。
しばらくするとドメイン名とIPアドレスが紐づく。
2.SSH接続
今回はコマンドプロンプトを使用。
秘密鍵が C:\Users\ユーザー名.ssh にあることを確認する。
以下画像のように .ssh に config というファイルを作り編集。
※ 一般ユーザはこれから作る。
※ Host のところは任意の単語
ssh c_root
rootでSSH接続できる(コマンドプロンプトのどのディレクトリでやってもOK)。
接続の際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接続状態で続ける。
でも最悪 root でやっても、気を付けてやれば大丈夫かも。
root でやる場合はコマンド冒頭の sudo 不要。
ここから参考動画(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
sudo systemctl is-enabled apache2
# sudo systemctl enable apache2
ip addr | grep inet
「#」の部分は実行しなかった(それでどんな不具合が出るか出ないかも知らず…)。
4行目で緑文字の active running ならOK。
5行目は enabled ならOK。
6行目は、5行目でもし万が一 enabled でなければ入力?
7行目で自分のIPアドレスが出ればOK。
この時点で、自分の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
status で状況確認、deny ですべての通信を拒否、22 と 80 と 443 を許可、最終的にはその3つのポートが v4 と v6 で2個ずつ空いている状態になるらしい。
私の場合は deny できなかった気がする…。
動画に戻って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回でOK。
動画によると 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 に名前変更
自分の場合変更したところ wp-config-sample.php がないと WordPress の設定中に言われたので戻した。 - /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 を自動化するスクリプトを書く予定。
おわりに
公開鍵認証の意味もよくわかっていない状態で始めたので、とても勉強になった。
またサーバという仮想PCを作って、それをローカルのコマンドプロンプトから操作できるのが面白いと思った。
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証明書を発行するまで