使用 SSL 证书在 Heroku 上托管 WordPress 的完整指南
本地环境构建时出现数据库错误 #33
我最近把所有自托管的WordPress网站都迁移到了Heroku,现在每月花费 0 美元,每年节省了超过 300 美元的托管和 SSL 证书费用!我整理了这份指南,希望能帮助所有管理自托管 WordPress 网站并希望实现零成本(除了每年的域名费用)的人。特别感谢 Philipp Heuer,是他让这一切成为可能。
免责声明:您的数据库大小限制为 5MB,这对于大多数用户来说绰绰有余,除非您计划发布超过 1000 篇文章,或者使用插件在每次发布新文章时都会生成新的数据行(这种情况并不常见)。需要注意的是:图片、代码等数据不会存储在数据库中,它们只是被引用。稍后我会在本指南中分享一个用于管理数据库大小的工具。此外,您无法通过 WordPress 管理后台更新 WordPress 版本或添加新的插件/主题。您需要更新 Composer.json 文件中的 WordPress 版本号,并在推送到 Heroku 之前手动将主题/插件添加到本地 WordPress 代码库中。这听起来可能比较耗时,但每次更新 WordPress 版本、主题或插件时,只需额外花费 1-2 分钟即可。
步骤
1)为您的网站注册一个 Heroku 账号。选择“PHP”作为主要开发语言。我们需要您提供信用卡信息才能安装 WordPress。添加信用卡信息还能将我们的免费套餐从 500 小时 dyno 测试时间提升至 1000 小时。如果您想了解更多关于 dyno 测试时间的信息,我强烈推荐您阅读 Andrey Azimov 的博客文章。我的 WordPress 安装也需要添加信用卡信息才能完成。我的网站一直都很活跃,但从未被收取过任何费用。您可以在这里查看您的使用情况。此外,除非您预计网站流量不大,否则请尽量为每个网站创建一个单独的 Heroku 账号。
2)点击Philipp Heuer 代码库中的“部署到 Heroku”按钮。我测试过几种不同的 Heroku/WordPress 安装方案,这是目前为止最好的。
3) 从 Heroku控制面板访问您的新应用并打开设置。将 Heroku git URL 克隆到您的计算机上。
4) 将wordpress-heroku克隆到您的计算机上。然后,将 wordpress-heroku 的内容移动到您的空应用仓库中。进入您的应用目录,执行 git add、commit 和 push 命令。现在您可以从计算机中删除空的 wordpress-heroku 文件夹。
5)注册一个 Cloudflare 账户。Cloudflare 会提供更新域名服务器的相应说明。例如:登录 GoDaddy,编辑 DNS 设置,更新域名服务器。
示例域名服务器:
NS aldo.ns.cloudflare.com
NS josephine.ns.cloudflare.com
您现在可以检查 Cloudflare,看看您的域名服务器是否指向 Cloudflare。我建议您至少等待 5-10 分钟,以便更新。
6) 此步骤为可选步骤,但强烈建议执行。点击 Cloudflare 上的“页面规则”选项卡,然后输入以下三条页面规则:
-
*YOURDOMAIN.com/*
始终使用 HTTPS -
www.YOURDOMAIN.com/*
转发 URL - 301 永久重定向
https://YOURDOMAIN.com/$1 -
YOURDOMAIN.com/*
• 自动压缩 HTML、CSS、JS
• 启用 Rocket Loader
• 浏览器缓存 TTL - 1 个月
7) 打开一个新标签页,再次访问您的 Heroku 应用设置。点击“添加域名”,输入您的域名(不带“www”或“https”)。复制 DNS 目标地址。前往您的 Cloudflare 控制面板,点击 DNS 选项卡。我们只需要以下两行信息。您可以根据需要删除其他行。
注意:您的 DNS 目标很可能与屏幕截图中提供的目标不同。
恭喜!您现在可以访问您的新WordPress网站了!
更新 WordPress 版本
您将通过 Composer.json 文件更新 WordPress。如果您的计算机上尚未安装 Composer,只需在终端运行`brew install composer` 命令
即可。打开仓库目录中的 Composer.json 文件,找到 `johnpbloch/wordpress`。将版本号更改为最新的 WordPress 版本号。 例如,将 `johnpbloch/wordpress: 4.9.2` 更改为 `johnpbloch/wordpress: 5.4`。
进阶技巧:注释掉所有你不会使用的插件。确保没有漏掉逗号,或者对象中最后一个键值对的末尾没有逗号!我个人不太喜欢 Wordfence 或 All in One SEO 插件。
完成后,在终端运行`composer update` 命令。别忘了推送你的更改。
添加/移除插件和主题
要修改插件/主题,请前往您的代码仓库 /web/app 目录。您会在这里找到 Theme 和 Plugin 文件夹。解压缩您的主题和插件,并将它们分别放入这两个文件夹中。完成相应的修改后,执行 git add、commit 和 push 命令以查看更改。
官方目录:WordPress主题和插件。
注意: mu-plugins 文件夹代表“必备插件”。这些插件会自动启用,并且会从您的插件控制面板中隐藏。
防止重定向循环/HTTPS问题
如果您无法登录后台或收到“不安全”错误提示,请不要担心,有一个快速解决方法!安装Cloudflare Flexible SSL并将 Cloudflare 中的 SSL/TLS 设置更新为“Flexible”。
高级操作:将仓库目录下的 config/application.php 文件中所有“http”替换为“https”。现在您可以移除该插件了。请务必使用“https”链接,否则您网站的连接将不安全。
管理数据库
我推荐使用Oracle 的MySQL Workbench来管理数据库。要获取数据库凭据,请访问 Heroku 上应用的控制面板,然后点击“JawsDB Maria”链接。在 MySQL Workbench 中进行任何更改后,请务必应用更改。
如果您不熟悉手动使用 SQL 查询优化数据库,我建议您使用WordPress 中的WP Optimize插件。该插件可以优化您的数据表,并帮助您减小数据库的大小。
上传图片
每次我们修改 WordPress 文件并推送代码时,都会覆盖上传文件夹。因此,我们在 WordPress 后台上传的所有图片都会被覆盖。当然,您可以手动将图片添加到电脑上的 web/app/uploads 文件夹,然后推送到 WordPress,并在文章中链接到这些图片……但这最终会变得非常繁琐。解决方案是使用 AWS S3 存储。
- 安装WP Offload Media Lite。
- 创建AWS账户。
- 请按照以下说明操作。请勿跳过任何步骤。步骤非常简短,但可以为您省去日后调试权限设置的诸多麻烦。
- 您可以将访问密钥存储在数据库中,稍后再更改此选项。
重要提示:最近在为客户调试此插件时,我发现上传图片的 URL 没有更新为 S3 存储桶的 URL。我推测该插件与我们 Heroku 配置中的最新版 WordPress 不兼容。为确保安全,请继续使用 WordPress 5.2,直到此问题解决。您可以在 Composer.json 文件中降级 WordPress 版本。
调试
如果遇到任何问题,请访问 YOURAPPNAME.herokuapp.com 而不是您的自定义域名。这样可以排除 Cloudflare 的影响,避免任何潜在的缓存或 SSL 问题。忽略您的 wp-config 文件,它对我们的配置几乎没有用处。如果您想添加 PHP 常量(例如WP_DEBUG ),请使用仓库中的 config/application.php 文件。此外,在 WordPress 中逐个禁用插件始终是一个明智的选择,但不要忘记那些在后台隐藏的 mu-plugins 插件。redis-cache/object-cache.php 文件经常会引发问题。在运行更新之前,请注释掉 composer.json 文件中所有与 redis-cache 相关的三行代码,如果它导致问题,也请将其从 mu-plugins 文件夹中删除。
阻止睡眠
Heroku 的免费套餐会在应用闲置 30 分钟后将其置于休眠状态。这将导致下一个访客需要额外等待几秒钟才能访问您的网站。为了避免这种情况,请在Cron-job.org上创建一个免费帐户,输入您的网站链接,并将定时任务设置为每 30 分钟执行一次。
剧终
希望我的指南对您有所帮助,如果您有任何疑问,请随时告诉我,我非常乐意为您解答🙂
文章来源:https://dev.to/aryaziai/complete-guide-to-hosting-wordpress-on-heroku-with-ssl-certification-4f2l

