LoginSignup
0
0

More than 3 years have passed since last update.

第3回 AWSに自動でテスト/デプロイしてくれるインフラの設定・構築(Nginx・MySQL編)

Last updated at Posted at 2020-12-15

本シリーズ集

タイトル
0 目標・やりたいこと
1 AWS編
2 rails開発環境構築編
3 Nginx・MySQL編
4 Capistrano編
5 CircleCI編
6 総集編

はじめに

 Nginx・MySQLを分けると、短くなってしまうため、本記事では二つをまとめる。
 まずはNginxから。

Nginxとは

 Webサーバ用ソフトウェアの一つ。
 Webサーバといえば、NginxApache の二代巨頭なイメージ(がないですか?)。
 今回は、このNginxをDockerfileを用いて構築する。

ディレクトリ構成

/nginx
├ public
|  ├ 404.html
|  ├ 422.html
|  └ 500.html
├ nginx.conf
└ Dockerfile

 publicディレクトリ配下は、rails newコマンドにより生成されたファイル群の一部抜粋したものである。(この404.htmlとかのファイルは特別いるわけでもないが、rails側と通信できなかった時にエラーページを表示するためのものである。

Dockerfileの中身

Dockerfile
FROM nginx:latest
RUN rm -f /etc/nginx/conf.d/*

COPY ./public /public
COPY nginx.conf /etc/nginx/conf.d/nginx.conf
# /conf.d/ディレクトリ配下の設定ファイルを読み込む設定になっているので、(元を確認してないので、もしかしたら0かもしれない。)
# それらを一度全部削除して、新たに作成したファイルを入れる 
CMD nginx -g 'daemon off;' -c /etc/nginx/nginx.conf

nginx.conf ファイルの中身

nginx.conf
server {
  listen 80;
  # ドキュメントルートの指定
  root /public;
  error_page 404             /404.html;
  error_page 505 502 503 504 /500.html;
  location / {
    try_files $uri @app;
  }

  # # リバースプロキシ関連の設定
  location @app {
    proxy_pass http://xx.xx.xx.xx:3000; 
    # 対象APサーバを持つEC2インスタンスの、プライベートIPアドレスとポートを指定する

  }
}

これで、準備OK。

Webサーバを起動してみる。

 EC2インスタンスに、sftpコマンドにより、ファイル群をアップロードした後、sshコマンドでEC2にアクセスし、

# docker build -t test-nginx .
# docker run -p 80:80 test-nginx
(このまま見た目は止まる)

とすると、起動する(見た目では分かりにくいけど)。

ローカルブラウザから、アクセスしてみる

 ローカルブラウザで、http://IPアドレス/とうち、アクセスしてみると、
スクリーンショット 2020-11-17 18.23.45.png
と出るので、きちんとWebサーバが立っていることがわかる。

MySQL

 MySQLのDockerfileはない。docker pullコマンドでMySQL:5.7をpullし、それをrunコマンドで走らせて終了。

sshキーでアクセスし、各種コマンドを打つ。

$ ssh -i 【鍵のPATH】 ec2-user@xx.xx.xx.xx
[ec2-user@ip-xx-xx-xx-xx ~]$ sudo service docker start
[ec2-user@ip-xx-xx-xx-xx ~]$ docker pull mysql:5.7
[ec2-user@ip-xx-xx-xx-xx ~]$ docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --rm mysql:5.7
...
...
Version: '5.7.32'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)

これでおしまい!

まとめ

 さら〜っとこんな感じでやればできます〜って感じで書いてますけど、実際には(主にWeb-AP間の連携の部分で)この作業周りでまる1日かかった笑。
 特に最後の画像のエラーがどうしても修正できなくて、めちゃくちゃ迷いました。なんでMySQL5.7を使用しているかも含めて、また後日この話は別の記事であげたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0