前情概要
在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
第二步:安装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端口,避免被不法之人攻击。
总结
为什么要使用云Mysql数据库安装而非本地安装?
因为大部分个人搭建的博客服务器性能欠佳,大都停留在1c1g或者2c2g上,
一个Mysql的进程即使什么都不干也会占用500~600MB的内存,这属于是建立Mysql数据库送wordpress了。
为什么要使用docker 部署而非直接部署?
配置php环境之类操作,对于新手来说很困难,
使用wordpress的官网docker镜像部署好之后直接一个端口就好了,非常省心,还安全。
整个安装过程中最难的部分就是启用https加密连接的时候,
在这个过程不断重复了七八遍才找到问题安装成功。
现在博客已经安装好啦,请问你现在想给世界带来些什么呢?
Comments NOTHING