如何在 Ubuntu 14.04 上使用 Passenger 和 Apache 部署 Rails 应用程序

介绍

在本教程中,我们将展示如何安装 Phusion Passenger作为您的 Rails 友好的 Web 服务器,这是很容易的安装,配置和维护。我们将整合到Ubuntu 14.04. 在本教程结束时,我们将有一个测试 Rails 应用程序部署在我们的 Droplet。

如果您更喜欢 Nginx 比 Apache,请通过链接查看 如何在 Ubuntu 14.04 上使用 Passenger 和 Nginx 部署 Rails 应用程序

前提条件

第一步是创建一个新的 Droplet. 对于较小的网站,使用 512 MB 计划就足够了。

您可能想选择 32 位 Ubuntu 图像,因为内存消耗较小(64 位程序使用的内存比 32 位程序多约 50%)。

请确保使用Ubuntu 14.04. 在此写作时,Ubuntu 14.10 还没有 Passanger APT 存储库。 此外,Ubuntu 14.04 还有一个额外的优势:它是 LTS 版本,即长期支持

  • Ubuntu 14.04 32 位 Droplet

步骤 1 — 添加一个 Sudo 用户

在创建 Droplet 后,您应该创建系统用户并保护服务器,您可以通过遵循 初始服务器设置的文章来做到这一点。

如果你想遵循本教程,你需要一个具有 sudo 特权的基本用户. 我们将在本示例中使用 rails 用户. 如果你的用户有另一个名字,请确保在下一步中使用正确的路径。

步骤 2 (可选) - 设置您的域名

为了确保您的网站将是可见的,您需要设置您的DNS记录,以指向您的域名到您的新服务器. 您可以找到更多信息在 设置一个主机名 通过遵循链接。

然而,此步骤是可选的,因为您可以通过IP地址访问您的网站。

第3步:安装Ruby

我们将从源头手动安装Ruby。

在我们做任何其他事情之前,我们应该运行一个更新,以确保我们想要安装的所有软件包都最新:

1sudo apt-get update

接下来,安装一些图书馆和其他依赖,这将使安装尽可能顺利:

1sudo 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 libsqlite3-dev sqlite3

创建 Ruby 源文件的临时文件夹:

1mkdir ~/ruby

移动到新文件夹:

1cd ~/ruby

您可以下载最新的稳定 Ruby 源代码. 在此写作时,这是版本 2.1.4. 您可以从 Ruby 网站获取当前的最新版本。 如果新版本可用,您需要在以下命令中更换链接:

1wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.gz

解压下载的文件:

1tar -xzf ruby-2.1.4.tar.gz

选择提取的目录:

1cd ruby-2.1.4

运行配置脚本 这将需要一些时间,因为它检查依赖性,并创建一个新的 Makefile ,其中包含要执行编译代码的步骤:

1./configure

运行 make 实用程序,该实用程序将使用 Makefile 来构建可执行的程序。

1make

现在,使用安装参数运行相同的命令. 它将尝试将编译的二进制文件复制到 /usr/local/bin 文件夹。

1sudo make install

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

1ruby -v

如果您的 Ruby 安装成功,您应该看到如下的输出:

1ruby 2.1.4p265 (2014-10-27 revision 48166) [x86_64-linux]

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

1rm -rf ~/ruby

第4步:安装Apache

要安装 Apache,请输入以下命令:

1sudo apt-get install apache2

是的,这就是全部!

步骤5:安装乘客

首先,为存储库服务器安装 PGP 密钥:

1sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7

创建一个 APT 源文件:

1sudo nano /etc/apt/sources.list.d/passenger.list

插入以下行以将乘客存储库添加到文件中:

1deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main

CTRL+X 来退出,键入** Y** 来保存文件,然后按 ENTER 来确认文件位置。

更改此文件的所有者和权限,以限制访问到 root :

1sudo chown root: /etc/apt/sources.list.d/passenger.list
2sudo chmod 600 /etc/apt/sources.list.d/passenger.list

更新 APT 缓存:

1sudo apt-get update

最后,安装乘客:

1sudo apt-get install libapache2-mod-passenger

请确保乘客Apache模块;它可能已经启用了:

