[分享]在Ubuntu上部署Rails(Apache mod_proxy mongrel_cluster)
发表于 : 2007-08-09 23:53
在Ubuntu上部署Rails(Apache mod_proxy mongrel_cluster)
最近需要把Rails的程序发布出去,在发布的过程中遇到了一些问题,虽然都用Google解决了,不过也注意到,在Ubuntu下部署Rails和其它Linux环境有所不同,为了以后少走弯路,把最近部署的过程记了下来。
以下环境为7.04
一:以Server的形式安装Ubuntu,安装完成后,设置IP、软件安装源。(这点就不说了,论坛有很多教程)
二:安装必须的软件
1.安装OpenSSH,方便远程管理:
2.安装Screen,方便远程连接后运行后台程序(参见: linux 技巧:使用 screen 管理你的远程会话)
3.安装Mysql 5.0
4.安装Apache
安装完成后,在别的机器上打开FireFox输入http://服务器的IP地址/apache2-default/ 如果屏幕显示It Works! 则表示安装成功
5.安装版本控制系统,方便在服务器上签出开发机器上的Rails程序,这里安装的是SVN(可选安装)
6.安装基本的编译环境,在后面安装mongrel时要用到
7.安装ruby
注: Rails 升级到2.0.1后,还需要安装libopenssl-ruby1.8, 否则Mongrel启动时会报错
然后:
8.安装rubygems
由于源里的版本比较低,可以到 http://rubyforge.org/frs/?group_id=126&release_id=11889 去下载最新版本;
下载tgz格式的,解压后,进入解压目录,然后运行:
9.安装Rails、mongrel、termios程序库
安装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一份,也可以做一个符号链接如: ln -s /var/lib/gems/1.8/bin/rails /usr/bin/rails
gem安装软件的目录可以通过命令 gem install --help 查看到。
------------------------ 以下是软件的设置部分 --------------------------------
三:软件设置
1.mysql 的设置
参考了论坛里的这篇文章:viewtopic.php?t=1320
在终端运行:
清除之前对数据库的操作日志,这样别人就不知道刚刚改的密码啦
2.Mongrel_cluster配置
Mongre_cluster的设置比较简单,在你的Rails应用的根目录下运行,以下假设Rails的应用程序目录为/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:
要停止则输入:
2.Apache 的设置
首先要启动mod_proxy模块.
接着要修改一下proxy.conf文件
大概是在11行:
改为
修改 /etc/apache2/apache2.conf 文件(默认是在最后一行):
改为:
然后在/etc/apache2/httpd.conf里添加以下部分:
重启Apache以使设置生效:
在Firefox里输入http://服务器的IP地址/ 进行测试,检查Rails程序是否能够正常运行。
这样一个Rails的生产环境就配置好了。
最近需要把Rails的程序发布出去,在发布的过程中遇到了一些问题,虽然都用Google解决了,不过也注意到,在Ubuntu下部署Rails和其它Linux环境有所不同,为了以后少走弯路,把最近部署的过程记了下来。
以下环境为7.04
一:以Server的形式安装Ubuntu,安装完成后,设置IP、软件安装源。(这点就不说了,论坛有很多教程)
二:安装必须的软件
1.安装OpenSSH,方便远程管理:
代码: 全选
sudo apt-get install openssh-client openssh-server
代码: 全选
sudo apt-get install screen
代码: 全选
sudo apt-get install mysql-server-5.0
代码: 全选
sudo apt-get install apache2
5.安装版本控制系统,方便在服务器上签出开发机器上的Rails程序,这里安装的是SVN(可选安装)
代码: 全选
sudo apt-get install subversion
代码: 全选
sudo apt-get install build-essential
代码: 全选
sudo apt-get install ruby1.8 ruby1.8-dev ri1.8 rdoc1.8 irb1.8 libtermios-ruby1.8 libmysql-ruby1.8
代码: 全选
sudo apt-get install libopenssl-ruby1.8
代码: 全选
cd /usr/bin/
sudo cp ruby1.8 ruby
sudo cp irb1.8 irb # 这是为了能够正常启动rails的Control
由于源里的版本比较低,可以到 http://rubyforge.org/frs/?group_id=126&release_id=11889 去下载最新版本;
下载tgz格式的,解压后,进入解压目录,然后运行:
代码: 全选
sudo ruby ./setup.rb
代码: 全选
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
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/
gem安装软件的目录可以通过命令 gem install --help 查看到。
------------------------ 以下是软件的设置部分 --------------------------------
三:软件设置
1.mysql 的设置
参考了论坛里的这篇文章: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
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
首先要启动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
代码: 全选
sudo vim /etc/apache2/mods-available/proxy.conf
代码: 全选
#Allow from .example.com
代码: 全选
Allow from all
代码: 全选
Include /etc/apache2/sites-enabled/
代码: 全选
#Include /etc/apache2/sites-enabled/
代码: 全选
<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>
代码: 全选
sudo /etc/init.d/apache2 restart
这样一个Rails的生产环境就配置好了。