摘要:是一個能快速搭建環境的工具,它能快速的將和部署到你的服務器中,是部署環境就如同環境那樣簡單快速,讓人愉悅。在上跑一般只有在生產環境下才會使用,因而默認下就是環境設置為生產環境,而初始化時默認沒有對生產環境進行密鑰配置。
passenger
passenger是一個能快速搭建web環境的工具,它能快速的將nginx和passenger部署到你的服務器中,是部署ruby環境就如同php環境那樣簡單快速,讓人愉悅。下面我將使用這個工具將一個幾乎空白的web服務器打造成一個高效的ruby服務器
centos7centos7是最新的centos版本帶來了一系列新特性,包括對Docker的支持和性能的提高,centos 6和 centos 7性能對比
安裝ruby環境首先下載rvm(ruby虛擬機)
shellcurl -L get.rvm.io | bash -s stable
安裝rvm
shellsource /etc/profile.d/rvm.sh
安裝ruby(請選擇官網上最新的版本,使用ruby就要一直堅定的使用其最新版本)
shellrvm install 2.2.1
安裝完成后只要運行ruby -v有顯示版本號就證明已經安裝成功了
安裝Passenger 和 Nginx首先使用gem安裝passenger
shellgem install passenger
由于nginx不支持動態的模塊載入,所以要使用passenger來進行編譯安裝由passenger修改過的nginx
接下來安裝nginx+passenger
shellpassenger-install-nginx-module
運行了這個命令后,按照提示一步步安裝
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:
當遇到這個選擇時,建議選擇1,1代表自動完整安裝并配置nginx,2是代表根據自己需求定制nginx.
安裝完成后系統會提示,nginx安裝的目錄,在centos7下默認是安裝在/opt/nginx下,配置文件是默認在/opt/nginx/conf/nginx.conf
打開nginx.conf我們可以看到,passenger已經在nginx的配置文件上做了一點小配置
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并初始化一個rails項目
使用gem安裝rails
shellgem install rails
初始化一個rails項目
shellrails new sample_app
第一次初始化rails時一般會報出缺少gem的警告,此時只需要將rails的鏡像改為淘寶鏡像,詳見http://ruby.taobao.org,然后執行
shellbundle install
當執行完畢后,一個rails項目的初始化就完成了
配置nginx打開配置文件
vim /opt/nginx/conf/nginx.conf
這里給出一份最簡單能運行的nginx.conf(注意:rails項目的目錄是/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 { #監聽的端口 listen 8080; server_name 127.0.0.1; #web根目錄,一定是rails項目下的public root /var/www/sample_app/public/; #一定要記得將這個選項設置為on passenger_enabled on; } }
運行
shellsbin/nginx -t
如果沒有報錯,那說明配置成功了。那么已經萬事大吉了嗎?并沒有!!
配置Centos7防火墻Centos7后已經廢棄了原來的iptables,改而使用firewall,默認情況下centos7系統不允許任何外來訪問,就算你把firewall關了也沒用,所以必須配置firewall
shellfirewall-cmd --zone=public --add-port=8080/tcp --permanent
這個命令表示,允許外部訪問8080端口,重載一下firewall的配置,就外部就能訪問服務器的8080端口了
配置Rails的生產環境配置完Centos7的防火墻后,訪問rails程序時就會報出一個403的forbidden錯誤,仔細查看日志后,發現了問題了的原因
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)):
這個錯誤表示Rails生產環境下的密鑰沒有配置。在nginx上跑rails一般只有在生產環境下才會使用,因而passenger默認下就是rails環境設置為生產環境,而rails初始化時默認沒有對生產環境進行密鑰配置。這時就需要我們自己去配置rails的密鑰了
在rails的Gemfile中加入
rubygem "dotenv-rails"
然后運行
shellbundle install
安裝完這個gem后就可以配置我們的生產環境密鑰了
首先在sample_app目錄下建立一個.env文件
然后運行
shellrake secret
這個命令會隨機生成一個安全密鑰,將這個密鑰復制下來,然后在.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項目了
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39172.html
摘要:設置密碼將用戶加入群組退出登錄,使用新用戶登錄。所幸,提供直連,在配置里面只限定本地連接基本上還是可以保證數據安全的,所以目前就采用直連的方式。決定轉戰其他的服務器。 本文中我將描述在 DigitalOcean 上配置 Rails 生產環境的過程,希望對有相同需求的人一定的幫助 0x01. 創建服務器 如果你剛剛購買了 DigitalOcean 的服務,先添加一臺機器,小應用的話 ...
摘要:安裝是一個命令行工具,提供多版本環境的管理和切換,還可以根據項目管理不同的。如果沒有生成,這一步可能會失敗,直接生成之后再執行安裝即可。還可能遇到有關的問題根據提示執行。然后就能看到安裝上了。如果安裝不上,可以嘗試連接后再安裝。 1、安裝rvm curl -L https://get.rvm.io | bash -s stable rvm是一個命令行工具,提供多版本ruby環境的管理和...
閱讀 881·2021-11-23 09:51
閱讀 1088·2021-11-15 17:57
閱讀 1667·2021-09-22 15:24
閱讀 812·2021-09-07 09:59
閱讀 2221·2019-08-29 15:10
閱讀 1848·2019-08-29 12:47
閱讀 751·2019-08-29 12:30
閱讀 3368·2019-08-26 13:51