基础
当用户从一个香草图像(在我们的案例中:CentOS 6.4 x64)创建一个Droplet时,需要进行额外的系统管理工作,然后才能运行Ruby on Rails应用程序并在线可用。本教程提供了必要的步骤来实现。 为了完成本教程,具有至少1 GB RAM的虚拟服务器是最低要求,因为步骤#3中的Passenger命令是内存密集型的。 此外,本教程假定用户具有对VPS的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
Voilà!在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 Passenger设置
Phusion Passenger(通常缩写为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应用程序所需的Gems通过在应用程序的根目录中定位并运行包安装程序来安装:
bundle install
此外,开发数据库需要由迁移工具初始化:
rake db:migrate
需要最终访问Apache的配置文件(/etc/httpd/conf/httpd.conf)。虚拟主机部分缺失,必须在底部添加: RackEnv开发
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!”。