Menu
Menu
Blog
ブログ
About Site
サイトについて
Profile
プロフィール
Activity
活動
Works
制作
Contact
お問い合わせ
音ゲー好きなエンジニアの個人事務所。気ままにブログを更新しています。
Otogeworks
  • Blogブログ
  • About Siteサイトについて
  • Profileプロフィール
  • Activity活動
  • Works制作
  • Contactお問い合わせ

[Amazon Linux 2] WordPressセットアップ22手順

2021 10/25
Web
WordPress
2022年8月2日

Amazon Linux 2構築~WordPressインストールまでを行います。
環境の構成は以下の通り。

VPS Amazon Lightsail $5/月 プラン
OS Amazon Linux 2 ※Bitnami不使用
Webサーバー Nginx 1.20
ランタイム PHP 8.0
DB MariaDB 10.5
WordPress 5.8
SSL証明書 Let's Encrypt
※セキュリティ編で構築
高速化技術 UNIXドメインソケット、FastCGI Cache、OPcache、APCu、クエリキャッシュなど
※チューニング編で構築
構成

なお、この記事は4部構成になっています。

Vol.
セットアップ編

このページです

Vol.
セキュリティ編
セキュリティ設定全般
[2023年版] WordPress VPS用セキュリティ15手順 ドメイン設定、SSL LabsやSecurity HeadersでA+にするSSL設定、CORP・COEP・COOPに対応したHTTPヘッダー設定、PHPの設定、WP Cerberプラグインを使った設定などを行いま...
Vol.
チューニング編
爆速チューニング設定
[PageSpeed Insights100点] WordPressチューニング15手順 高速化のためにNginx、PHP、MariaDBをWordPressに合わせてチューニングし、Google PageSpeed Insights(PSI)でモバイルとPCを100点にする設定を行います。 この記事は4部...
Vol.
テーマ・プラグイン編
テーマとプラグインの紹介と設定、テーマを使った更なる高速化
[SWELL] WordPress高速テーマ&便利プラグイン6つ このサイトで実際に使っているテーマとプラグインを紹介します。また、テーマを使った高速化設定も行います。 この記事は4部構成になっています。 STEPセットアップ編 S...
この記事で実現できること
  • 一般的な設定やセキュリティを担保したAmazon Linux 2の構築
  • WordPressが動かせる
目次

構成について

VPS

Amazon Lightsailの$5/月プランはCPU1コア、メモリ1GB、ストレージ40GBのプランです。
メモリ512MBのプランもありますが、常に限界のリソースになるので1GBのプランにしました。

OS

AWSなのでAmazon Linux 2を使用しています。
Lightsailにはインスタンスを作成しただけで構築してくれるBitnamiがありますが、今回は構成を深く理解するためと、様々なサーバーでのインストール作業を想定するため、あえて使用していません。

Amazon Linux 2依存の作業は主に以下です。

  • yum-cronでセキュリティ関連パッケージのみ更新する設定を行う
  • NginxとMariaDBのインストールにamazon-linux-extrasコマンドを使用する

Amazon Linux 2以外でこの記事通りに構築した場合、Amazon Linux 2にデフォルトでインストールされているパッケージのどれかが足りなくてエラーを起こすかもしれません。

Amazon Web Services, Inc.
よくある質問 - Amazon Linux 2 | AWS

libgcc、libxml2、openssl、pcre、zlib辺りはぱっと見でも必要っぽいな? と思うようなライブラリです。上記ページをヒントにエラーメッセージを調べれば何が足りないか分かるでしょうから、CentOSや派生OSを使う方は頑張ってください。
その他、所々に若干の環境の違いがあることと、RedHat系なのでDebian系とは勝手が異なります。

ちなみにOSイメージが配布されているOSなので、AWSじゃなくてもISOイメージをアップロードできるVPSならAmazon Linux 2で構築可能です。

ランタイム

PHP 8が登場したばかりの頃はWordPress(主にテーマとプラグイン)がPHP 8に対応できていないとされてきました。

しかし、WordPressがPHP 8に対応してから1年近く立つので、未対応のテーマとプラグインも少なくなってきたはずです。PHP 7.4のサポートもそのうち切れますし、将来的にはWordPress & PHP 8がメジャーになることを見据えて構築しました。

