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

简介: 如何在 Ubuntu 14.04 上使用 Passenger 和 Apache 部署 Rails 应用

简介

在本教程中,我们将演示如何将 Phusion Passenger 安装为您的 Rails 友好型 Web 服务器,它易于安装、配置和维护。我们将把它集成到 Ubuntu 14.04 上的 Apache 中。在本教程结束时,我们将在我们的 Droplet 上部署一个测试的 Rails 应用程序。

如果您更喜欢 Nginx 而不是 Apache,请参考以下链接,了解如何在 Ubuntu 14.04 上使用 Passenger 和 Nginx 部署 Rails 应用程序。

先决条件

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

您可能希望选择 32 位的 Ubuntu 镜像,因为它的内存消耗较小(64 位程序使用的内存约比它们的 32 位对应物多约 50%)。但是,如果您需要更大的机器,或者有可能升级到超过 4 GB 的 RAM,您应该考虑 64 位版本。

确保使用 Ubuntu 14.04。在撰写本文时,Ubuntu 14.10 尚未拥有 Passanger APT 存储库。此外,Ubuntu 14.04 还有一个额外的好处:它是一个 LTS 版本,即“长期支持”。LTS 发行版旨在成为我们可以长期坚持的稳定平台。Ubuntu 保证 LTS 发行版将在五年内接收安全更新和其他错误修复。

  • Ubuntu 14.04 32 位 Droplet

步骤 1 — 添加一个 Sudo 用户

创建 Droplet 后,您应该创建一个系统用户并保护服务器。您可以按照《初始化服务器设置》文章的步骤来完成。

如果您想要按照本教程操作,您需要一个具有 sudo 权限的基本用户。在本示例中,我们将使用 rails 用户。如果您的用户有其他名称,请确保在接下来的步骤中使用正确的路径。

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

为了确保您的站点可以正常访问,您需要设置 DNS 记录,将您的域名指向您的新服务器。您可以通过以下链接找到有关设置主机名的更多信息。

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

步骤 3 — 安装 Ruby

我们将从源代码手动安装 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 libsqlite3-dev sqlite3

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

mkdir ~/ruby

切换到新文件夹:

cd ~/ruby

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

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

解压下载的文件:

tar -xzf ruby-2.1.4.tar.gz

选择提取的目录:

cd ruby-2.1.4

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

./configure

运行 make 实用程序,它将使用 Makefile 来构建可执行程序。这一步可能需要更长的时间:

make

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

sudo make install

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

ruby -v

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

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

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

rm -rf ~/ruby

步骤 4 — 安装 Apache

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

sudo apt-get install apache2

是的,就是这样!

步骤 5 — 安装 Passenger

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

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

创建一个 APT 源文件:

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

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

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

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

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

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

最后,安装 Passenger:

sudo apt-get install libapache2-mod-passenger

确保 Passenger Apache 模块已启用;它可能已经启用:

sudo a2enmod passenger

重新启动 Apache:

sudo service apache2 restart

此步骤将我们的 Ruby 版本覆盖为旧版本。为解决此问题,只需删除不正确的 Ruby 位置,并创建一个新的符号链接指向正确的 Ruby 二进制文件:

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

步骤 6 — 部署

在这一步,如果你已经准备好自己的 Rails 应用程序,你可以部署你自己的 Rails 应用程序。如果你想要部署一个现有的应用程序,你可以将你的项目上传到服务器并跳过 /etc/apache2/sites-available/default 步骤。

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

移动到你的用户主目录:

cd ~

安装 rails gem,不包含额外的文档,这样安装速度会更快。这个过程仍然需要几分钟:

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

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

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

rails new testapp --skip-bundle

进入目录:

cd testapp

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

nano Gemfile

找到以下行:

# gem 'therubyracer',  platforms: :ruby

取消注释:

gem 'therubyracer',  platforms: :ruby

保存文件,并运行 Bundler:

bundle install

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

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

打开配置文件:

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

编辑它或替换现有内容,使你的最终结果与下面显示的文件匹配。你需要做出的更改已用红色突出显示。记得使用你自己的域名和正确的 Rails 应用程序路径:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@localhost
    DocumentRoot /home/rails/testapp/public
    RailsEnv development
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory "/home/rails/testapp/public">
        Options FollowSymLinks
        Require all granted
    </Directory>
