database.yml & capistrano2

10月 4, 2008 · Posted in Promgramming 

实验室的服务器配置好了apache2+passenger2的环境,就很开心试了capistrano2远程部署。

要使用capistrano2来作远程的deploy当然要把服务器配置好ssh,web server等,我的做法是创建一个deploy的user专门来干这档事,并把deploy加入到www-data组以便在服务器的空间有权限写入。不过在试用过程中发现如果是使用scm的话capistrano2是不管你database.yml(因为不可能把production server的db账户信息纳入版本控制),想想可能放在share目录下应该就可以解决(share目录专门放些不变的东西,如log,如一些如用户资源等静态数据),但具体怎样还是看看别人怎么做的,搜索一下看到这个POST。这位老兄加了个两个钩子,在setup和update_code时把事先准备的模板放到share目录中。但其实还有些问题,数据库的user并不一定就是server的user,最好还是在config/deploy.rb加上两个字段如db_user和db_passwd来设数据库。

看了下Capistrano2的文档,发现真是个好东东,简单又方便。

Comments

4 Responses to “database.yml & capistrano2”

  1. sishen on 10月 4th, 2008 09:13

    production mode下面的database一般是统一的,所以只要分发database.yml到各台服务器的shared/目录就可以了。

    如果需要更精细的配置,就需要用系统管理领域的一些专业分发软件,如cagent。不过,大部分时候我们不需要这么麻烦。

  2. chen kai on 10月 4th, 2008 10:45

    @sishen

    噢噢,原来是这样。

    觉得Capistano设计得比较巧的地方就是把部署上去的东西作记录和分类并用了一些task钩子让你处理多种情况。

  3. g.zhen.ning on 10月 7th, 2008 00:37

    据我所知,就是这做法:
    在shared目录下添加config/database.yml然后就添加个软联接在deploy任务到deply.rb里。然后就是after ‘deploy:update_code’, ‘自定义的任务名’了。

  4. chen kai on 10月 7th, 2008 00:57

    @ning

    恩,不过post里那个link中的任务做得更灵活点,自动操作。这样节省的是每次在不同项目中的部署问题。

Leave a Reply




*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word