折腾笔记 · 2021年3月24日 0

Docker wordpress的安装(非常简单)

安装完Pleroma之后就是安装wordpress了

原本打算标准安装,实际操作一下发现PHP的设置很麻烦,而且wordpress又需要MySQL 5.6+ 或 MariaDB 10.1+,对postgreSQL的支持不是很好。

偏偏Pleroma使用的是postgreSQL。一台服务器运行两种数据库软件资源占用太大。

勉强一下倒不是不能让Wordpress使用postgreSQL,但是过于麻烦了。

所以这里就选择了docker。简单到令人惊讶,只需3个步骤。

1.安装docker

可以参考  Docker —— 从入门到实践,跳过一切麻烦步骤,直接官方一键脚本

$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
启动docker
$ sudo systemctl enable docker
$ sudo systemctl start docker
设置一下用户,把当前用户加入允许使用docker的docker组
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
最后跑一下测试看看是不是成功了
$ docker run --rm hello-world
输出了一大堆东西Hello from Docker!之类的,就成功了
2.部署并启动wordpress
参考知乎,一个文件解决
先安装docker-compose
apt install docker-compose
选择合适的目录创建一个文件
docker-compose.wordpress.yml
内容如下
version: '3.3'
services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}

运行

docker-compose -f docker-compose.wordpress.yml up -d #后台运行
docker-compose -f docker-compose.wordpress.yml down #停止并删除服务

wordpress 就运行在了8000端口,访问ip:8000即可看到 但是这么使用不安全,也很麻烦。

前面我安装了pleroma,过程中已经一并安装了nginx,并设置好了https证书,所以只需直接使用nginx做一个反代 如果没有https证书,现场领一个

certbot certonly --standalone --preferred-challenges http -d 域名 然后继续步骤 创建文件wordpress.conf放置在/etc/nginx/conf.d/

server {
server_name blog.根域名;listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;ssl_trusted_certificate /etc/letsencrypt/live/根域名/chain.pem;
ssl_certificate /etc/letsencrypt/live/根域名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/根域名/privkey.pem;ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_prefer_server_ciphers off;
# In case of an old server with an OpenSSL version of 1.0.2 or below,
# leave only prime256v1 or comment out the following line.
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;# the nginx default is 1m, not enough for large media uploads
client_max_body_size 16m;
ignore_invalid_headers off;proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;location / {
proxy_pass http://127.0.0.1:8000;
}
}
最后重启一下nginx,收工
 systemctl restart nginx