成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用passenger在Centos7部署nginx+Ruby on Rails

UsherChen / 3637人閱讀

摘要:是一個(gè)能快速搭建環(huán)境的工具,它能快速的將和部署到你的服務(wù)器中,是部署環(huán)境就如同環(huán)境那樣簡(jiǎn)單快速,讓人愉悅。在上跑一般只有在生產(chǎn)環(huán)境下才會(huì)使用,因而默認(rèn)下就是環(huán)境設(shè)置為生產(chǎn)環(huán)境,而初始化時(shí)默認(rèn)沒有對(duì)生產(chǎn)環(huán)境進(jìn)行密鑰配置。

passenger

passenger是一個(gè)能快速搭建web環(huán)境的工具,它能快速的將nginxpassenger部署到你的服務(wù)器中,是部署ruby環(huán)境就如同php環(huán)境那樣簡(jiǎn)單快速,讓人愉悅。下面我將使用這個(gè)工具將一個(gè)幾乎空白的web服務(wù)器打造成一個(gè)高效的ruby服務(wù)器

centos7

centos7是最新的centos版本帶來了一系列新特性,包括對(duì)Docker的支持和性能的提高,centos 6和 centos 7性能對(duì)比

安裝ruby環(huán)境

首先下載rvm(ruby虛擬機(jī))

shellcurl -L get.rvm.io | bash -s stable

安裝rvm

shellsource /etc/profile.d/rvm.sh

安裝ruby(請(qǐng)選擇官網(wǎng)上最新的版本,使用ruby就要一直堅(jiān)定的使用其最新版本)

shellrvm install 2.2.1

安裝完成后只要運(yùn)行ruby -v有顯示版本號(hào)就證明已經(jīng)安裝成功了

安裝Passenger 和 Nginx

首先使用gem安裝passenger

shellgem install passenger

由于nginx不支持動(dòng)態(tài)的模塊載入,所以要使用passenger來進(jìn)行編譯安裝由passenger修改過的nginx

接下來安裝nginx+passenger

shellpassenger-install-nginx-module

運(yùn)行了這個(gè)命令后,按照提示一步步安裝

1.Yes: download, compile and install Nginx for me. (recommended)
The easiest way to get started. A stock Nginx 1.0.10 with Passenger
support, but with no other additional third party modules, will be
installed for you to a directory of your choice.

2.No: I want to customize my Nginx installation. (for advanced users)
Choose this if you want to compile Nginx with more third party modules
besides Passenger, or if you need to pass additional options to Nginx"s
"configure" script. This installer will 1) ask you for the location of
the Nginx source code, 2) run the "configure" script according to your
instructions, and 3) run "make install".
Whichever you choose, if you already have an existing Nginx configuration file,
then it will be preserved.

Enter your choice (1 or 2) or press Ctrl-C to abort:

當(dāng)遇到這個(gè)選擇時(shí),建議選擇1,1代表自動(dòng)完整安裝并配置nginx,2是代表根據(jù)自己需求定制nginx.

安裝完成后系統(tǒng)會(huì)提示,nginx安裝的目錄,在centos7下默認(rèn)是安裝在/opt/nginx下,配置文件是默認(rèn)在/opt/nginx/conf/nginx.conf

打開nginx.conf我們可以看到,passenger已經(jīng)在nginx的配置文件上做了一點(diǎn)小配置

passenger_root /usr/local/rvm/gems/ruby-2.2.1/gems/passenger-5.0.10;
passenger_ruby /usr/local/rvm/gems/ruby-2.2.1/wrappers/ruby;
安裝rails并初始化一個(gè)rails項(xiàng)目

使用gem安裝rails

shellgem install rails

初始化一個(gè)rails項(xiàng)目

shellrails new sample_app

第一次初始化rails時(shí)一般會(huì)報(bào)出缺少gem的警告,此時(shí)只需要將rails的鏡像改為淘寶鏡像,詳見http://ruby.taobao.org,然后執(zhí)行

shellbundle install

當(dāng)執(zhí)行完畢后,一個(gè)rails項(xiàng)目的初始化就完成了

配置nginx

打開配置文件

vim /opt/nginx/conf/nginx.conf

這里給出一份最簡(jiǎn)單能運(yùn)行的nginx.conf(注意:rails項(xiàng)目的目錄是/opt/www)

