Subversion+svnmanager结合Apache+Mysql+Php的源码安装与配置实践

Subversion作为目前最流行的版本控制软件,得到了广泛的应用。但是单独直接使用Subversion的话,在安全性和易用性上都存在问题,比如 明文密码 和 账号与权限树的管理 等方面。因此,目前一般通过svnmanager来解决易用性问题(图形化界面),通过结合apache来解决安全性问题(账号的加密以及对SSL传输的支持)。

下面,是我对 Subversion+svnmanager结合Apache+Mysql+Php的源码安装与配置实践 进行的总结,按照下面的步骤,就可以完成整个过程。并且由于是源码安装与配置,因此可以支持所有的Linux平台,希望能对大家有所帮助。

1.安装配置apache
wget http://apache.etoak.com//httpd/httpd-2.2.18.tar.bz2

tar xjvf httpd-2.2.18.tar.bz2

cd httpd-2.2.18
./configure --prefix=/opt/apache2 --enable-so --enable-dav --enable-dav-fs --enable-maintainer-mode --with-included-apr --enable-rewrite --enable-ssl --enable-proxy --enable-proxy-http

--enable-so 开启动态库支持,svn要求apache必须启用so
--enable-dav --enable-dav-fs 是支持svn认证使用的
--enable-maintainer-mode 开启调试模式
--with-included-apr 使用内置的apr
--enable-rewrite 开启rewrite
--enable-ssl 开启SSL
--enable-proxy 开启proxy支持
--enable-proxy-http 开启proxy http支持

make
make install

创建apache用户
useradd -M apache

修改apache配置文件,让它以用户apache身份运行
vi /opt/apache2/conf/httpd.conf
============================
User apache
Group apache
============================

2.安装配置mysql
wget http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.3-m3.tar.gz

tar xzvf mysql-5.5.3-m3.tar.gz

cd mysql-5.5.3-m3
./configure --prefix=/opt/mysql

make
make install

创建mysql普通用户
useradd -M mysql

以mysql用户身份创建默认库
/opt/mysql/bin/mysql_install_db --user=mysql

让mysql启动,并在后台运行
/opt/mysql/bin/mysqld_safe &

为mysql的root用户设置一个密码,如123456(请根据具体情况进行设置)
/opt/mysql/bin/mysqladmin -u root password 123456

3.安装配置subversion
wget http://subversion.tigris.org/downloads/subversion-1.6.13.tar.bz2
wget http://subversion.tigris.org/downloads/subversion-deps-1.6.13.tar.bz2
subversion-deps-1.6.13.tar.bz2是subversion的依赖包,解压后会自动放在先解压的subversion-1.6.13目录中;

tar jxvf subversion-1.6.13.tar.bz2
tar jxvf subversion-deps-1.6.13.tar.bz2

cd subversion-1.6.13
./configure --prefix=/opt/subversion --with-apxs=/opt/apache2/bin/apxs --with-apr=/opt/apache2/bin/apr-1-config --with-apr-util=/opt/apache2/bin/apu-1-config

make
make install

编辑apache配置文件使其与subversion相融合
vi /opt/apache2/conf/httpd.conf

检查是否存在这两行,并确保在/opt/apache2/modules目录下存在mod_dav_svn.so和mod_authz_svn.so这两个文件
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

添加以下两行
# Subversion default settings
Include conf/extra/httpd-svn.conf

创建配置文件
cd /opt/apache2/conf/extra/

vi httpd-svn.conf

01 <Location /svn>
02 DAV svn
03 SVNListParentPath On
04 SVNParentPath /data/svn_repo
05 AuthType Basic
06 AuthName "Subversion Repository"
07 AuthUserFile /opt/subversion/conf/svn_passwdfile
08 AuthzSVNAccessFile /opt/subversion/conf/svn_accessfile
09 Require valid-user
10 </Location>

创建subversion核心配置文件

cd /opt/subversion

mkdir conf

创建账户配置文件,回车后会提示输入密码两次,因为是第一次创建,svn_passwdfile文件原本不存在所以需要加-c参数,之后就不再需要了
/opt/apache2/bin/htpasswd -c /opt/subversion/conf/svn_passwdfile jack

创建权限树配置文件
vi /opt/subversion/conf/svn_accessfile

01 [groups]
02 g_manager = jack
03 g_coder = tom
04 g_hr = mary
05 g_vip = jack,tom,mary
06  
07 [project1:/]
08 @g_manager = rw
09 * = r
10  
11 [project1:/code]
12 @g_manager = rw
13 @g_coder = rw
14 @g_vip = rw
15 * =
16  
17 [project1:/code/source]
18 @g_manager = rw
19 @g_coder = rw
20 * =
21  
22 [project1:/hr]
23 @g_manager = rw
24 @g_hr = rw
25 * =
26  
27 [project1:/temp]
28 * = rw

创建仓库主目录
mkdir /data/svn_repo

创建测试仓库project1
/opt/subversion/bin/svnadmin create /data/svn_repo/project1

修改仓库权限
chown -R apache:apache /data/svn_repo

启动apache
/opt/apache2/bin/apachectl start

