注,如果遇上權限不夠,在命令前加上 sudo
!!!
步驟一,創建服務器 git 用戶
- 如果服務器未安裝git,可使用以下命令安裝
apt-get install git
。 git --version
輸出git版本號用來驗證是否安裝成功
- 創建git用戶
adduser git
步驟二,配置服務器git環境
su git
使用git用戶,執行以下命令cd ~/.ssh
,如果提示不存在該文件夾,說明沒有生成密鑰,執行 ssh-keygen -t rsa
,一直enter,最後就能生成密鑰。
- 此時再次執行
cd ~/.ssh
,編輯當前目錄下面的 authorized_keys 文件。將本地的公鑰(本地,非git服務器,cat .ssh/id_rsa.pub
可查看公鑰)寫進authorized_keys 文件,多個本地需分行,即一行一條公鑰
步驟二.一,root權限下,更改環境配置
- 打開文件/etc/ssh/sshd_config
cd /etc/ssh/sshd_config
。
- 1⃣️RSAAuthentication yes #開啓RSA認證功能
- 2⃣️PubkeyAuthentication yes #開啓公匙認證
- 3⃣️StricModes no #據說不改會強制要求登錄用戶和文件擁有者用戶相同
- 將上面1,2,3這三個點前面的註釋去掉即可
- 注意:關於第一點,centos7.4以上是沒有的,不用在意,修改2,3兩點就好
步驟三,初始化服務器git倉庫
- 將git倉庫放置於 /srv 文件夾下面。
cd /srv
進入srv目錄,git init --bare 庫名.git
這是創建一個裸倉庫,沒有工作區,因爲服務器上的git倉庫純粹是爲了共享,不讓用戶直接登錄到服務器上去改工作區,並且服務器上德維爾Git倉庫通常以**.git**結尾。將倉庫所有者改爲 git chown -R git:git 庫名.git
步驟四,禁用服務器git用戶shell登錄
- 出於安全考慮,我們不允許git用戶登錄shell。通過編輯**/etc/passwd**文件完成。將
git:x:1001:1001:,,,:/home/git:/bin/bash
改爲 git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
步驟五,本地git項目操作
- git項目下執行
git remote add origin(短名,可用其他) git@服務器ID:/srv/庫名.git
,設定推送的git服務器地址,遠程分支
git push -u origin(短名,需與上面對應) master(本地master分支)
推送分支到服務器
git remote show
可查看遠程分支
git remote show 分支名
可查看詳細信息
步驟六,網站目錄自動部署
- 進入網站目錄之下,網站目錄依據自身服務器配置,沒有固定路徑,一般爲www目錄
- 如果git服務器與項目處於同一服務器,在網站目錄下執行
git clone /srv/庫名.git
。此時已克隆過來。
- 注意,git用戶應該要有能操作該文件夾所有內容的權限
- 自動部署 hook 腳本。進入服務器git庫目錄
cd /srv/庫名.git
,進入 hooks 目錄cd hooks
,創建上傳後觸發的鉤子,touch post-receive
,賦予權限 chmod -R 777 post-receive
編輯內容vim post-receive
- 內容爲:
#!/bin/sh
export LANG=zh_CN.UTF-8
cd /項目路徑 //這個是你每次要同步的文件夾
unset GIT_DIR //這個很重要! 很多同學沒有寫這個就同步不了,因爲git執行自動腳本的時候有執行一些自定義變量,所以我們在這裏unset一下
git pull origin master
結束
- 完成上面步驟後,每次本地push,將自動更新推送到指定目錄之下,完成自動更新發布