最近在學Linux,終於在Linux上用Apache搭建起了Git服務器,在此記錄一下。
服務器:阿里雲服務器
Linux版本:CentOS 6.5
Apache版本:Apache/2.2.15
Git版本:git 1.7.1
Git訪問方式:基於http的基本驗證(非SSL)
Apache的安裝
1. 安裝Apache軟件:yum install httpd
2. 設置Apache在服務器啟動時運行:chkconfig --levels 235 httpd on
Git的安裝與配置
1. 安裝git
yum install git
2. 安裝 git-core(為了使用git-http-backend——支持git的CGI程序,apache支持git就靠它)
yum install git-core
3. 創建存放git repository的文件夾,比如這里是/home/git
cd /home && mkdir git && cd git
4. 創建一個空的項目
mkdir git-test && cd git-test
5. 修改上一步創建的文件夾git-test的所有者與所屬群組,要讓apache能讀/寫這個文件夾
chown -R apache:apache .
chown命令使用幫助:每天一個linux命令(30): chown命令
Apache的配置
1. 創建用於git用戶驗證的帳戶(用戶帳戶由apache管理)
1.1 創建新用戶
htpasswd -m -c /etc/httpd/conf.d/git-team.htpasswd <username>
然后輸入該用戶要使用的密碼。
1.2 修改git-team.htpasswd文件的所有者與所屬群組
chown apache:apache /etc/httpd/conf.d/git-team.htpasswd
1.3 設置git-team.htpasswd文件的訪問權限
chmod 640 /etc/httpd/conf.d/git-team.htpasswd
chmod命令使用幫助:每天一個linux命令(27):linux chmod命令
2. 修改apache配置文件httpd.conf
2.1 用vim打開httpd.conf:vi /etc/httpd/conf/httpd.conf
2.2 將光標移至文件結尾:0G
2.3 添加如下的內容:
<VirtualHost *:80> ServerName git.cnblogs.com SetEnv GIT_HTTP_EXPORT_ALL SetEnv GIT_PROJECT_ROOT /home/git ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/ <Location /> AuthType Basic AuthName "Git" AuthUserFile /etc/httpd/conf.d/git-team.htpasswd Require valid-user </Location> </VirtualHost>
ServerName是git服務器的域名
/home/git是代碼庫存放的文件夾
ScriptAlias是將以/git/開頭的訪問路徑映射至git的CGI程序git-http-backend
AuthUserFile是驗證用戶帳戶的文件
2.4 保存並退出:x
3. 重啟apache使設置生效
service httpd restart
客戶端訪問Git服務器
運行以下命令簽出git-test項目:
git clone http://git.cnblogs.com/git/git-test
輸入用戶名與密碼,如果輸出下面的信息,就說明簽出成功。
remote: Counting objects: 6, done. remote: Compressing objects: 100% (4/4), done. remote: Total 6 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (6/6), done.
參考資料:
Git server setup on linux using smart HTTP