1sudo a2enmod passenger

重新启动 Apache:

1sudo service apache2 restart

要解决这个问题,只需删除错误的 Ruby 位置并创建一个新的 symlink 到正确的 Ruby 二进制文件:

1sudo rm /usr/bin/ruby
2sudo ln -s /usr/local/bin/ruby /usr/bin/ruby

第六步:部署

如果您想要部署现有应用程序,您可以将项目上传到服务器并跳过到 /etc/apache2/sites-available/default 步骤。

对于本教程,我们将直接在 Droplet 上创建一个新的 Rails 应用程序. 我们将需要 rails 宝石来创建新的应用程序。

转到用户的家庭目录:

1cd ~

安装铁路宝石没有额外的文档,这使得安装更快。

1sudo gem install --no-rdoc --no-ri rails

现在我们可以创建一个新的应用程序. 在我们的示例中,我们将使用 testapp 的名称. 如果您想使用另一个名称,请确保您在本节中的其他命令和文件中更新路径。

我们将跳过 Bundler 安装,因为我们希望稍后手动运行它。

1rails new testapp --skip-bundle

进入目录:

1cd testapp

现在我们需要安装一个 JavaScript 执行环境. 它可以作为 therubyracer 宝石安装。 要安装它,首先打开 Gemfile :

1nano Gemfile

找下面的线条:

1# gem 'therubyracer', platforms: :ruby

对不起它:

1gem 'therubyracer', platforms: :ruby

保存文件,然后运行 Bundler:

1bundle install

现在,我们需要为我们的项目创建一个虚拟主机文件,我们将通过复制默认的Apache虚拟主机来做到这一点:

1sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/testapp.conf

打开 config 文件:

1sudo nano /etc/apache2/sites-available/testapp.conf

编辑它或更换现有内容,以便您的最终结果与下面的文件相匹配. 您需要做的更改以红色标志。

 1<VirtualHost *:80>
 2    ServerName example.com
 3    ServerAlias www.example.com
 4    ServerAdmin webmaster@localhost
 5    DocumentRoot /home/rails/testapp/public
 6    RailsEnv development
 7    ErrorLog ${APACHE_LOG_DIR}/error.log
 8    CustomLog ${APACHE_LOG_DIR}/access.log combined
 9    <Directory "/home/rails/testapp/public">
10        Options FollowSymLinks
11        Require all granted
12    </Directory>
13</VirtualHost>

基本上,这个文件允许在端口80上听我们的域名,为子域设置一个代号 www ,设置我们的服务器管理员的邮件地址,设置我们新项目的公共目录的根目录,并允许访问我们的网站。您可以通过以下链接了解更多关于Apache 虚拟主机(https://andsky.com/tech/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts)。

要测试我们的设置,我们希望看到 Rails Welcome aboard 页面,但是,如果应用程序在开发环境中启动,它只能有效。

如果您不想将您的域名分配给这个应用程序,您可以跳过ServerNameServerAlias的行,或者使用您的IP地址。

保存文件(CTRL+X、Y、ENTER)

禁用默认网站,启用新网站,然后重新启动Apache:

1sudo a2dissite 000-default
2sudo a2ensite testapp
3sudo service apache2 restart

现在,您的应用程序的网站应该是可访问的。 导航到您的 Droplet 域或 IP 地址:

1http://droplet_ip_address

请检查您的应用是否已部署,您应该看到您的自定义应用程序或默认的 Welcome aboard Rails 页面:

Test page

Rails 应用程序现在在您的服务器上。

第7步:定期更新

要更新 Ruby,您需要编译最新版本,如本教程中的步骤 4 所示。

要更新 Passenger 和 Apache,您需要运行一个基本的系统更新:

1sudo apt-get update && sudo apt-get upgrade

然而,如果有一个新的系统Ruby版本可用,它可能会重写我们的Ruby(从源头安装)。 出于这个原因,您可能需要重新运行命令来删除现有的Ruby二进制文件的simlink并创建一个新的(正确的)一个。

更新后,您需要重新启动 Web 服务器:

1sudo service apache2 restart
Published At
Categories with 技术
comments powered by Disqus