需要軟件包:
apr-1.5.2.tar.gz
apr-util-1.5.4.tar.gz
httpd-2.4.23.tar.gz
openssl-1.0.1.tar.gz
sqlite-autoconf-3140100.tar.gz
subversion-1.9.4.tar.gz
zlib-1.2.8.tar.gz
一.安裝apr和apr-uti
#mkdir -p /app/3rd
#mkdir -p /data/software
#wget http://mirror.bit.edu.cn/apache//apr/apr-1.5.2.tar.gz
#tar zxvf apr-1.5.2.tar.gz
#cd apr-1.5.1
#./configure --prefix=/usr/local/apr(如果報錯rm: cannot remove `libtoolT': Nosuch file or directory,直接打開 configure,把 $RM “$cfgfile” 即30145行刪除掉,重新再運行 ./configure 就可以了。)
#make && make install
驗證:
#/usr/local/apr/bin/apr-1-config --version
1.5.1
#cd /data/software
#wget http://mirrors.cnnic.cn/apache/apr/apr-util-1.5.4.tar.gz
#tar zxvf apr-util-1.5.4.tar.gz
#cd apr-util-1.5.4
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
#make && make install
驗證:
#/usr/local/apr-util/bin/apu-1-config --version
1.5.4
二.安裝sqlite3
#wget http://www.sqlite.org/2013/sqlite-autoconf-3080000.tar.gz
#tar zxvf sqlite-autoconf-3080000.tar.gz
#cd sqlite-autoconf-3080000
#./configure
#make && make install
三.安裝openssl
#wget http://www.openssl.org/source/openssl-1.0.1.tar.gz
#tar xzvf openssl-1.0.1.tar.gz
#cd openssl-1.0.1
#./config-fPIC--prefix=/usr/local/openssl/enable-shared
#make && make install
四.安裝apachehttp server 和ssl model
#wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.29.tar.gz
#tar zxvf httpd-2.2.29.tar.gz
#export LDFLAGS=-ldl
#cd httpd-2.2.29
#./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --enable-so --enable-dav --enable-maintainer-mode --enable-rewrite --enable-ssl --with-ssl=/usr/local/openssl
#make && make install
設置開機啓動
#cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
#編輯/etc/init.d/httpd,在第二行增加如下內容
#chkconfig: 2345 85 35
#chkconfig httpd on
通過service httpd start啓動服務,正常情況下會提示啓動成功,通過在其他電腦上打開瀏覽器瀏覽這臺服務器IP的80端口服務,如果出現Itworks 字樣,恭喜您,安裝成功
如果出現
httpd: Could not reliably determine the server’s fullyqualified domain name,
只需要編輯httpd.conf 將裏面的
#ServerName www.example.com:80註釋去掉即可,,並改成ServerName 127.0.0.1:80
如果出現
Cannot load modules/mod_ssl.so into server:libssl.so.1.0.0:
執行:
# cp/usr/local/openssl/lib/libssl.so.1.0.0 /usr/lib64/
# cp/usr/local/openssl/lib/libcrypto.so.1.0.0 /usr/lib64/
五.安裝zlib
#wget http://jaist.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz
#tar -xvzf zlib-1.2.8.tar.gz
#cd zlib-1.2.8
#./configure
#make && make install
六.安裝subversion1.8.10
#wget http://mirror.esocc.com/apache/subversion/subversion-1.8.10.tar.gz
#tar zxvf subversion-1.8.10.tar.gz
#mkdir -p ./subversion-1.8.10/sqlite-amalgamation
#cp ./sqlite-autoconf-3080000/sqlite3.c ./subversion-1.8.10/sqlite-amalgamation
#cd subversion-1.8.10
#./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-zlib --enable-maintainer-mode
#make && make install
驗證:
#/usr/local/subversion/bin/svnserve --version
svnserve, version 1.8.10 (r1534716)
七、整合Apache
拷貝模塊
#cp /usr/local/subversion/libexec/mod_authz_svn.so /usr/local/apache/modules/
#cp /usr/local/subversion/libexec/mod_dav_svn.so /usr/local/apache/modules/
編輯http.conf文件
#vim /usr/local/apache/conf/httpd.conf
在最後面增加如下內容
#加載整合svn所需so文件
################for svn#################3
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
#svn父目錄
SVNParentPath /data/zpy/svn
#權限配置文件
AuthzSVNAccessFile /data/zpy/svn/authz
#連接類型設置
AuthType Basic
#連接框提示
AuthName "Subversion.zoneyump"
#用戶配置文件
AuthUserFile /data/zpy/svn/passwd
#採用何種認證
Require valid-user
</Location>
八、配置Subversion
1)建立svn版本庫目錄
#mkdir -p /data/zpy/svn/{its,ism}
#touch authz
#touch passwd
可以多建版本庫目錄,這裏我的目錄是its,ism
2)建立svn版本庫
#svnadmin create /data/zpy/svn/ism
#svnadmin create /data/zpy/svn/its
因爲apache的線程使用的用戶是apache
#chown -R apache.apache /data/zpy/svn
#chmod -R 755 /data/zpy/svn
3)建立本地訪問控制文件
#/usr/local/apache/bin/htpasswd -cm /data/zpy/svn/passwd user1
注意:如果沒有文件就創建它並且給予755的權限。
然後輸入密碼即可,默認是MD5加密的
添加新用戶
#/usr/local/apache/bin/htpasswd /data/zpy/svn/passwd user2
4)建立本地項目控制文件
#vim/data/zpy/svn/authz
本例authz內容爲:
[groups]
admin = user01
dev3-web = user01,user02
[/]
@admin = rw
@dev3-web = r
[/ism]
@dev3-web = rw
[/its]
@dev3-web = rw
測試連接
1)啓動apache
#service httpd start
#svnserve -d --listen-port 7200 -r /data/zpy/svn/ism/
#svnserve -d --listen-port 7201 -r /data/zpy/svn/its
對於報錯:
svn: E170000: Unrecognized URL scheme for 'http://172.16.67.211/svn/cg-test'
解決方法:
# tar zxvf scons-2.3.3.tar.gz
# cd scons-2.3.3
# python setup.py install
# tar xvf serf-1.3.8.tar.bz2
# cd serf-1.3.8
# cp /usr/local/apr/bin/apr-1-config /usr/bin/
# cp /usr/local/apr-util/bin/apu-1-config /usr/bin/
# scons PREFIX=/usr/local/serf
# ln -s /usr/local/serf/lib/libserf-1.so.1 lib/libserf-1.so.1
2)再瀏覽器訪問http://192.168.1.100/svn/its
在本機上通過svn客戶端訪問不能用svn://192.168.1.100/svn/its
只能用checkouthttp://192.168.1.100/svn/ism
#本例服務器ip是192.168.1.100
使用剛纔創建的權限用戶名與密碼登錄即可訪問
客戶端操作
#mkdir /data/svncheck
#cd /data/svncheck
#svn checkout http://10.0.70.242/svn/ism --username=user01 --password=123456
#cd ism/
#touch ism.txt
#svn add ism.txt 用add把新增的文件添加進去
#svn commit --force-log -m "ism.txt" commit正式提交
#svn update ism.txt 更新
#svn lock -m "lock test file" ism.txt 加鎖
#svn unlock ism.txt 解鎖
#svn info ism.txt 查看信息
#svn update -r 1 ism.txt 更新到1版本
#svn update 如果後面沒有目錄,默認將當前目錄以及子目錄下的所有文件都更新到最新版本。
#svn update ism.txt 更新,於版本庫同步。如果在提交的時候提示過期的話,是因爲衝突,需要先update,修改文件然後清除svn resolved,最後再提交commit)
#svn delete ism.txt
#svn ci -m 'delete test file' 刪除文件
#svn log ism.txt 查看日誌
實現https、安裝Neon(可以不需要。上面serf已實現)
neon並非必要軟件,但如果需要通過http或者https協議訪問版本庫,那就必須安裝。我們知道,SVN有ra_dav(http,https)、ra_svn(svn原生協議)、ra_local(本地路徑)三種存取模塊,系統爲我們默認安裝了ra_svn和ra_local,我們自己安裝neon庫,從而讓svn支持ra_dav存儲模塊。
配置apache、創建證書。
# cd /etc/pki/tls/private/
# openssl genrsa -out my.key 1024
# openssl req -new -key my.key -out my.csr
# cd /etc/pki/tls/certs/
# openssl x509 -req -days 365 -in /etc/pki/tls/private/my.csr -signkey /etc/pki/tls/private/my.key -out my.crt
# vim /usr/local/apache/conf/extra/httpd-ssl.conf
ServerName 172.16.67.213:443
SSLCertificateFile "/etc/pki/tls/certs/my.crt"
SSLCertificateKeyFile "/etc/pki/tls/private/my.key"
vim /usr/local/apache/conf/httpd.conf
ServerName 172.16.67.213:80
<Directory />
Options FollowSymLinks
AllowOverride None
SSLRequireSSL
Order deny,allow
Deny from all
</Directory>
Include conf/extra/httpd-ssl.conf
<Location /svn>
DAV svn
#svn父目錄
SVNParentPath /data/cg/svn
#權限配置文件
AuthzSVNAccessFile /data/cg/svn/authz
#連接類型設置
AuthType Basic
#連接框提示
AuthName "Subversion.zoneyump"
#用戶配置文件
AuthUserFile /data/cg/svn/passwd
#採用何種認證
Require valid-user
SSLRequireSSL
</Location>
# yum install -y mod_ssl
# cp /usr/lib64/httpd/modules/mod_ssl.so /usr/local/apache/modules/
# /usr/local/apache/bin/httpd
# svn checkout https://172.16.67.213/svn/op-test --username=user1 --password=123456