设为首页 收藏本站
查看: 654|回复: 0

[经验分享] 基于Ubuntu Nginx Mongrel Mysql部署rails

[复制链接]

尚未签到

发表于 2016-4-13 09:18:49 | 显示全部楼层 |阅读模式
  前提: 已安装好了ubuntu,此处用的是7.10版本
要做得事情:


  • 安装

    • ruby
    • gem
    • rails (含一些用到的插件)
    • mongrel(含mongrel_cluster)
    • Mysql
    • Nginx


  • 配置

    • 给mysql建库
    • rails生成生产环境数据库
    • 配置mongrel_cluster
    • 配置Nginx


  • 手动开关

    • mongrels
    • nginx


  • 自动运行脚本

    • mongrels
    • nginx
    • 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 两个文件,以区分全局和某个应用。
  不过最基本的配置只要像下面这样即可:

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。
  
  番外: monit
  http://www.igvita.com/2006/11/07/monit-makes-mongrel-play-nice/
  
  ubuntu 的更新源(/etc/apt/sources.list)
  

# 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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-203319-1-1.html 上篇帖子: 在新本本上ubuntu安装完毕 下篇帖子: ubuntu 安装视频解码控件及文档
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表