傳統部署網站到伺服器的方法一般是FTP,但是這樣會有一些問題,比如一個是上傳速度慢,再一個是不能進行版本控制。
常用的一個分布式版本控制工具就是git,關于git的詳細使用方法可以參考廖雪峰Git教程。
準備
首先你得有一個主機作為伺服器,可以ssh登入,假設伺服器資訊如下
host: blinkdr.test
user: blinkdr
passwd: 123456
siteroot: /home/blinkdr/public_html //網站根目錄
另外在本地端和伺服器端都應安裝好了git工具,簡單利用git部署網站的基本原理如下
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0NXYFhGd192UvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc1TPnN2a01mYwhXbZZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TM3AjN0MTMzETNyMDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
當本地代碼倉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’(這裡假設伺服器都已經配置好)。
如果在這過程中,沒有部署成功,很大一部分原因是目前使用者對網站的根目錄沒有寫的權限,隻需對其做權限修改即可。