Typecho 博客搭建
Sasiyar
·
·
个人记录
貌似代码块里面出现了美元符号就会挂掉,建议到我的博客体验。
本文讲述如何搭建 \text{Typecho} 博客,以及安装完成之后的一些小问题,顺便推销我的网站。
\text{Typecho} 简介
官网
里面讲的非常清楚。
搭建博客
虚拟主机 / 服务器的选择
需要注意的是如果选择大陆的服务器,则需要备案,并且在\color{red}{\text{网页底端加上备案号}},否则不用备案。这里我介绍的是使用不用备案的服务器,推荐服务商如下。
Vultr
首充 10 可以免费赠送 50,但是注意赠送的钱有效期只有 1 个月,如果想要更高的赠送金额的话,可以找已注册用户来邀请。
速度的话,总体来说,白天猛如虎,晚上卡到吐,实测新加坡,洛杉矶,硅谷的速度稍微快一些。如果下面的两家没有活动的话,推荐使用 Vultr。
由于按小时计费,所以可以在上面做各种实验。
阿里云
便宜一点的如轻量应用服务器香港节点(24 /月),但是听说不是直连大陆,所以速度会很慢。
腾讯云
腾讯云的香港节点服务器直连大陆,速度较快,但是最好等到有活动的时候,价格较低。
环境的搭建
对于新手,我推荐使用宝塔界面,具体安装方法,以前的[日报](https://www.luogu.com.cn/blog/AC-WA-RE-TLE-MLE/rang-ni-di-hexo-bo-ke-zhi-chi-yuan-cheng-bian-ji)已经有讲解了。
之后选择的软件的话,对于 $\text{CentOS}$ 可以用 $\text{Nginx}+\text{MySQL5.6.44}+\text{php7.2}$,对于 $\text{Windows}$,把 $\text{Nginx}$ 换成 $\text{IIS10.0}$,否则可能会出现博客主页点击无效的情况。
除 $\text{NginX}$ 的其他软件,不同版本之间的差距可能会很大,尽量不要改版本,$\text{Nginx}$ 的话,应该问题不大(反正我没有遇到过)。
宝塔面板(来源官网)

## 创建网站
我是用的 $\text{Typecho}$ 版本是 $1.1$ 正式版,测试环境为 $\text{Windows Servr(2016)+BTPanel 6.5.0+IIS(10.0)+MySQL 5.6.44+PHP 7.2}$,$\text{CentOS 7}$ 下类似。
### 新建网站

涂黑的三个地方默认是一样的,其中域名是网站的域名,备注是宝塔界面的备注,根目录是网站文件的存储位置,然后 $\text{FTP}$ 根据需要创建,数据库可以现在创建,也可以稍后创建。
刚刚创建好的网站里面有一些文件,$\color{red}{\text{只有 404.html 和 index.html 可以删除}}$,其他的是配置文件,删除可能导致网站无法访问(有人做过实验)。
如果域名解析没有问题的话,此时**访问页面**就可以看到

### 上传文件
下载下来的 $\text{Typecho}$ 应该是叫做 `1.1-17.10.30-release.tar.gz`,然后将文件在本机**解压**,**重新压缩为 $\text{zip}$ 格式**,之后上传到服务器的网站目录下面,并使用宝塔的解压功能解压,此处注意直接上传解压后的文件会导致速度慢。
将 $\text{build}$ 文件夹里面的内容放在网站根目录下面,同样保证网站配置文件不变。
### 新建数据库
宝塔界面的左边有一个板块叫做数据库,点进去过后添加一个数据库,就会有如下的界面。

数据库名和用户名自己填写就是了,也可以随机一个什么的。
密码的话宝塔默认随机了一个(图片里面我删除了,所以看不到),建议使用随机的密码,因为安全性高一点,反正这东西也不用去背诵。
### 配置网站
新建完成数据库后可以直接访问网站,此时会有以下界面

点击那个按钮,

依次解释一下,
- 数据库适配器,数据库地址,数据库端口:正常情况下不用动。
- 数据库用户名,数据库密码,数据库名:看刚才新建的数据库的信息。
- 数据库前缀:表示在数据库里面存储数据时候的名字的前缀,如果这个数据库只建一个博客的话,不用管它。
- ~~网站地址:网站地址...~~
- 用户名,登录密码:登录 $\text{Typecho}$ 的后台的用户名密码。
- 邮件地址:作为 $\text{admin}$ 账户的邮箱。
配置完成后

此时会在网站的根目录下生成一个名叫 `config.inc.php` 的文件,如果想要重置博客的话,可以删除这个文件,再访问一次网站,就会是一开始安装博客的那一个界面,而且如果数据的数据库已经存在的话,可以选择使用现有的数据库,而不是新建一个数据库。
接下来访问网站,就会有一个简洁的界面

然后在网址的后面加上 `/admin` 就可以访问后台。
## 写博客
进入后台点击上面的管理,然后点击新增(下图中管理文章的右边),最后发布文章即可,注意如果需要给文章加密的话,看下下图的右边可以选择密码保护,输入密码即可。


# 网站优化
## `html` 标签
$\text{Typecho}$ 写博客的话,有一些 $\text{html}$ 标签是不允许的,此时需要修改 $\text{Typecho}$ 的配置文件,目录为 `/var/HyperDown.php`,定位到 $17$ 行,发现后面有一个字符串,可以在这里修改,比如我要增加一个 $\text{font}$ 标签,就修改为
```php
'font|kbd|b|i|strong|em|sup|sub|br|code|del|a|hr|small';
```
## 文章加密显示标题
$\text{Typecho}$ 的加密默认会使得文章的标题也被加密,如果不需要加密标题的话,可以找到文件 `var/Widget/Abstract/Contents.php`,然后定位到 $744$ 行,注释掉即可。
## 修改主题
首先找一款自己喜欢的主题,然后按照主题提供者的要求放在 `usr/themes` 下面,之后进入后台,鼠标移动到左上角控制台,下拉列表中选择外观。此时如果放置位置没有问题的话,就可以在下面看到自己的主题,启用即可,旁边还可以设置外观。
如果对主题不太满意,可以直接修改主题的源文件,甚至修改 $\text{Typecho}$ 的源文件。
## 修改插件
和修改主题的步骤差不多,不说了。
## 添加自定义页面
后台鼠标移动到管理,下面有独立页面,新建一个即可。
## 添加自定义模板(标签云为例)
最后一块貌似渲染有问题,因为`php` 里面的 $ 符号用的多,推荐到我的[博客](https://oi.chitongz.cn/archives/30/)看。
首先在主题文件夹下把 `page.php` 复制粘贴一份,命名为 `tags.php`,将里面的 `<?php $this->content(); ?>` 修改为
```php
<?php $this->widget('Widget_Metas_Tag_Cloud', 'ignoreZeroCount=1&limit=30')->to($tags); ?>
<ul class="tags-list">
<?php while($tags->next()): ?>
<li><a style="color: rgb(<?php echo(rand(0, 255)); ?>, <?php echo(rand(0,255)); ?>, <?php echo(rand(0, 255)); ?>)" href="<?php $tags->permalink(); ?>" title='<?php $tags->name(); ?>'><?php $tags->name(); ?></a></li>
<?php endwhile; ?>
</ul>
```
来源 <http://docs.typecho.org/themes/tag-cloud>,可能需要稍作修改
然后在开头加上
```php
<?php
/**
* 标签云
*
* @package custom
*/?>
```
最后就可以看到自定义模板了。
## $LaTeX
我使用的是 \text{MathJax3},可以在 header.php 里面的 header 标签里面加上
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
},
svg: {
fontCache: 'global'
}
};
</script>
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js">
</script>
可以按需要修改。
这样做好处是简单,但是不好的就是没法和 pjax 兼容,反正我不会。
网站维护
谈一谈我遇到过的问题。
无法访问带中文的网址
是不是使用的 \text{IIS},如果是的话,给 \text{IIS} 安装 \text{url rewrite} 功能,然后 import rules ,填写规则的代码为
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]
</IfModule>
最后在 \text{Typecho} 的后台,设置里面的永久链接设置里面开启地址重写功能。
数据库连接失败
多半是数据的用户名,数据库名,密码当中的一个错了。
添加 SSL
严格来说并不算是 \text{Typecho},这个东西可以用腾讯云的免费证书,是 TrustAsia 发行的,下载下来,把内容填入宝塔界面相关地方就可以了,相比 Let's Encrypt,这个的免费时间长一点,有一年。