转载请注明出处:http://www.cnblogs.com/shamoyuu/p/linux_4.html

安装pm2守护进程,备用

npm install -g pm2

创建/srv/www文件夹

mkdir /srv/www

进入/srv/www文件夹

cd /srv/www

克隆服务器的本地仓库

git clone /data/git/test.git

把/srv/www的权限给git

chown -R git:git /srv/www

创建git钩子文件post-receive,会在接收完push请求后执行,这个文件不一定存在,不过无所谓

vim /data/git/test.git/hooks/post-receive

内容如下

echo "==========================================="
cd /srv/www/test
unset GIT_DIR
git pull
if [ -f "package.json" ];then
echo "存在package.json文件,开始部署"
echo -e "node version: \c"
node -v
echo -e "npm version: v\c"
npm -v
# 杀掉进程test-production
pm2 delete test-production
# 删除node_modules
rm -rf node_modules
# 重新初始化
npm install
# 以test-production为名启动pm2的守护进程
pm2 start index.js -i --name "test-production"
else
echo "package.json文件不存"
fi
echo "==========================================="

然后让这个文件变为可执行文件

chmod +x /data/git/test.git/hooks/post-receive

然后把权限重新给git一下

chown -R git:git /data/git

然后在客户端提交一下试试看

注意remote开头的那一段,都是服务器端打印的。

不过此时pm2的守护进程是由git用户开启的,其他用户看不到,pm2在start的时候虽然有个--username的参数,貌似是可以指定用户,但是并没有什么效果,有谁知道可以说一下

所以如果要操作此守护进程,比如查看实时日志,需要切换到git用户,。

好了,现在git自动部署已经完成了。

最新文章

  1. Linux系统检查查看桌面环境
  2. ALV 顶栏的按钮设定
  3. CSS魔法堂:再次认识font
  4. Python WMI获取Windows系统信息 监控系统
  5. 1 mysql的安装
  6. NEC学习 ---- 模块 -多行式面包屑导航
  7. /etc/passwd和/etc/shadow
  8. sql基础查询
  9. Android 与 Webservice 的快速保存
  10. Android开发应用异步检查更新代码
  11. [React Native] Create a component using ScrollView
  12. 收藏的一些javascript片段
  13. OpenGL------三维变换
  14. Cordova(PhoneGap) 环境搭建与基础
  15. 2017计算机学科夏令营上机考试-C:岛屿面积
  16. java中JFrame类中函数addWindowListener(new WindowAdapter)
  17. Mac 下 搭建 svn 服务器
  18. MYSQL数据库数据拆分之分库分表总结
  19. linux 命令ls
  20. java框架之SpringBoot(10)-启动流程及自定义starter

热门文章

  1. 解决本地调用office组件成功,但是发布到IIS中出现的错误(检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失败)
  2. 【Java TCP/IP Socket】基于NIO的TCP通信(含代码)
  3. 【面试 struts2】【第三篇】struts2的问题
  4. Javascript:如何调用全局变量?
  5. 【转】构造HTTP请求Header实现“伪造来源IP”
  6. C# - CLR
  7. HDU 1085 Holding Bin-Laden Captive!(母函数,或者找规律)
  8. hibernate的查询缓存和二级缓存的配合使用
  9. saltstack安装配置(syndic)
  10. 使用脚本删除ios工程中未使用图片