网站架构

wordpress是一个用于快速搭建博客平台的php软件,运行在apache下
wekan是一个开源看板,类似trello,可用于项目管理和计划安排
搭建步骤
环境准备
1. 安装docker
2. 拉取wordpress、mysql、wekan、mongo的docker镜像
docker pull wordpress
docker pull mysql
docker pull mongo:4.4-rc-focal
docker pull wekanteam/wekan:v5.35
# 作者反馈最新版的镜像有bug,不建议拉取最新的。不过我看他说目前已经修复了。
docker创建网络用于容器间通信
docker network create huntzou_website
启动容器
1. 启动mysql
docker run --name db-mysql --restart=always -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=<your pwd> -d --network huntzou_website f2ad9
2. 进入到mysql容器中创建数据库
docker exec -it <containerID> bash
mysql -u<your db user> -p
CREATE DATABASE <your db name> DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3. 启动wordpress
docker run --name wp-web --restart=always -v /etc/localtime:/etc/localtime --network huntzou_website -d -e WORDPRESS_DB_HOST=db-mysql -e WORDPRESS_DB_USER=<your db user> -e WORDPRESS_DB_PASSWORD=<your db pwd> -e WORDPRESS_DB_NAME=<your db name> -e WORDPRESS_TABLE_PREFIX=wp b44d
4. 启动mongodb
docker run -d --restart=always --name db-mongo -v /etc/localtime:/etc/localtime --network huntzou_website 5cea
5. 启动wekan
docker run -d --restart=always --name wekan-web -v /etc/localtime:/etc/localtime -e MONGO_URL="mongodb://db-mongo/wekan" -e ROOT_URL="http://wekan-web:8080" --network huntzou_website 0498
6. 启动nginx
docker run -d --restart=always --name nginx -v /etc/localtime:/etc/localtime --network huntzou_website -p 80:80 -p 8001:8001 -p 8002:8002 8325
其中 -v /etc/localtime:/etc/localtime
是将本机时区挂载到容器中,因为有些容器并不一定和你的服务器时间一样。
或者在容器构建之后使用命令 docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID:/etc/localtime
修改nginx配置
创建nginx配置文件 my_server_block.conf
server {
listen 0.0.0.0:80;
listen 0.0.0.0:8001;
server_name <your ip or domain>;
access_log /opt/bitnami/nginx/logs/huntzou_website.log;
error_log /opt/bitnami/nginx/logs/huntzou_website_error.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://wp-web:80/;
proxy_redirect off;
}
}
server {
listen 0.0.0.0:8002;
server_name <your ip or domain>;
access_log /opt/bitnami/nginx/logs/huntzou_website.log;
error_log /opt/bitnami/nginx/logs/huntzou_website_error.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://wekan-web:8080/;
proxy_redirect off;
}
}
将配置文件上传至nginx容器中
docker cp my_server_block.conf 4a8f:/opt/bitnami/nginx/conf/server_blocks/
重启nginx容器
docker restart 4a8f
添加域名解析
上述步骤均在只使用ip的情况下完成,配置完成后也只能使用ip进行访问。我现在拥有了一个已经备案的域名,并希望该网站都能通过域名来访问
注:WordPress4.90+版本后域名更换排常简单。在后台菜单“设置-常规”,把“WordPress地址(URL)和站点地址(URL)”更换成新域名地址就可以了。文章图片和特色图片都会自动更换成新域名链接。
可以在管理页面左边栏中的 “Tools-Site Health” 中看到wordpress版本

首先进入wordpress后台修改两个地址

修改完成后使用IP就不能登录后台了,原因见另一篇文章:关于wordpress中WordPress Address和Site Address的理解
修改nginx配置并重启nginx:
# 访问一级域名默认跳转到wordpress页面
server {
listen 80;
server_name woyou.cool;
rewrite ^/(.*) https://blog.woyou.cool/$1 permanent;
}
server {
listen 80;
server_name kanban.woyou.cool;
access_log /opt/bitnami/nginx/logs/huntzou_website.log;
error_log /opt/bitnami/nginx/logs/huntzou_website_error.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://wekan-web:8080/;
proxy_redirect off;
}
}
server {
listen 80;
server_name blog.woyou.cool;
access_log /opt/bitnami/nginx/logs/huntzou_website.log;
error_log /opt/bitnami/nginx/logs/huntzou_website_error.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://wp-web:80;
proxy_redirect off;
}
}
添加SSL证书
详见另一篇文章:Nginx反向代理wordpress开启HTTPS
其他
搭建私有音乐流媒体服务
Navidrome 是一个开源私有音乐流媒体软件,可以使用docker搭建
该播放器不支持页面上传音乐,故需要手动将音乐文件放在指定文件夹下
官网:https://www.navidrome.org/
docker镜像:https://hub.docker.com/r/deluan/navidrome
运行镜像:
docker run --restart=always --name navidrome -d --network huntzou_website -e ND_SCANSCHEDULE=1h -e ND_LOGLEVEL=error -e ND_UIWELCOMEMESSAGE="Welcome to HuntZou's private music lab" -e ND_SEARCHFULLSTRING=true -e ReverseProxyUserHeader=HTTP_X_REAL_IP d4a813d502ce
关于上述中环境变量配置说明见:https://www.navidrome.org/docs/usage/configuration-options/
由于我没有在容器中挂载宿主机磁盘,故若需要上传音乐则需要两步(也可以选择在运行时使用 -v music_folder:/music
进行挂载,则可以省略第2步)
- 先将歌曲传输到宿主机服务器上
- 再将宿主机上的歌曲复制到docker容器中
docker ps my_music.mp3 navidrome:/music
其他关于环境的配置同其他服务,在nginx中暴露出一个 music.woyou.cool
域名指向 navidrome:4533
即可通过域名访问