侧边栏壁纸
博主头像
liveJQ博主等级

沒有乐趣,何来开始

  • 累计撰写 184 篇文章
  • 累计创建 68 个标签
  • 累计收到 2 条评论

WordPress 初次建站以及遇到的问题

liveJQ
2024-10-30 / 0 评论 / 0 点赞 / 308 阅读 / 2,355 字

修改站点 URL 地址

  1. WordPress地址(URL):在数据库中是 siteurl,管理后台地址。
  2. 站点地址(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';

相关资料

  1. 如何更改您的WordPress网站URL
  2. 10分钟搭建美国白宫也用的博客框架——Wordpress
0

评论区