私有服务器做GIT服务器
在hook做了自动提交脚本如下:
#!/bin/sh # 打印输出 echo '======上传代码到服务器======' # 打开线上项目文件夹 cd /www/wwwroot/dev/crm # 这个很重要,如果不取消的话将不能在cd的路径上进行git操作 unset GIT_DIR #git pull origin master git fetch --all && git reset --hard origin/master && git pull # 自动编译vue项目,如有需要请去掉前面的#号 npm i -g npm run build # 自动更新composer(我暂时没试过) #composer update echo $(date) >> hook.log echo '======代码更新完成======'
结果每次提交时都提示command not found 。
以前一直手工再登录服务器再进行人工打包,今天有空,找了一些资料。终于解决。不费话,先说步骤。
1、找到文件
/etc/sudoers
打开编辑,
## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL
找到以上文字,在后面添加命令
git的用户名 ALL = NOPASSWD: ALL
保存退出,
运行:
visudo -c #检查是是否文件是否正确
以上操作是先将git 用户 的sudo命令的输入密码 去掉。
2、修改自动提交脚本如下:
#!/bin/sh # 打印输出 echo '======上传代码到服务器======' # 打开线上项目文件夹 cd /www/wwwroot/dev/crm # 这个很重要,如果不取消的话将不能在cd的路径上进行git操作 unset GIT_DIR #git pull origin master git fetch --all && git reset --hard origin/master && git pull # 自动编译vue项目,如有需要请去掉前面的#号 sudo npm i -g #改了这里 sudo npm run build #改了这里 # 自动更新composer(我暂时没试过) #composer update echo $(date) >> hook.log echo '======代码更新完成======'
3、ln 命令解决command not found 的问题
先执行 which npm
显示:/www/server/nvm/versions/node/v14.16.1/bin/npm
这时要执行以下命令:
sudo ln -s /www/server/nvm/versions/node/v14.16.1/bin/node /usr/bin/node sudo ln -s /www/server/nvm/versions/node/v14.16.1/lib/node /usr/lib/node sudo ln -s /www/server/nvm/versions/node/v14.16.1/bin/npm /usr/bin/npm sudo ln -s /www/server/nvm/versions/node/v14.16.1/bin/node-waf /usr/bin/node-waf
然后,再对文件做git push测试通过。