概要
個人の備忘録メインのため、不備が多いかと思います。よろしければご指摘ください。
これまで自宅サーバー(CentOS7)でWordPressのブログを運営してきましたが、EC2に引っ越ししてみます。
ついでにWebサーバーをApacheからNginxに変更してみます(ただの興味)。
EC2
インスタンスの起動、Elastic IPの割り当て、セキュリティグループ設定は割愛します。
初期設定
基本、ルート権限で作業します。
$ sudo -s
1. ホスト名の変更
# vi /etc/hostname
2. タイムゾーンの設定
# rm -f /etc/localtime; ln -sf /usr/share/zoneinfo/Japan /etc/localtime
# vi /etc/sysconfig/clock
ZONE="UTC"のUTCをAsia/Tokyoに変更
3. 日本語対応
# vi /etc/sysconfig/i18n
LANG=en_US.UTF-8のen_US.UTF-8をja_JP.UTF-8に変更
# source /etc/sysconfig/i18n
4. 再起動
# reboot
参考URL
https://qiita.com/2no553/items/e166c00790c3397acf2d
http://mktktmr.hatenablog.jp/entry/2016/12/07/154736
Nginx、PHPインストール
# amazon-linux-extras
…
38 nginx1 available [ =stable ]
…
42 php7.4 available [ =stable ]
…
# amazon-linux-extras install nginx1 php7.4
…
# systemctl start nginx
# systemctl enable nginx
…
# yum install php-mbstring
MariaDBインストール
1. yumでインストール
# yum install mariadb-server
2. 文字コード設定
# vi /etc/my.cnf.d/server.cnf
…
[mysqld]
character-set-server = utf8 ← 追記
…
3. 起動
# systemctl start mariadb
# systemctl enable mariadb
4. 初期設定
# mysql_secure_installation
…
Enter current password for root (enter for none): ← 空Enter
…
Set root password? [Y/n] ← 空Enter
New password: ← rootパスワード
Re-enter new password: ← rootパスワード
…
Remove anonymous users? [Y/n] ← 空Enter
…
Disallow root login remotely? [Y/n] ← 空Enter
…
Remove test database and access to it? [Y/n] ← 空Enter
…
Reload privilege tables now? [Y/n] ← 空Enter
…
参考URL
https://centossrv.com/mariadb.shtml
WordPress用の設定
MariaDB
以下の設定とする。
データベース名:wordpress
ユーザー名:wordpress
# mysql -u root -p
> create database wordpress;
> grant all privileges on wordpress.* to wordpress@localhost identified by '(任意のパスワード)';
PHP-FPM
# vi /etc/php-fpm.d/www.conf
…
user = nginx ← apacheから変更
group = nginx ← 〃
…
# systemctl restart php-fpm
# systemctl enable php-fpm
旧サーバーからのデータ移動
1. 旧サーバー処理
旧サーバーのディレクトリは以下にある。
/var/www/wordpress
### WordPress ###
# cd /var/www
# tar cvf wordpress.tar.gz wordpress
# mv wordpress.tar.gz (ユーザーのホームディレクトリ)
### MariaDB ###
# mysqldump wordpress -u wordpress -p > dump.sql
2. 新サーバー処理
新サーバーのディレクトリは以下にする。
/usr/share/nginx/html/blog
### データコピー ###
# sftp (ユーザー名)@(旧サーバーのアドレス)
> get wordpress.tar.gz
> get dump.sql
> quit
### WordPress ###
# tar zxvf wordpress.tar.gz
# mv wordpress /usr/share/nginx/html/blog
# chown -R nginx. /usr/share/nginx/html/blog
### MariaDB ###
# mysql -u wordpress -p -D wordpress < dump.sql
HTTPS対応
Let's Encrypt導入
# amazon-linux-extras install epel
# yum install certbot-nginx
# certbot --nginx
…
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): ← メールアドレスを入力してEnter
…
(Y)es/(N)o: ← 1回目ライセンス関連:Yを入力してEnter
…
(Y)es/(N)o: ← 2回目メールアドレスの共有:YかNを入力してEnter
…
name(s) (comma and/or space separated) (Enter 'c' to cancel): fugiters.net ← ホスト名を入力してEnter
…
参考URL
https://qiita.com/ntm718/items/37d1d0a7de2d1edb4e7c
Nginx設定
設定ファイル(/etc/nginx/nginx.conf)の「Settings for a TLS enabled server.」の下の設定をコメントを外し、
# vi /etc/nginx/nginx.conf
…
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name fugiters.net; ← ホスト名
root /usr/share/nginx/html;
ssl_certificate "/etc/letsencrypt/live/fugiters.net/cert.pem"; ← 証明書
ssl_certificate_key "/etc/letsencrypt/live/fugiters.net/privkey.pem"; ← 秘密鍵
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
# ssl_ciphers PROFILE=SYSTEM; ← 不明
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf; ← これが無いとPHP動かず(ここでハマった)
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
…
# systemctl restart nginx
参考URL
https://ja.wordpress.org/support/article/nginx/
https://note.com/hiroki_hachisuka/n/nc1d5342c3a9b