您好,登錄后才能下訂單哦!
今天小編給大家分享一下怎么搭建自己的git服務(wù)器管理網(wǎng)站的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。
拓?fù)涫沁@樣的:
網(wǎng)站服務(wù)器WS,就是你看到的本站的服務(wù)器啦。WS上我們主要需要做的是git服務(wù)器配置;
開(kāi)發(fā)服務(wù)器DS,就是找的其他的服務(wù)器。DS上主要做的是配置git本地環(huán)境;
本地機(jī)PC,就是寫(xiě)代碼的電腦了。
也就是說(shuō),預(yù)想的正確操作是:PC用PhpStorm開(kāi)發(fā)代碼,用自帶的ssh提交功能提交到開(kāi)發(fā)服務(wù)器上,DS提供web預(yù)覽,及時(shí)地預(yù)覽效果,當(dāng)效果穩(wěn)定后,使用git提交到網(wǎng)站服務(wù)器,就完成了功能迭代。同時(shí)git還能夠做版本控制,想想都有點(diǎn)小激動(dòng)呢。
相關(guān)的版本一覽:
機(jī)器 | 軟件 | 版本 |
---|---|---|
WS/DS | 操作系統(tǒng) | Debian 8.2 |
WS/DS | git | 2.1.4 |
這里的源是163提供的給Debian 8(Jessie)的源,你可以自己去尋找適合自己版本的163源、清華大學(xué)鏡像站源等等。
vi /etc/apt/sources.list
加入:
deb http://mirrors.163.com/debian/ jessie main non-free contrib deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib deb http://mirrors.163.com/debian/ jessie-backports main non-free contrib deb-src http://mirrors.163.com/debian/ jessie main non-free contrib deb-src http://mirrors.163.com/debian/ jessie-updates main non-free contrib deb-src http://mirrors.163.com/debian/ jessie-backports main non-free contrib deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib deb-src http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib
apt-get install git apt-get install sudo
adduser bwb
密碼一定要輸哦,這個(gè)密碼是登錄這個(gè)賬戶的密碼。
vi /etc/sudoers
添加:
bwb ALL=(ALL:ALL) ALL
并使用wq!
進(jìn)行強(qiáng)制保存。
cd ~/.ssh ssh-keygen -t rsa
會(huì)提示輸入密碼,這個(gè)密碼是這個(gè)密鑰的密碼,推薦輸入哦(雖然不輸入也能成功)。如果沒(méi)有.ssh目錄的話,可以手動(dòng)創(chuàng)建一個(gè)。
可以使用類(lèi)似xftp4
這類(lèi)ftp工具,把生成的id_rsa.pub
從DS拷貝到WS上。如果使用xftp4的話,注意通過(guò)菜單欄的工具
→選項(xiàng)
,勾選“顯示隱藏的文件”來(lái)看到.ssh這個(gè)隱藏目錄。
從root用戶進(jìn)入(或者直接從bwb用戶進(jìn)入):
su bwb sudo mkdir ~/.ssh sudo cd ~/.ssh sudo cat id_rsa.pub >> authorized_keys sudo service ssh restart
(1)如果沒(méi)有.ssh才創(chuàng)建.ssh
(2)這里的id_rsa.pub
注意填為你拷貝的文件路徑。
(3)配置好后,你可以在DS上通過(guò):
touch test.txt scp -r test.txt bwb@xxx.xxx.xxx.xxx:/home/bwb
來(lái)觀察test.txt
有沒(méi)有拷貝到WS上的/home/bwb
目錄下。這里的xxx.xxx.xxx.xxx是WS的IP,當(dāng)然你也可以填網(wǎng)址域名。
我們?nèi)碳僭O(shè)web工程的目錄為/home/testweb。
(1)進(jìn)入目錄
cd /home/testweb
(2)初始化空倉(cāng)庫(kù)
git init
會(huì)提示:
初始化空的 Git 版本庫(kù)于 /home/testweb/.git/
(3)修改config
vi .git/config
加入:
[receive] denyCurrentBranch = ignore
(4)修改hook
新建一個(gè)hook
vi .git/hooks/post-receive
加入:
#!/bin/sh GIT_WORK_TREE=/home/testweb git checkout -f
(5)加入README.md
touch README.md
(6)加入工程下的所有的文件到git
git add .
注意后面的點(diǎn)哦。
(7)提交到本地倉(cāng)庫(kù)
git commit -m "Initial commit"
(1)安裝環(huán)境
和前面配置源、安裝git的操作一致,只需要這兩步就可以了。
(2)克隆項(xiàng)目:
git clone bwb@xxx.xxx.xxx.xxx:/home/testweb
會(huì)提示輸入密碼,這是之前設(shè)置的id_rsa的密碼。
(3)[ 可選 ] 創(chuàng)建robot.txt禁止爬取所有文件:
vi robot.txt
加入:
User-agent: * Disallow: /
(4)[ 可選 ] 創(chuàng)建不想被上傳的文件的規(guī)則:
vi .gitignore
加入:
#self /.gitignore #robot robot.txt
(5)測(cè)試是否成功
echo "123" >> README.md git add . git status git commit -m "test" git push
git status是在提交前查看一下要提交的有哪些東西,可以不用這條命令。
如果前面的成功了,基本就搭建完了。這里只是為了更安全限制bwb的權(quán)限,只能git,不能登錄,且不能用sudo提權(quán)了:
(1)修改shell權(quán)限
vi /etc/passwd
把:
bwb:x:1000:1000:,,,:/home/bwb:/bin/bash
改為:
bwb:x:1000:1000:,,,:/home/bwb:/usr/bin/git-shell
(2)修改sudo權(quán)限
vi /etc/sudoers
把之前添加的:
bwb ALL=(ALL:ALL) ALL
用#注釋掉:
#bwb ALL=(ALL:ALL) ALL
注意使用wq!
強(qiáng)制保存,恭喜你,搭建完成了~
因?yàn)槿绻患拥脑挘珼S進(jìn)行push就會(huì)報(bào)錯(cuò),大意是它不是個(gè)裸倉(cāng)庫(kù):
remote: error: refusing to update checked out branch: refs/heads/master remote: error: By default, updating the current branch in a non-bare repository remote: error: is denied, because it will make the index and work tree inconsistent remote: error: with what you pushed, and will require 'git reset --hard' to match remote: error: the work tree to HEAD. remote: error: remote: error: You can set 'receive.denyCurrentBranch' configuration variable to remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into remote: error: its current branch; however, this is not recommended unless you remote: error: arranged to update its work tree to match what you pushed in some remote: error: other way. remote: error: remote: error: To squelch this message and still keep the default behaviour, set remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
因?yàn)槿绻患觝ook的話,DS進(jìn)行push,WS是看不到結(jié)果的,因?yàn)闆](méi)有更新worktree。你用在WS上使用git status就能看出區(qū)別了,它一直停留在master分支上。解決方法是手動(dòng)更新:
git reset --hard
但是這樣太麻煩了,所以加hook,加了的話,就會(huì)自動(dòng)更新,hook的意思就是“if做了什么操作,then就去做什么操作”,它幫你完成了。
這是一個(gè)我研究了好久并且實(shí)踐過(guò)的問(wèn)題,答案是,--bare不適合web代碼管理。
(1)外觀
首先來(lái)看一下 git init --bare
(以下簡(jiǎn)稱(chēng)bare)和git init
(以下簡(jiǎn)稱(chēng)init)的外觀區(qū)別:
init會(huì)創(chuàng)建一個(gè).git的隱藏文件夾,內(nèi)容有branches、config、description、HEAD、hooks、info、objects、refs;
bare不會(huì)創(chuàng)建.git文件夾,而是直接在當(dāng)前文件夾下創(chuàng)建同樣的這些內(nèi)容。
(2)功能
init可以在git服務(wù)器上執(zhí)行g(shù)it操作;
bare不能在git服務(wù)器上執(zhí)行g(shù)it操作,會(huì)報(bào)錯(cuò):This operation must be run in a work tree
(3)本質(zhì)
init的本質(zhì)是會(huì)創(chuàng)建工作目錄,而bare的本質(zhì)是只記錄歷史信息,不維護(hù)工作目錄。
因此,init適合于web項(xiàng)目的維護(hù),可以在WS上實(shí)時(shí)地看到更新后的完整的web項(xiàng)目文件。而bare適合于多人的項(xiàng)目維護(hù),不需要在遠(yuǎn)端倉(cāng)庫(kù)看到更新后的工作目錄,只需要記錄每個(gè)人操作了些什么東西即可。如果用bare維護(hù)web項(xiàng)目,DS進(jìn)行push后,WS是沒(méi)有任何反應(yīng)的(當(dāng)然會(huì)更新objects文件,只是其他文件沒(méi)有反應(yīng)),并且不能在WS上執(zhí)行任何git操作。所以應(yīng)該使用init。
git add . //重新提交 .ignore文件 git rm -r --cached . //清空緩存 git add . //重新提交 所有文件 git commit -m "update .gitignore" git push
注意命令中的點(diǎn)。
userdel -r bwb
bwb為你不想創(chuàng)建的用戶。
提示:
Are you sure you want to continue connecting (yes/no)? Host key verification failed. fatal: Could not read from remote repository.
這是因?yàn)槟爿斎氲氖腔剀?chē)而不是“yes”,輸入yes即可。
跟著提示設(shè)置一下config即可:
git config --global user.email "you@example.com" git config --global user.name "Your Name"
它的實(shí)質(zhì)是去修改.git/config
文件。
首先檢查你是否有那個(gè)文件的權(quán)限(比如它是root用戶才能訪問(wèn)的文件夾),如果沒(méi)有請(qǐng)賦予權(quán)限:
chown -R bwb:bwb home/testweb
然后檢查是否把DS的id_rsa.pub的內(nèi)容成功添加進(jìn)WS的authorized_keys了。
最后非??赡艿木褪悄闩溴e(cuò)了用戶。比如你把DS的id_rsa.pub配到WS的root用戶的authorized_keys里去了,結(jié)果后面訪問(wèn)的ssh又是bwb用戶,當(dāng)然被拒絕了。
如果還不行,debian操作系統(tǒng)可以查看/var/log/auth.log
,其他操作系統(tǒng)可以查看/var/log/secure
,然后:
tail -n100 /var/log/auth.log|grep sshd
來(lái)觀察到底有沒(méi)有進(jìn)行過(guò)連接、到底是哪個(gè)地方出了問(wèn)題。
#忽略文件 test.txt #忽略根目錄下的文件 /test.txt #忽略指定目錄下的文件 /src/test.txt #忽略目錄 /test #忽略文件夾,但不忽略其中的某些文件 /test !/test/test.txt
robot.txt在線生成
簡(jiǎn)書(shū)的robot.txt
愛(ài)奇藝的robot.txt
最簡(jiǎn)單的配置:
User-agent: * 這里的*代表的所有的搜索引擎種類(lèi),*是一個(gè)通配符 Disallow: / 這里定義是禁止爬尋站點(diǎn)所有的內(nèi)容
以上就是“怎么搭建自己的git服務(wù)器管理網(wǎng)站”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。