`

ubuntu14.04安装apache2 svn

阅读更多
下面就讲一下如何采用Apache+SVN,实现以http的方式享受SVN服务,示例用户名为jzk。
一、Apache
1、安装Apache
sudo apt-get install apache2

如果报如下错误:
Package apache is not available, but is referred to by another package

需要更新源
sudo apt-get update 
sudo apt-get upgrade


2、修改端口
因为nginx默认情况应该是占用了80端口,而apache默认也应该使用的是80端口,所以会发生端口冲突。
sudo vim /etc/apache2/ports.conf
sudo vim /etc/apache2/sites-available/000-default.conf

将上面2个文件中的80端口修改8099,或者其他,然后在重新启动apache
sudo /etc/init.d/apache2 restart


3、配置多站点
a、修改配置文件
$ cd /etc/apache2/sites-available
$ sudo cp 000-default.conf 001-filehost.conf


b、修改001-filehost.conf文件
将文件中的DocumentRoot部分替换为以下部分:
DocumentRoot /home/www
Options +Indexes
IndexOptions FancyIndexing FoldersFirst NameWidth=* DescriptionWidth=*

同时编辑文件 /etc/apache2/apache2.conf,在里面加入如下内容:
<Directory /home/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

c、激活站点 001-filelist.conf
sudo a2ensite 001-*
sudo a2dissite 000-*
service apache2 reload #无效
sudo /etc/init.d/apache2 restart



二、SVN
1、安装SVN命令如下:
sudo apt-get install subversion
sudo apt-get install libapache2-svn
sudo apt-get install apache2-utils


2、查看/etc/apache2/mods-enabled/dav_svn.load文件,有mod_dav_svn.so和mod_authz_svn.so这两个动态库说明apache已经加载了Subversion的访问控制模块。如果没有,手动添加。
sudo vim /etc/apache2/mods-enabled/dav_svn.load
LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so



3、在/home目录下创建一个SVN项目仓库(repository),指令如下:
sudo mkdir -pv /home/svn/repos #创建SVN项目仓库
sudo svnadmin create --fs-type fsfs /home/svn/repos
/**
sudo chown -R root:subversion repos #将repos这个目录下的所有文件和目录转移所有权给subversion用户组中的用户root;-R对目前目录下的所有档案与子目录进行相同的拥有者变更
sudo svnadmin create /home/svn/repos #用SVN自带的工具svnadmin create创建SVN项目仓库
sudo chmod -R g+rws repos #赋予组成员对所有新加入项目仓库repos的文件和目录均拥有相应的权限
**/

运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb。

如果一切正常,命令执行后没有任何反馈信息而迅速返回。一个新的版本库就被创建出来。我们可以查看下版本库里有什么。

用如下命令我们可以测试下Subversion能不能检出。
sudo svn co file:///home/svn/repos/


4、 Subversion添加用户
sudo touch /home/svn/passwd.conf
sudo touch /home/svn/authz.conf


sudo htpasswd -c /home/svn/passwd.conf jzk

首次创建需要添加-c选项,将登录Ubuntu系统的用户jzk添加到SVN用户中。
如果再次添加用户的话不需要添加-c选项了,如果添加-c选项,之前已经添加的用户就会消失,相当于从新开始了。如下:
sudo htpasswd /etc/subversion/passwd new_jzk


5、添加svnAdmin的用户组,并将账号jzk添加到这个组中,命令如下:
sudo addgroup svnadmin
sudo usermod -G svnadmin -a jzk

顺带解释一下用到的2个参数
# 其中-G指定用户添加到哪个组中
-a 参数的意义等同于  -dR  --preserve=all
就是以下几个意义的组合:
-d:   保持软链接
-R:   递归
--preserve=all  :保持文件原有属性
这里-a表明我们只是将用户jzk添加到svnadmin这个组中,用户多了一个所属的用户组,但是不会从之前所属的用户组中脱离出来。

6、 Subversion分配用户权限
授权用户权限命令如下:
sudo vim /home/svn/authz.conf

编辑内容:
#用户组指令
[groups]
svnadmin = jzk,将用户jzk添加到用户组svnAdmin
#其他组
[repos:/]
@svnadmin = rw #为用户组subversion添加读写权限
* = 

其中* = 表示其它所有用户都没有任何权限。@表示用户组,*表示所有用户,[/]表示全部目录。注意顶格写。UTF-8格式才能配置SVN权限,Linux下默认是UTF-8,Windows下有转换工具,比如Eclipse->Edit->最后一项。一般针对最末梢文件设置权限。

特别注意:权限分配时,不能写成cen, huang =r,这样提交时会出现错误:svn Commit failed checkout of 403 forbidden。应该写成cen = r和huang = r

设置SVN开机启动
a、创建执行脚本svn.sh
#sudo touch /root/svn.sh
sudo vim /root/svn.sh
#输入如下内容
#!/bin/bash
svnserve -d -r /home/svn

b、添加可执行权限
sudo chmod ug+x /root/svn.sh

c、添加自动运行
sudo vim /etc/init.d/rc.local

在最后添加一行内容如下:
/root/svn.sh

重启服务器


7、配置Apache,以http的协议方式访问SVN服务。
在安装libapache2-svn的时候,生成了一个路径为/etc/apache2/mods-available/dav_svn.conf的文件,接下来我们对其进行些许的修改来完成对Apache的配置。
sudo vim /etc/apache2/mods-available/dav_svn.conf

修改完的dav_svn.conf内容如下所示:
<Location /svn>
DAV svn
SVNParentPath /home/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /home/svn/passwd.conf
AuthzSVNAccessFile /home/svn/authz.conf
Require valid-user
</Location>



8、重启SVN:
sudo killall svnserve
svnserve -d -r /home/svn --config-file /home/svn/repos/conf/svnserve.conf
sudo /etc/init.d/apache2 restart



9、访问
sudo /etc/init.d/apache2 restart

http://192.168.36.135:8099/svn/repos/



Subversion添加项目
我以统一的版本库为例,添加三个项目business,develop和project。首先在一个临时目录下,根据 Subversion 版本控制的一般布局结构,创建出三个项目的主要目录树,命令如下:
sudo mkdir /home/temp
sudo mkdir /home/temp/develop
sudo mkdir /home/temp/business
sudo mkdir /home/temp/project

然后用 svn import 命令导入已有的目录树。
svn import /home/svn/tmp/ file:///home/svn/repos/ --message "init"

可以用 svn list 确认导入的项目是否正确:
svn list --verbose file:///home/svn/repos/

如果要查看最新修订版本的信息,可以使用 svnlook info 命令:
svnlook info /home/svn/repos/

还可以在命令后面接上 “--revision 版本号” 来指定某一个修订版的显示。

还可以用如下命令来显示版本库的具体树形结构,后面的 “--show-ids” 选项指定显示每一个显示元素的修改版本 ID。
svnlook tree /home/svn/repos/ --show-ids



重启之后我们在浏览器中键入SVN项目的访问地址就可以查看项目中的内容了,假定我们配置服务器的IP地址为192.168.36.135,那么我们在浏览器中可键入http://192.168.36.135/svn/respo/进行访问。
以上我们介绍的是SVN服务器端的安装和配置,在客户端可以安装一个SVN的客户端软件,如TortoiseSVN这个软件。TortoiseSVN的安装使用都非常方便,但是在第一次使用的时候可能会遇到一些小问题,如在TortoiseSVN Commit时报出错误:
svn: Can't open file '/home/svn/repos/db/txn-current-lock': Permission denied
    消除这种错误的解决方法是给SVN目录添加读写权限,命令如下:
cd /home/svn/repos
sudo chown jzk:1 -R db/
sudo chmod 777 -R db/
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics