さくらのVPSを利用してWordPressのサイトを構築したので,手順のメモ
思い出しながらメモしているので漏れがあるかもしれません...
さくらのVPS 構成
1G 構成のものを利用しています
スタートアップスクリプトで更新とUS配列のキーボードを使用するオプションを設定しました
CPU | 仮想2Core |
---|---|
メモリ | 1GB |
SSD | 100GB |
OS | Ubuntu 20.04 |
また,VPSにsshするための公開鍵を生成して登録しました
ssh-keygen -t ecdsa -b 521 -C "sakura_vps"
vps側の設定で,使用するPortを許可する
デフォルトでTCP 80 Openになっている,HTTPSでもアクセスするように変更するのでTCP 443も追加する
ドメイン契約
お名前.comで新規ドメインを取得しました
契約時にさくらインターネット指定のネームサーバに変更しました
さくらインターネット指定ネームサーバー
ネームサーバー1 | ns1.dns.ne.jp |
---|---|
ネームサーバー2 | ns2.dns.ne.jp |
VPSの更新
VPSにsshして作業します
パッケージの更新
sudo apt update -y
sudo apt upgrade -y
sudo apt autoremove -y
sudo apt autoclean
sshのrootログインを禁止
sudo vim /etc/ssh/sshd_config
~省略~
#PermitRootLogin yes > PermitRootLogin no
~~
sudo systemctl restart sshd.service
//rootユーザでsshログインできなくなっていることを確認する
WordPressのインストール
Webサーバ | Apache2
Server version: Apache/2.4.41 (Ubuntu) |
PHP | PHP 7.4.3-4ubuntu2.17 (cli) (built: Jan 10 2023 15:37:44) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.3-4ubuntu2.17, Copyright (c), by Zend Technologies |
DB | MariaDB mysql Ver 15.1 Distrib 10.3.38-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 |
WordPress | ver 6.1.1 |
// apache2 install
sudo apt install apche2
sudo systemctl enable apache2
sudo systemctl start apache2
// php install
sudo apt install php php-mysql
// MariaDB install
sudo apt install mysql-server mysql-client
sudo systemctl enable mariadb
sudo systemctl start mariadb
// WordPress install
wget https://wordpress.org/latest.tar.gz
tar -xvzf latest.tar.gz
sudo mv wordpress /var/www/html ; cd /var/www/html
sudo chown -R www-data:www-data
設定の変更
// phpのファイルアップロード上限変更(任意のサイズへ sudo vim /etc/php.ini ~~~ post_max_size = 8M > post_max_size = 128M ... upload_max_filesize = 2M > upload_max_filesize = 128M ~~~ // DBの設定 mysql_secure_installation ~passwordやオプションが聞かれるので入力する~ // WordPress用データベースを作成 上記で作成したアカウントでDBにログインする wordpress/passwordは任意 CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8;
GRANT ALL ON wordpress.* TO wordpress@localhost IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
WordPressの初期設定
http://{vpsのIPアドレス}/wordpress
WordPressの初期画面が表示されるので,データベースの登録やWordPressのユーザ名,パスワード等を入力する
ドキュメントルートの変更
/etc/apache2/apache2.conf
wordpressを展開したPath設定を追加する
<Directory "wordpress path">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
/etc/apche2/sites-available/000-default.conf
//ドキュメントルート変更
#DocumentRoot /var/www/html
DocumentRoot /var/www/html/wordpress
sudo systemctl restart apache2
http://{vps ip address}/がドキュメントルートになっていることを確認
*index.phpへ遷移する
SSL証明書の導入
無料SSLのLet’s Encryptを使う(certbot)
sudo apt install certbot python3-certbot-apache
sudo certbot --apache
~自動設定が開始される~
メールアドレス,規約のど同意,ドメインなど
sudo systemctl restart apache2
https://{vps ip address}でアクセスできることを確認
ドメインの設定
WordPress管理画面からcertbotで入力したドメインを設定
・WordPressアドレス
・サイトアドレス
https://{domain}でアクセスできることを確認
セキュリティプラグインと更新設定
cron //自己証明書の定期更新とパッケージアップデートを実施
sudo apt install mail
sudo crontab -e
00 04 01 * * certbot renew 2>&1 | mail -s "Let's Encrypt update information" {mail address} && systemctl restart apache2
00 03 * * * apt install unattended-upgrades 2>&1 | mail -s "Security Update" {mail address}
・ SiteGuardのプラグインを使用して,管理者用のページを別のURLからリダイレクトするように変更
・SiteGuardのプラグインを使用して,ログイン失敗時/成功時にメール通知,失敗のリトライ制限を設定
xmlrpc.phpを無効化
wordpressと同じディレクトリにある.htaccessに下記を追記
スマホのアプリから記事の更新等を行わないため無効化(このURL宛にかなり攻撃が来ていた)
参考にしたサイト
WordPressのログインURLを特定(または変更やロックダウン)するには