1: インスタンス作成

Lightsailの画面からインスタンスを作成します。
作り終わったらIPアドレスを固定し、80番ポートと443番ポートを開けておきましょう。

Lightsailのインスタンス作成

インスタンスの作成が終わったらSSHで接続してください。

2 to 8:OS設定

ある程度セキュアな設定にしつつ、必要な初期設定を行います。

2 to 6:セキュアな設定

2: yum update

まず最初にやるべきことはこれです。OSを最新化しましょう。

sudo yum update

rootユーザーのSSHログイン禁止

対応不要です。
Amazon Linux 2はデフォルトでrootユーザーのSSHログインを拒否する設定になっています。

3: 接続元IPアドレス制限

自宅やオフィスのIPアドレスが固定されている場合、SSHだけ制限しておきます。
VPSはほとんどのサービスが接続元IPアドレスを簡単に制限できると思いますので、確認したグローバルIPアドレスを転記するだけです。

構築中に関しては、80と443もIPアドレス制限をしておいた方がいいと思います。後で外すのを忘れないように。

なお、SSHを構築中だけでなく常時IPアドレス制限する場合は後述の「SSHのポート番号変更」「ec2-userのユーザー名変更」を実施せずとも入口が安全な状態になります。Lightsailで構築する場合はこの2つを実施するとデメリットがあるので、代替手段として行ってもいいかもしれません。

4: SSHのポート番号変更

この設定を実施するとLighsailの管理画面から使えるブラウザベースのSSHクライアントが使えなくなります。設定する場合はSSHクライアント(OpenSSHクライアントとかTera Termとか)を使って接続してください。

ポートスキャンを避けるため、SSHのポート番号を変更します。
変更先のポートはウェルノウンポート(0-1023番)以外の適当なものにします。
ウェルノウンポートは80や443のように既に使われている可能性があるので避けて設定してください。

sudo vi /etc/ssh/sshd_config

#Port 22
Port 30022

sudo systemctl restart sshd.service
exit

Lighsailのファイアウォールのポートも変更し、SSHクライアントから接続できることを確認します。

Amazon Linux 2にはfirewalldがインストールされていないので、firewalldの設定はしません。
OS内部のファイアウォールではなくLightsailの管理画面から設定できるファイアウォールで管理します。

5: ec2-userのユーザー名変更

この設定を実施するとLighsailの管理画面から使えるブラウザベースのSSHクライアントが使えなくなります。設定する場合はSSHクライアント(OpenSSHクライアントとかTera Termとか)を使って接続してください。

SSH経由の総当たり攻撃を避けるため、新しいユーザー(適当にlightsail-userとか)を作成し、ec2-userを削除します。ec2-userというのはAmazon Linux 2におけるデフォルトユーザー名なので、ユーザー名をデフォルトから変更することで、総当たり攻撃の成功率がガクっと落ちます。

sudo su -
useradd lightsail-user
usermod -G wheel lightsail-user
visudo -f /etc/sudoers.d/90-cloud-init-users

# User rules for ec2-user
ec2-user ALL=(ALL) NOPASSWD:ALL
lightsail-user ALL=(ALL) NOPASSWD:ALL

秘密鍵をec2-userからコピーします。(あまりお行儀はよくないですが、一時的なのでいいでしょう)

cp -r /home/ec2-user/.ssh /home/lightsail-user
chown -R lightsail-user:lightsail-user /home/lightsail-user/.ssh
exit
exit

lightsail-userユーザーでログインできることを確認し、ec2-userユーザーを削除します。

sudo su -
userdel -r ec2-user
visudo -f /etc/sudoers.d/90-cloud-init-users

# User rules for ec2-user
#ec2-user ALL=(ALL) NOPASSWD:ALL
lightsail-user ALL=(ALL) NOPASSWD:ALL

SELinux

構築難易度が上がりますし、ホームページやブログ用途にしては過剰な設定と思われるので、無効で運用します。期待した方はごめんなさい。
なお、Amazon LinuxではSELinuxがデフォルトで無効化されています。

getenforce

6: 自動アップデート設定

自動でOSのセキュリティアップデート(yum update --security)を実施する設定を行います。

