一、环境准备:
- 申请好的网站域名,域名做好备案(阿里云大概周期3-23个工作日左右)
- 一台Linux 虚拟机 (个人使用阿里云2核2G主机, Centos)
二、关键处理步骤:
1. WordPress 安装与启动
-
docker & docker-compose 安装(参考其他博文)
-
docker-compose.yml文件准备, 将其放入博客文件夹根目录如 ~/my-word-press-blog/
version: '3' services: wordpress: image: wordpress ports: - "8000:80" environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: - ./my-word-press-blog:/var/www/html depends_on: - db restart: always db: image: mysql:5.7 ports: - "3306:3306" environment: MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress MYSQL_RANDOM_ROOT_PASSWORD: '1' volumes: - ./mysql-data-of-docker:/var/lib/mysql restart: always
-
启动wordpress容器和其使用的mysql数据库
进入博客根目录,运行
docker-compose up -d
, 启动完成后会看到根目录下多了两个目录,一个是数据库数据文件夹,一个是博客相关信息文件夹 -
验证,查看两个容器均正常运行,再使用
curl http://localhost:8000
查看正常返回网页信息即可$ docker container ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e042be85773b wordpress "docker-entrypoint.s…" 4 hours ago Up 4 hours 0.0.0.0:8000->80/tcp, :::8000->80/tcp mywordpressblog_wordpress_1 27f045b37f1b mysql:5.7 "docker-entrypoint.s…" 4 hours ago Up 4 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mywordpressblog_db_1
2. nginx安装与启动
-
nginx安装
sudo yum install nginx
-
nginx配置文件准备(放到/etc/nginx/conf.d/word-press.conf)
# 定义HTTP服务器 server { listen 80; # 监听端口 server_name blog.leon.kylins.tech; # 域名 # 配置代理路径 location / { proxy_pass http://localhost:8000/; # 转发请求的目标地址 proxy_set_header Host $host; # 设置请求头中的Host字段 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 设置HTTP头中的X-Forwarded-For字段,表示客户端真实IP,多个IP用逗号隔开 proxy_set_header X-Real-IP $remote_addr; # 设置请求头中的X-Real-IP字段,表示客户端真实IP proxy_set_header X-Forwarded-Proto https; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; } # 配置错误页面 error_page 404 /404.html; # 404错误页 location = /404.html { internal; # 不接受外部访问 root /usr/share/nginx/html; # 404错误页文件所在目录 } }
-
启动
sudo systemctl start nginx
3. 网络端口开放及域名绑定
-
开放网络端口80和443
通过阿里云平台安全策略配置开放端口(云服务商都有对应的网络策略配置)。
-
域名绑定
通过阿里云域名解析服务将域名绑定到云服务器公网IP。
-
通过浏览器验证http服务请求是否正常
http://blog.leon.kylins.tech
4. 应用初始化
访问http://blog.leon.kylins.tech进行管理员信息及其他初始化设置(按需即可)
5. HTTPS支持
-
证书安装(免费的证书供应商有很多,这里选择Let's encryt ,官方已经针对不同场景提供的详细的操作步骤)这里选择使用Certbot ACME 客户端自动安装,安装完成后Certbot会自动检测并修改nginx配置,增加443端口监听已经ssl证书信息。关键要求:
- 具有命令行权限
- 能通过http访问到网站
-
证书续期
证书有效期为1年,Certbot ACME 客户端安装https支持时会自动添加一个定时任务进行证书的续期(renew)
6. 站点根目录更新
站点调整为https访问后,需要修改站点的url,将http替换为https(登录管理平台 -> 设定-> WordPress地址
和站点地址
两项 )或者登录数据库直接修改表wp_options中siteurl和home两个option的value
三、避坑
- 谨记端口权限开放
- 更换为https后可能文件上传功能报错, 修改增加用户写权限,目录为
/my-word-press-blog/wp-content/uploads
- 安装卸载插件要求输入ftp服务器密码,简单粗暴的方式为在文件
wp-config.php
中增加define('FS_METHOD', "direct");
. 插件安装过程中也可能出现文件权限导致的安装失败,将对应文件增加写权限即可(plugins,upgrade), 主题安装失败同理。