インフラエンジニア志望の私は、勉強の一環としてAWSを使い、WordPressを構築しました。
前の記事でEC2インスタンスの作成からSSH接続までの手順をまとめましたが、この記事ではSSH接続後のApacheをインストールからWordPressをインストールするまでを手順でまとめました。
同じようにWordPress構築やAWSの学習している方の参考になれば幸いです。
構築手順
1. Apacheをインストール
2. PHPをインストール
3. MariaDBをインストール
4. phpMyAdminをインストール
5. root権限を持った管理者ユーザー作成
6. WordPressをインストール
7. WordPressをブラウザ表示
1. Apacheをインストール
Apacheとは世界で最も有名で広く使われているWebサーバーソフトのひとつです。
ブラウザからのリクエスト(URLアクセス)を受け取り、WordPress(PHP)に処理を渡して、結果を返します。
①WordPress を動かすための Web サーバーである Apache をインストールします
sudo yum install httpd -y
②Apacheを起動します。
sudo systemctl start httpd
③サーバー開始時に自動的に起動するように設定します。
sudo systemctl enable httpd.service
④現在使っているec2-userをApacheグループに追加し、/var/www/配下にファイルを書き込めるようにします。
sudo usermod -a -G apache ec2-user
⑤/var/www とその中身の所有者:グループを ec2-user:apache に変更します。
sudo chown -R ec2-user:apache /var/www
⑥/var/wwwとその中のディレクトリ・ファイルのアクセス権を設定します。
sudo chmod 2775 /var/www
find /var/www -type d -exec sudo chmod 2775 {} \;
find /var/www -type f -exec sudo chmod 0664 {} \;
2. PHPをインストール
PHPとはWebサイトやWebアプリケーションを作るためのプログラミング言語です。
WordPressはPHPで書かれたWebアプリケーションのため、PHPをサーバーに入れないとただの文字ファイルとして扱われてしまい、動作しません。
①利用可能なPHPバージョンを確認します。
amazon-linux-extras list
②PHP8.4が参照されるように事前にコマンドを実行します。
sudo amazon-linux-extras enable php8.2
③WordPressで必要なPHPモジュールをインストールします。
sudo yum install php php-cli php-mysqli php-gd php-xml php-mbstring php-curl php-zip php-json php-fpm -y
※インストールされるモジュール
- php→PHP本体
- php-cli→コマンドライン用のPHP
- php-mysqli→WordPressがデータベース接続するときに必要
- php-gd→画像処理
- php-xml→XML関連処理
- php-mbstring→マルチバイト文字列処理
- php-curl→外部API通信やWordPressアップデート時に必要
- php-zip→プラグインやテーマのアップロード・解凍で必要
- php-json→JSON処理
- php-fpm→FastCGIプロセスマネージャ
④インストール後、Apacheを再起動してPHPを読み込ませます。
sudo systemctl restart httpd
3. MariaDBをインストール
MariaDBとはデータベース管理システム(RDBMS) です。
WordPressの記事・ユーザー情報・設定などのデータを保存・管理するために利用します。
①WordPress のデータベースとして使用する MariaDB をインストールします。
sudo yum install mariadb mariadb-server
②MariaDBの起動と自動起動設定します
sudo systemctl start mariadb
sudo systemctl enable mariadb
③初期のセキュリティ設定をします。
sudo mysql_secure_installation
Enter current password for root (enter for none): ← そのままEnter(最初は空が多い) Set root password? [Y/n] Y ← Y を推奨(強いパスワードを設定) New password: ******** Re-enter new password: ******** Remove anonymous users? [Y/n] Y ← Y(匿名ユーザは不要・危険) Disallow root login remotely? [Y/n] Y ← Y(通常はY。リモート管理が必要なら別途ユーザ作成) Remove test database and access to it? [Y/n] Y ← Y(不要) Reload privilege tables now? [Y/n] Y ← Y(変更を即反映)
4. phpMyAdminをインストール
phpMyAdminとはデータベース(MySQLやMariaDB)をブラウザから簡単に操作できるツールです。
①phpMyAdmin関連パッケージをインストールします。
sudo yum install php-mbstring -y
②Apacheを再起動します。
sudo systemctl restart httpd
③cdコマンドでApacheドキュメントルートに移動します。
cd /var/www/html
④wgetコマンドを使ってphpMyAdminをダウンロードします。
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
⑤phpMyAdmin フォルダを作成して、phpMyAdmin パッケージを展開(解凍)します。
mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
⑥元の tar.gz ファイルをrmコマンドで消します。
rm phpMyAdmin-latest-all-languages.tar.gz
⑦Webブラウザからhttp://[パブリックDNS]/phpMyAdmin にアクセスし、ブラウザ表示します。
5.root権限を持った管理者ユーザーを作成
①設定とユーザー一覧のバックアップを取ります。
sudo mysqldump mysql --tables user global_priv > mysql_users_backup.sql
②MariaDBにログインします。
sudo mysql -u root -p
③管理者ユーザーを作成します。
※パスワードは任意のパスワードを設定します。
CREATE USER '任意の管理者名'@'localhost' IDENTIFIED BY 'password
';
④rootと同じ権限を付与します。
GRANT ALL PRIVILEGES ON *.* TO '任意の管理者名
'@'localhost' WITH GRANT OPTION;
⑤権限を反映させます。
FLUSH PRIVILEGES;
⑥EXITでMariaDBを抜けて、管理者ユーザーでログインできるか確認します。
mysql -u 任意の管理者名
-p
⑦権限が付与されているか確認します。
※ALL PRIVILEGES ON *.*が表示されればOK です。
SHOW GRANTS FOR '任意の管理者名'@'localhost';
⑧rootユーザーの使用を無効化します。
※ MariaDB 10.4 以前では ACCOUNT LOCKが使えないため、代わりにRENAME USER ‘root@localhost’ TO ‘root_disabled’@’localhost’;を使用してください。
ALTER USER 'root'@'localhost' ACCOUNT LOCK;
⑨無効化されたか確認します。
※出力にACCOUNT LOCKが含まれていればOKです。
SHOW CREATE USER 'root'@'localhost';
6. WordPressをインストール
WordPressとは無料でWebサイトを作成できるソフトウェアで、ブログやホームページなどのWebサイトの構築・運用を行うCMSの一つです。
CMSとは、Content Management Systemの略語で、コンテンツ管理システムと呼ばれるWebサイトを作成・更新・運営するシステムです。
①最新の WordPress を EC2 インスタンス上にダウンロードして展開(解凍)します。
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
②mysql クライアントを使って MariaDB に 管理者ユーザーでログインし、WordPressの為のデータベースをセットアップします。
mysql -u 任意の管理者名 -p
③CREATE USERでデータベースのユーザーとパスワードを作成します。
※パスワード部分は独自のパスワードを設定します。
CREATE USER '任意のユーザー名'@'localhost' IDENTIFIED BY 'password';
④CREATE DATABASEでデータベースを作成します。
※データベース名はお好みに設定してください。
CREATE DATABASE `任意のデータベース名
`;
⑤GRANTによって、データベースに対してさきほど作成したユーザーの権限を追加します。
GRANT ALL PRIVILEGES ON `任意のデーターベース名`.* TO '任意のユーザー名'@'localhost';
⑥すべての変更を有効にするため、データ権限をフラッシュします。
FLUSH PRIVILEGES;
⑦mysqlクライアントを終了します。
exit
⑧wp-config-sample.php ファイルを wp-config.php という名前でコピーします。
cp wordpress/wp-config-sample.php wordpress/wp-config.php
⑨vimでwp-config.php ファイルを編集します。
vim wordpress/wp-config.php
⑩DB_NAME、DB_USER、DB_PASSWORDをmysqlクライアントでセットアップした内容に変更します。
define( 'DB_NAME', '任意のデータベース名');
define( 'DB_USER', '任意のユーザー名');
define( 'DB_PASSWORD', 'password');
※ここは自分で設定したパスワードに変更します。
⑪WordPress をドキュメントルートではなく、その下の子ディレクトリで実行するために/html/配下に/blog/ディレクトリを作成しコピーします。
mkdir /var/www/html/blog
cp -r wordpress/* /var/www/html/blog/
⑫vimでhttpd.conf ファイルを開きます。
sudo vim /etc/httpd/conf/httpd.conf
⑬AllowOverrideをNoneからAllに変更します。
※Allに変更することで .htaccess が有効になります。
<Directory "/var/www/html">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html
#options
# for more information.
# Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
# AllowOverride All
#
# Controls who can get stuff from this server.
# Require all granted </Directory>
⑭Apache (httpd) が /var/www/ 配下に書き込みできるように権限を設定します。これにより、WordPress の操作が可能になります。
sudo chown -R apache /var/www
sudo chgrp -R apache /var/www
sudo chmod 2775 /var/www
find /var/www -type d -exec sudo chmod 2775 {} \;
⑮Apacheを再起動します。
sudo systemctl restart httpd
7. WordPressをブラウザ表示
①Webブラウザーでhttp://[パブリックDNS]/blog/wp-admin/install.phpを入力し、WordPressのインストール画面にアクセスします。
- 言語設定で日本語を選び、Continueをクリックします。
②必要情報を入力します。
- サイトのタイトルに任意のタイトル名を入力します。
- ユーザー名に任意のユーザー名を入力します。
- パスワードに任意のパスワードを入力します。
- メールアドレスを入力します。
- WordPressをインストールをクリックします。
③インストールが成功しました。
- ログインをクリックします。
④ユーザー名またはメールアドレス、パスワードを入力し、ログインをクリックします。
⑤管理画面にアクセスでき、セットアップが完了しました。