[Rails][CentOS6]Unicorn + NginxでRails4アプリ公開まで
はじめに
Unicorn + Nginxで、Railsアプリの公開までに必要な設定を行います。
最近のRailsアプリではApache + Passengerの組み合わせよりもパフォーマンス面に強いということでNginx + Unicornが使われることが多くなっています。
Unicorn導入
UnicornはRuby用アプリケーションサーバのことです。
Unix系OS上で動作するRack規格Rubyアプリケーションを動かすためのアプリケーションサーバです。
Unicornの設定はいろいろあるので今回は簡易設定のみにします。
公式ページ:
http://unicorn.bogomips.org/
Unicornの詳細で参考にしたページです
http://www.engineyard.co.jp/blog/2013/everything-you-need-to-know-about-unicorn/
デプロイ対象のRailsプロジェクトを設置
今回は/home/直下に設置します
Unicornインストール
デプロイ対象のアプリディレクトリ直下のGemfileに以下を追加します
gem install unicorn
インストールします
$ bundle install
Unicorn設定
sock,pidファイルのディレクトリを作成します
$ mkdir /var/run/unicorn $ chmod 777 /var/run/unicorn
デプロイ対象のアプリディレクトリ直下のconfigディレクトリへunicorn.rbファイルを作成し以下コードで保存します
application = "<Railsアプリケーションディレクトリ名>" worker_processes = 2 working_directory "/home/#{application}" listen "/var/run/unicorn/unicorn_#{application}.sock" pid "/var/run/unicorn/unicorn_#{application}.pid" stderr_path "/home/#{application}/log/unicorn.stderr.log" stdout_path "/home/#{application}/log/unicorn.stdout.log" preload_app true
※worker_processesは適時変えてください
Unicorn起動時などにエラーなど出る場合は上記指定しているパスの「unicorn.stderr.log」ファイルで確認ができます
Unicorn起動
デプロイ対象のアプリディレクトリ直下で以下コマンドを実行します
$ unicorn_rails -c config/unicorn.rb -E development -D
※ここでエラーが出なければプロセスが実行されています
unicorn_railsのオプションについては以下になります
-c : 設定ファイル
-E : RAILS_ENV(デフォルトはdevelopment)
-D : デーモンで実行(バックグラウンド)
-p : ポート指定
–path : ディレクトリ指定
unicornのプロセスを確認してみます
ps aux | grep unicorn
ここで正しくでていればOKです
Nginx導入
軽量・高速のwebサーバーでRailsの開発ではApacheよりシェア高く、速度も高速とのことのようです。
こちらもいろいろしようとすると設定がいろいろあるので、プロジェクトにあった設定にするとパフォーマンスがあがる?と思います。
Nginxインストール
Nginxをインストールします
$ yum install nginx
Nginx設定
デフォルト設定ファイルを無効にし、設定ファイルsample.confを作成します
$ cd /etc/nginx/conf.d $ mv default.conf _default.conf.bak $ vim sample.conf
sample.confは以下の設定にします
upstream unicorn-unix-domain-socket { server unix:/var/run/unicorn/unicorn_hoge.sock fail_timeout=0; } upstream unicorn-tcp { server 127.0.0.1:3000; } server { listen 80; server_name localhost; root /home/[railsapp]/public; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { proxy_pass http://unicorn-unix-domain-socket; } }
※「unicorn_hoge.sock」部分はunicorn.rbの「listen “/var/run/unicorn/unicorn_#{application}.sock”」で設定した値に置き換えて設定してください
Nginx起動
Nginxを起動します
$ service nginx start
既に起動している場合に設定情報を反映される場合は再起動をします
$ service nginx restart
ブラウザ動作チェック
http://[ipアドレス]
その他おすすめの備忘録
- [CentOS]nginxのインストールから起動まで
- [CentOS]Gitlabをサブディレクトリアクセスしたら遅くなったので対応
- [CentOS6]Gitlabをサブディレクトリでアクセスできるようにする(およそ3分作業)
- [MAC]差分チェックdiffツール(story + p4marge環境)を使用する方法※ディレクトリdiff対応
- [Rails][Vagrant]Vagrantの rails server で起動しているアプリケーションにローカルPCからブラウザアクセスする
- [Git]Gitの管理対象リストから後から除外する(あとからgitignore設定にする)方法について
- [FuelPHP]GitHubは空ディレクトリがあるとプッシュできない。対応方法をメモ
- [Git]gitリポジトリからサブモジュールの削除
- [iOS]iOS9から追加のUniversalLinks(ユニバーサルリンク)でディープリンク実装し、アプリの有無でアプリとマーケットにリダイレクトする
- [Git]コミット間の差分ファイルを取得する方法
coffee-break
Don't write code that useless.
1日5杯はコーヒー、カフェオレ飲みます。狭心症のため安静にします☆松本 雄貴
Kotlinでサービスリリース目指す!
iOSでチャットアプリ作成中。自然言語解析LSIを習得中
Mac / Android・iOS / Rails / Oracle
2017年 Lpic L2取得
2012年 Android技術者資格取得
2010年 OracleMasterGold10g取得
2008年 CCNAQiitaもたまに投稿
https://qiita.com/y-matsumoto東京近郊で常駐開発探してる方はこちらよりご連絡ください
SES企業でパートナー会社を探している企業様はこちらよりご連絡ください
スプリットカメラ iOS / Android
音声認識で聞いた日付から曜日当てアプリ Android
ソーシャルタイマー Android
カテゴリー
- ActiveRecord (2)
- Android (52)
- AndroidStudio (10)
- Ansible (1)
- AWS (1)
- Bash (18)
- Blog (7)
- BootStrap (1)
- CentOS (16)
- Chef (1)
- css (2)
- Eclipse (5)
- error (1)
- Facebook (2)
- Firebase (1)
- FuelPHP (16)
- Git (22)
- GitHub (3)
- Gradle (2)
- GraphAPI (1)
- Grunt (1)
- heroku (2)
- illustrator (1)
- iOS (17)
- Java (4)
- Jenkins (1)
- jQuery (3)
- Kotlin (2)
- Mac (22)
- nginx (1)
- Node.js (3)
- peco (1)
- php (5)
- Python (1)
- Rails (16)
- Ruby (11)
- shell (1)
- SNS (1)
- Swift (2)
- tmux (2)
- Vagrant (6)
- Vim (6)
- windows (2)
- WordPress (3)
- zsh (4)
- フリーランス (1)
- ライブラリ (1)
- 勉強会 (2)
- 宣伝 (1)
- 未分類 (2)
最近の投稿
- [MAC]HighSierraでgitプッシュエラー「Unable to negotiate with xxx.xxx.xxx.xxx port xx: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se fatal: Could not read from remote repository.」
- [iOS]iOS11からFacebook,Twitter連携(シェアなど)廃止の対応方法
- [iOS]速報2017AppleSpecialEventのiOS11、iPhone8など発表内容について
- [iOS][Firebase]The default Firebase app has not yet been configured. Add `[FIRApp configure];
- [iOS]2017年9月リリースのiOS11で開発者が対応するべきこと
- 今人気の現金化サービスCASH(キャッシュ)を使ったレビュー
- [Pandoc][Mac]pandocでmarkdownからwordファイル作成
- [Android]映画サマーウォーズの聞いた日付(誕生日)から曜日当てをアプリ音声認識で簡単に実現
- [Android]起動しているActivityを取得するadb shell コマンド
- [Android][Kotlin]kotlin学習で参考になるサイト一覧
2023年6月 月 火 水 木 金 土 日 « 5月 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 アーカイブ
- 2018年5月
- 2017年9月
- 2017年8月
- 2017年7月
- 2017年6月
- 2017年5月
- 2017年2月
- 2017年1月
- 2016年12月
- 2016年7月
- 2016年6月
- 2016年1月
- 2015年12月
- 2015年11月
- 2015年10月
- 2015年9月
- 2015年8月
- 2015年7月
- 2015年6月
- 2015年5月
- 2015年4月
- 2015年3月
- 2015年2月
- 2015年1月
- 2014年12月
- 2014年11月
- 2014年6月
- 2014年5月
- 2014年4月
- 2014年3月
- 2014年2月
- 2014年1月
- 2013年12月
- 2013年11月
- 2013年9月
- 2013年8月
- 2013年7月
- 2013年6月
- 2013年5月
- 2013年4月
- 2013年3月
- 2013年2月
- 2013年1月
- 2012年12月
- 2012年10月
- 2012年5月
- 2010年6月
エントリ