前言
一直想要搭一个博客其实很久了,用来记录自己玩过的一些东西,刚好这两天闲下来,选择了一个相对简单的博客程序typecho来搭建: typecho官网 。本文记录了一下搭建过程。
1. 准备工作
一台vps,配置不能太低,不然搭建typecho环境的时候容易死机。我这边选择了甲骨文春川的amd免费机,配置1c1g,这配置其实有点低,搭建的时候死了两次。 如果打算长期用的话,建议选个好点的vps。
2.部署环境
要安装博客系统,首先要安装相应的环境,这里官网的安装环境要求是:
PHP 7.2 以上
MySQL, PostgreSQL, SQLite 任意一种数据库支持,并在 PHP 中安装了相关扩展
CURL 扩展支持
mbstring 或 iconv 扩展支持
这里我选择用LNMP 一键安装包 安装所需的环境 。
具体安装过程参考 LNMP 安装步骤 。
由于LNMP一键脚本是编译安装,配置不好的小鸡安装完成要等很久,我这里就等了1个多小时 。 好处是编译安装所需的环境都是最新版,出问题很少,且LNMP内置了typecho等一些常用博客的规则,适合小白。
安装完成后需要添加虚拟主机,并开启 HTTPS,具体参考 LNMP 虚拟主机配置步骤 。
由于这里开启了 SSL,需要开启 301 重定向。
vim /usr/local/nginx/conf/vhost/域名.conf
在监听 80 端口的 server 项中增加:
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
如果出现 404 页面,需设置 php-pathinfo,把上述文件中的:
include enable-php.conf;
替换为:
include enable-php-pathinfo.conf;
最后重启 Nginx 服务:
/etc/init.d/nginx restart
接着访问域名,如果能够正常访问则表示安装成功。
完整的nginx配置应该是如下:
server
{
listen 80;
#listen [::]:80;
server_name blog.yourhostname.com ;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/blog.yourhostname.com;
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
include rewrite/typecho.conf;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php-pathinfo.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log off;
}
server
{
listen 443 ssl http2;
#listen [::]:443 ssl http2;
server_name blog.yourhostname.com ;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/blog.yourhostname.com;
ssl_certificate /root/certs/blog.yourhostname.com/cert.crt;
ssl_certificate_key /root/certs/blog.yourhostname.com/private.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
ssl_session_cache builtin:1000 shared:SSL:10m;
# openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;
include rewrite/typecho.conf;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php-pathinfo.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log off;
}
修改 MySQL 默认字符集
由于 MySQL 默认为 utf8
编码,此编码在 MySQL 中默认为 3 字节,不能显示 3 字节以上的字符,如 emoji 表情等,所以需要改成 utf8mb4
编码,该编码为 MySQL 特有编码。
编辑 MySQL 配置文件:
vim /etc/my.cnf
在其中子项里修改或增加:
[client]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[mysql]
default-character-set = utf8mb4
[mysqld_safe]
default-character-set = utf8mb4
重启 MySQL 服务:
/etc/init.d/mysql restart
3.安装typecho
lnmp默认设置的网站目录在 /home/wwwroot/域名
,依次执行:
cd /home/wwwroot/域名
wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip
unzip typecho.zip
rm -rf typecho.zip
接着访问域名,按照提示安装即可。
安全性
在 /home/wwwroot/域名
目录下,找到typecho的配置文件 config.inc.php
,找到:
define('__TYPECHO_ADMIN_DIR__', '/admin/');
把 /admin/ 这个参数中的 admin 字符串改为其它的即可,然后把同目录下的 admin 文件夹重命名为相同的。
全站开启 HTTPS
在 Typecho 配置文件config.inc.php
中追加:
define('__TYPECHO_SECURE__',true);
开启Gzip压缩加速网站
在 Typecho 目录下index.php
中首行添加:
ob_start('ob_gzhandler');
修改 phpmyadmin
默认目录
lnmp
默认安装的 phpmyadmin
目录位于 /home/wwwroot/default/phpmyadmin/
,通常情况下登录 http://your-vpsip/phpmyadmin/
即可进入数据库登录界面,为防止别有用心的人侵入你的数据库后台,你需要重新改个别人不容易猜到的名字:
cd /home/wwwroot/default
mv phpmyadmin helloworld
重启下 nginx
:
nginx -s reload
重新登录 http://your-vpsip/helloworld
即可以进入你的数据库后台。
4.其他配置
主题
至此,Typecho 博客系统基本已经搭好,可以正常使用了,但是自带的主题太丑,可以自己更换喜欢的主题,推荐一个 Typecho主题模板站 。
举个例子,我选择的是 JOE主题 ,将主题 下载 ,解压,重命名为JOE,上传到/home/wwwroot/域名/home/wwwroot/你的域名/usr/themes
下,刷新博客主页,进入后台,选择外观
选择JOE主题,点启用
刷新下博客主页,即完成了主题的替换,当然每个主题还有相应的一些外观设置项,这里就不赘述,自行研究。
插件
typecho还支持一些很有意思的插件,比如可以装 SmartSpam 用来过滤一些垃圾评论,还可以装 Mailer 用来收发邮件评论。
方法也很简单,下载对应插件,上传到/home/wwwroot/域名/home/wwwroot/你的域名/usr/themes/plugins
,进入后台-插件,启用对应的插件。
数据库密码修改
若修改了数据库密码,则 Typecho 也需要修改,在 Typecho 配置文件 config.inc.php
中,找到:
'password' => 'passwd'
把 passwd
这个参数改为修改后的数据库密码即可。
棒棒哒!