美文网首页
rails部署

rails部署

作者: Jayzen | 来源:发表于2016-07-27 10:31 被阅读356次

    production中key缺失问题

    #该问题在部署nginx的时候会呈现出如下的表现形式
    Incomplete response received from application
    
    rails secret RAILS_ENV=production #生成key
    #复制上面的值,粘贴到config/secret.yml中相应的production位置
    
    

    production环境下样式缺失问题

    #config/initializers/assets.rb中添加/app/assets/中所有的js和css样式,包括其他格式
    #例子:
    Rails.application.config.assets.precompile += %w( 
    application.css article.scss  )
    

    mac下进行passenger和nginx部署

    #步骤1:相关软件和依赖
    ruby2.3.0;rvm;xcode;rails5.0.0
    #新建一个项目nginx_demo,并且启动
    rails new nginx_demo
    rails s
    
    #步骤2:安装passenger和nginx
    passenger是一个app server,支持基于Rack框架的 Ruby app(包括 Rails)
    因为Nginx不支持动态module载入,所以需要通过Passenger来自动下载,编译,安装由Passenger修改版的Nginx
    
    gem install passenger #gem 安装 passenger
    passenger-install-nginx-module #安装nginx
    安装nginx注意两个问题
    1.选择步骤1
    2.填写路径:/usr/local/nginx
    
    将nginx命令行程序连接到/usr/local/bin
    sudo ln -s /usr/local/nginx/sbin/nginx /usr/local/bin
    
    #步骤3:配置Nginx + Passenger + Rails
    修改hosts文件,给你的项目一个本地域名, 比如nginx_demo
    $ sudo vim /etc/hosts
    127.0.0.1 nginx_demo
    
    测试hosts
    $ ping nginx_demo
    
    
    配置Nginx, 这里我给出一个最小可运行的Nginx配置文件
    $ vim /usr/local/nginx/conf/nginx.conf
    worker_processes 1;
    events { worker_connections 1024;}
    http { 
      passenger_root /Users/jayzen/.rvm/gems/ruby-2.3.0-p290/gems/passenger-3.0.10; 
      passenger_ruby /Users/jayzen/.rvm/wrappers/ruby-2.3.0-p290/ruby; 
    
      include mime.types; 
      default_type application/octet-stream; sendfile on; 
      keepalive_timeout 65; 
      
      server { 
        listen 80; 
        server_name nginx_demo; 
        root /Users/jayzen/workshop/nginx/public; 
        passenger_enabled on;
        rails_env development; }
    }
    
    
    测试Nginx的配置文件语法是否正确
    $ sudo nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    
    启动Nginx
    $ sudo nginx
    
    如何在修改Nginx的配置文件后,让Nginx载入新配置
    $ sudo nginx -s reload
    
    如何停止Nginx
    $ sudo nginx -s stop
    
    如何在不停Nginx的情况下,重新启动Passenger
    $ cd workshop/nginx_demo
    $ touch tmp/restart.txt
    
    #访问
    http://nginx_demo
    

    阿里云远程连接ubuntu

    独立IP地址是:120.26.141.56
    mac(linux)登录ubuntu方式:ssh root@120.26.141.56
    
    window登录ubuntu方式:使用putty软件:
    ip如上所示,端口号是22,登录方式是ssh,登录的用户名是root
    
    

    阿里云中安装nginx和运行

    登录
    #更新软件源
    apt-get update
    #安装nginx
    apt-get -y install nginx
    #查看nginx的运行状态
    service service status
    
    #查看nginx运行文件存放位置
    vim /etc/nginx/sites-enabled/default
    可知存放文件在此位置:root /usr/share/nginx/html #将需要运行的文件放置此位置
    
    

    ubuntu14.04使用passenger和nginx部署rails

    第一步:安装rvm ruby2.3.0 rails5.0.0
    注意的问题是.bashrc中添加相关代码以启动rvm
    
    第二步:安装passenger和nginx
    #导入passenger密匙
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
    #安装 apt 插件以支持 https 传输:
    sudo apt-get install apt-transport-https ca-certificates
    #添加 apt 源(对应 Ubuntu 14.04 LTS):
    sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main > /etc/apt/sources.list.d/passenger.list'
    sudo apt-get update
    #安装 Passenger 的包:
    sudo apt-get install nginx-extras passenger
    
    第三步:修改配置文件
    #/etc/nginx/nginx.conf中添加下面两行到http中
    #这会打开 Passenger 支持,并且指定使用之前用 rvm 安装的 ruby 版本
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    passenger_ruby /home/deploy/.rvm/wrappers/default/ruby;
    
    #删除和新建配置
    rm /etc/nginx/sites-enabled/default
    touch /etc/nginx/sites-enabled/example.com.conf
    
    #example.com.conf添加如下代码
    server {
        listen 80 default;
        server_name example.com; # 这里填写你真实域名
        root /var/www/example.com/current/public; #current是项目名称
        passenger_enabled on;
        passenger_app_env production;#模式就是production,这里可以省略
    }
    
    #current项目需要进行如下操作
    bundle install
    #生成production环境下的数据库
    RAILS_ENV=production rake db:create db:migrate
    #样式编译
    rake assets:precompile
    #添加key到config/sercret.yml的production中
    rails secret RAILS_ENV=production
    
    第四步:添加root路由和重启nginx
    #config/routes.rb
    root to: 'homes/index'
    #重启nginx
    sudo service nginx restart
    

    相关文章

      网友评论

          本文标题:rails部署

          本文链接:https://www.haomeiwen.com/subject/juanjttx.html