如何在linux服务器上搭建多个网站
其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。示例:
[users]
alan=password
king=hello
这个里面的user表示当前test版本库的成员
63修改authz
[root@localhostconf]#viauthz
用户组格式:
[groups]<用户组名>=<用户1>,<用户2>
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。用户必须要在passwd文件里能找到,它是给那个里面的user赋权限
版本库目录格式:
[/目录]@<用户组名>=<权限><用户名>=<权限>
示例:
[groups]
admin=alan
[/]
@admin=rw
[/svn/p1/WebProject]
king=rw(表示king能够读写/svn/p1/WebProject目录下的所有信息)
[/svn/p1/web]
zp=r(表示zp能够读/svn/p1/web目录下的所有信息)
到此svn服务器的的安装和配置就已经完成了。
在windows上搭建SVN很简单,但是效能却不高,这当然是和linux相比了然而在linux上搭建SVN却非常繁琐,这篇文章就来一步一步教您如何在Centos上搭建SVN
源码目录:/home/user/project
工程名:project
工程目录:/source/svn/project
访问地址:svn://ip/project
一、 安装svn
yum install subversion
二、 svn服务器配置
1 创建svn根目录
mkdir /source/svn
2 添加工程
svnadmin create /source/svn/project
3 导入工程初始文件(可省)
svn import /home/user/project/ file:///source/svn/project -m "init project"
4 配置工程用户
进入工程的配置目录:
cd /source/svn/project/conf
下面一共三个文件:authz passwd svnserveconf
passwd: 里面保存用户信息,基本格式为:user = passwd
authz: 里面保存用户的分组信息,以及每个组的访问权限
svnserveconf: 里面保存服务器的基本配置(下面介绍)
针对该例子的配置如下:
41 passwd里面添加用户
[users]
pm = pm123
42 authz配置用户权限
复制代码
[grouPS]
#添加一个分组(实际当中可以添加多个,每个组可以有多个用户以,隔开)
pm_g = pm
# 该项目的权限配置
[project:/]
# pm_g分组配置读写权限(实际中可以增加只读分组)
@pm_g = rw
43 svnserveconf配置(可默认)
# 匿名用户权限(none:拒绝, write:读写, read:只读权限)
anon-access = none
# 鉴权用户访问
auth-access = write
# 用户信息配置文件(也可以是绝对路径)
password-db = passwd
# 权限配置文件
authz-db = /source/svn/project/conf/authz
三、 启动svn服务器
svnserve -d -r /source/svn
四、 拉取代码
svn co svn://ip/project
如何设置才能让Linux开机自动启动SVN
本节主要讲解一下Linux开机自启动SVN,上节我们讲解了Windows下开机自动启动SVN服务,通过本节的介绍你可以做一个对比,看一下在两种操作系统中开机自动启动SVN服务的区别,希望本节对你学习有所帮助。
在Redhat上配置好svnserve,通过Myeclipse访问,实现版本控制。但是开启svn服务是手工输入命令来启动,这样每次重启服务器后都得重新输一次命令,太麻烦。于是就有了新问题:如何让SVN随着服务器开机自己启动? 先了解一下Linux的自动运行程序,以下分割线内为转自
http://hibaiducom/wangtao8899/blog/item/dd7365c41c5423a18226ace1html的内容。 华丽的分割线 在RedHatLinux中自动运行程序 1.开机启动时自动运行程序
Linux加载后,它将初始化硬件和设备驱动,然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或/etc/rcd或/etc/rcd目录下的脚本文件,可以使init自动启动SVN其它程序。例如:编辑/etc/rcd /rclocal文件,在文件最末加上一行"xinit"或"startx",可以在开机启动后直接进入X-Window。 2.登录时自动运行程序
用户登录时,bash首先自动执行系统管理员建立的全局登录script:/ect/profile。然后bash在用户起始目录下按顺序查找三个特殊文 件中的一个:/bash_profile、
/bash_login、/profile,但只执行最先找到的一个。因此,只需根据实际需要在上述文件 中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的Autoexecbat)。 3.退出登录时自动运行程序
退出登录时,bash自动执行个人的退出登录脚本/bash_logout。例如,在/bash_logout中加入命令"tar-cvzfcsourcetgz*c",则在每次退出登录时自动执行"tar"命令备份*c文件。
4.定期自动运行程序
Linux有一个称为crond的守护程序,主要功能是周期性地检查/var/spool/cron目录下的一组命令文件的内容,并在设定的时间执行这些 文件中的命令。用户可以通过crontab命令来建立、修改、删除这些命令文件。例如,建立文件crondFile,内容 为"00923Jan*HappyBirthday",运行"crontabcronFile"命令后,每当元月23日上午9:00系统自动执 行"HappyBirthday"的程序("*"表示不管当天是星期几)。
wk_ad_begin({pid : 21});wk_ad_after(21, function(){$('ad-hidden')hide();}, function(){$('ad-hidden')show();});
5.定时自动运行程序一次
定时执行命令at与crond类似(但它只执行一次):命令在给定的时间执行,但不自动重复。at命令的一般格式为:at[-ffile]time,在指定的时间执行file文件中所给出的所有命令。也可直接从键盘输入命令:
1 $at12:00
2 at>mailtoRoger-s″Havealunch″Ctr-D 3 Job1at2000-11-0912:00
4
2000-11-0912:00时候自动发一标题为"Havealunch",内容
为plantxt文件内容的邮件给Roger。
5 #!/bin/bash 6 RESTART=""#里面写相应服务代码
7 START="" 8 STOP="" 9
case"$1"in 10 restart)
11 $RESTART 12 echo"";; 13 start) 14 $START
15 echo"";; 16 STOP)
17 $STOP
18 echo"";;
19 )
20 echo"Usage:$0{restart¦start¦stop}" 21 exit1 22 esac 23
exit1
脚本写完要修改一下权限chmodu+xtestsh 首先,linux随机启动SVN的服务程序都在/etc/initd这个文件夹里,里面的文件全部都是脚本文件(脚本程序简单的说就是把要运行的程序写 到一个文件里让系统能够按顺序执行,类似windows下的autorundat文件),另外在/etc这个文件夹里还有诸如名为 rc1d,rc2d一直到rc6d的文件夹,这些都是
linux不同的runlevel,我们一般进入的Xwindows多用户的运行级别是第5 级,也就是rc5d,在这个文件夹下的脚本文件就是运行第5级时要随机启动的服务程序。需要注意的是,在每个rc(1-6)d文件夹下的文件其实都是 /etc/initd文件夹下的文件的一个软连接(类似windows中的快捷方式),也就是说,在/etc/initd文件夹下是全部的服务程序, 而每个rc(1-6)d只链接它自己启动需要的相应的服务程序!要启动scim(某一程序),我们首先要知道scim程序在哪里,用locate命令可 以找到,scim在/usr/bin/scim这里,其中usr表示是属于用户的,bin在linux里表示可以执行的程序。这样,我就可以编写一个脚本 程序,把它放到/etc/initd里,然后在rc5d里做一个相应的软链接就可以了。这个脚本其实很简单,就两行: #!/bin/bash /usr/bin/scim 第一行是声明用什么终端运行这个脚本,第二行就是要运行的命令。还需要注意的一点是,在rc5d里,每个链接的名字都是以S或者K开头的,S开头的表示 是系统启动是要随机启动的,K开头的是不随机启动的。这样,你就可以知道,如果我要哪个服务随机启动,就把它名字第一个字母K改成S就可以了,当然,把S 改成K后,这个服务就不能随机启动sVN了。因此,我这个链接还要起名为SXXX,这样系统才能让它随机启动。 华丽的分割 线 了解这些后,(计算机基础知识) 作法就很简单了。 1创建执行脚本svnsh(/root路径下),其内容很简单,如下: #!/bin/bash svnserve-d--listen-port8080-r/home/svnroot/repository 2添加可执行权限命令行运行#chmodug+x/root/svnsh 3添加自动运行打开(vi或gedit)/etc/initd/rcd/rclocal,在最后添加一行内容如下:/root/svnsh保存 退出http://wwwwoaidiannaocom。 4检查重启服务器,使用ps-ef看看svn进程是否启动了。哈哈,轻松解决,以后开机就自动启动svn了。
root用户是Linux下的超级用户,相当于Windows7下的Administrator,就是最高权限,由于权限太高,有可能造成误删除之类的操作,一般建议新建一个用户,安装或配置相关的东西时可以sudo到root下
新建的用户下都有一些隐藏的文件,是基于这个用户的配置文件,比如bash_profile这个文件就相当于/etc/profile这个文件,只是前者只作用于当前用户,后者作用于所有
安装一些软件或服务,由于考虑到一些目录权限的问题,我一般用root安装,至于安装完后的其它用户没有权限访问这个服务的问题,可以用chown和chmod命令改一下属主或权限就行了
编译安装是可以指定安装路径的,--prefix指定的就是安装的路径,不指定的话会有一个默认路径,可以通过/configure --help 看到所有的参数。
Windows与Linux下SVN怎样使用
本文分2个部分(包括Windows与Linux操作系统平台),第1部分:怎样安装 第2部分:怎样使用
-----------------------------------------第1部分:怎样安装-----------------------------------------
怎样安装分2种情况,第1种:在公司上班 第2种:在宿舍电脑
--------------------第1种:在公司上班--------------------
说明:通常SVN服务器是安装在windows上的,安装好后,客户端2种平台都能使用
Windows平台下
服务端与客户端:
通常这种情况,你想安装,公司都不会让你安装,一般是由公司内网管专业人士统一安装好,并给你分配好账户与密码,以及每个SVN下使用权限,所以这种情况你可以不用去管怎样安装了,只管怎样使用即可
linux平台下
服务端:即windows上的服务端
客户端:如果你在本机安装的Linux虚拟机,通常是自己安装的,不是公司网管安装的,安装办法如下:
1步即能安装:在linux下输入命令 sudo apt-get install subversion
即SVN,安装后同windows上SVN一样,只不过这里是输入命令而已
--------------------第2种:在宿舍电脑--------------------
Windows与Linux平台下
说实在的,宿舍就1台电脑本来电脑就垃圾而且还开着虚拟机,在开2个VS2010,就已经卡的要死在来个SVN,估计会慢如蜗牛,其实大部分程序员也是只有一台电脑,安装SVN真的没必要除非有多台电脑SVN本质是为方便团队开发
-----------------------------------------第2部分:怎样使用-----------------------------------------
怎样使用要分2种情况,第1种:是Windows平台 第2种:是Linux平台
--------------------第1种:是Windows平台--------------------
1更新
右键->SVN更新
2提交(也可说成是上传)
第1步:进入要提交的SVN文件目录里面,导入文件
第2步:导入后,返回上一层目录,即返回到要提交的SVN文件目录,右键点击此SVN目录,弹出,提交,进入
第3步:进入提交对话框后,会显示2个编辑框,上面的编辑框是确认要提交的内容,下面的编辑框是你刚导入的文件内容,
你现在若是想提交刚才导入的内容,就把下面编辑框的内容用鼠标拖动到上面的编辑框,并按确定
若不想提交刚才导入的内容,直接按取消退出即可
3导出
即怎样去掉SVN的专用标志,有的是对勾,有的是号等等
方法 1:在文件属性--->选择显示所有文件,这时文件里会出现1个svn的文件目录,把它删掉即可(文件目录多时,不推荐)
方法 2:在SVN右键--->导出,这时导出的文件不会带SVN标志了
4删除
在SVN右键中,删除之后要返回上一层目录,点提交
删除信息在变更列表,要拖动到信息栏下,然后点确定
5保存认证
每当电脑密码更改时,SVN以前保存的密码也会要更新,此时会弹出一个认证框,重新输入账号与新密码,在保存认证处打勾即可
--------------------第2种:是Linux平台--------------------
1更新
命令:svn update
2提交(也可说成是上传)
第1步:进入要提交的SVN文件目录里面,
第2步:添加要提交的目录用svn add ----------->注:(代表添加文件、目录或符号链)
第3步:提交
(1)提交全部
svn ci -m""----------->m表示写注释,代表注释内容
注:在LINUX上同一目录存在其它文件,svn ci提交时,只会提交SVN服务器已有的文件如果想让同一目录下的其它文件也提交到SVN服务器,可以先通过svn add先添加此文件或文件夹等
(2)提交单个
svn ci -m"add select_area packet" Gateway_Handlercpp
后面一个加上要提交的文件(记的把后缀名写上去)
提交成功后会提示
Sending Gateway_Handlercpp
Transmitting file data
Committed revision 242
3保存认证
每当电脑密码更改时,SVN以前保存的密码也会要更新,此时会显示要输入密码,重新输入账号与新密码,最后会提示是否要保存密码(yes/no),选yes即可
4下载
命令 svn co (代表下载地址,例如http://1921681101/project/servers/command)
之后会在当前目录下,导出一个command文件夹,里面是SVN服务器上的文件
5删除
svn del (为文件名,或文件)
6查看修改后的操作是哪些
svn diff
---------------------------------------------------以下是摘抄的---------------------------------------------------
1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://19216811/pro/domain
简写:svn co
1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://19216811/pro/domain
简写:svn co
2、往版本库中添加新的文件
svn add file
例如:svn add testPHP(添加testphp)
svn add php(添加当前目录下所有的php文件)
3、将改动的文件提交到版本库
svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
例如:svn commit -m “add test file for my test“ testphp
简写:svn ci
4、加锁/解锁
svn lock -m “LockMessage“ [--force] PATH
例如:svn lock -m “lock test file“ testphp
svn unlock PATH
5、更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 testphp(将版本库中的文件testphp还原到版本200)
svn update testphp(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up
6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的svn中保留了本地版本的原始拷贝。
简写:svn st
7、删除文件
svn delete path -m “delete test fle“
例如:svn delete svn://19216811/pro/domain/testphp -m “delete test file”
或者直接svn delete testphp 然后再svn ci -m ‘delete test file‘,推荐使用这种
简写:svn (del, remove, rm)
8、查看日志
svn log path
例如:svn log testphp 显示这个文件的所有修改记录,及其版本号的变化
9、查看文件详细信息
svn info path
例如:svn info testphp
10、比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff testphp
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 testphp
简写:svn di
11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200:205 testphp(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
12、SVN 帮助
svn help
svn help ci
——————————————————————————
以上是常用命令,下面写几个不经常用的
——————————————————————————
13、版本库下的文件和目录列表
svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls
14、创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法: 1、mkdir PATH…
2、mkdir URL…
创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增
调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在。
15、恢复本地修改
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:
用法: revert PATH…
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复
被删除的目录
16、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
2、switch –relocate FROM TO [PATH]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将
服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的
方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动
(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用
这个命令更新工作副本与仓库的对应关系。
17、解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH…
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让 PATH 可以再次提交。
18、输出指定文件或URL的内容。
svn cat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)
19、查找工作拷贝中的所有遗留的日志文件,删除进程中的锁。
当Subversion改变你的工作拷贝(或是svn中的任何信息),它会尽可能的小心,在修改任何事情之前,它把意图写到日志文件中去,然后执行log文件中的命令,然后删掉日志文件,这与分类帐的文件系统架构类似。如果Subversion的操作中断了(举个例子:进程被杀死了,机器死掉了),日志文件会保存在硬盘上,通过重新执行日志文件,Subversion可以完成上一次开始的操作,你的工作拷贝可以回到一致的状态。
这就是svn cleanup所作的:它查找工作拷贝中的所有遗留的日志文件,删除进程中的锁。如果Subversion告诉你工作拷贝中的一部分已经“锁定”了,你就需要运行这个命令了。同样,svn status将会使用L 显示锁定的项目:
$ svn status L somedirM somedir/fooc $ svn cleanup$ svn statusM somedir/fooc20、拷贝用户的一个未被版本化的目录树到版本库。svn import命令是拷贝用户的一个未被版本化的目录树到版本库最快的方法,如果需要,它也要建立一些中介文件。
$ svnadmin create /usr/local/svn/newrepos $ svn import mytree file:///usr/local/svn/newrepos/some/project Adding mytree/fooc Adding mytree/barc Adding mytree/subdir Adding mytree/subdir/quuxh Committed revision 1
在上一个例子里,将会拷贝目录mytree到版本库的some/project下:
$ svn list file:///usr/local/svn/newrepos/some/project barc fooc subdir/
注意,在导入之后,原来的目录树并没有转化成工作拷贝,为了开始工作,你还是需要运行svn checkout导出一个工作拷贝。
另附:为SVN加入Email通知
可以通过Subversion的Hook脚本的方式为SVN加入邮件列表功能
编译安装了Subversion后 在源码的tools 下有一个comm-emailpl的Perl脚本,在你的档案目录下有一个hooks目录,进入到hooks目录把post-committmpl 改名为post-commit并给它可执行的权限。
更改post-commit脚本 把comm-emailpl脚本的决对路径加上,否则 SVN找不到comm-emailpl
REPOS="$1"
REV="$2"
/usr/local/svn/resp/commit-emailpl "$REPOS" "$REV" email@address1com email@address2com
#log-commitpy --repository "$REPOS" --revision "$REV"
最后一行是用来记日志的 我不用这个功能 所以注释掉了
-------------------------------------------------------------------------------------------------------
注意:为保证代码安全最好要备份每个操作都要谨慎
一,安装svn服务器
在Linux中安装了服务端,
$ yum install subversion
二,在Windows中安装客户端(TortoiseSVN-19427285-x64-svn-194msi)
三,基本的SVN服务器配置
1,新建一个目录用于存储SVN所有文件
$ mkdir /svn
2,新建一个版本仓库$ svnadmin create /svn/project
3,添加用户
要添加SVN用户非常简单,只需在/svn/project/conf/passwd文件添加一个形如“username=password”的 账号为username和密码为password
[users]
mysj = mysj
test = test
5,修改用户访问策略
/svn/project/conf/authz记录用户的访问策略,以下是参考:
[groups]
admin=mysj //将用户进行分组
user=test
[project:/] //进行授权
@admin = rw //r表示读,w表示写
@user = r
=
6,修改svnserveconf文件,让用户和策略配置升效
svnserveconf内容如下:
此处切记要注意空格,不然会导致svn配置不成功
[general]
anon-access = none
auth-access = write
password-db = /svn/project/conf/passwd
authz-db = /svn/project/conf/authz
7,启动服务器
# svnserve -d -r /svn
注意:如果修改了svn配置,需要重启svn服务,步骤如下:
$ ps -aux|grep svnserve
$ kill -9 ID号 杀死服务
$ svnserve -d -r /svn
四,在Windows系统中检出svn的文件,此时的地址也应该为 svn://Linux的ip地址/project/文件夹名(你自己创建的)。
SVN是程序员常用的一款软件,它可以很好的帮助程序员进行版本控制以及代码管理,通常的SVN服务器是搭建在Linux等系统下进行的。但是今天小编分享一种在win7操作系统使用Subversion搭建SVN服务器的方法,而且设置方法也比较简单,感兴趣或有需要的用户可以一起参考下面教程进行设置体验。
具体方法如下:
1、首先来下载和搭建SVN服务器,进入网址后;
2、点开上面红色框标记的VisualSVN连接,下载VisualSVNserver,下载完成后双击安装;
3、点击Next下一步;
4、然后再点击Next项,下一步;
5、选择“标准版本”,点击Next如下;
6、选择安装路径,服务器端文件存放位置,默认端口号(Location是指VisualSVNServer的安装目录,Repositorys是指定你的版本库目录ServerPort指定一个端口,Usesecureconnection勾山表示使用安全连接),点击Next,进入下一步;
7、准备安装,点击Install,进入下一步;
8、等待安装;
9、完成后,点击next,进入下一步;
10、点击Finish即可完成安装。安装完成后,启动VisualSVNServerManage;
11、可以在窗口的右边看到版本库的一些信息,比如状态,日志,用户认证,版本库等要建立版本库,需要右键单击左边窗口的Repositores;
12、在弹出的右键菜单中选择CreateNewRepository或者新建-Repository;
13、键入对象库名称后,进入下一步;
14、选择”空的对象库“,进入下一步;
15、设置对象库的权限,点击create;
16、点击Finish即可完成基本创建。
上述就是win7系统使用Subversion搭建SVN服务器的方法,有需要的用户可以掌握。
0条评论