当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 15 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [分享]在Ubuntu上部署Rails(Apache mod_proxy mongrel_cluster)
帖子发表于 : 2007-08-09 23:53 
头像

注册: 2006-06-03 0:50
帖子: 16
送出感谢: 0 次
接收感谢: 0 次
在Ubuntu上部署Rails(Apache mod_proxy mongrel_cluster)

最近需要把Rails的程序发布出去,在发布的过程中遇到了一些问题,虽然都用Google解决了,不过也注意到,在Ubuntu下部署Rails和其它Linux环境有所不同,为了以后少走弯路,把最近部署的过程记了下来。
以下环境为7.04
一:以Server的形式安装Ubuntu,安装完成后,设置IP、软件安装源。(这点就不说了,论坛有很多教程)
二:安装必须的软件
1.安装OpenSSH,方便远程管理:
代码:
sudo apt-get install openssh-client openssh-server

2.安装Screen,方便远程连接后运行后台程序(参见: linux 技巧:使用 screen 管理你的远程会话)
代码:
sudo apt-get install screen

3.安装Mysql 5.0
代码:
sudo apt-get install mysql-server-5.0

4.安装Apache
代码:
sudo apt-get install apache2

安装完成后,在别的机器上打开FireFox输入http://服务器的IP地址/apache2-default/ 如果屏幕显示It Works! 则表示安装成功
5.安装版本控制系统,方便在服务器上签出开发机器上的Rails程序,这里安装的是SVN(可选安装)
代码:
sudo apt-get install subversion

6.安装基本的编译环境,在后面安装mongrel时要用到
代码:
sudo apt-get install build-essential

7.安装ruby
代码:
sudo apt-get install ruby1.8 ruby1.8-dev ri1.8 rdoc1.8 irb1.8 libtermios-ruby1.8 libmysql-ruby1.8

注: Rails 升级到2.0.1后,还需要安装libopenssl-ruby1.8, 否则Mongrel启动时会报错
代码:
sudo apt-get install libopenssl-ruby1.8


然后:
代码:
      cd /usr/bin/
      sudo cp ruby1.8 ruby
      sudo cp irb1.8 irb  # 这是为了能够正常启动rails的Control

8.安装rubygems
由于源里的版本比较低,可以到 http://rubyforge.org/frs/?group_id=126&release_id=11889 去下载最新版本;
下载tgz格式的,解压后,进入解压目录,然后运行:
代码:
sudo ruby ./setup.rb

9.安装Rails、mongrel、termios程序库
代码:
      sudo gem update
      sudo gem install --include-dependencies rake
      sudo gem install --include-dependencies rails
      sudo gem install --include-dependencies termios
      sudo gem install --include-dependencies mongrel
      sudo gem install --include-dependencies mongrel_cluster


安装mongrel时,会看到如下选择:

Select which gem to install for your platform (i486-linux)
1. mongrel 1.0.1 (mswin32)
2. mongrel 1.0.1 (ruby)
3. mongrel 1.0 (mswin32)
4. mongrel 1.0 (ruby)
5. Skip this gem
6. Cancel installation
> 2
选第二个,mongrel1.0.1好像修复了一个漏洞,然后还会有另一个选择:

Select which gem to install for your platform (i486-linux)
1. fastthread 1.0 (ruby)
2. fastthread 1.0 (mswin32)
3. fastthread 0.6.4.1 (mswin32)
4. fastthread 0.6.4.1 (ruby)
5. Skip this gem
6. Cancel installation
>1
选第一个

以上,部署的必要软件基本上都装齐了

