VPSで独自ドメインのサブドメインでWordPressを建てたメモ

作成日:2020/06/07 更新日:2020/06/16

BMW and more(デジタル)のインデックスページ
Mastodon(お一人様インスタンス)

人気ブログランキング

ブログランキング・にほんブログ村へにほんブログ村

PVアクセスランキング にほんブログ村

本当はマストドン建てたいのだけど

本当はお一人様マストドンを建てたい。しかしレンタルサーバーでは出来ないし自宅PCも固定IPじゃないし。ドメイン必要そうだけどわざわざドメイン取るのもコストかかるし。で、もともとレンタルサーバーで使用しているドメインのサブドメインをVPSにあててマストドンを建てようかと。実際にはなかなか厳しくマストドン関連の情報、ほとんどが2017年のもの。最近のものはほぼない。ということで最後はVPS側で準備してくれているスクリプトに頼ろうかと。ところが公式のスクリプトもエラー吐くとかw。ということでまだWordPressしか建っていないけどここまでのメモ。なお、参考にしたサイトは沢山あるものの全てを把握しきれていないのでそこはゴメンナサイ。

VPSの契約

もともとさくらのレンタルサーバーで運用しているのでほぼ自動的にさくらのVPSに。頑張ればさくらのレンタルサーバー+GMOのVPSとかも出来そうだけどまずはわかりやすいところから。2週間のお試しもあるし。

サーバーのスペック

ドメイン

以下のサイトを参照した。
ウェブとメールを別々のサーバで運営したい?・・・それ、ゾーン設定で出来ます! | さくらのナレッジ
もともとレンタルサーバーでbmw-and-more.infoというドメイン(本サイト)とdigital.bmw-and-more.info(ブログ)、car.bmw-and-more.info(ブログ)を運用している。これにmstdn.bmw-and-more.infoというサブドメインを追加しようという考え。やったことは先のサイトを参考にゾーン編集からエントリ名にmstdnを追加しただけ。種別はIPアドレスで値にはVPSのV4アドレスを入力。種別はCNAMEの方が後が楽みたいだがレンタルサーバーで運用しているサイトもあるし、今見直してみると@がレンタルサーバー側のIPアドレスを指しているからCNAME指定はやはり出来ない、で正解だった模様。ちなみにネームサーバーメニューの方にはレンタルサーバーで使用しているサブドメインが書いてある。このあたりはもっと知識が足りないな。

サーバーの起動

以下のサイトを参照した。
ネコでもわかる!さくらのVPS講座 ~第二回「サーバーをさわってみよう!」 | さくらのナレッジ
本当は標準OSでCentOS 8を選択→スタートアップスクリプトでマストドンを選択でマストドンが建つはずだったのだがスタートアップスクリプトでエラー(ffmpegがインストール出来なかったのかな?)で挫折。標準OSで立ち上げた後、他の人が作成したスクリプトを実行するもエラー。この世界、1年も経ったら情報が古い。しかたがないのでとりあえずWordPressを建てて見る事に。WordPressを建てる程度であればVMwareで何度も試せるのでそれ程難しくない。

話が先に進みすぎたのでサーバーの起動に戻すと、どうせスタートアップスクリプトでもマストドンが建たないのであれば最小構成でCentOSを建てようとISOイメージインストールへ。本来はここにCentOS 8のISOイメージがあるはずなのだが一度、標準インストールでCentOS 8を入れているからなのかISOイメージが見つからない。しかたないので自分でダウンロードしてあったISOイメージをアップロードしてそれを使用してインストール。ISOイメージのアップロードはWinSCP等で出来る。接続情報も画面に従って取得する(毎回変わるのかな?)。CentOSのインストール自体は説明を省略するけどネットワーク情報はVPSの管理画面に表示されるのでそれを使用。ネットワークアダプタの名前、画面や標準OSだとeth0だけどISOインストールだとens3になる。気にせずインストール。ダメならサポートから何か言ってくるだろ。ちなみにVMwareでインストールした時はens33だった。どうやって決まるのだろうか?あと、ネットワークはオンにしてインストール。オフだとローカルから接続できないし(ネットワークオフだから当然か)、最小構成なのでVPSの管理画面からのVNCもたぶん使えない。テキストコンソールはどうかなぁ…

