一个伪linux粉丝的blog

  1. 首页
  2. network
  3. 正文

基于Ubuntu Nginx Mongrel Mysql部署rails

29 5 月, 2008 2922点热度 0人点赞 0条评论

基于Ubuntu Nginx Mongrel Mysql部署rails

前提: 已安装好了ubuntu,此处用的是7.10版本
要做得事情:

* 安装
o ruby
o gem
o rails (含一些用到的插件)
o mongrel(含mongrel_cluster)
o Mysql
o Nginx

* 配置
o 给mysql建库
o rails生成生产环境数据库
o 配置mongrel_cluster
o 配置Nginx
* 手动开关
o mongrels
o nginx
* 自动运行脚本
o mongrels
o nginx
o mysql
* 监控 monitor

I.安装
I.Ruby

首先完成安装gcc和zlib的安装

下载ruby源代码包到本地Linux主机,然后解压缩,进入该目录,进行配置,编译和安装:
tar xzvf ruby-1.8.6.tar.gz
cd ruby-1.8.6

./configure –prefix=/usr/local/ruby
make && make install
如果不定制安装的目录,默认将安装到/usr/local目录下面。然而建议自行定制一个ruby的安装目录,例如/usr/local/ruby,这样便于以后的升级,不会和操作系统其他软件混在一起。

安装好以后,修改操作系统PATH路径,加入/usr/local/ruby/bin:
export PATH=/usr/local/ruby/bin:$PATH
将我们自己安装的ruby放在系统PATH前面,避免操作系统自带的ruby造成的干扰。在Linux上,一般将设置放在/etc/profile中,便于对全局生效。
I.gem

下载好源代码包,解压缩,安装:
tar xzvf rubygems-0.9.0.tgz
cd rubygems-0.9.0/
ruby setup.rb

会有gem命令产生在ruby/bin目录下
I.rails (含一些用到的插件)

gem install rails -v 1.2.6

gem install rails -y --source http://gems.rubyonrails.org

gem query --local 查询本地已安装的gem
I.mongrel(含mongrel_cluster)

安装mongrel
gem install mongrel -y

安装mongrel_cluster
gem install mongrel_cluster -y
I.Mysql

sudo apt-get install mysql-server

I.Nginx

先安装prec包 http://sourceforge.net/project/showfiles.php?group_id=10194&package_id=9960&release_id=572108 (tar configure make 'make install')
对于nginx:

./configure --with-pcre=../pcre-7.6 && make && make install

C.配置
C.给mysql建库

mysql -uroot
create database runlog_prodution character set utf8

以root的身份建一个编码是utf8的库,库的名字按照rails的coc原则来确定。

C. 给Rails生产环境数据库加入内容

注意各环境下的database.yml是否可以配合的起来。

设置环境变量为 export RAILS_ENV=production , 然后执行rake db:migrate

C.配置mongrel_cluster

关键在于产生 mongrel_cluster.yml文件,指明各种参数

可先建立config目录,用于存放 使用mongrel_rails cluster::configure产生的 mongrel_cluster.yml,然后在此基础上进行修改

mongrel_rails cluster::configure -p 8000 -e production \
-a 127.0.0.1 -N 3 -P /var/www/apps/railsway/shared/pids/mongrel.pid \
-c /var/www/apps/runlog

C.配置Nginx

有的地方建议把配置分成 nginx.conf 和 railsway.conf 两个文件,以区分全局和某个应用。

不过最基本的配置只要像下面这样即可:
C代码 复制代码

1. worker_processes 2;
2.
3. pid logs/nginx.pid;
4.
5. events {
6. worker_connections 1024;
7. }
8.
9.
10. http {
11. include conf/mime.types;
12. default_type application/octet-stream;
13.
14. sendfile on;
15.
16. keepalive_timeout 65;
17.
18. upstream myproject
19.
20. {
21. server 127.0.0.1:8000;
22. server 127.0.0.1:8001;
23. }
24. server {
25. listen 80;
26. server_name localhost;
27.
28. #charset koi8-r;
29.
30. #access_log logs/host.access.log main;
31.
32. location / {
33. #root html;
34. #index index.html index.htm;
35. proxy_pass http://myproject
36.
37. ;
38. }
39.
40. }

worker_processes 2;

pid logs/nginx.pid;

events {
worker_connections 1024;
}

http {
include conf/mime.types;
default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

upstream myproject

{
server 127.0.0.1:8000;
server 127.0.0.1:8001;
}
server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
#root html;
#index index.html index.htm;
proxy_pass http://myproject

;
}

}

