linux 安装subversion并配置nginx+apache
最近想在ubuntu渲舫蒇芘服务器上建立一个svn服务器,但目前服务器采用的是nginx服务器,由于nginx现在暂时不支持subversion,所以只能安装锾攒揉敫apache集成subversion,然后通过nginx proxy给apache来访问代码仓库。
1、安装apache
$sudo apt-get install apache2
将80端口修改8099,或者其他,然后在重新启动apache
$ sudo/etc/init.d/apache2 restart
2、安装subversion
subversion已经包含在ubuntu main仓库中,所以,要安装 Subversion,您只需要简单的运行:
$ sudo apt-get install subversion
Location/svn 意思是Subversion版本可用的URL是http://域名或IP/svn
DAV SVN 告诉Apache是哪个模块响应哪个URL的请求,在这里是Subversion模块
SVNParentPath /home/svn 告诉Subversion需要查看的版本库在/home/svn之下。
如果不希望为每个单独的项目都进行单独的设置,可以把所有项目都存放在统一的资源库目录,使用SVNParentPath指令来指定存放所有项目的路径。
否则使用SVNPath
SVNPath 单版本库时使用此项指明版本库的路径,但在多版本库中不要使用此项
AuthType Basic 认证类型为基本认证,就是用户名和密码
AuthName "Subversion repository" 认证名称,将在浏览器界面弹出一个对话框,标题为
Subversion repository
AuthUserFile /home/svn/passwd 指定使用的认证密码文件,即访问版本库用户的文件,用apache的htpasswd命令生成
AuthzSVNAccessFile /home/svn/authz.conf 设定访问版本库权限的文件,可选Require valid-user 要求验证用户,即不能匿名访问。如果没有该语句,则只能第一个用户可以访问新建库
此外,SVNIndexXSLT “/svnindex.xsl” 使用它可以在用浏览器时更好看
如果需要用户每次登录时都进行用户密码验证,请将与两行注释掉。
当您添加了上面的内容,您必须重新起动 Apache 2 Web 服务器,请输入下面的命令:sudo /etc/init.d/apache2 restart
接下来,您需要创建 /home/svn/passwd 文件,该文件包含了用户授权的详细信息。要添加用户,您可以执行下面的命令:sudo htpasswd -c /home/svn/passwd user_name
它会提示您输入密码,当您输入了密码,该用户就建立了。“-c”选项表示创建新的/home/svn/passwd文件,所以user_name所指的用户将是文件中唯一的用户。如果要添加其他用户,则去掉“-c”选项即可:sudo htpasswd /home/svn/passwd other_user_name
您可以通过下面的命令来访问文件仓库:$ svn co http://hostname/svn/myproject myproject --username user_name它会提示您输入密码。您必须输入您使用 htpasswd 设置的密码。当通过验证,项目的文件就被签出了。
5、配置nginx
sudovi /alidata/server/nginx/conf/nginx.conf
加入下面配置:
server { listen 80; server_name www.svn.com; location / { 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:8009; } }
保存退出。
6.重启nginx
nginx -s reload
7.打开浏览器,输入http://www.domain.com/svn,就会弹出提示输入用户名,密码的对话框,用户名为第4步中htpasswd -c /home/svn/passwd user_name的user_name,密码为该user_name的密码,如果没有弹出什么错误,说明安装成功。
8.用小乌龟svn来上传下载代码。
vi /home/svn/myproject/conf/svnserve.conf,将[general]下面anon-access = read auth-access = write password-db = passwd authz-db = authz前面的###去掉。
9.启动建立好的版本库服务。
svnserve -d -r /home/svn/myproject
10.我桌面上写了个tcpServer的代码。将tcpServer通过小乌龟上传到svn上,报了个警告:post-commit FS processing had error 'attempt to write a readonly database'.解决方法:chown www-data:www-data /home/svn/myproject/db/rep-cache.db
11.按照这样的步骤走下来,通过SVN客户端,用该用户名和密码上传代码到svn服务器上,或者下载代码到服务器上是能够成功的。支持多用户上传下载的功能,还在探索配置中。