LoginSignup
19
7

More than 5 years have passed since last update.

Rails5.1.2 + Webpacker + ReactをCapstranoでデプロイする手順書②

Last updated at Posted at 2017-08-25

前回: Rails5.1.2 + Webpacker + ReactをCapstranoでデプロイする手順書をCapstranoでデプロイする手順書①

前書き

前回の続きになります。
前回はローカルでの作業
今回は、サーバ側の作業からデプロイまでを記載します。

サーバ手順

サーバ側にてデプロイ受けの設定を行います。
主にNginxの設定です。

Nginx設定

手順

  • Nginxインストール
  • 設定ファイル作成

Nginxインストール

WEBサーバである、Nginxをサーバへインストールします。

# Nginxのインストール
$ sudo yum install nginx
# Nginxの設定ファイル作成(conf.dまでディレクトリはNginxインストールで作成されます。)
$ sudo vim /etc/nginx/conf.d/アプリ名.conf

設定ファイルの内容は以下の通りです。


# log directory
error_log  /var/www/rails/アプリ名/current/log/nginx.error.log; #ログ
access_log /var/www/rails/アプリ名/current/log/nginx.access.log; #ログ
# max body size
client_max_body_size 2G;
upstream unicorn {
  # for UNIX domain socket setups
  server unix:/var/www/rails/アプリ名/current/tmp/unicorn.sock;
}
server {
  listen 80;
  server_name サーバのIP;
  keepalive_timeout 5;
  root /var/www/rails/アプリ名/current/public;
  try_files $uri/index.html $uri.html  $uri @unicorn;

  location @unicorn {
    # HTTP headers
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_pass http://unicorn;
  }
}

ざっくり解説すると
log directoryは、Capistranoが作成するcurrentの中を指定します。
ここは制約がないため、自由です。
upstream unicornには、Unicornのsockファイルを指定します。
サーバ上でUnicornが起動すると作成されるファイルです。
作成場所は前述したUnicornの設定ファイルで指定されたディレクトリです。

以上までできればあとは、もう少しです。

ディレクトリ作成

サーバ上にて、アプリケーションのディレクトリを作成します。
場所は基本自由ですが、Capistranoの設定ファイルに合わせた場所にしておきましょう

$ mkdir /var/www/rails/アプリ名

デプロイ

設定ファイルお疲れ様でした!
ここまでこれば、あとはデプロイを試すだけです。
まずは今までの設定ファイルをGit pushします(CapistranoがDeployするブランチを確認)
masterが最新になり、masterにUnicornやCapistranoの設定があることを確認したら
早速、ローカルで以下のコマンドを実行します。

$ bundle exec cap production deploy

設定ファイルに問題がなければ、続々とターミナルでDeployのコマンドが流れると思います。
その中で、Git cloneしたり、bundle installしたり、Webpacker compileしたり、migrateしたり云々
ちなみに
今更感ありますが
WebpacerのCompileで、例えばmanifest.jsonがない!!といったエラーが出る場合
ほとんどが、サーバのスペック不足になります。
サーバと接続しながら、それでいてデプロイのコマンドを流して、それのログをローカルへ送ってなどしているためかと思います(ざっくり)
現に、最初はt2.microで作業していたのですが、Webpackerでよく転けるため、一度、t2.smallへ変更したところ
何事もなかったかのようにデプロイができました。
一度、ご確認を!

デプロイが正常に終了すると、deploy log_revisionと表示されターミナルが帰ってきます。
一度、サーバへSSHで入ってもらうと、作成した/var/www/rails/アプリ名の中にcurrentフォルダとreleasesフォルダが作成できていると思います。

フォルダ作成が確認できたら、Nginxを起動します。

sudo service nginx start

正常に起動したら、
ブラウザで接続し、アプリが表示されれば、Capistranoのデプロイ完成になります。

後書き

サーバ系を本格的に触るのは初めてでしたが、思ったよりも簡単にCapistranoでのデプロイが出来ました。
ReactをフロントとしたRailsのアプリは今、かなりキテいる構成だと思いますので、
今後の新規サービスデプロイのため、この手順は大切に覚えていこうと思います(笑)

19
7
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
19
7