yum updateで全てをアップデート対象にすることはCentOSでも可能ですが、yum update --securityでセキュリティ関係のみをアップデート対象にできるのはRedHatやAmazon Linuxだけです。
自動アップデートには予期せぬ不具合というリスクが伴うので、セキュリティを担保しつつアップデート対象を少なくできるならその方がいいです。

今回はせっかくAmazon Linux 2を使っているので、恩恵に預かります。

sudo yum install -y yum-cron
sudo vi /etc/yum/yum-cron.conf

#  What kind of update to use:
# default                            = yum upgrade
# security                           = yum --security upgrade
# security-severity:Critical         = yum --sec-severity=Critical upgrade
# minimal                            = yum --bugfix update-minimal
# minimal-security                   = yum --security update-minimal
# minimal-security-severity:Critical =  --sec-severity=Critical update-minimal
#update_cmd = default
update_cmd = security

# Whether updates should be applied when they are available.  Note
# that download_updates must also be yes for the update to be applied.
#apply_updates = no
apply_updates = yes

sudo systemctl start yum-cron
sudo systemctl enable yum-cron

7: スワップ領域作成

Amazon Linux 2はデフォルトではスワップ領域を作成しません。

free -h

上記を実行するとSwapが0Bになっているはずです。
(他OSだとそうでないかもしれません。もし0Bなら追加してください)
これではアップデートが走った場合や一時的な大量アクセスによる負荷に見舞われた時に、リソース不足が原因で重くなったりアクセス不能になる可能性があるので、スワップ領域を追加します。

RedHatによればメモリ1GBならスワップ領域2GBの確保が推奨されているので、これに従って設定します。
第15章 swap 領域 Red Hat Enterprise Linux 7 | Red Hat Customer Portal

sudo su -
mkdir /var/swap/
dd if=/dev/zero of=/var/swap/swap0 bs=1M count=2048
chmod 600 /var/swap/swap0
mkswap /var/swap/swap0
swapon /var/swap/swap0

スワップ領域が2GBになったことを確認します。

free -h

リブート後もスワップ領域としてマウントするように設定します。

vi /etc/fstab

/var/swap/swap0 swap swap defaults 0 0

exit

8: タイムゾーン設定

タイムゾーンを日本時間にします。
なお、NTPは設定されている状態であるため設定不要です。

sudo timedatectl set-timezone Asia/Tokyo
timedatectl status

9 to 10: Nginx構築

amazon-linux-extras(amzn2-core)からインストールし、初期設定を行います。

9: インストール

Nginxをインストールします。
Amazon Linux 2じゃない方はEPELリポジトリもしくはNginxの公式から落としてください。

sudo amazon-linux-extras install nginx1

10: 設定

新しくconfファイルを作ってそちらを明示的に読み込み先として指定します。
Nginxのアップデートのタイミングでdefault.confが勝手に作られてしまい、両方のconfを読み込んでおかしくなってしまうことがあったためです。

sudo vi /etc/nginx/nginx.conf

