2012-10-04 104 views
3

我有我的開發機器上的本地git倉庫。使用Git我的Node.js應用程序部署到我的生產服務器

我想使用git推代碼到我的生產服務器。並在代碼被推送到那裏時觸發重新啓動Web服務器。

什麼是做到這一點的命令?我正在使用debian。

/var/www/example.com是我的本地庫

生產主機名是production.example.com我有SSH +鍵已經建立。

回答

2

我會建議在回購您的服務器上後收到鉤,用:

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 '.'」中提到的問題。

4

它通常是不直接推碼直播網站是個好主意。爲此,您可以在公用目錄之外的服務器上創建裸存儲庫。這個存儲庫會將更改推送到您的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> 

這是如何工作的,你寫一些代碼,並將其推到裸倉庫,這使用其更新後的掛鉤將更改推送到實時存儲庫並重新啓動服務器。

+0

如果您擴展到擁有多個生產服務器,這將如何工作? – Xerri

+0

您必須編寫一個部署腳本,最終在多個遙控器上運行這些命令。 – rizwaniqbal

+0

那麼,爲什麼不直接推動生活,當你最終拉住生活呢? –

相關問題