我有我的开发机器上的本地git仓库。使用Git我的Node.js应用程序部署到我的生产服务器
我想使用git推代码到我的生产服务器。并在代码被推送到那里时触发重新启动Web服务器。
什么是做到这一点的命令?我正在使用debian。
/var/www/example.com
是我的本地库
生产主机名是production.example.com
我有SSH +键已经建立。
我有我的开发机器上的本地git仓库。使用Git我的Node.js应用程序部署到我的生产服务器
我想使用git推代码到我的生产服务器。并在代码被推送到那里时触发重新启动Web服务器。
什么是做到这一点的命令?我正在使用debian。
/var/www/example.com
是我的本地库
生产主机名是production.example.com
我有SSH +键已经建立。
我会建议在裸回购您的服务器上后收到钩,用:
GIT_DIR=/path/to/bare/repo/.git
GIT_WORK_TREE=/var/www/www.example.org git checkout -f
通过推到裸露的回购协议,你会不会有一个工作树的任何问题你是什么推同步(因为裸回购具有没有工作树)。
然后,你就直接签上直播站点的目录结构裸露的回购协议(通过后收到钩)。
这类似于 “git GIT_WORK_TREE post-receive hook deployment remote”。
设置GIT_DIR
避免“Git checkout in post-receive hook: “Not a git repository '.'
””中提到的问题。
它通常是不直接推码直播网站是个好主意。为此,您可以在公用目录之外的服务器上创建裸存储库。这个存储库会将更改推送到您的Live网站存储库,并且将成为您网站的门卫。要设置,请在您的实时网站目录周围创建一个存储库:
$ cd ~/www
$ git init
$ git add .
$ git commit -m"initial import of pre-existing web files"
创建此目录后,移至无法通过HTTP访问的目录。为了简单起见,我们可以将这个裸目录HUB和网站目录LIVE称为。在这里初始化一个纯仓库:
$ cd; mkdir site_hub.git; cd site_hub.git
$ git --bare init
然后,从现有的网站的工作目录内,加这种纯仓库作为远程和实时推送的网站的主分支。
$ cd ~/www
$ git remote add hub ~/site_hub.git
$ git remote show hub
* remote hub
URL: /home/rizwan/site_hub.git
$ git push hub master
您需要挂钩提交修改到现场仓库。该HUB仓库内创建一个post-update
钩:
#!/bin/sh
echo
echo "**** Pulling changes into Live [Hub's post-update hook]"
echo
cd $HOME/www || exit
unset GIT_DIR
git pull hub master
exec git-update-server-info
这里面钩,你可以有代码拉完成后重新启动服务器。
此外,在LIVE回购创建post-commit
钩送做直播网站回HUB变化。
#!/bin/sh
echo
echo "**** pushing changes to Hub [Live's post-commit hook]"
echo
git push hub
在本地计算机上,添加HUB仓库作为远程和更改推到它:
git remote add hub <hub-repository-url>
这是如何工作的,你写一些代码,并将其推到裸仓库,这使用其更新后的挂钩将更改推送到实时存储库并重新启动服务器。
如果您扩展到拥有多个生产服务器,这将如何工作? – Xerri
您必须编写一个部署脚本,最终在多个遥控器上运行这些命令。 – rizwaniqbal
那么,为什么不直接推动生活,当你最终拉住生活呢? –