`
liusu
  • 浏览: 171367 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

我的rails开发和部署

阅读更多
1:我的Application,是基于rails 2.2.2. 如果采用最新的rails的2.3.2版本。记得迁移程序。

迁移命令:
rake rails:update:application_controller 
(具体请参考:http://guides.rubyonrails.org/2_3_release_notes.html

2:运行环境基于production,在运行环境上面请配置好数据库。并运行数据迁移任务:

命令:
rake RAILS_ENV=production db:schema:load


3:部署环境基于Apache+mod_balancer + mongrel + mongrel_cluster. 首先请安装
mongrel/mongrel_cluser
gem.

4:使用capistrano部署必须明白的概念就是当前的机器和要部署的机器。接下来的操作都是在当前的机器上做的。你在这个机器上设置好所有的事情。包括源码的更新svn服务器,登录远程需要部署的机器的信息等等。早些年的书刊都会告诉你使用
cap --apply-to

命令。但是现在的capistrano都已经不支持这个option了。

5:部署设置步骤(都是在当前机器。也就是说开发机器,在开发环境下面做所有这些操作)
1>: 设置mongrel。运行
mongrel_rails cluster::configure -e production -p 8000 -a 127.0.0.1

在applicaion的跟目录下运行),生成名为config/mongrel_cluster.yml的文件。
其内容大概如下:
---
cwd: /var/www/linknovel/current
log_file: log/mongrel.log
port: "8000"
environment: production
address: 127.0.0.1
pid_file: tmp/pids/mongrel.pid
servers: 4

或者你可以不通过上面那个命令,直接手写这个文件。注意第一个cwd的参数是的应用部署在远程服务器上的路径。而且最后一段必须是current。(因为capistrano每次checkout的代码都是放在current目录下的。)

2>: 你可以通过
mongrel_rails cluster::start
来启动rails程序了。(在本地开发机器上就可以跑跑看)

3>:早些版本的capistrano可能都是通过类似cap --apply-to来启动cap部署的。现在已经改了。 使用
capify
直接开始部署。运行这个命令会生成量个文件。
分别是:Capfile(用以放置cap task的地方)
             config/deploy.rb. 这个里面是一些远程机器的地址以及svn信息等等。
我的deployv.rb的信息如下:

#User setting
set :application, "linknovel"
set :repository, "https://linknovel.googlecode.com/svn/trunk"
set :svn_username, "234aini"
set :svn_password, "*****************"

# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
set :deploy_to, "/var/www/#{application}"
set :user, "xye"
set :password, "xye123"
set :use_sudo,false

# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion

role :app, "192.168.1.6"
role :web, "192.168.1.6"
role :db,  "192.168.1.6", :primary => true

task :chmod_spin do
    #给启动脚本加权限
    path = "/var/www/#{application}/current/script/spin"
    run "chmod a+x #{path}"
end

很容易看懂这个文件。

4>设置好后。就是使用cap的任务来做一些操作了。
cap deploy:update 
checkout源码到远程机器上。并放在你设定的路径的名为current的目录下。
cap deploy:check
检查所有部署设置是否都已经ok。
cap deploy:start
启动rails服务。 这个启动默认会调用script目录下的spin脚本。所以需要修改脚本为合适的启动命令。
我的是:
#!/bin/sh
mongrel_rails cluster::start -C /var/www/linknovel/current/config/mongrel_cluster.yml

到此为止。cap的设置都ok了。使用cap就可以部署了。 详细请参考:http://www.capify.org/getting-started/from-the-beginning/

6:结合Apache。这处让我有点迷惑。
1>首先确保apache已经加载了mod_proxy mod_http_proxy mod_balance_proxy.
2>在你的apache配置中加如下代码:

<VirtualHost *>
    # Server name
    ServerName linknovel.com

    # Proxy ACL
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>

    # Proxy directives
    ProxyPass / http://127.0.0.01:8000/
    ProxyPassReverse / http://127.0.0.1:8000/
    ProxyPreserveHost on
    #更多请自己配置

    # Logfiles
    ErrorLog  /var/log/apache2/linknovel.com.error.log
    CustomLog /var/log/apache2/linknovel.com.access.log combined

</VirtualHost>


好了。启动apache.打开浏览器访问,应该没有问题了。

--------------------------------------------------------------------------------------

最近用一个国内的rails主机来测试应用。http://zoomtype.info/ 这个空间可以有一个月的试用期。蛮不错的。

部署很简单。我的应用测试URL如下:http://liusu.zoomtype.info(很简陋的程序,为学习用的)

--------------------------------------------------------------------------------------
性能测试:

没有采用很复杂的测试方法,用ab随便测试了主页的访问速度,测试结果如下:

从深圳主机访问:
ab -n 3000 -c 6 -q -v -w http://liusu.zoomtype.info/


测试结果:

Benchmarking liusu.zoomtype.info (be patient).....done


Server Software:        Apache/2.2.3
Server Hostname:        liusu.zoomtype.info
Server Port:            80

Document Path:          /novel/list
Document Length:        4133 bytes

Concurrency Level:      6
Time taken for tests:   916.887348 seconds
Complete requests:      3000
Failed requests:        0
Write errors:           0
Total transferred:      13962009 bytes
HTML transferred:       12399000 bytes
Requests per second:    3.27 [#/sec] (mean)
Time per request:       1833.775 [ms] (mean)
Time per request:       305.629 [ms] (mean, across all concurrent requests)
Transfer rate:          14.87 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      174  458 893.4    218   10372
Processing:   202 1350 5723.4    254  182001
Waiting:      194  783 3803.3    242  141086
Total:        377 1809 5912.7    486  185888

Percentage of the requests served within a certain time (ms)
  50%    486
  66%    528
  75%    624
  80%   1284
  90%   3562
  95%   7332
  98%  16495
  99%  21143
100%  185888 (longest request)

----香港那边的机器做的测试:

Benchmark test for http://liusu.zoomtype.info/novel/list
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.141 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking liusu.zoomtype.info (be patient).....done


Server Software:        Apache/2.2.3
Server Hostname:        liusu.zoomtype.info
Server Port:            80

Document Path:          /novel/list
Document Length:        4133 bytes

Concurrency Level:      10
Time taken for tests:   74.892236 seconds
Complete requests:      300
Failed requests:        0
Write errors:           0
Total transferred:      1404888 bytes
HTML transferred:       1245983 bytes
Requests per second:    4.01 [#/sec] (mean)
Time per request:       2496.408 [ms] (mean)
Time per request:       249.641 [ms] (mean, across all concurrent requests)
Transfer rate:          18.31 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       37  583 1722.0     42   21034
Processing:    52 1592 2479.2    987   25875
Waiting:       52  423 1955.7     59   23208
Total:         91 2175 3033.8   1242   25919

Percentage of the requests served within a certain time (ms)
  50%   1242
  66%   2071
  75%   3098
  80%   3602
  90%   4696
  95%   6504
  98%  11543
  99%  14411
100%  25919 (longest request)

------并发大了好像就比较慢了。。 不过总体还可以吧


----------------------------------------------------------------------------------------

使用rails开发一个简单的网站是很快呢! 可是不熟悉的人可能会被“通用方式”迷惑吧。 就比如,每添加一个 controller,每添加一个页面,我都会想,这样是不是rails做事的标准方式。甚至连给action取名,我都会去犹豫,这个操作的名字是不是符合惯例,符合rails的惯例。其实也蛮折腾的。 后来熟悉点了,慢慢会好点。做这个学习的例子,中间有过一次直接全部删除了重来,感觉更快。呵呵。整个网站例子代码是后来一次用两周的下班时间完成的。

不过我的审美观很差,网站实在是不美观啊!

分享到:
评论
2 楼 真无名 2009-03-26  
楼主为什么要做这种功能的网站.....
似乎这种功能没有必要自己去做。
1 楼 娴静女生 2009-03-22  
拿出来筛晒啊!

                 RUBY已经很先进了!

相关推荐

    Ruby On Rails开发实例-源代码

    Ruby on Rails(简称RoR或Rails)是一种基于Ruby语言的开源Web应用框架,它遵循Model-View-Controller(MVC)架构模式,旨在使Web开发更简洁、高效。本实例将帮助你深入理解和...祝你学习愉快,早日成为Rails开发高手!

    Web开发敏捷之道-应用Rails进行敏捷Web开发 pdf

    7. **部署与运维**:除了开发,书中还涵盖了应用的部署和运维,如使用Capistrano进行自动化部署,以及服务器配置、性能优化和故障排查等实践技巧。 8. **版本控制**:Git是现代软件开发中不可或缺的版本控制系统,...

    ruby on rails(开发文档)

    15. **部署**:了解如何将Rails应用部署到Heroku、AWS或其他云平台是实际开发中的重要环节。 Rails的开发文档详尽且全面,涵盖了从基础概念到高级特性的所有内容,对于开发者来说是一份宝贵的参考资料。通过深入...

    基于ruby on rails开发示例源码

    通过这个示例源码,你可以看到这些原则在实际项目中的应用,从而提升你的Rails开发技能。 在深入学习这个示例之前,确保你已经安装了Ruby、Rails以及必要的开发环境。然后,使用`git clone`命令克隆项目,运行`...

    rails 部署 nginx

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

    ruby on rails开发

    Ruby on Rails,简称Rails,是一种基于...以上就是Ruby on Rails开发的基本知识,从环境搭建到项目创建,再到数据库操作和测试,涵盖了Rails开发的核心要素。继续学习和实践,你将能熟练掌握这个强大的Web开发框架。

    Ruby on Rails开发 从入门到精通实战教程.rar

    本资源是一套关于Ruby on Rails开发的全面教程,旨在帮助学习者从入门到精通掌握Ruby on Rails框架的开发技能。教程内容涵盖了Ruby语言基础、Rails...通过学习本资源,您将掌握Ruby on Rails开发的核心技术和实战应用。

    Ruby-wechatstarter微信开发模版支持Rails5和一键部署到Heroku

    wechat-starter:微信开发模版,支持 Rails 5 和一键部署到 Heroku

    Ruby on Rails开发指南

    以上只是Ruby on Rails开发的一些核心知识点,实际开发中还需要掌握数据库设计、前端技术、RESTful API设计、安全性考虑等多方面内容。持续学习和实践,你将能熟练驾驭这个强大的开发工具,创造出富有创新的Web应用...

    ruby on rails社区网站开发源码

    这个框架以其MVC(Model-View-Controller)架构、约定优于配置(Convention over Configuration)的原则以及活性记录(ActiveRecord)等特性而闻名,极大地提高了开发效率和代码的可读性。 在“ruby on rails社区...

    Ruby on Rails Web开发学习实录随书光盘(源代码).

    本资源为"Ruby on Rails Web开发学习实录随书光盘"的源代码,是清华大学出版社出版的相关书籍的配套资料,旨在帮助读者深入理解和实践Rails开发。 1. **Ruby基础知识**:Ruby是一种面向对象的、动态类型的编程语言...

    中文版rails教程

    在Rails开发中,通常遵循以下步骤: 1. **生成资源(Generating Resources)**:使用`rails generate`命令可以快速创建模型、控制器、视图等文件,如`rails generate scaffold Post title:string content:text`会...

    Ruby+on+Rails快速Web应用开发实战.pdf

    ### Rails应用的开发和部署 - **CRUD操作**:CRUD是创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作的缩写,这是Web应用中处理数据的基本操作,Rails提供了对这些操作的简便支持。 - **Ajax技术...

    Ruby on Rails教程:学习使用Rails进行Web开发Ruby on Rails Tutorial: Learn Web Development with Rails

    本书教您如何使用Ruby on Rails开发和部署真正的,具有工业实力的Web应用程序,Ruby on Rails是为诸如Twitter,Hulu,GitHub和Yellow Pages等顶级网站提供支持的开源Web框架。

    Web开发敏捷之道-应用Rails进行敏捷Web开发(第3版).pdf

    《Web开发敏捷之道:应用Rails进行敏捷Web开发(第3版)》:Ruby on Rails是一个全套的MVC web框架,它能帮你开发高质量又美观的web应用,而且开发速度快得出乎你想象。你只须集中精力于应用程序本身,Rails就会帮你...

    应用Rails进行敏捷Web开发中文第三版

    Ruby on Rails(简称Rails)是一款基于Ruby编程语言的开源Web应用程序框架,它遵循“Don't Repeat Yourself”(DRY)原则和“Convention over Configuration”(约定优于配置)理念,极大地提高了Web开发的效率和...

    ruby_on_rails安装部署指导手册

    ### Ruby on Rails 安装与部署知识要点 #### 一、前言 在进行 Ruby on Rails 的安装与部署过程中,我们需要关注...这些步骤是构建稳定可靠的 Rails 开发环境的基础,也是进一步开发和部署 Rails 应用程序的前提条件。

    Rails101_by_rails4.0

    而在Rails开发中,合适的编辑器可以提高代码编写和管理的效率,Linux命令行则对于部署和维护开发环境有着重要作用。 为了确保读者能够通过实践加深理解,书中还安排了一系列练习作业,从最基础的“Hello World”...

Global site tag (gtag.js) - Google Analytics