介绍
在本教程中,我们将演示如何安装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选项来改变这种情况。 如果您的应用程式已准备好放送,您可以离开这项设定。
如果你不希望你的分配域这个程序,你可以跳过ServerName
和ServerAlias
行,或使用你的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