前言:
目前我们对“apachesvn配置优化”大致比较关怀,同学们都需要分析一些“apachesvn配置优化”的相关内容。那么小编同时在网络上网罗了一些关于“apachesvn配置优化””的相关知识,希望咱们能喜欢,看官们一起来学习一下吧!前言
通过 Http 协议访问版本库是 Subversion 的亮点之一。使用 Http 协议意味着只需要打开浏览器,输入 URL 即可轻松的浏览整个版本库。灵活通常带来复杂性,Http 方式相对于 svnserve 方式来说需要更多的配置。 由于 Subversion 需要版本化的控制,因此标准的 Http 协议不能满足需求。要让 Apache 与 Subversion 协同工作,需要使用 WebDAV(Web 分布式创作和版本控制)。WebDAV 是 HTTP 1.1 的扩展,关于 WebDAV 的规范和工作原理,可以参考 IETF RFC 2518。 为了使 Subversion 与 dav 模块通信,需要安装 mod_dav_svn 插件,可以在 Subversion 的安装目录中找到。将其拷贝到 Apache 安装目录的 modules 文件夹下。接下来就是配置 Apache 的 httpd.conf 文件,让 Apache 在启动的时候加载上述模块。前期准备
环境:centos7.2(64位)架构说明:subversion+httpd+ssl+mysql实现基于https协议的svn服务端软件: apache22.diff apr-1.6.3.tar.gz apr-util-1.6.1.tar.bz2 httpd-2.2.34.tar.bz2 mod_auth_mysql-3.0.0.tar.gz serf-1.3.8.tar.bz2 sqlite-autoconf-3081002.tar.gz subversion-1.8.19.tar.gz开始部署安装以下依赖程序
[root@www src]# yum install expat-devel[root@www src]# tar xf apr-1.6.3.tar.gz [root@www src]# cd apr-1.6.3[root@www apr-1.6.3]# ./configure --prefix=/usr/local/apr && make -j 2 && make install[root@www src]# tar xf apr-util-1.6.1.tar.bz2 [root@www src]# cd apr-util-1.6.1[root@www apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make -j 2 && make install[root@www src]# tar xf sqlite-autoconf-3081002.tar.gz [root@www src]# cd sqlite-autoconf-3081002[root@www sqlite-autoconf-3081002]# ./configure --prefix=/usr/local/sqlite && make -j 2 && make install安装httpd
[root@www src]# tar xf httpd-2.2.34.tar.bz2 [root@www src]# cd httpd-2.2.34[root@www src]# ./configure \--prefix=/usr/local/httpd \--enable-maintainer-mode \--with-sqlite=/usr/local/sqlite \--with-apr=/usr/local/apr/bin/apr-1-config \--with-apr-util=/usr/local/apr-util/bin/apu-1-config \--with-zlib \--enable-ssl \--enable-so \--enable-dav \--enable-cgi \--enable-rewrite \--enable-cgi[root@www httpd-2.2.34]# make -j 2[root@www httpd-2.2.34]# make install[root@www ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd[root@www ~]# chmod +x /etc/init.d/httpd[root@www ~]# sed -i '2a# chkconfig: 2345 64 36' /etc/init.d/httpd[root@www ~]# chkconfig --add httpd[root@www ~]# chkconfig httpd on [root@www ~]# useradd -r -M -s /sbin/nologin www[root@www ~]# sed -i 's/^User.*$/User www/' /usr/local/httpd/conf/httpd.conf[root@www ~]# sed -i 's/Listen 80/Listen 81/' /usr/local/httpd/conf/httpd.conf[root@www ~]# sed -i 's/^Group.*$/Group www/' /usr/local/httpd/conf/httpd.conf[root@www ~]# sed -i 's/^#ServerName.*$/ServerName localhost/' /usr/local/httpd/conf/httpd.conf[root@www ~]# curl localhost<html><body><h1>It works!</h1>安装subversion安装所用到的依赖
[root@www serf-1.3.8]# yum install -y zlib zlib-devel openssl openssl-devel安装scons用于安装serf使svn支持http协议
[root@www src]# tar xf scons-2.3.0.tar.gz [root@www src]# cd scons-2.3.0[root@www scons-2.3.0]# python setup.py install安装serf
[root@www src]# tar xf serf-1.3.8.tar.bz2 [root@www src]# cd serf-1.3.8[root@www serf-1.3.8]# scons PREFIX=/usr/local/serf APR=/usr/local/apr APU=/usr/local/apr-util OPENSSL=/usr/bin[root@www serf-1.3.8]# scons install安装svn
[root@www src]# tar xf subversion-1.8.19.tar.gz [root@www src]# cd subversion-1.8.19[root@www subversion-1.8.19]# ./configure --prefix=/usr/local/svn \--with-apxs=/usr/local/httpd/bin/apxs \--with-apr=/usr/local/apr \--with-apr-util=/usr/local/apr-util \--with-sqlite=/usr/local/sqlite \--with-serf=/usr/local/serf[root@www subversion-1.8.19]# make -j 2[root@www subversion-1.8.19]# make install[root@www ~]# cp /usr/local/svn/libexec/mod_* /usr/local/httpd/modules[root@www ~]# echo "PATH=$PATH:/usr/local/svn/bin/" >> /etc/profile && source /etc/profile创建svn数据目录
[root@www ~]# mkdir -p /data/svn新建测试仓库
[root@www ~]# svnadmin create /data/svn/ops安装http结合mysql认证模块
[root@www src]# tar xf mod_auth_mysql-3.0.0.tar.gz [root@www src]# cp apache22.diff mod_auth_mysql-3.0.0[root@www src]# cd mod_auth_mysql-3.0.0[root@www mod_auth_mysql-3.0.0]# patch -p0 < apache22.diff [root@www mod_auth_mysql-3.0.0]# /usr/local/httpd/bin/apxs -c -L /usr/local/mysql/lib/ -I /usr/local/mysql/include/ -lmysqlclient -lm -lz mod_auth_mysql.c[root@www mod_auth_mysql-3.0.0]# /usr/local/httpd/bin/apxs -i mod_auth_mysql.la[root@www mod_auth_mysql-3.0.0]# echo /usr/local/mysql/lib >>/etc/ld.so.conf && ldconfig[root@www mod_auth_mysql-3.0.0]# ls /usr/local/httpd/modules/httpd.exp mod_auth_mysql.so mod_authz_svn.so mod_dav_svn.so配置httpd服务器支持svn
[root@www ~]# tail -23 /usr/local/httpd/conf/httpd.confLoadModule dav_svn_module modules/mod_dav_svn.soLoadModule authz_svn_module modules/mod_authz_svn.soLoadModule mysql_auth_module modules/mod_auth_mysql.so<Location /> DAV svn SVNParentPath /data/svn AuthzSVNAccessFile /data/svn/auth AuthName "EELLY SUBVERSION" AuthUserFile /dev/null AuthType Basic AuthMYSQLEnable on AuthMySQLHost localhost AuthMYSQLUser svn AuthMySQLPassword caichangen AuthMYSQLDB svn AuthMYSQLUserTable users AuthMYSQLNameField user_name AuthMYSQLPasswordField user_passwd Require valid-user AuthBasicAuthoritative off AuthMySQLEnable On AuthMySQLPwEncryption md5 SetOutputFilter DEFLATE</Location>创建认证数据库及用户信息
MariaDB [svn]> DROP TABLE IF EXISTS `users`;MariaDB [svn]> CREATA DATABASE svn;MariaDB [svn]> CREATE TABLE `users` (`user_id` int(255) NOT NULL AUTO_INCREMENT,`user_name` char(30) NOT NULL,`user_passwd` char(50) NOT NULL,`create_time` datetime NOT NULL DEFAULT NOW(),`update_time` datetime DEFAULT NOW() ON UPDATE NOW(),PRIMARY KEY (`user_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;MariaDB [svn]> insert into users(user_name,user_passwd) values('cce',md5('caichangen'));MariaDB [(none)]> grant all privileges on svn.* to svn@'localhost' identified by 'caichangen';svn授权
[root@www ~]# cat /data/svn/auth[groups]admin = cce[ops:/]@admin = rw配置www用户访问svn的权限
[root@www ~]# setfacl -R -m user:www:rwx /data/svn/[root@www ~]# setfacl -R -m default:www:rwx /data/svn/配置Nginx反代http
1、配置nginx[root@www ~]# cat /usr/local/nginx/conf/vhosts/wsvn.confserver { listen 80; server_name wsvn.doorta.com; return 301 ; access_log /usr/local/nginx/logs/wsvn_access.log; error_log /usr/local/nginx/logs/wsvn_error.log; default_type 'text/html'; charset utf-8; location / { proxy_pass ; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 900; } location /.well-known { default_type text/plain; alias /tmp_ssl/.well-known; } }[root@www ~]# /usr/local/nginx/sbin/nginx -s relaod2、配置ssl[root@www ~]# /usr/local/letsencrypt/letsencrypt-auto certonly --webroot -w /tmp_ssl --email mail0426@163.com -d blog.doorta.com -d hub.doorta.com -d wsvn.doorta.com测试访问svn管理脚本
#!/bin/bash#Create a project and the configuration of the hookADDUSER() { read -p "Input Your Users: " USER a=$(mysql -usvn -psvnqwe -hlocalhost -e 'select user_name from svn.users;'|grep "$USER") echo $a if [ $? -eq 1 ];then echo "User already exists." exit 100 else read -p "Input Your Passwd: " PASS mysql -u svn -psvnqwe -hlocalhost -e "insert into svn.users values(\"$USER\",md5(\"$PASS\"));" sed -i "2s/$/&,$USER/g" /data/svn/auth echo "User add success." fi}DELUSER() { read -p "Enter the user you need to delete: " USER sed -i 's/cce,//' /data/svn/auth mysql -usvn -psvnqwe -hlocalhost -e "delete from svn.users where user_name=\"$USER\"" if [ $? -eq 1 ];then echo "User does not exist." exit 100 else echo "User deleted successfully." fi}ADDOBJRCT() {read -p "please enter ObjectName: " ObjectNameread -p "please enter ObjectName Again: " ObjectAgainif [ $ObjectName != $ObjectAgain ];thenecho "You enter error,exit"exitelseecho "ObjectName is $ObjectName"fi/usr/local/svn/bin/svnadmin create --fs-type fsfs /data/svn/$ObjectNamecat << END >> /data/svn/auth[$ObjectAgain:/]@admin = rwEND}SHOWUSER() {mysql -usvn -psvnqwe -e 'select user_name from svn.users;'}cat << END输入1添加项目输入2添加用户输入3查看用户输入4删除用户ENDread -p"请输入你的选择: " VALUEcase $VALUE in1) ADDOBJRCT ;;2) ADDUSER ;;3) SHOWUSER ;;4) DELUSER ;;q|Q|exit|bye) exit 0 ;;*) echo "Usage:`basename $0` [1|2|3|4]"esac
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #apachesvn配置优化 #svn支持apache