Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何使用Passenger和Nginx部署Rails

如何使用Passenger和Nginx部署Rails

原创
作者头像
乌鸦
修改于 2018-08-06 06:39:55
修改于 2018-08-06 06:39:55
5.3K00
代码可运行
举报
运行总次数:0
代码可运行

介绍

如果您是Ruby on Rails开发人员,可能需要Web服务器来托管您的Web应用程序。本教程将向您展示如何使用Phusion Passenger。作为Rails的Web服务器,Passenger易于安装,配置和维护,可与Nginx或Apache一起使用。在本教程中,我们将在Ubuntu上安装带有Nginx的Passenger。

在本教程结束时,您将在Passenger / Nginx Web服务器上部署测试Rails应用程序,并通过域名或IP地址访问。

第一步 - 创建你的CVM

创建一个新的UbuntuCVM。对于较小的站点,只需采用1GB内存即可。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器

1G配置建议您选择32位Ubuntu映像,因为内存消耗较小(64位程序比32位程序使用的内存多50%)。但是,如果您需要更大的机器或者有可能升级到4 GB以上的RAM,则应选择64位版本。

创建CVM后,系统会默认给您分配一个具有Sudo权限的账户

第二步 - 设置域名(可选)

如果你没有域名,建议您先去这里注册一个域名,您需要将域名解析到您的服务器,您可以使用腾讯云云解析进行快速设置。当然,您也可以选择不购买,直接使用CVM所分配的公网IP进行访问。

第三步 - 安装Ruby

我们将从源码库手动编译安装Ruby。我们应该运行更新以确保我们要安装的所有软件包都是最新的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get update

接下来,安装一些编译依赖项。使用下面的命令快速安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 libsqlite3-dev sqlite3

为Ruby源文件创建一个临时文件夹:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir ~/ruby

移至新文件夹:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd ~/ruby

下载最新的稳定Ruby源代码。在撰写本文时,这是版本2.1.3。如果有更新的版本,则需要替换以下命令中的链接:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.gz

解压缩下载的文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar -xzf ruby-2.1.3.tar.gz

选择解压缩的目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd ruby-2.1.3

运行配置脚本。这需要一些时间来检查依赖项并创建一个新的Makefile

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./configure

运行make工具,它将使用Makefile构建可执行程序。此步骤可能需要更长时间:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
make

现在,使用install参数运行相同的命令。它会尝试将已编译的二进制文件复制到/usr/local/bin文件夹中。此步骤需要root访问才能写入此目录。这还需要一些时间:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo make install

现在应该在系统上安装Ruby。我们可以使用以下命令检查它,该命令应该打印Ruby版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ruby -v

最后,我们可以删除临时文件夹:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rm -rf ~/ruby

第四步 - 安装Passenger和Nginx

过去安装Passenger的首选方法是使用RubyGems(passenger-install-nginx-module)安装。

但是,您现在可以使用高级打包工具(APT)在Ubuntu上安装Passenger。这样,安装起来变的更简单了。首先,安装PGP密钥:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7

创建一个APT源文件(您需要sudo权限):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo nano /etc/apt/sources.list.d/passenger.list

并在文件中插入以下行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main

CTRL + x退出,输入y以保存文件,然后按ENTER确认文件位置。

更改此文件的所有者和权限:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo chown root: /etc/apt/sources.list.d/passenger.list
sudo chmod 600 /etc/apt/sources.list.d/passenger.list

更新APT缓存:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get update

最后,使用Nginx安装Passenger:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get install nginx-extras passenger

此步骤将覆盖我们的Ruby版本旧版本。要解决此问题,只需删除不正确的Ruby位置并为正确的Ruby二进制文件链接到相应的运行位置即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo rm /usr/bin/ruby
sudo ln -s /usr/local/bin/ruby /usr/bin/ruby

第五步 - 设置Web服务器

打开Nginx配置文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo nano /etc/nginx/nginx.conf

在http中找到以下行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
# passenger_ruby /usr/bin/ruby;

