前情概要

在Ubuntu服务器上使用Docker安装WordPress,配置云Mysql数据库,并启用HTTPS。学习如何通过Nginx设置SSL,解决WordPress HTTPS重定向问题,以及为何选择云数据库和Docker部署。开始你的博客之旅,分享你的故事给世界。

环境条件

1.一台ubuntu服务器,1c1g即可。

2.一个云数据库。(这里采用的是腾讯云的TDSQL数据库,学生优惠45元买了50G容量)

3.一颗耐心勇敢面对失败的心。

(本文已默认您拥有基本ubuntu服务器操作技巧)

ubuntu

ubuntu

教程如下:

第一步:安装docker

sudo apt update                                         #刷新apt缓存

sudo apt install docker

sudo apt install docker.io                       #安装docker

Docker

Docker

第二步:安装wordpress

sudo docker run -d -p 8080:80 –name blog wordpress:latest            #安装wordpress并把它的端口开放到主机8080上

(这和常规docker安装不同,不安装本地Mysql)

第三步:执行wordpress安装程序。

允许服务器8080端口访问 (这里指的是各大服务器厂商的防火墙规则

在浏览器访问http://服务器的ip地址:8080 (不要在此时就给wordpress套nginx传递SSL文件使用https访问域名的方式安装,因为这样会带来不幸。qwq)

跟着安装程序一步一步做

在Mysql数据库安装时需填写云Mysql数据库的信息(因各个厂商以及不同产品的云Mysql数据库连接方式不完全相同,故这里不提供一般连接方法。)

WordPress

WordPress

第四步:使用nginx实现wordpress的https加密连接

sudo apt install nginx                                                       #安装nginx

sudo nano /etc/nginx/conf.d/yourdomain.conf        #创建一个nginx配置文件

在配置文件中加入以下内容。

server {
listen 80;
server_name yourdomain;          #这里把yourdomain更改为您想使用的域名(如果是中文域名,需要填写punycode编码后的域名)

location / {
proxy_pass http://localhost:8080;   # 将流量转发到8080端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
send_timeout 300;
}
}

server {
listen 443 ssl;
server_name yourdomain;                                                                      #这里把yourdomain更改为您想使用的域名(如果是中文域名,需要填写punycode编码后的域名)

ssl_certificate /etc/ssl/yourdomain_nginx/yourdomain.crt;         #您需要把此处的crt文件路径改为您crt文件的路径

ssl_certificate_key /etc/ssl/yourdomain_nginx/yourdomain.key;      #您需要把此处的crt文件路径改为您crt文件的路径
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ‘TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384’;
ssl_prefer_server_ciphers off;

client_max_body_size 800M; # 允许上传最大为800MB的文件,根据需要调整这个值(配置这个是因为nginx默认不允许上传文件)

location / {
proxy_pass http://localhost:8080; # 将流量转发到8080端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
send_timeout 300;
}
}

接着输入以下指令

ctrl+x     y       enter                                      #保存文件(虽然我不知道为什么我要教保存文件)

sudo nignx -t                                                #检查配置文件书写是否正确

sudo systemctl restart nginx                     #重启nginx使新的配置文件生效

但此时使用域名访问wordpress,仍然会跳转成ip+端口的访问方式。(此处假设已经把对应域名dns解析到您的服务器上)

需要通过登录后台http://您的ip:8080/wp-admin

登录成功后在“设置”一栏更改站点地址(URL)WordPress地址(URL)

将他们更改为https://yourdomain.com                            #一定要注意是https,已启用加密连接。

更改后点击保存,刷新页面后您会发现网站的css全崩,后台无法正常登录,或者显示重定向次数过多。

请不要慌张,这是wordpress的一些bug  (启用https之后,wordpress会在浏览器里面把您从80重定向到443端口又重新到80,循环往复造成崩溃。)

解决方法如下:

docker cp blog:/var/www/html/wp-config.php .  #将wordpress的配置文件从docker内部提取出来。

nano wp-config.php                                                      #编辑配置文件

在文件的开头<php的后面,其他所有代码的前面添加如下内容。

$_SERVER[‘HTTPS’] = ‘on’;

define(‘FORCE_SSL_LOGIN’, true);

define(‘FORCE_SSL_ADMIN’, true);

保存文件。

docker cp wp-config.php blog:/var/www/html/wp-config.php       #将配置文件送回docker内部

docker restart blog                                                                                      #重启wordpress使新的配置文件生效

此时,wordpress已经完整安装好啦。

记得关闭安装时打开过的8080端口,避免被不法之人攻击。

Nginx

Nginx

总结

为什么要使用云Mysql数据库安装而非本地安装?

因为大部分个人搭建的博客服务器性能欠佳,大都停留在1c1g或者2c2g上,一个Mysql的进程即使什么都不干也会占用500~600MB的内存,这属于是建立Mysql数据库送wordpress了。

为什么要使用docker 部署而非直接部署?

配置php环境之类巴拉巴拉的,对于新手来说很困难,使用wordpress的官网docker镜像部署好之后直接一个端口就好了,非常省心,还安全。

整个安装过程中最难的部分就是启用https加密连接的时候,我在这个过程不断重复了七八遍才找到问题安装成功。

 

现在你的博客已经安装好啦,请问你现在想给世界带来些什么呢?

团子

团子