3ewsd 发表于 2018-11-19 10:52:23

Linux SVN 和 apache的整合

  需要软件包:

  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
  #wgethttp://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
  
  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
  
  

八、配置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/passwduser1
  注意:如果没有文件就创建它并且给予755的权限。
然后输入密码即可,默认是MD5加密的
添加新用户
  #/usr/local/apache/bin/htpasswd/data/zpy/svn/passwd user2   
  

4)建立本地项目控制文件
#vim/data/zpy/svn/authz
本例authz内容为:
  
  
  admin = user01
  dev3-web = user01,user02
  [/]
  @admin = rw
  @dev3-web = r
  
  @dev3-web = rw
  
  @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
  # opensslreq-new-keymy.key-outmy.csr
  # cd /etc/pki/tls/certs/
  # opensslx509-req-days365-in/etc/pki/tls/private/my.csr-signkey/etc/pki/tls/private/my.key-outmy.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
  
  Options FollowSymLinks
  AllowOverride None
  SSLRequireSSL
  Order deny,allow
  Deny from all
  
  Include conf/extra/httpd-ssl.conf
  
  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
  
  

  # 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
  





页: [1]
查看完整版本: Linux SVN 和 apache的整合