ステップバイステップ: Amazon Linux 2023にLAMPとWordPressをセットアップ
現在、Webサイトやブログを構築する際に、WordPressを使用するケースが多いですよね。この記事では、Amazon Linux2023上でのLAMP環境の構築から、Wordpressのインストールまでのプロセスを、わかりやすくステップバイステップで解説します。初心者から上級者まで、誰でも容易に手順を追える内容としていますので、最後までお付き合いください。
※今回は、EC2のみのサービスを利用想定で、データベースとして別途RDSを使用する構成ではありません。
※今後、この記事で構築したWordPressで作成した記事を出力して、S3に保存し、CloudFront経由でアクセスする構成を想定しています。
EC2インスタンスの起動
デフォルトのままで、Amazon Linux
を使用していきます。
- インスタンスタイプ:
t2.micro
- ストレージ:
8GB
インスタンスタイプやストレージもデフォルトのままで進めます。必要になれば、あとから変更できますし、最小構成で進めます。
キーペアは新規で作成します。慣れ親しんだものがすでにあればそちらをご利用でも良いと思います。
ネットワーク設定もそのままデフォルトで進めます。
このあと、このEC2にWordPressをインストールして、管理画面にアクセスし使用していきますが、セキュリティグループも新しく設定していきます。
あとは[インスタンスを起動]ボタンを押して、EC2を作成します。
EC2に固定IPを割り当てる
EC2は常時稼働させる必要はありません。そのため、使用しない時はEC2を停止するという運用を考えています。
しかし、EC2を起動するたびにIPアドレスが変わるのは不便ですよね。
その場合、Elastic IPを利用して固定のIPアドレスをEC2に割り当てることで、常に同じIPアドレスを保持することができ、運用がスムーズになります。
a.Elastic IP アドレスを割り当てる
[Elastic IP アドレスを割り当てる]ボタンを押して、EC2を作成します。
b.Elastic IP アドレスの関連付け
EC2のインスタンスを選択して関連付けます。
作成済のEC2(インスタンス)を選択しましょう。
WordPressのセットアップ
EC2でAmazon Linuxを起動した状態では、WordPressを動かすために必要なミドルウェアが入っていないです。そのため、PHPやWebサーバ、データベースのインストールが必要になります。
ここからは、EC2にターミナルでログインし、コマンドベースでの作業をします。割り当てたIPアドレスと、ダウンロードしたキーペアでSSHログインを行います。
% ssh -i "~/.ssh/WordPress-ec2.pem" ec2-user@XXX.XXX.XXX.XXX
ここからの手順は、Amazon Linux 2023のLAMP環境の公式情報を参照で進めましょう。
SSHログイン後は、システムを最新の状態にしておきましょう。
$ sudo dnf update -y
Last metadata expiration check: 5:38:04 ago on Thu Aug 10 23:47:34 2023.
Dependencies resolved.
Nothing to do.
Complete!
私の場合は、とくにアップデートが無かったようです。
Apacheのインストール
a.Webサーバーとして今回はApacheをインストールしておきます。
$ sudo yum install httpd -y
b.Apacheを起動をします。
$ sudo systemctl start httpd
c.自動起動を有効にします。
自動起動は、EC2のインスタンスを停止させ、再度起動させたときに、Apacheが自動で起動するようにします。
$ sudo systemctl enable httpd
PHPのインストール
PHPのインストールを行います。いまインストールするとPHP8がインストールされます。
$ sudo yum install php-fpm php-mysqli php-json php php-devel -y
インストールされたかどうかの確認です。
$ php -v
PHP 8.2.7 (cli) (built: Jun 6 2023 21:28:56) (NTS gcc x86_64)
Copyright (c) The PHP Group
MySQLのインストール
データベースとして今回はMySQLをインストールしておきます。
a.MySQLをインストールします。
$ sudo dnf install mariadb105-server
b.MySQLを起動します。
$ sudo systemctl start mariadb
c.初期化とアカウント作成を行います。
$ sudo mysql_secure_installation
Switch to unix_socket authentication [Y/n] Y
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
d.自動起動を有効にします。
$ sudo systemctl enable mariadb
e.MySQLにログインしましょう。
$ mysql -u root -p
f.ログインが出来たら、WordPress用のテーブルの生成を行います。
> CREATE DATABASE wordpress_table CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
g.WordPress用のユーザーとPWの生成を行います。
> CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'PasswordXXXXX';
> GRANT ALL PRIVILEGES ON wordpress_table.* TO 'wordpress_user'@'localhost';
これでOKです。
/var/www/の権限設定まわり
/var/www/をドキュメントルートにしてWordPressの設置を行っていきます。
Apache httpd は、Apache ドキュメントルートと呼ばれるディレクトリに維持されるファイルを提供します。Amazon Linux Apache ドキュメントルートは
/var/www/html
であり、デフォルトでは root によって所有されます。引用:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2023.html#prepare-lamp-server-2023
ec2-user
アカウントがこのディレクトリで複数のファイルを操作することを許可するには、ディレクトリの所有権とアクセス許可を変更する必要があります。このタスクを行うには、複数の方法があります。このチュートリアルでは、ec2-user
をapache
グループに追加し、/var/www
ディレクトリの所有権をapache
グループに付与し、グループへの書き込み権限を割り当てます。
ファイルの書き込み権限などの問題を解決しておくために、参考サイトの手順に沿って進めます。
$ sudo usermod -a -G apache ec2-user
$ sudo chown -R ec2-user:apache /var/www
$ find /var/www -type f -exec sudo chmod 0664 {} \;
WordPressのダウンロードとインストール
a.wgetコマンドでWordPressをダウンロードします。
$ wget https://ja.wordpress.org/latest-ja.tar.gz
$ tar -zxvf latest-ja.tar.gz
b.ドキュメントルートにWordPressを設置します。
$ mv wordpress/* /var/www/html/
c.WordPressの設定ファイルを設置します。
$ cp wp-config-sample.php wp-config.php
d.各種設定を行います。
- DB_NAME:データベース名
- DB_USER:データベースユーザー名
- DB_PASSWORD:データベース接続パスワード
- DB_HOST:データベース接続ホスト名
上記項目は、データベース設定時の情報で記載します。
「Authentication unique keys and salts」の項目は、URLにアクセスしてその内容をコピーして設定すると良いでしょう。
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'database_name_here' );
/** Database username */
define( 'DB_USER', 'username_here' );
/** Database password */
define( 'DB_PASSWORD', 'password_here' );
/** Database hostname */
define( 'DB_HOST', 'localhost' );
/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );
/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );
/**#@+
* Authentication unique keys and salts.
*
* Change these to different unique phrases! You can generate these using
* the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}.
*
* You can change these at any point in time to invalidate all existing cookies.
* This will force all users to have to log in again.
*
* @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' );
WordPressの設定は以上で、ブラウザでアクセスすれば、初期設定画面が表示されますが、その前にEC2のセキュリティグループの見直しを行います。
セキュリティグループの変更
デフォルトでEC2に割り当てたセキュリティグループでは、SSHの接続のみ許可されています。
ブラウザでWordPressの設定画面にアクセスするためには、HTTP接続を許可する必要があり、「192.0.0.0/32」と記載している部分を自宅のIPアドレスにすれば、自宅からのみのアクセス許可となりますし、「0.0.0.0/0」にすれば、どこからでもアクセス可能となります。
ブラウザでWordPressの初期設定画面にアクセス
ここで、ようやくブラウザでアクセスします。
今回は例えば、仮のアドレスですが、http://55.161.41.221のようなEC2に割り当てた、Elastic IPアドレスにアクセスすると、初期設定画面が表示されます。
各自、必要な項目を設定してインストールを完了させます。無事完了で、WordPressのセットアップ終了です!