Apache+SVN部署
#1.安装依赖包
yum -y install expat-devel pcre pcre-devel openssl-devel
cd /server/tools/
#安装apr-1.7.0
wget https://mirrors.aliyun.com/apache/apr/apr-1.7.0.tar.gz
tar xf apr-1.7.0.tar.gz
cd apr-1.7.0/ && ./configure --prefix=/usr/local/apr && make && make install
#安装apr-util-1.6.1
wget https://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz
tar xf apr-util-1.6.1.tar.gz
cd apr-util-1.6.1/ && ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config && make && make install
yum install expat-devel
#安装sqlite-autoconf-3310100
wget https://www.sqlite.com/2020/sqlite-autoconf-3310100.tar.gz
tar xf sqlite-autoconf-3310100.tar.gz
cd sqlite-autoconf-3310100/ && ./configure && make && make install
#安装zlib-1.2.11
wget https://www.zlib.net/zlib-1.2.11tar.gz
tar xf zlib-1.2.11.tar.gz
cd zlib-1.2.11/ && ./configure && make && make install
#安装openssl-1.1.1d
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz
tar xf openssl-1.1.1d.tar.gz
cd openssl-1.1.1d/ && ./config --prefix=/usr/local/openssl -fPIC no-gost && make depend && make install
#安装scons
yum -y install scons
#安装serf-1.3.9
wget https://mirrors.aliyun.com/apache/serf/serf-1.3.9.tar.bz2
tar jxf serf-1.3.9.tar.bz2
scons PREFIX=/usr/local/serlf APR=/usr/local/apr/bin/apr-1-config APU=/usr/local/apr-util/bin/apu-1-config
echo "/usr/local/serlf/lib" >>/etc/ld.so.conf
#安装apche
wget https://mirrors.aliyun.com/apache/httpd/httpd-2.4.41.tar.gz
tar xf httpd-2.4.41.tar.gz
cp -r apr-1.7.0 httpd-2.4.41/srclib/apr
cp -r apr-util-1.6.1 httpd-2.4.41/srclib/apr-util
cd httpd-2.4.41/
./configure --with-included-apr --prefix=/usr/local/svn/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-dav --enable-maintainer-mode --enable-rewrite --enable-ssl --with-ssl=/usr/local/openssl
#httpd安装中指定了--enable-ssl和--with-ssl=/usr/local/openssl/还是无法生效,httpd只在/usr/lib64查找libssl.so.1.0.0,因此安装完openssl之后需要做个软连接处理
ln -s /usr/local/openssl/lib/*.so.* /usr/lib64/
ln -s /usr/local/openssl/lib/*.so.* /usr/lib/
#安装svn
wget http://mirrors.tuna.tsinghua.edu.cn/apache/subversion/subversion-1.10.6.tar.gz
tar xf subversion-1.10.6.tar.gz
cd subversion-1.10.6/
./configure --prefix=/usr/local/svn/svn --with-apxs=/usr/local/svn/apache2/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-lz4=internal --with-utf8proc=internal --enable-maintainer-mode --with-serf=/usr/local/serlf
make && make install
#创建svn根目录:
mkdir /data
svnadmin create /data/test
#http与svn的关联
#拷贝关联所需模块
cp /usr/local/svn/svn/libexec/mod_authz_svn.so /usr/local/svn/apache2/modules/
cp /usr/local/svn/svn/libexec/mod_dav_svn.so /usr/local/svn/apache2/modules/
#设置location,在/usr/local/apache2/conf/httpd.conf末尾添加如下内容
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /> # 定义访问是的路径;例如http://IP/svn
DAV svn
SVNParentPath /data # SVN的库路径
SVNListParentPath on # 允许列出目录
SVNAutoversioning on
SVNReposName "svn" # 认证文件
AuthzSVNAccessFile /data/authz
AuthType Basic # 基本认证
AuthName "svn repo auth" # 认证提示信息
AuthUserFile /data/password # 认证密码文件
Require valid-user # 必须为有效的用户
</Location>
#创建用户
htpasswd -c /data/password username
cp /data/repos/conf/authz /data/
cp /data/repos/conf/passwd /data/
#启动httpd 和 svn
/usr/local/svn/apache2/bin/apachectl start
svnserve -d -r /data/
配置私钥证书
openssl genrsa 2048 > /data/server.key
openssl req -new -key /data/server.key > /data/server.csr
Country Name=CN
State or Province Name=shandong
Locality Name=jinan
Organization Name=unicom
Common Name=svnserver
Email Address=<可省略>
A challenge password=<空,填写后启动httpd需输入密码>
An optionnal company name=可选公司名,不填
openssl req -x509 -days 36500 -key /data/server.key -in /data/server.csr > /data/server.crt
[root@PCS103 data]# cp /data/server.key /usr/local/apache/conf
[root@PCS103 data]# cp /data/server.crt /usr/local/apache/conf
设置http的支持ssl
[root@PCS103 data]# vim /usr/local/apache/conf/httpd.conf
#去掉Include conf/extra/httpd-ssl.conf前的#号
#确定httpd-ssl.conf配置中的证书与私钥指定正确
[root@PCS103 data]# vim /usr/local/apache/conf/extra/httpd-ssl.conf
#存在以下两行:
SSLCertificateFile "/usr/local/apache/conf/server.crt"
SSLCertificateKeyFile "/usr/local/apache/conf/server.key"
#修改svn对应的location
vim /usr/local/apache/conf/httpd.conf
#添加"SSLRequireSSL"至DAV svn的下一行
<Location />
DAV svn
SSLRequireSSL
SVNParentPath /data
SVNListParentPath on
SVNAutoversioning on
SVNReposName "svn"
AuthzSVNAccessFile /data/authz.conf
AuthType Basic
AuthName "svn repo auth"
AuthUserFile /data/passwd.conf
Require valid-user
</Location>