天天看點

簡單利用git部署網站到伺服器

傳統部署網站到伺服器的方法一般是FTP,但是這樣會有一些問題,比如一個是上傳速度慢,再一個是不能進行版本控制。

常用的一個分布式版本控制工具就是git,關于git的詳細使用方法可以參考廖雪峰Git教程。

準備

首先你得有一個主機作為伺服器,可以ssh登入,假設伺服器資訊如下

host: blinkdr.test
user: blinkdr
passwd: 123456
siteroot: /home/blinkdr/public_html  //網站根目錄
           

另外在本地端和伺服器端都應安裝好了git工具,簡單利用git部署網站的基本原理如下

簡單利用git部署網站到伺服器

當本地代碼倉push時,會觸發伺服器端git的一個鈎子(post-receive),進而執行checkout到網站目錄的指令。

伺服器端倉庫配置

1.建立一個目錄作為遠端代碼倉庫

mkdir ~/test.git //用戶端代碼都送出到這裡
           

2.初始化代碼倉

cd test.git
git init --bare //這裡一定要加--bare選項
           

3.複制配置檔案

cd hooks
cp post-receive.sample post-receive
           

4.編輯post-receive内容

#!/bin/bash
#
SITEROOT=/home/blinkdr/public_html
#清楚沒有git add的檔案和目錄
git --work-tree=${SITEROOT} clean -fd
#從倉庫中強制checkout代碼
git --work-tree=${SITEROOT} checkout -f
           

用戶端設定

1.建立本地檔案夾并與伺服器倉庫關聯

mkdir test
cd test
git init
git remote add origin [email protected]:/home/blinkdr/test.git
//這裡會讓你輸入使用者'blinkdr'的密碼'123456'
//若不想輸入密碼,則需要将本地用戶端的'id_rsa.pub'檔案中的内容添加到伺服器中'/home/blinkdr/.ssh'目錄下的authorized_keys檔案中
           

2.編輯本地檔案送出伺服器

touch test.php
echo "<?php echo 'hello world'; ?>" >> test.php
git add test.php
git commit -m "new a file test.php"
git push origin master
           

3.檢視效果

通過ssh登入到伺服器,檢視網站根目錄下是否有”test.php”檔案。

或者直接通路”http://blinkdr.test/test.php“看是否輸出’hello world’(這裡假設伺服器都已經配置好)。

如果在這過程中,沒有部署成功,很大一部分原因是目前使用者對網站的根目錄沒有寫的權限,隻需對其做權限修改即可。

git