前言

前面用 Docker-Compose 部署了 WordPress ,用起来不顺手,于是来试试 Typecho

很多东西有之前的文档作为基础了,所以这次不详细展开了,主要记录 docker-compose.yml 文件和 nginx的配置文件 ,完整的过程可以参考:Docker-Compose 快速部署 WordPress

开始

1、创建目录

1
mkdir typecho && cd typecho && touch docker-compose.yml && mkdir volumes

2、修改 yml 文件

docker-compose.yml 的内容需要自己修改,尝试的话用下面默认的也行

(目前 php-fpm 我只找到了这个镜像的 php 默认用户是 www-data ,其它的大部分都是Daemon用户,即守护进程,那么在配置网站目录权限的时候还要给其它用户一个写的权限,要不安装的时候提示上传目录无法写入,下载第三方主题也要修改一下其它用户的写权限)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
version: '3.9'

networks:
typecho:

services:
mysql:
image: mysql:5.7
container_name: mysql
volumes:
- ./volumes/mysql:/var/lib/mysql
restart: always
environment:
# MySQL root账户密码
MYSQL_ROOT_PASSWORD: root
# MySQL 数据库名
MYSQL_DATABASE: typecho
# MySQL 新用户的用户名
MYSQL_USER: typecho
# MySQL 新用户的密码
MYSQL_PASSWORD: typecho
networks:
- typecho

php:
image: tsund/php:7.2.3-fpm
restart: always
networks:
- typecho
volumes:
- ./volumes/typecho:/var/www/html
environment:
- TZ=Asia/Shanghai
depends_on:
- mysql

nginx:
depends_on:
- php
image: nginx
container_name: nginx
volumes:
- ./volumes/typecho:/var/www/html
- ./volumes/nginx/conf.d:/etc/nginx/conf.d
networks:
- typecho
ports:
- '80:80'
- '443:443'
restart: always

3、配置 Nginx

先前台运行一次容器

1
docker-compose up

当屏幕不再有输出的时候 Ctrl + C 停止运行,开始配置 Nginx

1
cd volumes/nginx/conf.d/ && mkdir certs && touch typecho.conf

编辑 typecho.conf 文件,需要修改域名为自己的域名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
server {
listen 80;
listen [::]:80;
# 自己的域名
server_name example.com;
# 自己的域名
rewrite ^(.*) https://example.com$1 permanent;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

# 自己的域名
server_name example.com;

root /var/www/html;
index index.php;

access_log /var/log/nginx/typecho_access.log main;

# SSL证书和key的绝对路径,只需要修改最后的文件名
# 对应的就是宿主机 /volumes/nginx/conf.d/certs 目录下的文件
ssl_certificate /etc/nginx/conf.d/certs/example.com.crt;
ssl_certificate_key /etc/nginx/conf.d/certs/example.com.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}

location ~ .*\.php(\/.*)*$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

}

4、配置 SSL

SSL 证书放到 /volumes/nginx/conf.d/certs 目录下

具体可以参考:使用 acme.sh 快速申请 SSL 证书

5、下载 Typecho

官网地址:http://typecho.org/download

/typecho/volumes/typecho 目录下下载

1
wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip && unzip typecho.zip && rm -f typecho.zip LICENSE.txt

设置 typecho 目录的权限

1
chown -R www-data:www-data typecho

运行

1
docker-compose up -d

访问网站

1、配置

2、修改后台地址

1
mv admin/ blog

1
vim config.inc.php

修改 config.inc.php 文件

1
vim config.inc.php

找到 define('__TYPECHO_ADMIN_DIR__', '/admin/'); 这行

1
2
3
4
5
6
7
8
9
// 修改前

// admin directory (relative path)
define('__TYPECHO_ADMIN_DIR__', '/admin/');

// 修改后

// admin directory (relative path)
define('__TYPECHO_ADMIN_DIR__', '/blog/');

3、删除安装目录

1
rm -rf install install.php

4、关闭 XMLRPC 接口

如果不使用第三方客户端,仅仅使用网页后台写作的话,关闭 XMLRPC 接口

在网站后台:设置—>基本—>XMLRPC 接口,选择关闭