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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容