Wordpress 本地开发和部署的问题

Trouble with Wordpress local development and deployments

设置:

我正在使用 Amazon Web Services 的 Elastic Beanstalk 设置一个由 Wordpress 驱动的应用程序。所有开发都在 MAMP apache2/php5 服务器环境下本地完成,其中 GIT 存储库控制整个应用程序根目录。

部署工作流程:

在将任何代码更改(编辑、新插件等)提交到 repo 后,使用 AWS EB CLI 的 eb deploy 命令部署应用程序,该命令将最新版本推送到任何 运行 EC2 实例由 Elastic Beanstalk 管理。

我的问题:

有时代码更改在我的 development/production 环境之间并不完全同步,我不确定如何克服它。特别是在尝试安装和设置 W3 Total Cache 或 WP Super Cache 等插件时。

由于我的本地环境没有安装诸如 memcahced 服务器之类的东西,但我的生产环境有 (ElastiCache),所以我无法保存正确的设置文件并将其部署以用于我的生产环境。这些插件不允许我 select 所需的服务,因为它认为它们不可用...

似乎只有将 W3 Total Cache 直接安装到实时生产环境中才能让 W3 Total Cache 正常工作,这似乎是个坏主意。

鉴于以上:

我无法评论特定于 Elastic Beanstalk 的问题,但根据经验,我可以对您的问题陈述的第二部分提出建议:

您最好 运行 建立一个尽可能接近您的生产环境的开发环境。我建议您从 MAMP 转换为虚拟机环境,例如 VirtualBox。您可能需要查看 puphpet.com 以获得设置方面的帮助。它需要一些启动工作,但会为您提供与生产服务器相似或相同的环境。例如,您可以 运行 自己进行 memcached,这样您就可以实际使用 W3 Total Cache 对其进行测试。

关于你的第二个问题,在生产环境中安装一个插件而不事先测试它有明显的风险(但客户总是这样做)。我宁愿先测试。在某种程度上,这可能取决于站点是否出现停机或异常情况的严重程度。

我建议您在 Beanstalk 上创建另一个环境。 在您的案例中,它比 VM 简单、快速且更可靠,因为它还允许您测试部署过程。

我通常为每个网站准备 3 个环境。每个环境都在自己的分支上。如果您的配置在环境之间不同(例如 url 和数据库访问),只需将您的 wp-config 和其他配置文件存储到 S3 中(您可能不希望在您的 git 存储库中使用生产密码),并且通过 ebextensions,您可以将它们自动下载到您的网站。

我以这种方式为 16 个网站使用 AWS Beanstalk,其中一些是 wordpress 网站。所有都具有自动缩放功能,并且能够同时获得数千个用户。

请随时向我询问更多详情。