Typecho 博客搭建

· · 个人记录

貌似代码块里面出现了美元符号就会挂掉,建议到我的博客体验。

本文讲述如何搭建 \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}$ 的话,应该问题不大(反正我没有遇到过)。 宝塔面板(来源官网) ![](https://www.bt.cn/Public/images/linux_pc_free.png) ## 创建网站 我是用的 $\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}$ 下类似。 ### 新建网站 ![](https://chitongz.gitee.io/typecho-pics/1.png) 涂黑的三个地方默认是一样的,其中域名是网站的域名,备注是宝塔界面的备注,根目录是网站文件的存储位置,然后 $\text{FTP}$ 根据需要创建,数据库可以现在创建,也可以稍后创建。 刚刚创建好的网站里面有一些文件,$\color{red}{\text{只有 404.html 和 index.html 可以删除}}$,其他的是配置文件,删除可能导致网站无法访问(有人做过实验)。 如果域名解析没有问题的话,此时**访问页面**就可以看到 ![](https://chitongz.gitee.io/typecho-pics/2.png) ### 上传文件 下载下来的 $\text{Typecho}$ 应该是叫做 `1.1-17.10.30-release.tar.gz`,然后将文件在本机**解压**,**重新压缩为 $\text{zip}$ 格式**,之后上传到服务器的网站目录下面,并使用宝塔的解压功能解压,此处注意直接上传解压后的文件会导致速度慢。 将 $\text{build}$ 文件夹里面的内容放在网站根目录下面,同样保证网站配置文件不变。 ### 新建数据库 宝塔界面的左边有一个板块叫做数据库,点进去过后添加一个数据库,就会有如下的界面。 ![](https://chitongz.gitee.io/typecho-pics/3.png) 数据库名和用户名自己填写就是了,也可以随机一个什么的。 密码的话宝塔默认随机了一个(图片里面我删除了,所以看不到),建议使用随机的密码,因为安全性高一点,反正这东西也不用去背诵。 ### 配置网站 新建完成数据库后可以直接访问网站,此时会有以下界面 ![](https://chitongz.gitee.io/typecho-pics/4.png) 点击那个按钮, ![](https://chitongz.gitee.io/typecho-pics/5.png) 依次解释一下, - 数据库适配器,数据库地址,数据库端口:正常情况下不用动。 - 数据库用户名,数据库密码,数据库名:看刚才新建的数据库的信息。 - 数据库前缀:表示在数据库里面存储数据时候的名字的前缀,如果这个数据库只建一个博客的话,不用管它。 - ~~网站地址:网站地址...~~ - 用户名,登录密码:登录 $\text{Typecho}$ 的后台的用户名密码。 - 邮件地址:作为 $\text{admin}$ 账户的邮箱。 配置完成后 ![](https://chitongz.gitee.io/typecho-pics/6.png) 此时会在网站的根目录下生成一个名叫 `config.inc.php` 的文件,如果想要重置博客的话,可以删除这个文件,再访问一次网站,就会是一开始安装博客的那一个界面,而且如果数据的数据库已经存在的话,可以选择使用现有的数据库,而不是新建一个数据库。 接下来访问网站,就会有一个简洁的界面 ![](https://chitongz.gitee.io/typecho-pics/7.png) 然后在网址的后面加上 `/admin` 就可以访问后台。 ## 写博客 进入后台点击上面的管理,然后点击新增(下图中管理文章的右边),最后发布文章即可,注意如果需要给文章加密的话,看下下图的右边可以选择密码保护,输入密码即可。 ![](https://chitongz.gitee.io/typecho-pics/8.png) ![](https://chitongz.gitee.io/typecho-pics/9.png) # 网站优化 ## `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,这个的免费时间长一点,有一年。