`
swachian
  • 浏览: 74826 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

基于Ubuntu Nginx Mongrel Mysql部署rails

阅读更多

前提: 已安装好了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 楼 jackeyj 2008-09-26  
不错,鼓励原创

相关推荐

    基于Ubuntu Nginx Mongrel Mysql部署rails monit-5.0

    在构建高性能、高可用性的Web应用环境中,"基于Ubuntu Nginx Mongrel Mysql部署rails monit-5.0"的方案是一个常见的选择。这个方案结合了多种强大的工具和技术,以确保应用程序的稳定运行和高效管理。以下是这些关键...

    ubuntu 1804 nginx 离线安装包

    总的来说,这份离线安装包为在无网络环境下的Ubuntu 18.04服务器上部署Nginx提供了一条有效路径,同时也为学习离线部署的初学者提供了实践机会。掌握这项技能对于那些管理远程或隔离环境的IT专业人员来说非常有价值...

    docker-php+nginx+mysql部署.zip

    docker实现php+mysql+nginx自动化部署 注意:nginx中ngx-lua2实现了关联php 提前进行创建网络:docker network create --subnet=172.50.0/16 cluster_redis-master

    Nginx实现MYSQL主备高可用

    通过以上步骤,我们可以构建一个基于Nginx的MySQL主备高可用双活系统。在实践中,还需要注意数据安全性、网络延迟、性能优化等多个方面,以确保整个系统的稳定性和可靠性。在文件`[eimhe.com美河学习在线]nigix实现...

    ubuntu nginx-1.24.0开源包

    nginx-1.24.0开源包,需要解压到ubuntu系统后,cd到目录后,先后执行./configure,make,make install,其中configure可以配置更详细的指令,make如果提示没有需要安装

    Ubuntu nginx mysql php Apache一键安装shell_unmpa.zip

    Ubuntu nginx mysql php Apache一键安装shell_unmpa

    基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip

    1、基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为...

    zabbix-web-nginx-mysql.tar

    《Zabbix监控系统Web部署详解——基于Nginx与MySQL》 Zabbix是一款广泛使用的开源监控解决方案,能够实时监控各种网络参数以及服务器健康状态。在本篇中,我们将重点探讨如何利用Nginx作为反向代理服务器,结合...

    ubuntunginx+PHP+mysql服务器搭建.rar

    以上就是基于Ubuntu搭建Nginx+PHP+MySQL服务器的基本流程。通过这个教程,读者应能掌握如何在自己的服务器上部署这样一个环境,为开发和运行Web应用做好准备。在实际操作中,还需要对Linux命令行有基本的了解,以便...

    linux环境下 jdk、mysql、redis、nginx等应用部署

    Linux 环境下 JDK、MySQL、Redis、Nginx 等应用部署 在 Linux 环境中部署 JDK、MySQL、Redis、Nginx 等应用是非常重要的,下面将详细介绍这些应用的部署过程。 JDK 的安装和配置 JDK 是 Java 语言开发的项目不可...

    Nginx+Mongrel实践过程

    总结,Nginx+Mongrel的组合是Ruby on Rails应用的一种有效部署方式,通过Nginx的反向代理和负载均衡功能,可以实现高效、稳定的服务提供。理解并掌握这种部署模式对于提升系统性能和运维能力至关重要。

    centos7离线部署nginx-mysql-php时需要用到的一些依赖包

    在Linux环境中,特别是CentOS 7系统中,搭建LNMP(Linux、Nginx、MySQL、PHP)架构是一项常见的任务,对于那些无法访问外网的服务器来说,离线部署显得尤为重要。本文将详细介绍如何在离线环境下配置LNMP,并重点...

    windows服务器部署 nginx+tomcat+mysql服务器端部署 阿里云服务器部署及配置

    详细说明了windows服务器nginx+tomcat+mysql部署及配置(配置阿里云后台安全组,配置域名)很适合新手学习 附件中包含: 1.操作说明文档 2.操作录屏 3.安装所用到的软件安装包 1)Windows Server 2019 数据中心版 ...

    liunx下nginx和mysql安装文档

    对于基于Debian的系统(如Ubuntu): ``` sudo apt-get install nginx ``` 对于基于RPM的系统(如CentOS): ``` sudo yum install nginx ``` 3. 验证安装: 安装完成后,启动Nginx服务并检查其运行状态:...

    rails 部署 nginx

    标题 "rails 部署 nginx" 涉及到的是在Web开发中使用Ruby on Rails框架结合Nginx服务器进行应用部署的相关知识。Nginx以其高性能、稳定性以及反向代理和负载均衡能力,常被用作Rails应用的前端服务器。下面将详细...

    ubuntunginx+PHP+mysql服务器搭建.pdf

    在构建一个基于Ubuntu系统的Web服务器时,通常会选择Nginx作为Web服务器,PHP作为后端脚本语言,而MySQL作为数据库管理系统。以下是根据提供的文件内容,详细解释如何一步步搭建一个Ubuntu Nginx + PHP + MySQL...

Global site tag (gtag.js) - Google Analytics