Typecho部署

本文最后更新于:2024年8月11日 晚上

部署

Hexo作为静态博客平台,无法随时随地撰写文章然后直接发布,因为上传机器(有远程SSH证书的)不一定随时在手边,而动态博客类型WordPress其精简版Typecho则可以直接现写现更新,也是很有趣的

另外,基于Php的Typecho拥有更强的文章加密性能

部署Mysql

我猜测你肯定不想使用SQLite来部署它,虽然是可行的,但是不建议这么做

使用指令直接拉取docker镜像,其实过程跟我们第一次部署Nginx差不多

1
2
3
4
5
6
7
8
9
10
11
>docker pull mysql:5.7
...
>mkdir mysql
...
>docker run --name mysql -d -e MYSQL_ROOT_PASSWORD=123123 mysql:5.7
...
>docker cp mysql:/etc/my.cnf ./
...
>docker cp mysql:/etc/my.cnf.d
...
>docker stop mysql && docker rm mysql

注意:上面执行复制.cnf文件有可能会找不到,建议进入容器找/etc/mysql里面会有.cnf文件,然后使用新路径,然后直接把mysql文件复制出来再挂载进去也不是不行

首先是拉起镜像,复制默认的配置文件到宿主机,然后再把这些配置文件挂载进去

1
2
3
4
5
6
7
8
9
10
# 假设你得服务器NGINX所在的DOCKER网络为nginx
>docker run --name mysql -d --netword nginx -e MYSQL_ROOT_PASSWORD=PASSWORD \
-v $PWD/my.cnf:/etc/my.cnf -v $PWD/my.cnf.d:/etc/my.cnf.d \
--restart unless-stopped mysql:5.7
...
>docker exec -it mysql /bin/bash
...
>>mysql -uroot -p
ENTER YOUR PASSWORD
...

记得修改把PASSWORD修改成你的MYSQL的管理员密码(但是我猜测这个修改没有任何用处)

到最后一步理所应当的你应该能登录成功,但是我遇到了问题,也许在MYSQL DOCKER初始化过程中重置了ROOT密码,因此我们现在需要修改ROOT密码,往下看吧

1
2
3
4
5
6
7
8
9
10
11
12
# > 表示在宿主机中 >> 表示在容器中
>nano my.cnf
# 在里面写入 skip-grant-tables 然后保存,这个是跳过权限验证的设置
>docker restart mysql
...
>docker exec -it mysql /bin/bash
>>mysql -uroot -p
ENTER YOUR PASSWORD
...
# 直接回车即可,然后重置ROOT的密码
>>root| SET PASSWORD FOR 'root'@'localhost'='YOUR_ROOT_PASSWORD';

这个时候你应当修改好了密码,如果还不行或者上述代码有问题,可以去搜搜看,类似教程很多

Typecho部署

我们不希望直接使用root权限给typecho使用,这可能有安全隐患,这么做:

1
2
3
4
5
6
7
8
9
10
11
12
13
>docker exec -it mysql /bin/bash
>>mysql -uroot -p
ENTER YOUR PASSWORD
...
>>root| CREATE USER 'typora'@'%' IDENTIFIED BY 'YOUR_PASSWORD';
>>root| CREATE DATABASE typora;
...
>>root| USE typora;
..done..
>>root| GRANT ALL PRIVILEGES ON typora.* TO 'typora'@'%' IDENTIFIED By ’YOUR_PASSWORD';
..done..
>>root| FLUSH PRIVILEGES;
..done..

这样子我们就创建了一个typora的管理员账号,%表示不限制登录地点,意味着你在外网也可以通过地址去登录这个数据库,如果你觉得危险,也可以设置成localhost,这样只能在服务器内部登录,但是我不确定在容器内是否奏效,因为local在宿主机和容器内的范围也许有所差别。

然后拉起Typora

1
2
3
>docker pull xihefeng/typecho
>mkdir themes
>docker run --name typecho -d --network nginx -v xihefeng/typecho

这样你的typecho就部署好了,注意,现在还是内网环境,我们需要配置NGINX来反代理,而且typecho的配置相对麻烦一点,否则会造成无法访问的情况,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>docker network inspect nginx
...查找typecho分配到的IP,假设是192.168.22.33...

>nano nginx.conf
>>>
server {
listen 80;
listen 443 ssl;
server_name your.domain.com;
location / {
proxy_pass http://192.168.22.33;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

这样直接访问网址就可以进入Typecho配置页了(还没结束?没想到吧!)

Typecho配置

实际上在配置页很多东西都写得很清楚,我没有留下截图,在MYSQL地址哪个地方,请填写MYSQL容器在网桥上拿到的IP地址,数据库管理员就填写之前建立的typora那个就可以了,剩余的设置有详细的说明

如果想更换主题的话,首先得知道容器内的主题文件夹在哪,一般情况下,是通用的,我的在/var/www/html/usr/themes/里,里面已经存在一个default默认主题

如果你找不到的话,可以尝试使用指令find / -name default来帮助寻找

找到后,我们强烈建议你使用ln -s [源目录] [新目录]来创建一个软连接,比如ln -s /var/www/html/usr/themes/defaultthemes /在根目录下创建一个软连接themes方便主题文件的复制


Typecho部署
https://qlozin.top/2023/01/30/Typecho部署/
作者
QLozin
发布于
2023年1月31日
更新于
2024年8月11日
许可协议