在群晖Synology上部署WordPress是一个比较简单的自建站做法,群晖上已经有很多的套件(e.g. MariaDB, PhpAdmin, docker etc)加上WordPress是一个免费开源的网站,所以在自家的群晖上架设一个WordPress网站是一个不错的动手项目,还可以通过项目了解建站的过程和细节. 可以为将来如果想把站点架设到云托管服务上做准备.
方案介绍
在群晖上假设WordPress的方案有很多,这里我们主要介绍以下的方案
- 部署方案1 – 使用群晖原生套件: MariaDB+PhpAdmin+WebStation 架设网站
- 部署方案2 – 使用群晖套件+Docker: MariaDB+PhpAdmin+WordPress docker 架设网站
- 部署方案3 – 使用Docker: MariaDB + PhpAdmin + WordPress docker架设网站
除了以上的方案,还有其他组合的方案, 比如使用群晖的WordPress套件一键安装(这个就很简单了,直接上群晖套件中心上按照提示自己操作就可以, 所以这里就不多做说明)
方案选择分析
这3个方案均可帮助快速搭建一个WordPress的网站,但个人比较喜欢方案2, 原因是
- 方案1是在WebStation上假设的WordPress网站,这种方法在下载更新WordPress套件(e.g. 主题,插件)需要另外搭设FTP, 且这个FTP的文件夹需要直接指向WordPress的根文件夹才能顺畅的下载和更新, 不然的话就要等待下载后把相应的文件拷贝回去相应的目录下让WordPress加载更新, 群晖自带的FTP功能只能指向共享文件夹,导致整个下载和更新过程比较繁琐
- 方案3是一个纯Docker的方案,这样的话可以让你在任意的Docker容器上搭建一个可运行的WordPress网站,但如果你变更YAML文件重新构建容器,就会连通MariaDB的数据也会被清除,这样的话数据就丢失了,当然你也可以把MariaDB+PhpAdmin作为一个独立的Docker项目来部署,这样的话就不会有这个问题
所以学习了以上3个部署方案后,大家可以自行选择适合自己的方案或者组合来部署自己的WordPress网站
部署方案1
参考视频 –> YouTube
- 到群晖的”套件中心”分别安装: Web Station, MariaDB和PhpAdmin

2. 设置MariaDB和PhpAdmin确保能够连通并且创建给WordPress的数据库和账号
一般是在 http://<群晖IP>/phpadmin 进入操作界面

登录的界面里用户名是root, 密码就是MariaDB里面设置的密码

创建一个给WordPress使用的数据库


创建WordPress使用的账户
主机名可以选择localhost或者任意主机,这取决于希望该数据库是从哪里访问进来. 如果WordPress跟数据库不是在一个网段/网络内,那要选择任意主机,不然就访问不了

记得要给账户授予数据库的权限 (由于这个方案是直接放开权限允许从群晖自带的WebStation的WordPress访问数据库,所以主机名选择了localhost)

3. 到https://wordpress.org/ 下载WordPress网站源码并把下载的文件解压放到群晖WebStation的文件目录下面

4. 在WebStation上添加你想访问WordPress的方式

网页服务可以在网络门户的访问方式创建好之后再去创建,然后回到访问方式把服务换成新建的网页服务

