AI 摘要

在这篇文章中,讲述了如何在Ubuntu服务器上利用Docker安装WordPress、配置云Mysql数据库和启用HTTPS。文章首先介绍了环境要求,包括一台Ubuntu服务器和一个云数据库。接着,分步骤详细解释了安装Docker和WordPress的过程,以及如何通过Nginx实现WordPress的HTTPS加密连接。在配置Nginx时,需要将域名替换为用户自己想要使用的域名,并设置SSL证书。整个过程适合有基本Ubuntu操作技巧的用户,实现了安全的博客搭建和故事分享。

前情概要

在Ubuntu服务器上使用Docker安装WordPress,配置云Mysql数据库,并启用HTTPS。

学习如何通过Nginx设置SSL,解决WordPress HTTPS重定向问题,以及为何选择云数据库和Docker部署。

开始博客之旅,分享故事给世界。

环境条件

1.一台ubuntu服务器,1c1g即可。(wordpress服务需要和mysql数据库分置,若一起部署会导致过载)

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

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

教程如下:

第一步:安装docker

sudo apt update                               #刷新apt缓存

sudo apt install docker

sudo apt install docker.io                       #安装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访问域名的方式安装)

跟着安装程序一步一步做

在Mysql数据库安装时需填写云Mysql数据库的信息

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

第四步:使用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+端口的访问方式。

现在需要通过登录后台http://外网ip:8080/wp-admin

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

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

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

请不要慌张,这是wordpress的一些bug 

解决方法如下:

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);

(wordpress是不断更新的,仅确认教程发出日有效)

保存文件。

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

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

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

Nginx

总结

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

因为大部分个人搭建的博客服务器性能欠佳,大都停留在1c1g或者2c2g上,

一个Mysql的进程即使什么都不干也会占用500~600MB的内存,这属于是建立Mysql数据库送wordpress了。

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

配置php环境之类操作,对于新手来说很困难,

使用wordpress的官网docker镜像部署好之后直接一个端口就好了,非常省心,还安全。

整个安装过程中最难的部分就是启用https加密连接的时候,

在这个过程不断重复了七八遍才找到问题安装成功。

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

团子