Free cookie consent management tool by TermsFeed Update cookies preferences

阿卡林刘

黑夜给了我黑色的眼睛,我却用它去寻找光明。——《荣耀》

标签: 1Panel

1Panel is a modern WordPress hosting management panel that simplifies website administration with intuitive controls and efficient server management tools.

  • Casdoor 入坑指南——以 WordPress 为例

    注意:本文的实操内容可能会导致账号访问权限丢失,请谨慎操作!

    最近,我正在尝试使用 Casdoor,让 WordPress 支持 SSO 登录。

    事情的起因是这样的:

    网站的服务越来越多了,但是登录不同的服务需要单独的不同账号,这样显得非常麻烦,所以为了终结需要多个账号的问题,计划三步走:

    1. 在本地尝试使用 Casdoor 接入 WordPress 作为可行性验证;
    2. 搭建一个 Casdoor 服务(https://sso.akarinliu.com),在每个网站的登录页面新增 “阿卡林刘 SSO” 登录选项,引导用户迁移至 SSO。
    3. 等到全部迁移实现或达到迁移目标的 99%,将强制跳转至 SSO 登录。

    1. 安装 Docker

    前往 https://docker.com 安装 Docker。

    2. 安装 1Panel(可选)

    前往 https://1panel.cn 获取安装命令执行安装。

    3. 搭建虚拟环境

    复制以下 Docker Compose 文件和 Casdoor 的配置文件:

    # dir: ./compose.yml
    services:
      mariadb:
        image: mariadb:lts
        volumes:
          - ./data/mariadb:/var/lib/mysql
        environment:
          - MYSQL_ROOT_PASSWORD=mysql
        healthcheck:
          test:
            [
              "CMD",
              "healthcheck.sh",
              "--su-mysql",
              "--connect",
              "--innodb_initialized",
            ]
          start_period: 1m
          start_interval: 10s
          interval: 1m
          timeout: 5s
          retries: 3
      phpmyadmin:
        image: phpmyadmin
        environment:
          - PMA_HOST=mariadb
        ports:
          - 3307:80
        depends_on:
          mariadb:
            condition: service_healthy
      casdoor:
        image: casbin/casdoor
        ports:
          - 8000:8000
        volumes:
          - ./data/casdoor:/data
          - ./conf/casdoor:/conf
        environment:
          - RUNNING_IN_DOCKER=true
        depends_on:
          mariadb:
            condition: service_healthy
      wordpress:
        image: wordpress
        volumes:
          - ./data/wordpress:/var/www/html
        ports:
          - 8080:80
        depends_on:
          mariadb:
            condition: service_healthy
    
    
    # dir: ./conf/casdoor/app.conf
    appname = casdoor
    httpport = 8000
    runmode = dev
    SessionOn = true
    copyrequestbody = true
    driverName = mysql
    dataSourceName = root:mysql@tcp(mariadb:3306)/
    dbName = casdoor
    tableNamePrefix =
    showSql = false
    redisEndpoint =
    defaultStorageProvider =
    isCloudIntranet = false
    authState = "casdoor"
    socks5Proxy = "127.0.0.1:10808"
    verificationCodeTimeout = 30
    initScore = 2000
    logPostOnly = true
    origin = "http://localhost:8000"
    staticBaseUrl = "https://cdn.casbin.org"
    enableGzip = true
    inactiveTimeoutMinutes =

    保存好文件后,执行以下命令启动编排:

    docker compose up -d

    访问 http://localhost:8000 输入账号密码: admin 123

    4. 让 WordPress 接入 Casdoor

    这一点整个过程非常棘手,我一开始使用的 MiniOrange 的 OAuth2 插件,配置好后结果无法正常登录,OpenID 的插件一年没有维护了也不可用。最终使用了 Authorizer 这个插件,目前来看非常可靠,不会出问题。

    我觉得这个最容易掉坑里的是良莠不齐的插件生态,所以如果你有更好的插件,可以在评论区留言。

    好吧,扯远了,回到话题。

    1. 访问 Casdoor 的后台,新建一个组织,不要使用内置的组织;
    2. 切换至新建的组织,创建一个应用,填好信息保存;
    3. 在 WordPress 的插件市场搜索 Authorizer,点击安装;
    4. 在 WordPress 插件管理器 启用它;
    5. 点击 设置 ➡️ Authorizer,打开它的管理页面;
    6. 在外部服务 Tab 勾选 “启用 OAuth2 服务” 复选框;
    7. 请按照下图填写,Client ID 和 Client Secret 填写你在 Casdoor 得到的,另外 localhost:8000 和 casdoor:8000 替换成你部署 SSO 服务的域名,http 替换成 https,最后点击保存。
    图片

    5. 测试部署结果

    辛苦啦,来测试一下结果如何吧!

    在 Casdoor 新组织创建一个与您在 WordPress 用户名和邮箱一致的账号。

    新建一个隐私标签页,访问网站的管理后台,例如:https://www.akarinliu.com/wp-admin。

    这时候会自动跳转至 Casdoor 登录页面,如果没有的话,点击带有 SSO 登录的按钮。

    输入您的账号密码,按下回车键登录。

    如果进入到了后台,恭喜你,WordPress 使用 Casdoor 登录成功!

    总结

    Casdoor 可以解决您的网站的账号体系混乱问题,虽然配置很麻烦,但是一旦配置好了,体验会得到提升,以后不需要多个同域名不同网站的账号了。

  • 如何在不影响 WAF 安全的情况下解决 WordPress 区块编辑器无法保存更改的问题

    这个问题是在我第一次使用 1Panel 搭建网站的时候遇到了,一开始关闭了 WAF,后面网站被 DDoS,上了 Cloudflare。最后发现,只需略微出手,就可以在不影响 WAF 安全的情况下解决这个问题。

    问题分析

    经过分析,可能是 1Panel 拦截了 “/wp-json/” 目录,而它是 WordPress 的公共 API,从而导致无法正常保存区块编辑器的更改。

    解决方案

    以 1Panel 为例:

    1. 访问 1Panel 面板
    2. 点击 “高级功能” → “WAF” → “URL 白名单”
    3. 新增如下规则并保存:
    /wp-json/*

    大功告成!祝武运昌盛(bushi

  • 为什么我会有内存焦虑的感觉?

    这个事情,得从网站搬迁到1Panel的时候说起。

    我的网站迁移至1Panel后,感觉磁盘空间节省了25%,而且对比宝塔面板,他的源代码完全开放,任何人都可以审查源代码的安全性。

    有一天,我更新了OpenResty的版本,很不幸,这个版本有内存泄露的Bug,几天后,我收到了最新版本的OpenResty的更新,新版本已经修复了这个问题。

    6月9日~14日,网站发生宕机事件,重启后,在后台监控看到磁盘IO被占满,与此同时,内存也被占满了。经过排查,是内存用完用SWAP,导致硬盘IO被占满,从而导致服务器宕机。

    现在,在服务器运行的容器从十几个被砍到5~7个,才有了转机。对此,我对内存被占满的问题感到担忧。

  • 为什么我是从 MySQL 用户迁移到 MariaDB 用户

    为什么我是从 MySQL 用户迁移到 MariaDB 用户

    这个故事,还得从4月末开始讲起:

    第一章:从宝塔面板迁移至 1Panel

    4月末,站长开始了宝塔面板替代计划,计划从宝塔面板迁移至 1Panel。当时, WordPress 的迁移用的是 Updraft Plus 插件恢复的,而宝塔面板的备份突然不灵了,备份网站没问题,但是备份数据库变成 20KB,所以不得不使用基于 Rclone 的备份脚本。迁移的时候数据库用的是 MySQL 8.2,当时没什么问题。

    第二章:频繁宕机

    在过去几天,服务器遭遇频繁宕机,本以为是 OpenResty 吃掉了太多的内存,后面经过更新后,OpenResty 也不吃内存了。后面经过一段时间的运行,网站也崩溃了。在经过与飞致云的社区人员交涉,原来是 MySQL 8.2 的内存优化太差了。

    第三章:粉转黑

    从此以后,我已经从 MySQL 的用户转成了 MariaDB 的用户,从此以后,再也没有使用 MySQL, 甚至在使用 Docker 镜像的时候也会对 MySQL 比较排斥。

  • 服务器频繁宕机的背后,是一个有Bug的更新

    在经历上一个版本的 1Panel 的 OpenResty App 更新,服务器出现了频繁宕机,磁盘读取经常被占满。后面经联系阿里云客服,得知是内存被占满后调用了 SWAP,最后导致硬盘读取被占满。

    第一章:噩梦的开始

    4月底,服务器迁移到了 1Panel,当时服务器一直在运行着 WordPress、 Yourls 和 FreshRSS。

    5月21日,服务器发生了宕机事故,当时以为服务器是中了病毒,于是,服务器执行了重启。

    第二章:求助

    当我遇到这个症状后,向飞致云论坛的管理员求助:

    https://bbs.fit2cloud.com/t/topic/5411

    当时,这个问题是普遍性的Bug,后面,飞致云的管理员向我问了一些问题,我把当时发生的情况如实报告给了管理员。

    第三章:真相大白

    今日,飞致云发布了 1Panel 1.10.10 版本更新,同时发布了 OpenResty 1.21.4.3.-3-2-focal 镜像版本,这次更新修复了一个内存泄露的 Bug。真相大白,原来是 OpenResty 的内存占用高的离谱,现在已经修复了。

    总结

    总之,服务器经常宕机的原因是 OpenResty 的内存占用高的离谱,内存用完后用了磁盘的 SWAP,最后导致磁盘读取被占满的 Bug 出现了。

  • 为什么我想抛弃宝塔面板了?

    为什么我想抛弃宝塔面板了?

    本站计划在本月25日迁移至安装有1Panel的服务器,为什么我想抛弃宝塔面板?请听我娓娓道来……

    一个错误

    网站PHP版本升级到了8.2,但是唯一的错误是fileinfo扩展无法正常安装,会发生服务器死机问题,所以我一直没有安装fileinfo扩展。

    无法备份MariaDB数据库

    当我发现宝塔备份功能不能备份MariaDB数据库的时候,我自己用CodeGeeX写了一个Rclone备份脚本,WordPress网站使用了UpdraftPlus备份,这两款软件解决了网站备份问题。

    响应速度变慢

    今年3月,我升级了宝塔面板8.0.4版本,响应速度明显变慢。

    收费+强制用户绑定手机号

    现在我对宝塔面板最大的不满就是强制用户绑定手机号和收费政策,它的价格我无法接受,强制绑定手机号成为了最想抛弃宝塔面板的主要原因。

    总结

    现在,我已经不看好宝塔面板的未来了,未来可能会考虑使用1Panel,宝塔账号将在下个月注销。