sk

開発で得たこと

5分でWebサーバを設定する。--Nginx,さくらのVPS

f:id:sksksksksk:20170510225141p:plain
NginxとUnicornの関係性ってよくわからないですよね。




アプリを動かすにはWebサーバの上でアプリケーションサーバを動かす必要があります。今回はWebサーバの設定を行います。



Nginxのインストールは完了しているものとします。

.confファイルの作成と編集

NginxとUnicornを連携する為には.sockファイル名を合わせる必要があります。
そのファイルは.confのファイルにあります。



まずは.confファイルのディレクトリへ移動しましょう

cd /etc/nginx/conf.d/

デフォルトで用意されている.confファイルがありますがこれを使うと、

一つのアプリにしか対応できなくなるので(厳密にはできますが管理が大変になります)、同じ階層に.confファイルを作成します。



.confの前の名前はなんでもいいです。



ちなみに私の.confディレクトリは以下のようにいっぱいあります。

$ ls
_default.conf.bak  bot.conf  default.conf  preliminary.conf  presentation.conf  sample.conf  text.conf  wordpress.conf  yurukyara.conf


今回は新しくファイルを作成します。

$ sudo touch deploy_sample.conf

このファイルを編集し、以下のコードを記載します。

upstream unicorn-unix-domain-socket-pre{ #①
    server unix:/var/run/unicorn/アプリで指定した名前.sock fail_timeout=0;
}

server {
    listen 80;
    server_name IPアドレス or ドメイン;
    root /home/anime/var/www/anime/public;

       ↓アクセスとエラーログを吐く場所を指定します。
    access_log  /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

      ↓設定は自由です。慣れたらカスタマイズしてください。
    proxy_connect_timeout       3600;
    proxy_send_timeout          3600;
    proxy_read_timeout          3600;
    send_timeout                3600;
    location / {
            proxy_pass http://unicorn-unix-domain-socket-pre; #①と名前を合わせてください。
    }
 }

ここで重要なのは2つです。
>|ruby|]
server unix:/var/run/unicorn/アプリで指定した名前.sock fail_timeout=0;
|


unicornを使う場合ですが、〜〜.sockの部分は名前を一致させてください。

この部分がwebサーバとアプリケーションサーバを連携させる核の部分です。

server_name IPアドレス or ドメイン;

ここにはサーバのIPか取得したドメインを挿入してください。

出ないとアクセスしてもアプリが表示されません。


Nginxの再起動


設定が終わったら、:wqで上書きを保存をして以下のコマンドでNginx設定を反映させましょう。

$ sudo service nginx restart


今回、私が作ったサンプルはこちらです。

upstream unicorn-unix-domain-socket-deploy_sample{
    server unix:/var/run/unicorn/unicorn_deploy_sample.sock fail_timeout=0;
}


server {
    listen 80;
    server_name candii.tk;
    root /home/anime/var/www/anime/public;

    access_log  /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    proxy_connect_timeout       3600;
    proxy_send_timeout          3600;
    proxy_read_timeout          3600;
    send_timeout                3600;

    location / {
            proxy_pass http://unicorn-unix-domain-socket-deploy_sample;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    }
 }

以上で、Webサーバの設定は完了です。
次は  unicornの設定をします。

ProgateやRailsチュートリアル、プログラミングスクールを通い終えたが現場のコードはかけない、

一体どうやって書くの?と思っているエンジニアのみなさんのためのチュートリアルを公開しています。

チュートリアル