基于Ubuntu Nginx Mongrel Mysql部署rails

基于Ubuntu Nginx Mongrel Mysql部署rails博客分类: railsUbuntuRailsMySQLnginxRuby前提: 已安装好了ubuntu,此处用的是7.10版本要做得事情:安装rubygemrails (含一些用到的插件)mongrel(含mongrel_cluster)MysqlNginx配置给mysql建库rails生成生产环境数据库配置mongrel_cluster配置Nginx手动开关mongrelsnginx自动运行脚本mongrelsnginxmysql监控 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.6gem install rails -y --source http://gems.rubyonrails.orggem query --local 查询本地已安装的gemI.mongrel(含mongrel_cluster)安装mongrelgem install mongrel -y 安装mongrel_clustergem install mongrel_cluster -y I.Mysqlsudo 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 -urootcreate 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代码 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.mongrelsmongrel_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。 番外: monithttp://www.igvita.com/2006/11/07/monit-makes-mongrel-play-nice/ ubuntu 的更新源(/etc/apt/sources.list) Java代码 # Automatically generated sources.list # http://www.ubuntulinux.nl/source-o-matic # # If you get errors about missing keys, lookup the key in this file # and run these commands (replace KEY with the key number) # # gpg --keyserver subkeys.pgp.net --recv KEY # gpg --export --armor KEY | sudo apt-key add - deb http://ubuntu.cn99.com/ubuntu/ gutsy main restricted universe multiverse deb http://ubuntu.cn99.com/ubuntu/ gutsy-security main restricted universe multiverse deb http://ubuntu.cn99.com/ubuntu/ gutsy-updates main restricted universe multiverse deb http://ubuntu.cn99.com/ubuntu/ gutsy-proposed main restricted universe multiverse deb http://ubuntu.cn99.com/ubuntu/ gutsy-backports main restricted universe multiverse deb-src http://ubuntu.cn99.com/ubuntu/ gutsy main restricted universe multiverse deb-src http://ubuntu.cn99.com/ubuntu/ gutsy-security main restricted universe multiverse deb-src http://ubuntu.cn99.com/ubuntu/ gutsy-updates main restricted universe multiverse deb-src http://ubuntu.cn99.com/ubuntu/ gutsy-proposed main restricted universe multiverse deb-src http://ubuntu.cn99.com/ubuntu/ gutsy-backports main restricted universe multiverse # Ubuntu supported packages (packages, GPG key: 437D05B5) deb http://us.archive.ubuntu.com/ubuntu gutsy main restricted deb http://us.archive.ubuntu.com/ubuntu gutsy-updates main restricted deb http://security.ubuntu.com/ubuntu gutsy-security main restricted # Ubuntu community supported packages (packages, GPG key: 437D05B5) deb http://us.archive.ubuntu.com/ubuntu gutsy universe multiverse deb http://us.archive.ubuntu.com/ubuntu gutsy-updates universe multiverse deb http://security.ubuntu.com/ubuntu gutsy-security universe multiverse apt-get -y install build-essential libssl-dev libreadline5-dev zlib1g-dev

你可能感兴趣的:(基于Ubuntu Nginx Mongrel Mysql部署rails)