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

介绍

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

如果你喜欢在Nginx的Apache的,看看如何部署与Passenger和Nginx的在Ubuntu 14.04一个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权限的基本用户。 我们将使用导轨用户在这个例子。 如果您的用户有其他名称,请确保在后续步骤中使用正确的路径。

第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

现在,运行与安装参数相同的命令。 它会尝试将编译好的二进制文件复制到在/ 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键确认该文件的位置。

更改所有者和权限这个文件来限制访问根目录

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应用程序。 如果要部署现有的应用程序,你可以上传你的项目到服务器,并跳到/etc/apache2/sites-available/default的一步。

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

移动到用户的主目录:

cd ~

安装导轨Gem无需额外的文档,这使得安装速度更快。 这仍需要几分钟时间:

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

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

我们将跳过Bundler安装,因为我们想要以后手动运行它。

rails new testapp --skip-bundle

输入目录:

cd testapp

现在我们需要安装一个JavaScript执行环境。 它可以被安装为therubyracerGem。 要安装它,首先打开的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子域名的别名,设置了服务器管理员的邮件地址,树立了新项目的公共目录的根目录下,并允许我们的网站访问。 您可以了解更多关于Apache的虚拟主机通过以下的链接。

为了测试我们的设置,我们希望看到Rails的欢迎登机页面。 但是,这只有在应用程序在开发环境中启动时才有效。 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

验证您的应用程序已部署。 您应该看到无论是你的自定义应用程序,或欢迎你乘坐默认的Rails页面:

测试页

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

第7步 - 定期更新

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

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

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

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

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

sudo service apache2 restart
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