heroku使用教程——真正的零成本搭建PHP动态博客


前言

众所周知,大部分的静态网页托管服务(例如vercel、netlify)都是完全免费的,我的mc官网正是托管在vercel上的。但是有没有完全免费的动态网页托管服务(也就是虚拟主机)呢?本链接便介绍了这样一种方法。但我在根据本教程搭建时,发现了一些问题:

1.heroku在我使用时已经无法通过github导入项目,必须通过自己的heroku git搭建,本文将说明解决方案。
2.搭建时必须使用linux系统,多了一步注册GoormIDE的操作,本文将全程使用windows操作。
3.只使用一个插件时是不需要信用卡验证的,本文将消除这一误解。

话不多说,现在开始吧。

注意:本文在某些地方将会参考前文的部分内容,请不要在意。

开始搭建

需要的准备

  • heroku账户,无需信用卡验证
  • 运行windows系统的电脑
  • 初中英语水平或翻译软件
  • 脑子

注册heroku

点击链接以注册,需要邮箱接收验证码。

注册成功后,点击New→Create APP创建项目。随便填个名称然后点击Create APP(名称不重要,反正都是套自己的域名用)。

在Settings内将Buildpacks设置为PHP:

在Resources内添加Postgres组件(选择Hobby Dev否则会提示验证信用卡):

部署Typecho

点击此处下载Heroku-Git并安装(一路下一步就行,没什么要设置的),然后打开cmd进行以下操作:

什么?你连git都没有安装?那么请点击此处安装后继续:

heroku login #登录
git clone https://github.com/aaro-n/heroku-typecho.git #克隆仓库
cd heroku-typecho #进入仓库
del .git/ #清空.git,也可以进资源管理器自己清空
git init #git初始化
git add .
heroku git:remote -a 项目名称
git remote add upstream https://github.com/typecho/typecho.git #添加官方仓库
git fetch upstream
git checkout master
git merge upstream/master --allow-unrelated-histories #强制合并,windows系统并不会弹窗而是直接合并
del .gitignore #删除.gitignore文件,一定要执行本操作,否则有些文件无法推送
git push heroku master #推送ostg

推送完就可以直接用了吗?显然是不可能的,还需要获取数据库地址。回到heroku,在Resources中点击Postgres组件,在此处记录数据库信息:

回到heroku点击Open app,然后在网页内自行安装(如果没有弹出安装页面,假设打开的url链接是abc.com,那么请将abc.com改为abc.com/install.php以开始安装)

安装完毕后刷新,如果一切正常,那么您就拥有了一个属于您的个人博客,而且是理论永久免费的。

使用自定义域名

自带的域名太难看?没关系,heroku支持自定义域名,而且。。。并不是免费的,需要验证信用卡(小声bb)

不过没关系,您一样可以通过cloudflare workers反代您的网站以达到自定义域名的效果,但是往往只能实现浏览,想要登录后台还得通过heroku的链接登录。

搭建反代:点我查看
自定义域名:点我查看

后记

这个是我搭建好的成品,目前由于主题并不支持新版而暂时无法完全展示,只能使用默认主题作为demo。

特别感谢www.itansuo.info对本文提供的参考教程。

2022.5.12

加更:

heroku提供的数据库会出现重置凭据的情况,但是实测只有在重启应用时会出现,一般无需理会。

但有时候使用postgresql可能会出现部分插件或主题不兼容的情况,那该怎么办呢?通过使用云mysql数据库可以一定程度上解决这个问题。

在一番搜索后,我发现了一个比较好用的免费数据库,虽然容量只有5m。但是本站即使持续运营了两年,数据库也只有不到500k的大小,因此是完全够用的。

本教程只适合穷且喜欢折腾的用户,如果手上有点闲钱,尽量还是购买虚拟主机使用最为稳妥。当然也要注意备份,否则便会出现和本站一样数据莫名其妙丢失且无法找回的情况。

祝白嫖顺利。

2022.6.6

声明:西行妖|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - heroku使用教程——真正的零成本搭建PHP动态博客


不必怀念我,等我走后,你们就是我