nginx代理apache模式的svn
时间:2014-03-04 00:03 来源:linux.it.net.cn 作者:IT网
1、安装nginx(略)
2、安装apache、apache模块包、subversion
1 yum -y installhttpd subversion mod_dav_svn
3、建立版本库主目录:
1
2 mkdir-p /data/svndata
chown-R apache.apache/data/svndata
4、编写一个创建svn库的脚本
1
2
3
4
5
6
7
8
9
10 #!/bin/sh
#$0:svncreate.sh
if[ $# -ne 1 ]; then
echo“Usage: $0 repository_name”
exit1
fi
sudosvnadmin create --fs-typefsfs /data/svndata/${1}
sudochown-R apache:apache /data/svndata/${1}
sudochmod-R g+w /data/svndata/${1}
sudochmodg+s /data/svndata/${1}/db
注:不指定--fs-type默认也是fsfs
5、创建一个测试库并导入数据
创建
1 /shell/svncreate.sh svn-shopex
导入数据
1 svn import/data/webroot/cachebbsfile:///data/svndata/svn-shopex
6、apache配置
vim /etc/httpd/conf.d/subversion.conf
1
2
3
4
5
6
7
8
9
10
11 <Location /svn>
DAV svn
SVNListParentPath off
SVNParentPath "/data/svndata/"
AuthType Basic
AuthName "Subversion Authentication!"
AuthzSVNAccessFile /data/svndata/authz
AuthUserFile /data/svndata/passwd
Require valid-user
SVNIndexXSLT "/svnindex.xsl"
</Location>
注:
/data/svndata/authz 所有库用户的权限管理文件,无需单独配置每个库的conf下的文件,无需启动svn进程。
/data/svndata/passwd 用户密码管理文件(由htpasswd生成)
注意事项:
a、修改监听端口
b、确定已加载svn模块:
[root@centos-6 svndata]# httpd -M | grep svn
dav_svn_module (shared)
authz_svn_module (shared)
Syntax OK
c、SVNIndexXSLT "/svnindex.xsl" 界面美观设置,可选。如果不使用代理,直接放到svndata主目录中,即可;使用nginx代理,只需放到nginx站点目录中。
下载资源:wget -L -r -np --user guest --password ''http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/svnindex/
d、不管是使用乌龟客户端还是WEB访问,都会产生大量日志,可以考虑关闭日志。
e、本次使用的是默认站点,如果有其它站点,可以把以上配置单独放到某个站点配置中
7、生成认证文件
1 htpasswd -n sndapk >>/data/svndata/passwd
......
8、nginx配置
配置站点:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 server {
listen 80;
server_name test.cn;
location ~ \.(ico|xsl|css)$ {
root /data/webroot/svnhtml;
}
location /svn{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/svn/;
}
}
下载界面资源文件:
1
2 cd/data/webroot/svnhtml
wget -L -r -np --user guest --password ''http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/svnindex/
注意事项:
a、nginx默认限制上传文件不能大于1M,如果大于1M,会产生错误:”413 Request Entity Too Large“,解决:
在http上下文中添加行并重启服务:client_max_body_size 10m;
9、权限配置
vim /data/svndata/authz
1
2
3
4
5
6
7
8
9
10
11
12
13 [groups]
sa = sndapk,sndapk3,sndapk5
devel = sndapk2,sndapk4
[svna:/]
@sa = rw
* =
[svn-shopex:/]
@sa = rw
* =
#[/] #如果单独对库指定了权限会覆盖全局的权限配置
#* = r
(完成)
========================================================
以下是源码安装apache、subversion
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 源码安装apr apr-util
/usr/local/apr-1.5.0
/usr/local/apr-util-1.5.3
apache安装:
./configure\
--prefix=/usr/local/apache-2.2.26 \
--enable-deflate \
--enable-headers \
--enable-so \
--enable-rewrite \
--enable-cgi \
--enable-file-cache \
--enable-cache \
--enable-disk-cache \
--enable-mem-cache \
--enable-dav \
--with-apr=/usr/local/apr-1.5.0/bin/apr-1-config\
--with-apr-util=/usr/local/apr-util-1.5.3/bin/apu-1-config
make&& makeinstall
subversion安装:
./configure\
--prefix=/usr/local/svn-1.7.14 \
--with-apxs=/usr/local/apache-2.2.26/bin/apxs\
--with-apr=/usr/local/apr-1.5.0/bin/apr-1-config\
--with-apr-util=/usr/local/apr-util-1.5.3/bin/apu-1-config\
--with-zlib \
--with-openssl \
--without-berkeley-db
问题:
不实别rpm包安装的apr apr-util
解决:源码安装apr apr-util,并手动指定
configure: error: Subversion requires SQLite
解决:sqlite官网下载最新包,然后拷贝sqllite.c到指定subversion源码目录中,安装1.8.5版本的subversion,提示 sqlite太旧,安装1.7.14解决。
#配置部分同上
(责任编辑:IT)
| 1、安装nginx(略) 2、安装apache、apache模块包、subversion 1 yum -y installhttpd subversion mod_dav_svn 3、建立版本库主目录: 1 2 mkdir-p /data/svndata chown-R apache.apache/data/svndata 4、编写一个创建svn库的脚本 1 2 3 4 5 6 7 8 9 10 #!/bin/sh #$0:svncreate.sh if[ $# -ne 1 ]; then echo“Usage: $0 repository_name” exit1 fi sudosvnadmin create --fs-typefsfs /data/svndata/${1} sudochown-R apache:apache /data/svndata/${1} sudochmod-R g+w /data/svndata/${1} sudochmodg+s /data/svndata/${1}/db 注:不指定--fs-type默认也是fsfs 5、创建一个测试库并导入数据 创建 1 /shell/svncreate.sh svn-shopex 导入数据 1 svn import/data/webroot/cachebbsfile:///data/svndata/svn-shopex 6、apache配置 vim /etc/httpd/conf.d/subversion.conf 1 2 3 4 5 6 7 8 9 10 11 <Location /svn> DAV svn SVNListParentPath off SVNParentPath "/data/svndata/" AuthType Basic AuthName "Subversion Authentication!" AuthzSVNAccessFile /data/svndata/authz AuthUserFile /data/svndata/passwd Require valid-user SVNIndexXSLT "/svnindex.xsl" </Location> 注: /data/svndata/authz 所有库用户的权限管理文件,无需单独配置每个库的conf下的文件,无需启动svn进程。 /data/svndata/passwd 用户密码管理文件(由htpasswd生成) 注意事项: a、修改监听端口 b、确定已加载svn模块: [root@centos-6 svndata]# httpd -M | grep svn dav_svn_module (shared) authz_svn_module (shared) Syntax OK c、SVNIndexXSLT "/svnindex.xsl" 界面美观设置,可选。如果不使用代理,直接放到svndata主目录中,即可;使用nginx代理,只需放到nginx站点目录中。 下载资源:wget -L -r -np --user guest --password ''http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/svnindex/ d、不管是使用乌龟客户端还是WEB访问,都会产生大量日志,可以考虑关闭日志。 e、本次使用的是默认站点,如果有其它站点,可以把以上配置单独放到某个站点配置中 7、生成认证文件 1 htpasswd -n sndapk >>/data/svndata/passwd ...... 8、nginx配置 配置站点: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 server { listen 80; server_name test.cn; location ~ \.(ico|xsl|css)$ { root /data/webroot/svnhtml; } location /svn{ proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8080/svn/; } } 下载界面资源文件: 1 2 cd/data/webroot/svnhtml wget -L -r -np --user guest --password ''http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/svnindex/ 注意事项: a、nginx默认限制上传文件不能大于1M,如果大于1M,会产生错误:”413 Request Entity Too Large“,解决: 在http上下文中添加行并重启服务:client_max_body_size 10m; 9、权限配置 vim /data/svndata/authz 1 2 3 4 5 6 7 8 9 10 11 12 13 [groups] sa = sndapk,sndapk3,sndapk5 devel = sndapk2,sndapk4 [svna:/] @sa = rw * = [svn-shopex:/] @sa = rw * = #[/] #如果单独对库指定了权限会覆盖全局的权限配置 #* = r (完成) ======================================================== 以下是源码安装apache、subversion 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 源码安装apr apr-util /usr/local/apr-1.5.0 /usr/local/apr-util-1.5.3 apache安装: ./configure\ --prefix=/usr/local/apache-2.2.26 \ --enable-deflate \ --enable-headers \ --enable-so \ --enable-rewrite \ --enable-cgi \ --enable-file-cache \ --enable-cache \ --enable-disk-cache \ --enable-mem-cache \ --enable-dav \ --with-apr=/usr/local/apr-1.5.0/bin/apr-1-config\ --with-apr-util=/usr/local/apr-util-1.5.3/bin/apu-1-config make&& makeinstall subversion安装: ./configure\ --prefix=/usr/local/svn-1.7.14 \ --with-apxs=/usr/local/apache-2.2.26/bin/apxs\ --with-apr=/usr/local/apr-1.5.0/bin/apr-1-config\ --with-apr-util=/usr/local/apr-util-1.5.3/bin/apu-1-config\ --with-zlib \ --with-openssl \ --without-berkeley-db 问题: 不实别rpm包安装的apr apr-util 解决:源码安装apr apr-util,并手动指定 configure: error: Subversion requires SQLite 解决:sqlite官网下载最新包,然后拷贝sqllite.c到指定subversion源码目录中,安装1.8.5版本的subversion,提示 sqlite太旧,安装1.7.14解决。 #配置部分同上 (责任编辑:IT) |