なにしたの
とあるミッションがあり、Wordpressにプラグインを入れて動作確認をすることが必要になりました。
最近あまりwordpressを触っていないので、AWS上に軽く立てて動かそうというのが狙いです。
以下の解説はインストール開始以降に絞っており、事前にAWSでインスタンスを立ててnetwork設定したりするところは大いに割愛しています。
参考にしたもの
いろいろバージョン
- EC2
- Amazon Linux 2023 AMI 2023.3.20240304.0 x86_64 HVM kernel-6.1
- mysql
- Ver 8.0.36 for Linux on x86_64 (MySQL Community Server - GPL)
- php
- php8.2-mysqlnd-8.2.15-1.amzn2023.0.1.x86_64
- wordpress
- 6.4.3
インストール前提事項
aws上にEC2を立てています。
VPC、interet gateway、SecurityGroupはもともと作ってあります。
EC2を立てた後、コンソール上public ipやホスト名が見当たらないなーと少々悩みましたが、
EC2インスタンス作成の際、VPCのpublic ipを自動で取得するようになっていませんでした。(忘れがち)
インスタンスを立て直し、正しく設定してssh接続が可能になりました。
wordpressを拾ってきて解答
EC2にsshログイン後、ec2-userのhomeにてバイナリを拾ってきて解凍。
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
mysqlのインストール
よくわからないので適当にググって開始。
リポジトリに接続し、community-serverをインストール。
sudo yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
sudo yum install -y mysql-community-server
エラーが出たので、以下を実行。なんでそうしたのかは覚えていないけれど・・・
sudo yum install http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/compat-openssl10-1.0.2o-3.el8.x86_64.rpm
その後
sudo yum install -y mysql-community-server
すると
Import of key(s) didn't help, wrong key(s)?
~
You can remove cached packages by executing 'yum clean packages'.
Error: GPG check FAILED
[ec2-user@ip-10-0-8-113 ~]$
とか出る。GPGが整合取れてないということらしい。
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
sudo yum update
sudo yum install -y mysql-community-server
で成功。
起動とステータス確認
sudo systemctl start mysqld
sudo systemctl status mysqld
めでたく起動しました。
なお、mysqlのrootの初期パスワードはこの中に入ってます。
sudo cat /var/log/mysqld.log
ログを漁ると、パスワードが見つかります。
mysqlのrootのパスワードを変更しよう
rootのパスワード変更が必要と思い、これもググって拾ったスクリプトを実行してみたが
mysql> set password for root@localhost=password('rootの新パスワード');
エラーになっちまった。ので調べてちゃんとSQLを投げる。
USER()でログインDBユーザのことを示すそうです。へえー。
mysql> ALTER USER USER() IDENTIFIED BY 'rootの新パスワード';
Query OK, 0 rows affected (0.01 sec)
うまく行きました。ではwodpressユーザを作成
mysql>
mysql> CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'wordpressパスワード';
Query OK, 0 rows affected (0.02 sec)
これでmysqlのrootのパスワードが変更、wordpressユーザ作成に成功しました。
wordpress用のdatabaseの作成
CREATE DATABASE `wordpress-db`;
GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
FLUSH PRIVILEGES;
databaseを作った後、PHPからmysqlへの接続用にwp-config.phpを修正する。
nano wordpress/wp-config.php
うーん、nanoはどうにも使いづらい。昔ながらのvim(vi)がらくちん。
今の人はvimなんか使わないのかな・・・。
DB_NAME
DB_USER
DB_PASSWORD
の設定を実施。
あとは認証鍵類(ランダム文字列)の再設定。AUTH_KEY,SALT等を更新
define('AUTH_KEY', 'ひみつ');
define('SECURE_AUTH_KEY', 'ひみつ');
define('LOGGED_IN_KEY', 'ひみつ');
define('NONCE_KEY', 'ひみつ');
define('AUTH_SALT', 'ひみつ');
define('SECURE_AUTH_SALT', 'ひみつ');
define('LOGGED_IN_SALT', 'ひみつ');
define('NONCE_SALT', 'ひみつ');
と、変更しました。
apacheインストールとwordpress一式をコピー
apacheが入っていないことに気づいたのでインストール。
ec2-userのhomeに展開されてるwordpress一式をドキュメントルートにコピー
そんでもってhttpd.confを変更
sudo yum install httpd
sudo cp -r wordpress/* /var/www/html/
sudo vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html"> AllowOverride None 行を AllowOverride All に変更
これは問題なく行きましたね。
グラフィックライブラリのインストール
sudo yum install php-gd
実行後、検証
[ec2-user@ip-10-0-8-113 ~]$ sudo yum list installed php-gd
Error: No matching Packages to list
なぜかエラーに?
[ec2-user@ip-10-0-8-113 ~]$ sudo yum list installed php8.2-gd
Installed Packages
php8.2-gd.x86_64 8.2.15-1.amzn2023.0.1 @amazonlinux
[ec2-user@ip-10-0-8-113 ~]$
インストールには問題はなく、単にphp8.2で検索しないと出てこないという事でした
apahe関連の権限付与
この辺は定番かと思われますが、ちゃんとやらないとセキュリティあぶない。
合ってるのかな?知らんけど、機密はないので参考資料にある通りでいいや。
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 {} \;
find /var/www -type f -exec sudo chmod 0644 {} \;
めでたく、apache,mysql起動状態となりました。
が!publicのURLにブラウザからアクセスしても見れません。当然Networkの問題はあるだろうとみて、
セキュリティグループのルールにインバウンドのhttpを追加してみました。これは成功。443,8000はあるけど80はなかったみたい。
でもブラウザにhttpの応答はあるものの、画面にはit works! しか表示されません。これ何だっけ?apacheが動きましたよってことだったかな?
ドキュメントルートを再確認し、index.phpを表示しようとしたところ、index.phpのソースがなぜかそのまま表示されます。
いろいろ考えてみたが PHPがなかった ようです。
要するに、Amazon linux 2023は素では何にも入ってないってことですね。
sudo yum install php
Installed:
libsodium-1.0.18-13.amzn2023.0.1.x86_64
libxslt-1.1.34-5.amzn2023.0.2.x86_64
nginx-filesystem-1:1.24.0-1.amzn2023.0.2.noarch
php8.2-8.2.15-1.amzn2023.0.1.x86_64
php8.2-cli-8.2.15-1.amzn2023.0.1.x86_64
php8.2-fpm-8.2.15-1.amzn2023.0.1.x86_64
php8.2-mbstring-8.2.15-1.amzn2023.0.1.x86_64
php8.2-opcache-8.2.15-1.amzn2023.0.1.x86_64
php8.2-pdo-8.2.15-1.amzn2023.0.1.x86_64
php8.2-process-8.2.15-1.amzn2023.0.1.x86_64
php8.2-sodium-8.2.15-1.amzn2023.0.1.x86_64
php8.2-xml-8.2.15-1.amzn2023.0.1.x86_64
Complete!
これでめでたくphpの画面らしきものは出たのですが、
mysqlがないよ みたいな事でブラウザ画面上、怒られてます。
ということで、軽くググってphp8.2のインストール手順のyum installを投げてみる。
sudo yum install php8.2-cli php8.2-common php8.2-mysql php8.2-zip php8.2-gd php8.2-mbstring php8.2-curl php8.2-xml php8.2-bcmath
でも、どうしてもphp8.2-mysqlがインストールされず蹴られちゃうんですよね。
ということで調べたところ、 mysqliを入れるべし との情報を得ました
mysqliのインストール
sudo yum install php-mysqli
~
Installed:
php8.2-mysqlnd-8.2.15-1.amzn2023.0.1.x86_64
やりました!
最後に再起動
sudo systemctl restart httpd
以上でwordpressの初画面の表示が成功いたしましたとさ。
めでたしめでたし。