如果您是Ruby on Rails开发人员,可能需要Web服务器来托管您的Web应用程序。本教程将向您展示如何使用Phusion Passenger。作为Rails的Web服务器,Passenger易于安装,配置和维护,可与Nginx或Apache一起使用。在本教程中,我们将在Ubuntu上安装带有Nginx的Passenger。
在本教程结束时,您将在Passenger / Nginx Web服务器上部署测试Rails应用程序,并通过域名或IP地址访问。
创建一个新的UbuntuCVM。对于较小的站点,只需采用1GB内存即可。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器。
1G配置建议您选择32位Ubuntu映像,因为内存消耗较小(64位程序比32位程序使用的内存多50%)。但是,如果您需要更大的机器或者有可能升级到4 GB以上的RAM,则应选择64位版本。
创建CVM后,系统会默认给您分配一个具有Sudo权限的账户
如果你没有域名,建议您先去这里注册一个域名,您需要将域名解析到您的服务器,您可以使用腾讯云云解析进行快速设置。当然,您也可以选择不购买,直接使用CVM所分配的公网IP进行访问。
我们将从源码库手动编译安装Ruby。我们应该运行更新以确保我们要安装的所有软件包都是最新的:
sudo apt-get update
接下来,安装一些编译依赖项。使用下面的命令快速安装:
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源文件创建一个临时文件夹:
mkdir ~/ruby
移至新文件夹:
cd ~/ruby
下载最新的稳定Ruby源代码。在撰写本文时,这是版本2.1.3。如果有更新的版本,则需要替换以下命令中的链接:
wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.gz
解压缩下载的文件:
tar -xzf ruby-2.1.3.tar.gz
选择解压缩的目录:
cd ruby-2.1.3
运行配置脚本。这需要一些时间来检查依赖项并创建一个新的Makefile:
./configure
运行make工具,它将使用Makefile构建可执行程序。此步骤可能需要更长时间:
make
现在,使用install参数运行相同的命令。它会尝试将已编译的二进制文件复制到/usr/local/bin
文件夹中。此步骤需要root访问才能写入此目录。这还需要一些时间:
sudo make install
现在应该在系统上安装Ruby。我们可以使用以下命令检查它,该命令应该打印Ruby版本:
ruby -v
最后,我们可以删除临时文件夹:
rm -rf ~/ruby
过去安装Passenger的首选方法是使用RubyGems(passenger-install-nginx-module
)安装。
但是,您现在可以使用高级打包工具(APT)在Ubuntu上安装Passenger。这样,安装起来变的更简单了。首先,安装PGP密钥:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
创建一个APT源文件(您需要sudo权限):
sudo nano /etc/apt/sources.list.d/passenger.list
并在文件中插入以下行:
deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main
按CTRL + x退出,输入y以保存文件,然后按ENTER确认文件位置。
更改此文件的所有者和权限:
sudo chown root: /etc/apt/sources.list.d/passenger.list
sudo chmod 600 /etc/apt/sources.list.d/passenger.list
更新APT缓存:
sudo apt-get update
最后,使用Nginx安装Passenger:
sudo apt-get install nginx-extras passenger
此步骤将覆盖我们的Ruby版本旧版本。要解决此问题,只需删除不正确的Ruby位置并为正确的Ruby二进制文件链接到相应的运行位置即可。
sudo rm /usr/bin/ruby
sudo ln -s /usr/local/bin/ruby /usr/bin/ruby
打开Nginx配置文件:
sudo nano /etc/nginx/nginx.conf
在http中找到以下行:
# passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
# passenger_ruby /usr/bin/ruby;
取消注释。更新passenger_ruby行中的路径。他们应该是这样的:
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
) `)
cd ~
安装rails gem这需要几分钟:
sudo gem install --no-rdoc --no-ri rails
现在我们可以创建一个新的应用程序。在我们的示例中,我们将使用名称testapp
。如果要使用其他名称,请确保使用正确的路径。我们将跳过Bundler安装,因为我们希望稍后手动运行它。
rails new testapp --skip-bundle
进入目录:
cd testapp
现在我们需要安装一个JavaScript执行环境。它可以作为therubyracer
请打开Gemfile:
nano Gemfile
找到以下行:
# gem 'therubyracer', platforms: :ruby
并取消注释:
gem 'therubyracer', platforms: :ruby
保存文件,然后运行Bundler:
bundle install
我们需要禁用默认的Nginx配置。打开Nginx配置文件:
sudo nano /etc/nginx/sites-available/default
找到行:
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
改成这样:
# listen 80 default_server;
# listen [::]:80 default_server ipv6only=on;
保存文件。
现在,为我们的应用程序创建一个Nginx配置文件:
sudo nano /etc/nginx/sites-available/testapp
添加以下server块。设置说明如下。
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 + x,y,ENTER)。
为它创建一个符号链接:
sudo ln -s /etc/nginx/sites-available/testapp /etc/nginx/sites-enabled/testapp
重启Nginx:
sudo nginx -s reload
现在您的应用程序的网站应该是可访问了。使用您的CVM的IP地址或者您的域名:
http://CVM_ip_address
验证结果:
您应该在服务器上看到Rails测试应用程序已经可以访问了。
要更新Ruby,您需要编译最新版本,如本教程的第四步所示。要使用Nginx更新Passenger,您需要运行基本系统更新:
sudo apt-get update && sudo apt-get upgrade
但如果有新的系统Ruby版本可用,它可能会覆盖我们的Ruby。因此,您可能需要重新运行命令以删除现有版本的Ruby并为Ruby二进制文件创建新的符号链接。它们列在本教程的第五步末尾。
更新过程完成后,您需要重新启动Web服务器:
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 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有