我有我的開發機器上的本地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
那麼,爲什麼不直接推動生活,當你最終拉住生活呢? –