http {
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    #include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/conf.d/wordpress.conf;

WordPress用のconfファイルを作成します。
PHPの設定で理由を後述しますが、client_max_body_sizeは22Mにします。

sudo vi /etc/nginx/conf.d/wordpress.conf

server {
    listen       80;
    listen       [::]:80;
    server_name  localhost;

    client_max_body_size 22M;

    root /var/www/html;
    index index.php;

    location = /favicon.ico {
        access_log off;
        log_not_found off;
    }
    location = /robots.txt {
        rewrite ^/robots\.txt$ /index.php?robots=1 last;
        access_log off;
        log_not_found off;
    }
    location ~ [^/]\.php(/|$) {
        fastcgi_pass unix:/run/php/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;

        fastcgi_cache_bypass 1;
        fastcgi_no_cache 1;
    }
    location ~* \.(html?|jpe?g|gif|png|webp|svg|css|js|ico|bmp|xml|pdf|ttf|otf|woff2?)$ {
        access_log off;
        log_not_found off;
    }
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
}

設定ファイルに問題がないことを確認し、起動および次回から自動で起動するようにします。

sudo nginx -t
sudo systemctl start nginx
sudo systemctl enable nginx

Nginxグループにlightsail-userを追加

やらなくてもいいですが、念のため。
lightsail-userでも一部ファイルの編集等を行えるようにするため、nginxグループにlightsail-userを追加します。

sudo usermod -a -G nginx lightsail-user
exit

1度ログアウトしてからログインし、lightsail-userがnginxグループになっているか確認します。

groups

11 to 14: PHP構築

amazon-linux-extras(amzn2-core)は使用せずに構築します。
WordPressに必要なPHPライブラリの一部がamzn2-coreリポジトリにない可能性があるためです。

11: Remiリポジトリをセットアップ

PHPをインストールするため、Remiリポジトリをインストールします。RemiリポジトリのインストールにはEPELリポジトリが必要なので、それもインストールします。

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php80

remi-phpリポジトリが追加されていることを確認します。

sudo yum repolist | grep remi-php

12: インストール

PHPのインストールとともに、WordPressに必要なライブラリも一緒に入れます。
zipとimagick以外を一気にインストールします。

sudo yum -y install --enablerepo=remi-php80 php80 php80-php php80-php-common php80-php-mbstring php80-php-mysqlnd php80-php-xml php80-php-bcmath php80-php-gd php80-php-intl php80-php-pecl-mcrypt

zipをインストールしなかったのは、amzn2-coreリポジトリにある依存関係のライブラリが古くてインストールできなかったためです。(記録してなかったけど、libzip.soとかlibzstdがどうのこうのっていうエラーメッセージでハマった記憶)
amzn2-coreリポジトリを無効にすることでインストールできます。

sudo yum -y install --enablerepo=remi-php80 --disablerepo=amzn2-core php80-php-pecl-zip

imagickは対応しているバージョンの依存関係のライブラリがリポジトリになかったので、依存関係のライブラリを個別にインストールしてからimagickをインストールします。

sudo rpm -ivh http://mirror.centos.org/centos/7/os/x86_64/Packages/jasper-libs-1.900.1-33.el7.x86_64.rpm
sudo rpm -ivh http://mirror.centos.org/centos/7/os/x86_64/Packages/lcms2-2.6-3.el7.x86_64.rpm
sudo rpm -ivh http://mirror.centos.org/centos/7/os/x86_64/Packages/LibRaw-0.19.4-1.el7.x86_64.rpm
sudo yum -y install --enablerepo=remi-php80 php80-php-pecl-imagick-im7

rpmコマンド実行時に「The requested URL returned error: 404」が返ってきた場合、ライブラリが更新されてバージョンが変わっているものと思われます。以下のURLから同じライブラリを探してください。
http://mirror.centos.org/centos/7/os/x86_64/Packages/

Remiリポジトリには「php80-php-pecl-imagick」というパッケージもありますが、執筆時点でインストールされるのは古いImageMagick 6とPHP 8をサポートしていないimagick 3.4.4です。「php80-php-pecl-imagick-im7」はImageMagick 7とPHP 8をサポートしたImagick 3.5.0以上をインストールできます。

モジュール確認

PHPがインストールできたことの確認も兼ねて、WordPressのハンドブックに記載されているPHP Extensionsがすべてインストールされているか確認します。
https://make.wordpress.org/hosting/handbook/server-environment/#php-extensions

php80 -m

※curl、exif、fileinfo、hash、json、openssl、pcre、iconv、sodium、zlibはphp-commonをインストールした時点で有効になります
※mysqliはphp-mysqlndに含まれています
※dom、simplexml、xmlreaderはphp-xmlに含まれています

13: 設定

WordPressの更新時にコケるの防止で「max_execution_time」の時間を延ばしておきます。
また、WordPressのファイルアップロード上限サイズを16MBにしてそれより少し大きなサイズである22MBをPOST上限サイズにします。

sudo vi /etc/opt/remi/php80/php.ini

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
;max_execution_time = 30
max_execution_time = 300

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
;upload_max_filesize = 2M
upload_max_filesize = 16M

; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
;post_max_size = 8M
post_max_size = 22M

Nginxでもclient_max_body_sizeでサイズの設定をしましたね。WordPressのファイルアップロード上限サイズを設定するには、NginxとPHP(MariaDBも同様)で設定を合わせる必要があります。

14: PHP-FPM等インストールと設定

PHP-FPM、APCu、OPcacheをインストールします。
インストール後はPHP-FPMの設定を行います。

sudo yum -y install --enablerepo=remi-php80 php80-php-fpm php80-php-pecl-apcu php80-php-opcache

PHP-FPMのsocket用ディレクトリを作成し、OSの起動時にも作成されるようにします。
※/runディレクトリ以下はOS起動時に削除されるためです

sudo su -
mkdir /run/php
chown nginx:nginx /run/php
chmod 755 /run/php
vi /usr/lib/tmpfiles.d/php-fpm.conf

# Type  Path                    Mode  UID    GID    Age  Argument
d       /run/php           0755  nginx  nginx  -

exit

PHP-FPMの設定を行います。
php.iniのmax_execution_timeに合わせてrequest_terminate_timeoutも変更します。

sudo vi /etc/opt/remi/php80/php-fpm.d/www.conf

;listen = 127.0.0.1:9000
listen = /run/php/php-fpm.sock

;user = apache
user = nginx

;group = apache
group = nginx

;listen.owner = nobody
listen.owner = nginx
;listen.group = nobody
listen.group = nginx

;request_terminate_timeout = 0
request_terminate_timeout = 300

sudo systemctl start php80-php-fpm
sudo systemctl enable php80-php-fpm

ImageMagickとGhostscriptについて

ImageMagickとGhostscriptは、WordPressのオプション機能扱いになっています。

ImageMagickをインストールすると、WordPressが画像処理ライブラリとしてImageMagickを参照します。
WordPressとしてはImageMagickのインストールを推奨しており、サムネイル生成や管理画面のメディアから行える画像編集時の画像品質が良くなるメリットがあります。
imagickをインストールすれば依存関係で勝手にImageMagickも入るので、その恩恵に預かることにしました。

GhostscriptをインストールするとPDFファイルのサムネイルが作られるようになります。
こちらは必要ないと判断したので私はインストールしませんでしたが、インストールする場合は以下を実行します。

sudo yum -y install ghostscript

ImageMagickは脆弱性が多いため、レンタルサーバー(ロリポップとか)によっては利用が一部制限されているようです。不特定多数に同じサーバーを使わせている以上、脆弱性を利用した細工済みの画像をアップロードされて他ユーザーのデータを盗取・破壊されるリスクがあり、レンタルサーバー事業者としては対策せざるを得ないからです。

Yahooメールが画像処理ライブラリとしてImageMagickを使っていたところ、脆弱性が原因でメールに添付されていた画像が流出する恐れがあることが発覚し、ライブラリの使用をやめた、という過去もありました。
https://www.itmedia.co.jp/enterprise/articles/1705/23/news070.html
同年の2017年にImageMagickに非常に多くの脆弱性が発見されたことや、このニュースが波紋を呼んだことで各社対応を余儀なくされたのではないかと。

あくまで利用者共用のサーバーだから騒がれたり神経質になっているだけで、VPSの場合、画像をアップロード・編集するのが管理側のユーザーだけなのであれば脆弱性を利用されるリスクは限りなく小さいので、そこまで気にしなくていいです。

15 to 18: MariaDB構築

MySQLでもよいのですが、よりオープン性の高いMariaDBにしました。
amazon-linux-extras(amzn2-core)からインストールし、初期設定を行います。

15: プリインストールされたMariaDBの削除

Amazon Linux 2にプリインストールされているMariaDBを削除します。
※今回は使わないのでスルーしますが、Postfixも一緒に削除されます

sudo yum -y remove mariadb-libs

16: インストール

今回はamazon-linux-extrasからインストールしますが、Amazon Linux 2以外のOSで構築する場合、MariaDBリポジトリからインストールすることをおすすめします。デフォルトのリポジトリからインストールするMariaDBはバージョンが古い(WordPressのサポート対象外)からです。
MariaDB Package Repository Setup and Usage - MariaDB Knowledge Base

sudo amazon-linux-extras install mariadb10.5

17: 設定

PHPの設定に合わせてパケット上限サイズを16MBにし、文字コードとログ保持日数の設定を行います。

sudo vi /etc/my.cnf.d/mariadb-server.cnf

[mariadb]
collation-server = utf8mb4_unicode_ci
character-set-server = utf8mb4
expire_logs_days=30
max_allowed_packet=16M

sudo vi /etc/my.cnf.d/client.cnf

[client]
default-character-set = utf8mb4

起動と自動起動設定を行います。

sudo systemctl start mariadb
sudo systemctl enable mariadb

mysql_secure_installationを実行して初期設定を行います。
コマンド実行後に何回か質問されるので、きちんと読んで設定しましょう。

sudo /usr/bin/mysql_secure_installation
Enter current password for root (enter for none):空Enter
Switch to unix_socket authentication [Y/n]n
Change the root password? [Y/n]Y
Remove anonymous users? [Y/n]Y
Disallow root login remotely? [Y/n]Y
Remove test database and access to it? [Y/n]Y
Reload privilege tables now? [Y/n]Y

上記テーブルではYにしていますが、念のため。phpMyAdmin(その他、リモートでDBにログインする手段)を使用する場合、「Change the root password?」はYにしてください。それ以外ならnでもいいと思います。

cnfファイル周りは色々な情報が散見され、調べてまとめるのが地味に大変でした。
オプションの設定方法がMySQLとは異なるのとMariaDBのバージョンによって設定方法が異なるので、MariaDB 10.5でない方とは異なるかもしれません。

18: データベース作成

WordPress用のデータベースとユーザーを作成します。

sudo mysql -u root -p
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER wpadmin@localhost IDENTIFIED BY 'wpuserpass';
GRANT ALL ON wordpress.* TO wpadmin@localhost;
exit

phpMyAdminなどを入れなければリモート越しで直接DBに触れないので大丈夫だとは思いますが、wpadminとwpuserpassの部分は各自書き換えてください。

なお注意点としては、MariaDB(MySQL)の文字コードはutf8とutf8mb4でそれぞれ異なる意味を持つことです。
歴史的な事情なのか、utf8はutf8mb3という一般的なUTF-8ではないものになっているため、utf8mb4がUTF-8になります。後から変えようとするとかなり面倒な思いをすることになるので、間違いなく設定しておきましょう。

phpMyAdminについて

おなじみのブラウザから利用可能なRDBMS管理ツールです。
Web上でログインすることでGUIでテーブルやデータの閲覧・編集、クエリの発行が可能です。

DBを直接操作することはほぼないと思われるので、私はインストールしませんでした。
普段使わない割にわざわざインストールして設定したりポートを開けるのが面倒ですし、外部からアクセスできる管理コンソールを自ら増やしてリスクを晒すのも癪です。
もし操作する場合はSSHでログインしてコンソールからSQLを直打ちする運用としています。

19 to 21: WordPressのインストール

19: ダウンロードと展開

WordPressのインストールを行います。
まずはダウンロードと展開を行い、展開先のフォルダを作成してからコピーし、wp-config.phpの作成と所有者を変更を行います。

cd /tmp
wget https://ja.wordpress.org/latest-ja.tar.gz
tar zxvf latest-ja.tar.gz
sudo mkdir -p /var/www/html
sudo cp -r ./wordpress/* /var/www/html/
cd /var/www/html/
sudo cp wp-config-sample.php wp-config.php
sudo chown -R nginx:nginx /var/www/html

wp-config.phpの初期設定を済ませておきます。

sudo vi wp-config.php

/** WordPress のためのデータベース名 */
define( 'DB_NAME', 'wordpress' );

/** MySQL データベースのユーザー名 */
define( 'DB_USER', 'wpadmin' );

/** MySQL データベースのパスワード */
define( 'DB_PASSWORD', 'wpuserpass' );

/** MySQL のホスト名 */
define( 'DB_HOST', 'localhost' );

/** データベースのテーブルを作成する際のデータベースの文字セット */
define( 'DB_CHARSET', 'utf8mb4' );

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define( 'DB_COLLATE', 'utf8mb4_unicode_ci' );

/**#@+
 * 認証用ユニークキー
 *
 * それぞれを異なるユニーク (一意) な文字列に変更してください。
 * {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org の秘密鍵>サービス} で自動生成することもできます。
 * 後でいつでも変更して、既存のすべての cookie を無効にできます。これにより、す>べてのユーザーを強制的に再ログインさせることになります。
 *
 * @since 2.6.0
 */
define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );
define( 'AUTH_SALT',        'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT',   'put your unique phrase here' );
define( 'NONCE_SALT',       'put your unique phrase here' );

