Edited at

CentOS7上にDockerでMySQL8、Nginxを動かしてRailsを起動するためにしたこと


deploy用ユーザーの作成

# adduser hoge_user

# passwd hoge_user

visudoでrootになれるよう設定


localeの設定

# localectl set-locale LANG=ja_JP.utf8

一度ログアウトしてログイン
# locale
LANG=ja_JP.UTF8


ssh設定

rootでのsshはできなくする。

sshのportは2222に変更。

# vim /etc/ssh/sshd_config

PermitRootLogin -> no
Port -> 2222
# sshd -t
# sudo service sshd restart


firewalldの設定

httpとsshだけ解放。

sshはportを2222に変更する。

# cp -p /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/

portを2222に変更
# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-service=ssh --zone=public --permanent
# firewall-cmd --reload
success

※さくらVPSの場合混乱するので管理画面から操作できるパケットフィルタをOFFにする。


Docker

https://docs.docker.com/install/linux/docker-ce/centos/ の手順に従い作業

&

$ sudo systemctl enable docker # 自動起動設定

$ sudo systemctl start docker


docker-compose

https://docs.docker.com/compose/install/ の手順に従い作業


デプロイユーザーがdocker-composeを使えるように

# usermod -aG docker hoge_user

hoge_userは一回ログアウトしてログインしなおす。


rbenvでrubyインストール

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l

ruby-buildインストール
$ mkdir -p "$(rbenv root)"/plugins
$ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

$ sudo yum install -y openssl-devel readline-devel zlib-devel
$ rbenv install 2.5.1
$ rbenv global 2.5.1
$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]


yarnインストール

$ curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo

$ sudo rpm --import https://dl.yarnpkg.com/rpm/pubkey.gpg
$ sudo yum install yarn
$ yarn install


Webサーバー,DB起動

$ docker-compose up --build


docker-compose.yml

version: '3'

services:
mysql:
image: mysql
command: --default-authentication-plugin=mysql_native_password
volumes:
- mysql-db:/var/lib/mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD
nginx:
build: ./nginx
ports:
- "$HOST_HTTP_PORT:80"
volumes:
- ../../my_app:/apps/my_app
- ../log/nginx:/var/log/nginx
- ../public:/usr/share/nginx/html
volumes:
mysql-db:
driver: local