最近公司要求搭建一个平台用于管理svn权限,在综合考虑之后采用了svnadmin,这个平台的详细介绍请查看https://code.google.com/p/jsvnadmin
本文主要整合了网上的部分资料,以及svnadmin平台说明文档,主要引用资料链接如下:
http://blog.csdn.net/yan19880901/article/details/8489873
http://www.tuicool.com/articles/RfuqYv
新手第一次写博客,希望大家一起多多交流。
下列为所需软件列表:
apr-1.5.0.tar.bz2
apr-util-1.5.3.tar.bz2
zlib-1.2.8.tar.gz
sqlite-autoconf-3080200.tar.gz
pcre-8.34.tar.gz
httpd-2.4.9.tar.gz
subversion-1.8.9.tar.bz2
sqlite-amalgamation-3080403.zip
php-5.5.6.tar.gz
svnadmin-3.0.4.zip
mysql-5.5.25.tar.gz
下载地址:
wget http://archive.apache.org/dist/apr/apr-1.5.0.tar.bz2
wget ftp://ftp.mirrorservice.org/sites/ftp.apache.org/apr/apr-util-1.5.3.tar.bz2
wget http://zlib.net/zlib-1.2.8.tar.gz
wget http://www.sqlite.org/2013/sqlite-autoconf-3080200.tar.gz
wget http://ftp.exim.llorien.org/pcre/pcre-8.34.tar.gz
wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.9.tar.gz
wget http://mirrors.cnnic.cn/apache/subversion/subversion-1.8.9.tar.gz
wget http://www.sqlite.org/2014/sqlite-amalgamation-3080403.zip
wget http://cn2.php.net/distributions/php-5.5.6.tar.gz
https://code.google.com/p/jsvnadmin/downloads/detail?name=svnadmin-3.0.zip&can=2&q=
wget http://downloads.skysql.com/archives/mysql-5.5/mysql-5.5.25.tar.gz
系统编译环境环境默认为已健全,若编译过程中出现依赖库缺失,请按照报错提示进行环境搭建补全。默认下载后的源码包存放位置为/opt/svnsoft
#接下来安装基础依赖软件包apr apr-util zlib sqlite-autoconf openssl pcre
#------------------------------------------------------------------
一、安装系统环境
#安装apr
cd /opt/svnsoft
tar -xvf apr-1.5.0.tar.bz2
cd apr-1.5.0
./configure --prefix=/usr/local/apr
make && make install
#安装apr-util
cd /opt/svnsoft
tar -xvf apr-util-1.5.3.tar.bz2
cd apr-util-1.5.3
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
#安装zlib
cd /opt/svnsoft
tar -xvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/usr/local/zlib
make && make install
#安装sqlite
cd /opt/svnsoft
tar -xvf sqlite-autoconf-3080200.tar.gz
cd sqlite-autoconf-3080200
./configure --prefix=/usr/local/sqlite-autoconf
make && make install
#安装openssl
cd /opt/svnsoft
tar zxf openssl-1.0.1e.tar.gz
cd openssl-1.0.1e
./config --prefix=/usr/local/openssl --shared
make && make install
#安装pcre
cd /opt/svnsoft
tar -xvf pcre-8.34.tar.gz
cd pcre-8.34
./configure --prefix=/usr/local/pcre
make && make install
#安装pcre是异常报错configure: error: You need a C++ compiler for C++ support
#解决办法:
#yum install -y gcc gcc-c++
二、安装Apache
#------------------------------------------------------------------
cd /opt/svnsoft
tar -xvf httpd-2.4.9.tar.gz
cd httpd-2.4.9
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --with-ssl=/usr/local/openssl --enable-module=so --enable-dav --enable-so --enable-dav-fs --enable-ssl --enable-proxy --enable-proxy-http
make && make install
cp /etc/init.d/httpd /etc/init.d/httpd.bak-20140127
cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
cd /usr/local/apache2/conf
cp httpd.conf httpd.conf.bak
useradd -M apache
#如果异常提示useradd: user 'apache' already exists
#则执行usermod -s /bin/bash apache
#测试 su - apache
vi /usr/local/apache2/conf/httpd.conf
#找到 User 和 Group 并修改成 User apache 和 Group apache 保存并退出
#找到 ServerName 并修改成ServerName localhost:80
#去掉该行的注释
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
三、安装配置Subversion
#------------------------------------------------------------------
cd /opt/svnsoft
tar -xvf subversion-1.8.9.tar.bz2
unzip sqlite-amalgamation-3080403.zip
mv sqlite-amalgamation-3080403 sqlite-amalgamation
mv sqlite-amalgamation subversion-1.8.9/
cd subversion-1.8.9
./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
make && make install
vi /etc/profile
#在最下面增加 export PATH=$PATH:/usr/local/svn/bin 保存并退出
source /etc/profile
exit
#检查是否安装成功
svnserve --version
#配置Subversion
#------------------------------------------------------------------
#先检查是否存在/techcenter/sd/repos目录结构
#cd /techcenter/sd/repos
#没有则创建 mkdir -p /techcenter/sd/repos/
svnadmin create /techcenter/sd/repos/project1
chown -R apache.apache /techcenter/sd/repos/
vi /techcenter/sd/repos/project1/conf/svnserve.conf
#将以下代码
[sasl]
#注释掉
#在文件最下面增加代码
anon-access = none
auth-access = write
password-db = passwdfile
authz-db = authz
realm = project1
#保存并退出
vi passwdfile
#***[users]下面的所有内容
#在[users]下面增加以下代码
admin = admin
#保存并退出
vi authz
#***### ('').下面的所有内容
#在### ('').下面增加以下代码
[groups]
g_mgr = admin //可以根据需求添加组成员
### at
[project1:/] //在project1下成员拥有的权限
@g_mgr = rw
* =
### trunk
[project1:/trunk] //载仓库project1下面的trunk目录上拥有的权限
@g_mgr = rw
* =
### branches
[project1:/branches] //在仓库project1下面branches目录上拥有的权限
@g_mgr = rw
* =
#保存并退出
/usr/local/svn/bin/svnserve -d -r /techcenter/sd/repos/ //指定svn运行的目录
ps -ef | grep svnserve
echo "/usr/local/svn/bin/svnserve -d -r /techcenter/sd/repos/" >> /etc/rc.local
#使用TortoiseSVN工具测试 //如果没有这个工具可以网上下载
svn://IP/project1
#添加文件提交
#更新文件提交
#OK~
四、整合Svbversion与Apache
#------------------------------------------------------------------
#配置svn权限及账号密码
cd /usr/local/apache2/bin/
./htpasswd -mc passwd admin
#输入两次密码
cp passwd /techcenter/sd/conf/
rm -rf passwd
cd /techcenter/sd/conf/
cp /techcenter/sd/repos/project1/conf/svn_passwdfile ./
cp /techcenter/sd/repos/project1/conf/svn_accessfile ./
#拷贝passwd文件内容到svn_passwdfile中
cp passwd svn_passwdfile
***passwd文件
rm -rf passwd
改变文件拥有者
chown -R apache.apache ./passwdfile
chown -R apache.apache ./authz
#配置apache配置文件
cd /usr/local/apache2/modules
cp /usr/local/svn/libexec/mod_authz_svn.so ./
cp /usr/local/svn/libexec/mod_dav_svn.so ./
vi /usr/local/apache2/conf/httpd.conf
查找以下每行代码,如有注释去掉注释,如不存在代码,则在文件最后面添加,同时核对modules是否存在.so文件
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
ServerName www.example.com:80改为
ServerName localhost:80
<Location /svn>
DAV svn
SVNParentPath /techcenter/sd/repos
SVNListParentPath On
AuthType Basic
AuthName "svn repos"
AuthUserFile /techcenter/sd/conf/svn_passwdfile
AuthzSVNAccessFile /techcenter/sd/conf/svn_accessfile
Require valid-user
</Location>
#保存并退出
五、安装php
#------------------------------------------------------------------
cd /home/soft/
yum install libxml2-devel libjpeg libjpeg-devel libpng libpng-devel
tar -xvf php-5.5.6.tar.gz
cd php-5.5.6
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-jpeg-dir=/usr/share/doc/libjpeg-turbo-1.2.1 --with-png-dir=/usr/share/doc/libpng-1.2.49 --with-mysql --with-zlib --with-gd --with-pear --with-config-file-path=/etc/
make && make install
cp php.ini-development /etc/php.ini
vi /usr/local/apache2/conf/httpd.conf
#确保下面代码,是去掉注释的,没有的补充添加上
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php .phtml .php3 .inc
#保存并退出
测试php是否安装成功,在/usr/local/apache2/htdocs/ 下建立一个info.php文件
<?php
phpinfo()
?>
保存退出;
在浏览器输入http://IP/info.php 查看是否成功。
#测试,打开浏览器访问地址
https://IP/svn/
#可以看到project1项目,可点击目录,查看目录里的文件
#输入账号密码
#在浏览器上可以看到先关项目文件,即标识成功
六、安装mysql
#------------------------------------------------------------------
yum -y install bison gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel* mysql-devel
安装cmake
由于mysql5.5开始,不再使用configure安装,而是使用cmake。
cd /opt/svnsoft
wget http://wwwNaNake.org/files/v2.8/cmake-2.8.6.tar.gz
tar -zxvf cmake-2.8.6.tar.gz
cd cmake-2.8.6/
./configure
make && make install
使用cmake安装mysql
//进入/opt/svnsoft目录下
tar -zxvf mysql-5.5.25.tar.gz
cd mysql-5.5.25
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/user/local/mysql/data \
-DSYSCONFDIR=/etc \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DMYSQL_TCP_PORT=3306 \
-DWITH_DEBUG=0 \
-DENABLED_LOCAL_INFILE=1
执行完成后继续执行 make && make install
配置mysql
#在mysql/support-files目录中有五个配置信息文件(请根据系统的实际情况以及实际需求选择下列配置文件进行操作,若选择不当可能导致mysql无法启动):
#my-small.cnf (内存<=64M)
#my-medium.cnf (内存 128M)
#my-large.cnf (内存 512M)
#my-huge.cnf (内存 1G-2G)
#my-innodb-heavy-4G.cnf (内存 4GB)
cd /usr/local/mysql
cp ./support-files/my-huge.cnf /etc/my.cnf
添加mysql用户和用户组,生成新的mysql授权表
//添加mysql运行的用户和用户组
groupadd mysql
useradd -g mysql mysql
cd /usr/local/mysql
chown -R root .
chown -R mysql data
chgrp -R mysql .
//生成新的mysql授权表
//进入mysql安装目录下的脚本目录
cd /usr/local/mysql/scripts
//利用mysql_install_db脚本生成新的mysql授权表
./mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
//mysql server在系统中的服务项设置
//复***务文件并修改
cd /usr/local/mysql/support-files
cp mysql.server mysqld
//修改mysqld
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
mv mysqld /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
//设置软连接使mysql, mysqldump, mysqladmin这三个bin命令能在shell中直接运行
ln -s /usr/local/mysql/bin/mysql /usr/bin
ln -s /usr/local/mysql/bin/mysqldump /usr/bin
ln -s /usr/local/mysql/bin/mysqladmin /usr/bin
rm -rf /etc/mysql/my.cnf 因为已经把此文件复制到/etc/my.cnf 如果不***的话,mysql启动不起来。
启动mysql,设置mysql用户名和密码
/etc/init.d/mysqld start
//设置root密码
mysqladmin -u root password "admin"
//mysql数据库中文乱码解决方法,如果没有出现乱码问题建议不要采用下列方法,utf8可能会导致出现字节过长的错误
vi /etc/my.cnf
//然后在[mysqld]配置选项下添加
character-set-server=utf8
注 mysql采用utf8编码格式时会出现:MySQL ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes 特别需要注意的是,如果采用这个格式,那么导入数据时需要保证表内没有超过767bytes。
//然后进入mysql
cd /usr/local/mysql/bin
mysql -u root -p
提示输入密码,若成功进入则表示安装成功。
七、安装 svnadmin-3.0.4.zip
解压
$unzip svnadmin-3.0.4.zip
解压完成后在当前目录下,出现:
db (这是一个目录)
svnadmin-javadoc.jar
svnadmin-sources.jar
svnadmin-3.0.4.zip
SvnAdmin_Manual_zh_CN.pdf
svnadmin.war
配置
1.配置数据库
导入sql脚本过程:
本地登陆进MSYQL,创建svnadmin数据库,导入脚本
# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 177
Server version: 5.1.30-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>create database svnadmin;
mysql>flush privileges; (这句意思是让刚才的配置生效)
mysql>use svnadmin;
mysql>source /soft/svnadmin-3.0.3/db/mysql5.sql; //(此处数据库一定要导入成功,我在操作过程中出现了i18n的表消失的情况,至今原因不明,有知道原因的大神请告知一下。)
mysql>flush privileges;
mysql>exit;
2.部署svnadmin
将svnadmin.war拷贝到tomcat目录下的webapps目录中
$cp svnadmin-3.0.4/svnadmin.war apache-tomcat-6.0.36/webapps
修改jdbc.properties文件 配置svnadmin的数据库连接信息。
#vim /usr/local/tomcat/webapps/svnadmin/WEB-INF/jdbc.properties
例如:
db=MySQL
#MySQL
MySQL.jdbc.driver=com.mysql.jdbc.Driver
MySQL.jdbc.url=jdbc:mysql://localhost:3306/svnadmin?characterEncoding=utf-8
MySQL.jdbc.username=root
MySQL.jdbc.password=123 //此处输入mysql用户密码
3.测试svnadmin是否运行正常
浏览器输入 http://hostname:8080/svnadmin
如果能出现登陆窗口说明运行正常。
svnadmin的操作请查看解压出来的SvnAdmin_Manual_zh_CN.pdf文件