Ubuntu Server 10.4 使用经历(五) 之 Subversion
为了做自己项目的版本控制,搭建一个简单的Subversion的版本控制服务器。
好久没有搭建和使用版本控制服务器,最近使用经验还停留在微软的TFS状态,这次选择Subversion。网上看到了很多关于Subverion和git比较的文章,这里不在重复,后续考虑使用git,最近为了把项目跑西来,并且简单实用,还是选择了Subversion入手。由于本人多年不从事开发项目(常做项目实施),所以很多需要补充学习。
安装过程给大家借鉴,也参考很多网上其他文章,主要参考:http://wangxc.javaeye.com/blog/665962 这里特地声明
当然也有相应的改动适应我搭建的Ubuntu服务器环境,言归正传,搭建开始。
环境说明:
Ubuntu Server 10.4
已经安装SSH
已经安装LAMP
搭建目标:
安装SVN 支持svn://方式访问
安装SVNManager 支持 https://方式访问
1.安装svn
单独安装 如果只实现第一个目标
sudo apt-get install subversion
apache集成安装 如果想实现两个目标
sudo apt-get -y install libapache2-svn apache2-mpm-prefork subversion subversion-tools
2.目录文件 配置
创建svn目录 我今后svn项目保存的目录
sudo mkdir /XXX/svn
编辑dev-svn站点文件,建立一个空文件,使apache可以访问
sudo vim /etc/apache2/sites-aviliales/dev-svnsvn sudo chown -R www-data.www-data /XXX/svn
建立密码和授权文件,空文件
sudo touch /etc/apache2/dav_svn.passwd
sudo touch /etc/apache2/dav_svn.authzsudo chmod 777 /etc/apache2/dav_svn.passwd
sudo chmod 777 /etc/apache2/dav_svn.authz
3.安装PHP支持类库: 我安装时最新版本为0.3.4 sudo -i 获得root授权,懒得敲sudo了,呵呵
apt-get install php-pear
pear install -a VersionControl_SVN-0.3.4
手动下载svnmanager
http://sourceforge.net/projects/svnmanager/files/
4.修改config.php文件内容
<?php
$htpassword_cmd = "/usr/bin/htpasswd";
$svn_cmd = "/usr/bin/svn";
$svnadmin_cmd = "/usr/bin/svnadmin";
$svn_repos_loc = "/XXX/svn";
$svn_passwd_file = "/etc/apache2/dav_svn.passwd";
$svn_access_file = "/etc/apache2/dav_svn.authz";
$svn_trash_loc = "";
$svnserve_user_file = "";
$smtp_server = "smtp.mailserver.net";
$dsn = "mysql://yourdatabase:yourpassword@localhost/svnmanager";
$admin_name = "admin";
$admin_temp_password = "admin";
?>
其中dsn中的数据库需要你提前在mysql中建立,其它目录文件请参考前面建立情况对应调整
数据库创建参考
mysql –u root –p
Mysql>create database svnmanager;
Mysql>grant all privileges on svnmanager.* to 'svnmanager'@'localhost' identified by 'password';
Mysql>FLUSH PRIVILEGES;
Mysql>quit;
5.安装SSL
apt-get install openssl
apt-get install ssl-cert
a2enmod ssl
创建apache下的ssl目录:
mkdir /etc/apache2/ssl
创建证书相关文件
进入/etc/apache2/ssl目录,创建私鈅,需要输入两次相同的关键字:
cd /etc/apache2/ssl
openssl genrsa -des3 -out my-server.key 1024
openssl req -new -key my-server.key -x509 -out my-server.crt -config /etc/ssl/openssl.cnf
apache重启自动验证
sudo cp my-server.key my-server.key.org
sudo openssl rsa -in my-server.key.org -out my-server.key
sudo /etc/init.d/apache2 restart
创建ssl站点文件 svnmanager管理工具使用
sudo touch /etc/apache2/sites-available/ssl
文件主要内容
NameVirtualHost *:443
<VirtualHost *:443>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/my-server.crt
SSLCertificateKeyFile /etc/apache2/ssl/my-server.key
<Location /svn>
DAV svn
SVNParentPath /XXX/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
SVNListParentPath On
Require valid-user
</Location>
Alias /svnmanager "/opt/svnmanager-1.08/"
<Directory "/opt/svnmanager-1.08/">
SSLRequireSSL
</Directory>
</VirtualHost>
a2ensite ssl
启动后,https 站点 svnmanager目录可以访问,可以创建管理svn了,同时打开了https连接svn的方式
6.打开svn://访问方式
以上ssl方式可以不需要,直接操作此步可以,但需要通过svn命令行方式创建版本控制库。
sudo svnserve -d -r /XXX/svn
我将此命令添加到了服务器启动文件中rc.local,这样就可以自动启动此服务了。
默认情况下svn://连接方式用户名密码和https并不是在一起的,需要单独维护,他会在你的库目录下的conf目录中看到passwd文件维护
至此搭建完成
当然为了服务器的正常访问,我还调整了路由器的配置等,那些就不在这里阐述了,保证局域网的畅通就好了。
附加 MySQL root 密码恢复,由于本人长时间没有管理Ubuntu中的LAMP,所以MySQL密码忘记,呵呵!
Stop the MySQL Server.
sudo /etc/init.d/mysql stop
sudo service mysql stop
Start the mysqld configuration.
sudo mysqld --skip-grant-tables &
Login to MySQL as root.
mysql -u root mysql
Replace YOURNEWPASSWORD with your new password!
UPDATE user SET Password=PASSWORD('YOURPASSWORD') WHERE User='root'; FLUSH PRIVILEGES; exit;
Start the MySQL Server
sudo service mysql start