一、安装准备(安装模块)
#sudo apt-get install apache2
#sudo apt-get install apache2-mpm-prefork
#sudo apt-get install apache2-utils
#sudo apt-get install libapache2-svn
#sudo apt-get install libapache2-mod-auth-pam(可选,用于PAM)
#sudo apt-get install libapache2-mod-auth-sys-group(可选,用于PAM)
#sudo apt-get install subversion
#sudo apt-get install subversion-tools
二、SVN配置
配置前说明:
我的Subversion文件仓库放在/home/svn,并且我的项目名称是简单的“myproject”。Subversion组名字是subversion
创建Subversion的组:
典型的情况下,您应该创建一个名为“Subversion”的组来拥有文件仓库所在的目录。
#sudo addgroup subversion
#sudo usermod -G subversion -a www-data
//subversion是组名,可自己定义,一般不需要更改
验证:
# cat /etc/group|grep subversion
subversion:x:1001:www-data,svnx
//你需要注销然后再登录以便您能够成为subversion组的一员
创建SVN库:
# cd /home
# sudo mkdir svn
#cd svn
# sudo mkdir myproject
//此命令在svn目录下进行
# sudo chown -R root:subversion myproject
//此命令在svn目录下进行
# # sudo chmod -R g+rws myproject
//此命令在svn目录下进行
//赋予组成员对所有新加入文件仓库的文件拥有相应的权限
# sudo svnadmin create myproject //此命令在svn目录下进行
可能的问题:
在后续Check in的时候遇到如下错误:
Can’t open ‘/home/svn/myproject/db/txn-current-lock’: Permission denied
解决方法:可以再次运行命令:
# sudo chown -R root:subversion myproject
三、Apache配置
先备份一下Apache2的配置文件:
sudo cp -R /etc/apache2 /etc/apache2_backup
通过WebDAV协议访问SVN文件仓库,您必须配置您的Apache 2 Web服务器。您必须加入下面的代码片段到您的/etc/apache2/mods-available/dav_svn.conf中:(加在文件最后面即可)
<Location /myproject> //版本库名字,必须以/开始
DAV svn //不用改
SVNPath /home/svn/myproject //版本库路径
AuthType Basic
AuthName “myproject subversion repository”
AuthUserFile /etc/subversion/passwd //密码文件路径。
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
特别说明:
1、如果需要用户每次登录时都进行用户密码验证,请将<LimitExcept GET PROPFIND OPTIONS REPORT>与</LimitExcept>两行注释掉。
2、当您添加了上面的内容,您必须重新起动Apache 2 Web服务器,请输入下面的命令:
#sudo /etc/init.d/apache2 restart
创建passwd 文件:
该文件包含了用户授权的详细信息。要添加用户,您可以执行下面的命令:
#sudo htpasswd -c /etc/subversion/passwd user_name
它会提示您输入密码,当您输入了密码,该用户就建立了。
最后,你就可以用客户端来访问了
http://主机IP/myproject
这样,就可以通过Web方式访问版本库了,不过这样的密码传输是纯文本方式的,基于安全方面的考虑,我建议你使用SSL。
四、SSL配置
Apache2已经在前面安装好了下面安装SSL模块:
安装SSL模块
#a2enmod ssl
我们可以使用openssl来创建,这里我就是此方法创建SSL证书的
#sudo cd /etc/apache2
#sudo mkdir ssl
#sudo cd ssl
#sudo openssl req -x509 -newkey rsa:1024 -keyout apache.pem -out apache.pem -nodes -days 999
注:在要求输入Common Name (eg, YOUR name)时,输入你的主机名。
示例过程如下:
Generating a 1024 bit RSA private key
…………………++++++
..++++++
writing new private key to ‘apache.pem’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
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 field 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]:Jiangxi
Locality Name (eg, city) []:Nanchang
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nanchang Unversity
Organizational Unit Name (eg, section) []:Information Center
Common Name (eg, YOUR name) []:LinuxServer
Email Address []:111@gmail.com
复制一份站点配置做为SSL配置的原型
#cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
#ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl
编辑SSL的配置
#vi /etc/apache2/sites-enabled/ssl
把端口改为443
加入SSL认证配置
其它的根据需要自己定制与普通配置无异
<VirtualHost *:443>
ServerSignature On
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
………………………
修改普通http方式的配置(apache2这里好像不用改,默认的已经是80端口)
编辑Apache端口配置,加入443端口(这里可以不用加“Listen 443”因为SSL默认认证的443端口已经打开)
别忘了把前面生成的SSL密钥文件拷贝过来
# sudo cp apache.pem /proc/14646/cwd/apache.pem //在apache.pem目录下
重启apache2
#/etc/init.d/apache2 restart