《2022年Ubuntu上搭建SVN服务器全攻略 .pdf》由会员分享,可在线阅读,更多相关《2022年Ubuntu上搭建SVN服务器全攻略 .pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目 录1 概述.3 2 安装 Ubuntu 8.10服务器.3 3 安装 Apache 服务器.3 4 创建 SVN服务器.3 4.1 安装 SVN.3 4.2 增加组.4 4.3 创建 SVN仓库.4 4.4 配置 Apache服务器.4 5 配置 SSL.6 6 远程修改 svn 用户口令.10 6.1 修改 Apache2的配置文件.10 6.2 安装 mod_perl 默认包.10 6.3 相关配置.10 6.4 获得修改口令的Perl 脚本.11 6.5 修改脚本执行权限.11 7 设置 SVN的权限.12 7.1 修改 Apache的配置.12 7.2 认证文件的配置.13 8 参
2、考文献.14 附录 A:远程修改SVN用户口令工具使用方法.14 附录 B:Ubuntu 8.10修改 IP 地址.15 附录 C:Ubuntu 下配置 SSH服务.15 1 概述本文详细描述了Ubuntu 环境下,SVN Apache SSL架构的 SVN服务器的搭建过程。通过https来访问 SVN服务器,采用基于Apache 的用户认证管理。用户的权限使用authz配置。2 安装 Ubuntu 8.10服务器可以是 Ubuntu 8.10 Server或者是 Desktop。安装过程中创建一个用户名为administrator的系统帐户,作为本服务器日常管理帐户。另外,为了方便后续的说明
3、,假设服务器的 ip 地址为 192.168.19.3。安装完成后,需要先运行更新管理器,以获得最新的源列表。3 安装 Apache 服务器在新立得软件包管理器里面,搜索 apache2 并选择安装Apache2,libapache2-svn。安装完成后,确认能通过http 访问 http:/192.168.19.3。正常情况下,会得到如下界面:说明 apache 已经正常工作了。4 创建 SVN服务器4.1 安装 SVN 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 13 页 -在新立得软件包管理器里面,搜索subversion,并选择安装subversion,subvers
4、ion-tools。安装好之后,进入下一步。4.2 增加组方法如下:l 在 Ubuntu 菜单上选择“系统-系统管理-用户和组”;l 切换到“组”标签;l 点击“添加组”按钮;l 组名为“subversion”;l 将您自己(administrator)和“www-data”(Apache 用户)加入组成员中;l 点击“OK”以确认修改,关闭该程序。或者直接使用命令,增加组和成员:sudo addgroup subversion sudo usermod-G subversion-a www-data administrator 当然,修改组也可以直接修改组文件:sudo vi/etc/gro
5、up。然后需要注销(我都是直接重新启动)再登录以便能够真正成为 subversion 组的一员。4.3 创建 SVN仓库现在执行下面的命令#cd/home#sudo mkdir svn#/usr/local/svn#sudo chown-R www-data:subversion svn#/usr/local/svn#sudo chmod-R g rws svn 最后的一条命令赋予组成员对所有新加入文件仓库的文件拥有相应的权限。下面的命令用于创建 SVN 文件仓库:#sudo svnadmin create/home/svn 4.4 配置 Apache服务器名师资料总结-精品资料欢迎下载-名师
6、精心整理-第 2 页,共 13 页 -先备份一下 Apache2 的配置文件,执行如下命令:#/usr/local/svn#sudo cp-R/etc/apache2/etc/apache2_bak 通过 WebDAV 协议访问 SVN 文件仓库,您必须配置您的 Apache 2 Web 服务器。您必须加入下面的代码片段到您的/etc/apache2/mods-available/dav_svn.conf中:(加在文件最后面即可)DAV svn SVNPath/home/svn AuthType Basic AuthName welcome to subversion repository A
7、uthUserFile/etc/subversion/passwd#Require valid-user#如果需要用户每次登录时都进行用户密码验证,请将 与 两行注释掉。当您添加了上面的内容,您必须重新启动 Apache 2 Web 服务器,请输入下面的命令:sudo/etc/init.d/apache2 restart 接下来,您需要创建/etc/subversion/passwd 文件,该文件包含了用户授权的详细信息。要添加用户,您可以执行下面的命令:sudo htpasswd-c/etc/subversion/passwd superman 它会提示您输入密码,当您输入了密码,该用户就建
8、立了。您可以通过下面的命令来访问文件仓库:你还可以继续创建其他用户,但是不能再用-c 选项了,因为-c 选项表示创建一个新的用户授权文件,一旦选用,原有的授权文件就被覆盖了。sudo htpasswd/etc/subversion/passwd user_name 此时,应该就可以通过web 方式访问 svn 服务器了。在浏览器的地址栏输入http:/192.168.19.3/svn/会弹出用户验证的窗口:输入正确的用户名和口令后,就能看到如下界面:名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 13 页 -5 配置 SSL 这里可以参考:http:/ 关于 SSL的配置很多,这
9、里我根据实际情况,做了一个简单实用的SSL加密机制。方法如下:Apache2 在 Ubuntu 系统内的基本情况如下:l 默认站点在 /var/www/l 配置文件在 /etc/apache2/l 日志在 /var/log/apache/l 启动脚本是 /usr/sin/apache2ctl 或者 /etc/init.d/apache2 Apache2已经在前面第2 步安装好了,下面安装SSL模块:安装 SSL模块sudo a2enmod ssl 我们可以使用openssl 来创建,这里我就是此方法创建SSL证书的。#sudo openssl req-x509-newkey rsa:1024-
10、keyout apache.pem-out apache.pem-nodes-days 999 注:在要求输入Common Name(eg,YOUR name)时,输入你的主机名。示例过程如下:#sudo openssl req-x509-newkey rsa:1024-keyout apache.pem-out apache.pem-nodes-days 999 Generating a 1024 bit RSA private key.writing new private key to apache.pem-You are about to be asked to enter infor
11、mation that will be incorporated into your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 13 页 -There are quite a few fields but you can leave some blank For some fields there will be a default value,If you enter.,the fie
12、ld will be left blank.-Country Name(2 letter code)AU:China string is too long,it needs to be less than 2 bytes long Country Name(2 letter code)AU:CN State or Province Name(full name)Some-State:Beijing Locality Name(eg,city):Haidian Organization Name(eg,company)Internet Widgits Pty Ltd:ABC Organizati
13、onal Unit Name(eg,section):Dep9 Common Name(eg,YOUR name):SvnServer Email Address: 此时/home/administrator目录下就有了一个apache.pem 的文件创建目录,存放证书文件sudo mkdir/etc/apache2/ssl 复制一份站点配置做为SSL 配置的原型#sudo cp/etc/apache2/sites-available/default/etc/apache2/sites-available/ssl#sudo ln-s/etc/apache2/sites-available/ss
14、l/etc/apache2/sites-enabled/ssl 然后编辑 SSL的配置#sudo vi/etc/apache2/sites-enabled/ssl 把端口改为 443(默认是 80),加入 SSL认证配置,其它的根据需要自己定制与普通配置无异,以下蓝色字体为新添加的:ServerSignature On 名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 13 页 -SSLEngine On SSLCertificateFile/etc/apache2/ssl/apache.pem ServerAdmin webmasterlocalhost DocumentRoot
15、/var/www/Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all ScriptAlias/cgi-bin/usr/lib/cgi-bin/AllowOverride None Options ExecCGI-MultiViews SymLinksIfOwnerMatch/etc/apache2/sites-enabled/ssl 45L,1055C 编辑 Apache 端口配
16、置,去掉80 端口的监听:#sudo vi/etc/apache2/ports.conf NameVirtualHost*:80#Listen 80 名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 13 页 -#SSL name based virtual hosts are not yet supported,therefore no#NameVirtualHost statement here Listen 443 这里可以不用加“Listen 443”因为SSL默认认证的 443 端口已经打开。别忘了把前面生成的SSL密钥文件拷贝过来sudo cp/home/adminis
17、trator/apache.pem/etc/apache2/ssl/最后重新启动apache 服务:sudo/etc/init.d/apache2 restart 然后netstat an|grep:443 如果 443 已经打开,则说明https 服务已经启动了。在浏览器上再验证一下:https:/192.168.19.3/svn 选择“是”则弹出如下验证窗口:输入 superman和口令之后:说明加密的 http访问 svn 也成功了。6 远程修改 svn 用户口令由于 SVN Apache架构下的用户并不是操作系统的用户,而只是Apache 的用户,因此没有办法通过SSH登陆到操作系统来
18、修改用户口令,只能另外想办法。借助Apache提供的 Web服务,通过 CGI或者 mod_python 等方式来修改authz 配置文件,从而达到修改用户口令的目的。以下介绍通过perl 的 cgi 来实现修改口令的功能,至于 mod_python方法,我的实验只做了一半。6.1 修改 Apache2 的配置文件将/etc/apache2/apache2.conf 文件打开,找到如下内容(如果没有就直接添加,默认情况下好像就是没有,所以我是直接添加在文件的末尾):#AddHandler cgi-script.cgi 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 13 页 -修
19、改成:AddHandler cgi-script.cgi.pl 6.2 安装 mod_perl 默认包sudo apt-get install libapache2-mod-perl2 6.3 相关配置默认安装好后,cgi-bin的目录默认指向 /usb/lib/cgi-bin/目录。而安装 apache2 的时候这个目录一般是不会自动创建的。之所以选择这个目录,原因在下面这个文件:/etc/apache2/sites-enabled/000-default 该文件是个链接,指向/etc/apache2/sites-available/default 打开看看,里面有这样的一段,把cgi-bi
20、n目录指向了实际的/usr/lib/cgi-bin/目录。ScriptAlias/cgi-bin/usr/lib/cgi-bin/AllowOverride None Options ExecCGI-MultiViews SymLinksIfOwnerMatch Order allow,deny Allow from all 默认情况下,上述文件不用任何修改。6.4 获得修改口令的Perl脚本访问 ftp:/192.168.19.63(或者直接与本作者联系)获得ChangePasswd.zip,将压缩包中的三个文件同时copy 到/usr/lib/cgi-bin/目录。sudo cp Chan
21、gePasswd.cgi/usr/lib/cgi-bin/sudo cp ChangePasswd.ini/usr/lib/cgi-bin/sudo cp ChangePasswd.log/usr/lib/cgi-bin/名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 13 页 -6.5 修改脚本执行权限cd/usr/lib/cgi-bin/sudo chmod 777 ChangePasswd.cgi sudo chmod 666 ChangePasswd.log sudo chmod 666/etc/subversion/passwd 之后,不用重新启动Apache 服务就能
22、通过访问URL来修改口令,直接访问URL:https:/192.168.19.3/cgi-bin/ChangePasswd.cgi 验证通过后,即可显示如下修改密码界面:如果修改成果,则显示如下界面:ChangePasswd.cgi 的详细说明,请参考附录A。7 设置 SVN的权限7.1 修改 Apache 的配置为了实现细粒度的权限控制,可以通过修改svn 的仓库目录下的conf/authz文件来实现。在此之前,需要告诉Apache,使用该文件sudo vi/etc/apache2/mods-available/dav_svn.conf 修改后如下,其中蓝色字体为新添加的内容:DAV svn
23、 SVNPath/home/svn AuthType Basic AuthzSVNAccessFile/home/svn/conf/authz AuthName welcome to subversion repository AuthUserFile/etc/subversion/passwd#Require valid-user 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 13 页 -#7.2 认证文件的配置sudo vi/home/svn/conf/authz 文件内容类似如下:groups admin=admin dev1=jack,kate dev2=zbh2342
24、,yingjianhh45,tantt,arei22 docs=bob,jane,mike training=zak#Default access rule for ALL repositories#Everyone can read,admins can write,Dan German is excluded./*=r admin=rw dangerman=#Allow developers complete access to their project repos project:/*=r/其他用户只有读权限admin=rw/admin,dev1这个两个组有读写权限dev1=rw 对子
25、项目的控制名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 13 页 -project:/DDWap/对 project/DDWap 子目录有读写权限,下面类似。dev2=rw project:/DDAdmin dev2=rw project:/DDSync dev2=rw project:/DDWeb dev2=rw project:/DDWeb dev2=rw project:/docs dev2=rw project:/thirdparty dev2=rw 通过实践,感觉Apache 的权限配置很简单,但不是太方便,如果要针对子目录设置不同的权限,则需要将每个目录的权限都显
26、式的指定。8 参考文献http:/ http:/ http:/ http:/ 附录 A:远程修改SVN用户口令工具使用方法参见 http:/ 1、将文件 ChangePasswd.cgi 和 ChangePasswd.ini 放到 apche 安装目录下的cgi-bin下名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 13 页 -2、确认 ChangePasswd.cgi 程序第 1 行,prel 工具的位置(我的:#!/usr/bin/perl-w)3、修改 ChangePasswd.cgi 第 84 行改成 htpasswd 所在的路径(我的:/project/apache
27、/bin/htpasswd)4、修改 ChangePasswd.cgi 128 行 ini文件改成完整路径(我的:/project/apache/cgi-bin/ChangePasswd.ini)5、配置文件 ChangePasswd.ini 第 2 行 authuserfile=密码存放路径(我的:/svndata/svn-auth-file/passwd)6、配置文件 ChangePasswd.ini 第 3 行 logfile=操作日志存放路径(我的:/project/apache/cgi-bin/ChangPasswd.log)注意细节:1、用 htpasswd 时 切勿用-m参数如果
28、以前用的话,可重新输入一次进行更新2、ChangPasswd.log 必须有“w”写入权限附录 B:Ubuntu 8.10修改 IP 地址参见:http:/ 执行命令:sudo vi/etc/network/interface 第一步:屏蔽掉自动获取IP 的设置iface eth0 inet dhcp将这一行屏蔽掉修改之后的内容如下:#The primary network interface auto eth0#iface eth0 inet dhcp 第二步:添加静态 IP 的信息#The primary network interface iface eth0 inet static a
29、ddress 192.168.0.10 netmask 255.255.255.0 名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 13 页 -gateway 192.168.0.1 也可以通过如下命令重启网卡,让新配置生效,好处是不影响其他网络接口。$sudo ifdown eth0$sudo ifup eth0 如果只是要临时改变IP 地址,则不用修改interface.只用 ifconfig使用即可,不过当系统重启动后,系统后会恢复interfaces中的配置上。$sudo ifconfig eth0 192.168.1.111 netmask 255.255.255.0
30、 第三步:设置 DNS 编辑/etc/resolv.conf,设置 dns nameserver 202.96.134.133 nameserver 202.106.0.20 重启网络:/etc/init.d/networking restart 以上步骤完成之后只要重新启用一下网络就OK了.附录 C:Ubuntu 下配置 SSH服务Ubuntu 缺省没有安装 SSH Server,可以使用以下命令安装OpenSSH:sudo apt-get install openssh-server openssh-client Ubuntu 缺省安装了 ssh client。可以通过编辑 /etc/ssh/sshd_config 文件来配置 OpenSSH sudo cp/etc/ssh/sshd_config/etc/ssh/sshd_config.original sudo chmod a-w/etc/ssh/sshd_config.original 配置完成后重新启动:sudo/etc/init.d/ssh restart 名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 13 页 -