docker-compose 搭建 Typecho 博客
1. 介绍
Typecho 是一款基于PHP开发的轻量化博客,源码大小不到 600 KB。可别看体量小就认为它功能残缺,博客该有的功能它可是样样不少!如果你正好需要搭建以轻量为主的博客,不妨就尝试一下 Typecho,虽是小小麻雀但却也五脏俱全。
Typecho 官方推荐的安装方式其实是源码安装,也就是说,它不适合用 Docker 来部署。事实是 Docker 部署会为其“增重”,但架不住用 Docker 部署方便维护,并且实际操作起来也不算复杂,Suny 这里还是选用该方式来进行部署。
2. 搭建环境
- 服务器:本次搭建用的是雨云的服务器(当然你也可以选用腾讯云或是阿里云等云服务商,但最好选非大陆地区的服务器)
- 系统:Debian 11
- 一枚域名,做好 DNS 解析
- 提前安装好 Docker、Docker-compose
- 【本文采用但非必要】:反代工具 Nginx Proxy Manager
3. 搭建方法
3.1 搭建
初始化服务器
sudo -i # 切换到 root 用户
apt update -y # 升级 packages
apt install wget curl sudo vim git # 安装常用工具
新建软件目录:
mkdir -p /root/data/docker_data/typecho
cd /root/data/docker_data/typecho
创建几个必要文件:
3.1.1 mysql
cd /root/data/docker_data/typecho
nano mysql.env
输入以下内容:
MYSQL_ROOT_PASSWORD=root_pass
MYSQL_DATABASE=typecho
MYSQL_USER=username
MYSQL_PASSWORD=password
3.1.2 php-fpm
cd /root/data/docker_data/typecho
mkdir php
cd php
vim Dockerfile #php 配置
输入以下内容:
FROM php:7.3.29-fpm
RUN apt-get update \
&& docker-php-ext-install pdo_mysql \ # 在官方镜像基础上添加 pdo_mysql
&& echo "output_buffering = 4096" > /usr/local/etc/php/conf.d/php.ini \ # 设置 buffer 为一个内存页 4kb
&& echo "date.timezone = PRC" >> /usr/local/etc/php/conf.d/php.ini # 设置时区为 PRC
3.1.3 nginx
cd /root/data/docker_data/typecho
mkdir nginx
cd nginx
vim default.conf
输入以下内容:
server {
listen 80 default_server;
root /var/www/html;
index index.php;
access_log /var/log/nginx/typecho_access.log main;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last; # 配置 rewrite 规则
}
location / {
index index.html index.htm index.php;
if (!-e $request_filename) {
rewrite . /index.php last;
}
}
location ~ \.php(.*)$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
下载源码:
cd /root/data/docker_data/typecho/typecho
wget https://github.com/typecho/typecho/releases/download/v1.2.0/typecho.zip
apt install zip -y
unzip typecho.zip
创建docker-compose文件:
cd /root/data/docker_data/typecho
vim docker-compose.yml
输入以下内容:
version: "3"
services:
nginx:
image: nginx
ports:
- "8223:80" # 左边可以改成任意没使用的端口
restart: always
environment:
- TZ=Asia/Shanghai
volumes:
- ./typecho:/var/www/html
- ./nginx:/etc/nginx/conf.d
- ./logs:/var/log/nginx
depends_on:
- php
networks:
- web
php:
build: php
restart: always
expose:
- "9000" # 不暴露公网
volumes:
- ./typecho:/var/www/html
environment:
- TZ=Asia/Shanghai
depends_on:
- mysql
networks:
- web
mysql:
image: mysql:5.7
restart: always
environment:
- TZ=Asia/Shanghai
expose:
- "3306" # 不暴露公网
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/logs:/var/log/mysql
- ./mysql/conf:/etc/mysql/conf.d
env_file:
- mysql.env
networks:
- web
networks:
web:
检查端口是否被占用:
lsof -i:8223 # 如果端口被占用,重新自定义端口
如果无占用,运行:
docker-compose up -d
访问:http://服务器ip:8223 打开Typecho安装页面
3.2 更新
cd /root/data/docker_data/typecho # 进入docker-compose所在的文件夹
docker-compose pull # 拉取最新的镜像
docker-compose up -d # 重新更新当前镜像
3.3 卸载
sudo -i # 切换到root
cd /root/data/docker_data/typecho # 进入docker-compose所在的文件夹
docker-compose down # 停止容器,此时不会删除映射到本地的数据
cd ~
rm -rf /root/data/docker_data/typecho # 完全删除映射到本地的数据
4. 反向代理
反向代理使用 Nginx Proxy Manager,在开始添加反向代理之前,确保已经做好了域名解析。现在,让我们按下图所示登录面板进行操作。
填写IP时,如果该服务和 Nginx Proxy Manager 在同一服务器中,则可以填入 Docker 容器的内部IP。
做完以上所有操作后,就可以通过访问域名来完成安装。
5. 使用教程
- 数据库适配器无需修改,其余项目参照 3.1.1 mysql 小节内容进行填写即可
- 复制初始化配置框内的内容,将其粘贴至 config.inc.php 文件中,点击继续安装即可完成安装
6. Typecho 项目链接
7. 参考资料
Typecho项目官网
使用Docker-compose部署个人博客Typecho
docker-compose重建typecho博客
10分钟搭建一个Typecho博客|太破口!念念不忘,必有回响!