5分SHAREツイートシェアはてブLINEPocketRailsで開発したWebアプリケーションを公開するときは、「Nginx」などのWebサーバと連携するのが一般的です。Railsは内部で「Puma」というWebサーバを起動していますが、Webサーバとしての機能が貧弱なため、アプリケーションサーバとして使われることのほうが多いからです。今回は、アプリケーションサーバとして使っているPumaを、WebサーバであるNginxと連携させて、大量のアクセスにも耐えられるようにします。利用する環境は、「Railsの環境構築」で構築したRails環境をもとに進めていきます。RailsとPumaの関係がわからない方は、さきに以下の記事を読んでもらえるとスムーズです。設定ファイルの作成NginxにアクセスSELinuxの設定変更まとめ:NginxのSSL設定にも挑戦してみよう!Railsアプリの場所を確認まずは、Railsアプリが置いてある場所を確認してみましょう。「Railsの環境構築」を読みながらRailsアプリを作った方は、以下のようにホームディレクトリの下にRailsアプリがあると思います。「/home/vagrant/training/training_app」まずは、この「training_app」を「/opt」の下に移動、またはコピーしましょう。公開するアプリを置いておく場所として、ホームディレクトリは適切ではないからです。「/home/vagrant」にアクセスできるのは「vagrantユーザー」だけですが、今回は「nginxユーザー」がRailsアプリのディレクトリにアクセスする予定なので、ホームにあると都合が悪いのもあります。training_appホームディレクトリのままだと、パーミッションエラーでハマりやすいよ!Linuxのパーミッション(権限)とは?確認や変更などの設定方法を紹介!Pumaのソケット通信設定Rails(Puma)とNginxを連携させるために、Pumaの設定ファイルを修正します。具体的には、「UNIXドメインソケット通信(ソケット通信)」をするための設定になります。このソケット通信は、NginxとRailsが同じマシンに存在している場合のみできる設定です。ソケットの設定Pumaを起動したときに、ソケットである「puma.sock」を生成するよう設定します。「puma.sock」は、Nginxとソケット通信をする際に必要になるファイルです。"unix://#{Rails.root}/tmp/sockets/puma.sock"【Vim入門】viエディタとは?初心者向けの使い方とコマンド操作方法ちなみに、ホームの下にRailsアプリがあると、NginxはPumaとソケット通信できないので注意してください。これは、「puma.sock」もホームディレクトリの下に生成されてしまい、nginxユーザーの権限ではアクセスできないためです。"unix:///tmp/puma.sock"」などのようにNginxがアクセスできるディレクトリにバインドする必要があります。s」コマンド実行時、Pumaをバックグラウンドで動かしたい場合は、以下を記述してください。truePumaを停止したいときは、「kill」コマンドを使います。3117これで完璧!Linux基本コマンドとオプションの使い方【一覧あり】NginxとPumaの接続設定ここからは、NginxとPumaの接続設定をおこないます。Nginxのインストールが済んでいない方は、以下の記事を読みながらインストールを進めてください。設定ファイルの作成ここからは、「training_app」という名前のアプリケーションがあると仮定して進めていきます。このアプリケーション専用のNginxの設定ファイルを作りましょう。アプリごとの設定ファイルは「/etc/nginx/conf.d/」の下に新規で作成し、Nginx全体に関わる設定は「/etc/nginx/nginx.conf」を編集するようにします。今回はアプリ単体の設定なので「/etc/nginx/conf.d/training_app.conf」を作成します。既存の「/etc/nginx/conf.d/default.conf」は、不要であれば削除してもいいのですが、今回は何かあったときのバックアップとして残しておきます。/etc/nginx/conf.d/training_app.confファイルを開いたら、以下の内容で上書きしましょう。}}Nginxの細かい設定は自分で調べながら書いてみてね!NginxにアクセスNginxの設定ファイルを変更したら、Nginxを再起動し、Railsを起動します。sブラウザからNginxにアクセスしてみましょう。「Linux環境構築」を読んでVagrantで構築した方は、「http://192.168.33.10」でアクセスできるはずです。Gateway」と表示された方は、SELinuxの影響を受けている可能性があります。Linux)とは、簡単に説明すると、ディレクトリやファイルのアクセスを制御をするためのカーネル機能です。「Linux」ってついてるけど、ディストリビューションじゃないよ!本来であれば、SELinuxを正しく理解し設定するべきなのですが、ここではアクセス制御を「Permissive」にすることで対応します。getenforcePermissiveこのままだと、Linuxを再起動したときに、またアクセス制御が有効になってしまいます。再起動してもアクセス制御が無効になるように、以下のファイルも修正しておきます。:SELinuxの設定が終わったら、もう一度ブラウザからアクセスしてみましょう。まとめ:NginxのSSL設定にも挑戦してみよう!今回は、「/opt」にRailsアプリがあるという前提で解説しました。環境によって対応方法も変わってきますが、どの環境であっても以下がポイントになると思います。自分がハマっている原因が、上のどれに当てはまるのかさえ見極めることができれば、Nginxとの連携自体は難しくありません。落ち着いて対応しましょう。Nginx連携のあとは「NginxのSSL設定」を読んで、WebサイトのSSL化にも挑戦してみてくださいね。:Nginx未経験からWebエンジニアへ!僕は高卒でアラサー、転職回数も多く、まったくの未経験でWebエンジニアになりました。勉強はしましたし、かんたんな道のりではなかったかもしれません。プログラミングは確実に自分が望む未来へと近づけてくれました。「学歴がない」「転職回数が多い」「アラサー」「未経験」...どれもエンジニアを目指すうえでは、まったく関係ありません。エンジニアになるために必要なものは「やる気」だからです。あなたも人生を大きく変えるつもりで本気でチャレンジしてみてください。プログラミングは、あなたが望む未来へ近づくための武器になるでしょう。高卒エンジニアの年収を大公開!副業で始めたブログの収入は?こんな記事も読まれてます関連する記事はこちらNginxとは?インストールや設定ファイルの仕組みを解説【CentOS】NginxでSSL(HTTPS)設定!オレオレ(自己署名)証明書を作成しよう!【Nginx入門】自作アプリをWebサーバに構築!Apacheとの違いも紹介!この記事を書いた人キツネフリーランスエンジニア/ブロガー/ミニマリスト。プログラミング経験なし、学歴なしでエンジニアへ転職し、現在は田舎でフリーランス。なりたい自分を叶えるための本メディアを運営(月間10万PV突破)。詳しいプロフィールはこちら。Feedly前の記事Nginxとは?インストールや設定ファイルの仕組みを解説【Ce...次の記事NginxでSSL(HTTPS)設定!オレオレ(自己署名)証明...あなたが「なりたい自分」はどれ?エンジニアプログラミングブロガーフリーランスカテゴリーWebエンジニアDockerGitLinuxMySQLNginxRubyWebエンジニアの仕事道具・ツールエンジニアの働き方・将来性エンジニアの転職・就職プログラミングのスキルアッププログラミングの基本フリーランスブロガーアフィリエイトブログのアクセスアップアフィリエイトブログの始め方アフィリエイトブログの書き方アフィリエイトブログの稼ぎ方キツネエンジニア/ブロガー/ミニマリスト。プログラミング経験なし、学歴なしでエンジニアへ転職し、現在は田舎でフリーランス。なりたい自分を叶えるための本メディアを運営(月間10万PV突破)。reserved.テキストのコピーはできません。