接続情報は各自設定したものを設定してください。
またコメントの通り、認証用ユニークキーは以下URLから生成して、上記の「put your unique phrase here」を書き換えてください。
https://api.wordpress.org/secret-key/1.1/salt/

20: ようこそ画面にアクセス

インスタンスのIPアドレスにアクセスし、ようこそ画面が表示できることを確認します。

ようこそ画面

この画面が表示されない方は今までの設定を疑ってください。
Nginxのエラーログを見ればヒントが分かることが多いです。
NginxかPHP-FPM、あとはパーミッション辺りの設定がミスりやすいポイントだと思います。

21: インストール

先ほど表示された画面の入力項目を埋めてインストールを開始します。

インストールを開始した後、入力するユーザー名とパスワードはWordPressのログインに必要になります。
非公開状態で構築したい場合やテストサーバーの場合は「検索エンジンがサイトをインデックスしないようにする」にもチェックを入れておきましょう。

インストール後は「成功しました !」と表示されればOKです。
そしてログインし、管理画面の表示を確認してください。

ダッシュボード

「http://【IPアドレス】/」でアクセスして表示できることも確認します。
サイトのトップページであり、インストールした時期のWordPressのデフォルトテーマの見た目になります。
CSSが適用されていることなども併せて確認してください。

トップページ
Twenty Twenty-Oneテーマ

