搭建服務(wù)器上的GIT并實現(xiàn)自動同步到站點目錄(www)

      網(wǎng)友投稿 963 2025-03-31

      前言:當(dāng)我們想要實現(xiàn)幾個小伙伴合作開發(fā)同一個項目,或者建立一個資源分享平臺的時候,GIT就是一個很好的選擇。當(dāng)然,既然是一個共有平臺,那么把這個平臺放到個人計算機上明顯是不合適的,因此就要在服務(wù)器上搭建GIT了。另一個需求是,我們在本地開發(fā),然后推送到服務(wù)器上,并且自動同步到web站點目錄,這樣就可以直接看到網(wǎng)頁效果了,這就要實現(xiàn)自動同步。下面我?guī)ьI(lǐng)大家實現(xiàn)這么一個功能。


      如果條件允許的話,大家可以跟著做的(注:我的服務(wù)器是centos 7,lamp環(huán)境)。

      一、在服務(wù)器上安裝git:

      //yum安裝

      yum install -y git

      1

      2

      在安裝完之后你可以運行g(shù)it進行測試,看看是否安裝成功。

      二、在服務(wù)器上創(chuàng)建裸版本庫:

      ps:遠(yuǎn)程倉庫通常只是一個裸倉庫(bare repository) — 即一個沒有當(dāng)前工作目錄的倉庫。因為該倉庫只是一個合作媒介,所以不需要從硬盤上取出最新版本的快照;倉庫里存放的僅僅是 Git 的數(shù)據(jù)。簡單地說,裸倉庫就是你工作目錄中 .git 子目錄內(nèi)的內(nèi)容

      我們就在 /home/testgit/ 下創(chuàng)建一個叫 sample.git的裸倉庫吧:

      mkdir /home/testgit

      cd /home/testgit

      git init --bare sample.git

      //這里 git init 是初始化空倉庫的意思,而參數(shù) --bare 是代表創(chuàng)建裸倉庫,這個參數(shù)一定記得帶上

      1

      2

      3

      4

      當(dāng)運行完上面的最后一句命令時,會有提示:Initialized empty Git repository in /home/testgit/sample.git/

      如果你得不到該結(jié)果,可能就要回頭檢查哪一步出問題了

      三、創(chuàng)建web站點目錄www

      如果你已經(jīng)擁有l(wèi)amp環(huán)境,那么相信你已經(jīng)了解該目錄,搭建lamp環(huán)境詳情可以看我的另一篇博客:centos 7搭建lamp平臺環(huán)境、Centos7 系統(tǒng)下怎么更改apache默認(rèn)網(wǎng)站目錄

      現(xiàn)在我的 web 站點目錄在 /home/www

      四、在本地克隆服務(wù)器上的裸倉庫:

      前提:本地已安裝git

      打開 git bash ,我打算在我的D盤下創(chuàng)建一個名為 lsgogit 的版本庫

      cd /d

      git clone git@115.159.146.94:/home/testgit/sample.git lsgogit

      1

      2

      在這里如果沒有配置公鑰的話,會提示輸入密碼,但是我們可能并不知道密碼,那就配置公鑰咯:

      1、查看自己計算機的公鑰:

      //查看是否有了ssh密鑰,如果沒有密鑰則不會有此文件夾

      cd ~/.ssh

      ls -al

      //如果列出了authorized_keys2 id_dsa known_hosts config id_dsa.pub 則證明你擁有公鑰。

      1

      2

      3

      4

      我們需要尋找一對以 id_dsa 或 id_rsa 命名的文件,其中一個帶有 .pub 擴展名。 .pub 文件是你的公鑰,另一個則是私鑰。 如果找不到這樣的文件(或者根本沒有 .ssh 目錄),你可以通過運行 ssh-keygen 程序來創(chuàng)建它們。在 Linux/Mac 系統(tǒng)中,ssh-keygen 隨 SSH 軟件包提供;在 Windows 上,該程序包含于 MSysGit 軟件包中。

      首先 ssh-keygen 會確認(rèn)密鑰的存儲位置(默認(rèn)是 .ssh/id_rsa),然后它會要求你輸入兩次密鑰口令。如果你不想在使用密鑰時輸入口令,將其留空即可。

      現(xiàn)在,進行了上述操作的用戶需要將各自的公鑰發(fā)送給任意一個 Git 服務(wù)器管理員(假設(shè)服務(wù)器正在使用基于公鑰的 SSH 驗證設(shè)置)。 他們所要做的就是復(fù)制各自的 .pub 文件內(nèi)容,并將其通過郵件發(fā)送。 公鑰看起來是這樣的:

      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAcnTC3A++ginnxr2dvtQa881abjGIzk99KQVg/sPpqvtT3espFKBs/wqrJ9naIPtCswKDMg2tBVgJzg5FimDjI44O072qAftRcjU2EEySlGDDetREOvcDxqcXzf6cAdhnKlYcPk8s46oC+SxhK0zAFZCZNc7z9GcEPOC+ESIettycDw/Bo11WfxAWS0hky2F3rYh5CRr8j7BKRsAvEaAyKwzmM9X0XCRniC2pD0ObX0/SjPwq9Q5/Vjg03muiSo5Bm/xmuHkwb4/uQglBwnaSqEr6YkL9xLMoNsQaJ1TAvTrEaZLNhWzN8iaPyKZMJEzPLX1NgeEx9AEae39N+NsJ LSGO@zhongjin

      1

      現(xiàn)在我們回到服務(wù)器管理員的身份

      由于前面安裝git的時候,centos會默認(rèn)創(chuàng)建一個git用戶(其他系統(tǒng)貌似需要手動創(chuàng)建),我們進入/home/git/.ssh,里面有一個名為 authorized_keys 的文件,我們分別將其他開發(fā)者的公鑰(全選、復(fù)制、不能更改?。┨砑拥皆撐募?,一個開發(fā)者的公鑰分一行。

      現(xiàn)在我們看看有兩個開發(fā)者(個人電腦分別是zhongjin 和 jinjinzhong)的authorized_keys文件:

      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAcnTC3A++ginnxr2dvtQa881abjGIzk99KQVg/sPpqvtT3espFKBs/wqrJ9naIPtCswKDMg2tBVgJzg5FimDjI44O072qAftRcjU2EEySlGDDetREOvcDxqcXzf6cAdhnKlYcPk8s46oC+SxhK0zAFZCZNc7z9GcEPOC+ESIettycDw/Bo11WfxAWS0hky2F3rYh5CRr8j7BKRsAvEaAyKwzmM9X0XCRniC2pD0ObX0/SjPwq9Q5/Vjg03muiSo5Bm/xmuHkwb4/uQglBwnaSqEr6YkL9xLMoNsQaJ1TAvTrEaZLNhWzN8iaPyKZMJEzPLX1NgeEx9AEae39N+NsJ LSGO@zhongjin

      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAcnTC3A++ginnxr2dvtQa881abjGIzk99KQVg/sPpqvtT3espFKBs/wqrJ9naIPtCswKDMg2tBVgJzg5FimDjI44O072qAftRcjU2EEySlGDDetREOvcDxqcXzf6cAdhnKlYcPk8s46oC+SxhK0zAFZCZNc7z9GcEPOC+ESIettycDw/Bo11WfxAWS0hky2F3rYh5CRr8j7BKRsAvEaAyKwzmM9X0XCRniC2pD0ObX0/SjPwq9Q5/Vjg03muiSo5Bm/xmuHkwb4/uQglBwnaSqEr6YkL9xLMoNsQaJ1TAvTrEaZLNhWzN8iaPyKZMJEzPLX1NgeEx9AEae39N+NsJ LSGO@jinjinzhong

      1

      2

      至此,我們就可以實現(xiàn)不用輸密碼克隆遠(yuǎn)程倉庫了:

      cd /d

      git clone git@115.159.146.94:/home/testgit/sample.git lsgogit

      1

      2

      命令運行完后,lsgogit現(xiàn)在就是一個空的倉庫了,現(xiàn)在我們可以在該倉庫下添加文件,然后push到遠(yuǎn)程倉庫了。

      cd lsgogit

      touch index.php

      git add index.php

      git commit -m "test commit"

      git push origin master

      1

      2

      3

      4

      5

      如果在這里推送失敗了,極有可能是因為服務(wù)器的權(quán)限問題,就比如之前我們建的 testgit 文件夾,在這里我的解決方法是:

      chown -R git:git testgit

      1

      搭建服務(wù)器上的GIT并實現(xiàn)自動同步到站點目錄(www)

      將testgit文件夾以及下面的子文件夾都賦給了git,這樣就保證了推送成功。

      第一次push可能會有一些提示,因為裸版本庫還什么都沒有,你可能需要 git push origin master寫全命令,之后就沒必要了,直接 git push 就可以了。

      到目前為止,我們完成了第一個任務(wù),實現(xiàn)了一個共享平臺,既可拉取數(shù)據(jù),又可以推送數(shù)據(jù)。

      四、實現(xiàn)自動同步到站點目錄(www)

      就比如剛才我們往遠(yuǎn)程倉庫推送了index.php文件,雖然提示推送成功,但是我們現(xiàn)在在服務(wù)器端還看不到效果,心理總是不爽。又比如我寫了個html頁面,我想在站點中馬上看到,那自動同步就派上用場了。

      自動同步功能用到的是 git 的鉤子功能,

      服務(wù)器端:進入裸倉庫:/home/testgit/sample.git

      cd /home/testgit/sample.git

      cd hooks

      //這里我們創(chuàng)建post-receive文件

      vim post-receive

      //在該文件里輸入以下內(nèi)容

      #!/bin/bash

      git --work-tree=/home/www checkout -f

      //保存退出后,將該文件用戶及用戶組都設(shè)置成git

      chown git:git post-receive

      //由于該文件其實就是一個shell文件,我們還應(yīng)該為其設(shè)置可執(zhí)行權(quán)限

      chmod +x post-receive

      現(xiàn)在我們可以在本地計算機中修改index.php文件,或者添加一個新文件,提交到遠(yuǎn)程倉庫,然后到/home/www下面,看看有沒有我們剛才提交的文件。

      如果你在Git推送的工程中發(fā)現(xiàn)推送成功 但是在www目錄下并沒有自己的代碼,這時候你可要注意了:這是由于文件夾的權(quán)限的原因造成的! 假設(shè)你的www目錄的所屬的用戶組為root,你可以將你的git用戶加入這個組;并給git添加寫入權(quán)限,或者其他解決方法,反正你要服務(wù)器上的git用戶有權(quán)限進入www文件夾。

      之前的項目都是”包工頭“文喬學(xué)長完成這個過程,現(xiàn)在終于掌握了,有點小高興。。。

      本文章參考了

      1、AiDandai 服務(wù)器上的 Git.md

      2、git推送到服務(wù)器自動同步到站點目錄

      Git ssh

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Excel快速合并單元格添加序號的方法
      下一篇:excel表畫甘特圖(如何用excel畫甘特圖)
      相關(guān)文章
      亚洲日日做天天做日日谢| 亚洲成熟xxxxx电影| 亚洲黄色在线观看| 亚洲国产精品VA在线观看麻豆| 国产成人毛片亚洲精品| 国产成人亚洲综合在线| 在线观看亚洲视频| 国产精品亚洲lv粉色| 成人亚洲网站www在线观看| 99亚洲精品卡2卡三卡4卡2卡| 亚洲国产av玩弄放荡人妇| 最新亚洲春色Av无码专区| 亚洲无mate20pro麻豆| 亚洲国产成人精品无码区二本| 亚洲国产精华液2020| 色天使亚洲综合一区二区| 亚洲国产av一区二区三区| 成人亚洲性情网站WWW在线观看| 国产成人va亚洲电影| 亚洲男人在线无码视频| 国产亚洲精品高清在线| 亚洲国产三级在线观看| 久久亚洲精品成人综合| 18亚洲男同志videos网站| 亚洲精品第一国产综合精品| 亚洲国产日韩女人aaaaaa毛片在线| 亚洲人色大成年网站在线观看| 亚洲AV成人影视在线观看| 亚洲狠狠婷婷综合久久蜜芽| 综合偷自拍亚洲乱中文字幕| 亚洲精品无码久久不卡| 亚洲一区AV无码少妇电影☆| 爱情岛论坛网亚洲品质自拍| 亚洲精品白浆高清久久久久久| 亚洲国产精品免费视频| 亚洲国产福利精品一区二区| 亚洲色中文字幕在线播放| 亚洲国产av玩弄放荡人妇| 亚洲日韩在线中文字幕第一页| 亚洲乱码中文字幕综合| 久久99亚洲网美利坚合众国|