注:在710里用Gem安装Rails、mongrel等软件时,有提示安装成功, 但在命令行下运行却提示找不到命令,这是因为Gem没有把命令链接到/usr/bin/ , 这时可以手动把/var/lib/gems/1.8/bin/下的文件cp到/usr/bin/。
代码:
cp -i /var/lib/gems/1.8/bin/* /usr/bin/

但这样以后升级软件的时候会比较麻烦,要重新cp一份,也可以做一个符号链接如: ln -s /var/lib/gems/1.8/bin/rails /usr/bin/rails
gem安装软件的目录可以通过命令 gem install --help 查看到。


------------------------ 以下是软件的设置部分 --------------------------------

三:软件设置
1.mysql 的设置
参考了论坛里的这篇文章:http://forum.ubuntu.org.cn/viewtopic.php?t=1320
在终端运行:

代码:
mysql -u root

mysql>delete from mysql.db;   <- 清空db表中默认对test数据库的权限设置
mysql>delete from mysql.user where not(host="localhost") and user="root";   <- 清除多余的root用户
mysql>update mysql.user set user="ubuntu" where user="root";  <- 为了安全,将默认的root用户名更改为ubuntu。
mysql>update mysql.user set Password=PASSWORD('ubuntu_cn') where user='ubuntu'; <- 给ubuntu用户加上密码"ubuntu_cn"
mysql>flush privileges;
mysql>exit


清除之前对数据库的操作日志,这样别人就不知道刚刚改的密码啦
代码:
rm ~/.mysql_history
touch ~/.mysql_history


2.Mongrel_cluster配置
Mongre_cluster的设置比较简单,在你的Rails应用的根目录下运行,以下假设Rails的应用程序目录为/home/ubuntu/railsapp/demo/

代码:
mongrel_rails cluster::configure -e production -p 8000 -a 127.0.0.1 -N 2 -c /home/ubuntu/railsapp/demo/


解释一下:
-e 指定运行环境,有production(生产)、development(开发)、test(测试)三个选项。
-p 指定监听端口
-a 127.0.0.1 指定Mongrel在localhost下监听
-N 2 启动两个Mongrel进程,端口从8000~8001

运行后,会在应用程序目录 config/mongrel_cluster.yml, 以后有什么变化,直接修改这个文件就可以了。
在终端下输入以下命令启动Mongrel:
代码:
mongrel_rails cluster::start

要停止则输入:
代码:
mongrel_rails cluster::stop


2.Apache 的设置
首先要启动mod_proxy模块.
代码:
cd /etc/apache2/mods-enabled/
sudo ln -s ../mods-available/proxy_balancer.load proxy_balancer.load
sudo ln -s ../mods-available/proxy_http.load proxy_http.load
sudo ln -s ../mods-available/proxy.load proxy.load
sudo ln -s ../mods-available/proxy.conf proxy.conf


接着要修改一下proxy.conf文件
代码:
sudo vim /etc/apache2/mods-available/proxy.conf


大概是在11行:
代码:
#Allow from .example.com

改为
代码:
Allow from all


修改 /etc/apache2/apache2.conf 文件(默认是在最后一行):
代码:
Include /etc/apache2/sites-enabled/

改为:
代码:
#Include /etc/apache2/sites-enabled/

然后在/etc/apache2/httpd.conf里添加以下部分:
代码:
<Proxy balancer://mongrel>
  BalancerMember http://127.0.0.1:8000
  BalancerMember http://127.0.0.1:8001
</Proxy>

<VirtualHost *:80>
  ProxyPass / balancer://mongrel/
  ProxyPassReverse / balancer://mongrel/
</VirtualHost>


重启Apache以使设置生效:
代码:
sudo /etc/init.d/apache2 restart


在Firefox里输入http://服务器的IP地址/ 进行测试,检查Rails程序是否能够正常运行。

这样一个Rails的生产环境就配置好了。 :D


最后由 kofcom007 编辑于 2007-12-23 19:56,总共编辑了 4 次

页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-08-18 2:39 

注册: 2007-08-18 2:30
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
kofcom007
在启动Apache2时出现如下错误:
apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.1.250 for ServerName
在httpd.conf的<VirtualHost *:80> 里面设了serverName也没有用

在启动mongrel_rails cluster::start时出现如下错误:
* Ruby version is not up-to-date; loading cgi_multipart_eof_fix

能够访问app,并且应用程序可以跑,但是点击app的About your application’s environment时出现错误:
The page you were looking for doesn't exist.
You may have mistyped the address or the page may have moved.


我是完全按照你的说明装的,环境是:
Ubuntu 7.0.4 server,安装时选择了lamp的安装
ruby -v 是 1.8.5
rails -v 是 1.2.3
gem -v 是 0.9.4

程序路径: /home/insub/apps/test_app

请帮忙看看是什么问题,谢谢!


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-08-21 19:02 
头像

注册: 2006-06-03 0:50
帖子: 16
送出感谢: 0 次
接收感谢: 0 次
Mongrel在我这里也有这个问题,冒似不影响使用,所以一直没理他 :twisted:
Apache的问题,在我这里,是因为DNS服务器里面没有我的电脑的记录,现在Windows是靠Wins的记录来访问我的服务器的。
:)
至于About your application’s environment出现的问题,出于安全的原因,About your application’s environment的信息只有在本地才能正常显示, 这是原话:
代码:
For security purposes, this information is only available to local requests.


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-08-31 15:36 

注册: 2006-07-28 9:37
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
安装mongrel,还要选择:
Select which gem to install for your platform (i486-linux)
1. fastthread 1.0 (ruby)
2. fastthread 1.0 (mswin32)
3. fastthread 0.6.4.1 (mswin32)
4. fastthread 0.6.4.1 (ruby)
5. Skip this gem
6. Cancel installation
> 1


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-08-31 23:02 
头像

注册: 2006-06-03 0:50
帖子: 16
送出感谢: 0 次
接收感谢: 0 次
已经更新,谢谢4楼的兄弟


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-09-02 9:25 

注册: 2006-07-28 9:37
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
kofcom007 写道:
已经更新,谢谢4楼的兄弟

举手之劳,何足... ... :D

另外,我现在使用gem远程安装时,速度特别慢,不知道是不是网络原因还是gem的服务器负载太重了?
反正现在都是下载了以后本地安装了。


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-09-02 11:33 
头像

注册: 2006-06-03 0:50
帖子: 16
送出感谢: 0 次
接收感谢: 0 次
我这边用Gem安装,也比较慢,一般输入了安装命令后,要过3~4分钟左右才有反应,不过,安装完第一个包,紧接着再安装另一个的时候,反应就比较快了。
我也试过本地安装,不过在安装Rails的时候,还要去下载相应的包,如activerecord、activesupport、actionwebservice 等,比较麻烦。不过,把包都下载下来,以后再安装就很方便。 :D


页首
 用户资料  
 
8 楼 
 文章标题 : Re: [分享]在Ubuntu上部署Rails(Apache mod_proxy mongrel_cluster)
帖子发表于 : 2007-09-06 15:07 

注册: 2007-09-06 15:05
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
kofcom007 写道:
然后:
代码:
      cd /usr/bin/
      sudo cp ruby1.8 ruby
      sudo cp irb1.8 irb  # 这是为了能够正常启动rails的Control



楼主别再害人了!apt装的不用cp /usr/bin/ruby1.8 /usr/bin/ruby 编译安装时才需要cp一下

你自己搞清楚了再发这样的帖子!

真是太垃圾!!!


页首
 用户资料  
 
9 楼 
 文章标题 : Re: [分享]在Ubuntu上部署Rails(Apache mod_proxy mongrel_cluster)
帖子发表于 : 2007-09-06 21:16 
头像

注册: 2006-06-03 0:50
帖子: 16
送出感谢: 0 次
接收感谢: 0 次
rubyway 写道:
kofcom007 写道:
然后:
代码:
      cd /usr/bin/
      sudo cp ruby1.8 ruby
      sudo cp irb1.8 irb  # 这是为了能够正常启动rails的Control



楼主别再害人了!apt装的不用cp /usr/bin/ruby1.8 /usr/bin/ruby 编译安装时才需要cp一下

你自己搞清楚了再发这样的帖子!

真是太垃圾!!!


我不见得这样写是在害人,把ruby1.8 cp成 ruby ,运行ruby代码的时候,不是会更方便一点吗?很多新手在安装完ruby后,可能会试验有没有安装成功,如果输入命令:ruby helloworld.rb 程序没有运行起来,会不会很郁闷?


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2007-09-23 21:43 

注册: 2006-09-05 20:44
帖子: 86
地址: china
送出感谢: 0 次
接收感谢: 0 次
Service Temporarily Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

照着你的教程,出现上面的错误,为什么?哪里不对呢?


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2007-10-05 22:02 
头像

注册: 2006-06-03 0:50
帖子: 16
送出感谢: 0 次
接收感谢: 0 次
mifly 写道:
Service Temporarily Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

照着你的教程,出现上面的错误,为什么?哪里不对呢?



你是做到那一个步骤的时候出现的?这应该是apache的错误,需要检查一下Apache的配置文件....


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2007-11-23 17:15 

注册: 2007-11-22 11:48
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
这样的设置是否php和rails不能兼容了?我有些应用需要用到php的。


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2008-03-13 22:29 

注册: 2008-03-13 22:28
帖子: 6
送出感谢: 0 次
接收感谢: 0 次
测试成功

感谢楼主


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2008-06-19 23:33 
头像

注册: 2007-06-26 23:50
帖子: 221
地址: WHU
送出感谢: 0 次
接收感谢: 0 次
谢谢!


页首
 用户资料  
 
15 楼 
 文章标题 : Re: [分享]在Ubuntu上部署Rails(Apache mod_proxy mongrel_cluster)
帖子发表于 : 2008-12-05 22:28 

注册: 2008-11-30 0:20
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
测试成功!感谢楼主的辛苦工作! :em11 :em11


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 15 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译