22: インスタンス再起動

このタイミングでサーバーのOSを再起動してみましょう。
再起動が完了するのを待ってから、もう一度ページにアクセスできるかどうかを確認します。

もし表示されなかった場合は、どこか設定を誤っています。
Nginx、PHP-FPM、MySQLのサービスが立ち上がっているか(enableしているか)、PHP-FPMのsocket用ディレクトリが作成できているかなどを確認しましょう。

あと、スワップ領域が0Bに戻っていないことも併せて確認してください。

free -h

セットアップ編完了

ひとまず未カスタマイズ状態のWordPressが使えるようになりました。
次はセキュリティ編に続きます。

セキュリティ設定全般
[2023年版] WordPress VPS用セキュリティ15手順 ドメイン設定、SSL LabsやSecurity HeadersでA+にするSSL設定、CORP・COEP・COOPに対応したHTTPヘッダー設定、PHPの設定、WP Cerberプラグインを使った設定などを行いま...

このサイトはSWELLテーマを使っています

SWELL
圧倒的な使い心地を追求する国産WordPressテーマ『SWELL』の公式販売サイト
Web
WordPress
ushui
宮城県生まれのエンジニアです。
都内でフリーランスを営んでいます。

カレー、技術、音楽、音ゲーが好き。
音楽面に関しては、特にBMSとVOCALOIDから生まれた同人音楽家たちに強く影響を受けました。
新着記事
  • WP Cerber Securityをアップデートサーバーを変更
    WP Cerber Securityのインストールと簡易的な設定
    2023年1月4日
    Web
  • Amazon Linux 2でRemiリポジトリのPHPを8.0から8.1に更新
    Amazon Linux 2でRemiリポジトリのPHPを8.0から8.1に更新
    2023年1月3日
    Web
  • 嫌われ者のJASRACは「MIDI狩り」から何を学んだか?
    嫌われ者のJASRACは「MIDI狩り」から何を学んだか?
    2022年12月31日
    音楽
  • アーティストに入るカラオケ印税にJASRACが必要な理由
    アーティストに入るカラオケ印税にJASRACが必要な理由
    2022年12月31日
    音楽
  • REVIVE USB ADVANCEのパッケージ
    アナログ入力に対応したREVIVE USB ADVANCEとカスタム版
    2022年11月14日
    ハードウェア
ジャンル
  • テクノロジー全般
    • Web
    • アプリ
    • ゲーム開発
    • ハードウェア
  • インターネット考古学
  • ゲーム
  • 音楽
  • WordPress
  • REVIVE USB
  • その他
アーカイブ
  • 2023 (2)
  • 2022 (24)
  • 2021 (7)
  • 2017 (7)
  • 2016 (5)
目次
  1. Top
  2. テクノロジー全般
  3. Web
  4. [Amazon Linux 2] WordPressセットアップ22手順
目次