测试能否正常访问

http://192.168.116.128/svn/project1/

输入之前创建的jack用户的账号与密码

4.安装配置php
wget http://www.php.net/get/php-5.2.14.tar.gz/from/this/mirror

tar xzvf php-5.2.14.tar.gz

cd php-5.2.14
./configure --prefix=/opt/php --with-apxs2=/opt/apache2/bin/apxs --with-mysql=/opt/mysql --enable-mbstring

--with-apxs2 支持apache
--with-mysql 支持mysql
--enable-mbstring 支持mbstring库,svnmanager所需

make
make install

创建php.ini配置文件
cp php.ini-dist /opt/php/etc/php.ini

使apache支持php
vi /opt/apache2/conf/httpd.conf

检查是否存在以下一行内容
LoadModule php5_module modules/libphp5.so

添加index.php支持

1 <IfModule dir_module>
2     DirectoryIndex index.php index.html
3 </IfModule>
4  
5     AddType application/x-compress .Z
6     AddType application/x-gzip .gz .tgz
7     AddType application/x-httpd-php .php
8     AddType application/x-httpd-php-source .phps

重启apache
/opt/apache2/bin/apachectl restart

5.安装 VersionControl_SVN
/opt/php/bin/pear install VersionControl_SVN-0.3.4
注:安装过程为在线安装,需要连接互联网。

出现以下信息则表明安装成功
===================================================
downloading VersionControl_SVN-0.3.4.tar ...
Starting to download VersionControl_SVN-0.3.4.tar (Unknown size)
.............................................................done: 446,464 bytes
downloading XML_Parser-1.3.4.tar ...
Starting to download XML_Parser-1.3.4.tar (Unknown size)
...done: 90,624 bytes
install ok: channel://pear.php.net/XML_Parser-1.3.4
install ok: channel://pear.php.net/VersionControl_SVN-0.3.4
===================================================

检查是否安装成功
/opt/php/bin/pear install list

出现以下信息则表明安装成功
Installed packages, channel pear.php.net:
=========================================
Package Version State
Archive_Tar 1.3.7 stable
Console_Getopt 1.2.3 stable
PEAR 1.9.1 stable
Structures_Graph 1.0.3 stable
VersionControl_SVN 0.3.4 alpha
XML_Parser 1.3.4 stable
XML_Util 1.2.1 stable
=========================================

6.安装配置svnmanager
wget http://downloads.sourceforge.net/project/svnmanager/svnmanager/1.08/svnmanager-1.08.tar.gz

tar xzvf svnmanager-1.08.tar.gz

将解压出来的svnmanager程序目录复制到apache的站点根目录
cp -rp svnmanager-1.08 /opt/apache2/htdocs/svnman

创建并编辑svnmanager的配置文件
cd /opt/apache2/htdocs/svnman/
cp config.php.linux config.php

vi config.php

01 $lang                                           = "en_US.UTF-8";
02  
03 //Shell command's
04 $htpassword_cmd                         =       "/opt/apache2/bin/htpasswd";
05 $svn_cmd                                =       "/opt/subversion/bin/svn";
06 $svnadmin_cmd                           =       "/opt/subversion/bin/svnadmin";
07  
08 //Subversion locations
09 $svn_config_dir                         =       "/opt/subversion/conf";
10 $svn_repos_loc                          =       "/data/svn_repo";
11 $svn_passwd_file                        =       "/opt/subversion/conf/svn_passwdfile";
12 $svn_access_file                        =       "/opt/subversion/conf/svn_accessfile";
13  
14 $svn_trash_loc                          =       "";
15  
16 $svnserve_user_file="";
17  
18 $smtp_server                    =       "smtp.mailserver.net";
19  
20 $dsn  =   "mysql://svnmanager:123456@localhost/svnmanager"; //注意将mysqli修改为mysql
21  
22 $admin_name                                  =       "admin";
23 $admin_temp_password                    =       "admin";

将VersionControl的程序目录复制到svnmanager中
wget http://download.pear.php.net/package/VersionControl_SVN-0.3.4.tgz
tar xzvf VersionControl_SVN-0.3.4.tgz
mv VersionControl_SVN-0.3.4 /opt/apache2/htdocs/svnman/VersionControl

修改权限
chown -R apache:apache /opt/apache2/htdocs/
chown -R apache:apache /opt/subversion/

7.创建svnmanager数据库
/opt/mysql/bin/mysql -u root -p123456
mysql>create database svnmanager;
mysql>grant all privileges on svnmanager.* to 'svnmanager'@'localhost' identified by '123456';
mysql>FLUSH PRIVILEGES;
mysql>quit;

8.访问svnmanager

第一次访问会出现以下信息
===============
All tables are missing.
Creating requried tables...

Please reload page!
===============

重新刷新页面,会出现以下登陆画面。

默认login账号密码均为admin,登陆后创建一个新的管理员账户后,admin账户就会被自动屏蔽掉了;
之后再次使用新用户登录就会出现管理svn的诸多选项,例如 创建版本库,设置账户,设置权限,导入导出等比较实用的功能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值