时间:2021-07-01 10:21:17 帮助过:22人阅读
Rails环境搭建与部署(Nginx+Passenger)
1. 安装 Ruby
安装一些必要的依赖库:
$ sudo apt-get install build-essential libssl-dev libyaml-dev libreadline-dev openssl curl git-core
zlib1g-dev bison libxml2-dev libxslt1-dev libcurl4-openssl-dev nodejs
安装Ruby包管理器RVM
$ curl -sSL https://rvm.io/mpapis.asc | gpg --import -
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
$ \curl -sSL https://get.rvm.io | bash -s stable
$ rvm -v
如果看到rvm的版本号,就说明已经安装好了ruby。
使用RVM安装Ruby
$ rvm install ruby-2.0.0-p643
$ ruby -v
$ gem -v
察看ruby的版本和gem的版本,如果正确输出ruby的版本,即安装成功。2.gem更换淘宝源(由于天朝墙太高,rubygems.org太慢,故使用ruby.taobao.org) $ gem sources -l
查看当前gem源
$ gem sources --remove https://rubygems.org/
删除当前gem源
$ gem sources -a https://ruby.taobao. org
增加国内源
$ gem sources -u
更新缓存
2. 安装 Rails、Passenger 和 Nginx $ gem install rails bundler passenger Passenger 是一个比较好的 Rails 服务器,我们选择用它来运行 rails 并使用 Nginx 做反向代理。 们选择使用 apt 来安装 Passenger,先安装 PGP key $ rvmsudo passenger-install-nginx-module
所有都选默认,包括nginx安装目录业选择默认 /opt/nginx/
3. 修改Nginx配置
$ sudo gedit /opt/nginx/conf/nginx.conf
加入如下代码:
/*********************************/opt/nginx/conf/nginx.conf*********************************************/
user dawn; #设置用户名,非root用户
worker_processes 2;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
passenger_root /home/dawn/.rvm/gems/ruby-2.0.0-p643/gems/passenger-5.0.26; #passenger的安装目录
passenger_ruby /home/dawn/.rvm/gems/ruby-2.0.0-p643/wrappers/ruby; #ruby的安装目录
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
#http配置
# server {
# listen 80;
# server_name 127.0.0.1;
# charset utf-8;
# #charset koi8-r;
#
# access_log logs/host.access.log;
#
# location / {
# root /home/dawn/workspace/sample_app/public;
# index index.html index.htm;
# passenger_enabled on;
# autoindex on;
# # rails_env development;
# rails_env production;
# }
#
# #error_page 404 /404.html;
#
# # redirect server error pages to the static page /50x.html
# #
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# root html;
# }
#
#
# }
# HTTPS server
#
server {
listen 80; #保证直接访问网址可以进入https
listen 443 ssl;
server_name 127.0.0.1;
charset utf-8;
access_log logs/host.access.log;
ssl_certificate /opt/nginx/conf/server.pem; #ssl证书的路径
ssl_certificate_key /opt/nginx/conf/server.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
location / {
root /home/dawn/workspace/sample_app/public;
index index.html index.htm;
passenger_enabled on;
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
rails_env production; #rails环境设置为production,即生产模式
}
#开启目录浏览功能,Rails开启目录浏览必须重新开启一个location
location /download {
root /home/dawn/workspace/sample_app/public;
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
/*************************************************分割线*******************************************************************/
注1:生成ssl证书:
x509证书一般会用到三类文,key,csr,crt。
Key 是私用密钥openssl格,通常是rsa算法。
Csr 是证书请求文件,用于申请证书。在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个密钥。
crt是CA认证后的证书文,(windows下面的,其实是crt),签署人用自己的key给你签署的凭证。
1.key的生成
$ openssl genrsa -des3 -out server.key 2048
这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。可以通过以下方法生成没有密码的key:
$ openssl rsa -in server.key -out server.key
server.key就是没有密码的版本了。
2. 生成CA的crt
$ openssl req -new -x509 -key server.key -out ca.crt -days 3650
生成的ca.crt文件是用来签署下面的server.csr文件。
3. csr的生成方法
$ openssl req -new -key server.key -out server.csr
需要依次输入国家,地区,组织,email。最重要的是有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器 警报。生成的csr文件交给CA签名后形成服务端自己的证书。
4. crt生成方法
CSR文件必须有CA的签名才可形成证书,可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢。
$ openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
输入key的密钥后,完成证书生成。-CA选项指明用于被签名的csr证书,-CAkey选项指明用于签名的密钥,-CAserial指明序列号文件,而-CAcreateserial指明文件不存在时自动生成。
最后生成了私用密钥:server.key和自己认证的SSL证书:server.crt
证书合并:
$ cat server.key server.crt > server.pem
/*****************************************************分割线*****************************************************/
这下打开浏览器访问localhost,即可看到nginx的欢迎界面。如果在root的目录添加了rails应用目录,即可看到网站的主页。
以上就介绍了Rails环境搭建与部署(Nginx+Passenger),包括了passenger,rails方面的内容,希望对PHP教程有兴趣的朋友有所帮助。