# -*- coding: utf-8 -*- r'''查 1Panel 和我装的 nginx 会不会打架。 == 为什么要查 == 发现服务器上有 1Panel。1Panel 默认会**自己装一套 OpenResty(nginx)** 放在 /opt/1panel/apps/openresty/ 下,并且**接管 80/443**。 而我为了给遥控中转做反代,用 apt 装了**系统 nginx**,也在听 80/443。 两个 nginx 抢同一组端口,只有一个能起来 —— 另一个会 `Address already in use`。所以现在实际生效的到底是谁的配置, 必须搞清楚,否则: * 我给 yk.xxmxxs.top 配的证书和反代可能**根本没生效** (之前测通了,说明生效的是我的那份) * 但用户在 1Panel 里建站,可能**建了个寂寞**(1Panel 的 OpenResty 起不来) == 查什么 == 1. 系统里到底有几个 nginx/OpenResty 可执行文件 2. 现在听 80/443 的是哪个进程(看 exe 路径) 3. 1Panel 的应用目录里有没有 openresty、有没有建过站 4. 1Panel 面板自己在哪个端口 5. 有没有已经存在的 WordPress 容器 ''' from __future__ import annotations import sys from pathlib import Path ROOT = Path(__file__).resolve().parent.parent sys.path.insert(0, str(ROOT / "_build")) from lssh import run # noqa: E402 REMOTE = r''' echo "==== 1. 有几个 nginx / openresty ====" for p in /usr/sbin/nginx /usr/local/openresty/nginx/sbin/nginx \ /opt/1panel/apps/openresty/openresty/bin/openresty; do [ -x "$p" ] && echo " 有: $p" done command -v nginx openresty 2>/dev/null | sed 's/^/ PATH 里: /' echo echo "==== 2. 现在听 80/443 的是谁(看可执行文件路径)====" sudo ss -tlnp 2>/dev/null | grep -E ':(80|443) ' | sed 's/^/ /' echo echo "==== 3. 1Panel 的 nginx 有没有在跑 ====" for s in openresty nginx 1panel; do st=$(systemctl is-active $s 2>/dev/null) [ -n "$st" ] && echo " $s: $st" done echo " --- 1Panel 应用目录 ---" sudo ls -1 /opt/1panel/apps/ 2>/dev/null | sed 's/^/ /' || echo " (没有 /opt/1panel/apps)" echo " --- 1Panel 的 www 站点目录 ---" sudo ls -1 /opt/1panel/www/sites/ 2>/dev/null | sed 's/^/ /' || echo " (还没建过站)" echo echo "==== 4. 1Panel 面板自己在哪 ====" sudo ss -tlnp 2>/dev/null | grep -i 1panel | sed 's/^/ /' sudo grep -h "Port\|port" /opt/1panel/conf/app.yaml 2>/dev/null | head -3 | sed 's/^/ /' echo echo "==== 5. 现有的容器 ====" sudo docker ps --format ' {{.Names}} {{.Image}} {{.Status}} {{.Ports}}' 2>/dev/null || echo " (docker 命令不可用)" echo echo "==== 6. 系统 nginx 的配置来自哪 ====" systemctl show nginx -p FragmentPath 2>/dev/null | sed 's/^/ /' nginx -v 2>&1 | sed 's/^/ /' echo echo "==== 7. 1Panel 有没有装 php/mysql 应用 ====" sudo ls -1 /opt/1panel/apps/ 2>/dev/null | while read a; do echo " 应用 $a:" sudo ls -1 /opt/1panel/apps/$a 2>/dev/null | sed 's/^/ /' done ''' def main() -> int: print("=" * 58) print(" 1Panel 和系统 nginx 会不会打架") print("=" * 58) print() out = run(REMOTE, timeout=240, quiet=True) print(out[1] if isinstance(out, tuple) else out) return 0 if __name__ == "__main__": sys.exit(main())