Linux Apache+Svn的配置过程
一、名词解释
1、Check out——从服务器端取得代码
把服务器资料库里存放的某个项目代码取出来,放到本地主机中,这个动作叫做“check out”。使用具体步骤:进入要安装项目文件的目录中,点击鼠标右键,选择SVN Check out项,然后填写项目的原始路径和安装路径后点击“ok”即可。
2、Update——更新项目代码
以前checkout过的一个项目代码,当服务器上有了更新的代码,或者本地代码损坏或丢失,update可以自动判断本地哪些文件较旧,或者缺少,都会自动更新。当然,你也可以删除掉本地代码,重新check out。使用具体步骤为:在要更新的项目上点击鼠标右键,选择“SVN Update”项即可。
3、Commit——将本地代码上传到服务器
当修改(增加,删除,修改等所有写操作)过本地代码后,这个动做会把新代码提交到SVN。如果本地代码做了修改,不执行commit操作,SVN服务器上是不会有这个新版本的,也就是说其它人也得不到。对代码做过修改后,应尽快commit。使用具体步骤:在修改完待上传的项目上点击鼠标右键,选择“SVN Commit”项即可。
4、Export——将项目导出到本地
如果想要得到一个完整的项目,且不需要再进行版本的改动,可以直接把该项目导出版本控制系统,成为一个普通文件进行使用。具体步骤为:单击鼠标右键,选择TortoiseSVN——>>Export项,然后填入要导出的项目既可。
5、Show Log——显示所有版本
如果项目成员想查看本地下载的属于版本控制内的某个项目以前的所有版本,就在该项目上单击鼠标右键,选择TortoiseSVN菜单下的Show Log项。则该项目的所有版本及其每个版本的修改信息都将显示在出现的新对话框下,供项目成员进行参考。
6、Update To Revision——恢复到某个版本
当项目成员想要把某个项目恢复到以前的某个版本时,在该项目上单击鼠标右键,选择TortoiseSVN菜单下的Update To Revision,于是,在出现的Update对话框中可以先点击“Show Log”来查看及确定要恢复到的版本号,或者直接将要恢复到的版本号填入“Revision”旁的编辑区内,最后点击“OK”。于是,该项目就恢复到想要的项目版本了。
7、Add——增加文件
当项目成员想在项目中添加一个新文件时,请把该文件先拷贝到项目文件加下,然后,在该文件上单击鼠标右键,选择TortoiseSVN菜单下的Add项,于是,该文件就可以被添加到项目中了。
二、安装Apache
1.解压Apache安装包
[root@cent6]#tar zxvf httpd-2.2.21.tar.gz
2.配置Apache
[root@cent6]#cd httpd-2.2.21
[root@cent6 httpd-2.2.21]#useradd apache
[root@cent6 httpd-2.2.21]#groupadd apache
[root@cent6 httpd-2.2.21]#usermod -G apache apache
[root@cent6 httpd-2.2.21]# ./configure --prefix=/opt/httpd/ --enable-deflate --enable-expires --enable-headers --enable-modules=most --enable-so --with-mpm=worker --enable-rewrite --enable-ssl --enable-mods-shared=all ---进行编译
[root@cent6 httpd-2.2.21]#make && make install ---安装
[root@cent6]#/opt/httpd/bin/apachectl start ---启动Apache服务
打开浏览器输入地址,如果出现“It works!"则安装成功。
三、安装Subversion
1.下载Subversion
2.解压Subversion
[root@cent6]#tar zxvf subversion-1.7.4.tar.gz
3.安装Subversion
[root@cent6]#cd subversion-1.7.4
[root@cent6 subversion-1.7.4] ./configure --with-apxs=/opt/httpd/bin/apxs --prefix=/opt/subversion/ --with-apr=/opt/httpd/ --with-apr-util=/opt/httpd/ --with-ssl --with-zlib --enable-maintainer-mode
[root@cent6 subversion-1.7.4]make && make install
4.报错及解决方法
报错信息:
unpack the archive using tar/gunzip and copy sqlite3.c from the
resulting directory to:
/opt/software/subversion-1.7.4/sqlite-amalgamation/sqlite3.c
unzip sqlite-amalgamation-3070800.zip
mkdir /opt/software/subversion-1.7.4(解压后的目录)/sqlite-amalgamation
cp sqlite3.c /opt/software/subversion-1.7.4/sqlite-amalgamation/
5.创建库文件所在目录
[root@cent6]#mkdir /opt/svn
[root@cent6]#chmod 766 /opt/svn
[root@cent6 opt]#subversion/bin/svnadmin create /opt/svn/test ---test为仓库
[root@cent6]#cd /opt/svn/test
ll
total 24
drwxr-xr-x 2 root root 4096 Apr 23 14:30 conf
drwxr-sr-x 6 root root 4096 Apr 23 14:30 db
-r--r--r-- 1 root root 2 Apr 23 14:30 format
drwxr-xr-x 2 root root 4096 Apr 23 14:30 hooks
drwxr-xr-x 2 root root 4096 Apr 23 14:30 locks
-rw-r--r-- 1 root root 229 Apr 23 14:30 README.txt
conf 目录下存放了版本库的配置文件,包括用户访问控制和权限控制等内容。
db 目录下存放着 Subversion 所要管理的所有受版本控制的数据,不同的存储方式(Berkeley DB 或者 FSFS)下有着不同的目录结构,不过我们一般不用直接修改和查看这个目录下的内容
hooks 目录存放着钩子脚本及其模版(一种版本库事件触发程序)
locks 目录存放着 Subversion 版本库锁定数据
format 文件记录了版本库的布局版本号
6.修改Apache配置文件
[root@cent6]#vim /opt/httpd/conf/httpd.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
DAV svn
SVNParentPath /opt/svn ---表示 /opt/svn 下的每个子目录都是一个版本库。可以通过 http://服务器IP/svn/test,http://服务器IP/svn/ppp1 来访问。
AuthzSVNAccessFile /opt/svn/authz.conf ---权限配置文件
AuthType Basic
AuthName "SVN"
AuthUserFile /opt/svn/authfile ---用户配置文件
Require valid-user
重启Apache :[root@cent6]#/opt/httpd/bin/apachectl restart
7.权限管理
1)添加用户和密码
[root@cent6 bin]#./htpasswd -c /opt/svn/authfile abc ---第一次设置用户
[root@cent6]#/opt/httpd/bin/htpasswd -m -b /opt/svn/authfile bow 123456(密码) ---再次添加用户
m:强制执行密码的MD5加密
b:从命令输入密码
[root@cent6]#/opt/httpd/bin/htpasswd -m /opt/svn/authfile bows
New password:
Re-type new password:
2)权限分配
[root@cent6]#vim /opt/svn/authz.conf
[test:/] ---仓库test 的根目录下的访问权限
abc = rw ---test仓库用户abc具有读和写的权限
[/] ---在所有仓库的根目录下
abc = rw
@groups = rw ---@表示这是个群组权限设置
[groups]
groups=abc bow
重启apache后,可以用URL访问SVN了。
当使用客户端连接是报500错误,需要将权限修改为766 库目录的用户修改为apache也可以修改为其他用户,但要在Apache的配置文件中将User和Group修改为相应的用户名和组名。
8.svn常用命令
1)查看最新修订版本的信息,可以使用 svnlook info 命令:
[root@cent6]#/opt/subversion/bin/svnlook info /opt/svn/test
abc
2012-04-23 16:51:08 +0800 (Mon, 23 Apr 2012)
0
命令输出了这个版本库的最新修订版本信息,包括作者、时间、日志字数和日志内容等。
2)显示版本库的具体树形结构,后面的 “--show-ids” 选项指定显示每一个显示元素的修改版本 ID
/ <0.0.r2/338>
b.txt <0-2.0.r2/95>
a.txt <0-1.0.r1/33>
3)svnserve –i
4)作为 inetd 启动
svnserve –d
四、Apache+SVN+SSL(自签证书)
1.[root@cent6 opt]#cd httpd/conf
2.[root@cent6 conf]#openssl genrsa -out httpd.key 1024
Generating RSA private key, 1024 bit long modulus
.................................++++++
...........++++++
e is 65537 (0x10001)
3.[root@cent6 conf]#openssl req -new -key httpd.key -out httpd.pem -days 3650 -x509
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:CN ---国家
State or Province Name (full name) [Berkshire]:BJ ---城市
Locality Name (eg, city) [Newbury]:ZHANG ---用户名
Organization Name (eg, company) [My Company Ltd]:ABC ---公司名称
Organizational Unit Name (eg, section) []:IT ---部门名称
Common Name (eg, your name or your server's hostname) []:test ---主机名
Email Address []:abc@qq.com ---邮箱名
4.[root@cent6]#cd /opt/httpd/conf/extra/
5.[root@cent6 extra]#vim httpd-ssl.conf
SSLCertificateFile "/opt/httpd//conf/httpd.pem"
SSLCertificateKeyFile "/opt/httpd//conf/httpd.key"
6.[root@cent6 conf]#vim httpd.conf
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
SSLRequireSSL
7.[root@cent6 bin]#./apachectl restart