删除不再使用的文件和配置,优化项目结构以提升可维护性;新增环境变量配置示例,更新 Docker 和部署相关文件以支持灵活的端口设置;重构数据库连接逻辑,增强错误处理和配置管理,确保更好的兼容性和稳定性。
This commit is contained in:
@@ -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 standalone:node 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)
|
||||
|
||||
Reference in New Issue
Block a user