分类: 未分类

  • 不花钱做监控:教你用 10 行 Python 代码自动检测 VPS 和博客状态

    作为一个正在学习编程的学生,我最近刚刚在 RackNerd 的 VPS 上搭建了自己的 WordPress 博客。虽然网站跑起来了,但我总担心它会不会突然挂掉(比如 Docker 崩溃或者 Nginx 报错)。

    市面上的服务器监控服务(如 UptimeRobot)虽然好用,但很多高级功能都要收费。我想:既然我有 VPS,为什么不利用 Python 自己写一个简单的监控脚本呢?

    今天这就教大家如何用不到 10 行 Python 代码,配合 Linux 的 Crontab 定时任务,给你的博客做一个“24小时免费体检医生”。

    解决方案如下:

    Step 1: 安装依赖

    首先,我们需要在 Debian/Ubuntu 系统中安装 Python 的请求库 requests。为了避免 pip 报错,推荐直接用 apt 安装:

    apt update && apt install python3-requests -y

    Step 2: 编写监控脚本

    我们在 /root 目录下创建一个名为 monitor.py 的文件。这个脚本的逻辑很简单:尝试访问博客主页,如果返回状态码 200,就记录“正常”;否则记录“异常”。

    import requests
    import datetime
    
    # 你的博客地址
    url = "https://usnstygvo.info"
    # 日志文件保存路径
    log_file = "/root/website_status.log"
    
    def check_website():
        timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        try:
            # 发送请求,超时时间设为 10 秒
            response = requests.get(url, timeout=10)
            
            if response.status_code == 200:
                status = "✅ 正常 (200)"
            else:
                status = f"❌ 异常 ({response.status_code})"
                
        except Exception as e:
            status = f"💥 无法连接 ({str(e)})"
    
        # 写入日志
        log_entry = f"[{timestamp}] {status}\n"
        with open(log_file, "a") as f:
            f.write(log_entry)
        
        print(log_entry.strip())
    
    if __name__ == "__main__":
        check_website()

    Step 3: 验证运行 (关键截图)

    写好后,我们先手动运行一次,看看效果:

    python3 monitor.py

    运行结果如下:

    Step 4: 设置自动化 (Crontab)

    脚本没问题了,最后一步是让它每 30 分钟自动跑一次。我们要编辑 Crontab 配置:

    crontab -e

    在文件末尾添加这一行:

    */30 * * * * /usr/bin/python3 /root/monitor.py

    这样,系统就会在后台默默守护你的网站了。

  • VPS 443 端口被占用怎么办?Xray 回落 Nginx/WordPress 实现共存与 HTTPS

    很多新手在使用 VPS 建站时,都会遇到 Xray 443端口 冲突的问题

    现在我来讲一下我遇到到相关问题和解决方法

    我在 RackNerd 的 VPS 上用 Docker 部署了 WordPress,同时安装了 x-ui 面板管理 Xray。我想让博客使用 HTTPS (443 端口),但发现 443 已经被 Xray 占用了

    解决方法:
    尝试用 Reality 协议,但无法完美回落到本地网站;尝试直接开启 HTTPS,浏览器报错。

    网站无法访问

    报错一: 浏览器无法访问,显示 ERR_HTTP2_PROTOCOL_ERROR

    解决方案:回到 x-ui 面板,再次编辑那个 443 端口的配置:

    点击底部的 “修改”

    找到 ALPN 这一栏:

    现在的样子:h2,http/1.1

    修改动作: h2, 删掉!

    改成: http/1.1

    (只保留 http/1.1,确保没有多余的空格)

    保存并重启:

    报错二: 网站样式丢失,控制台显示 Mixed Content: The page at 'https://...' was loaded over HTTPS, but requested an insecure stylesheet...

    访问后样式丢失

    解决方案:

    Step 1: 证书申请

    • certbot 申请证书,并拿到 fullchain.pemprivkey.pem 的路径。

    Step 2: x-ui 面板配置 (关键)

    • 协议选择: 强调必须用 VLESS + TLS (不能用 Reality)。
    • Fallback 设置: 设置 dest: 80xver: 0
    • ALPN 修正: 必须删除 h2,只保留 http/1.1”,是因为 Docker 容器内的 Nginx 默认不支持 HTTP/2所以才导致报错。
    ALPN 修正

    Step 3: WordPress 强制 HTTPS (终极修正)

    修改 wp-config.php

    $_SERVER[‘HTTPS’] = ‘on’;
    define(‘WP_HOME’, ‘https://usnstygvo.info’);
    define(‘WP_SITEURL’, ‘https://usnstygvo.info’);

    前端界面混乱是因为反向代理背后的 SSL 卸载导致的问题

  • Python “IndentationError: expected an indented block” 解决方法

    今天写代码遇到了这个缩进错误。

    原因:Python 对缩进要求很严格,我在 if 语句后面忘了缩进。

    解决方法:在报错行前面加 4 个空格。

  • 世界,您好!

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