如何在CentOS6上使用Apache和Passenger设置Rails4应用程序
状态:已弃用
本文介绍了不再受支持的 CentOS 版本。 如果您目前正在运行运行 CentOS 6 的服务器,我们强烈建议您升级或迁移到受支持的 CentOS 版本。
原因:CentOS 6 已于 2020 年 11 月 30 日结束生命周期 (EOL) ,不再接收安全补丁或更新。 因此,不再维护本指南。
请参阅:本指南可能仍可用作参考,但可能不适用于其他 CentOS 版本。 如果可用,我们强烈建议使用为您正在使用的 CentOS 版本编写的指南。
基础
当用户从 vanilla 图像(在我们的例子中:CentOS 6.4 x64)创建一个 droplet 时,需要额外的系统管理工作才能运行 Ruby on Rails 应用程序并使其在线可用。 本教程提供了实现这一目标的必要步骤。
为了完成本教程,最低要求具有至少 1 GB RAM 的虚拟服务器,因为第 3 步中的乘客命令是内存密集型的。
此外,本教程假定用户对 VPS 具有 root 访问权限(作为具有 root 权限的用户或作为系统 root 用户)。
本教程不适用于生产节点设置。 它涉及在机器上安装开发库和临时编译,当您设置生产环境时,这不是一个好习惯。”
第一步 - Apache 设置
这一切都从 Web 服务器开始,安装 Apache 的最简单方法是从 yum 存储库中提取它:
yum install httpd
安装完成后,系统应配置为在系统启动时自动运行 Apache:
chkconfig httpd on
如果没有此设置,则每次重新启动 droplet 时都需要手动启动 httpd 服务。
下一步是通过编辑其配置文件来配置 Apache 以接收传入请求:
nano /etc/httpd/conf/httpd.conf
在编辑器的底部附近,找到并取消注释包含以下内容的行:NameVirtualHost *:80
保存并退出编辑器。 Apache 现在可以启动了:
service httpd start
瞧! 在 Web 浏览器中访问 Droplet 的 IP 地址将显示 Apache 的欢迎页面。
第二步——Ruby 2.0 和 Rails 4.0 设置
设置 Apache 很容易。 设置 Ruby 甚至更简单,然后是 Rails。
最快的方法是使用 Ruby 版本管理器 (RVM) 在机器上维护多个 Ruby 环境。 RVM 的最新稳定版本是这样下载和安装的:
curl -L get.rvm.io | bash -s stable
如果所有用户都应该使用 RVM,则有一个可用于该作业的 shell 脚本:
source /etc/profile.d/rvm.sh
此外,安装 RVM 的要求是必要的,此命令将安装各种开发包和依赖项:
rvm requirements
此时,RVM 已完全初始化并可以使用。
目前,最新的 Ruby 版本是 2.0.0,安装它的相应 RVM 命令是:
rvm install 2.0.0
它将下载并安装 Ruby 环境。 安装后,即使它是此时安装的唯一版本,也应将其配置为默认环境:
rvm use 2.0.0 --default
Rails 作为 Ruby gem 分发,将其添加到本地系统非常简单:
gem install rails
快速版本检查将产生与此类似的输出:
[user@server ~]$ ruby -v ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux] [user@server ~]$ rails -v Rails 4.0.1
不错的工作!
第三步 - Phusion 乘客设置
PhusionPassenger(通常缩写为Passenger或称为mod_passenger)是一个应用程序服务器,它通常用于为Ruby站点提供动力。 它的代码以 Ruby gem 的形式分发,然后在目标机器上编译并作为模块安装到 Apache 中。
首先,gem需要安装在系统上:
gem install passenger
在编译 Apache 模块之前,还需要安装两个依赖包:
yum install curl-devel httpd-devel
环境现在已准备好进行编译。 该过程需要几分钟,它由以下命令启动:
passenger-install-apache2-module
请注意,此脚本不会真正安装模块。 它将编译模块的二进制文件并将其放在 gem 的路径下。 该路径将打印在屏幕上,需要手动将其复制粘贴到 Apache 的配置文件 (/etc/httpd/conf/httpd.conf) 中。
输出将与此类似:
LoadModule passenger_module /usr/local/rvm/gems/ruby-2.0.0-p353/gems/passenger- 4.0.26/buildout/apache2/mod_passenger.so PassengerRoot /usr/local/rvm/gems/ruby-2.0.0-p353/gems/passenger-4.0.26 PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-2.0.0-p353/ruby
将这些行放在文件的底部就可以了。 保存更改并重新启动 Apache:
service httpd restart
两条绿色的 OK 消息标志着环境设置完成。 恭喜!
最后——一个 Rails 应用程序示例
进行冒烟测试总是好的,使用 Rails 的应用程序骨架生成器是完成该任务的理想工具。 它需要安装 sqlite 的开发包:
yum install sqlite-devel
放置测试应用程序代码的最简单位置是 Apache 的 Web 根文件夹:
cd /var/www/html
在这个文件夹中,测试应用程序代码在“helloapp”文件夹下生成:
rails new helloapp cd helloapp
由于 CentOS 没有附带 JavaScript 执行环境,因此必须手动安装。 它可以作为 gem 安装,因此只需在 Gemfile 中列出如下:
gem 'therubyracer'
Ruby 应用程序所需的 Gem 通过定位到应用程序的根目录并运行捆绑安装程序来安装:
bundle install
另外,开发数据库需要通过迁移工具进行初始化:
rake db:migrate
需要最后一次访问 Apache 的配置文件 (/etc/httpd/conf/httpd.conf)。 缺少虚拟主机部分,必须在底部添加:
RackEnv development
RackEnv development <VirtualHost *:80> ServerName www.yourhost.com # !!! Be sure to point DocumentRoot to 'public'! DocumentRoot /var/www/html/helloapp/public <Directory /var/www/html/helloapp/public> # This relaxes Apache security settings. AllowOverride all # MultiViews must be turned off. Options -MultiViews </Directory> </VirtualHost>
保存更改并再次重新启动 Apache:
service httpd restart
在浏览器中访问虚拟服务器的 IP 地址,您应该会看到“欢迎加入 - 您正在使用 Ruby on Rails!” 欢迎留言。