最后就可以尝试访问搭建好的WordPress网站了,如果是用的80/443端口,那直接域名/IP(e.g. http://192.168.192.101)就可以进入,如果是用的别名,那就要域名/IP+别名的方式访问 (e.g. http://192.168.192.101/<别名>)
部署方案2
- 到群晖的”套件中心”分别安装: Container Manager, MariaDB和PhpAdmin

请记住MariaDB的端口 (如需更改密码的也可以在MariaDB的操作界面进行)

2. 设置MariaDB和PhpAdmin确保能够连通并且创建给WordPress的数据库和账号

记得要给账户授予数据库的权限 (由于这个方案是要放开权限允许从Docker的WordPress访问数据库,所以主机名选择了%)

3. 使用群晖的File Station, 创建一个Docker文件存放的文件夹

4. 到Contain Manager –> 项目 中创建项目

YAML文件
version: '0.1'
services:
wordpress:
image: wordpress:latest
container_name: Mywordpress02
hostname: mywordpress02
healthcheck:
test: curl -f http://localhost:80/ || exit 1
ports:
- 6789:80
depends_on:
redis:
condition: service_healthy
volumes:
- ./wordpress:/var/www/html:rw
environment:
WORDPRESS_DB_HOST: <群晖IP>:<MariaDB端口>
WORDPRESS_DB_USER: wordpress02u
WORDPRESS_DB_PASSWORD: password!
WORDPRESS_DB_NAME: wordpress02
restart: on-failure:5
redis:
image: redis
hostname: redis
container_name: Redis
user: 1026:100
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
volumes:
- ./redis:/data:rw
environment:
TZ: Asia/Taipei
restart: on-failure:5
创建项目后等待Docker拉取镜像和安装, 安装完成之后,会看到相应的容器已经启动

部署完成后,可以通过预设在YAML上给WordPress分配的端口进行访问 (e.g. http://192.168.192.101:6789)
部署方案3
参考视频: YouTube
参考文档: WordPress On My Synology Nas Docker
- 使用群晖的File Station, 创建一个Docker文件存放的文件夹

2. 到Contain Manager –> 项目 中创建项目

YAML 文件
version: '0.3'
services:
wordpress:
image: wordpress:latest
container_name: Mywordpress03
hostname: mywordpress03
healthcheck:
test: curl -f http://localhost:80/ || exit 1
ports:
- 6189:80
depends_on:
db:
condition: service_started
redis:
condition: service_healthy
phpmyadmin:
condition: service_healthy
volumes:
- ./wordpress:/var/www/html:rw
environment:
WORDPRESS_DB_HOST: <群晖IP>:<MariaDB端口>
WORDPRESS_DB_USER: wordpress03u
WORDPRESS_DB_PASSWORD: password!
WORDPRESS_DB_NAME: wordpress03
restart: on-failure:5
db:
image: mariadb:latest
container_name: Mariadb03
security_opt:
- no-new-privileges:true
environment:
MYSQL_DATABASE: wordpress03
MYSQL_USER: wordpress03u
MYSQL_PASSWORD: password!
MYSQL_ROOT_PASSWORD: password!
TZ: Asia/Taipei
volumes:
- ./mariadb:/var/lib/mysql:rw
ports:
- 6188:3306
restart: on-failure:5
redis:
image: redis
hostname: redis03
container_name: Redis03
user: 1026:100
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
volumes:
- ./redis:/data:rw
environment:
TZ: Asia/Taipei
restart: on-failure:5
phpmyadmin:
image: phpmyadmin
hostname: phpmyadmin03
healthcheck:
test: curl -f http://localhost:80/ || exit 1
container_name: PhpMyAdmin03
ports:
- 6186:80
environment:
PMA_HOST: <群晖IP>
PMA_PORT: 6188
restart: on-failure:5
创建项目后等待Docker拉取镜像和安装, 安装完成之后,会看到相应的容器已经启动

部署完成后,可以通过预设在YAML上给WordPress分配的端口进行访问 (e.g. http://192.168.192.101:6189)
Redis插件安装
部署方案2和部署方案3里面都安装了Redis的容器,可以参照这篇文章的Step 26来进行激活使用,但更改wp-config.php文件内容之前,请先进入WordPress安装Redis插件

define('WP_REDIS_HOST', 'redis03');
define('WP_REDIS_PORT', '6379');

遇到的问题
数据库链接问题
在部署方案3中,使用的全部都是Docker镜像,但由于家庭网络的原因,可能导致通过HostName的方式无发正常让PHP admin或者WordPress链接到MariaDB数据库

最直接的方式就是不要给容器分配HostName,直接使用IP
最后感谢大家的鼓励和支持,如果有什么问题,欢迎随时交流

