服務器上安裝Git依賴及Git
參考文章
簡述
1、服務器上安裝Git依賴及Git
2、創建Git用戶及所屬組
3、服務器上初始化Git倉庫
4、安裝Git客戶端并生成公鑰
5、創建證書登錄
6、使用Git Bash克隆服務器上的空倉庫
7、將本地庫項目推送到服務器
1、服務器上安裝Git以及依賴
1.1安裝Git依賴
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
1.2.安裝Git
yum install -y git
2、創建”用戶組“和”用戶“,用來運行git服務
2.1創建用戶組
groupadd git
2.2添加git用戶組下的用戶
adduser phper -g git
2.3為用戶名為phper 的用戶設置密碼
passwd phper
Changing password for user git.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
3、建立git倉庫
mkdir gitroot
chmown phper:git gitroot
cd /gitroot
git init --bare project.git
chmown -R phper:git project.git
chmod 774 -R project.git
cd ../
chmod 750 gitroot
4、安裝Git客戶端并生成公鑰
4.1下載git客戶端安裝好后右鍵選擇Git GUI Here->Help->Show SSH Key
就能得到私鑰和公鑰
打開Puttygen
load之前生成好的私鑰
得到格式化后的私鑰,點擊保存私鑰
配置小烏龜
4.2創建證書登錄
切換到phper目錄
cd /home/phper
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
然后將客戶端的公鑰上傳到.ssh目錄
cd .ssh
rz
將公鑰添加進authorized_keys中
cat id_rsa.pub >> authorized_keys
5、克隆到本地
右鍵選擇git克隆
這樣就把服務器的空倉庫拉取下來了。
現在我們能夠正常的提交代碼到服務器的git,但是還不能自動同步,我們還需要修改服務器的hooks/post-receive文件。具體post-receive內容
#!/bin/sh
unset GIT_DIR
DeployPath="/alidata/www/project"
LogPath="/alidata/gitroot/project.git/hooks"
echo -e "\n================= `date +"%Y-%m-%d %H:%M:%S"` ===============\n" >> $LogPath/gitsync.log 2>&1
cd $DeployPath
#git stash
#先拉取再合并
git pull origin master >> $LogPath/gitsync.log 2>&1
#強制與遠程服務器同步,不與本地合并,只能通過提交的客戶端提交的方式修改代碼。
#git fetch --all
#git reset --hard origin/master
#time=`date`
#echo "web server pull at webserver at time: $time."
echo "================================================" >> $LogPath/gitsync.log 2>&1
更改post-receive的所有者和權限
chmod -R 774 post-receive
chown phper:git post-receive
最后在www下
mkdir project
chown -R phper:git project
chmod -R 774 project
cd /alidata/www
git clone /gitroot/project.git
好了git的同步就弄好了
如果同步用不了,打開hooks/gitsync.log查看錯誤日志
可能預見的錯誤
1、fatal: /usr/libexec/git-core/git-pull cannot be used without a working tree.
同步的項目文件夾沒有建立---------------解決辦法:在www下建立project項目文件夾
2、fatal: Not a git repository (or any of the parent directories): .git
項目文件里沒有git初始化------------------解決辦法:在www路徑下執行git clone /alidata/gitroot/project.git
3、error: cannot open .git/FETCH_HEAD: Permission denied
git在項目目錄沒有寫入權限---------------解決辦法:修改所有者以及權限 chown -R phper:git project / chmod -R 774 project
4、每次pull push的時候還是要輸入密碼
秘鑰沒有起作用-----------------------------解決辦法:/var/log/secure查看一下日志,是否是.ssh的權限問題
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
來源:https://my.oschina.net/u/3367404/blog/3003136
作者:linjin200
來源:本文內容搜集或轉自各大網絡平臺,并已注明來源、出處,如果轉載侵犯您的版權或非授權發布,請聯系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,文章版權及插圖屬于原作者。
Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發布查詢平臺保留所有權利
蘇公網安備32010402000125
蘇ICP備14051488號-3技術支持:南京博盛藍睿網絡科技有限公司
南京思必達教育科技有限公司版權所有 百度統計