サーバーが起動してPuTTY等で接続出来たら先程のサイトの説明の通りに(接続の手順も先程のサイトで説明されている)SSHでの直接接続を止めておく。サイトの説明と異なるのは一般ユーザーはISOインストールの場合、インストール時に作成出来るので作成していれば後からの作成は不要なのとパッケージ管理ツールがyumではなくdnfになっている、最小構成でインストールしたからなのかvimは入っていないのでviになる、といったことくらいか(今って実質vi=vimみたい)。

Webサーバー(Apache)のインストール

Webサーバーとしては最近はnginxが人気だしnginx+Apacheなんて構成もあるがとりあえずはApacheだけで建てる。建て方は以下のサイトを参照した。
ネコでもわかる!さくらのVPS講座 ~第三回「Apacheをインストールしよう」 | さくらのナレッジ
変更点としてはchmod 775 htmlは打たなかった。グループに書き込み権限必要か?それからテストファイルのアップロードもしていない。ドメイン関連は前に行っているので不要。

phpとDBのインストール

WordPressをインストールする前にphpとDBをインストールしておく必要がある。以下のサイトを参照した。
ネコでもわかる!さくらのVPS講座 ~第四回「phpとMariaDBをインストールしよう」 | さくらのナレッジ
phpはremiとかすっ飛ばして
dnf install php php-devel php-mbstring php-mysqlnd php-pdo php-gd php-json php-xml
でOK。php-jsonはないとWordPressのインストールが失敗したような。php-xmlはJetpackの有効化に必要な模様。

SSLモジュールのインストール

以下のサイトを参照した。
ネコでもわかる!さくらのVPS講座 ~第五回「phpMyAdminを導入しよう」 | さくらのナレッジ
このサイトはphpMyAdminのインストールがメインだがCentOS 8ではphpMyAdminは提供されていない(正確にはdnfでは提供されていない)ようなので諦め。すぐに必要になるものでもないし。ただ、SSLモジュールは他でも使うので。VMwareで試しているときにSSL関連が上手くいかなかったのだが原因としphpMyAdminを諦めてこのサイトをすっ飛ばしたらSSLもインストールされていなかったという落ちw。

SSL証明書のインストール

これまでの流れだとここでSSL証明書のインストールなのだがスタートアップスクリプトはOSの初期化を伴うしこういうのは後から入れたくなるので一旦すっ飛ばし。

WordPressのインストール