取消注释。更新passenger_ruby行中的路径。他们应该是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/local/bin/ruby;

保存并退出。

第六步 - 部署

在本教程中,我们将直接在CVM上创建一个新的Rails应用程序。我们需要一个rails gem来创建新的应用程序。

移动到用户的主目录(否则,您将收到错误`No such file or directory - getcwd) `)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd ~

安装rails gem这需要几分钟:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo gem install --no-rdoc --no-ri rails

现在我们可以创建一个新的应用程序。在我们的示例中,我们将使用名称testapp。如果要使用其他名称,请确保使用正确的路径。我们将跳过Bundler安装,因为我们希望稍后手动运行它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rails new testapp --skip-bundle

进入目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd testapp

现在我们需要安装一个JavaScript执行环境。它可以作为therubyracer 请打开Gemfile

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nano Gemfile

找到以下行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# gem 'therubyracer',  platforms: :ruby

并取消注释:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gem 'therubyracer',  platforms: :ruby

保存文件,然后运行Bundler:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bundle install

我们需要禁用默认的Nginx配置。打开Nginx配置文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo nano /etc/nginx/sites-available/default

找到行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

改成这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# listen 80 default_server;
# listen [::]:80 default_server ipv6only=on;

保存文件。

现在,为我们的应用程序创建一个Nginx配置文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo nano /etc/nginx/sites-available/testapp

添加以下server块。设置说明如下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 80 default_server;
  server_name www.mydomain.com;
  passenger_enabled on;
  passenger_app_env development;
  root /home/rails/testapp/public;
}

在此文件中,我们启用侦听80端口,设置域名,启用Passenger,并将根目录设置为新项目的公共目录。root行是你要修改,以配合您的Rails应用程序的位置之一。如果您不想将域名分配给此应用程序,则可以跳过server_name行,使用您的IP地址。

要测试我们的设置,我们希望看到Rails Welcome aboard页面。但是,仅当应用程序在开发环境中启动时,此方法才有效。默认情况下,Passenger在生产环境中启动应用程序,因此我们需要使用passenger_app_env选项更改此选项。如果您的应用已准备好投放,则需要保留此设置。

保存文件(CTRL + xyENTER)。

为它创建一个符号链接:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo ln -s /etc/nginx/sites-available/testapp /etc/nginx/sites-enabled/testapp

重启Nginx:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo nginx -s reload

现在您的应用程序的网站应该是可访问了。使用您的CVM的IP地址或者您的域名:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://CVM_ip_address

验证结果:

您应该在服务器上看到Rails测试应用程序已经可以访问了。

第七步 - 定期更新

要更新Ruby,您需要编译最新版本,如本教程的第四步所示。要使用Nginx更新Passenger,您需要运行基本系统更新:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get update && sudo apt-get upgrade

但如果有新的系统Ruby版本可用,它可能会覆盖我们的Ruby。因此,您可能需要重新运行命令以删除现有版本的Ruby并为Ruby二进制文件创建新的符号链接。它们列在本教程的第五步末尾。

更新过程完成后,您需要重新启动Web服务器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo service nginx restart

你学会了吗?如果您在生产环境,我建议您在给Nginx加上一层保护,使用腾讯云SSL证书。如何设置此证书取决于你是否拥有可解析该服务器的域名。

