当前位置: 首页 > 工具软件 > SVNManager > 使用案例 >

mysql 权限树,部署Svnmanager+Apache解决SVN易用安全性问题

缪阎宝
2023-12-01

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

下面,是我基于LAMP环境下对Subversion+SVNManager结合的源码部署过程,由于是源码安装与配置,因此可以支持所有的Linux平台,希望能对大家有所帮助。

1.安装配置apache

[root@svn tools]# wget http://apache.etoak.com/httpd/httpd-2.2.22.tar.bz2

[root@svn tools]# tar xjvf httpd-2.2.22.tar.bz2

[root@svn tools]# cd httpd-2.2.22

[root@svn httpd-2.2.22]# ./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支持

[root@svn httpd-2.2.22]# make && make install

创建apache用户

[root@svn httpd-2.2.22]# useradd -M apache

修改apache配置文件,让它以用户apache身份运行

[root@svn httpd-2.2.22]# vi /opt/apache2/conf/httpd.conf

User apache

Group apache

2.安装配置mysql

[root@svn httpd-2.2.22]# cd ..

[root@svn tools]# wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz

[root@svn tools]# tar xf cmake-2.8.4.tar.gz

[root@svn tools]# cd cmake-2.8.4

[root@svn cmake-2.8.4]# ./configure

[root@svn cmake-2.8.4]# make;make install

[root@svn httpd-2.2.22]# cd ..

[root@svn tools]# wget http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.3-m3.tar.gz

[root@svn tools]# tar xf mysql-5.5.3-m3.tar.gz

[root@svn tools]# cd mysql-5.5.3-m3

[root@svn mysql-5.5.3-m3]# cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql \

-DSYSCONFDIR=/opt/mysql/etc \

-DMYSQL_DATADIR=/opt/mysql/data \

-DMYSQL_TCP_PORT=3306 \

-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \

-DMYSQL_USER=mysql \

-DEXTRA_CHARSETS=all \

-DWITH_READLINE=1 \

-DWITH_SSL=system \

-DWITH_EMBEDDED_SERVER=1 \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1

[root@svn mysql-5.5.3-m3]# make && make install

创建mysql普通用户

[root@svn mysql-5.5.3-m3]# useradd -M mysql

以mysql用户身份创建默认库

[root@svn mysql-5.5.3-m3]# /opt/mysql/bin/mysql_install_db --user=mysql

让mysql启动,并在后台运行

[root@svn mysql-5.5.3-m3]# /opt/mysql/bin/mysqld_safe &

为mysql的root用户设置一个密码,如123456(请根据具体情况进行设置)

[root@svn mysql-5.5.3-m3]# /opt/mysql/bin/mysqladmin -u root password '123456'

3.安装配置php

[root@svn mysql-5.5.3-m3]# cd ..

[root@svn tools]# wget http://cn2.php.net/get/php-5.3.18.tar.gz/from/this/mirror

[root@svn tools]# tar xf php-5.3.18.tar.gz

[root@svn tools]# cd php-5.3.18

[root@svn php-5.3.18]# ./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所需

[root@svn php-5.3.18]# make && make install

创建php.ini配置文件

[root@svn php-5.3.18]# cp php.ini-development /opt/php/etc/php.ini

使apache支持php

[root@svn php-5.3.18]# vi /opt/apache2/conf/httpd.conf

#检查是否存在以下一行内容

LoadModule php5_module modules/libphp5.so

#添加index.php支持

DirectoryIndex index.php index.html

AddType application/x-compress .Z

AddType application/x-gzip .gz .tgz

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

重启apache

[root@svn php-5.3.18]# /opt/apache2/bin/apachectl restart

4.安装配置subversion

[root@svn php-5.3.18]# cd ..

[root@svn tools]# wget http://subversion.tigris.org/downloads/subversion-1.6.13.tar.bz2

[root@svn tools]# 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目录中

[root@svn tools]# tar jxvf subversion-1.6.13.tar.bz2

[root@svn tools]# tar jxvf subversion-deps-1.6.13.tar.bz2

[root@svn tools]# cd subversion-1.6.13

