删除不再使用的文件和配置,优化项目结构以提升可维护性;新增环境变量配置示例,更新 Docker 和部署相关文件以支持灵活的端口设置;重构数据库连接逻辑,增强错误处理和配置管理,确保更好的兼容性和稳定性。

This commit is contained in:
2026-02-02 18:16:15 +08:00
parent 6dcc6a4709
commit 8eec1ab78c
126 changed files with 12536 additions and 20384 deletions

View File

@@ -19,6 +19,7 @@ Soul 创业派对 - 一键部署脚本
BAOTA_PANEL_URL # 宝塔面板地址,默认 https://42.194.232.22:9988
BAOTA_API_KEY # 宝塔 API 密钥,默认 hsAWqFSi0GOCrunhmYdkxy92tBXfqYjd
DEPLOY_PM2_APP # PM2 项目名称,默认 soul
DEPLOY_PORT # Next.js 监听端口,默认 3006与 package.json / ecosystem 一致)
DEPLOY_NODE_VERSION # Node 版本,默认 v22.14.0(用于显示)
DEPLOY_NODE_PATH # Node 可执行文件路径,默认 /www/server/nodejs/v22.14.0/bin
# 用于避免多 Node 环境冲突,确保使用指定的 Node 版本
@@ -70,6 +71,7 @@ def get_cfg():
"api_key": os.environ.get("BAOTA_API_KEY", "hsAWqFSi0GOCrunhmYdkxy92tBXfqYjd"),
"pm2_name": os.environ.get("DEPLOY_PM2_APP", "soul"),
"site_url": os.environ.get("DEPLOY_SITE_URL", "https://soul.quwanzhi.com"),
"port": int(os.environ.get("DEPLOY_PORT", "3006")), # Next.js 监听端口,与 package.json / ecosystem 一致
# Node 环境配置
"node_version": os.environ.get("DEPLOY_NODE_VERSION", "v22.14.0"), # 指定 Node 版本
"node_path": os.environ.get("DEPLOY_NODE_PATH", "/www/server/nodejs/v22.14.0/bin"), # Node 可执行文件路径
@@ -187,17 +189,22 @@ def restart_node_project(panel_url, api_key, pm2_name):
def add_or_update_node_project(panel_url, api_key, pm2_name, project_path, port=3006, node_path=None):
"""通过宝塔 API 添加或更新 Node 项目配置"""
"""通过宝塔 API 添加或更新 Node 项目配置
Next.js standalone 的 server.js 通过 process.env.PORT 读端口(默认 3000
这里在 run_cmd 中显式设置 PORT=port与项目 package.json / ecosystem 的 3006 一致。
"""
paths_to_try = [
"/project/nodejs/add_project",
"/plugin?action=a&name=nodejs&s=add_project",
]
# 如果指定了 Node 路径,在启动命令中使用完整路径
# Next.js standalone显式传 PORT避免宝塔未注入时用默认 3000
port_env = "PORT=%d " % port
if node_path:
run_cmd = "%s/node server.js" % node_path
run_cmd = port_env + "%s/node server.js" % node_path
else:
run_cmd = "node server.js"
run_cmd = port_env + "node server.js"
payload = {
"name": pm2_name,
@@ -709,7 +716,7 @@ echo '解压完成'
# ==================== 宝塔 API 部署 ====================
def deploy_via_baota_api(cfg):
"""通过宝塔 API 管理 Node 项目部署"""
"""通过宝塔 API 管理 Node 项目部署(针对 Next.js standalonenode server.js + PORT"""
print("[4/4] 宝塔 API 管理 Node 项目 ...")
panel_url = cfg["panel_url"]
@@ -717,7 +724,7 @@ def deploy_via_baota_api(cfg):
pm2_name = cfg["pm2_name"]
project_path = cfg["project_path"]
node_path = cfg.get("node_path", "/www/server/nodejs/v22.14.0/bin")
port = 3006 # 默认端口
port = cfg.get("port", 3006) # 与 package.json dev/start -p 3006、ecosystem PORT 一致
# 1. 检查项目是否存在
print(" 检查项目状态...")
@@ -757,7 +764,7 @@ def deploy_via_baota_api(cfg):
if not ok:
print(" 提示: 若 Node 接口不可用请在宝塔面板【Node 项目】中手动重启 %s" % pm2_name)
print(" 项目路径: %s" % project_path)
print(" 启动命令: %s/node server.js" % node_path)
print(" 启动命令: PORT=%d %s/node server.js" % (port, node_path))
print(" 端口: %d" % port)
print(" Node 版本: %s" % cfg.get("node_version", "v22.14.0"))
@@ -789,6 +796,7 @@ def main():
print(" 项目路径: %s" % cfg["project_path"])
print(" PM2 名称: %s" % cfg["pm2_name"])
print(" 站点地址: %s" % cfg["site_url"])
print(" 端口: %s" % cfg.get("port", 3006))
print(" Node 版本: %s" % cfg.get("node_version", "v22.14.0"))
print(" Node 路径: %s" % cfg.get("node_path", "/www/server/nodejs/v22.14.0/bin"))
print("=" * 60)