2021年4月4日日曜日

CloudFormationのチュートリアルでPHPのバージョンが古くてWordPressが起動できない

AWS CloudFormationのチュートリアルをしていてWordPressを起動してとしたらバージョンエラーになりました。チュートリアルなのに上手く行かないのは話題が古いからかもしれません。

Your server is running PHP version 5.3.29 but WordPress 5.7 requires at least 5.6.20.

と出ていました。WordPressではPHPは5.6以降でないと使えないようです。

ちなみに使ったインスタンスはus-east-1のAMIでami-60b6c60a です。


そもそも公式のアップデートは終わっているそうです。

https://aws.amazon.com/amazon-linux-ami/

Amazon Linux AMI 2018.03 Packagesの対応バージョンはこちらにあってphp-5.3.29となっています。

https://aws.amazon.com/amazon-linux-ami/2018-03-packages/

・・とこちらに書いてありました。

https://stackoverflow.com/questions/56544396/specify-version-for-yum-in-cloud-formation-template


EC2の中でPHPをアップデートする

手動でアップデートする方法です。

EC2にSSHして、確認します。

$ php -v

PHP 5.3.29 (cli) (built: May 12 2015 22:42:19)  


こちらを参考にしてPHP5.6に上げました。

https://stackoverflow.com/questions/29206795/how-to-install-php5-6-in-amazon-linux

バージョンを確認すると、確かに上がっています。

$ php -v

PHP 5.6.40 (cli) (built: Oct 31 2019 20:35:16) 

ec2のウェブページを再読込すると、WordPressのインストール設定画面になりました。


Cfnテンプレートを編集する

元のMetadataの部分。configSetsでwordpress_installという変数から3つのコマンド群を呼んでいます。

Metadata:
AWS::CloudFormation::Init:
configSets:
wordpress_install:
- install_cfn
- install_wordpress
- configure_wordpress


これに、update_phpというコマンド群と付け足しました。stackoverflowに載っていたphp5.6に上げているコードです。https://stackoverflow.com/questions/29206795/how-to-install-php5-6-in-amazon-linux

Metadata:
AWS::CloudFormation::Init:
configSets:
wordpress_install:
- install_cfn
- install_wordpress
- configure_wordpress
- update_php
update_php:
commands:
01_Remove_OLD_Apache:
command: sudo service httpd stop && sudo yum -y erase httpd httpd-tools apr apr-util
02_Remove_OLD_PHP:
command: sudo yum -y remove php-*
03_Install_PHP56:
command: sudo yum -y install php56
04_add_php_sup:
command: sudo yum -y install php56-xml php56-xmlrpc php56-soap php56-gd
05_install_mysql:
command: sudo yum -y install php56-mysqlnd
06_start:
command: sudo service httpd start
07_restart:
command: sudo service httpd restart    

最終的には、WebserverのPropertiesのUserDataの中から呼び出されるんでしょうか。

Properties:
ImageId: !FindInMap [AWSRegionArch2AMI, !Ref 'AWS::Region', !FindInMap [AWSInstanceType2Arch, !Ref InstanceType, Arch]]
InstanceType:
Ref: InstanceType
KeyName:
Ref: KeyName
SecurityGroups:
- Ref: WebServerSecurityGroup
UserData:
Fn::Base64: !Sub |
#!/bin/bash -xe
yum update -y aws-cfn-bootstrap
/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource WebServer --configsets wordpress_install --region ${AWS::Region}
/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackId} --resource WebServer --region ${AWS::Region}

更新中に間違えたところ

yum -y の -y を入れていなかったのでyes/noが入力されずに途中で止まっていた。
止まっていても何が原因か出力できなかった。

name:
    commands:
        hoge:
            command:
        hoge2:
            commnad:

という書き方がよく分かっておらず、適当につないでしまっていた。



0 件のコメント:

コメントを投稿