moodle のお勉強とプラグイン開発のための環境として
AWS Cloud9 に開発環境を構築しましたので手順を残しておきます。
moodle を例に環境構築していますが、PHPの汎用的な開発・デバッグ環境として利用できると思います。
# 利用環境
- AWS Cloud9 (t3.small + Amazon Linux2)
- PHP 8.0
- MariaDB 10.5
- Moodle v3.11.5
環境構築
AWS CloudShell で下記コマンドを実行し、Cloud9 環境を作成する。
aws cloud9 create-environment-ec2 \
--name MoodleDev \
--instance-type t3.small \
--image-id amazonlinux-2-x86_64
コマンドが成功すると environmentoId
が表示される
{
"environmentId": "xxxxxxxxxxxxxxxxx"
}
default VPC を削除してしまっている場合は、次セクションの操作で EC2 を作成するサブネットを指定して環境構築します。
(オプション)Default VPC 以外に環境作成
まず、現リージョンのサブネットを確認する
aws ec2 describe-subnets --query "Subnets[*].[{ID:SubnetId,CIDR:CidrBlock},Tags[?Key=='Name'].Value][]"
{
"ID": "subnet-0697cc495da4d4c45",
"CIDR": "172.21.20.0/24"
},
[
"PublicSub"
],
{
"ID": "subnet-03d83b3c53b2e1155",
"CIDR": "10.0.100.0/24"
},
[
"Pri-DebSubNet"
],
作成するサブネットを指定して Cloud9 環境を作成する。
aws cloud9 create-environment-ec2 \
--name MoodleDev \
--instance-type t3.small \
--image-id amazonlinux-2-x86_64 \
--subnet-id subnet-xxxxxxxxxxxxx
環境設定
以下の作業はCloud9
のTerminal
で行う
タイムゾーン設定
タイムゾーンを日本
に変更します
sudo timedatectl set-timezone Asia/Tokyo
設定を確認します
date
Sun Feb 13 14:07:38 JST 2022
PHP 環境設定
インストールされているPHPは 7.2なので、8.0をインストールします。
PHP 7.2 系を削除
sudo amazon-linux-extras disable lamp-mariadb10.2-php7.2
sudo amazon-linux-extras disable php7.2
sudo yum -y remove php-*
PHP 8.0 系をインストール
sudo amazon-linux-extras enable php8.0
sudo amazon-linux-extras install -y php8.0
sudo yum -y install php-devel
sudo yum -y install php-pear
デバッガインストール
sudo pecl install xdebug
下記警告が出力されるが、別途設定してあるので問題ない
configuration option "php_ini" is not set to php.ini location
You should add "zend_extension=/usr/lib64/php/modules/xdebug.so" to php.ini
拡張パッケージインストール(moodle用オプション)
zip パッケージ
sudo yum -y install libzip-devel
sudo pecl install zip
下記 Segmentation fault が出力されるが、別途設定してあるので問題ない
configuration option "php_ini" is not set to php.ini location
You should add "extension=zip.so" to php.ini
Segmentation fault
日本語パッケージ
sudo yum -y install php-mbstring
インストールが成功したら設定ファイルを作成する。
; Enable mbstring extension module
extension=mbstring
; ↓ こちらを追記。 ↑ こちらは元々記載されている。
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
グラフィックライブラリ
sudo yum -y install php-gd
国際化関数
sudo yum -y install php-intl
PHP 設定変更(moodle用オプション)
POST できる上限数変更
max_input_vars
パラメータを変更する
; ↓ 元々コメントアウトされているので、非コメント化して値を変更
max_input_vars = 5000
xdebug 設定
Cloud9 IDE がデバッグできるように xdebug を設定します。
設定ファイル変更
xdeubg 3
の設定を追加する。
zend_extension=/usr/lib64/php/modules/xdebug.so
xdebug.mode=debug
;; ↓ こちらを追記。 ↑ こちらは元々記載されている。
xdebug.start_with_request=Yes
xdebug.log=/var/log/xdebug.log
xdebug ログファイル準備
sudo touch /var/log/xdebug.log
sudo chmod 666 /var/log/xdebug.log
Cloud 9 IDE の xdebug 追加
Cloud9 IDE のランナーを追加する
AWS Cloud9 統合開発環境 (IDE) でビルダー、ランナー、デバッガーの操作 ドキュメント
mkdir /home/ec2-user/environment/.c9/runners/
// This file overrides the built-in PHP (built-in web server) runner
// For more information see http://docs.aws.amazon.com/console/cloud9/change-runner
{
"script": [
"cat "
],
"selector": "^.*\\.(php)$",
"working_dir": "$project_path",
"debugger": "xdebug",
"debugport": 9003,
"info": "Starting PHP xdebug Server",
"trackId": "PHPServer"
}
httpd 設定
DocumentRoot 変更
# 元々ある DocumentRoot をコメントアウト
# DocumentRoot "/var/www/html"
# 下記パラメータを追記
DocumentRoot "/home/ec2-user/environment"
<Directory "/home/ec2-user/environment">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
パーミッション変更
Apache プロセスが、プロジェクトツリーにアクセスできるようにパーミンション変更
cd /home
chmod 777 ec2-user
サーバ再起動
各サーバプロセスを再起動しておく
sudo systemctl restart httpd
sudo systemctl restart php-fpm
EC2 セキュリティグループ設定
ブラウザからどこからでもアクセスできるようにセキュリティグループのインバウンドルールを設定する。
セキュリティグループ一覧取得
設定変更するセキュリティグループを特定する。
aws ec2 describe-security-groups --query "SecurityGroups[].[GroupName,GroupId]" --output table
--------------------------------------------------------------+---------------+
| DescribeSecurityGroups | |
+-------------------------------------------------------------+---------------+
| aws-cloud9-MoodleDev-xxxxxxx-InstanceSecurityGroup-yyyyyy | sg-hogehoge |
| default | sg-fugafuga1 |
| default | sg-fugafuga2 |
+-------------------------------------------------------------+---------------+
aws-cloud9
から始まるグループの ID
をメモする。
セキュリティグループ変更
Cloud9 で使用しているEC2セキュリティグループのインバウンドルールを追加する。
aws ec2 authorize-security-group-ingress --protocol tcp --port 80 --cidr 0.0.0.0/0 --group-id {セキュリティグループID}
結果は以下の通りになる
{
"Return": true, // ← 成功を表す
"SecurityGroupRules": [
{
"SecurityGroupRuleId": "sgr-mohemohe",
"FromPort": 80, // ← 80 番
"GroupOwnerId": "1234567890",
"ToPort": 80, // ← 80 番
"IpProtocol": "tcp",
"CidrIpv4": "0.0.0.0/0",
"GroupId": "sg-hogehoge",
"IsEgress": false
}
]
}
動作確認
EC2 IPアドレス確認
EC2 インスタンスのパブリックIPアドレスを確認しておく
aws ec2 describe-instances コマンドドキュメント
aws ec2 describe-instances --query "Reservations[*].Instances[*].PublicIpAddress"
[
[
"52.194.219.49"
]
]
PHP 動作確認
phpinfo()
を出力する準備をするためのファイルを作成する。
<?php phpinfo(); ?>
正しく出力されるか確認する
(IPAddressはサンプルです。ここで取得したIPアドレスを入力します。)
curl http://52.194.219.49/info.php
<html>〜</html>
ブラウザでアクセスする
上記URLにブラウザでアクセスして、PHP の情報が表示されることを確認する。
ここから下は moodle を例にセットアップします。
moodle以外でも、ご自身のプロジェクトを展開することによってさまざまな
PHPプロジェクトの開発環境に対応できると思います。
MariaDB インストール
リポジトリ追加
デフォルトのままだと 5.x
系のリポジトリを参照してしまうので、10.5系
のリポジトリを追加する
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
インストール
もともとインストールされている MariaDb
のコンポーネントが php7.2系
なので削除する。
インストールされているパッケージを確認する
yum list installed | grep mariadb
mariadb.x86_64 3:10.2.38-1.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
mariadb-common.x86_64 3:10.2.38-1.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
mariadb-config.x86_64 3:10.2.38-1.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
mariadb-libs.x86_64 3:10.2.38-1.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
パッケージを削除する
sudo yum -y remove maria*
新しいMariaDB
をインストールする
sudo yum -y install mariadb
sudo yum -y install mariadb-server
MariaDB
を起動する
sudo systemctl start mariadb
MariaDB ユーザ作成
データベースに接続して、DBのユーザを作成する
MariaDB に接続する
sudo mysql -h localhost -P 3306 -u root
DBでのコマンドが成功した場合は、以下の結果が表示される
Query OK, 0 rows affected (0.001 sec)
新しいユーザを作成し、権限を付与する
CREATE USER moodleuser@localhost IDENTIFIED BY 'moodle';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO moodleuser@localhost;
作成されたユーザを確認する
SELECT User, Host FROM mysql.user;
+-------------+----------------------------------------------+
| User | Host |
+-------------+----------------------------------------------+
| | ip-10-0-1-88.ap-northeast-1.compute.internal |
| | localhost |
| mariadb.sys | localhost |
| moodleuser | localhost |
| mysql | localhost |
| root | localhost |
+-------------+----------------------------------------------+
6 rows in set (0.001 sec)
ユーザパスワード設定
set PASSWORD for moodleuser@localhost=PASSWORD('moodle');
一度、データベースから切断する
exit
データベース作成
作成したmoodleuser
でログインし直してデータベースを作成する
mysql -h localhost -P 3306 -u moodleuser -p
パスワード入力を促されるので ここで設定したパスワードを入力する。
Enter password: moodle (←入力したパスワードは表示されない)
データベースを作成する
CREATE DATABASE moodle ;
データベースが作成できたらデータベースから切断する
exit
Moodle インストール
git リポジトリからクローンする
cd ~/environment
git clone https://github.com/moodle/moodle.git
cd moodle
利用したいバージョンに切り替える
git checkout v3.11.5
データフォルダ作成
moodle のテンポラリデータフォルダを作成する
cd ~/environment
mkdir moodledata
moodleサーバセットアップ時にコンフィグファイルを書き込むので、書き込みパーミッション設定する
chmod 777 moodledata
chmod 777 moodle
moodle セットアップ
ブラウザでURLアクセスする。
http://52.193.176.188/moodle/
言語を選択してください
日本語 (ja)
パスを確認する
データディレクトリはそのまま
データベースドライバを選択する
MariaDB (native/mariadb)
を選択する
データベース設定
項目 | 設定値 |
---|---|
データベースホスト | localhost (デフォルト) |
データベース名 | moodle (デフォルト) |
データベースユーザ | moodleuser |
データベースパスワード | moodle |
テーブル接頭辞 | mdl_ (デフォルト) |
データベースポート | 3306 |
著作権表示
内容を確認し続けるボタン
をクリック
インストレーション - Moodle 3.11.5 (Build: 20220117)
内容を確認し続けるボタン
をクリック
(この後しばらく待ち時間が発生)
プラグインインストール結果画面)
内容を確認し続けるボタン
をクリック
一般設定
- パスワード
- 姓
- 名
- メールアドレス
- タイムゾーン
入力しプロファイルを更新する
をクリック
フロントページ設定
- 長いサイト名
- サイト省略名
- [新しい設定]-[送信メール設定] を
空っぽ
に
入力し変更を保存する
をクリック