我正在使用 node.js 作为我的网络服务器,并且我希望永远(或类似的东西)运行该服务器。
我还使用 git 来管理网站。我在服务器上有一个裸存储库,可以在本地计算机上推送/pull 。当我推送到存储库时,我希望存储库能够执行三件事。
- CD 到我的工作目录(在服务器上)
- 从裸存储库中提取工作目录
- 重新启动正在运行的网络服务器。
以下脚本似乎是我应该在我的裸存储库中用作 post-receive
Hook 的脚本。
cd ~/site
git pull
sudo forever stopall
sudo forever start main.js
但是,我认为让 git hook 像这样使用 sudo
并不明智。该脚本需要提升才能在端口 80 上运行。
我应该怎么做?我的 git 接收后应该是什么样子?
谢谢!
最佳答案
好吧,对于我的特殊情况,出于安全原因,我不应该以 super 用户身份运行 Node 。我希望将其提升为在端口 80 上运行,但不需要提升为在端口 8000 上运行。
所以我将端口 80 转发到端口 8000,现在在端口 8000 上运行 Node 。它的工作方式仍然与之前相同。
我特别用来将端口 80 转发到 8000 的命令是
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8000
关于linux - Git hooks 可能需要更高的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22704455/