いよいよWordPressのインストールである。以下のサイトを参照した。
ネコでもわかる!さくらのVPS講座 ~第八回「WordPressサイトを公開しよう」 | さくらのナレッジ
変更点としては
wgetがインストールされていないのでインストールする。
wgetで引っ張ってくるアドレスはhttps://ja.wordpress.org/txt-download/からtarのアドレスをこぴーする。
WordPressのインストールディレクトリは/var/www/html/mstdn。
chmod -R g+w *は不要。
SELinuxはルート権限でsetenforce 0してからインストール。
インストールする際はドメイン/mstdn/にアクセス。
こんなところか。公開しているサーバーでSELinuxを完全に無効にするのは今の時代、ちょっと。それは方向性が違うよね。完全に有効のままでも出来そうではあるのだが結局、更新の際にはsetenforce 0が必要そうだしそこは妥協。記事の投稿、コメントの書き込みには支障がないので。プラグインの更新時はsetenforce 0した方がいいかも。そういった面ではVPSよりレンタルサーバーの方が楽なんだけど。それからディレクトリは/var/www/htmlを刺しているので後で直す。
CentOS7 SSL化(Apache、Let's Encrypt 使用) - Qiita
参考に/etc/httpd/conf/httpd.confに以下のように追記したはず。
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin root@bmw-and-more.info
DocumentRoot /var/www/html/mstdn
ServerName mstdn.bmw-and-more.info
</VirtualHost>

ここまででWordPressは建ちあがるはず。はず。はz…

(追記)
通常時、setenforce 1だとWordPressのサイトヘルスで問題ありとなってしまう。通信系でブロックされるものがある模様。SELinuxにルールを追加する必要がある。ルールの追加に関しては以下を参照した。基本はログからルールを作成する。通常はこれで何とかなる。これでもダメな場合はマニュアルで追加するかsetenforce 0で一時的に止める。以前に試したときはWordPressの更新はその都度ランダムな名前のファイルを作成するのでそれが引っかかってしまうのでsetenforce 0しないとダメだった。
Zabbix 4.0をCentOS 8にインストール(MySQL編) - Qiita
【SELinuxポリシー追加】audit2allowの使い方/ .teの書き方, make方法, .ppの内容確認方法│SEの道標
(ここまで)

SSL証明書のインストール

それから面倒くさそうなSSL証明書のインストールである。これなんかもレンタルサーバーだとボタン一つで出来るのだけど。以下のサイトを参照した。
ネコでもわかる!さくらのVPS講座 ~第六回「無料SSL証明書 Let’s Encryptを導入しよう」 | さくらのナレッジ
これが結構、嵌まる。まず
dnf install certbot python2-certbot-apache
が通らない。python2-certbot-apacheがないとなる。検索した結果、
Linux - Let'Encrypt実装中にpython2-certbot-apacheの導入で詰みました…|teratail
から
Certbot - Centosrhel8 Apache
へ辿り着き
dnf install certbot python3-certbot-apache
でインストール。
certbot --apache -d example.com
で設定なのだがexample.comを自分のサイトアドレスにするのを忘れないように。
crt.sh | Certificate Search
に取得してある証明書が表示されるのだが時間がかかる模様。
それから/etc/httpd/conf/httpd-le-ssl.confの
DocumentRootも/var/www/html/mstdnになっているか確認。これでhttps接続も出来るはず。はず。はz…

nginxをリバースプロキシとして入れる

nginxをリバースプロキシとして入れるのはVMwareではやったけどVPSではまだ。大量のアクセスがなければ必須ではないので。ただマストドンを建てる場合は必要だったはず。以下のサイトを参照。
Nginxのリーバスプロキシ化(Apacheと共存) - Qiita

結局、当初の目的は果たせていない

そんなこんなでWordPressのサイトは建ったが肝心のマストドンが建っていない。諦めてUbuntu使えば建ちあがるか?それとも他のVPS探すか?という状況なので今建っているWordPressサイトは一時的なもの。まあ、いい経験だったのでそのうちWordPressはレンタルサーバーからVPSへ移してもいいかも。

sshのポート番号を変更

一応、外部に公開しているサーバーなのである程度の管理はしなくてはならない。とりあえずはLogwatchを入れてみたのだがsshへの山のようなアクセス。1日で数千。まあパスワードをきちんと設定するとかrootでのsshログインを禁止するとかしておけばそうそう問題にはならないのだがこの数千の履歴がLogwatchで送られてくるのはたまらん。他の情報が埋もれてしまう。大事なのはログイン失敗の情報より成功の情報の方。Logwatchの設定で成功情報だけ取り出せるか検索してみたがどうも難しそう。それよりもsshのポート番号を変更した方が早そうである。ということで早速sshのポート番号を変更してみる。繋がらない。うーむ。firewallか。サービスのsshとWebサービス用の80とかは開いているが変更したsshのポート番号は開いていない。ポート番号を追加で使えるようになった。が、釈然としない。サービスとしてsshがあるのに何故個別にポート番号を追加せねばならないのか。サービスのsshでしているポート番号を変更するのが筋ではないか。ということでsshのポート番号を指定している箇所を/etc/firewalld配下で探す。ない。どこだ?

検索したら以下の情報を発見。
CentOS7(firewalld) - SSHのポート番号を変更する - Linux入門 - Webkaru
何故に/usr/lib/firewalld/servicesを使用している?で、変更したものは/etc/firewalld/services/に置くだと?まあ、この対応とさっきの追加ポートを削除して完了。ログを見ても出てこない。これで快適(?)な監視が行える。

sshのポート番号の変更手順

まずfirewallを有効にする。
systemctl start firewalld
常に起動するようにする。
firewallが認識しているsshのポート番号を変更する。
cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
してエディット。
/etc/ssh/sshd_configでポート番号を指定する。
sshdとfirewalldを再起動する。
VPS管理画面でパケットフィルタを利用しないに変更する。
sshで繋いでみる。