</VirtualHost>

基本上,这个文件使我们的域名在端口 80 上监听,为 www 子域设置别名,设置我们服务器管理员的邮件地址,设置我们新项目的 public 目录为根目录,并允许访问我们的站点。你可以通过以下链接了解更多关于 Apache 虚拟主机的信息。

为了测试我们的设置,我们希望看到 Rails 的 Welcome aboard 页面。但是,这只有在开发环境中启动应用程序时才有效。Passenger 默认以生产环境启动应用程序,因此我们需要使用 RailsEnv 选项更改这一点。如果你的应用程序已经准备好投入生产,你会想要略过这个设置。

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

保存文件(CTRL+X, Y, ENTER)。

禁用默认站点,启用你的新站点,并重新启动 Apache:

sudo a2dissite 000-default
sudo a2ensite testapp
sudo service apache2 restart

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

http://droplet_ip_address

验证你的应用程序是否已部署。你应该看到你的自定义应用程序,或者 Welcome aboard 默认的 Rails 页面:

!Test page

Rails 应用程序现在已经在你的服务器上线。

步骤 7 — 定期更新

要更新 Ruby,你需要按照本教程中第 4 步所示的方法编译最新版本。

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

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

然而,如果有一个新的系统 Ruby 版本可用,它可能会覆盖我们从源代码安装的 Ruby。因此,你可能需要重新运行删除现有符号链接到 Ruby 二进制文件和创建新的(正确的)符号链接的命令。它们列在本教程的第 6 步的末尾。

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

sudo service apache2 restart


目录
打赏
0
0
0
0
40
分享
相关文章
在Docker容器中部署GitLab服务器的步骤(面向Ubuntu 16.04)
现在,你已经成功地在Docker上部署了GitLab。这就是我们在星际中的壮举,轻松如同土豆一样简单!星际旅行结束,靠岸,打开舱门,迎接全新的代码时代。Prepare to code, astronaut!
121 12
|
3月前
|
Ubuntu下使用apt为Apache2编译PHP7.1
以上就是在Ubuntu系统下,使用apt为Apache2编译PHP7.1的过程。希望这个过程对你有所帮助,如果你在执行过程中遇到任何问题,都可以在网上找到相关的解决方案。
66 25
|
3月前
|
在Ubuntu系统中为apt的apache2编译PHP 7.1的方法
以上就是在Ubuntu系统中为apt的apache2编译PHP 7.1的方法。希望这个指南能帮助你成功编译PHP 7.1,并在你的Apache服务器上运行PHP应用。
101 28
Ubuntu下部署及操作Docker技巧
以上就是在Ubuntu下部署及操作Docker的具体步骤。但这只是冰山一角,Docker的魅力远不仅如此。你可以将其视为存放各种工具的小箱子,随时随地取用,极大地提升工作效率。你也可以私人订制,适应不同的开发环境,就像一个拥有各种口味冰淇淋的冰箱,满足各种各样的需求。好了,现在你已经掌握了基本的Docker运用技巧,快去尝试使用吧!记住,沉浸在探索中,你会找到无尽的乐趣和满满的收获。
206 23
SshClient应用指南:使用org.apache.sshd库在服务器中执行命令。
总结起来,Apache SSHD库是一个强大的工具,甚至可以用于创建你自己的SSH Server。当你需要在服务器中执行命令时,这无疑是非常有用的。希望这个指南能对你有所帮助,并祝你在使用Apache SSHD库中有一个愉快的旅程!
234 29
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
379 5
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
178 1
Ubuntu系统下部署flatpress轻量级博客系统
【10月更文挑战第3天】Ubuntu系统下部署flatpress轻量级博客系统
128 3
Ubuntu系统下部署flatpress轻量级博客系统
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
188 1
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
将 Python UDF 部署到 Apache IoTDB 的详细步骤与注意事项
【10月更文挑战第21天】将 Python UDF 部署到 Apache IoTDB 中需要一系列的步骤和注意事项。通过仔细的准备、正确的部署和测试,你可以成功地将自定义的 Python UDF 应用到 Apache IoTDB 中,为数据处理和分析提供更灵活和强大的支持。在实际操作过程中,要根据具体情况进行调整和优化,以确保实现最佳的效果。还可以结合具体的代码示例和实际部署经验,进一步深入了解和掌握这一过程。
109 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问