原文:http://www.weiguda.com/blog/41/
当我们设置服务器时, 不应该每次都使用ssh登录服务器, 再按照记忆一步一步的配置. 因为这样实在是太容易忘记某些步骤了.
服务器设置应当自动化, 并写成文档. 在django用户中, Ansible, SaltStack, Puppet和Chef是最流行的四款自动化部署工具. 这些工具似乎都需要长时间学习才能使用, 因为这些工具不是为一台服务器设置的, 而是针对多台服务器的. 以下是这些工具的基本功能:
- 远程通过apt-get或其他包管理系统安装软件包
- 远程运行命令
- 远程启动, 重启各项服务
- 记录远程运行的命令和其结果
- 创建或更新服务配置文件
- 为不同服务器载入不同的配置文件
- 部署和更新项目代码
比较表:
工具 | 优势 | 劣势 |
---|---|---|
SaltStack | 主要用push模式; 使用0mq传输快; 许多例子; 庞大的社区支持; 开源; 由Python写成 | 较复杂 |
Ansible | 主要用push模式; 可使用Fireball模式加速传输; 不需要远程进程运行; 使用YAML语言设置; 开源; 由Python写成 | 新项目, 例子较少, 没有官方WSGI和Django配置例子 |
Chef | 有许多例子; 庞大的社区支持; 开源 | 难学; 由ruby写成, 配置也是ruby语言; |
Puppet | 庞大的社区支持; 开源 | 较难学; 由ruby写成; 配置文件由自定义DSL设置 |
Fabric和Invoke则是专注于远程运行命令, 常可以和以上四个工具配合使用.
现在的趋势是更多的使用SaltStack或Ansible, 因为使用Python写成的, 所以更利于Python用户深入了解. 但需要注意的是, 这些趋势会变化, 如果想了解最新的趋势, 需要我们多关注相关的博客.