博客

  • [网站更新]wordpress添加cdn与跨域资源共享 | 折腾日志

    该文章主要介绍此次网站更新的内容与所遇到的问题

    更新内容

    1. 更新ssl证书(旧证书快过期了)
    2. 添加cdn

    问题:文件加载 / “CORS”

    cdn设置好后,任意打开一个页面,通过F12控制台查看cdn的请求是否正常返回。这些请求中,有的正常,有的错误(但code为200),无法加载的请求中排除与cdn无关的请求(登录状态的头像,wordpress默认设置的是gravatar.com的一张图),剩下便是字体文件、部分的脚本文件,如果在浏览器中空referer访问相应的url,能获取相应的内容。

    (中间忘了错误请求控制台上能看原因,折腾了半天)浏览器控制台中的报错如下:

    Access to script at ‘xxx’ from origin ‘xxx’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

    这受到了浏览器自带的CORS(跨域资源共享)策略的影响,这个策略以用户安全为目的,控制跨域资源的加载。(cdn域名与该页面的域名不同,使得部分资源的加载被拒绝)

    解决方案:在cdn / 源站(其一/二者均添加)添加相应的响应头

    • Access-Control-Allow-Origin
    • Access-Control-Allow-Methods
  • [网站更新]重新配置数据库 | 折腾日志

    该文章主要记载改造的前因与部分技术细节

    前因:mysql原先配置不合理

    网站架构

      网站使用docker+相应的镜像搭建
      流量经过:请求 -> 根据域名分发请求(nginx) -> wordpress(依赖mysql)

      问题

      跨平台迁移:在这样一个架构中,要备份网站,需要保存wordpress与mysql生成的数据。同时为了主题开发,我需要将数据(不用保证最新)搬至windows上。

      但将网站转移到windows上后发现,mysql镜像启动失败,根据日志,这与windows和linux的文件系统大小写敏感相关(windows大小写不敏感,linux相反)。

      经过资料的查找,mysql数据库是否大小写敏感与配置`lower_case_table_names`有关,数据库初始化完成后,这项配置就无法修改了。也就是原本的数据库只能在linux上运行,无法搬迁到windows上。在资料的查找中,我才意识到mysql需要挂载上my.cnf来进行配置。

      root密码疑似遗失:原先设置的是随机root密码,将在stdout中输出,但可能因为其它配置有误(也可能我是大笨蛋喵),在控制台中没有找见root密码。这可能会带来隐患,当有迫切需求时无法操作数据库(操作起来会很麻烦)。

      这些因素归根于mysql的不当配置,同时当前该网站内容不多,能够相对轻松地完成改造。

      细节

      细节主要在于数据库的初始化过程,包括:

      1. root密码设置
      2. (用于wordpress的)表、用户初始化

      root密码与表的初始化可以通过docker设置环境变量 / 通过init.sql进行,但设置中出现了麻烦的问题:(mysql:9.2.0)通过环境变量设置了root密码后,初始化过程中,出现了root账户登录错误,使得表与用户没有创建。

      (这一段包含我的猜想,未得到验证)这可能与密码规则相关,初始化中登录是”mysql_native_password”,而设置的密码是”caching_sha2_password”;同时在mysql的某个版本开始,已经没有”mysql_native_password”或类似的选项了。这表明初始化过程中可能存在不合理的地方。对于我的需求,要么初始化中设置密码,随后(初始化完成后)再创建用户与表;要么先不设置root密码,在初始化中的init.sql中设置密码,这样在初始化中就能一次性完成密码的设置和用户与表的创建。

    1. 世界,您好!

      欢迎使用 WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!