Nuxt.js 之 pm2 零停机部署

地址:https://www.homwang.com 欢迎大家性能测试
交流讨论——QQ群号:604203227

pm2 零停机部署

介绍

该教程感谢Curtis Belt,这是一个非常容易理解的Demo

Ubuntu 测试成功

Linux 测试成功

使用

安装

  • Nuxt (版本号: 2.3.4)
  • Bash (版本号: 4.4.23)
  • Yarn (版本号: 1.12.3)
  • PM2 (版本号: 3.2.2)

pm2 全局安装:

yarn global add pm2
OR
npm install pm2 -g

项目结构

-| src/
----| current/ #最终的项目文件目录
----| deployments/
------| blue/
------| current/
-| install.sh
-| start.sh
-| deploy.sh
-| stop.sh

脚本文件

install.sh

# blue(项目)和green(项目)的依赖以及打包
cd src/deployments/blue
yarn install
yarn build

cd ../green
yarn install
yarn build

start.sh

# 创建/"current"目录并启动PM2
# 安装npm包和build nuxt #初始化blue(项目)部署,然后启动PM2
rm -rf src/current || true
ln -s $PWD/src/deployments/blue $PWD/src/current
pm2 start src/current/ecosystem.config.json

deploy.sh

#部署下一个颜色(项目)并重新加载PM2 
CURRENT_COLOR=$( basename $(readlink src/current) )
NEXT_COLOR=$( [ "$CURRENT_COLOR" == 'blue' ] && echo 'green' || echo 'blue' )

echo "Current deployment is $CURRENT_COLOR"
echo "Deploying $NEXT_COLOR"

# ------------------------------------------------------------------
# 对于真正的部署,此时您将更新项目
# "PWD/src/deployments/$NEXT_COLOR"中的文件,可能通过git pull。
# ------------------------------------------------------------------

# Prepare the next symlink as src/deployments/preparing-current
ln -s $PWD/src/deployments/$NEXT_COLOR $PWD/src/deployments/preparing-current

# Then atomically move it on top of (replacing) src/current
mv -Tf $PWD/src/deployments/preparing-current $PWD/src/current

# Change the working directory to the PARENT directory of your "current" symlink.
cd src/
PM2_CONCURRENT_ACTIONS=1 pm2 reload current/ecosystem.config.json

pm2 status

stop.sh

#停止PM2并删除"current"目录
pm2 delete blue-green-deploy
rm -R src/current

执行说明

bash install.sh  #blue(项目)和green(项目)的依赖以及打包
bash start.sh    #安装npm包和build nuxt #初始化blue(项目)部署,然后启动PM2 
bash deploy.sh   #部署下一个颜色(项目)并重新加载PM2  
bash stop.sh     #停止PM2并删除"current"目录

在运行start.sh,您应该看到blue(项目)部署:

blue.png

然后在运行deploy.sh,您将看到green(项目)部署:

green.png

链接

github

你可能感兴趣的:(Nuxt.js 之 pm2 零停机部署)