类似 XAMPP
PHP 的部署确实非常简单,虽然那些简单的部署性能不一定好,但却给新手带来很多帮助,让新手可以快速搞起来。
而 Ruby, Rails 的项目部署却一直是一个老大难,把很多兴趣不是很高涨(或者初步了解)的人挡在了门外。
找过不少,目前就 Passenger 简单一些,但安装过程还是太过复杂,而且中途会由于系统的缘故导致一些其他的问题。 此外 Rails 也是另外一个问题,哪怕有那么一个 Gem 安装不上也是没法运行的,其实可以忽略掉,到用到那个功能的时候才出错误提示(PHP 的三方库就是这样)
题外话:我这么一个熟练工,每次部署新服务器的时候都自少都要折腾 1 个小时以上才能把 Ruby 的部署环境安装好...昨天被一个 PHP 的朋友 BS
或者再退一步,至少让流行的 Ubuntu 上面可以快速部署 据我了解,再 Ubuntu 上面,不同的版本部署也是有一些差距的
下面这些包基本上是 Ruby 环境安装必要的,但某些系统版本下面依然存在出入,导致是不是的问题
build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libxml2-dev libxslt-dev autoconf automake libtool imagemagick libmagickwand-dev libpcre3-dev
最恼火的还是 RMagick
的安装,这个估计 90% 的人都有遇到(尤其是在非 Debain 的系统下面)
我之前想整理一套 capistrano 的 recipes 做通用的然后开源出来。
大家都可以 clone 到自己本地的仓库中,包含各种通用部署步骤。
第一次环境部署的问题,只有 nginx 和 ruby 有点麻烦。总体来说还好。这方面不比 php 差太多吧。php 也要折腾 nginx.
得是一个软件,自带 Ruby, Rails, Gem, Bundler, ImageMagick, Nginx 有 init.d 的自启动脚本 甚至可以 apt-get install 来直接安装,装好以后就启动,然后把 Rails 放到某个目录就可以开跑那样
Passenger 不是有集成到 Nginx 的 module 么,或许可以直接把它打包成个 deb,这样 apt-get install 就能用了,Nginx 的配置应该还好也不是太难,另外那些从其它语言过来的人多少也会的。 主要是要把 Ruby 环境带上
其实楼主的意思是想要一个Rails
版的WAMP
或者XAMPP
吧,Windows 上有 RailsInstaller
,用来体验和学习Rails
也够了,不过对于其他某些 Gem 可能就无能为力了。Linux 方面其实都是缺了一些包,否则安装也应该很顺利的。我记得Ubuntu 12.04
默认好像是连wget
和curl
命令都没有的,还有莫名其妙地少了个zlib
。我感觉写个通用的安装脚本就可以了,把RVM
,Rails
等等有的没得全都装上。
哎~我也卡在 rails 部署上了,上个月作为市场部的我,用 rails 给我们 IT 部做了一套 资产管理系统,只用了 2 个小时(够拉风的),但部署了一个多月没搞定!哎~~~~
这个说复杂也复杂,不过说简单也简单,其实就是一个脚本集而已,不过要做好兼容处理。 运维人员一般将这种脚本称为 op shell,我觉得可以搞一套 op shell,就像 rvm 一样,对环境的依赖只有 bash(windows 暂时无视)
@fsword bitnami 有各种 stack , 有个 free developer plan,要配合 amazon ec2 使用,ec2 里本身就有很多 bitnami 的镜像,新手直接装这个就好了,只要有很多 visa 信用卡就好了
也许可以集中社区的力量来构建和维护一个 rails 环境搭建的整套脚本? 只针对特定的 linux 发行版如 ubuntu;做得像 rvm 的安装脚本一样;同时提供各种安装选项可以自定义的,然后脚本搞定所有的安装和设置
大家有没有兴趣?
windows 下的 bitnami redmine 一路点击下去就装好了,包括 mysql, imagemagick 等,安装在独立目录,而且能安装好 windows 服务,自动启动。
@lgn21st 我的意思在于 Openshift origin 是一个开源的项目,直接可以再内部部署。达到的效果就和免费的 Openshift express 的云服务一样的效果。重在架构,拿来为我所用。
Build Your Own PaaS(https://openshift.redhat.com/community/wiki/build-your-own)
@fsword 呵呵,是 cloudfondry 不是 CloudFoundary 我最开始也看错了,原理应该是差不多的 . openshift 我不了解,CloudFoundry.org CF 开源项目网站,你可以去下载一个 Micro Cloud Foundry 的虚拟机实例在本机试试,用这个可以自己搭建内部使用的 paas,而 CloudFoundry.com 是 CloudFoundry 的线上版本,可以托管项目(不过有一定的资源限制)
我建议学习有些网站在黑苹果安装方面的做法,愿意分享的在自己的签名上把自己的部署方面的经验标上,让有问题的人找对人,应该是比较节省时间的。 例如: os = Ubuntu 12.04 LTS web server = Nginx + Passenger mysql = yes mongodb = yes ... ... 当然,我觉得新手大多是对 Linux 不熟悉挡在了门外,所以,最好还是自己一步一步把 Linux 基础学会。
一站式的东西可能让新手在未来会越来越多的迷惑。
当然,我觉得新手大多是对 Linux 不熟悉挡在了门外,所以,最好还是自己一步一步把 Linux 基础学会。
华顺前辈部署一个新的服务器都要一个小时以上,即使懂很多,配置也需要很长时间,所以想要搞个一站式软件什么的 新手学习 ruby,Rails,新手会被 Linux 挡在门外,学习的门槛较高 我们在谈 Raisl 项目的部署。。。
最简单的方式,应该是用虚拟机镜像的方式 针对不同系统提供一个完全配置好的镜像 缺点是尺寸比较大 好处是完全不会有任何环境差异的问题,并且所有人的环境都一样,出了问题也好找
如果说是方便的 Windows 上的部署方式的话,我想到的有 Rails Installer,还有 Cygwin。Rails Installer 之前已经试过了,Rspec 死活装不上,估计其他的 Gem 也会有问题。 然后就是 Cygwin 了,虽然安装很麻烦,不过也算是个 Unix-like 的环境,以后遇见的问题会比直接在 Windows 上安装少一点。
搞了一下午,终于成功把 Rails 部署在 Cygwin 上面了,用 RVM 装 Ruby 然后再装 Rails。主要问题还是出现在安装 RVM 和 编译源码安装 Ruby 上,期间遇到各种路径问题,缺了各种奇葩的包,有的还得自己编译,花的功夫够我在 Ubuntu 上面装个十几回了的。装好了 Ruby 解析器以后,后面安装 Gem 的步骤就比较顺利了,不过 rails s 启动 WEBrick 后发现少了 openssl-devel 的包,被迫重新编译安装 Ruby ……
整个安装过程还算不太复杂,就是比较折腾,各种变数太多,可能不适合做成自动化脚本安装。例如我的 rake 开始死活运行不起来,后来才发现是我的 Windows 的 PATH 变量有中文,Cygwin 会把 Windows 的环境变量也拷贝过来,结果搞得 rake 解析环境变量时碰到中文字符直接挂掉。
不知道能不能把整个装好 Rails 的 Cygwin 打包成一个安装包来发布,可以用来当做学习和开发环境。Cygwin 比虚拟机要轻量一点,在我 2G 内存的机子上也很顺溜。不过装了各种常用 Gem 之后,整个 Cygwin 目录 占用空间超过了 1G,而 Cygwin 本身大小不过 100M 不到。估计把不需要的源文件和文档删掉能减掉一点。
@hxgdzyuyi 看了了下 vargrant,好像用的 ubuntu10.04,还是 32 位的,
我自己也是在服务器 (16G 内存) 上放 virtualbox 虚拟机,用的是 12.04 的最新版,反正硬盘大,如果工作做得差不多了,把虚拟机停了,clone 一份,正式运行的时候生成一个/var 和/home 硬盘文件,这样保证和系统分开,出了问题直接把这两个硬盘文件挂在原来备份的系统盘上,马上搞定。
我觉得虚拟机的方式比较简单靠谱,当然不好的地方就是服务器要过硬。
我现在用 Chef,社区的 recipe 涵盖大部分需求,需要特别定制,写新的 recipe 也比较方便 从服务器环境˙配置到配置管理在一个地方都搞定了
个人以为,做软件或相关计算机行业,早点接触 linux 绝对是职业发展中的好事。呵呵,对 shell 比较感兴趣,最近为了将一些日常操作自动化,陆陆续续写了点脚本放在: http://github.com/cao7113/ush , 将来积累成熟了,有楼主这方面的想法,尽量将一些事情自动化,学习下 rvm 和 sm
这种属于运维的脚本,推荐使用 puppet,对 puppet 不了解的可以看一下这篇: http://mudge.github.com/2011/08/11/managing-web-application-servers-with-puppet.html
puppet 是基于 ruby 的,很易用。
我来稍微解释一下 Vagrant 方案吧。[是 Vagrant
不是 vargrant]
简单说 Vagrant 是个 VirtualBox CLI Wrapper. 它负责导入 Virtualbox 镜像 (需要符合 Vagrant 的基本要求,包括装好 Puppet & Chef 等,称之为 Basebox), 然后驱动 Puppet/Chef/Shell 来在虚拟机里搭建环境。这里所使用的 Puppet/Chef 代码可以跟生产环境所使用的代码复用,在生产环境是不用这个东西的。@huacnlee
这里实际搭建环境的工作还是由 Puppet/Chef 来完成,属于偏运维的知识,学学无妨。
@Peter Basebox 的系统可以自己构建时任意选择,也可以拿社区提供的来用: http://www.vagrantbox.es/ 你看到的 Ubuntu 10.04 应该是官方文档的范例,实际具体支持的系统可以看这里: https://github.com/mitchellh/vagrant/tree/1-0-stable/lib/vagrant/guest
如果不是资源实在紧张,虚拟机可以避免维护者去趟"抹平若干系统不一致"这趟混水。缺点就是要下载的东西实在有点多,照顾入门新手的话可能人家很快就没耐性了。
配置 passenger+nginx+rails+ubuntu 已经花了很久的时间也没成功,社区的 wiki 照着重新装了几次 nginx 了,还是会 forbidden,怎么破@huacnlee
#96 楼 @jialezhang forbidden 是目录权限的问题,让 nginx, rails, 和 源代码的目录都是同一个用户(非 root 用户)
如果集合社区的开源力量,大家一起来制作 centos 和 ubuntu 的 vm 镜像呢? 可以根据需要定制出很多不同的版本对应不同的需求,把 ruby 环境,rails 环境,部署环境都配置好,这样可以和一些 vps 提供商合作比如 42 区,可以在一分钟内准备好所有的环境,开发人员直接部署应用就可以了。
我不觉得 PHP 部署和 Rails 部署有啥区别。
XAMPP
是 Apache+mod_php 的方式,对应到 Rails 是 Apache+Passenger,发行版有打包 Passenger 的话,这个一点问题都没有的,不比 php 麻烦。
我觉得选择 nginx+passenger 这个方式就不太靠谱了,nginx 就一反向代理,而且模块都要静态链接进去的,所以用的模块越少越好。典型配置就是,动态内容只通过 HTTP/SCGI/uWSGI 之类的协议反向代理。
请问 Python 有没有一站式 deploy 环境?我觉得 PHP 总体来说,部署比 Rails 简单,最有可比性和参照性的,应该是 Python 的一站式部署软件。
@bhuztez 这篇文章主要指的是傻瓜式开发环境部署,这方面 PHP 实在方便太多,WAMP,XAMPP,PHPNow 之类的傻瓜安装包,5 分钟就能搭个 PHP 环境出来,其实其中 4 分钟花在下载上了。 这种傻瓜包对上线环境来说没什么用,但对入门的新手来说可以先跳过既枯燥又摸不着头脑的环境搭建,直接搞起,在学习的初期保持学习热情还是很重要的。
@huacnlee @fsword @..... 刚在新建 ec2 的时候 又发现了这个 turnkey 官网 url: http://www.turnkeylinux.org/rails
chef,理论上配好 ssh key 后,以后都在本地跑 cookbook 和 recipe 就行了,实践过一次,最终配好了,但过程挺痛苦,感觉定制起来不是很舒服,cookbook 和 recipe 有点复杂
工作需要学习 Chef 和 Ruby,新建了个 QQ 群 (236092875),有兴趣的可以来看看,现在还空的,希望和共同爱好的人交流 (刚来到这个社区,如果对 QQ 群有抵制,请无视或删除,这里先道歉了)
windows 下有个类似 xampp 的叫 instant rails 吧。 或者使用 vagrant 吧,一个环境配置好,package 下,不用再麻烦配置了,还可以分享。