AWS の Linux2 は最適化された(?)パッケージが用意されている
- CentOS7
- Apache2
- PHP7.3
- PostgreSQL *コマンドは sudo でなく root で実行している(root パスワードを別途設定済み)
# yum update -y
# yum -y install httpd
# systemctl start httpd
*CentOS6系では chkconfig httpd on
# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
# systemctl is-enabled httpd
/var/www/ を ec2-user が利用できるように設定する
# usermod -a -G apache ec2-user
デフォルトの DocumentRoot である /var/www の権限を ec2-user : apache に変更 ディレクトリ(775)とファイル(664) で利用できるようにする
# chown -R ec2-user:apache /var/www
# chmod 2775 /var/www && find /var/www -type d -exec chmod 2775 {} ;
# find /var/www -type f -exec chmod 0664 {} ;
*2775 の 2 は setgid
ec2-user で所属グループの確認
ec2-user を再ログインして確認
$ groups ec2-user
Amazon Linux2 用にパッケージが用意されており、PHP7.3 はここからインストールする。
# amazon-linux-extras list
.....
# amazon-linux-extras info php7.3
# amazon-linux-extras install php7.3
amazon-linux-extras で足りないパッケージは、yum でインストールすると良い
$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer Downloading...
Composer (version 1.9.0) successfully installed to: /home/vagrant/composer.phar
Use it: php composer.phar
$ sudo mv bin/composer /usr/local/bin/composer
$ composer init
composer.json が作成される
$ composer install
Loading composer repositories with package information Updating dependencies (including require-dev) Nothing to install or update Generating autoload files
amazon-linux-extras では psql コマンドのみのインストールの模様
# amazon-linux-extras install postgresql10
# yum install -y postgresql-server postgresql-devel postgresql-contrib
# systemctl start postgresql # postgresql-setup initdb
# systemctl enable postgresql.service
# su - postgres
$ psql -l
could not change directory to "/home/ec2-user": Permission denied List of databases
.....
パスワードで制御するかIPで制御するか、はたまたその他の方式かはセキュリティポリシーによって違うので割愛 (postgres.conf & pg_hba.conf 設定など)
AWS はセキュリティグループで PostgreSQLのポート設定しないと一切アクセスできない。
セキュリティグループ > EC2 に紐付いたグループ > インバウンド > 編集
上記の設定は 5432 に全ての IPを許可(CIDR形式)しているので、必要であれば IP制限する
(postgresパスワードや、pg_hba.conf で制限しても良い)