[root@svn 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

[root@svn subversion-1.6.13]# make

编译时出现如下错误:

+--------------------------------------+

/usr/bin/ld: cannot find -lexpat

collect2: ld returned 1 exit status

make: *** [subversion/svn/svn] Error 1

+--------------------------------------+

说明缺少expat及expat-devel包,安装expat及expat-devel包即可解决

[root@svn subversion-1.6.13]# yum -y install expat expat-devel

安装完expat及expat-devel包,再重新编译安装

[root@svn subversion-1.6.13]# make

[root@svn subversion-1.6.13]# make install

编辑apache配置文件使其与subversion相融合

[root@svn subversion-1.6.13]# 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

创建配置文件

[root@svn subversion-1.6.13]# cd /opt/apache2/conf/extra/

[root@svn extra]# vi httpd-svn.conf

DAV svn

SVNListParentPath On

SVNParentPath /data/svn_repo

AuthType Basic

AuthName "Subversion Repository"

AuthUserFile /opt/subversion/conf/svn_passwdfile

AuthzSVNAccessFile /opt/subversion/conf/svn_accessfile

Require valid-user

创建subversion核心配置文件

[root@svn extra]# cd /opt/subversion

[root@svn subversion]# mkdir conf

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

[root@svn subversion]# /opt/apache2/bin/htpasswd -c /opt/subversion/conf/svn_passwdfile jack

创建权限树配置文件

[root@svn subversion]# vi /opt/subversion/conf/svn_accessfile

[groups]

g_manager = jack

g_coder = tom

g_hr = mary

g_vip = jack,tom,mary

[project1:/]

@g_manager = rw

* = r

[project1:/code]

@g_manager = rw

@g_coder = rw

@g_vip = rw

* =

[project1:/code/source]

@g_manager = rw

@g_coder = rw

* =

[project1:/hr]

@g_manager = rw

@g_hr = rw

* =

[project1:/temp]

* = rw

创建仓库主目录

[root@svn subversion]# mkdir -p /data/svn_repo

创建测试仓库project1

[root@svn subversion]# /opt/subversion/bin/svnadmin create /data/svn_repo/project1

修改仓库权限

[root@svn subversion]# chown -R apache:apache /data/svn_repo

重新启动apache

[root@svn subversion]# /opt/apache2/bin/apachectl restart

测试能否正常访问

浏览器输入:http://192.168.1.59/svn/project1/ ,输入之前创建的jack用户和密码

5.安装VersionControl_SVN

[root@svn subversion]# /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

+------------------------------------------------------------------------------+

检查是否安装成功

[root@svn subversion]# /opt/php/bin/pear list

出现以下信息则表明安装成功

+------------------------------------------------------------------------------+

Installed packages, channel pear.php.net:

=========================================

Package            Version State

Archive_Tar        1.3.7   stable

Console_Getopt     1.3.0   stable

PEAR               1.9.4   stable

Structures_Graph   1.0.4   stable

VersionControl_SVN 0.3.4   alpha

XML_Parser         1.3.4   stable

XML_Util           1.2.1   stable

+------------------------------------------------------------------------------+

6.安装配置svnmanager

[root@svn tools]# wget http://downloads.sourceforge.net/project/svnmanager/svnmanager/1.08/svnmanager-1.08.tar.gz

[root@svn tools]# tar xzvf svnmanager-1.08.tar.gz

将解压出来的svnmanager程序目录复制到apache的站点根目录

[root@svn tools]# cp -rp svnmanager-1.08 /opt/apache2/htdocs/svnman

创建并编辑svnmanager的配置文件

[root@svn tools]# cd /opt/apache2/htdocs/svnman/

[root@svn svnman]# cp config.php.linux config.php

[root@svn svnman]# vi config.php

$lang                                           = "en_US.UTF-8";

//Shell command's

$htpassword_cmd                         =       "/opt/apache2/bin/htpasswd";

$svn_cmd                                =       "/opt/subversion/bin/svn";

$svnadmin_cmd                           =       "/opt/subversion/bin/svnadmin";

//Subversion locations

$svn_config_dir                         =       "/opt/subversion/conf";

$svn_repos_loc                          =       "/data/svn_repo";

$svn_passwd_file                        =       "/opt/subversion/conf/svn_passwdfile";

$svn_access_file                        =       "/opt/subversion/conf/svn_accessfile";

$svn_trash_loc                          =       "";

$svnserve_user_file="";

$smtp_server                    =       "smtp.mailserver.net";

$dsn  =   "mysql://svnmanager:123456@localhost/svnmanager"; //注意将mysqli修改为mysql

$admin_name                                  =       "admin";

$admin_temp_password                    =       "admin";

将VersionControl的程序目录复制到svnmanager中

[root@svn svnman]# cd /home/tools

[root@svn tools]#

wget http://download.pear.php.net/package/VersionControl_SVN-0.3.4.tgz

[root@svn tools]# tar xzvf VersionControl_SVN-0.3.4.tgz

[root@svn tools]# mv VersionControl_SVN-0.3.4 /opt/apache2/htdocs/svnman/VersionControl

修改权限

[root@svn tools]# chown -R apache:apache /opt/apache2/htdocs/

[root@svn tools]# chown -R apache:apache /opt/subversion/

7.创建svnmanager数据库

[root@svn tools]# /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

在浏览器中输入:http://192.168.1.59/svnman/

第一次访问会出现以下信息

+------------------------------------------------------------------------------+

All tables are missing.

Creating requried tables...

Please reload page!

+------------------------------------------------------------------------------+

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

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

©著作权归作者所有:来自51CTO博客作者300second的原创作品,如需转载,请注明出处,否则将追究法律责任

apache安全性svnmanager【运维|系统】

 类似资料: