优化pm2的安装和启动
This commit is contained in:
parent
24d9b000cd
commit
2353545280
@ -81,6 +81,16 @@ get_optimal_host_ip() {
|
|||||||
echo "$host_ip"
|
echo "$host_ip"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# PM2命令执行函数(统一处理环境变量)
|
||||||
|
execute_pm2_command() {
|
||||||
|
local command="$1"
|
||||||
|
su - jingrow -c "
|
||||||
|
export NVM_DIR=\"\$HOME/.nvm\"
|
||||||
|
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||||
|
$command
|
||||||
|
" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
# 解析命令行参数
|
# 解析命令行参数
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case $1 in
|
case $1 in
|
||||||
@ -761,7 +771,6 @@ start_project_with_pm2() {
|
|||||||
|
|
||||||
# 检查项目是否已经在PM2中运行
|
# 检查项目是否已经在PM2中运行
|
||||||
PM2_STATUS=$(su - jingrow -c "
|
PM2_STATUS=$(su - jingrow -c "
|
||||||
source ~/.bashrc 2>/dev/null || true
|
|
||||||
export NVM_DIR=\"\$HOME/.nvm\"
|
export NVM_DIR=\"\$HOME/.nvm\"
|
||||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||||
pm2 list | grep -w '$SITE_NAME' | wc -l
|
pm2 list | grep -w '$SITE_NAME' | wc -l
|
||||||
@ -771,7 +780,6 @@ start_project_with_pm2() {
|
|||||||
if [ "$FORCE_UPDATE" = true ]; then
|
if [ "$FORCE_UPDATE" = true ]; then
|
||||||
log_warning "项目已在PM2中运行,重新启动..."
|
log_warning "项目已在PM2中运行,重新启动..."
|
||||||
su - jingrow -c "
|
su - jingrow -c "
|
||||||
source ~/.bashrc 2>/dev/null || true
|
|
||||||
export NVM_DIR=\"\$HOME/.nvm\"
|
export NVM_DIR=\"\$HOME/.nvm\"
|
||||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||||
cd /home/jingrow/jsite/$SITE_NAME
|
cd /home/jingrow/jsite/$SITE_NAME
|
||||||
@ -782,7 +790,6 @@ start_project_with_pm2() {
|
|||||||
log_error "PM2启动失败,请检查项目配置和依赖"
|
log_error "PM2启动失败,请检查项目配置和依赖"
|
||||||
log_info "检查PM2日志:"
|
log_info "检查PM2日志:"
|
||||||
su - jingrow -c "
|
su - jingrow -c "
|
||||||
source ~/.bashrc 2>/dev/null || true
|
|
||||||
export NVM_DIR=\"\$HOME/.nvm\"
|
export NVM_DIR=\"\$HOME/.nvm\"
|
||||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||||
pm2 logs $SITE_NAME --lines 10
|
pm2 logs $SITE_NAME --lines 10
|
||||||
@ -793,7 +800,6 @@ start_project_with_pm2() {
|
|||||||
log_warning "项目已在PM2中运行,跳过启动"
|
log_warning "项目已在PM2中运行,跳过启动"
|
||||||
# 即使跳过启动,也要检查现有进程是否正常运行
|
# 即使跳过启动,也要检查现有进程是否正常运行
|
||||||
PM2_RUNNING=$(su - jingrow -c "
|
PM2_RUNNING=$(su - jingrow -c "
|
||||||
source ~/.bashrc 2>/dev/null || true
|
|
||||||
export NVM_DIR=\"\$HOME/.nvm\"
|
export NVM_DIR=\"\$HOME/.nvm\"
|
||||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||||
pm2 list | grep -w '$SITE_NAME' | grep -c 'online' || echo '0'
|
pm2 list | grep -w '$SITE_NAME' | grep -c 'online' || echo '0'
|
||||||
@ -808,7 +814,6 @@ start_project_with_pm2() {
|
|||||||
else
|
else
|
||||||
log_info "启动新项目..."
|
log_info "启动新项目..."
|
||||||
su - jingrow -c "
|
su - jingrow -c "
|
||||||
source ~/.bashrc 2>/dev/null || true
|
|
||||||
export NVM_DIR=\"\$HOME/.nvm\"
|
export NVM_DIR=\"\$HOME/.nvm\"
|
||||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||||
cd /home/jingrow/jsite/$SITE_NAME
|
cd /home/jingrow/jsite/$SITE_NAME
|
||||||
@ -818,7 +823,6 @@ start_project_with_pm2() {
|
|||||||
log_error "PM2启动失败,请检查项目配置和依赖"
|
log_error "PM2启动失败,请检查项目配置和依赖"
|
||||||
log_info "检查PM2日志:"
|
log_info "检查PM2日志:"
|
||||||
su - jingrow -c "
|
su - jingrow -c "
|
||||||
source ~/.bashrc 2>/dev/null || true
|
|
||||||
export NVM_DIR=\"\$HOME/.nvm\"
|
export NVM_DIR=\"\$HOME/.nvm\"
|
||||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||||
pm2 logs $SITE_NAME --lines 10
|
pm2 logs $SITE_NAME --lines 10
|
||||||
@ -827,10 +831,10 @@ start_project_with_pm2() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 等待PM2启动完成,最多等待30秒
|
# 等待PM2启动完成,最多等待60秒
|
||||||
log_info "等待PM2启动完成..."
|
log_info "等待PM2启动完成..."
|
||||||
local wait_time=0
|
local wait_time=0
|
||||||
local max_wait=30
|
local max_wait=60
|
||||||
local pm2_running="0"
|
local pm2_running="0"
|
||||||
|
|
||||||
while [ $wait_time -lt $max_wait ] && [ "$pm2_running" = "0" ]; do
|
while [ $wait_time -lt $max_wait ] && [ "$pm2_running" = "0" ]; do
|
||||||
@ -838,7 +842,6 @@ start_project_with_pm2() {
|
|||||||
wait_time=$((wait_time + 2))
|
wait_time=$((wait_time + 2))
|
||||||
|
|
||||||
pm2_running=$(su - jingrow -c "
|
pm2_running=$(su - jingrow -c "
|
||||||
source ~/.bashrc 2>/dev/null || true
|
|
||||||
export NVM_DIR=\"\$HOME/.nvm\"
|
export NVM_DIR=\"\$HOME/.nvm\"
|
||||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||||
pm2 list | grep -w '$SITE_NAME' | grep -c 'online' || echo '0'
|
pm2 list | grep -w '$SITE_NAME' | grep -c 'online' || echo '0'
|
||||||
@ -854,14 +857,12 @@ start_project_with_pm2() {
|
|||||||
log_error "PM2启动失败,项目未正常运行(等待${wait_time}秒后仍未能启动)"
|
log_error "PM2启动失败,项目未正常运行(等待${wait_time}秒后仍未能启动)"
|
||||||
log_info "检查PM2状态:"
|
log_info "检查PM2状态:"
|
||||||
su - jingrow -c "
|
su - jingrow -c "
|
||||||
source ~/.bashrc 2>/dev/null || true
|
|
||||||
export NVM_DIR=\"\$HOME/.nvm\"
|
export NVM_DIR=\"\$HOME/.nvm\"
|
||||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||||
pm2 list
|
pm2 list
|
||||||
"
|
"
|
||||||
log_info "检查PM2日志:"
|
log_info "检查PM2日志:"
|
||||||
su - jingrow -c "
|
su - jingrow -c "
|
||||||
source ~/.bashrc 2>/dev/null || true
|
|
||||||
export NVM_DIR=\"\$HOME/.nvm\"
|
export NVM_DIR=\"\$HOME/.nvm\"
|
||||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||||
pm2 logs $SITE_NAME --lines 20
|
pm2 logs $SITE_NAME --lines 20
|
||||||
@ -894,14 +895,12 @@ start_project_with_pm2() {
|
|||||||
log_error "项目启动失败:端口 $project_port 未被监听"
|
log_error "项目启动失败:端口 $project_port 未被监听"
|
||||||
log_info "检查PM2状态:"
|
log_info "检查PM2状态:"
|
||||||
su - jingrow -c "
|
su - jingrow -c "
|
||||||
source ~/.bashrc 2>/dev/null || true
|
|
||||||
export NVM_DIR=\"\$HOME/.nvm\"
|
export NVM_DIR=\"\$HOME/.nvm\"
|
||||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||||
pm2 list
|
pm2 list
|
||||||
"
|
"
|
||||||
log_info "检查PM2日志:"
|
log_info "检查PM2日志:"
|
||||||
su - jingrow -c "
|
su - jingrow -c "
|
||||||
source ~/.bashrc 2>/dev/null || true
|
|
||||||
export NVM_DIR=\"\$HOME/.nvm\"
|
export NVM_DIR=\"\$HOME/.nvm\"
|
||||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||||
pm2 logs $SITE_NAME --lines 20
|
pm2 logs $SITE_NAME --lines 20
|
||||||
@ -913,7 +912,6 @@ start_project_with_pm2() {
|
|||||||
|
|
||||||
# 保存PM2配置
|
# 保存PM2配置
|
||||||
su - jingrow -c "
|
su - jingrow -c "
|
||||||
source ~/.bashrc 2>/dev/null || true
|
|
||||||
export NVM_DIR=\"\$HOME/.nvm\"
|
export NVM_DIR=\"\$HOME/.nvm\"
|
||||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||||
pm2 save
|
pm2 save
|
||||||
@ -922,7 +920,6 @@ start_project_with_pm2() {
|
|||||||
# 显示PM2状态
|
# 显示PM2状态
|
||||||
log_info "PM2项目状态:"
|
log_info "PM2项目状态:"
|
||||||
su - jingrow -c "
|
su - jingrow -c "
|
||||||
source ~/.bashrc 2>/dev/null || true
|
|
||||||
export NVM_DIR=\"\$HOME/.nvm\"
|
export NVM_DIR=\"\$HOME/.nvm\"
|
||||||
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||||
pm2 list
|
pm2 list
|
||||||
@ -1227,12 +1224,12 @@ show_deployment_info() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
log_info "PM2管理命令:"
|
log_info "PM2管理命令:"
|
||||||
echo " - 查看状态: pm2 list"
|
echo " - 查看状态: su - jingrow -c 'export NVM_DIR=\"\$HOME/.nvm\" && [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" && pm2 list'"
|
||||||
echo " - 查看日志: pm2 logs $SITE_NAME"
|
echo " - 查看日志: su - jingrow -c 'export NVM_DIR=\"\$HOME/.nvm\" && [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" && pm2 logs $SITE_NAME'"
|
||||||
echo " - 重启项目: pm2 restart $SITE_NAME"
|
echo " - 重启项目: su - jingrow -c 'export NVM_DIR=\"\$HOME/.nvm\" && [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" && pm2 restart $SITE_NAME'"
|
||||||
echo " - 停止项目: pm2 stop $SITE_NAME"
|
echo " - 停止项目: su - jingrow -c 'export NVM_DIR=\"\$HOME/.nvm\" && [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" && pm2 stop $SITE_NAME'"
|
||||||
echo " - 删除项目: pm2 delete $SITE_NAME"
|
echo " - 删除项目: su - jingrow -c 'export NVM_DIR=\"\$HOME/.nvm\" && [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" && pm2 delete $SITE_NAME'"
|
||||||
echo " - 监控界面: pm2 monit"
|
echo " - 监控界面: su - jingrow -c 'export NVM_DIR=\"\$HOME/.nvm\" && [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" && pm2 monit'"
|
||||||
|
|
||||||
log_info "Traefik配置信息:"
|
log_info "Traefik配置信息:"
|
||||||
echo " - 网站配置文件: /home/jingrow/traefik-docker/conf.d/website/$SITE_NAME.yml"
|
echo " - 网站配置文件: /home/jingrow/traefik-docker/conf.d/website/$SITE_NAME.yml"
|
||||||
@ -1242,10 +1239,18 @@ show_deployment_info() {
|
|||||||
# 显示当前端口分配情况
|
# 显示当前端口分配情况
|
||||||
show_port_assignments
|
show_port_assignments
|
||||||
|
|
||||||
|
# 显示PM2状态
|
||||||
|
log_info "当前PM2状态:"
|
||||||
|
su - jingrow -c "
|
||||||
|
export NVM_DIR=\"\$HOME/.nvm\"
|
||||||
|
[ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\"
|
||||||
|
pm2 list
|
||||||
|
" 2>/dev/null || log_warning "无法获取PM2状态,请手动执行: su - jingrow -c 'export NVM_DIR=\"\$HOME/.nvm\" && [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" && pm2 list'"
|
||||||
|
|
||||||
log_info "下一步操作:"
|
log_info "下一步操作:"
|
||||||
echo " 1. 进入项目目录: cd /home/jingrow/jsite/$SITE_NAME"
|
echo " 1. 进入项目目录: cd /home/jingrow/jsite/$SITE_NAME"
|
||||||
echo " 2. 查看PM2状态: pm2 list"
|
echo " 2. 查看PM2状态: su - jingrow -c 'export NVM_DIR=\"\$HOME/.nvm\" && [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" && pm2 list'"
|
||||||
echo " 3. 查看项目日志: pm2 logs $SITE_NAME"
|
echo " 3. 查看项目日志: su - jingrow -c 'export NVM_DIR=\"\$HOME/.nvm\" && [ -s \"\$NVM_DIR/nvm.sh\" ] && \. \"\$NVM_DIR/nvm.sh\" && pm2 logs $SITE_NAME'"
|
||||||
echo " 4. 访问Traefik管理界面: http://localhost:8080"
|
echo " 4. 访问Traefik管理界面: http://localhost:8080"
|
||||||
echo " 5. 访问项目: $SITE_URL"
|
echo " 5. 访问项目: $SITE_URL"
|
||||||
echo " 6. 检查traefik配置: cat /home/jingrow/traefik-docker/conf.d/website/$SITE_NAME.yml"
|
echo " 6. 检查traefik配置: cat /home/jingrow/traefik-docker/conf.d/website/$SITE_NAME.yml"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user