Ursache
Ich habe einmal WordPress auf Vultr
erstellt, aber aus bekannten Gründen wird der Zugriff auf diesen Ort immer langsamer. Später habe ich mich für Sina Cloud entschieden. Es ist zwar günstig und sehr gut, aber es erfordert eine Registrierung und die Kommentarfunktion muss möglicherweise kastriert werden. Nachdem ich darüber nachgedacht habe, kann ich es genauso gut vergessen und einfach einen Hongkong-Host zum Erstellen finden WordPress. Vultr
上,但是因为众所周知的原因,这个地方访问越来越慢。再后来我选择了新浪云,新浪云的确够便宜,也很不错,但是要备案,还有评论功能估计要阉割,想想还是算了,找个香港的主机搭建 wordpress 即可。
购买主机
我这里选择的是阿里云的轻量应用服务器,这个主机的好处就是便宜,够用。
比如我选择的香港的主机,一个月只需要 24 块钱,一核心一G内存,网速为 30Mbps,磁盘空间 25GB,月流量 1TB。
配置如下图
初始化 docker 环境
虽然上面有一件安装wordpress
的功能,但是我不推荐,因为配置都太老了
最终我选择的是 ubuntu18.04
系统,直接用下面的命令即可完成安装 docker 并且初始化 docker swarm
curl -o- -L https://gist.githubusercontent.com/hangox/e679464f35dc2a78920e6249a21d7958/raw/c5541e38979dca1e3e1e9704ad171ed2f0556fa1/ubunut-install-docker.sh | bash
编写 docker-compose
配置一览
version: '3.7' services: caddy: image: abiosoft/caddy ports: - 80:80 - 443:443 environment: - ACME_AGREE=true - TZ=Asia/Shanghai volumes: - caddy:/root/.caddy - wp-src:/usr/src/wordpress configs: - source: wp_caddy target: /etc/Caddyfile app: image: wordpress:5.4.1-php7.2-fpm environment: TZ: Asia/Shanghai WORDPRESS_DB_HOST: wp_db:3306 WORDPRESS_DB_USER: root WORDPRESS_DB_PASSWORD: yourpassword WORDPRESS_DB_NAME: wordpress depends_on: - db volumes: - wordpress:/var/www/html - wp-src:/usr/src/wordpress db: image: mysql:8 environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: yourpassword MYSQL_DATABASE: wordpress command: --default-authentication-plugin=mysql_native_password volumes: - db:/var/lib/mysql volumes: wordpress: db: caddy: wp-src: configs: wp_caddy: external: true
配置解析
caddy
用来做反向代理,同时兼顾 https 证书申请,配置如下
https://47log.com https://www.47log.com { root /usr/src/wordpress gzip fastcgi / wp_app:9000 php rewrite { if {path} not_match ^\/wp-admin to {path} {path}/ /index.php?_url={uri} } log stdout errors stderr }
这里我用到了 docker swarm 的 config 功能,直接把配置写入到 wp_caddy
这个配置中。
db
这里用的是 mysql8 , wordpress 是支持的,性能也要更好点
需要注意的,commmand
必须加上 command: --default-authentication-plugin=mysql_native_password
不然是没办法进行密码认证的,我就是忘记加这个蛋疼了一阵子。
app
注意连接方式
如果你是用 docker stack 部署的,部署的是什么名字,数据库连接那里就要加上名字的前缀。比如我这里是 docker stack deploy -c docker-compose.yml wp
,我这里数据库在 docker 网络中的 host 就是 wp_db
。如果你的 stack 名字为 wordpress , 就要对应的改为 wordpress_db
。
注意配置 volume- wordpress:/var/www/html
这个东西一定要配置,上次我就是没有配置这个东西,删掉 container,主题直接没有了。
使用 docker stack 部署
一行命令 docker stack deploy -c docker-compose.yml wp
Zum Beispiel kostet der Host, den ich in Hongkong ausgewählt habe, nur 24 Yuan pro Monat, mit einem Kern und einem Gigabyte Speicher, einer Internetgeschwindigkeit von 30 Mbit/s, 25 GB Festplattenspeicher und 1 TB monatlichem Datenverkehr.