Rails环境搭建与部署(Nginx+Passenger)

         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的版本号,就说明已经安装好了。
  更换rvm国内源
 $ sed -i -e 's/ftp\.ruby-lang\.org\/pub\/ruby/ruby\.taobao\.org\/mirrors\/ruby/g' ~/.rvm/config/db
  使用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应用目录,即可看到网站的主页。

猜你喜欢

转载自blog.csdn.net/dawn_chen121/article/details/51232417