文档章节

Ubuntu 14.04 上使用 Nginx Passenger 部署 Ruby on Rails

小自在
 小自在
发布于 2014/07/17 00:42
字数 772
阅读 3438
收藏 3

本教程将会涉及以下工具:

  • Ubuntu 14.04 LTS

  • RVM

  • Ruby 2.1.1

  • Rails 4.0.3

  • Passenger 4.0+

  • Nginx(由 Passenger 编译)

推荐通过 Vagrant 搭建虚拟机环境进行练习。

创建帐号

假设你已经用 root 帐号通过 SSH 登陆服务器。

出于安全考虑,不要使用 root 帐号运行 web 应用。这里新建一个专门用于部署的用户,例如 deploy 或者其它你喜欢的名字。运行以下命令创建用户:

# useradd -m -s /bin/bash deploy

将用户加入 sudo 群组,以便使用 sudo 命令:

# adduser deploy sudo

为 deploy 用户设置密码:

# passwd deploy

退出当前 SSH 链接,用 deploy 帐号重新登陆。

安装 RVM 和 Ruby

更新 apt,并安装 curl:

$ sudo apt-get update
$ sudo apt-get install curl

然后安装 RVM:

$ \curl -sSL https://get.rvm.io | bash

RVM 安装完毕后,重新登陆 SSH,让 RVM 配置生效。然后安装 Ruby 2.1.1:

$ rvm use --install --default 2.1.1

Ruby 安装过程会请求 apt-get update 的权限,并自动安装系统依赖。安装完毕后,确认目前的 Ruby 版本:

$ ruby -v

应该看到 ruby 2.1.1 字样。

安装 Passenger

Passenger 是一个 app server,支持基于 Rack 框架的 Ruby app(包括 Rails)。Passenger 的特点是需要作为模块编译到 Nginx 中,优点是配置简单,不需要自己写启动脚本。

安装 Passenger 最简单的方法是通过 apt 安装,首先导入 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 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

现在修改 nginx 配置,编辑 /etc/nginx/nginx.conf,找到这两行注释:

# passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;# passenger_ruby /usr/bin/ruby;

将它修改为:

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;passenger_ruby /home/deploy/.rvm/wrappers/default/ruby;

这会打开 Passenger 支持,并且指定使用之前用 rvm 安装的 ruby 版本。

上传文件

用你喜欢的方法把项目上传到服务器上,例如 git(推荐)或 rsync,假设你使用 git,并且使用 github 的公开源。

创建站点文件夹:

$ sudo mkdir -p /var/www/example.com
$ sudo chown deploy:deploy /var/www/example.com

clone 项目文件:

$ cd /var/www/example.com
/var/www/example.com $ git clone https://github.com/YOURNAME/REPO.git current

取决于你的应用,这里需要安装数据库等其他系统组件,例如 PostgreSQL:

$ sudo apt-get install postgresql libpq-dev

执行 bundle 和 migrate:

/var/www/example.com $ cd current
/var/www/example.com/current $ bundle install
/var/www/example.com/current $ RAILS_ENV=production rake db:create db:migrate

执行 assets precompile:

/var/www/example.com/current $ rake assets:precompile

修改 Nginx 配置

删除原有的默认网站配置:

$ rm /etc/nginx/sites-enabled/default

新建网站配置:

$ touch /etc/nginx/sites-enabled/example.com.conf

编辑 /etc/nginx/sites-enabled/example.com.conf,写入以下内容:

server {    listen 80 default;    server_name example.com; # 这里填写你真实域名    root /var/www/example.com/current/public;    passenger_enabled on;}

重启 nginx:

$ sudo service nginx restart

完成

在浏览器打开服务器的 IP 地址或域名,应该看到你的网站在运行。

https://github.com/ruby-china/ruby-china/wiki/Ubuntu-14.04-%E4%B8%8A%E4%BD%BF%E7%94%A8-Nginx-Passenger-%E9%83%A8%E7%BD%B2-Ruby-on-Rails

本文转载自:

小自在
粉丝 0
博文 16
码字总数 1490
作品 0
嘉兴
私信 提问
在 Ubuntu 12.04 Server 上安装部署 Ruby on Rails 应用

前言 本教程只适合 Ubuntu Server 用于部署项目到线上,建议使用同样的 Ubuntu 版本,以免遇到一些版本不同带来的问题。 本教程适合新手初次部署 Rails 应用; 本文测试通过环境 Ubuntu 12....

zzc3516
2013/11/01
127
0
Mac 下用 Nginx + Passenger 部署 Rails 的运行环境。

系统需求 Mac OSX Lion 步骤0 安装环境依赖 安装Xcode 4.1,Xcode4.2以及更高的版本在 Lion 仍然存在一些兼容性问题,强烈建议使用XCode 4.1,下载地址: https://developer.apple.com/down...

孔俊
2013/07/09
232
0
Rails 支持模块--Phusion Passenger

Phusion Passenger,原名 mod_rails ,是一个旨在从Apache和Nginx网页服务器上更便捷的部署Ruby on Rails项目的Apache模块。 该项目的创始人如此介绍这个东西: Phusion是我们公司的名字,然...

匿名
2009/01/27
4.4K
1
可伸缩的高性能 Rails 应用程序开发和部署实践

Ruby On Rails 框架自它提出之日起就受到广泛关注,在“不要重复自己”,“约定优于配置”等思想的指导下,Rails 带给 Web 开发者的是极高的开发效率。 ActiveRecord 的灵活让你再也不用配置...

红薯
2010/03/19
1K
0
Phusion Passenger 2.2.9 发布

mod_rails,又名Phusion Passenger,是一个旨在从Apache和Nginx网页服务器上更便捷的部署Ruby on Rails项目的Apache模块和Nginx扩展。 此版本主要是提供对Bug的修复以及性能的提升,对Rails...

红薯
2010/01/18
327
0

没有更多内容

加载失败,请刷新页面

加载更多

使用原生css+js+html实现打印A4纸张的功能页面

有时候我们需要使用html+css实现打印A4纸张的功能页面,以下代码实现 <!DOCTYPE html><html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatibl......

b0cloud
16分钟前
2
0
读组件化之MGJRouter源码第二次的收获与思考

上一次我们写好了一个自定义的 路由类 ,然后我们来制作自己的 库 ,可以用来被 pod 引入 : 库的制作参考:https://www.jianshu.com/p/928d2ab053be 以下是我创建的: 利用上篇提到的 ,组件...

T型人才追梦者
17分钟前
1
0
spring cache、ehcache的使用及集成

项目中需要加缓存,故学习了 1、spring cache、ehcache的使用及集成 2、缓存的命中率等统计数据 一、spring cache 1、概述 Spring 3.1 引入了基于注解(annotation)的缓存(cache)技术 2、...

qkKing
18分钟前
2
0
Windows 10上源码编译Poco并编写httpserver和tcpserver | compile and install poco cpp library on windows

本文首发于个人博客https://kezunlin.me/post/9587bb47/,欢迎阅读! compile and install poco cpp library on windows Series guide to compile and install poco cpp library on windows g......

kezunlin
19分钟前
2
0
if-else-if-else与switch的区别

if-else-if-else: 适合分支较少 判断条件类型不单一 支持取 boolean 类型的所有运算 满足条件即停止对后续分支语句的执行 switch: 适合分支较多 判断条件类型单一,JDK 1.7 之前仅支持 in...

ConstXiong
19分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部