はじめに
現場がAWSを使ってるのでそろそろVPSからAWSへの移行を考えている
AWS
AWSでLinuxを使えるようにするぞ
AmazonMachineImageの選択
現行ではとくに理由がない限りより性能のいいハードウェア仮想マシン (HVM)が使用されている
EC2ダッシュボード
インスタンスタイプの選択
t2.micro
インスタンスタイプを選択します(デフォルト)
キーペアのダウンロード
ダッシュボードの様子が変わった
「インスタンス(実行中)」をクリックして、パブリック IPv4 アドレスを確認しておく
ssh接続用設定ファイルを設定
ssh接続するときはおなじみのやつね。秘密鍵を保存するのと同じ要領でaws_keypairを保存し、HostNameはさっきのパブリック IPv4 アドレスで、IdentityFileにaws_keypairの場所を指定する。Userは固定みたい。
Host aws
HostName 52.72.117.178
IdentityFile ~/.ssh/aws_keypair.pem
User centos
確認
PS D:\OneDrive\dev\Docker> ssh aws
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Sun May 23 10:13:07 2021 from 61.87.41.78
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Sun May 23 10:13:07 2021 from 61.87.41.78
[centos@ip-172-31-17-55 ~]$ cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
AWSでのrootへの入り方
$ sudo su -
Last login: Sun May 23 10:36:37 UTC 2021 on pts/0
#
Docker
CodeIgniter4が動く環境を構築
yum-utils は yum-config-manager ユーティリティを提供します。 また device-mapper-persistent-data と lvm2 は devicemapper ストレージ・ドライバを利用するために必要です。
# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum -y install docker-ce
# systemctl start docker
# docker --version
Docker version 20.10.6, build 370c289
# systemctl enable docker
一般ユーザがsudoなしでdockerコマンドを実行できるように、centos
ユーザをdockerグループに所属させる
# gpasswd -a centos docker
Adding user centos to group docker
Docker Composeのインストール
https://docs.docker.jp/compose/install.html#linux-compose
# sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# docker-compose --version
docker-compose version 1.16.1, build 6d1ac21
# exit
設定
/home/centos
├── docker-compose.yml
├── mysql
│ └── my.cnf
├── nginx
│ └── default.conf
├── php-fpm
│ ├── Dockerfile
│ └── php.ini
└── src <- この下にCodeigniter4のソースを設置します。
docker-compose.yml
基準となるディレクトリ(どこでもいい)に設定ファイルを作ります(apacheでいうconfファイル)。一般ユーザ(centos)のhomeに作ります
$ cd ~
$ vi docker-compose.yml
version: '3'
services:
nginx:
image: nginx
restart: always
ports:
- 80:80
volumes:
- ./src:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php-fpm
php-fpm:
build: ./php-fpm
restart: always
volumes:
- ./src:/var/www/html
- ./php-fpm/php.ini:/usr/local/etc/php/php.ini
depends_on:
- mysql
- redis
mysql:
image: mysql:5.7
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root001
TZ: "Asia/Tokyo"
volumes:
- ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
- mysql-storage:/var/lib/mysql
redis:
image: redis:4
restart: always
ports:
- 6379:6379
volumes:
- redis-storage:/data
volumes:
mysql-storage:
redis-storage:
mysql
$ mkdir mysql
$ vi mysql/my.cnf
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
nginx
$ mkdir nginx
$ vi nginx/default.conf
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Dockerfile
$ mkdir php-fpm
$ vi php-fpm/Dockerfile
FROM php:7.3-fpm
ENV COMPOSER_ALLOW_SUPERUSER 1
# apcuとopcacheはインストールしなくても問題ありません。
RUN apt-get update && \
apt-get -y install libxml2-dev libcurl4-openssl-dev zip unzip git && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
docker-php-ext-configure mysqli --with-mysqli=mysqlnd && \
docker-php-ext-install intl json mbstring mysqli xml curl opcache && \
pecl install redis apcu && \
docker-php-ext-enable redis apcu && \
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
php.ini
$ vi php-fpm/php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = UTF-8
mbstring.language = Japanese
確認
4つのコンテナのStateが全てUpになっていたらOK
$ docker-compose up -d
$ docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------------------
centos_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp
centos_nginx_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:80->80/tcp,:::80->80/tcp
centos_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
centos_redis_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp,:::6379->6379/tcp
※DockerでCouldn’t connect to Docker daemonが出る場合の原因と解決方法
https://www.virment.com/how-to-fix-couldnt-connect-to-docker-daemon/
グループの追加を反映させるには、ログインし直す必要があるので、一度ログアウトして再ログインしてください。