nginx{
  worker_processes  1;

  events {
      worker_connections  1024;
  }


  http {
      passenger_root /usr/local/rvm/gems/ruby-2.2.1/gems/passenger-5.0.10;
      passenger_ruby /usr/local/rvm/gems/ruby-2.2.1/wrappers/ruby;

      include       mime.types;
      default_type  application/octet-stream;

      sendfile        on;
      keepalive_timeout  65;
      server {
          #監(jiān)聽的端口
          listen       8080;
          server_name  127.0.0.1;
          #web根目錄,一定是rails項(xiàng)目下的public
          root /var/www/sample_app/public/;
          #一定要記得將這個(gè)選項(xiàng)設(shè)置為on
          passenger_enabled on;
      }    
  }

運(yùn)行

shellsbin/nginx -t

如果沒有報(bào)錯(cuò),那說明配置成功了。那么已經(jīng)萬事大吉了嗎?并沒有??!

配置Centos7防火墻

Centos7后已經(jīng)廢棄了原來的iptables,改而使用firewall,默認(rèn)情況下centos7系統(tǒng)不允許任何外來訪問,就算你把firewall關(guān)了也沒用,所以必須配置firewall

shellfirewall-cmd --zone=public --add-port=8080/tcp --permanent

這個(gè)命令表示,允許外部訪問8080端口,重載一下firewall的配置,就外部就能訪問服務(wù)器的8080端口了

配置Rails的生產(chǎn)環(huán)境

配置完Centos7的防火墻后,訪問rails程序時(shí)就會(huì)報(bào)出一個(gè)403的forbidden錯(cuò)誤,仔細(xì)查看日志后,發(fā)現(xiàn)了問題了的原因

App 6361 stderr: [ 2015-06-16 11:27:24.1412 6376/0x00000001d35760(Worker 1) utils.rb:85 ]: *** Exception RuntimeError in Rack application object (Missing `secret_token` and `secret_key_base` for "production" environment, set these values in `config/secrets.yml`) (process 6376, thread 0x00000001d35760(Worker 1)):

這個(gè)錯(cuò)誤表示Rails生產(chǎn)環(huán)境下的密鑰沒有配置。在nginx上跑rails一般只有在生產(chǎn)環(huán)境下才會(huì)使用,因而passenger默認(rèn)下就是rails環(huán)境設(shè)置為生產(chǎn)環(huán)境,而rails初始化時(shí)默認(rèn)沒有對(duì)生產(chǎn)環(huán)境進(jìn)行密鑰配置。這時(shí)就需要我們自己去配置rails的密鑰了

railsGemfile中加入

rubygem "dotenv-rails"

然后運(yùn)行

shellbundle install

安裝完這個(gè)gem后就可以配置我們的生產(chǎn)環(huán)境密鑰了

首先在sample_app目錄下建立一個(gè).env文件

然后運(yùn)行

shellrake secret 

這個(gè)命令會(huì)隨機(jī)生成一個(gè)安全密鑰,將這個(gè)密鑰復(fù)制下來,然后在.env中添加

rubySECRET_KEY_BASE = 你的密鑰

最后修改sample_app目錄下的config/secrets.yml

yml
development: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> test: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> production: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

這樣一來密鑰配置就完成了,重啟nginx就能成功訪問到rails項(xiàng)目了

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/39172.html

相關(guān)文章

  • Passenger + Nginx + Rails 生產(chǎn)環(huán)境配置

    摘要:設(shè)置密碼將用戶加入群組退出登錄,使用新用戶登錄。所幸,提供直連,在配置里面只限定本地連接基本上還是可以保證數(shù)據(jù)安全的,所以目前就采用直連的方式。決定轉(zhuǎn)戰(zhàn)其他的服務(wù)器。 本文中我將描述在 DigitalOcean 上配置 Rails 生產(chǎn)環(huán)境的過程,希望對(duì)有相同需求的人一定的幫助 0x01. 創(chuàng)建服務(wù)器 如果你剛剛購(gòu)買了 DigitalOcean 的服務(wù),先添加一臺(tái)機(jī)器,小應(yīng)用的話 ...

    kid143 評(píng)論0 收藏0
  • ruby之道(工具篇):CentOS7下搭建ruby on rails開發(fā)環(huán)境

    摘要:安裝是一個(gè)命令行工具,提供多版本環(huán)境的管理和切換,還可以根據(jù)項(xiàng)目管理不同的。如果沒有生成,這一步可能會(huì)失敗,直接生成之后再執(zhí)行安裝即可。還可能遇到有關(guān)的問題根據(jù)提示執(zhí)行。然后就能看到安裝上了。如果安裝不上,可以嘗試連接后再安裝。 1、安裝rvm curl -L https://get.rvm.io | bash -s stable rvm是一個(gè)命令行工具,提供多版本ruby環(huán)境的管理和...

    kidsamong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<