RH.手动开关
RH.mongrels

mongrel_rails cluster::start -C /home/production/config/mongrel_cluster.yml
其中,在mongrel_cluster.yml中给出cwd:表明对应app的目录。
将start改成close就是关闭
RH.nginx

直接调用/usr/local/nginx/sbin/nginx 即可运行。如给出 -C file 则可进一步指定运行的nginx.conf文件的位置。

ngix采用主从控制的模式,由一个master进程(会将pid号写入logs/ngnix.pid中)来带另外多个worker 进程(数量可设置)。仅仅杀掉master进程,另外两个worker进程会继续有效。
而通过传15这个信号 kill - 15 pid,可以终结全部nginx进程。

RA.自动运行脚本

自动运行的内容包括mongrels nginx和mysql。实质上就是把这些服务的启动脚本放入/etc/init.d/下,然后在rc?.d下面建立指向init.d/下实际脚本文件的link。

这里实际是高度封装的,不管是什么脚本,处理方式是一样的。不过需要注意,mongrel的启动序列必须晚于mysql。此外,就是执行mongrel的启动脚本时,PATH中必须包含/usr/local/ruby/bin.

稍微提一下ubuntu的启动服务机制。

在/etc下面,存在init.d目录以及rc[0-6|S].d目录。init.d存放实际的脚本文件, rc[0-6|S].d存放要被执行的文件,都是指向init.d的连接文件,普遍以S或者K开头。S开头的文件就是启动时会执行的文件。 rcS.d中是上电时必会被执行的,而rc[0-6].d则会视系统的run_level来决定执行哪个目录下的问题就。

含义大致如下:

0 为停机,机器关闭。
1 为单用户模式,就像Win9x 下的安全模式类似。
2 为多用户模式,但是没有NFS 支持。
3 为完整的多用户模式,是标准的运行级。
4 一般不用,在一些特殊情况下可以用它来做一些事情。
例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5 就是 X11 ,进到 X Window 系统了。
6 为重启,运行 init 6 机器就会重启。

通过 who -r 可显示运行level。ubuntu的桌面模式下,run level是2。所以可以把脚本放在rc2.d下面。

ubuntu对传统的init做了革新,采用了upstart的模式,不过还是兼容过去的rc?.d的服务自动启动模式。即把服务放在rc?.d下面,进入对应的run_level时就会重启.
在ubuntu下面,mysql的启动,也是通过把脚本放在rc2.d下面来完成的。实际上mysql安装时在多个rc?.d下面都建立了连接。
upstart模式兼容rc?.d,是通过在/etc/event.d/下面的rcS和rc-default来办到的,前者会启动rcS.d(上电时必须启动的脚本),后者会触发rc2.d。

http://swachian.javaeye.com/blog/175033

相关文章:

  1. how to install open source Tengine
  2. redmine-install-notes
  3. nginx升级0.8.52
  4. 安装Nginx
标签: Mongrel Mysql部署rails Nginx Ubuntu Ubuntu Nginx Mongrel Mysql部署rails
最后更新:29 5 月, 2008

wanjie

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

This site uses Akismet to reduce spam. Learn how your comment data is processed.

归档
分类
  • network / 332篇
  • Uncategorized / 116篇
  • unix/linux / 121篇
  • 业界资讯 / 38篇
  • 公司杂事 / 11篇
  • 数码影像 / 12篇
  • 美剧 / 3篇
  • 美图共赏 / 21篇
  • 英语学习 / 3篇
标签聚合
邮件归档 jira dreamhost kernel wget google-chrome k8s 虚拟主机 VPS kubectl dreamhost空间 d90 网站运营 ldap deepseek squid Google postgres docker Ubuntu nexus ssh openssl 泰国 Google Voice gitlab 浏览器 Nginx debian 天翼live

COPYRIGHT © 2008-2025 wanjie.info. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang