如何在 CentOS 6 上使用 Apache 和 Passenger 安装 Rails 4 应用程序

金钱(警告)

状态: 被剥夺

本文涵盖了不再受支持的 CentOS 版本. 如果您目前正在运行运行 CentOS 6 的服务器,我们强烈建议升级或迁移到受支持的 CentOS 版本。

理由: CentOS 6 已于 2020 年 11 月 30 日到期(EOL)并且不再收到安全补丁或更新。

** 参见相反**: 本指南可能仍然有用作为参考,但可能不适用于其他 CentOS 版本. 如果可用,我们强烈建议使用为您使用的 CentOS 版本撰写的指南。

美元

基本


当用户从瓦尼拉图像(在我们的情况下:CentOS 6.4 x64)创建一个滴滴时,需要额外的系统管理工作才能运行 Ruby on Rails 应用程序并在网上可用。

为了通过本教程,具有至少1GB的RAM的虚拟服务器是最低要求,因为步骤#3中的乘客命令具有密集的内存。

此外,本教程假定用户可以 root 访问 VPS(作为具有 root 特权的用户或作为系统 root)。

该教程不是用于生产节点设置,它涉及开发库安装和机器上的偶尔编译,这在设置生产环境时不是一个很好的做法。

步骤一 - Apache 设置


这一切都从 Web 服务器开始,安装 Apache 最简单的方法是从 yum 存储库中提取它:

1yum install httpd

安装完成后,系统应配置为在系统启动时自动运行Apache:

1chkconfig httpd on

没有此设置,HTTPd 服务需要每次重新启动 dropplet 时手动启动。

下一步是通过编辑其配置文件来配置Apache以期望接收请求:

1nano /etc/httpd/conf/httpd.conf

在编辑器中,靠近底部,查找并删除包含的行: NameVirtualHost *:80

保存和退出编辑器. Apache 已准备好启动:

1service httpd start

在 Web 浏览器中访问 Droplet 的 IP 地址将显示 Apache 的欢迎页面。

步骤二: Ruby 2.0 和 Rails 4.0 设置


设置Apache是一个简单的步骤,设置Ruby更简单,然后是Rails。

最快的方法是使用 Ruby Version Manager (RVM) 在 机器上维护多个 Ruby 环境。

1curl -L get.rvm.io | bash -s stable

如果 RVM 应该被所有用户使用,则可以使用 shell 脚本:

1source /etc/profile.d/rvm.sh

此外,安装RVM的要求是必要的,这个命令将安装各种开发包和依赖:

1rvm requirements

在此时,RVM已完全初始化并准备使用。

目前,最新的 Ruby 版本是 2.0.0,安装的相应 RVM 命令是:

1rvm install 2.0.0

它会下载并安装 Ruby 环境. 安装后,尽管它是目前唯一安装的版本,但应该将其配置为默认环境:

1rvm use 2.0.0 --default

Rails 作为 Ruby 宝石分布,并将其添加到本地系统是非常简单的:

1gem install rails

快速版本检查将产生类似于此的输出:

1[user@server ~]$ ruby -v 
2ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux] 
3[user@server ~]$ rails -v 
4Rails 4.0.1

好工作!

第三步 - Phusion 乘客设置


Phusion Passenger (通常缩写为 Passenger 或称为 mod_passenger) 是一个应用程序服务器,通常用来支持 Ruby 站点,其代码以 Ruby 宝石的形式分发,然后在目标机器上编译并安装到 Apache 作为一个模块。

首先,宝石需要在系统上安装:

1gem install passenger

在编译 Apache 模块之前,还需要安装两个依赖包:

1yum install curl-devel httpd-devel

环境现在已经准备好编译,过程需要几分钟,并通过以下命令开始:

1passenger-install-apache2-module

请注意,此脚本不会真正安装模块,它会编译模块的二进制,并将其放置在 gem 的路径下,路径将打印在屏幕上,需要手动复制到Apache的配置文件 (/etc/httpd/conf/httpd.conf)。

结果将类似于这个:

1LoadModule passenger_module /usr/local/rvm/gems/ruby-2.0.0-p353/gems/passenger-
24.0.26/buildout/apache2/mod_passenger.so 
3PassengerRoot /usr/local/rvm/gems/ruby-2.0.0-p353/gems/passenger-4.0.26 
4PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-2.0.0-p353/ruby

把这些行放到文件的底部会做得很好. 保存更改并重新启动Apache:

1service httpd restart

两个绿色 OK 消息标志着环境设置的完成。

最后 – 一个 Rails 应用程序的例子


做烟雾测试总是很好的,使用 Rails 应用程序的骨骼生成器是该任务的理想工具。

1yum install sqlite-devel

测试应用程序代码的最简单的位置是Apache的Web根文件夹:

1cd /var/www/html

在此文件夹中,测试应用程序代码在helloapp文件夹下生成:

1rails new helloapp 
2cd helloapp

由于CentOS没有JavaScript执行环境,所以必须手动安装,它可以作为一个宝石安装,因此它只需要在Gemfile中列出如下:

1gem 'therubyracer'

Ruby 应用程序所需的宝石通过在应用程序的根中定位并运行 bundle 安装程序来安装:

1bundle install

此外,开发数据库需要通过迁移工具进行初始化:

1rake db:migrate

需要最后一次访问Apache的配置文件(/etc/httpd/conf/httpd.conf)。缺少虚拟主机部分,必须在底部添加 RackEnv开发

 1RackEnv development
 2
 3<VirtualHost *:80> 
 4 ServerName www.yourhost.com 
 5 # !!! Be sure to point DocumentRoot to 'public'! 
 6 DocumentRoot /var/www/html/helloapp/public 
 7 <Directory /var/www/html/helloapp/public> 
 8 # This relaxes Apache security settings. 
 9 AllowOverride all 
10 # MultiViews must be turned off. 
11 Options -MultiViews 
12 </Directory> 
13</VirtualHost>

保存更改并重新启动 Apache:

1service httpd restart

在您的浏览器中访问虚拟服务器的 IP 地址,您应该看到欢迎登机 – 您正在乘坐 Ruby on Rails!欢迎消息。

Submitted by Tonci Damjanic
Published At
Categories with 技术
comments powered by Disqus