2021 年更新
今天我将Ansible用于这个和其他 devops 任务。在此过程中,我尝试了 Chef、Puppet、Saltstack 和 Docker 图像,但我发现对于我来说,作为一个在较小项目中工作的独立开发人员,像 Ansible 这样的轻量级工具非常适合。
原始问题(从 2011 年开始)
我刚开始是一名独立的 Web 开发人员,最近我为一个相当简单的网站提供了一个报价,该报价比他们预期的要高很多,从而吓跑了一位客户。它基本上是宣传册软件,他们可以在 Wordpress.com 或 Google 网站等托管解决方案中自己完成。除了一个关键特性之外,这让我认为 Django 非常适合,并且可以激发一些适当的 Web 开发。
在查看我在粗略估计中列出的任务时,对我来说很明显,其中大部分时间都不是特定于该客户网站的内容。这让我想到我应该有一个脚本来自动化设置和部署新 Django 项目的过程。
仍然需要手动完成一些事情,例如:
设置一个新的 VPS(或者在大多数情况下,只需在现有 VPS 上使用虚拟主机)。
编辑 DNS 设置以将 clientsdomain.com 和 test.clientsdomain.com 指向新的 VPS。
设置 SSH 密钥
编辑配置文件。
然后该脚本将执行以下操作:
在新的 VPS 上安装一些需要的包
在新的 VPS 上安装默认的 iptables 防火墙
为 clientsdomain.com 和 test.clientsdomain.com 添加 nginx/apache 配置
为 VPS 上的生产和测试以及在我的本地计算机上的开发设置新的数据库。
创建一个新的 Django 项目并将其放在 Bitbucket 上。
为生产、测试和开发设置 settings.py 和 local_settings.py
为生产数据库和上传的文件目录设置异地备份例程。
启用一些默认应用:flatpages、admin
添加一些样板模板、几个样板平面和导航栏。
添加 960.gs CSS 框架
添加 jQuery
为搜索设置 djapian 或 Haystack(包括用于自动更新的 cron 作业)。
设置新的 Google 分析配置文件。
包括在生产、测试和开发之间复制数据库的可能性
设置 Pingdom 监控
过去我曾将Rake和Fabric用于一些类似(但不那么雄心勃勃)的东西,我认为 Fabric 可能也非常适合这项任务,但我仍然希望您的意见。还有其他我应该研究的工具吗?我听说过关于Puppet的好消息,但仅查看他们的网站(其中包含 Enterprise 一词)就让我觉得这对于单人操作来说可能是矫枉过正。