免费超简单使用Vercel和SQLPub部署Typecho搭建个人博客(小白向)
前言
我想低成本搭建个人博客,在查找一番后选择了Typecho,因为它在体积小巧的同时,社区也很活跃,有不少的插件和主题,也有不少的教程。我参考了这篇文章进行部署。不过我在部署过程中使用了不同的服务,也遇到了一些问题。写一篇博客记录一下。欢迎参观我的博客:麟悟
云数据库
我使用SQLPub的免费MySQL云数据库服务(官网说最大36000次/小时的请求、同时30个连接和500M存储空间),对于我们这种非商用的用途来说很够了。当然也可以使用其他免费云数据库服务。但是要注意,根据官网描述,Typecho目前只支持以下数据库类型:MySQL、PostgreSQL和SQLite。
前往SQLPub官网,按喜好填写信息、电子邮箱和验证码。
获取到网站提供的数据库连接信息。
这里的“数据库密码”一定要记下来,它只会出现一次。
fork代码
我们要将typecho的代码fork到我们的仓库,并设置成private(保护自己隐私、防止数据库秘钥泄露)。但是直接在仓库的页面中fork后,会出现无法设置成private的问题。
因此,我们需要用间接的方法来实现。
首先我们先在Github的任意页面点击右上角的加号中的“Import repository”。
请按下方提示填写:
①填写https://github.com/typecho/typecho.git
②可以不填
③按喜好填写,会作为仓库的名称(请注意不要包含特殊字符)
④选择第二个的Private
填写完成后点击下方的绿色按钮“Begin import”,等待几分钟,刷新页面后显示成功就代表导入完成啦。
拉取代码到本地
现在我们要对我们刚刚创建的仓库进行修改,这里可以直接在Github的网页中进行修改,但是考虑到我们后续还要添加插件和主题,所以比较建议clone到本地再进行操作,这样比较方便。
这里我使用GitHub Desktop,下载安装登录完成后,按照下图循序点击。
点击刚刚你创建的仓库,并点击Clone。
这里请复制下面的“Local Path”,等下切换默认分支的时候需要用到
等待Clone完成(等待时间和当前网络情况有关,正常情况大约几十秒)。
切换默认分支
我们发现默认分支是dev
分支(即development
分支,通常指项目的核心开发分支),这里我们切换成master
分支 (稳定生产版本)会更好一些。
我们可以使用Git Bash来更改默认分支,首先在文件夹中打开刚刚提到的“Local Path”,在空白处右键,选择“Open Git Bash here”,会呼出命令行。
第一步,我们可以输入以下指令来查看目前的分支。我们可以看到目前确实处于dev
分支。
git branch -a
第二步,切换本地默认分支到master
。出现下图则代表切换成功了。
git checkout master
第三步,修改远程仓库默认分支。这里没有输出报错就代表成功了。
git remote set-head origin master
我制作了一张时序图来展示我们刚刚所做的流程。
这里我们再确认一下,在Github网页中,进入我们的项目,并且安装步骤来点击。
这里我们切换成master
分支,然后点击Update。
我们回到Github中的项目的主页这里看一下,如果默认的分支是master,就说明远程仓库的主分支切换成功了。
修改代码
使用你常用的代码编辑器,打开我们刚刚clone到本地的文件夹,这里我使用Visual Studio Code来演示。按图中步骤打开本地文件夹。
打开之后,按下面的步骤,在根目录下新建api
目录,在新目录目录下新建index.php
文件,并写入以下内容:
<?php
$file= __DIR__ . '/..'.$_SERVER["PHP_SELF"];
if(file_exists($file))
{
return false;
}
else
{
require_once __DIR__ . '/../index.php';
}
为了在Vercel中部署,我们需要在根目录创建vercel.json
文件,写入以下内容:
{
"functions": {
"api/index.php": {
"runtime": "[email protected]"
}
},
"routes": [
{ "src": "/(.*)", "dest": "/api/index.php" }
]
}
在根目录install.php
文件中搜索上传目录无法写入
字段(大约782至784行),将判断写入权限的部分注释(选中这三行后按下Ctrl+/
,这样程序就不会执行这段代码。
//将下面的三行代码注释
// if (!$writeable) {
// $errors[] = _t('上传目录无法写入, 请手动将安装目录下的 %s 目录的权限设置为可写然后继续升级', $uploadDir);
// }
在项目根目录下创建config.inc.php
文件,写入:
<?php
/**
* Typecho Blog Platform
*
* @copyright Copyright (c) 2008 Typecho team (http://www.typecho.org)
* @license GNU General Public License 2.0
* @version $Id$
*/
/** 开启https */
define('__TYPECHO_SECURE__',true);
/** 定义根目录 */
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));
/** 定义插件目录(相对路径) */
define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');
/** 定义模板目录(相对路径) */
define('__TYPECHO_THEME_DIR__', '/usr/themes');
/** 后台路径(相对路径) */
define('__TYPECHO_ADMIN_DIR__', '/admin/');
/** 设置包含路径 */
@set_include_path(get_include_path() . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . '/var' . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . __TYPECHO_PLUGIN_DIR__);
/** 载入API支持 */
require_once 'Typecho/Common.php';
/** 程序初始化 */
Typecho_Common::init();
/** 定义数据库参数 */
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
'host' => '数据库地址',
'user' => '数据库用户名',
'password' => '数据库密码',
'charset' => 'utf8mb4',
'port' => 数据库端口,
'database' => '数据库名',
'engine' => 'MyISAM',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);
复制完成后,在代码的最后有一些信息需要修改,根据SQLPub提供给我们的。请根据下方的图来填写,注意序号的对应。
Push到Github
刚刚我们的操作都是在本地进行修改,对于Github那边的代码没有影响。接下来我们要推送到远程仓库中。
在此之前,因为我们刚刚添加了config.inc.php
文件,而此文件在.gitignore
中(.gitignore
文件用于指定 Git 版本控制系统中需要忽略的文件和目录。.gitignore
中提到的文件不需要上传远程仓库,其中一个好处是可以避免敏感信息泄露,不过我们是私有仓库,所以不用担心这一点),所以我们需要把它删除或注释掉。具体操作如下图所示。
.gitignore
中还有其他的文件或文件夹,同样也可以注释掉,具体看你的需要。可以有需要时再修改。这里我将
usr/plugins/
和usr/themes/*
也注释掉了,它们分别是插件和主题的文件夹。
接下来将我们刚刚修改的内容提交到远程仓库中。在Github Desktop中,在①处说明一下你修改了什么,方便日后查看。然后点击下方的蓝色按钮Commit。
Commit成功之后在窗口右侧点击蓝色的Push Origin按钮。
部署
我们可以使用Vercel免费提供的部署服务。点击这里前往Vercel,建议使用Github登录。
注册登录完成后,我们新建新的项目,找到你的typecho(名称是自己起的)仓库,点击Import来导入。
这里的Project Name可以保持默认,或者起自己喜欢的。其他的保持默认。然后点击下方的Deploy按钮。
等待跳出下面这个页面(大约几十秒)后,就代表部署成功了。点击下方的继续按钮。
在这里我们复制Domains下面的网址(这是Vercel分配给你的二级域名),然后新建一个浏览器标签页,前往https://分配的二级域名/install.php
(分配的二级域名类似:https://***.vercel.app/
)来进行Typecho的安装。
这个二级域名只有境外网络才能访问,如果想让境内也可以被访问,可以购买(或者白嫖)一个域名,再免费托管到Cloudflare上,这样就可以让境内也可以访问到。
配置Typecho
在浏览器打开https://你的域名(或刚刚的二级域名)/install.php
后,会进入如下界面,点击蓝色按钮即可开始配置Typecho。
进来之后,我这里都是自动填好了的,全部保持默认即可。如果你的页面上有空的地方,除“数据库 SSL 证书”外,请对照着本文修改代码的最后来填写。点击蓝色按钮开始安装。
接下来四个格子:
①如果你刚刚没有申请新的域名,则保持默认,如果有,填上你的新的域名。比如我自己买了一个.fun
的域名,并且已经配置成功了,我这里就填https://***.****.fun/
(**
的部分每个人可能各不相同)。
②用户名会作为发帖人(你)的昵称
③登录密码,顾名思义
④邮件地址,可能会收到一些消息提醒,建议填写常用的
下一步,显示这个界面就代表Typecho的基础的配置完成啦。
后续
现在已经我们从零开始,部署好了一个基础的Typecho网站。Typecho有丰富的社区,我可以选择自己喜欢的主题。推荐一个Typecho的网站念念不忘必有回响小站,里面整理了一些主题和插件,我的主题就是在这里找到的。在写稿时,我的个人博客网站——麟悟使用的是PureSuck这个主题。Typecho支持用户们使用插件来美化自己的网站、添加功能等等,这些可以很容易在网上找到。
写博客的话,图片或许是必不可少的,我目前使用Typora+Github+Picgo的方案。(我在Typora中写作,通过Picgo插件自动将图片上传到Github上,我新建了一个私有仓库专门用来存放博客图片)有需要的话可以参考这篇博客:GitHub与PicGo搭建免费稳定图床并实现Typora内复制自动上传。
第一次写文,如果有不足之处,请多多包含!欢迎评论交流~
非常好網站使我的葉子旋轉。
很高兴对你有帮助!ヾ(≧∇≦*)ゝ