更多Linux教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Deploy a Rails App with Passenger and Nginx on Ubuntu 14.04》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Debian 8 使用 Apache 部署 Ruby on Rails
Ruby on Rails 是一个快速开发的Web框架,Web设计人员和开发人员利用它能实现动态的全功能Web应用程序。 本文使用 Phusion Passenger 或mod_rails 方法部署 Rails 应用程序。 Passenger 允许您直接在Apachen应用程序中嵌入 Rails 应用程序,而无需使用FastCGI或复杂的Web服务器代理。
Debian中国
2018/12/20
2.8K0
Debian 9下安装Ruby on Rails与NGINX
Ruby on Rails是一个Web框架,允许Web设计人员和开发人员实现动态的功能齐全的Web应用程序。在生产中部署Rails应用程序时,开发人员可以从几个流行的应用程序服务器中进行选择,包括Puma,Unicorn和Passenger。本指南将使用Passenger,因为它可以方便地与NGINX集成。
Likenttt
2018/09/14
3.7K0
如何在Ubuntu上使用Passenger安装Rails和nginx
Ruby on Rails为Web开发人员提供了一个快速创建各种Web应用程序的框架,而nginx是一个轻量级的高性能Web服务器软件。通过Phusion Passenger安装时,可以轻松配置这两个程序,以便在服务器上协同工作。
乌鸦
2018/07/26
3.8K0
Rails 部署总结
学 Ruby 和 Rails 有一段时间了,后面准备也准备把站点换了。不过开始开发之前,我先把 Rails 部署的坑先踩了。之所以部署先行是因为之前 Django 部署把我坑惨了,导致之前写的 Django 代码还是 Github 静静地躺着。 忽悠妹子给我在腾讯云买了服务器后,马不停蹄的就开始了填坑之旅。这里我选择的系统是 Ubuntu 16.04 ,所以下面的命令以此为准。
BigNerdCoding
2018/03/20
7.1K4
Rails 部署总结
如何在CentOS 6.5上使用 Nginx+Passenger 部署Railes应用程序
对于某个计算机编程领域的新手来说,挑战永远不会结束。本文的主题是Rails,以及如何在线获取基于Ruby On Rail的 Web应用程序 - 这是最简单,最快捷的方式。
八十岁的背影
2018/08/13
5.3K0
如何在Ubuntu 14.04上使用Puma和Nginx部署Rails应用程序
当您准备部署Ruby on Rails应用程序时,需要考虑许多有效的设置。本教程将帮助您部署Ruby on Rails应用程序的生产环境,使用PostgreSQL作为数据库,在Ubuntu 14.04上使用Puma和Nginx。
宇cccc
2018/09/26
5.8K0
使用Unicorn和Nginx在Ubuntu 14.04上配置Ruby on Rails应用程序
Ruby on Rails 是一个流行的 Web 应用程序框架,允许开发人员创建动态 Web 应用程序。本指南介绍如何在 Ubuntu 14.04 上使用Unicorn和 nginx 在服务器上部署Rails应用程序。
LPD6375
2018/08/29
7.2K0
在Debian 9上使用Apache安装Ruby on Rails
Ruby on Rails是一个服务器端Web应用程序框架。它维护了一组策划组件和“约定优于配置”的理念,使得我们可以快速开发应用程序而无需大量样板。本指南将向您展示如何使用Phusion Passenger在您的Linode上部署Rails应用程序。Passenger允许您直接在Apache应用程序中嵌入Rails应用程序,而无需担心FastCGI或复杂的Web服务器代理。
GIStudy
2018/08/28
6.1K0
如何在Ubuntu 16.04上安装和配置Redmine
Redmine是一个用于项目管理的Web应用程序,它允许用户灵活地管理项目,同时提供强大的追踪工具和众多的插件库。这个免费的开源解决方案是付费项目管理工具的替代方案之一,并且它提供了对wiki,论坛,日历和数据可视化工具的支持。
魔法少女伊莉雅
2018/09/04
3.1K0
如何在Ubuntu 16.04上安装和配置Redmine
如何在Ubuntu 14.04上部署Clojure Web应用程序
人们对函数式编程的兴趣不断增加,更具体地说,是在Clojure中对Web进行编程。许多关于如何构建基本应用程序的教程经常忽略部署细节。本文将向您展示如何将Clojure Web应用程序部署到Ubuntu 14.04 CVM。
风研雨墨
2018/09/25
1.5K0
CentOS6.5使用Nginx+Passenger部署Ruby on Rails环境
本文介绍如何使用Nginx+Passenger来部署Ruby on Rails环境,本文使用的操作系统版本是CentOS6.5。 1.安装ruby
星哥玩云
2022/07/04
6200
如何在Ubuntu 14.04上保护Nginx
即使使用默认设置,Nginx也是一个非常安全可靠的Web服务器。但是,有很多方法可以进一步保护Nginx。
编程男孩
2018/10/15
1.7K0
如何在Ubuntu 14.04上使用Unicorn和Nginx部署Rails应用程序
当您准备部署Ruby on Rails应用程序时,需要考虑许多有效的设置。本教程将帮助您部署Ruby 在 Rails应用程序中的生产环境,使用PostgreSQL作为数据库,在Ubuntu 14.04上使用Unicorn和Nginx。
丰一川
2018/09/28
4.6K0
如何在Ubuntu 16.04上使用Apache或Nginx加密Tomcat 8连接
Apache Tomcat是一个Web服务器和servlet容器,旨在为Java应用程序提供服务。Tomcat经常用于生产企业部署和较小的应用程序需求,既灵活又强大。
信姜缘
2018/09/26
1.9K0
使用腾讯云SSL证书保护你的Nginx服务器
腾讯云SSL是一个新的证书颁发机构(CA),它提供了一种获取和安装免费TLS /SSL证书的简便方法,从而在Web服务器上启用加密的HTTPS。您可以在腾讯云Web页面轻松获取免费的SSL证书,无论您选择哪种Web服务器软件。
你在哪里
2018/07/30
6.1K0
使用腾讯云SSL证书保护你的Nginx服务器
如何在CentOS 6.5上使用Unicorn和Nginx部署Rails应用程序
在部署基于Rails的Web应用程序时,简单设计的应用程序服务器可以在几分钟内启动并运行。但是,如果您希望更好地控制服务器设置或想要尝试更灵活的新功能,那么使用分层的组件可以帮助您实现目标- 无论是面向未来的部署还是需要引入第三方元素,例如缓存服务器。
水门
2018/08/07
4.4K0
如何在Ubuntu 14.04上使用Let's Encrypt来保护Nginx
Let's Encrypt是一个新的证书颁发机构(CA),它提供了一种获取和安装免费TLS / SSL证书的简便方法,从而在Web服务器上启用加密的HTTPS。它通过提供软件客户端Certbot简化了流程,该客户端尝试自动化大多数(如果不是全部)所需步骤。目前,获取和安装证书的整个过程在Apache和Nginx Web服务器上都是完全自动化的。
独钓寒江雪_Ly
2018/10/16
1.3K0
如何在服务器上安装OpenLDAP
轻量级目录访问协议(LDAP)是一种标准协议,旨在通过网络管理和访问分层目录信息。目录服务在开发内部网和与互联网程序共享用户、系统、网络、服务和应用的过程中占据了重要地位。例如,目录服务可能提供了组织有序的记录集合,通常有层级结构,例如公司电子邮件目录。同理,也可以提供包含了地址和电话号码的电话簿。 用例子来说,一个用语言描述的LDAP的搜索如:“在公司邮件目录中搜索公司位于那什维尔名字中含有“Jessy”的有邮件地址的所有人。请返回他们的全名,电子邮件,头衔和简述。
不会飞的蝴蝶
2018/08/02
3.7K0
如何在服务器上安装OpenLDAP
如何在Ubuntu 14.04上安装Mailpile
在本教程中,我们将在Ubuntu 14.04上安装Mailpile,一个快速,安全,漂亮的Webmail客户端。
黑色技术
2018/10/08
2K0
在Ubuntu 14.04上安装GitLab(Trusty Tahr)
GitLab是一个基于Ruby on Rails的免费git存储库管理应用程序。假如您想托管自己的git存储库,这是一个很好的替代方案,因为在编写私有代码或则闭源软件的时候,使用第三方托管并不总是最佳选择。
白加黑大人
2018/09/07
2.2K0
在Ubuntu 14.04上安装GitLab(Trusty Tahr)
推荐阅读
相关推荐
Debian 8 使用 Apache 部署 Ruby on Rails
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验