在本教程写作时,所用的最新版本是:Ubuntu 10.10、Ruby 1.9.2 和 Rails 3.0.7。本教程也在 Ubuntu 10.04 和即将发布(译注:现已发布)的 Ubuntu 11.04 上测试通过。
原文地址:http://linux.cn/forum.php?mod=viewthread&tid=7566
更新系统
那么让我们开始吧。首先以管理员身份(或通过 sudo )登录到你的机器,并打开一个终端窗口。下面的命令都需要在该窗口输入。美元符号$就是命令提示符,在其后直接输入命令并按回车即可。
前三个命令将更新软件包列表、升级当前安装的软件包、安装新的软件包并删除冲突的软件包。这样你的机器就会保持最新状态。最后的命令是重启机器,在大量更新了软件包后重启是一个不错的做法。
1.
$
sudo
apt-get update
2.
$
sudo
apt-get upgrade
3.
$
sudo
apt-get dist-upgrade
4.
$
sudo
reboot
为安装 RVM 做准备
机器重启后,再次登录并打开一个终端窗口。RVM 脚本需要先安装好 Curl 和 Git。Curl 是一个使用多种协议(如 HTTP 或 FTP)进行数据传输的工具。而“Git 是一个免费的开源分布式版本控制系统,适用于从小型项目到非常大的项目,兼顾了速度和效率。”Git是多数 Ruby on Rails 开发者所选择的版本控制系统。
1.
$
sudo
apt-get
install
curl
2.
$
sudo
apt-get
install
git-core
配置Git
Git 会在 RVM 脚本中使用,我们也在在本教程的第二部分中使用它。安装之后,我们需要花一点时间来配置它。配置很容易:只要提供一个用户名和邮件地址即可。
1.
$ git config --global user.name
"Your Name"
2.
$ git config --global user.email your-email@address.com
如:
1.
$ git config --global user.name
"John Doe"
2.
$ git config --global user.email johndoe@mail.com
安装 RVM
现在我们可以安装 RVM 了。RVM 的意思是 Ruby 版本管理器,“是一个命令行工具,让你容易的安装、管理和使用多个 Ruby 环境及其相应的 Gem 包。”下列命令来安装这个脚本。RVM 将安装在你当前登录用户的主目录里。
1.
$
bash
< <(curl -s https://rvm.beginrescueend.com/
install
/rvm)
切换到主目录,然后修改用户的 bash 设置文件,以确保每次用户登录时候 RVM 脚本都会载入。我们使用 Nano 来编辑 bash 设置文件。Nano 是一个简单的命令行的文本编辑器,以后我们还会使用到它。
1.
$
cd
2.
$ nano .bashrc
在你的 bash 设置文件末尾加入以下行。编辑之后,按下 CTRL + O 保存,然后按 CTRL + X 退出 Nano。如果你希望不保存而退出 Nano,按下 CTRL + X 然后按 N。
1.
[[ -s
"$HOME/.rvm/scripts/rvm"
]] && .
"$HOME/.rvm/scripts/rvm"
用以下命令行在当前登录中手动重新载入设置文件,也可以另外打开一个新的终端窗口自动载入。这样 rvm 命令就可以用了。
1.
$
source
.bashrc
你可以通过下列命令来检查 RVM 脚本是否可以工作。
1.
$
type
rvm |
head
-1
如果一切正常,命令将返回“rvm is a function”(rvm 是函数)。否则,可以访问 RVM 网站的“Troubleshooting your install”栏目找找解决办法。
为安装 Ruby 和 RubyGems 做准备
在从源代码编译和安装 Ruby 和 RubyGems 时,RVM 可以很方便的查看之间的软件包依赖关系。
1.
$ rvm notes
可以列出标准版的 Ruby 所需的依赖包,和安装它们的命令。有些包也许已经安装好了。
1.
$
sudo
apt-get
install
build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev
使用 RVM 安装 Ruby 和 RubyGems
首先,我们要安装 Ruby,“一个动态的、开源的简单而高效的编程语言。它的优雅语法便于阅读并很容易编写。”
然后我们要安装 RubyGems,这是一个“首选的 Ruby 软件包系统。它提供了一个分发 Ruby 程序和库的标准格式,一个易于使用的管理 Gem 包的安装工具,一个在任何装有 RubyGems 的机器上提供 Gem 软件包的 Gem 服务器,和发布 Gem 软件包的标准方式。”
像上面的 RVM 命令描述的,RVM 也有一个命令可以看到哪个版本的 Ruby 可安装。通过以下命令查看哪些 Ruby 版本可以安装:
1.
$ rvm list known
安装标准版的 Ruby,由于需要从源代码编译,所以需要一些时间。
1.
$ rvm
install
1.9.2
使用安装好的 Ruby 前,需要设置该版本为默认版本。
1.
$ rvm --default use 1.9.2
检查一下 Ruby 和 RubyGems 的版本,来确保正确安装。
1.
$ ruby -
v
2.
$ gem -
v
如有必要,手动更新一下 RubyGems 和其他需要更新的 Gem 。
1.
$ gem update --system
2.
$ gem update
使用 RubyGems 安装 Rails
Rails 全部都打包在 Rails Gem 中。安装它是这个教程中最容易的部分。使用 RubyGems 来安装它,即 gem 命令。安装完成后,检查其版本来确保正确安装。
1.
$ gem
install
rails
2.
$ rails -
v
使用 RubyGems 安装 Capistrano
Capistrano 是 “一个在多个服务器上运行脚本的开源工具。它的主要用途是分发 Web 应用。它自动将应用的新版本分发到一个或多个 Web 服务器上,包括执行相关的支持任务,如修改数据库。”使用 RubyGems 安装 Capistrano ,并检查其版本来确保正确安装。
1.
$ gem
install
capistrano
2.
$ cap -V
安装 PostgreSQL
PostgreSQL 是 “一个复杂的对象-关系数据库系统,支持绝大多数的 SQL 结构,如子查询、事务和用户定义的类型和函数。”安装 PostgreSQL 及其相关软件包。这些相关软件是稍后要安装的 pg Gem所需要的,pg Gem用于连接 PostgreSQL 和 Ruby on Rails。
1.
$
sudo
apt-get
install
postgresql libpq-dev
配置 PostgreSQL
安装好之后,使用增强安全的 pSQL 来配置 PostgreSQL。pSQL 是一个 PostgreSQL 的交互终端,用于管理数据库任务。
默认情况下,pSQL 登录时不需要口令。我们将修改认证模式并重新载入 PostgreSQL 配置。但在这之前,要给PostgreSQL的管理用户 postgres 指定一个口令。登录到 pSQL,给 postgres 指定一个安全的密码,然后退出 pSQL。
1.
$
sudo
-u postgres psql
2.
# \password postgres
3.
# \q
现在,将认证模式从 ident 修改为 md5。这将确保登录 pSQL 需要密码,且密码是加密存储的。需要修改的两行位于配置文件的末尾附近。修改后,重新载入 PostgreSQL 的配置。
1.
$
sudo
nano /etc/postgresql/8.4/main/pg_hba.conf
2.
$
sudo
/etc/init.d/postgresql reload
大多数的 PostgreSQL 的其它配置都存储在另外的配置文件中。那些配置也可以优化,不过不在本教程的范围内。让我们将注意力转回来,如果对其他配置做了修改,也需要重新载入以生效。
1.
$ sudo nano /etc/postgresql/8.4/main/postgresql.conf
现在,本地开发环境已经安装完成!
测试设置
为了确认一切都正常,让我们开发一个非常小的应用,来了解一下 Ruby on Rails。这个过程包括以下步骤:
- 为测试应用创建一个数据库用户
- 为测试应用创建一个数据库
- 使用 PostgreSQL 数据库创建一个测试应用
- 安装测试应用需要的 Gem
- 配置测试应用的数据库连接
- 生成测试应用的简单框架
- 迁移框架的数据库到测试应用的数据库
- 启动内建的 Web 服务器
- 用浏览器访问测试应用
- 停止内建的 Web 服务器
当以上测试都顺利完成后,我们再进行如下步骤:
- 删除测试应用的数据库
- 删除测试应用的数据库用户
- 删除测试应用
这些测试都在本地测试环境中进行。在VPS中测试的约定如下(数据库用户名和数据库名来自测试应用名):
Box 1.1
应用名称:test_app
数据库用户名:test_app
数据库用户密码:apple
数据库名:test_app_development
首先,使用 createuser 命令来创建测试应用的数据库用户。我们用 PostgreSQL 的管理用户 postgres 来操作,-P 参数表示交互输入密码。 “>”符号是提问的提示符。
1.
$
sudo
-u postgres createuser -P
2.
> Enter name of role to add: test_app
3.
> Enter password
for
new role: apple
4.
> Enter it again: apple
5.
> Shall the new role be a superuser? (y/n) n
6.
> Shall the new role be allowed to create databases? (y/n) n
7.
> Shall the new role be allowed to create
more
new roles? (y/n) n
8.
> Password: your-postgres-user-password
然后,创建一个测试应用的数据库用户为属主的数据库。虽然我们可以使用 Rake 来创建数据库,但是我们要使用 PostgreSQL ,所以让我们学习一下基本的 PostgreSQL 管理吧。使用 createdb 命令并通过 -O 选项指定数据库用户名。这里,还会提示输入PostgreSQL 的管理用户的密码。
1.
$
sudo
-u postgres createdb -O test_app test_app_development
2.
> Password: your-postgres-user-password
现在,数据库已经建好,可以创建实际的 Ruby on Rails 应用了。切换到你的主目录,创建一个名为 test_app 的 Rails 应用,并使用 PostgreSQL 作为数据库后端。-d 选项允许你指定首选的数据库类型。
1.
$
cd
2.
$ rails new test_app -d postgresql
进入到 Rails 应用目录,使用 Bundler 安装需要的 Gem。Bundler 会处理“一个应用在整个生命周期内跨越多个机器的依赖关系”,并且“只支持 Rails 3。”
1.
$
cd
test_app
2.
$ bundle
install
使用 Nano 修改数据库配置文件,在开发数据库配置中添加密码:“apple”。按照约定和Box 1.1中的设置,数据库名和数据库用户已经设置好了。
1.
$ nano config/database.yml
现在生成一个基本的框架。这将创建一个 User 模型及其控制器。输入包括 name 和 email 字段,它们将存储在数据库中。
1.
$ rails generate scaffold User name:string email:string
使用 Rake 迁移框架到开发数据库中。Rake 是 Ruby Make 的缩写。它是一个“简单的 Ruby 构建程序,类似于 Make,”允许你创建并迁移数据库。
1.
$ rake db:migrate
现在,需要在浏览器中检查应用是否工作。启动内建的服务器,并用浏览器访问 http://localhost:3000/,特别是,要看看显示的测试应用的环境数据。再访问一下 http://localhost:3000/users,可以创建、编辑、查看和删除一些用户。
1.
$ rails server
如果一切都看起来正常,就可以停止内建服务器了。
1.
$ 按下 CTRL+C
当所有的工作都完成,你就可以删除这个测试应用的数据库及数据库用户了。使用 dropdb 来删除数据库。
1.
$
sudo
-u postgres dropdb test_app_development
2.
> Password: your-postgres-user-password
使用 dropuser 来删除数据库用户。
1.
$
sudo
-u postgres dropuser
2.
> Enter name of role to drop: test_app
3.
> Password: your-postgres-user-password
最后,切换到你的主目录,删除全部的测试应用目录。主要就恢复到一个干净的本地开发环境了,可以用于开发 Ruby on Rails 应用了。
1.
$
cd
2.
$
rm
-r test_app
将在稍后发布的教程的第二部分中,我们将帮助你通过几个步骤来建立一个 Ubuntu VPS,它用于运行(多个)Ruby on Rails 应用。