我是wordpress的新手,来自python/django世界,那里有相当成熟的开发工作流和站点部署标准,因此我试图找到一些关于如何管理部署的指导。
了解我正在尝试做的一些背景知识:我将接管一个托管在Digital Ocean上的电子商务wordpress部署。该站点是实时的,虽然从长远来看,我们可能会迁移到不同的平台,因此这是一个临时解决方案,能够对已安装的主题进行一些自定义,并轻松部署到digital ocean,同时保持(版本)控制。
我最初尝试将WP部署到heroku,并使用MySQL的端口Mhoofman\'s repo. 我遇到的问题是,WP只读扩展破坏了导入程序和缩略图之类的东西,而且它似乎不再真正处于开发阶段。否则,这将是我首选的解决方案。
我最近的一次尝试是Efeqdev\'s method 将wordpress设置为子模块。在OS X上的MAMP中服务静态文件遇到问题后,我终于让它工作了。
现在,我发现安装的插件存在以下问题:
Strict Standards: Redefining already defined constructor for class WXR_Parser_Regex in [...]/project-wordpress/wp-content/plugins/wordpress-importer/parsers.php on line 408
Strict Standards: Declaration of WP_Import::bump_request_timeout() should be compatible with WP_Importer::bump_request_timeout($val) in [...]/project-wordpress/wp-content/plugins/wordpress-importer/wordpress-importer.php on line 38
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at [...]/project-wordpress/wp-content/plugins/wordpress-importer/parsers.php:408) in [...]/project-wordpress/wp-content/plugins/ninja-forms/ninja-forms.php on line 638
Warning: Cannot modify header information - headers already sent by (output started at [...]/project-wordpress/wp-content/plugins/wordpress-importer/parsers.php:408) in [...]/project-wordpress/wordpress/wp-includes/option.php on line 750
Warning: Cannot modify header information - headers already sent by (output started at [...]/project-wordpress/wp-content/plugins/wordpress-importer/parsers.php:408) in [...]/project-wordpress/wordpress/wp-includes/option.php on line 751
当然,一旦我完成了所有工作并阅读了帖子上的评论,他们似乎已经开始使用
Bedrock. 我对使用Basick犹豫不决的是,Composer似乎会为我管理插件,并且可能会删除我对它们所做的任何定制。正如我所说,我对PHP/Wordpress不太熟悉,所以如果我在这方面错了,而且这似乎是一个更明智的选择,请务必让我知道。
似乎在WP的各个部分移动有很大的可能会发生故障。以标准方式将wp content子目录保存在git子模块中以及其他所有内容中是否更有意义?不完全确定如何处理uploads文件夹中的内容,将其保存在git中不是一个好主意,当上传新图像时,它会在服务器中进行修改,我们正在使用cloudflare进行媒体分发。
最合适的回答,由SO网友:Wyck 整理而成
我提交所有WordPress是因为我认为它是一个属于一个站点的大代码球,这意味着对核心WordPress文件、插件和主题的更新都是提交历史的一部分。
我不使用子模块或任何其他奇怪的嵌套修订设置。如果您有一个包含多个repo的复杂结构,我建议将它们分开,只使用composer或其他工具用文件而不是单独的应用程序历史更新主repo。
git忽略了哪些特定于WP的内容:
任何缓存或临时文件(例如objectcache/
, pgcache/
, etc)
/wp-content/uploads/
备份目录、日志、站点地图配置(wp-config.php
, .htaccess
, 任何缓存配置等)并非每个站点都是相同的,我有时会提交
wp-config.php
使用多环境代码,或者有时我会提交
/wp-content/uploads/
因为这很有道理。
还有一些插件和主题将媒体文件上传到其他位置,这很烦人,所以有时我会忽略文件类型。
一些固执己见的注释:
我不明白为什么人们不在回购协议中提交所有WP,当您的历史记录中有WP更改以进行更新时,您的责任要小得多(小心自动更新)。
花点时间做好设置并进行测试,有了一个好的工作流程,东西会运行得更顺畅,而不是以后试图更改它时会发生什么。
我采取的立场是承诺越多越好,因为回头寻找某样东西却发现它不存在是很糟糕的。但做你不想做的事也很糟糕所以保持简单reduces brain meets desk scenarios.
下面是一个示例。gitignore我从以下内容开始:https://gist.github.com/wycks/574052a64eee9307b06c