gerrit配置和使用
一、 apache 服務的安裝1. 安裝Apache有兩種時候可以安裝Apache 服務器:安裝Linux 操作系統(tǒng)的時候安裝Web 服務器rpm 包,和安裝完系統(tǒng)后安裝Apache 服務器。(源碼
一、 apache 服務的安裝
1. 安裝Apache
有兩種時候可以安裝Apache 服務器:安裝Linux 操作系統(tǒng)的時候安裝Web 服務器rpm 包,和安裝完系統(tǒng)后安裝Apache 服務器。(源碼安裝) 提示:可以用命令#rpm-qa|grep httpd 檢查一個系統(tǒng)是否安裝了Apache 服務器,如果沒有輸出,則表明沒有安裝。以下為某個安裝了Apache 服務器輸出的一個范例。如果是以源碼安裝的Apache 服務器,則此種方法無效,需要用find 工具查找httpd 文件是否存在。 httpd-tools-2.2.15-9.el6.x86_64
如果在安裝Linux 操作系統(tǒng)期間沒有安裝Apache ,這就需要使用包文件來安裝。
1.RPM 包的安裝。從Linux 的安裝光盤和互聯(lián)網(wǎng)上,都可以得到Apache 的RPM 安裝包,然后把安裝包復制到硬盤,并切換到安裝包文件所在的目錄。本文以
把手冊也安裝上去。
2.源碼安裝。到網(wǎng)站www.apache . org 下載欲安裝的版本,筆者喜歡嘗試最新的版本,當前的最新有效版本為httpd-2.2.0.tar.gz 。在httpd-2.2.0.tar.gz 文件所在的當前目錄解壓文件# tar zxvf httpd-2.2.0.tar.gz,然后切換目錄到httpd-2.2.0,進行配置:
或者wget http://dev.xiaonei.com/apache-mirror/httpd/httpd-2.0.63.tar.gz
其中,配置這一過程,使用了選項“--prefix=/usr/local/apache”來指定Apache 的安裝目錄,使Apache 服務器所需的大部分文件都被復制在這個目錄里。實際上,配置是一個很靈活的選擇,根據(jù)需要可以添加更多的選項,支持更多的功能。
,2. 配置文件
Apache 的配置文件是httpd.conf ,一般在/etc/http/conf或/usr/local/apache/conf目錄,以rpm 包形式安裝的Apache ,配置文件的位置是/etc/httpd/conf/httpd.conf。對Apache 服務器進行得最多的操作恐怕就是在時時更改這個文件的內(nèi)容。當然,如果只是運行簡單的靜態(tài)網(wǎng)頁,也可以不用對它做任何更改。
打開配置文件httpd.conf ,可以獲悉根文檔的目錄位置。前面安裝的Apache 的根文檔位置是/usr/local/apache/htdocs(rpm包安裝的Apache 的根文檔位置是/var/www/html),欲運行自己的網(wǎng)站,需要把做好的網(wǎng)頁文件和目錄復制到Apache 的根文檔才可以。
3. 上傳網(wǎng)頁文件及目錄
上傳網(wǎng)頁文件及目錄的最佳方式是啟用FTP 服務。創(chuàng)建一個系統(tǒng)用戶,使該用戶對目錄/usr/local/apache/htdocs具有讀寫權限或者該用戶的主目錄為
/user/local/apache/htdocs。在這里我們創(chuàng)建一個用戶,使其主目錄為Apache 的根文檔目錄:
這樣就可以很方便地修改或上傳網(wǎng)頁文件和目錄了。有人認為,用SSH 客戶端工具也可以實現(xiàn)文件的上傳。
4. 啟用/關閉Apache 服務
上面的步驟都準備好以后,就可以啟用這個網(wǎng)站服務器了。啟用方法如下:
如果不出意外,Apache 服務器將如我們所期待的那樣運行起來,我們只要在某臺能訪問
Apache 服務器的計算機瀏覽器里輸入Apache 服務器的IP 地址或者預先解析好的域名,網(wǎng)站的主頁就會出現(xiàn)在瀏覽器里。在Apache 服務器端,通過輸入命令:
檢查Apache 服務器是否正在運行。到此,一個具備基本功能的Apache 服務器就誕生了。
,虛擬主機
有時候,我們可能需要用一個Apache 服務器來做多個Web 服務器,比如運行幾個不同的網(wǎng)站,這樣就可以大大地節(jié)省開支。
使用虛擬主機大致有以下幾個步驟:
1.確定使用虛擬主機的方式。虛擬主機有基于域名、IP 、端口等幾種形式,應該根據(jù)自己的實際情況來決定。
2.修改配置文件/etc/httpd/conf/httpd.conf或/usr/local/apache/conf/httpd.conf。
3.域名解析(基于域名的虛擬主機),這一步需要在域名服務器上進行。
4.啟用/關閉虛擬主機。啟用/關閉Apache 守護進程即可,但這將關閉所有的Web 服務。 設置虛擬主機實例
講述一個虛擬主機的實例。
先描述一下需求:一臺服務器,要求運行一個以PHP 為腳本的網(wǎng)站,另外還要用它來做網(wǎng)絡流量監(jiān)控(需要Web 服務)。在這里,我們采用二進制源碼包的方式來安裝配置Apache 虛擬服務器,以便于對Apache 服務器有更深刻的理解。
(1)安裝Apache 服務器。從www.apache.org 下載包httpd-2.2.0.tar.gz 到目錄/root,
至此,Apache 就算安裝好了。
先測試一下,運行命令:
然后在與之聯(lián)網(wǎng)的計算機的瀏覽器里輸入運行Apache 服務的計算機IP 地址,出現(xiàn)測試頁面表明配置一切正常。
(2)安裝PHP 。下載包php-4.3.11.tar.gz 到目錄/root,然后執(zhí)行下面的操作:
完成后看是否真在目錄/usr/local/apache/modules生成文件libphp4.so, 再打開配置文件httpd.conf 查看LoadModule php4_module modules/libphp4.so是否被自動追加。
(3)修改Apache 配置文件/usr/local/apache/conf/httpd.conf。加入行TypeAdd application /x-httpd-php .php4到307行的位置,當然其他位置也是可以的。
,注意:php4前面有一個空格。筆者第一次配置PHP 整合Apache 的時候就犯了這個錯誤,用了好幾天的時間才弄明白。另外PHP 前面那個“. ”(小黑點) 一定不要漏掉了。
(4)啟動一下apache 服務器。找?guī)讉€php 腳本的網(wǎng)頁文件,把它復制到apache 指定的根文檔目錄/usr/local/apache/htdocs,然后在與之聯(lián)網(wǎng)的計算機的瀏覽器中輸入apache 所在機器的URL(形如 http://192.168.100.10/test.php) ,來檢驗一下配置是否成功。
(5)創(chuàng)建虛擬服務器。Apache/2.2.0與以前的版本有些差異,它是以包含文件的方式來加載用戶定義的虛擬主機配置,前面的版本定義虛擬主機就在httpd.conf 文件中。我們還是先在主配置文件中把虛擬主機的配置文件/usr/local/apache/conf/extra/httpd-vhosts.conf包含進來。具體的操作就是把行#Include conf/extra/httpd-vhosts.conf的注釋去掉,使之成為Include conf/extra/httpd-vhosts.conf,這一行在httpd.conf 的行號是394,然后保存后退出。接著我們打開文件/usr/local/apache/conf/extra/httpd-vhosts.conf,其默認狀態(tài)如下:
等我們先安裝配置mrtg ,然后再回過頭來修改文件
/usr/local/apache/conf/extra/httpd-vhosts.conf。
(6)啟用交換機的SNMP 功能。要監(jiān)控連接在交換機每個端口的服務器網(wǎng)絡流量,必須啟用交換機的SNMP, 這樣就不必更改被監(jiān)控服務器的任何設置。啟用交換機SNMP 功能的方法,請參照相關文檔。
(7)安裝和配置mrtg 。把軟件包下載到硬盤,解壓后直接安裝就可以了。
(8)修改虛擬主機配置文件。需要指定根文檔目錄、服務器名稱這幾項。
如果要對虛擬主機的訪問進行用戶驗證,還需要在Apache 的主配置文件對虛擬機的根文檔目錄進行相關的處理。把下面的行插入到Apache 的主配置文件httpd.conf 中。
按照提示設定用戶sery 的訪問密碼。
(九)做域名解析。在域名服務器上解析主機mrtg.sery.com.
(十)啟用Apache 服務。用指令# ps -aux | grep httpd 檢查Apache 是否正常運行,然后在另外的計算機瀏覽器里輸入Apache 服務器的URL ,如輸入www.sery.com 則應該訪問到主配置文件設定的網(wǎng)頁,如果輸入mrtg.sery.com 則訪問上面設定的虛擬機頁面,并且需要輸入正確的用戶名和密碼才能訪問。
,通過上面的實踐,我們可以得出這樣一個結論:Apache 服務器功能設定的主要操作就是修改配置文件——主配置文件httpd.con 及包含配置文件。當然,Apache 的配置不僅僅是上文所描述的那些,可以說是非常豐富,也是非常靈活的。限于篇幅,不再詳敘。至于要讓Apache 隨系統(tǒng)啟動,可以把守護進程/usr/local/apache/bin/httpd&加在文件/etc/rc.local里即可。 提示:為了在同一環(huán)境下使用更多的Apache 服務,可以安裝多個Apache 到不同的目錄,安裝目錄在安裝過程中的配置操作./configure - prefix=<安裝目錄>制定,所有Apache 的配置原則都是一致的,所有配置完成后,把它們?nèi)繂悠饋?。關于配置多個虛擬主機與安裝多個Apache 服務究竟有多大的差別,望各位讀者自己去做評判。
5. 最后,說幾個apache 的配置 1、ServerRoot 這段. 將它設成你的Apache 安裝目錄, 我的是ServerRoot "/etc/httpd"
2、DocumentRoot 這段. 把他設成你網(wǎng)站的根目錄, 我的是DocumentRoot "/var/www/html"
3、DirectoryIndex 這段. 把它改成DirectoryIndex index.php index.Html index.html 這樣, 你的網(wǎng)站目錄的默認首頁是 index.php, 如果沒有index.php 系統(tǒng)會自動尋找index.html 、html 做為默認首頁了。
4、把/etc/httpd/conf.d/welcome.conf中的所有行去掉后,就不會顯示默認的首頁了。
二、 Git 和gitweb 的安裝
git 安裝方式也有兩中
1. 源碼安裝
解壓后切換到其目錄
$ tar xvfj git-1.7.6.tar.bz2
$ cd git-1.7.6
使用默認配置進行安裝,如果想修改配置,可以使用 ./configure --help 來獲取幫助 $ ./configure $ make $ make install
2. rpm 包安裝
直接rpm –ivh git-1.7.1-2.el6_0.1.x86_64.rpm
安裝完成后會產(chǎn)生這個目錄/var/lib/git/。
,3. git 基本操作
(1)git初始化一個工程:mkdir project;cd project;git init
(2)設置全局用戶信息及郵箱:
git config --global user.name "Xiaochun.li"
git config --global user.email lei.wang@cs2c.com.cn
(3)mkdir worktree;cd worktree
(4)git遠程clone:git clone git://10.1.80.85/loongson-32
(5)如果需要創(chuàng)建自己的分支:git branch branchname
列出所有本地分支:git branch
刪除某本地分支:git branch -d branchname
切換本地分支:git checkout branchname
(6)git增加文件:git add a b c readme-cs2c
git 刪除文件:git rm a b c
(7)git本地提交:git commit -m "what we did"
git 刪除本地上一個commit:git reset --soft HEAD~1
git 修改一個已經(jīng)提交的commit :git commit --amend
(8)git遠程提交:
git push ssh://root@10.1.80.85/var/lib/git/loongson-32
(9)git合并遠程分支
git remote add loongson git://git.printk.org/linux-loongson-release.git git fetch git://git.printk.org/linux-loongson-release.git
git merge loongson/linux-loongson/v2.6.36
(10)git查看遠程分支
git remote show loongson
git remote show git://git.printk.org/linux-loongson-release.git
(11)、git 刪除錯誤提交的commit
方法:
git reset --hard
git push origin HEAD --force
(12)、其他:
根據(jù)–soft –mixed –hard ,會對working tree和index 和HEAD 進行重置:
git reset –mixed :此為默認方式,不帶任何參數(shù)的git reset,即時這種方式,它回退到某個版本,只保留源碼,回退commit 和index 信息
git reset –soft :回退到某個版本,只回退了commit 的信息,不會恢復到index file 一級。如果還要提交,直接commit 即可
git reset –hard :徹底回退到某個版本,本地的源碼也會變?yōu)樯弦粋€版本的內(nèi)容 HEAD 最近一個提交
HEAD^ 上一次
(13)、其他操作總結:
,創(chuàng)建一個 Git 版本庫
$ cd project/
$ git init # 創(chuàng)建 .git 目錄 ( 1.4.4.4 版本之后用這個命令 )
$ git add . # 將那些未被跟蹤的文件加入版本庫中
$ git commit # 將工作目錄的變化提交到版本庫中
Git 將根據(jù)在版本庫根目錄中的 .gitignore 文件中列出的文件名,忽略對那些文件的跟蹤,文件和目錄名,可以用 shell 正則表達式來表示。
分支與合并
$ git checkout -b linux-work # 創(chuàng)建一個名叫 "linux-work" 的分支
$
$ git commit -a
$ git checkout master # 回到主分支
$ git merge linux-work # 將在 linux-work 分支上的變更集合并入 master 分支 # (適用于 Git 1.5 以上版本)
$ git pull . linux-work # 將在 linux-work 分支上的變更集合并入 master 分支 # (適用于 Git 的所有版本)
引入補丁
$ git apply < ../p/foo.patch
$ git commit -a
生成補丁
$
$ git commit -a -m "commit message"
$ git format-patch HEAD^ # 生成一個 0001-commit-message.patch 的文件
# ( 這里的意思是生成當前分支的最新版本到他的父版本 HEAD^
# 的所有文件的補丁,當然你應該知道 HEAD 的概念是什么 )
網(wǎng)絡功能
# 從主版本庫中克隆
foo$ git clone git://git.kernel.org/pub/scm/git/git.git
foo$ cd git
# 將本地變更推入遠程版本庫
,foo$ git push user@example.com:my-repository.git/
# 抓取遠程版本庫中的其中一個分支到本地版本庫
foo$ git fetch user@example.com:my-repository.git/ remote-branch:local-branch
# 將遠程版本庫中的變化合并到本地
bar$ git pull git://foo/repo.git/ branch
# 用 git 協(xié)議建立版本庫服務
foo$ cd /my/repository/
foo$ touch .git/git-daemon-export-ok
foo$ git daemon # 這樣其他人就可以通過 git://your.machine/my/repository/.git/ 來抓取版本庫
# 建立一個裸版本庫( 沒有工作目錄的 )
foo$ mkdir my-repo.git
foo$ cd my-repo.git
foo$ git --bare init
foo$ chmod a x .git/hooks/post-update # 用 HTTP 協(xié)議來傳輸版本時要這樣
# 并且你需要用 push 命令來植入你的版本庫的內(nèi)容
查看各個版本
# 用圖形界面工具查看歷史
foo$ gitview # 這個命令打開圖形界面窗口,你可以從中看到版本的歷史沿革關系
# 查看日志
foo$ git log # 輸出當前分支的日志
foo$ git log -p # 輸出日志,并同時在每個提交信息之后顯示補丁
# 查看指定的變更
foo$ git show HEAD # 顯示變更信息,差異比較位置,
# 以及到當前分支最新狀態(tài)的補丁。
,查看歷史記錄
# 根據(jù)名稱查看
foo$ git log v1.0.0 # 列舉歷史記錄至標簽 "v1.0.0"
foo$ git log master # 列舉 "master" 分支的歷史記錄
# 根據(jù)名稱關聯(lián)查看
foo$ git show master^ # 檢查 master 分支的最后一個父版本的內(nèi)容
foo$ git show master~2 # 檢查 master 祖父版本的最后內(nèi)容 foo$ git show master~3 # 檢查 master 曾祖父的最后內(nèi)容
# 根據(jù) "git describe" 的輸出
foo$ git show v1.4.4-g730996f # 你可以用 "git describe" 命令得到這個輸出
# 根據(jù)哈希序列號(在 git 內(nèi)部,所有的對象都是由哈希序列號來標記的)
foo$ git show f665776185ad074b236c00751d666da7d1977dbe
foo$ git show f665776 # 通常你只要輸入前幾個數(shù)字已經(jīng)足夠
# 制作標簽
foo$ git tag v1.0.0 # 將當前 HEAD 制作為 "v1.0.0" 的標簽 foo$ git tag interesting v1.4.4-g730996f # 標記你感興趣的東西(不是 HEAD )
比較版本記錄
# 比較兩個分支的差異
foo$ git diff origin..master # 比較 origin 與 master 的差異并輸出至終端 foo$ git diff origin..master > my.patch # 輸出到 my.patch 文件
# 取得尚未提交的工作于版本記錄的差異
foo$ git diff --stat HEAD
" 摘草莓" 補丁
foo$ git cherry-pick other-branch~3 # 將另外一個分支的第四個補丁應用到當前分支
,4. Gitweb 安裝
Gitweb 安裝需要先安裝git
安裝完成后會生成這個/var/www/git/目錄,用于連接到git daemon指定的倉庫的目錄中。 安裝完成后修改一些配置文件的內(nèi)容,
1、/etc/gitweb.conf增加$projectroot = "/var/www/git";,該地址和apache 服務所制定的目錄一樣。
2、/etc/gitweb.conf增加如下內(nèi)容our @git_base_url_list = qw(git://10.1.80.128
ssh://10.1.80.128/var/lib/git);這個是在gitweb 的網(wǎng)頁中顯示URL 路徑的。如下圖
3、修改vim /etc/httpd/conf.d/git.conf中的第一行Alias /git /var/www/git為Alias /gitweb /var/www/git
4、/etc/httpd/conf/httpd.conf中DirectoryIndex gitweb.cgi index.html index.html.var
5、如果service httpd restart 出現(xiàn)警告的話,可以把文件/etc/httpd/conf/httpd.conf 中的
#號去掉,打開這句話。
創(chuàng)建一個git 版本庫
1、裸版本庫
Mkdir my-repo.git
Cd my-repo.git
Git –bare init
2、有目錄和文件
Cd myproject/
Git init
Git add ./
Git commit –m “****”
5. Git daemon 安裝 至此,本地的git 倉庫就創(chuàng)建好了。想要在遠程clone 這個project, 還需要使用gitdaemon 下載安裝git-daemon
的rpm 包,安裝后會在/etc/xinetd.d/git中有關git 的配置,可以修改。 此時不能在遠程用,如git clone git://10.1.80.128/test.git時候會報錯,如下: Initialized empty Git repository in /home/xiaochun/kernel/test/.git/
10.1.80.128[0: 10.1.80.128]: errno=Connection refused
fatal: unable to connect a socket (Connection refused)
查了半天,最后發(fā)現(xiàn)此守護進程默認沒有開啟,修改/etc/xinetd.d/git文件,