修改站点 URL 地址
- WordPress地址(URL):在数据库中是 siteurl,管理后台地址。
- 站点地址(URL):网站主页地址,一般跟前面的地址一样,但是有些企业做隔离,会将其部署到其他地方,所以这里就可以填不一样的地址。
登录 MySQL 键入下面两条命令,URL的值修改为你的站点就可以了。
mysql> select * from wp_options where option_name = 'siteurl';
mysql> update wp_options set option_value = 'http://yoursite.com' where option_name = 'siteurl';
初次安装访问 URL+wp-admin 没有进入安装界面
检查你的wordpress网站代码根目录是否在网站根目录下,一般正常路径类似:yourdomain.com/ 你的 wordpress 网站代码,一般有问题的路径例如:yourdomain.com/wordpress/ 你的 wordpress 网站代码
运行目录需要设置为/,而不是/wordpress
安装时提示用户名密码错误或数据库等连接失败
有可能不是这些错误,而是没有写入这些信息的权限或者在根目录下没有找到 wp-config.php 配置文件等原因。你可以手动在根目录下复制 wp-config-sample.phpw 为 wp-config.php,然后直接将这些信息填如入到 wp-config.php 里面对应的位置,保存后重启 lnmp 所有服务。也可以不需要写入,只需要将该文件权限设置为 666 所有者为 www 即可。
使用宝塔+NPM反向代理安装后SSL无法生效
使用宝塔面板安装好 LNMP 环境,再安装 WordPress 一般是没有什么问题的,安装好后设置好伪静态,然后在宝塔面板申请免费的 SSL 证书就可以通过 HTTPS 访问,但是这种架构只适合单台服务器只放一个网站的情况(独占80或443端口)。
我的情况是在部署 WordPress 之前就已经存在多个站点了,通过 NginxProxyManager 反向代理多个站点。
首先按照正常流程安装好宝塔面板并部署好了 WordPress 站点,创建好相应的 MySQL 数据库,并不需要申请 SSL,这边通过 NPM 统一管理证书。需要注意的是,这里的宝塔和其他现有的站点一样都是以容器的方式部署,为此单独创建了一个网段 172.19.0.0/24 方便互相访问和管理。宝塔 172.19.0.200、NPM 172.19.0.201、宿主 172.19.0.1,WordPress 的 ServerName 设置为 mydomain.com,监听 80 端口,这样 WordPress 就算是部署完成了。
转到 NPM 的设置,首先申请 mydomain.com 的证书(这里一定要注意不是申请泛域名 *.mydomain.com,此域名并不包含 mydomain.com),之后就是创建 Proxy Hosts。
域名 mydomain.com
方式1 代理域名 选 http 地址填 172.19.0.200 端口 80
方式2 代理域名 选 http 地址填 172.19.0.1 端口 8080(容器80端口映射到了宿主机的8080)
SSL 选择刚刚申请的 mydomain.com 勾选 Force SSL 和 HTTP/2 Support
换成正常的 Nginx 相当于如下配置
location / {
proxy_pass http://172.19.0.1:8080;
# NPM 默认会添加如下配置,这对后端能否正常返回响应非常重要(例如:WordPress)
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;
}
题外话,这里勾选 Force SSL 相当于访问 http://mydomain.com 会跳转到 https://mydomain.com,也就是它自动帮我们添加了类似如下配置。
if ($scheme = http) {
return 301 https://$host$request_uri;
}
正常按照这些配置完成后,访问 https://mydomain.com 会出现奇怪的网页布局(说直接点就是很丑的界面),F12调出后台会发现大量 JS 和 CSS 的错误请求。根本原因是 WordPress 后端并没有正确识别到前端是 HTTPS 的请求,而直接返回了 HTTP,导致资源请求失败。
解决办法
方式一
让后端 WordPress 先对请求进行判断,编辑 wp-config.php 配置文件,在<?php
后面添加如下配置(必须放在最开始的位置)
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
}
添加完成后重启宝塔面板即可。
方式二
直接通过数据库修改 WordPress 的 siteurl 和 home 使用 HTTPS
UPDATE wp_options SET option_value = 'https://mydomain.com' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'https://mydomain.com' WHERE option_name = 'home';
评论区