😄

EC2にLAMPサーバーを構築してWordPressをインストールする

に公開

EC2にLAMPサーバーを構築してWordPressをインストールする

LAMPサーバーを構築してWordPressをインストールする。

前提条件

  • アカウントが作成済み
  • EC2を起動済み
  • OSはAmazon Linux 2023

firewallとfail2banの設定
学習が目的ではありますが、念のためにインストールして設定を行います。
下記記事にまとめました。

Apacheのインストール

下記コマンドだけでとりあえずWebサーバーが起動し、「# It works!」と表示される。

apacheをインストール

sudo dnf install httpd

apacheを自動的に起動するようにする

sudo systemctl enable httpd

apacheサービスを開始する

sudo systemctl start httpd

PHPのインストール

AWSのドキュメントを参考に必要なPHP関連のパッケージをインストールします。

インストール

sudo dnf install -y php-fpm php-mysqli php-json php php-devel

動作確認

phpの動作確認のために動作確認用のファイルを作成し、phpinfoのページが表示されればOKです。
サーバーを再起動させるとphpの設定を読み込んで実行できるようになります。

sudo echo "<?php phpinfo(); ?>" >> /var/www/html/index.php
sudo systemctl restart httpd

画面にはこんな感じのUIが表示されます。
画面

MariaDBのインストール

インストール

バージョンは適宜変更してください

sudo dnf install mariadb105-server

設定ファイルの作成

幅広い文字を扱えるようにするため、下記設定ファイルを作成

sudo vim /etc/my.cnf.d/mariadb.cnf

# mariadb.cnf
[mysqld]
character-set-server=utf8mb4

[client]
default-character-set=utf8mb4

データベースの作成

まだデータベース管理ユーザーは作ってないのでrootユーザーで入る

sudo mysql -u root -h localhost

# ここからデータベース内
MariaDB [(none)]> CREATE DATABASE wp_database;

ユーザー作成

MariaDB [(none)]> CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'wp_password';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON `wp_database `.* TO "wp_user"@"localhost";
MariaDB [(none)]> FLUSH PRIVILEGES;

WordPressのインストール

インストール

wgetが必要です

sudo dnf install -y wget
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz

設定ファイルのコピー

cp wordpress/wp-config-sample.php wordpress/wp-config.php

データベースの設定を編集

define( 'DB_NAME', 'wp_database' );

/** Database username */
define( 'DB_USER', 'wp_user' );

/** Database password */
define( 'DB_PASSWORD', 'wp_password' );

/** Database hostname */
define( 'DB_HOST', 'localhost' );

AuthKeyはダメなことですが今回スルー

ドキュメントルートにコピー

sudo cp -r wordpress/* /var/www/html/

パーマリンク設定

sudo cp -pi /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_org
sudo vim /etc/httpd/conf/httpd.conf

# 下記のように変更
AllowOverride All

権限を変更する

SGID(Set Group ID)を設定することで今後作成されるファイルやディレクトリは親ディレクトリのグループを継承する。これによりグループ権限を統一することができる。

# /var/wwwとファイルの所有権をapacheユーザーに付与
sudo chown -R apache:apache /var/www

sudo chmod 2775 /var/www
find /var/www -type d -exec sudo chmod 2775 {} \;
find /var/www -type f -exec sudo chmod 0644 {} \;

完了

以下のページが表示されば完了です

完了

パッケージインストールコピペ用

必要なパッケージを一発でインストールできるようまとめました

sudo dnf install -y wget && \
	httpd && \
	php-fpm php-mysqli php-json php php-devel && \
	mariadb105-server

これをAnsibleで自動インストールに置き換えるのも面白そうなので今後やってみようと思います。

参考記事

最後に

間違っていることがあれば、コメントに書いていただけると幸いです。
よろしくお願いいたします。

GitHubで編集を提案

Discussion