Open1
【更新中】AmazonLinux2023+WordPress+MariaDBでワードプレス構築

今回は、ec2インスタンスにwordpressとmariadbをインストールする手順をメモにまとめたいと思います。
前提:
- VPC、IGW、パブリックサブネットなど構築済み。
- EIPをEC2インスタンスに関連付けて、インスタンスコネクトで操作する。
EC2インスタンス
インスタンスタイプはt3.nano
AMIはAmazon Linux 2023 (kernel-6.1)
キーペアは無し
パッケージの更新と必要なツールのインストール
sudo dnf update -y
sudo dnf install -y httpd php php-mysqlnd php-fpm php-json php-gd php-mbstring php-xml mariadb105-server unzip wget
dnfはAmazonLinux2023で使われているパッケージ管理ツール。
sudo dnf update -y
でシステム上にインストールされている全てのパッケージを最新バージョンに更新する。
-y
はyesの略、確認に対して自動で「はい」で答える。
全てのパッケージリストを確認し、アップデート可能なものがあれば自動でダウンロード・インストールする。
インストールしたパッケージについて(書き途中)
- httpd:Apache HTTP Server(Webサーバー)。ubuntuはapache2だったけど、AmazonLinux2023はFedora系なのでApacheパッケージ名はhttpdらしい。
- php:PHP本体で、PHPが動くための実行環境など一式。
- php-mysqlnd:PHPからMySQL/MariaDBに接続するためのモジュールで、WordPressでは必須。
- php-fpm:PHP FastCGI Process Manager。Apacheとは別にPHPを高速に処理するデーモン。
Apacheの起動と自動起動設定
sudo systemctl enable httpd # 再起動後に自動起動させる
sudo systemctl start httpd # 今すぐ起動する
MariaDBの起動と初期設定
sudo systemctl enable mariadb # 自動起動を有効化(再起動後も自動起動)
sudo systemctl start mariadb # 今すぐ起動する
sudo mysql_secure_installation #mariadbの初期設定を行う
sudo mysql_secure_installation
でmariadbの初期設定を行い、任意のパスワードを設定します。
[ec2-user@ip-10-0-0-172 ~]$ free -h
total used free shared buff/cache available
Mem: 407Mi 239Mi 21Mi 3.0Mi 146Mi 154Mi
Swap: 406Mi 0.0Ki 406Mi
余談ですが、free -h
でメモリを確認したところ、デフォルトでSwap領域が406Mib確保されています。
t3.nanoでUbuntu22.04LTSを使った際にはメモリ不足でMySQLがインストールできなかったため、自分でスワップ領域を作る必要がありました。
AmazonLinux2023では、最初からスワップ領域が用意されているのでしょうか?
WordPress用データベースとユーザーの作成
sudo mysql -u root -p
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
# ワードプレス用のデータベース「wordpress」を作成します。
# DEFAULT CHARACTER SET utf8mb4で、デフォルトの文字コードをutf8mb4に設定します。
# utf8mb4とはMySQLやMariaDBで使われる文字セットの名前で、UTF-8の完全版を意味します。絵文字などの4バイト文字を扱える文字コードです。
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '任意のパスワード';
# 新しいユーザーwpuserを作成します。
# localhostとすることで、MariaDBが動作しているのと同じサーバーからのみ接続を許可します。
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
# wpuserに対して、wordpressデータベースの全てのテーブルに対する権限を付与します。
FLUSH PRIVILEGES;
# 変更したユーザーや権限の情報を即座に反映させます。
EXIT;
####WordPressのダウンロードと配置
cd /tmp
# インターネットから一時的にファイルをダウンロードするため、一時置き場であるtmpディレクトリに移動する
wget https://wordpress.org/latest.tar.gz
# wgetとはコマンドラインからファイルをダウンロードするためのツールで、HTTP/HTTPS/FTPなどのプロトコルに対応している
# wordpress.orgはWordPress公式の配布サーバーで、ここから最新版のWordPressをダウンロードしている。
# .tarは複数のファイルやディレクトリを1つのファイルにまとめるための形式
# .gzはgzipという圧縮方式で、.tarなどのファイルを圧縮してサイズを小さくしている。
tar -xzf latest.tar.gz
# gzipで圧縮されたtarアーカイブファイルを展開するためのコマンド
# -xでextract(展開)、-zでgzip(.gz形式で圧縮されたファイルを扱う)、-fでfile(対象のファイルを指定する
sudo rm -rf /var/www/html/*
# /var/www/html配下にダウンロードしたwordpressの中身を配置するため、Apacheのデフォルトページを削除しておく
# -rはディレクトリを中身も含めて再帰的に削除する、-fで確認せずに強制的に削除を行う
sudo cp -a wordpress/. /var/www/html/
# wordpress/.で、wordpressディレクトリの隠しファイルも含めた全ての中身だけを指す。/wordpressだと、そのディレクトリごとコピーしてしまう。
# -aで、ファイルの所有者やパーミッション、タイムスタンプなどを保持したままコピーできる。属性をなるべく保持したままコピーしたい場合に使うオプション。
# /var/www/htmlは、ApacheがWebページとして公開する初期ディレクトリ(ドキュメントルート)。ブラウザからアクセスが来た際には、/var/www/html配下のファイルを返す。
パーミッション設定
sudo chown -R apache:apache /var/www/html
# /var/www/htmlディレクトリ配下の所有者と所有グループをapacheに変更している。
# -Rで再帰的に変更することによって、サブディレクトリ・中のファイルを全て対象とする。
# ApacheはLinux上(Amazon Linux 2023)ではapacheユーザーとして動作している。
# そのため、このapacheユーザーが/var/www/html配下のディレクトリやファイルに対して読み書き権限が無いとうまく動作しない。
sudo find /var/www/html -type d -exec chmod 755 {} \;
#
sudo find /var/www/html -type f -exec chmod 644 {} \;
wp-config.phpの作成
cd /var/www/html
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php
wp-config.phpの編集
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'パスワード' );
define( 'DB_HOST', 'localhost' );
接続の確認
https://パブリックIPアドレスで、WordPressの初期画面の表示が確認できました。