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