我应该如何设置从开发到生产的Plone工作流?
几年前我曾与Plone 2合作,但它的工作流和安全系统(更不用说新的主题引擎)似乎最适合当前的项目。从可用性的角度来看,Plone 4看起来要好得多,但由于其不强迫用户进行特定设置的驱动力,在如何最好地在面向公众的Ubuntu服务器上托管它的问题上,它有点像一个迷宫。我已经使用统一安装程序(在我应该如何设置从开发到生产的Plone工作流?,plone,web-deployment,Plone,Web Deployment,几年前我曾与Plone 2合作,但它的工作流和安全系统(更不用说新的主题引擎)似乎最适合当前的项目。从可用性的角度来看,Plone 4看起来要好得多,但由于其不强迫用户进行特定设置的驱动力,在如何最好地在面向公众的Ubuntu服务器上托管它的问题上,它有点像一个迷宫。我已经使用统一安装程序(在/home/Plone/Plone/zinstance中)安装了Plone,并一直在前台运行它进行开发,但我现在需要为使该网站成为现实做好准备 我想在project server上实现一个开发实例,我们可以
/home/Plone/Plone/zinstance
中)安装了Plone,并一直在前台运行它进行开发,但我现在需要为使该网站成为现实做好准备
我想在project server上实现一个开发实例,我们可以将其用于我们自己的定制(在签入开发实例之前,在我们的桌面上有额外的本地实例进行测试),然后是一个我们的客户可以在其上线前对其进行测试的站点,最后是一个上线的网站
特别是:
/home/plone/plone
中,而我们的所有其他(通常是PHP CMS)网站都是从/srv//www
托管的;然后,域的所有内容都将一次性备份。布局不同Plone实例的最佳方式是什么- 虚拟运行
- 从git/subversion签出构建配置
- 运行引导
- 耗尽
当前的最佳实践是用于定义完全可复制的部署 通常,您使用通过包含共享配置的
production.cfg
和development.cfg
配置来调整部署以满足任一环境的特定需求;您可以根据需要扩展此模型。例如,一个大型项目可能有一个staging.cfg
来首先将新特性部署到测试环境中
您是否在开发中使用ZEO完全取决于您的用例。大多数开发设置当然不需要它,但在包含异步工作者的大型部署中,您可能会发现在开发时需要ZEO服务器。同样,buildout将使切换开发环境以满足不断变化的需求变得更加容易,尤其是与管理安装中使用的各种守护进程相结合时
对于我管理的最大部署,我们使用subversion和git的组合,但这只是出于历史原因。这些都将被移动到一个git存储库中。最后,存储库将保存完整的构建,包括各种配置、development.cfg
、staging.cfg
和每台生产机器配置文件(生产集群中的每台服务器一个)。例如,对于3台机器的ZEO设置,应该是一个ZEO.cfg
和instances-1.cfg
和instances-2.cfg
。核心开发鸡蛋存储在src/
中的同一存储库中
开发只在每个功能和每个问题分支中进行。完成后,分支将合并到临时分支中,并更新和重新启动临时服务器。一旦客户在每个合并的分支机构上签字,并且计划好了推出,我们将批准的分支机构合并到主分支机构并标记发布。然后,生产群集计算机切换到该新标签并重新启动
我们还使用连续集成测试;main和staging分支每天至少进行一次测试,让我们能够尽早发现问题
所有守护进程都由专用的supervisord管理,该命令通过crontab条目(@reboot
)启动,而不是本机OSinit.d
结构。通过这种方式,我们可以完全使用buildout管理正在运行的守护进程。构建甚至生成logrotate配置和munin监控插件;根据需要将这些符号链接到操作系统位置
因为构建是完全独立的,所以在机器上的何处设置生产构建并不重要。一定要选择一致的东西,记录下来并坚持下去。确保您有足够的磁盘空间来满足守护程序的需要,否则就不用太担心了