服務器自建git倉庫,本地上傳服務器,構建自動發佈

注,如果遇上權限不夠,在命令前加上 sudo !!!

步驟一,創建服務器 git 用戶

  • 如果服務器未安裝git,可使用以下命令安裝 apt-get install gitgit --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,將自動更新推送到指定目錄之下,完成自動更新發布
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章