关于使用Typecho搭建博客 作者: morningp 时间: 2019-12-07 分类: 建站相关 本blog是使用Typecho的框架搭建而成,就来介绍一下建站的过程吧。 首先是由于黑五不少服务器商打折,所以趁着这段时间入了一台服务器,搭建起了这个blog,以前blog的由于种种原因关掉了,很多辛辛苦苦写的文章也没有及时保存,还是比较遗憾的。 ---------- 以前blog的架构是wordpress,使用dnspod解析,域名是从主机壳购入。 这次不意外的域名也是由主机壳购入,而解析采用了cloud flare,也套了一层CF的CDN,虽然大陆的解析是洛杉矶(后来才知道),但是据说这是CF的算法算出来的最快的速度,至于大陆线路那是只有企业版才有的待遇了,免费版就不去凑热闹了。下面进入正文 ---------- - CF的设置 首先是CF的设置,进入网站,创建账户,这个应该都会就不说了,然后创建向导会让你添加自己的site,这里只要域名申请好了就行,然后在域名提供商那里將DNS换成CF提供给你的两个就可以了。计划的话,我这里选择的是免费计划,当然如果你不差钱可以选择企业版,体会一把当爸爸的感觉。 然后添加DNS解析,CF一开始会贴心的帮你添加好不少解析,这里我是都删掉了,然后自己添加解析,注意的是每条记录后面都会有一朵云,点开是黄色显示Proxied,这里就是CF的CDN的开关了,觉得不需要点击一下就变灰色显示DNS Only。需要注意的是DNS解析设置都需要一定的生效时间,一般来说没有问题的话都是十几分钟就好,最长应该也不会超过一天时间。 接下来域名的详细设置,在DNS项里,建议打开DNSSEC,一般的域名提供商会有填写相关资料的地方, 如果没有(比如我使用的主机壳)也可以发工单解决。SSL/TLS项里,建议将SSL/TLS encryption mode设置为full,为全网https贡献自己的一份力量,下面的Edge Certificates子项中,將Always Use HTTPS打开,至于Minimum TLS Version这个,我建议选为默认的TLS1.0,因为TLS版本不但需要用户的浏览器支持,同时亦需要服务端的支持,如果版本设置过高非常容易出现兼容问题。CF一切设置完成之后,就可以进行服务器的设置了。 - 证书设置 这里证书其实有两种选择(当然都是免费的),一个是CF的证书,我没有使用这种方式,这里只是写出来,具体操作还请自行研究。下面详细介绍大名鼎鼎的 [Let’s Encrypt][1] 的使用方法: 实际上Let’s Encrypt的文档十分详细,访问 [这个页面][2] 选择你的操作系统和web服务端之后,它就会显示详细的操作步骤告诉你如何操作,不过这里还是有几点值得注意的地方: 第一点就是申请证书的方式,这里比较推荐让certbot自动编写配置文件,好处是不容易出错,我这里使用的是第二种方法:只申请证书而不修改配置,这样做的好处是配置起来更加灵活。 第二点就是申请证书时最好一次讲域名全部填写进去,这样renew的时候会一次性renew所有的证书,并且多域名通用一份证书。 第三点就是按照certbot官网上的写入crontab自动更新证书,虽然Let‘s Encrypt的有效时间是三个月,但是还是建议一个月一更新。 - 软件配置 首先服务器需要安装lamp或者lnmp环境,这里我使用的全部都是源里的包直接安装。 证书申请好了之后,就可以开始软件的配置了,这里我的网站服务端使用的是nginx,nginx的特点就是小巧和可配置性强,另外还有一款软件就是apache,apache的特点就是功能强大,配置简单。这里以nginx为例。 nginx的配置文件下有名为sites-enabled的文件夹,在这个文件夹下有一个default文件,首先备份default,然后讲server段落复制下来,写到上面,将里listen写为443,然后加上一句 `ssl on;` 启用ssl(很重要), ssl_certificate /etc/letsencrypt/live/your doamin/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your domain/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/your domain/fullchain.pem; 写入证书路径,由于typecho使用了php,所以需要將location ~ \.php$ 段的注释去掉,修改fastcgi_pass unix:的路径, 然后还要加入url重新的配置: if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } 最后加上几句保障网站安全性的配置,比如: ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; keepalive_timeout 70; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; add_header X-Xss-Protection 1; 这样就算完成了。执行 nginx -t 检查一下配置,没有问题就可以重启nginx服务了。虽然我是手写nginx配置,不过还是不建议手写配置,用certbot就好。 还有就是mysql的配置,因为发行版的关系我安装的是 [MairaDB][3],不过操作上大同小异,安装后需要使用语句 mysql_secure_installation 来初始化数据库,初始化向导会指导你完成设定密码等操作。如果设定完密码发现空密码仍然可以登录数据库的话,是因为MariaDB的版本问题:因为从5.5.7版本中mysql数据库中就开始引入plugin这项配置,用来进行用户密码验证,同时mariaDB安装的默认插件是'console'或'unix_socket',这个插件允许你在没有密码的情况下从控制台输入可以登录,禁用密码验证。需要在mysql数据库的user表中删除plugins项,进入数据库执行 use mysql; select user,password,plugins from user; update user set plugins='' where user='root'; 再次登录就可以输入密码了。 php安装后,需要启动fpm服务,并且安装php-xml扩展插件以支持tyoecho,当然php-mysql之类的插件也是必须的。 最后值得注意的是Linux上有没有安装其它冲突的软件,比如我的服务器到手之后商家就帮我安装好了apache2,卸载后才可以正常使用nginx。 - Typecho typecho的安装就不多赘述了,[官网][4] 已经写的很详细了,主要是插件部分,我使用了qining提供的Akismet反垃圾评论插件和Hanny大佬开发的Links友情链接插件(官网上的下载链接是华为网盘的链接,已经失效了,Hanny大佬的blog里可以找到百度网盘的链接)。 ---------- 主要的安装步骤就是这样,虽然说踩了不少坑,不过磕嗑绊绊也算是搭好了这个blog,希望不要和上一个blog一样荒废掉。 最后,如果这篇blog能帮到你,那就再好不过了。 [1]: https://letsencrypt.org/ [2]: https://certbot.eff.org/ [3]: https://zh.wikipedia.org/wiki/MariaDB [4]: http://typecho.org/ 标签: none