您的位置:首页 > 移动开发 > IOS开发

aaa安装监控软件nagios,cacti软件

2012-04-06 16:57 591 查看
经验:

1、一直密码登录失败,后台显示

ue Apr 17 15:00:48 2012] [error] [client 192.168.33.110] user kkk not found: /svn/test

[Tue Apr 17 15:00:51 2012] [error] [client 192.168.33.110] (13)Permission denied: Could not open password file: /home/phpq/repo/authfile

[Tue Apr 17 15:00:51 2012] [error] [client 192.168.33.110] user kkk not found: /svn/test

[Tue Apr 17 15:17:53 2012] [notice] Apache/2.0.64 (Unix) DAV/2 mod_jk/1.2.33 SVN/1.7.4 configured -- resuming normal operations

[Tue Apr 17 15:21:49 2012] [notice] SIGHUP received. Attempting to restart

[Tue Apr 17 15:21:49 2012] [notice] Apache/2.0.64 (Unix) DAV/2 mod_jk/1.2.33 SVN/1.7.4 configured -- resuming normal operations

[Tue Apr 17 15:22:55 2012] [error] [client 192.168.33.110] user kkk: authentication failure for "/svn/test": Password Mismatch

[Tue Apr 17 15:23:10 2012] [error] [client 192.168.33.110] (13)Permission denied: Failed to load the AuthzSVNAccessFile: Can't open file '/home/phpq/repo/authz.conf': Permission denied

[Tue Apr 17 15:23:10 2012] [error] [client 192.168.33.110] Access denied: 'kkk' GET test:/

[Tue Apr 17 15:24:49 2012] [notice] SIGHUP received. Attempting to restart

[Tue Apr 17 15:24:49 2012] [notice] Apache/2.0.64 (Unix) DAV/2 mod_jk/1.2.33 SVN/1.7.4 configured -- resuming normal operations

[Tue Apr 17 15:25:00 2012] [error] [client 192.168.33.110] Failed to load the AuthzSVNAccessFile: /authz.conf:3: Option must end with ':' or '='

[Tue Apr 17 15:25:00 2012] [error] [client 192.168.33.110] Access denied: 'kkk' GET test:/

[Tue Apr 17 15:25:48 2012] [notice] SIGHUP received. Attempting to restart

[Tue Apr 17 15:25:48 2012] [notice] Apache/2.0.64 (Unix) DAV/2 mod_jk/1.2.33 SVN/1.7.4 configured -- resuming normal operations

[Tue Apr 17 15:25:50 2012] [error] [client 192.168.33.110] (20014)Error string not specified yet: traced call

[Tue Apr 17 15:25:50 2012] [error] [client 192.168.33.110] Could not fetch resource information. [500, #0]

[Tue Apr 17 15:25:50 2012] [error] [client 192.168.33.110] Could not open the requested SVN filesystem [500, #13]

[Tue Apr 17 15:25:50 2012] [error] [client 192.168.33.110] Could not open the requested SVN filesystem [500, #13]

[Tue Apr 17 15:25:51 2012] [error] [client 192.168.33.110] (20014)Error string not specified yet: traced call

[Tue Apr 17 15:25:51 2012] [error] [client 192.168.33.110] Could not fetch resource information. [500, #0]

原因是不能把svn的认证文件放在别的用户下面,我是把文件放在了phpq用户下面

实验过的方法

按照http://mhbjava.javaeye.com/blog/26594 搭建的svn,当访问 http://localhost/svn/test 时提示

500 apache Internal Server Error .

查看apache 的log

错误提示如下:

[error] [client 127.0.0.1] (13)Permission denied: Could not open password file: /home/svnroot/repository/authfile

这个错误的原因是 apache没有权限打开authfile这个文件。

在apache的安装目录下 httpd.conf文件中找到apache所在的用户组和用户

suse下类似

User daemon

Group daemon

接下来把 repo 所在的目录递归的更改成daemon.daemon

#chwon -R daemon.daemon /XXX/XXX/repo
http://www.linuxfly.org/post/343/ http://blog.csdn.net/fxpbupt/article/details/5686623
Linux+Apache+subversion(svn)
2008-03-20 16:49
我的Linux是CentOS4.5

1.安装 httpd

如果已经装过则跳过此步

#yum install httpd

2.配置 httpd


如果有别的 web server,httpd可能会有端口冲突,如果这样则修改httpd服务的端口和主机配置

默认配置文件是 /etc/httpd/conf/httpd.conf

3.安装 subversion

#yum search svn


发现是 mod_dav_svn 包,所以

#yum install mod_dav_svn

rpm -qs mod_dav_svn 发现安装了以下文件

/etc/httpd/conf.d/subversion.conf #这个文件我们等下要修改

/usr/lib/httpd/modules/mod_authz_svn.so #这个文件已经在subversion.conf中指定加载

/usr/lib/httpd/modules/mod_dav_svn.so #这个文件已经在subversion.conf中指定加载

4.配置 subversion

<Location /svn>

DAV svn

SVNParentPath /web/svn/svndata

AuthType Basic

AuthName 'Subversion repository'

AuthzSVNAccessFile /web/svn/svnconf/svn-acc-file

AuthUserFile /web/svn/svnconf/svn-pwd-file

Require valid-user

</Location>

创建以下两个文件

/web/svn/svnconf/svn-acc-file #这个文件指定用户访问版本库的权限,这里不做介绍

/web/svn/svnconf/svn-pwd-file #这个文件指定用户登录的口令( #htpasswd -c /web/svn/svnconf/svn-pwd-file <username> )

注意:

要更改相关目录的权限

#chown –R apache:apache /var/svn/

由于RHEL5中引入了SELinux来加安全控制,因此还需要对该路径进行赋权。(整个路径的目录都要赋权,如:要访问/web/svn/svnconf,则从/web开始都要赋权)

如果不赋权,会出现 Permission denied: Could not open password file: /web/svn/svnconf/svn-pwd-file 这样的错误

#chcon -h -t httpd_sys_content_t /web/

#chcon -R -h -t httpd_sys_content_t /web/svn


创建版本库:

#svnadmin create /web/svn/svndata/sts

#chown –R apache.apache /web/svn/svndata/sts


启动Apache服务:

#service httpd start

访问 http://hostname/svn/sts,若有显示则证明配置通过。
http://hi.baidu.com/raidenxu/blog/item/df4bf3f2b5ad4017b07ec5ad.html
公司一直使用的是CVS来做版本控制,这对我这个已经用过SVN的追新狂来说实在别扭,年前就打算给公司的服务器装上SVN,无奈被一变态问题困扰至今,今天总算发现问题所在。

安装方法就不用说了,网上一堆,为了以防万一,我先在公司的开发服务器上装了一遍(开发服务器的系统和web服务器的系统都是CentOS 5.2),装完后一切都很正常,再到web服务器上安装,问题就出来了,输入地址登录时,总是通不过验证,看了一下apache的error-log,内容如下:

[Mon Feb 02 14:15:53 2009] [error] [client xxx.xx.xxx.xx] (13)Permission denied: Could not open password file: /var/svnroot/passwd

[Mon Feb 02 14:15:53 2009] [error] [client xxx.xx.xxx.xx] access to /svn failed, reason: verification of user id ‘bindiry’ not configured

看来问题是在passwd的权限上,可我早已经给它chmod -R 777了,Google一下,发现很多人也遇到这个问题,也没找到解决办法,实在诡异。

直到今天才知道原来同事在web服务器上开启了SElinux选项,关于SELinux请猛击这里,马上在开发服务器上也开启并测试了一下,果然就是这问题导致,无奈还是把SVN装到了开发服务器上,至此才算勉强解决问题。

关闭SElinux的方法:

在命令行执行setup,然后进入Firewall configuration,关闭方法就在下图中了。





哪位同学如果有此问题的最终解决办法,还望赐教。

———————————————

2009.04.02

解决方法(来自Linux(CentOS)下连接MSSQL):用如下命令开启SELinux对于httpd的网络访问权限:

/wp-content/sbin/setsebool -P httpd_can_network_connect=1
http://junnan.org/blog/345 http://www.macs.hw.ac.uk/~hwloidl/docs/Subversion/faq.html
在用eclipse连接之后,会提示没有权限提交,出现下面的错误

解决方法:chmod -R 777 /sourcedaima/

就可以了

/article/4097158.html

/article/4097158.html

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/common
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/common
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/common
Authorization failed

svn: OPTIONS of 'http://192.168.33.10/fjuidsvn/fd': authorization failed: Could not authenticate to server: rejected Basic challenge (http://192.168.33.10)

Filesystem has no item

svn: URL 'http://192.168.33.10/fjuidsvn/fd/aaa' non-existent in that revision

mkdir --parents -m "初始导入。" http://192.168.33.10/fjuidsvn/fd/aaa
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/aa
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/
mkdir -m "" http://192.168.33.10/fjuidsvn/fd/common
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/common
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/common
Authorization failed

svn: OPTIONS of 'http://192.168.33.10/fjuidsvn/fd': authorization failed: Could not authenticate to server: rejected Basic challenge (http://192.168.33.10)

Filesystem has no item

svn: URL 'http://192.168.33.10/fjuidsvn/fd/aaa' non-existent in that revision

mkdir --parents -m "初始导入。" http://192.168.33.10/fjuidsvn/fd/aaa
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/aa
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/aa
apache进程的权限:因为所有跟仓库传输的操作都是通过apache进程进行的,所以即使你给svn用户设置了 很大的权限,但是apache进程没有访问仓库或者相关文件的权限也没有用,apache进程的权限设置在 /usr/local/apache2/conf/httpd.conf 文件中配置,找到文件中的这两行:

User daemon # 将daemon改为svnroot,让apache进程以svnroot的身份运行

Group daemon

svn用户的权限:就是在repository/authz.conf文件中设置的权限信息,是svn用来管理仓库访问权限的。

5. svn服务器设置有两种方式:http 和 svnserve。这里介绍的是http方法

6. 在/etc/profile的结尾设置一些svn启动时要做的工作 # start apache server for svn

/usr/sbin/apachectl start

export SVN_EDITOR=vi

7. APR libraries 安装 SVN 的时候最好指定 --with-apr= 和 --with-apr-util= 参数到 Apache 安装的根目录

(ServerRoot)下,而不是使用缺省的 SVN 安装包中自带的 apr 。否则如果你安装的 Apache

版本不同有可能导致 APR 库不匹配,出现类似:

Can't set position pointer in file '/svn/test/db/revs/1': Invalid argument 的错误。

Updated 2006-04-20 16:30 -- 比如说如果你安装的是apache 2.2.0版本,就需要在编译安装svn的时候指定

--with-apxs和--with-apr参数到你的apache2.2.0安装目录下:

./configure --divfix=${subversionInstallFolder} /

--with-apxs=${apacheInstallFolder}/bin/apxs /

--with-apr=${apacheInstallFolder} /

--with-apr-util=${apacheInstallFolder} /

--with-ssl /

--with-zlib /

--enable-maintainer-mode

1 环境:

  服务器放在redhatAS4.0上,客户端在windows 2000。

  2 软件包

  2.1 服务器:

  subversion-1.3.2-1.rh90.i386.rpm。可能还会用到其他依赖组件,在我的配置中要用到:apr-0.9.5-0.2.i386.rpm , neon-0.24.7-1.i386.rpm,apr-util-0.9.5-0.1.i386.rpm。

  2.2 客户端:

  TortoiseSVN-1.3.2.5840-svn-1.3.0

  3 安装服务器

  [root@localhost root]#rpm –ivh apr-0.9.5-0.2.i386.rpm

  [root@localhost root]#rpm –ivh neon-0.24.7-1.i386.rpm

  [root@localhost root]#rpm –ivh apr-util-0.9.5-0.1.i386.rpm

  [root@localhost root]#rpm –ivh subversion-1.3.2-1.rh90.i386.rpm

  安装完成以后,要测试是否已经安装成功,则要输入以下命令:

  [root@localhost root]#svnserve --version

  若显示如下,安装成功:

  svnserve, version 1.4.0 (r21228)

  compiled Oct 12 2006, 10:18:56

  Copyright (C) 2000-2006 CollabNet.

  Subversion is open source software, see http://subversion.tigris.org/
  This product includes software developed by CollabNet (http://www.Collab.Net/).

  The following repository back-end (FS) modules are available:

  * fs_fs : Module for working with a plain file (FSFS) repository.

  4 Svn配置

  4.1 建立版本库目录

  [root@localhost root] #mkdir –p /svn

  svn是我自己建立的目录,各人根据具体情况设计名字

  4.2 建立一个用户,用与管理这个版本库目录

  [root@localhost root] #useradd -m -s /bin/bash lyl

  lyl是建立的用户名,可以根据习惯改

  4.3 用建立的用户管理我们刚建的版本库目录

  [root@localhost root] #chown –R lyl.lyl /svn

  用lyl来管理我们的版本库目录/svn

  4.4 启动服务器

  用用户lyl来管理版本库目录/svn,则须转为lyl,命令如下:

  [root@localhost root] #su lyl

  启动svn服务

  [root@localhost root] #svnserve -d -r /svn/;

  -d表示以daemon方式(后台运行)运行

  -r/svn/指定根目录是/svn/

  检查服务器是否启动正常:

  [svn_leader@localhost root]$ ps -ef|grep svnserve

  如果显示如下,即为启动成功:

  lyl  6941   1 0 15:07 ?  00:00:00 svnserve -d ——listen-port 9999 -r /svn

5 建立版本库

  # cd /svn

  # svnadmin create p1;

# cd p1

  P1可以改,在p1目录下会有下面目录:conf dav db format hooks locks README.txt

  6 配置允许访问test的用户

  进入到conf,命令为:

# cd conf

  出现三个文件:authz passwd svnserve.conf

  6.1 修改svnserve.conf

# vi svnserve.conf

  出现:

  [general]

  ………………………

  # anon-access = read

  # auth-access = write

  ………………………

  # password-db = passwd

  ………………………

  # authz-db = authz

  去除注释,并内容修改为:

  [general]

  ………………………

  anon-access = none

  auth-access = write

  ………………………

  password-db = passwd

  ………………………

  authz-db = authz

  6.2 修改passwd

  # vi passwd

  文件格式如下:

[users]

<用户1> = <密码1>

<用户2> = <密码2>

其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。示例:

  [users]

  alan = password

  king = hello

  这个里面的user表示当前test版本库的成员.

6.3 修改authz

# vi authz

用户组格式:

[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服务器的的安装和配置就已经完成了。

http://blog.csdn.net/leo_arui/article/details/754486



LoadModule dav_module modules/mod_dav.so

这一行的注释去掉,原因如下:

You aren't loading mod_dav. mod_dav_svn just implements the back-end, you

still need to have mod_dav, which implements the dav protocol.

Ryan

On Sat, 5 Apr 2003, Robo wrote:

> Just ran apache from the command line, and got the following error message:

>

> Invalid command 'DAV', perhaps mis-spelled or defined by a module not

> included i

> n the server configuration

>

> Hope that helps pointing down the problem, thanks

>

> Robo

>

> ----- Original Message -----

> From: <rbb@rkbloom.net>

> To: "Dale Hirt" <dale@sbcltd.com>

> Cc: "'Robo'" <robo@vangof.com>; "Subversion Development Mailing List

> (E-mail)" <dev@subversion.tigris.org>

> Sent: Saturday, April 05, 2003 5:15 AM

> Subject: RE: Can't get SVNPath to work on Apache2

>

>

> >

> >

> > Unfortunately, on Windows errors like this often don't show up in the

> > error log. The problem comes from when Apache opens the log file. If

> > there isn't anything in the log file, then just run Apache from the

> > command line. That way, the error wil show up in the command window.

> > Once Apache runs from the command line, it will also run from the Services

> > window.

> >

> > Ryan

> >

> > On Fri, 4 Apr 2003, Dale Hirt wrote:

> >

> > > My first recommendation would be to check the Apache error log. It

> should

> > > have an error message saying what was wrong.

> > >

> > > > -----Original Message-----

> > > > From: Robo [mailto:robo555@gmx.net]

> > > > Sent: Thursday, April 03, 2003 10:44 PM

> > > > To: dev@subversion.tigris.org

> > > > Subject: Can't get SVNPath to work on Apache2

> > > >

> > > >

> > > > I'm running Subversion on WinXP, with the following config:

> > > >

> > > > Apache/2.0.44 (Win32) PHP/4.3.0 SVN/0.20.0

> > > >

> > > > Apache2 seems to load mod_dav_svn.so fine, but when I add the

> > > > following to

> > > > the end of httpd.conf, Apache refuses to start:

> > > >

> > > > <Location /svn>

> > > > DAV svn

> > > > SVNPath E:/svn

> > > > </Location>

> > > >

> > > > the path is correct, I've been able to commit changes to the

> > > > repos locally.

> > > >

> > > > Apache is running as a service, and it will only start if I

> > > > comment out the

> > > > four lines above, otherwise I get the following error:

> > > >

> > > > The Apache2 service is starting.

> > > > The Apache2 service could not be started.

> > > >

> > > > A service specific error occurred: 1.

> > > >

> > > > More help is available by typing NET HELPMSG 3547.

> > > >

> > > > Anyone know how I can solve this?

> > > >

> > > > Robo

> > > >

> > > >

> > > > ---------------------------------------------------------------------

> > > > To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org

> > > > For additional commands, e-mail: dev-help@subversion.tigris.org

> > > >

> > >

> > > ---------------------------------------------------------------------

> > > To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org

> > > For additional commands, e-mail: dev-help@subversion.tigris.org

> > >

> > >

> >

>

>

软件准备

svn-win32-1.6.1.zip(http://subversion.tigris.org/files/documents/15/45600/svn-win32-1.6.1.zip)和apache_2.2.11-win32-x86-no_ssl.msi注意版本要匹配,否则可能会报错误1和2(见下面)

软件安装:1.安装svn

1.1 直接解压下载的svn压缩包即可

1.2(%svn%为svn的主目录)使用%svn%/bin下的svnadmin命令创建工程:

svnadmin create d:/svn/myproject

注释:d:/svn为svn的根目录,myproject是我们的工程

2.安装apache:

2.1 按照提示安装即可

2.2 关于80端口是否被占用

2.2.1 使用命令netstat
-ano|findstr ".*:80.*:.*"即可查看80端口是否被使用,一般安装iis以及迅雷等软件有可能把端口占用,如果80被占用的话,最后一列的数字即为占用80端口软件的pid;当然您可以把该软件关闭,也可以修改apache的端口

2.2.2(%apache%为apache的主目录)修改apache的端口可以修改%apache%/conf/httpd.conf

把里面的Listen 80修改为:

Listen 81

这样您的apache的端口就变成81了,不会与80冲突啦,修改后端口再按照2.1重新安装一次即可

2.3在浏览器里输入http://localhost:81正常显示说明安装成功。(81是端口号)

3.把svn与apache结合

3.1拷贝%svn%下的文件到%apache%下

3.1.1把%svn%\bin\下的mod_dav_svn.so和mod_authz_svn.so到%apache%\modules目录下

3.1.2把%svn%\bin\下的九个dll文件intl3_svn.dll,libapr-1.dll,libapriconv-1.dll,libaprutil-1.dll,libdb44.dll,libsvn_delta-1.dll,libsvn_fs-1.dll,libsvn_repos-1.dll,libsvn_subr-1.dll拷贝到%apache%\bin目录下(建议全部copy过去,否则容易报错误2,见下面)

3.2修改%apache%/conf/httpd.conf文件

3.2.1把在httpd中找到以下2行,并把前面的注释符#删除:

#LoadModule dav_fs_module modules/mod_dav_fs.so

#LoadModule dav_module modules/mod_dav.so

如果不删除容易报错误3,见下面

3.2.2在LoadModule结尾处添加以下2行:

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

3.2.3在http.conf文件的结尾处添加以下配置行:

<Location /svn>

DAV svn

SVNParentPath D:\svn

AuthType Basic

AuthName "Subversion repositories"

AuthUserFile D:\svn\passwd

#AuthzSVNAccessFile D:\svnaccessfile

Require valid-user

</Location>

注释:1. SVNParentPath D:\svn为svn的主目录,参加1.2中设置

2 .AuthUserFile D:\svn\passwd密码存储文件,(下面要使用)

说明:

<Location /svn/>

意味着可以通过像这样的URL(http://MyServer/svn)来访问Subversion版本库

DAV svn

告诉Apache哪个模块负责服务像那样的URL--在这里就是Subversion模块

SVNListParentPath on

在Subversion 1.3及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库

SVNParentPath F:\svnROOT

告诉Subversion在目录F:\svnROOT下寻找版本库

AuthType Basic

启用基本的验证,比如用户名/密码对

AuthName "Subversion repositories"

当一个验证对话框弹出时,告诉用户这个验证是用来做什么的

AuthUserFile F:\svnROOT\htpasswd

指定F:\svnROOT\htpasswd用为密码文件用来验证用户的用户名及密码

AuthzSVNAccessFile F:\svnROOT\authz

指定F:\svnROOT\authz来限定各个用户或组在版本库中目录的访问权限

Require valid-user

限定用户只有输入正确的用户名及密码后才能访问这个路径(此项表示,无论是IE还是Tortoise,只有通过密码验证才能访问)。

下面表示允许匿名访问,对于读操作,不需要用户验证。

#<LimitExcept GET PROPFIND OPTIONS REPORT>

#Require valid-user

#</LimitExcept>

AuthUserFile和AuthzSVNAccessFile 的工作原理是,先使用Apache用户机制进行验证,通过之后将请求提交给mod_authz_svn.so进行认证,最后使用mod_dav_svn.so提供的功能。

3.3创建passwd文件来管理svn的访问权限

3.3.1 使用%apache%\bin\htpasswd.exe来创建密码

第一个用户的命令:htpasswd -c D:\svn\passwd %username%

第二个用户的命令:htpasswd D:\svn\passwd %username%

注释:1.-c是创建新文,%username%是用户名,输入命令后还会提示输入密码二次。

2.D:\svn\passwd为3.1.3中设置的路径文件

上面的配置仅仅是一个简单的示例。你还可以对Apache进行许许多多的配置。

1.如果你想让所有用户对版本库都有读的权限而只有特定的用户才有写的权限,你可以将这行

CODE:

Require valid-user

改为

CODE:

<LimitExcept GET PROPFIND OPTIONS REPORT>

Require valid-user

</LimitExcept>

2.上面的配置使用了passwd文件将你所有的版本库作为一个单元来限定访问权限。如果你想获得更多的控制,如限定某个用户可以访问版本库中的哪个目录,可以把下面这行的#去掉:

CODE:

#AuthzSVNAccessFile D:\svnaccessfile

然后用文本编辑器创建一个Subversion授权文件。Apache将确保只有有效的用户可以访问你的/svn位置,然后将用户名传到 AuthzSVNAccessFile模块,这样可以依据Subversion授权文件得到更精细的权限控制。注意,路径将被指定为[库:路径]或者简单 的[路径]。如果你不明确指定一个库,访问规则将应用到由SVNParentPath指定的目录下所有的版本库中。一个授权文件例子可能像这样:

CODE:

[groups]

admin = john, kate

devteam1 = john, rachel, sally

devteam2 = kate, peter, mark

docs = bob, jane, mike

training = zak

# 为所有库指定默认访问规则

# 所有人可以读,管理员可以写,危险分子没有任何权限

[/]

* = r

@admin = rw

dangerman =

# 允许开发人员可以完全访问他们的项目版本库

[proj1:/]

@devteam1 = rw

[proj2:/]

@devteam2 = rw

[bigproj:/]

@devteam1 = rw

@devteam2 = rw

trevor = rw

# 文档编写人员对所有的docs目录有写权限

[/trunk/doc]

@docs = rw

# 培训人员可以完全访问培训版本库

[TrainingRepos:/]

@training = rw

Svn与apache结合容易产生的错误

1.httpd.exe: Syntax error on line 86 of D:/Program Files/Apache Software Fou

n/Apache2.2/conf/httpd.conf: API module structure 'dav_svn_module' in file

ogram Files/Apache Software Foundation/Apache2.2/modules/mod_dav_svn.so is

ed - expected signature 41503232 but saw 41503230 - perhaps this is not an

e module DSO, or was compiled for a different Apache version?

Note the errors or messages above, and press the <ESC> key to exit. 3....

解决办法就是使用2.0版本的apache

2.httpd.exe: Syntax error on line 86 of D:/Program Files/Apache Software Foundatio

n/Apache2.2/conf/httpd.conf: Cannot load D:/Program Files/Apache Software Founda

tion/Apache2.2/modules/mod_dav_svn.so into server: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\

xb8\xb6\xa8\xb5\xc4\xb3\xcc\xd0\xf2\xa1\xa3

Note the errors or messages above, and press the <ESC> key to exit. 16...

可以看到已经说明了是2.2.9以上的apache

3.Syntax error on line 487 of D:/Program Files/Apache Software Foundation/Apache2.

2/conf/httpd.conf:

Invalid command 'DAV', perhaps misspelled or defined by a module not included in

the server configuration

Note the errors or messages above, and press the <ESC> key to exit. 25...

把LoadModule dav_module modules/mod_dav.so前的注释去掉

很多人抱怨使用了一些SVN的客户端软件,保存用户名和密码之后,找不到在什么地方修改,甚至卸载掉相关软件之后也没办法清除这些信息。

其实有些东西是保存在Documents and Settings\【user】\Application Data这个目录下的。

仔细找一下就有可能解决些问题。

用户名 密码保存在

C:\Documents and Settings\【user】\Application Data\Subversion\auth\svn.simple

这个目录下。

可以清除这个目录下的相关文件。



SVN入门及配置使用

2009-10-23 来源:网络

SVN,即Subversion,是一个自由开源的版本控制系统,可以将数据恢复到早期版本,或者检查数据修改的历史,这些数据可以是源代码,也可以是其他类型的文件。

在SVN出现之前,CVS是开源世界版本控制工具的事实标准,然而CVS存在一些固有的缺陷,并且修复这些缺陷需要耗费很大的精力,因此,SVN的发起者Brian Behlendorf和CollabNet决定重新编写一个版本控制系统,保留CVS的基本思想,但要修正其中错误和不合理的特性。于是,SVN作为CVS的继任者出现了。SVN的设计者们力图通过两方面的努力赢得CVS用户的青睐:保持开源系统的设计以及界面风格与CVS尽可能类似,同时尽力弥补CVS许多显著的缺陷。这些努力的结果使得从CVS迁移到SVN不需要作出重大的变革,因此越来越多的人选择了SVN。
http://svnbook.red-bean.com
http://www.subversion.org.cn

目录

一、客户端的使用

 1.1 Linux系统下一般使用(Ubuntu)

 1.2 Windows系统下一般使用

 1.3 Linux下使用SVN+ssh认证(未找到相关资料@_@)

 1.4 Windows下使用SVN+ssh认证

二、服务器端的配置

 2.1 Linux下的svnserve配置

 2.2 Windows下的svnserve配置

 2.3 Linux下的svnserve+ssh配置

 2.4 Windows下的svnserve+ssh配置(需使用Cygwin,略)

 2.5 Linux下基于APache的SVN服务器配置

 2.6 Windows下基于APache的SVN服务器配置

三、建立版本库

 3.1 Linux下创建版本库

 3.2 Windows下创建版本库

大多数人都是从客户端开始使用SVN,以下先介绍客户端的使用。假设已经假设好了SVN服务器,其文件夹地址为http://domain/svn/trunk/myproject,用户名为test,密码为test。(如果服务器端配置的是SVN,则使用svn://开头的URL访问;如果服务器端配置的是SVN+SSH,则使用svn+ssh开头的URL访问)

一、客户端的使用

1.1 Linux(Ubuntu)系统下一般使用

1)首先需要安装svn客户端,ubuntu下使用$sudo apt-get install subversion(其他请baigoogledu,余同)

2)checkeout命令:第一次使用时使用checkout命令,把服务器的目录拷贝到本地的当前目录下,同时会建立一个隐藏文件夹记录版本信息:

  [工作目录]$svn checkout "http://domain/svn/trunk/myproject" --username test

然后输入密码

3)svn update命令:获取服务器上的最新版本

  [工作目录]$svn update(除了第一次要加url和用户名和密码,之后系统会记住)

4)svn add命令:要把非版本控制的本地文件添加到版本控制:

  [工作目录]$svn add hello.c

5)svn commit命令:把本地文件上传到服务器

[工作目录]$svn commit(如果有新的文件,要首先svn add)

1.2 Windows系统下一般使用

1)安装客户端:http://tortoisesvn.net/downloads

2)新建一个文件夹(工作目录),右击选择checkout,填写URL和用户名密码

3)工作目录右键update

4)工作目录右键add

5)工作目录右键commit

1.3 Linux下使用SVN+ssh认证(未找到相关资料@_@)

1.4 Windows下使用SVN+ssh认证

(参考ubuntu下架设svn服务器及在windows建立svn+ssh客户

1.4.0 安装TortoiseSVN、Puttygen、Pageant

  http://sourceforge.net/projects/tortoisesvn

  http://www.chiark.greenend.org.uk/~sgtatham/putty/

1.4.1 转换私钥格式

 1)将Linux下的文件<username>key拷贝到windows下,运行Puttygen;

2)选择菜单conversions->Import Key;选择文件<username>key,提示"Enter passphrase for key",输入创建公私钥对示使用的passphrase关键字;

3)选择Parameters为“SSH-2 DSA”或“SSH-2 RSA”->Save private key->保存文件名为username>key.ppk。

1.4.2 建立TortoiseSVN与Pageant的关联,并将私钥加入Pageant:

1)鼠标右键选择TortoiseSVN->Settings->Network->SSH client,输入:

 C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe

2)鼠标右键选择TortoiseSVN->RepoBrowser 输入URL:

  svn+ssh://<username>@<SvnServiceIP>/usr/local/svn/trunk

3)运行Pageant,右键点击屏幕右下角的图标-〉Add Key,将私钥文件<username>key.ppk加入。

——如果不想缓存ssh密码,则第8、9步不需要,只保留第二步,但每次check out、check in中每进入一个文件夹都要输入两次密码,烦死你:)

二、服务器端的配置

Web服务器部署可以有三种选择,配置由简单到复杂排列为

·svnserve

·svnserve over SSH

·Apache+mod_dav_svn模块

下面从最简单的入手,介绍svnserve。

[更新]Windows下服务器端的配置可以使用VisualSVN Server进行傻瓜化安装。

官方网站:http://www.visualsvn.com/

参考链接:VisualSVN系列介绍(有详细的安装过程介绍,这里就不转述了)

2.1&2.2 配置svnserve

svnserve是一个轻型的服务器,可以同客户端通过在TCP/IP基础上的自定义有状态协议通讯,客户端通过使用开头为svn://或者svn+ssh://svnserve的URL来访问一个svnserve服务器。

2.1 Linux下的svnserve配置

2.1.0 同样地,使用命令$sudo apt-get install subversion

2.1.1 svnserve作为独立守护进程,监听请求

  $svnserve -d

  $ #svnserve is now running, listening on port 3690

  ——可以使用--listen-port=[端口号]来指定端口,或者--listen-host=[主机名]来指定主机名

  假定已经建立一个版本库位于/usr/local/repositories/project路径(版本库的建立稍后提及), 此时客户端可以使用svn://[主机]/usr/local/repositories/project来进行访问

  ——可以使用-r选项来限制只输出指定路径下的版本库,从而使客户端访问更为简洁:

  $svnserve -d -r /usr/local/repositories

  则客户端只要使用svn://[主机]/project就可以访问

2.1.2 通过inetd使用svnserve

  $svnserve -i

  ——此时svnserve会尝试使用自定义协议通过stdin和stdout来与subversion客户端通话,默认端口为3690。可以在/etc/services添加如下几行:

  svn 3690/tcp #subversion

  svn 3690/udp #subversion

  ——如果是使用经典的类Unix的inetd守护进程,可以在/etc/inetd.conf添加如下行,则如果有客户连接来到端口3690,inetd会产生一个svnserve进程来做服务

  svn stream tcp nowait svnowner /usr/bin/svnserve svnserve -i

2.1.3 设置svnserve的内置认证

编辑版本库目录的conf/svnserve.conf文件:

 1)设置匿名访问

  [general]

  anon-access = none #无权限

  anon-access = read #只读

  anon-access = write #打开匿名的写访问,但这样很危险,不能控制谁来修改版本库

 2)使用用户和密码

 2.1)定义保存用户名和密码的文件和一个认证域

  [general]

  password-db = <userfile> #指出保存用户和密码列表的文件,可以是绝对或相对路径

  realm = example realm #定义认证域

  anon-access = read

  auth-access = write

 2.2)然后在userfile文件中指明用户名和密码:(格式为“用户名=密码”)

  [users]

  harry = foopassword

  sall = barpassword

2.2 Windows下的svnserve配置

2.2.0 安装svnserve

1)从http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91得到最新版本的Subversion

(如果之前已经安装了subversion,svnserve已经在服务器上运行,需要先停止服务)

2)安装subversion,然后进入subversion的安装目录,找到bin目录下的文件svnserve.exe,int13_svn.dll,libapr.dll,libapriconv.dll,libapriutil.dll,libdb*.dll,libeay32.dll和ssleay32.dll,将它们复制到服务器目录下(如C:\svnserve)。

2.2.1 以守护方式运行svnserve

在命令行窗口输入svnserve.exe --daemon,则svnserve将会在端口3690等待请求,--daemon选项告诉svnserve以守护进程方式运行,这样在手动终止之前不会退出。这种方式的不便之处是需要保持命令行窗口不关闭。

2.2.2 svnserve作为windows服务

svnserve作为windows服务时,在后台运行,可以在启动时自动执行,并且可以使用同其他windows服务一致的管理界面启动和停止服务。

需要使用命令行工具sc.exe定义新的服务(create svnserve),在windows启动时指明svnserve的调用:

  C:\>sc create svnserve

   binpath= "\"c:\svnserve\svnserve.exe\" --service --root c:\repos"

   displayname= "Subversion"

   depend= tcpip

   start= auto

  ——注意为了回避目录名中的空格等字符,将整个binpath值放在双引号中;另外,sc 的命令行很特殊。在 key= value 对中,key 与 = 之间不能有空格,但是在 value 之前,必须有空格。

定义了服务之后,就可以使用GUI工具(如服务管理面板)进行停止、启动和查询,也可以通过命令行的方式进行:

  C:\>net stop svn

  C:\>net start svn

  C:\>sc delete svn(需要确定先停止了服务)

2.2.3 设置svnserve的内置认证

同上Linux配置文件即可。

2.3&2.4 配置svnserve+ssh

2.3 Linux下的svnserve+ssh配置

2.3.0 介绍与安装ssh

  通过此方法,svnserve不会作为守护进程启动,而是SSH来启动svnserve,以SSH授权用户进行。

  $sudo apt-get install ssh

2.3.1 创建帐户

  $sudo adduser <username> #为参与项目开发的成员建立用户帐户

  $sudo addgroup <groupname> #建立用户组

  $sudo addgroup <username> <groupname> #将用户帐户添加进用户组

2.3.2 为成员生成密钥对

  首先必须切换为<username>的用户登陆Linux:

  $sudo <username>

  $(提示输入密码)

  $cd ~/

  $whoami

  <username>$ssh-kegen -b 1024 -t dsa -N <passphrase> -f <filename> #使用DSA加密,也可以改为RSA加密

  ——这时产生两个文件:私钥<username>key和公钥<username>key.pub

  然后创建目录/home/<username>/.ssh,把公钥拷贝到该目录下:

  $cp <username>key.pub /home/<username>/.ssh/authrized_keys #文件名必须为authorized_keys

2.4 Windows下的svnserve+ssh配置

需要使用Cygwin来配置ssh,此处略,详情可参考http://tortoisesvn.net/node/156

2.5&2.6 基于Apache服务器的SVN配置

概述

Apache的http服务器是一个subversion可以利用的“重型”网络服务器,通过一个自定义模块,httpd可以让SVN版本库通过WebDAV/DeltaV协议在客户端前可见。可以将浏览器指向版本库的URL,无需安装SVN客户端就可以浏览内容。

基于Apache的SVN需要两个包的四个部分:Apache httpd2.0及其中包含的mod_dav DAV模块,Subversion及与之一起发布的mod_dav_svn模块。有了上述组件之后,配置步骤一般如下

 1)配置好http2.0,并且使用mod_dav启动

 2)为mod_dav安装mod_dav_svn插件

 3)配置httpd.conf来发布版本库

2.5 Linux下基于APache的SVN服务器配置

(参考http://www.123shang.cn/blog/?p=53

(参考“ubuntu下svn+apache版本管理服务器配置”)

2.5.1 安装aphache

  $sudo apt-get install apache2 #安装apache

  $sudo apt-get install libapache2-svn #安装相关组件

  $sudo apt-get install subversion #安装svn

  安装完毕后启动apache

  $/usr/local/apache/bin/apachectl –k start

  ——用浏览器查看http://localhost/,得到it works,说明apache已经配置成功了。

2.5.2 创建版本库(见第三节)

2.5.3 添加用户并设置密码文件

版本库的密码文件,一般命名为PasswdFile,由用户通过命令创建,里面保存授权用户的用户名和MD5加密后的密码。创建密码文件,密码文件保存在版本库文件目录下,在终端通过下面的命令创建密码文件:

  $htpasswd -c /etc/svn/passwordfile username

   passwordfile 密码文件名称,可以由用户自行命名

   username 你希望添加的用户名,比如zhangsan,lisi,wangwu

   -c 用来创建密码文件

  按提示输入密码,添加成功后会提示add user username,然后可以再继续添加第二个用户。

  $htpasswd /etc/svn/passwordfile seconduser

2.5.4 httpd.conf文件修改

  conf文件正常安装的话在etc/apache2/ 目录下,双击打开进行编辑,添加以下内容:

  LoadModule dav_svn_module modules/mod_dav_svn.so 加载mod_dav_svn模块

  LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so 加载 mod_anthz.svn模块

  <Location /vcard>

   DAV svn

   SVNPath /home/bb/svn/vcard/ 指明版本库的路径

   AuthType Basic 认证类型为基本认证

   AuthName "SVN repos" 认证名称,将在IE界面弹出一个对话框,其标题就是SVN repos

   AuthUserFile /home/bb/svn/vcard/VcardPasswdFile 加载密码文件,访问版本库用户的文件,用apache 的htpasswd命令生成

   # AuthzSVNAcessFile //home/bb/svn//vcard/accesspolicy 访问版本库权限的文件

   # satisfy Any

   Require valid-user 要求验证用户,即不能匿名访问;如果没有这个语句,则只能第一个用户可以访问新建库

  </Location>

  保存文件退出,重新启动apache

  # /usr/local/apache/bin/apachectl –k restart

  测试:

  $svn checkout http://localhost/svn

2.6 Windows下基于APache的SVN服务器配置

2.6.1 下载安装Apache

  APache:http://httpd.apache.org/download.cgi

  ——如果你将Apache安装成一个服务,它将以本地system帐户来运行。为Apache创建一个单独的用户来运行它将会更安全一些。

  ——请确保运行Apache的用户有版本库的完全访问权限(右键版本库目录->属性->安全)。要不然,用户将无法提交他们的更改。

  ——就算Apache以本机system来运行,你也要设置它能完全读写版本库目录。

  ——如果没有为Apache配置这个许可,用户将会得到"禁止访问"的错误信息,在Apache的错误日志中表现为错误500。

2.6.2 配置Subversion

使用Windwos资源管理器,来到Subversion的安装目录(通常是c:\program files\Subversion),找到文件httpd/mod_dav_svn.so和mod_authz_svn.so,复制这些文件到Apache的模块目录(通常是c:\program file\apache group\apache2\modules)。

2.6.3 配置httpd.conf文件

  路径通常为c:\program files\apache group\apache2\conf\httd.conf),修改以下内容:

  去掉以下两行的注释号“#”:

  #LoadModule dav_fs_module modules/mod_dav_fs.so

  #LoadModule dav_module modules/mod_dav.so

  在LoadModule节的最后添加以下两行:

  LoadModule dav_svn_module modules/mod_dav_svn.so

  LoadModule authz_svn_module modules/mod_authz_svn.so

  文件末尾添加以下行,让Apache知道哪个URL将被Subversion使用:

  <Location /svn>

   DAV svn

   SVNParentPath D:\SVN

   AuthType Basic

   AuthName "Subversion repositories"

   AuthUserFile D:\passwd

   #AuthzSVNAccessFile D:\svnaccessfile

   Require valid-user

  </Location>

  ——这样配置表示:你所有的版本库将位于D:\SVN目录下,要访问你的版本库可以使用这样的URL:http://MyServer/svn/,访问权限将由passwd文件中的用户名/密码来限制。

  要创建passwd文件,可以打开命令行,将当前目录切换到apache2目录,输入命令:

  c:\program files\apache group\apache2 >bin\htpasswd -c passwd <username>

  重启Apache服务。

  使用浏览器测试。

三、建立版本库

在前面的服务器配置上我们通常假设已经建立了版本库,这是为了避免在每种配置中重复赘述这种操作,因此把它独立出来讲。

版本库创建完毕后会在目录下生成若干个文件和文件夹:

   dav目录是提供给Apache与mod_dav_svn使用的目录,让它们存储内部数据;

   db目录就是所有版本控制的数据文件;hooks目录放置hook脚本文件的目录;

   locks用来放置Subversion文件库锁定数据的目录,用来追踪存取文件库的客户端;

   format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。

3.1 Linux下创建版本库

  版本库有两种数据存储格式:Berkeley DB和FSFS,推荐选用FSFS格式,具体可以查阅参考资料了解二者的区别。

  创建版本库时,在终端运行如下命令:

  # 运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb

  $ svnadmin create --fs-type fsfs /etc/svn/repos 创建版本库,运行这个命令后,我们就可以看到一个版本库应有的文件

  更改版本库的访问权限

  $ sudo mkdir /home/svn

  $ cd /home/svn

  $ sudo mkdir myproject

  前面三条命令用于创建版本库目录,如果已经建立,就可以省略掉;后面三条用于修改权限

  $ sudo chown -R www-data myproject

  $ sudo chgrp -R subversion myproject

  $ sudo chmod -R g+rws myproject 这条命令允许用户对版本库进行读写操作,即可以更新,可以提交

3.2 Windows下创建版本库

可以使用TortoiseSVN图形化的完成这一步,在目录E:subversionrepository下"右键->TortoiseSVN->Create Repository here...“, 然后可以选择版本库模式, 使用默认即可, 然后就创建了一系列目录和文件。

  [Tips]如果下载的是setup.exe版本,安装程序安装后会自动设置系统变量,如果下载的是zip版就需要手动设置系统变量.

  也可以使用命令行来创建:

  C:\> svnadmin create F:\svn\

window下架设SVN服务器,及常见错误

博客分类:
web应用

SVNsubversionApacheC++C#

OS: Windows XP SP2
1) 安装Apache Server

2) 安装SVN

3) 配置邮件通知
1. 安装apache2.0.59,从这里可以下载到http://apache.justdn.org/httpd/b ... in32-x86-no_ssl.msi

安装过程中设置以下参数:

Network Domain: localhost

Server name: localhost

Administrator's Emai Address: windymax@126.com

安装到默认路径为C:\Program Files\Apache Group\Apache2
2. 安装subversion1.4.0,从这里下载http://www.iusesvn.com/bbs/download/svn-win32-1.4.0.zip

安装到默认路径为C:\Program Files\Subversion

默认安装后,在apache的配置文件中会自动加入以下两行。

LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so"

LoadModule authz_svn_module "C:/Program Files/Subversion/bin/mod_authz_svn.so"

把这行的注释去掉

LoadModule dav_fs_module modules/mod_dav_fs.so
拷贝C:\Program Files\Subversion\bin下的libdb44.dll到这个目录下C:\Program Files\Apache Group\Apache2\bin

打开apache的配置文件在末尾处加入以下参数:

<Location /svn>

DAV svn

SVNPath d:\svndata\test

AuthType Basic

AuthName "Windy SVN"

AuthUserFile d:\svndata\test\passwd

Require valid-user

</Location>

保存。(在这里权限文件我不多讲了,大家多做实验就明白了)
建立仓库

打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"

C:\Documents and Settings\windy> d: //进入D盘(因为我们要在D盘下创建仓库)

D:\> md svndata //创建一个名叫svndata的目录

D:\> c: //进入C盘

C:\Documents and Settings\windy> cd\ //退到C盘根目录

C:\Documents and Settings\windy> cd C:\Program Files\Subversion\bin //进入subversion/bin目录

C:\Program Files\Subversion\bin> svnadmin create d:\svndata\test //用svnadmin命令创建名为test的仓库(这条命令成功后,在test下会出现很多文件夹和文件)

C:\Program Files\Subversion\bin> cd C:\Program Files\Apache Group\Apache2\bin //进入apache\bin目录

C:\Program Files\Apache Group\Apache2\bin> htpasswd -cm d:\svndata\test\passwd user1 //用htpasswd命令创建第一个用户(user1),同时生成密码认证文件,c参数为create,m参数为MD5加密方式

New password: ******

Re-type new password: ******

Adding password for user user1 //加入用户成功

C:\Program Files\Apache Group\Apache2\bin> htpasswd -m d:\svndata\test\passwd user2 //用htpasswd命令创建第二个用户(user2),注意如果在这时加入c参数会覆盖掉之前创建的用户及文件。

New password: ******

Re-type new password: ******

Adding password for user user2 //加入用户成功
重新启动apache,进行测试。

用IE打开http://localhost/svn,这时应该可以看到

Revision 0: /

--------------------------------------------------------------------------------

Powered by Subversion version 1.4.0 (r21228). //说明我们已经配置成功了
---------------------------------------------------------------------------------------------------------

今天好不容易把SubVersion1.4+Apache2.0环境搭建完毕,这个环境的安装可没有网上传说的那么容易,在这个过程中遇到了不少的问题,以下就是我在安装过程中碰到的问题,我将一一的为大家解释解决的过程。

httpd.exe: Syntax error on line 117 of

C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf:

API module structure `dav_svn_module' in file

C:/Program Files/Apache Software Foundation/Apache2.2/modules/mod_dav_svn.so is garbled - perhaps this is not an Apache module DSO?

Note the errors or messages above, and press the <ESC> key to exit. 27...

以上这个问题是我在使用最新版本的Apache2.2版本时候出现的错误,出现这个错误的时候,我也是安装网上的教程来安装的,把该复制的SO,该复制的DLL都复制了,该加的httpd.conf也加了可是无论我怎么重复这个过程,就是没有安装成功,具体参考的文件为一个《Subversion for Windows 安裝指南(繁体)》的文章。最终在查找了大量的e文后发现,是Apache最新版本的问题,所以对最新版本的期望最终放弃。

[Wed Oct 11 15:24:00 2006] [error] (OS 2)系统找不到指定的文件。 : No installed service named "Apache2".

Note the errors or messages above, and press the <ESC> key to exit. 27...

这个错误的是由于在安装的过程中,我设置的管理员的Email地址没有正确的被设置引起的,这个问题的解决也花了很长的时间,一开始并不知道为什么会引起这样的错误,修改httpd.conf,修改的又是上面安装的最新版本的遗留的(我就不明白同样是Apache,为什么2.0和2.2安装出来的路径都是不一致的呢?一个是C:\Program Files\Apache Group\Apache2而另一个是C:\Program Files\Apache Software Foundation\Apache2.2真是奇怪了)。最终找到正确的httpd.conf并把ServerAdmin的EMAIL设置正确后就可以了。

Syntax error on line 198 of C:/Program Files/Apache Group/Apache2/conf/httpd.conf:

ServerAdmin takes one argument, The email address of the server administrator

这是就是上面的问题的具体表现。

Syntax error on line 923 of C:/Program Files/Apache Group/Apache2/conf/httpd.conf:

Invalid command 'DAV', perhaps mis-spelled or defined by a module not included in the server configuration

Note the errors or messages above, and press the <ESC> key to exit. 26...

这个问题的出现更是可恶,我按教程来的可是就是没人说这个DAV模块需要怎么加载啊,实验了好久,终于把问题解决了,解决的办法就是LoadModule dav_module modules/mod_dav.so前面的#去掉。

下面给出一个比较正确的安装过程的连接,其实问题出现不要害怕,只要多google一下,多有心看看输出就能搞定了!

参考资料:
http://blog.chinaunix.net/u1/42969/showart_342954.html
http://blog.csdn.net/ginger547/archive/2006/10/11/1330356.aspx

分享到:





http://www.sqlite.org/sqlite-autoconf-3071100.tar.gz



http://sae.sina.com.cn/?m=devcenter&catId=212



SVN入门及配置使用

2009-10-23 来源:网络

SVN,即Subversion,是一个自由开源的版本控制系统,可以将数据恢复到早期版本,或者检查数据修改的历史,这些数据可以是源代码,也可以是其他类型的文件。

在SVN出现之前,CVS是开源世界版本控制工具的事实标准,然而CVS存在一些固有的缺陷,并且修复这些缺陷需要耗费很大的精力,因此,SVN的发起者Brian Behlendorf和CollabNet决定重新编写一个版本控制系统,保留CVS的基本思想,但要修正其中错误和不合理的特性。于是,SVN作为CVS的继任者出现了。SVN的设计者们力图通过两方面的努力赢得CVS用户的青睐:保持开源系统的设计以及界面风格与CVS尽可能类似,同时尽力弥补CVS许多显著的缺陷。这些努力的结果使得从CVS迁移到SVN不需要作出重大的变革,因此越来越多的人选择了SVN。
http://svnbook.red-bean.com
http://www.subversion.org.cn

目录

一、客户端的使用

 1.1 Linux系统下一般使用(Ubuntu)

 1.2 Windows系统下一般使用

 1.3 Linux下使用SVN+ssh认证(未找到相关资料@_@)

 1.4 Windows下使用SVN+ssh认证

二、服务器端的配置

 2.1 Linux下的svnserve配置

 2.2 Windows下的svnserve配置

 2.3 Linux下的svnserve+ssh配置

 2.4 Windows下的svnserve+ssh配置(需使用Cygwin,略)

 2.5 Linux下基于APache的SVN服务器配置

 2.6 Windows下基于APache的SVN服务器配置

三、建立版本库

 3.1 Linux下创建版本库

 3.2 Windows下创建版本库

大多数人都是从客户端开始使用SVN,以下先介绍客户端的使用。假设已经假设好了SVN服务器,其文件夹地址为http://domain/svn/trunk/myproject,用户名为test,密码为test。(如果服务器端配置的是SVN,则使用svn://开头的URL访问;如果服务器端配置的是SVN+SSH,则使用svn+ssh开头的URL访问)

一、客户端的使用

1.1 Linux(Ubuntu)系统下一般使用

1)首先需要安装svn客户端,ubuntu下使用$sudo apt-get install subversion(其他请baigoogledu,余同)

2)checkeout命令:第一次使用时使用checkout命令,把服务器的目录拷贝到本地的当前目录下,同时会建立一个隐藏文件夹记录版本信息:

  [工作目录]$svn checkout "http://domain/svn/trunk/myproject" --username test

然后输入密码

3)svn update命令:获取服务器上的最新版本

  [工作目录]$svn update(除了第一次要加url和用户名和密码,之后系统会记住)

4)svn add命令:要把非版本控制的本地文件添加到版本控制:

  [工作目录]$svn add hello.c

5)svn commit命令:把本地文件上传到服务器

[工作目录]$svn commit(如果有新的文件,要首先svn add)

1.2 Windows系统下一般使用

1)安装客户端:http://tortoisesvn.net/downloads

2)新建一个文件夹(工作目录),右击选择checkout,填写URL和用户名密码

3)工作目录右键update

4)工作目录右键add

5)工作目录右键commit

1.3 Linux下使用SVN+ssh认证(未找到相关资料@_@)

1.4 Windows下使用SVN+ssh认证

(参考ubuntu下架设svn服务器及在windows建立svn+ssh客户

1.4.0 安装TortoiseSVN、Puttygen、Pageant

  http://sourceforge.net/projects/tortoisesvn

  http://www.chiark.greenend.org.uk/~sgtatham/putty/

1.4.1 转换私钥格式

 1)将Linux下的文件<username>key拷贝到windows下,运行Puttygen;

2)选择菜单conversions->Import Key;选择文件<username>key,提示"Enter passphrase for key",输入创建公私钥对示使用的passphrase关键字;

3)选择Parameters为“SSH-2 DSA”或“SSH-2 RSA”->Save private key->保存文件名为username>key.ppk。

1.4.2 建立TortoiseSVN与Pageant的关联,并将私钥加入Pageant:

1)鼠标右键选择TortoiseSVN->Settings->Network->SSH client,输入:

 C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe

2)鼠标右键选择TortoiseSVN->RepoBrowser 输入URL:

  svn+ssh://<username>@<SvnServiceIP>/usr/local/svn/trunk

3)运行Pageant,右键点击屏幕右下角的图标-〉Add Key,将私钥文件<username>key.ppk加入。

——如果不想缓存ssh密码,则第8、9步不需要,只保留第二步,但每次check out、check in中每进入一个文件夹都要输入两次密码,烦死你:)

二、服务器端的配置

Web服务器部署可以有三种选择,配置由简单到复杂排列为

·svnserve

·svnserve over SSH

·Apache+mod_dav_svn模块

下面从最简单的入手,介绍svnserve。

[更新]Windows下服务器端的配置可以使用VisualSVN Server进行傻瓜化安装。

官方网站:http://www.visualsvn.com/

参考链接:VisualSVN系列介绍(有详细的安装过程介绍,这里就不转述了)

2.1&2.2 配置svnserve

svnserve是一个轻型的服务器,可以同客户端通过在TCP/IP基础上的自定义有状态协议通讯,客户端通过使用开头为svn://或者svn+ssh://svnserve的URL来访问一个svnserve服务器。

2.1 Linux下的svnserve配置

2.1.0 同样地,使用命令$sudo apt-get install subversion

2.1.1 svnserve作为独立守护进程,监听请求

  $svnserve -d

  $ #svnserve is now running, listening on port 3690

  ——可以使用--listen-port=[端口号]来指定端口,或者--listen-host=[主机名]来指定主机名

  假定已经建立一个版本库位于/usr/local/repositories/project路径(版本库的建立稍后提及), 此时客户端可以使用svn://[主机]/usr/local/repositories/project来进行访问

  ——可以使用-r选项来限制只输出指定路径下的版本库,从而使客户端访问更为简洁:

  $svnserve -d -r /usr/local/repositories

  则客户端只要使用svn://[主机]/project就可以访问

2.1.2 通过inetd使用svnserve

  $svnserve -i

  ——此时svnserve会尝试使用自定义协议通过stdin和stdout来与subversion客户端通话,默认端口为3690。可以在/etc/services添加如下几行:

  svn 3690/tcp #subversion

  svn 3690/udp #subversion

  ——如果是使用经典的类Unix的inetd守护进程,可以在/etc/inetd.conf添加如下行,则如果有客户连接来到端口3690,inetd会产生一个svnserve进程来做服务

  svn stream tcp nowait svnowner /usr/bin/svnserve svnserve -i

2.1.3 设置svnserve的内置认证

编辑版本库目录的conf/svnserve.conf文件:

 1)设置匿名访问

  [general]

  anon-access = none #无权限

  anon-access = read #只读

  anon-access = write #打开匿名的写访问,但这样很危险,不能控制谁来修改版本库

 2)使用用户和密码

 2.1)定义保存用户名和密码的文件和一个认证域

  [general]

  password-db = <userfile> #指出保存用户和密码列表的文件,可以是绝对或相对路径

  realm = example realm #定义认证域

  anon-access = read

  auth-access = write

 2.2)然后在userfile文件中指明用户名和密码:(格式为“用户名=密码”)

  [users]

  harry = foopassword

  sall = barpassword

2.2 Windows下的svnserve配置

2.2.0 安装svnserve

1)从http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91得到最新版本的Subversion

(如果之前已经安装了subversion,svnserve已经在服务器上运行,需要先停止服务)

2)安装subversion,然后进入subversion的安装目录,找到bin目录下的文件svnserve.exe,int13_svn.dll,libapr.dll,libapriconv.dll,libapriutil.dll,libdb*.dll,libeay32.dll和ssleay32.dll,将它们复制到服务器目录下(如C:\svnserve)。

2.2.1 以守护方式运行svnserve

在命令行窗口输入svnserve.exe --daemon,则svnserve将会在端口3690等待请求,--daemon选项告诉svnserve以守护进程方式运行,这样在手动终止之前不会退出。这种方式的不便之处是需要保持命令行窗口不关闭。

2.2.2 svnserve作为windows服务

svnserve作为windows服务时,在后台运行,可以在启动时自动执行,并且可以使用同其他windows服务一致的管理界面启动和停止服务。

需要使用命令行工具sc.exe定义新的服务(create svnserve),在windows启动时指明svnserve的调用:

  C:\>sc create svnserve

   binpath= "\"c:\svnserve\svnserve.exe\" --service --root c:\repos"

   displayname= "Subversion"

   depend= tcpip

   start= auto

  ——注意为了回避目录名中的空格等字符,将整个binpath值放在双引号中;另外,sc 的命令行很特殊。在 key= value 对中,key 与 = 之间不能有空格,但是在 value 之前,必须有空格。

定义了服务之后,就可以使用GUI工具(如服务管理面板)进行停止、启动和查询,也可以通过命令行的方式进行:

  C:\>net stop svn

  C:\>net start svn

  C:\>sc delete svn(需要确定先停止了服务)

2.2.3 设置svnserve的内置认证

同上Linux配置文件即可。

2.3&2.4 配置svnserve+ssh

2.3 Linux下的svnserve+ssh配置

2.3.0 介绍与安装ssh

  通过此方法,svnserve不会作为守护进程启动,而是SSH来启动svnserve,以SSH授权用户进行。

  $sudo apt-get install ssh

2.3.1 创建帐户

  $sudo adduser <username> #为参与项目开发的成员建立用户帐户

  $sudo addgroup <groupname> #建立用户组

  $sudo addgroup <username> <groupname> #将用户帐户添加进用户组

2.3.2 为成员生成密钥对

  首先必须切换为<username>的用户登陆Linux:

  $sudo <username>

  $(提示输入密码)

  $cd ~/

  $whoami

  <username>$ssh-kegen -b 1024 -t dsa -N <passphrase> -f <filename> #使用DSA加密,也可以改为RSA加密

  ——这时产生两个文件:私钥<username>key和公钥<username>key.pub

  然后创建目录/home/<username>/.ssh,把公钥拷贝到该目录下:

  $cp <username>key.pub /home/<username>/.ssh/authrized_keys #文件名必须为authorized_keys

2.4 Windows下的svnserve+ssh配置

需要使用Cygwin来配置ssh,此处略,详情可参考http://tortoisesvn.net/node/156

2.5&2.6 基于Apache服务器的SVN配置

概述

Apache的http服务器是一个subversion可以利用的“重型”网络服务器,通过一个自定义模块,httpd可以让SVN版本库通过WebDAV/DeltaV协议在客户端前可见。可以将浏览器指向版本库的URL,无需安装SVN客户端就可以浏览内容。

基于Apache的SVN需要两个包的四个部分:Apache httpd2.0及其中包含的mod_dav DAV模块,Subversion及与之一起发布的mod_dav_svn模块。有了上述组件之后,配置步骤一般如下

 1)配置好http2.0,并且使用mod_dav启动

 2)为mod_dav安装mod_dav_svn插件

 3)配置httpd.conf来发布版本库

2.5 Linux下基于APache的SVN服务器配置

(参考http://www.123shang.cn/blog/?p=53

(参考“ubuntu下svn+apache版本管理服务器配置”)

2.5.1 安装aphache

  $sudo apt-get install apache2 #安装apache

  $sudo apt-get install libapache2-svn #安装相关组件

  $sudo apt-get install subversion #安装svn

  安装完毕后启动apache

  $/usr/local/apache/bin/apachectl –k start

  ——用浏览器查看http://localhost/,得到it works,说明apache已经配置成功了。

2.5.2 创建版本库(见第三节)

2.5.3 添加用户并设置密码文件

版本库的密码文件,一般命名为PasswdFile,由用户通过命令创建,里面保存授权用户的用户名和MD5加密后的密码。创建密码文件,密码文件保存在版本库文件目录下,在终端通过下面的命令创建密码文件:

  $htpasswd -c /etc/svn/passwordfile username

   passwordfile 密码文件名称,可以由用户自行命名

   username 你希望添加的用户名,比如zhangsan,lisi,wangwu

   -c 用来创建密码文件

  按提示输入密码,添加成功后会提示add user username,然后可以再继续添加第二个用户。

  $htpasswd /etc/svn/passwordfile seconduser

2.5.4 httpd.conf文件修改

  conf文件正常安装的话在etc/apache2/ 目录下,双击打开进行编辑,添加以下内容:

  LoadModule dav_svn_module modules/mod_dav_svn.so 加载mod_dav_svn模块

  LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so 加载 mod_anthz.svn模块

  <Location /vcard>

   DAV svn

   SVNPath /home/bb/svn/vcard/ 指明版本库的路径

   AuthType Basic 认证类型为基本认证

   AuthName "SVN repos" 认证名称,将在IE界面弹出一个对话框,其标题就是SVN repos

   AuthUserFile /home/bb/svn/vcard/VcardPasswdFile 加载密码文件,访问版本库用户的文件,用apache 的htpasswd命令生成

   # AuthzSVNAcessFile //home/bb/svn//vcard/accesspolicy 访问版本库权限的文件

   # satisfy Any

   Require valid-user 要求验证用户,即不能匿名访问;如果没有这个语句,则只能第一个用户可以访问新建库

  </Location>

  保存文件退出,重新启动apache

  # /usr/local/apache/bin/apachectl –k restart

  测试:

  $svn checkout http://localhost/svn

2.6 Windows下基于APache的SVN服务器配置

2.6.1 下载安装Apache

  APache:http://httpd.apache.org/download.cgi

  ——如果你将Apache安装成一个服务,它将以本地system帐户来运行。为Apache创建一个单独的用户来运行它将会更安全一些。

  ——请确保运行Apache的用户有版本库的完全访问权限(右键版本库目录->属性->安全)。要不然,用户将无法提交他们的更改。

  ——就算Apache以本机system来运行,你也要设置它能完全读写版本库目录。

  ——如果没有为Apache配置这个许可,用户将会得到"禁止访问"的错误信息,在Apache的错误日志中表现为错误500。

2.6.2 配置Subversion

使用Windwos资源管理器,来到Subversion的安装目录(通常是c:\program files\Subversion),找到文件httpd/mod_dav_svn.so和mod_authz_svn.so,复制这些文件到Apache的模块目录(通常是c:\program file\apache group\apache2\modules)。

2.6.3 配置httpd.conf文件

  路径通常为c:\program files\apache group\apache2\conf\httd.conf),修改以下内容:

  去掉以下两行的注释号“#”:

  #LoadModule dav_fs_module modules/mod_dav_fs.so

  #LoadModule dav_module modules/mod_dav.so

  在LoadModule节的最后添加以下两行:

  LoadModule dav_svn_module modules/mod_dav_svn.so

  LoadModule authz_svn_module modules/mod_authz_svn.so

  文件末尾添加以下行,让Apache知道哪个URL将被Subversion使用:

  <Location /svn>

   DAV svn

   SVNParentPath D:\SVN

   AuthType Basic

   AuthName "Subversion repositories"

   AuthUserFile D:\passwd

   #AuthzSVNAccessFile D:\svnaccessfile

   Require valid-user

  </Location>

  ——这样配置表示:你所有的版本库将位于D:\SVN目录下,要访问你的版本库可以使用这样的URL:http://MyServer/svn/,访问权限将由passwd文件中的用户名/密码来限制。

  要创建passwd文件,可以打开命令行,将当前目录切换到apache2目录,输入命令:

  c:\program files\apache group\apache2 >bin\htpasswd -c passwd <username>

  重启Apache服务。

  使用浏览器测试。

三、建立版本库

在前面的服务器配置上我们通常假设已经建立了版本库,这是为了避免在每种配置中重复赘述这种操作,因此把它独立出来讲。

版本库创建完毕后会在目录下生成若干个文件和文件夹:

   dav目录是提供给Apache与mod_dav_svn使用的目录,让它们存储内部数据;

   db目录就是所有版本控制的数据文件;hooks目录放置hook脚本文件的目录;

   locks用来放置Subversion文件库锁定数据的目录,用来追踪存取文件库的客户端;

   format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。

3.1 Linux下创建版本库

  版本库有两种数据存储格式:Berkeley DB和FSFS,推荐选用FSFS格式,具体可以查阅参考资料了解二者的区别。

  创建版本库时,在终端运行如下命令:

  # 运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb

  $ svnadmin create --fs-type fsfs /etc/svn/repos 创建版本库,运行这个命令后,我们就可以看到一个版本库应有的文件

  更改版本库的访问权限

  $ sudo mkdir /home/svn

  $ cd /home/svn

  $ sudo mkdir myproject

  前面三条命令用于创建版本库目录,如果已经建立,就可以省略掉;后面三条用于修改权限

  $ sudo chown -R www-data myproject

  $ sudo chgrp -R subversion myproject

  $ sudo chmod -R g+rws myproject 这条命令允许用户对版本库进行读写操作,即可以更新,可以提交

3.2 Windows下创建版本库

可以使用TortoiseSVN图形化的完成这一步,在目录E:subversionrepository下"右键->TortoiseSVN->Create Repository here...“, 然后可以选择版本库模式, 使用默认即可, 然后就创建了一系列目录和文件。

  [Tips]如果下载的是setup.exe版本,安装程序安装后会自动设置系统变量,如果下载的是zip版就需要手动设置系统变量.

  也可以使用命令行来创建:

  C:\> svnadmin create F:\svn\

SAE自2011-7-10日起,将全面支持SVN代码部署,用户不仅可以通过任何SVN客户端部署代码,而且SAE现有的代码部署方式也已经对接应用的SVN仓库,即使不使用SVN客户端部署代码,也保证了代码版本。

如:通过桌面SDK或在线SDK代码编辑器(http://sdk.tools.sinaapp.com)等方式对代码的修改、部署等操作也会像svn commit一样,产生一个新版本。通过SVN客户端svn update可以获取最近的更新,也可以通过svn客户端回滚代码。

SVN仓库地址: https://svn.sinaapp.com/your_app_name (您可以通过此地址直接访问)

如:应用域名是 test.sinaapp.com,那么SVN仓库地址是:https://svn.sinaapp.com/test

SVN用户名: SAE安全邮箱

SVN密码: SAE安全密码

注:SVN用户名和密码为安全邮箱和安全密码,不是微博账号和微博密码!

与标准SVN的区别

为了保持与SAE兼容,使用svn方式部署代码到SAE有如下限制:

1. 文件名或目录名不允许含有以下字符:",*,?,<,>,|,另外文件或文件名的开始与结束也不允许有空格。

2. 上传单个文件大小不超过20M

3. 单个目录下的文 件个数不能超过2000个

4. 每个应用代码总大小不超过100M

5. 单个版本代码总大小不超过50M

6. appname目录下只允许存在10个以内的版本,并且版本号必须为正整数。(也就是说appname下面只允许出现10个以内的正整数目录名,不允许有非目录的存在)

代码部署原理

SAE代码部署分为三步:

创建应用

登陆SAE在线管理平台,“创建新应用”(http://sae.sina.com.cn/?m=myapp&a=create)时,如果创建成功,系统会自动为该应用创建一个SVN仓库。假设新创建的应用名为newapp,那么仓库地址为:
https://svn.sinaapp.com/newapp/
  

此时,可以通过本地SVN客户端检出(checkout)该应用的本地工作目录。

部署代码

SAE提供了不同的代码部署方式,可以分为两类:

  

一是通过SVN客户端部署,这是SAE推荐的代码部署方法。

另一个是通过非SVN客户端部署,即SAE之前提供的代码部署方式,如桌面SDK(winodws, linux)、在线SDK(即代

码在线编辑器)和推荐应用安装。

  

这两类代码部署方法都会更新应用的SVN仓库版本,但必须注意的是非SVN客户端部署方式无法提供版本管理

功能,只能看到最新版本的代码,也无法回滚代码。

因此,强烈建议仅使用SVN客户端方式部署代码,如果同时使用非SVN客户端方式部署,为避免代码版本冲

突,请及时在本地SVN工作目录下执行svn update操作,保证本地工作目录与线上代码保持一致。

验证

  

代码更新后,通过svn update或直接通过浏览器访问应用查看代码是否已经更新到线上。



相关资源

TortoiseSVN下载:http://tortoisesvn.net/downloads.html

Subversion中文站: http://www.subversion.org.cn/

Windows SVN

使用TortoiseSVN客户端

在Windows下推荐使用乌龟(Tortoise)SVN客户端。 TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。文件保存在中央版本库(即SAE中央SVN仓库),除了能记住文件和目录的每次修改以 外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将 Subversion 和版本控制系统看作一种“时间机器”。

下载安装

TortoiseSVN下载:http://tortoisesvn.net/downloads.html

又不是在linux下,安装就不多说了 :)

下面详细介绍使用TortoiseSVN向SAE部署代码。

创建本地工作目录

第一步,如图1,创建一个新文件夹作为本地工作目录(Working directory),可以使用应用名为文件夹名。如,为我的应用devcenter创建本地工作目录。



第二步,从SAE的SVN仓库检出(checkout)一个应用的全部版本代码,如图2,右键-->点击“SVN Checkout”



在弹出页面中填写仓库路径即可,这里是:https://svn.sinaapp.com/devcenter/,其它默认参数即可,如图3:



Reversion处,“HEAD revision”是指最新版,也可以指定Revision为任意一个版本。

点击“OK”,出现下载界面,如图4:



如果一切顺利,devcenter应用所有版本代码将会全部出现在刚刚创建的devcenter文件夹下,如图5:



修改代码

在本地使用你喜欢的编辑器,编辑任意文件,保存后该文件图标将会出现红色感叹号,如图6所示:



看,刚刚修改过的index.php变色了。下面需要提交(commit)最近的更新。在index.php文件上击右键,出现菜单 ,选择“SVN commit”,如图7:



然后填写关于本次更新的日志(log message),这是必填项,否则commit会失败。如图8:



当您看到如图9所示,表明刚才的修改已经成功提交,并且前该devcenter项目的SVN版本号加1,变成30.



新增文件/文件夹

在 SVN工作目录下,对于文件修改,完成后只需要commit就ok了,但对于新增文件,或者从其它目录复制进来的文件或文件夹,需要在commit之前需 要做一步add操作,即将文件或文件夹添加到svn工作目录中来,否则SVN客户端不认它。具体操作很简单,如图10:



然后再如图7所示,右键commit即可。

更多Tortoise SVN使用帮助,请参阅:http://www.subversion.org.cn/tsvndoc/

Notepad++集成svn插件

Notepad++ 是一款Windows环境下很受欢迎的免费开源的代码编辑器,有很丰富的第三方插件。

下面介绍Notepad++的svn插件的安装及使用。

如图12,点击Plugin --> Plugin Manager --> Show Plugin Manager



打开后,在“Available”页找到“Subversion”,然后点击“Install”,如图13所示:



安装成功后会在Plugins菜单下出现"Subversion"子菜单。

打开之前checkout下来的任一文件,如devcenter/1/index.php,编辑完成后,点击Plugins --> Subversion --> Commit File(或使用快捷键Ctrl+Alt+A)

出现熟悉的一页,如图14所示:



对,这就是乌龟SVN的Commit页面,输入Log Message,点击“OK”即可提交。

使用UltraEdit Studio部署

UltraEdit Studio(注意不是UltraEdit,UltraEdit不能与SVN整合)配置稍微复杂些。

第一步,SVN仓库账号设置,如图15所示:



然后填写仓库信息,如图16所示:



完成后,创建Project,如图17所示:



填写project名b.prj后,出现如图18所示"Project Settings",点击“Add Folder”,出现“NewFolder”,将"Group"前的勾去掉,然后点击“Browse”,在“Browse for Folder”页找到之前checkout出现的本地工作目录。



点击“OK”后出现提示,如图19所示:



表明UEStudio自动识别出了选择的代码目录是一个SVN工作目录,并询问是否整合,点击“Yes”,出现如图20所示:



大功告成,"Close"之后即可以编辑代码,并随时commit修改。如图21所示:



使用EditPlus部署

EditPlus依赖于Tortoise SVN(TSVN),必须先安装。

使用最简单,见图22所示:



当编辑SVN工作目录里的文件时,File --> TSVN即出现相应可操作的菜单。

Linux/Mac
SVN

仓库地址

https://svn.sinaapp.com/appname/

为了传输安全,SAE要求统一使用https方式部署代码;

创建仓库

登陆SAE在线管理平台(http://sae.sina.com.cn),创建应用,成功后您即可以检出该应用代码。

例如,您刚刚创建了应用newapp,在本地执行:

svn checkout https://svn.sinaapp.com/newapp
第一次checkout时需要验证,用户名/密码为您的SAE安全邮箱和安全密码(非微博登陆账号密码)。

创建版本

假如,为newapp应用创建版本1

目前提供两种方式:

使用svn客户端

svn checkout https://svn.sinaapp.com/newapp #此处需要认证,用户名/密码为您的SAE安全邮箱和安全密码

cd newapp

mkdir 1

svn add 1

svn commit -m"add version 1 for newapp"

使用在线管理平台

在SAE在线管理平台“代码管理”处创建版本即可。但为了避免与本地仓库冲突,务必在本地工作目录下执行:svn update ,将最近的更新拉到本地来。

更新代码

更新代码前本地必须有一个工作目录(Working Directory),创建工作目录很简单,只需要检出(checkout)代码仓库即可。如,对于已经创建好的应用newapp,在本地执行:

svn checkout https://svn.sinaapp.com/newapp
输入安全账号和安全密码,即完成本地工作目录的创建。

上传代码

需要增加某个文件或文件夹,如部署wordpress到版本1。

svn checkout https://svn.sinaapp.com/newapp
cd newapp/1

cp -rf /path/to/wordpress/* ./

svn add ./*

svn commit -m"add wordpress"

修改代码

假如需要修改newapp应用版本1根目录下某个文件,如index.php,完整的操作流程如下:

svn checkout https://svn.sinaapp.com/newapp #如果已经checkout过了,不需要重新checkout。

cd newapp/1

vim index.php #这里编辑代码

svn commit -m "edit index.php"

配置应用(appconfig)

在应用版本根目录下,如newapp/1下,创建文件config.yaml(语法参见:http://sae.sina.com.cn/?m=devcenter&catId=193),然后通过svn commit即可完成应用配置。

如,现在需要更新应用newapp的默认版本3的appconfig,操作如下:

svn checkout https://svn.sinaapp.com/newapp #如果已经checkout过了,不需要重新checkout。

cd newapp/3

vim config.yaml #这里按照config.yaml语法编辑即可。

svn commit -m "update config.yaml"

注意:config.yaml不会被部署到用户的代码目录,但会被存储在服务端SVN仓库中。因此下次可以被checkout出来,但不会被用户访问到。

在线编辑代码

SVN可以在线阅读应用代码,地址即SVN仓库地址:https://svn.sinaapp.com/appname/

将appname换成自己的应用名即可登陆查看代码。

在线编辑器 可在管理面板>>代码管理>>编辑代码 打开

SVN for SAE的限制条件

为了保持与SAE兼容,使用svn方式部署代码到SAE有如下限制:

0. 文件名或目录名不允许含有以下字符:",*,?,<,>,|,另外文件或文件名的开始与结束也不允许有空格。

1. 上传单个文件大小不超过4M

2. 单个目录下的文 件个数不能超过400个

3. 每个应用代码总大小不超过100M

4. 单个版本代码总大小不超过50M

5. appname目录下只允许存在10个以内的版本,并且版本号必须为正整数。(也就是说appname下面只允许出现10个以内的正整数目录名,不允许有非目录的存在)

常见错误说明及解决办法

错误提示错误原因解决方法
The change log need some words(not null)提交时没有添加log message提交时加上log message即可
The log message is a pathname (was -F intended?); use '--force-log' to overridelog message 与路径名称相同修改log message
Error file xxx in not allowed in root directory!working copy的根目录下不允许有名为xxx的文件(只能是正整数版本目录) 删除该文件或者移到到版本目录下
directory xxx/ is not allowed in root directory! Only positive integer dirs are allowed!
working copy的根目录下不允许有名为xxx的目录(只能是正整数版本目录) 删除该目录或者移到版本目录下
Too many versions!(less than 10 is permited)版本目录多于10个,最多不超过10个删除刚刚创建的版本目录即可。
Too many files: XXX (less than 2000 is allowed).XXX目录下文件的数量超过2000删除XXX目录下的文件,使其总数降至2000以下
dir APPNAME/dir(size:xxxx) is too large less than xxx该应用下代码(不包括.svn目录)总大小超过100M,或某个版本总大小超过50M删除不必要的代码再尝试提交
File XXX is too large!(less than 4M)单个文件大小超过4M删除重试
类似Repository UUID '305daf1b-94be-48ee-a4b9-f4bcd36320de' doesn't match expected UUID '44e2f7a2-1b69-4710-974a-b6edef0fdc12'服务器端仓库被删除重建,客户端对原仓库进行操作导致。重新checkout出一份代码即可
add vers xxx faild文件部署失败内部原因,请联系saesupport@sina.cn。

常用svn命令说明

1. 从SVN仓库中检索出代码到工作拷贝:

# svn checkout https://svn.sinaapp.com/appname [workcopy]

其中workcopy是可选的,如果不写workcopy,SVN会默认将appname做为workcopy。

如果只检索某个版本:

# svn checkout https://svn.sinaapp.com/appname/appversion [workcopy]

只检索某个版本的某个目录:

# svn checkout https://svn.sinaapp.com/appname/appversion/folder [workcopy]

2. 向SVN仓库提交代码:

# svn commit -m "here is message"

3. 将本地文件添加到工作拷贝:

# svn add something

注:如果something为文件,svn会将这个文件添加到工作拷贝;如果something是目录,svn会将目录及里面的文件全添加到工作拷贝。something也可以是通配符*,这样会忽略已经添加过的文件。

4. 从工作拷贝中删除一个文件:

# svn delete something

注:如果something为文件,svn会将这个文件从工作拷贝中删除;如果something是目录,svn会将目录及里面的文件全部从工作拷贝中删除。

5. 直接从SVN仓库中删除文件:

# svn delete -m "delete something" https://svn.sinaapp.com/appname/appversion/something
注:可以从SVN仓库中直接删除单个文件或单个目录甚至某个版本。

6. 将一个本地项目导入到SVN仓库:

导入应用的某个版本:

# svn import localdir https://svn.sinaapp.com/appname/appversion
注:要确保目前应用的appversion不冲突。

7. 查看工作拷贝中的文件或目录状态:

# svn status [something]

8. 更新自己的工作拷贝:

# svn update

注:从SVN仓库下载最新版本,此命令会导致本地没有提交的更改丢失,建议使用此命令前先查看一下本地拷贝状态(svn status)。

9. 取消对代码修改

取消对代码的修改分为两种情况。

第一种情况:改动没有被提交(commit)。

这种情况下,使用svn revert就能取消之前的修改。

svn revert用法如下:

# svn revert [-R] something

其中something可以是(目录或文件的)相对路径也可以是绝对路径。

当something为单个文件时,直接svn revert something就行了;当something为目录时,需要加上参数-R(Recursive,递归),否则只会将something这个目录的改动。

在这种情况下也可以使用svn update命令来取消对之前的修改,但不建议使用。因为svn update会去连接仓库服务器,耗费时间。

注意:svn revert本身有固有的危险,因为它的目的是放弃未提交的修改。一旦你选择了恢复,Subversion没有方法找回未提交的修改。

第二种情况:改动已经被提交(commit)。这种情况下,用svn merge命令来进行回滚。

回滚的操作过程如下:

1). 保证我们拿到的是最新代码:

svn update

假设最新版本号是28。

2). 然后找出要回滚的确切版本号:

svn log [something]

假设根据svn log日志查出要回滚的版本号是25,此处的something可以是文件、目录或整个项目

如果想要更详细的了解情况,可以使用svn diff -r 28:25 [something]

3). 回滚到版本号25:

svn merge -r 28:25 something

为了保险起见,再次确认回滚的结果:

svn diff [something]

发现正确无误,提交。

4). 提交回滚:

svn commit -m "Revert revision from r28 to r25,because of ..."

提交后版本变成了29。

将以上操作总结为三条如下:

a. svn update,svn log,找到最新版本(latest revision)

b. 找到自己想要回滚的版本号(rollbak revision)

c. 用svn merge来回滚: svn merge -r : something

10. 查看SVN仓库日志信息:

# svn log [workcopy]

查看所有本地的历史日志,如果workcopy为某文件,那么就是查看某个文件的日志信息。

查看SVN仓库所有文件的日志信息:

# svn log https://svn.sinaapp.com/appname/
这个命令会查看所有修改过的日志。

注:SAE提供的SVN服务完全支持标准SVN的所有命令,更详细的使用说明请查阅SVN官方帮助文档。

SVN命令帮助文档:http://www.subversion.org.cn/svnbook/1.4/svn.ref.html

中文完全帮助文档:http://svnbook.red-bean.com/index.zh.html

Linux系统RedHat9.0 上配置SVN+APACHE服务参考

博客分类:
svn&cvs

SVNApacheLinux配置管理subversion

(查看了好多网页,加上自己不断出错不断的解决,终于解决了在linux系统上配置svn服务的问题

现将我参考的资料加上自己安装时遇到的问题等总结一下,供大家参考)

一、 准备好相关的几个安装包

我下的是最新的

Apr : apr-1.3.8.tar.gz 和 apr-util-1.3.9.tar.gz

Apache : httpd-2.2.13.tar.gz

Subversion: 我不知道apr和apache最新的能和哪个subversion搭配

就在官网上找一个发布时间跟apr、apache差不多的版本(放心我安装成功了,你可大胆的跟我做)

subversion-1.5.6.tar.gz 和 subversion-deps-1.5.6tar.gz

二、 安装和配置步骤:

1.安装apr-1.3.8.tar.gz

tar –zvxf apr-1.3.8.tar.gz (解压)

cd apr-1.3.8 (进入apr…所在的目录)

./configure /* (安装不指定路径时 默认安装到/usr/local/apr)

make ; make install (安装)

2. 安装 apr-util-1.3.9.tar.gz

tar –zvxf apr-util-1.3.9.tar.gz

cd apr-util-1.3.9

./configure - -with-apr=/usr/local/apr

make ; make install

3. 安装httpd-2.2.13.tar.gz

cd /usr/local

mkdir apache

(不手动建的话,等哈很麻烦的)

回到刚才的目录

tar –zvxf httpd-2.2.13.tar.gz

cd httpd-2.2.13

./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --enable-modules=so --enable-dav

--enable-maintainer-mode --enable-rewrite

make ; make install

安装之后重新启动apache服务

/usr/local/apache/bin/apachectl –k start / restart

用浏览器查看http://192.168.18.110(Linux系统IP地址),得到it works,说明apache已经配置成功了。

4.安装subversion

tar –zvxf subversion-1.5.6.tar.gz

tar –zvxf subversion-deps-1.5.6.tar.gz (这两个自动解压成一个包 subversion-1.5.6)

cd subversion-1.5.6

(# 如果linux系统上已经装有apr或者apr-util ,移除 apr存在的版本,subversion解压后的文件里有apr相关的文件,需要移除)

rm –rf apr

rm -rf apr-util

说明:SVN 依赖的APR版本要正确。如果Apache为2.0.x,对应的APR版本应为0.9.x;Apache为2.2.x,对应的APR版本应为1.2.x。 由于subversion-deps包里的APR是0.9.x的,因此编译svn时要删除从deps里解压出来的apr, apr-util,改而使用apache 2.2里提供的。(这里指定为开始安装的apr目录),这一点知识非常重要,自己之前多次安装都没成功,现在才明白是在这一点被卡住了,但最终还是被我解 决了, 学习,和不断实践 会使你不断成长!

(先跑去建/usr/local/svn)

cd /usr/local

mkdir svn

(不知道为什么我不手动建目录的话,它不给我自动建)

cd cd subversion-1.5.6

./configure

--prefix=/usr/local/svn

--with-apxs=/usr/local/apache/bin/apxs

--with-apr=/usr/local/apr/bin/apr-1-config

--with-apr-util=/usr/local/apr/bin/apu-1-config

--with-ssl

--with-zlib

--enable-maintainer-mode

make

make install

确定一下svn有没有安装成功

/usr/local/svn/bin/svnserve --version

会看到相关版本信息!

(如果:

执行了configure,make后

make install时出错:

/bin/sh /usr/local/httpd-2.2.3/srclib/apr/libtool --mode=install /usr/bin/install -c -m 755 libaprutil-1.la /usr/local/apache2/lib

libtool: install: error: cannot install `libaprutil-1.la' to a directory not ending in /usr/local/apache22/lib

make[2]: *** [install] Error 1

则在./configure 后

make clean

make

make install



完了再看看apache 的相关模块有没有加载!如下! (这一步可以不做)

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

到此如果一直都顺利的话就基本没什么问题!继续往下!

开始建立版本库

/usr/local/svn/bin/svnadmin create /svn/project/www (创建仓库"www" )

ls /svn/project/www (查看有没有创建好,如果多了一些文件则说明版本库已经创建好)

(如果出现“无法创建顶级目录”的错误,请先

cd /

mkdir svn

)

导入项目文件到版本库

/usr/local/svn/bin/svn import /home/test file:///svn/project/www -m "init"

这条语句将把路径/share/www下找到的项目文件导入到你创建的/svn/project/www 仓库中去,提交后的修订版为1

配置提高svn版本库的安全性

chmod –R 700 /svn/project/www (不让其他人有该目录的权限)

注意:直接这么chmod会导致svn客户端无法访问,同时需要修改apache配置文件./conf/httpd.conf文件,(如果你的水平不够高的话, 这一步可以先跳过,以免给自己找麻烦!等把服务完全搞定后再来进一步提高安全性) 在httpd.conf文件中有这么一段内容:

User daemon

Group daemon

把上述内容改成:

User apache

Group apache

(我的系统在安装apache的时候,自动增加了apache用户和apache组,如果你系统没有这个用户和组,则请自己添加该用户和组)

修改svn仓库的所有者

chown -R apache:apache /svn/project

5、配置apache支持svn

vi /usr/local/apache/conf/httpd.conf (编辑httpd.conf文件)

在文件末尾添加

<Location /svn>

DAV svn

SVNParentPath /svn/project (此处配置你的版本库根目录)

AuthType Basic (连接类型设置 基本验证)

AuthName "Hello welcome to here" (此处字符串内容修改为提示对话框标题)

AuthUserFile /svn/passwd (访问版本库用户的文件,用apache 的htpasswd命令生成)

AuthzSVNAccessFile /svn/auth.conf (此处修改为访问版本库权限的文件)

Require valid-user ("Require valid-user"告诉apache在authfile中所有的用户都可以访问)

</Location>

保存文件退出!

重新启动apache

/usr/local/apache/bin/apachectl –k restart

(如果启动httpd 80端口被占用

lsof -i:80 查看使用80端口的进程

kill pid (kill 所有的pid)



打开浏览器访问http://192.168.18.110/svn/project/www 会提示输入用户名密码,检测是否配置成功

对svn的用户和权限配置管理

6、配置svn权限管理(即authz.conf的配置)

1. 添加用户:

/usr/local/apache/bin/htpasswd –c /svn/passwd user1

第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加,第二次添加用户不需要带-c参数

2. 权限分配:

vi /svn/auth.conf (进入文件auth.conf,对其进行编辑)

[groups]

Admin=usr1,user2 (这个表示admin群组里的成员 user1,user2)

Develop=u1, u2 (这个表示Develop群组里的成员 u1,u2)

[www:/] (这表示,仓库www的根目录下的访问权限)

user1 = rw (www仓库user1用户具有读和写权限)

user2 = r ( www仓库userl用户具只有读权限)

@develop=rw (这表示 群 develop的成员都具有读写权限)

[/] (这个表示在所有仓库的根目录下)

* = r (这个表示对所有的用户都具有读权限)

注意:在编辑authz.conf文件时,所有行都必须要顶头写,否则会报错

7、重启apache服务和启动svn服务

/usr/local/apache/bin/apachectl –k restart

就可以通过 http://192.168.18.110/svn/project/www 这个URL来访问仓库了,当然,受权限的限制,必须是合法用户才能访问且具有相应的权限

客户端

windows客户端用TortoiseSVN-1.4.4.9706-win32-svn-1.4.4.msi 也许有更高版本,我没有测试

Eclipse插件:software update > url=http://subclipse.tigris.org/update_1.0.x

注意:

如果输入用户名密码后出现:

Could not open the request SVN filesystem

请检查你的/usr/local/apache/conf/httpd.conf 是否正确

如果客户端出现:

org.tigris.subversion.javahl.clientexception ra layer request failed

请检查你的url.username password

如果系统时间和现实时间相差太大,可能会导致安装出问题,修改系统时间的命令:

Date –s (修改linux系统时间)

访问过程中出现的两个问题:

1. svn: Can’t create directory ‘/subversion/main/db/transactions/0-1.txn’: Permission denied

解答:设置svn配置库库文件夹的权限(chmod -R 777 /svn/project/www) 2. Error: 服务器发送了意外的返回值(403 Forbidden),在响应 “CHECKOUT” 的请求

Error: “/svn/www/!svn/ver/1/111/bbb.txt” 中

解答:提交人没有权限,可设置提交权限 即可。

开机自启动服务

设置SVN开机自启动服务,只要启动相关的Apache服务,如何设置请看这里

/article/4097159.html

分享到:





设置Linux自启动服务 |JSF在一个管理Bean中引用另一个管理Bean

2009-09-17 16:32
浏览 624
评论(4)
论坛回复 / 浏览 (4 / 10648)
相关推荐

评论

4 楼 gxl_ct001 2009-12-20
楼主的这一段是不是错了

./configure

--prefix=/usr/local/svn

--with-apxs=/usr/local/apache/bin/apxs

--with-apr=/usr/local/apr/bin/apr-1-config

--with-apr-util=/usr/local/apr/bin/apu-1-config

--with-ssl

--with-zlib

--enable-maintainer-mode

加黑的那一行应该写成

--with-apr-util=/usr/local/apr-util/bin/apu-1-config



3 楼 ranyut 2009-09-23
【转】打开Eclipse,里面的项目文件后面的 版本号 、 文件的状态图标 等等都不见了。反复重启Eclipse都不管作用,前几天还好好的,我就郁闷了。配置什么文件都没动过。 在小组里面更新,提交等操作都能正常使用,就是看不到文件状态了。只好网上搜搜,最终得到解决办法:

打开 : windows ->preferences->General->Appearance->Lable Decorations 勾选其中的 SVN 项即可。

中文:窗口 ->首选项->常规->外观->标签装饰 勾选其中的 SVN 项即可。

2 楼 ranyut 2009-09-23
Error:

Permission denied

svn: Commit failed (details follow):

svn: Can't open file '/svnroot/ryproject/db/txn-current-lock': Permission denied

请查看:

#ls -l /svnroot/ryproject

是属于哪个用户,是否有rw权限

如果不是属于apache

则:

#chown -R apache:apache /svnroot/ryproject

如果没有rw权限则:

#chmod –R o+rw /svnroot/ryproject

1 楼 ranyut 2009-09-18
linux svn命令大全

1、将文件checkout到本地目录

svn checkout path(path是服务器上的目录)

例如:svn checkout svn://192.168.1.1/pro/domain

简写:svn co

2、往版本库中添加新的文件svn add file

例如:svn add test.php(添加test.php)

svn add *.php(添加当前目录下所有的php文件)

3、将改动的文件提交到版本库

svn commit -m “LogMessage“ [-N] [--no-unlock] PATH

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand';
this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.blogjava.net/Images/dot.gif');}" onmousewheel="return imgzoom(this);" alt="" />

(如果选择了保持锁,就使用–no-unlock开关)

例如:svn commit -m “add test file for my test“ test.php

简写:svn ci

4、加锁/解锁

svn lock -m “LockMessage“ [--force] PATH

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand';
this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.blogjava.net/Images/dot.gif');}" onmousewheel="return imgzoom(this);" alt="" />

例如:svn lock -m “lock test file“ test.php

svn unlock PATH

5、更新到某个版本

svn update -r m path

例如:

svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。

svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)

svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)

简写:svn up

6、查看文件或者目录状态

1)svn status path

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand';
this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.blogjava.net/Images/dot.gif');}" onmousewheel="return imgzoom(this);" alt="" />

(目录下的文件和子目录的状态,正常状态不显示)

【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】

2)svn status -v path

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand';
this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.blogjava.net/Images/dot.gif');}" onmousewheel="return imgzoom(this);" alt="" />

(显示文件和子目录状态)

第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。

注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。

简写:svn st

7、删除文件

svn delete path -m “delete test fle“

例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”

或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种

简写:svn (del, remove, rm)

8、查看日志

svn log path

例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化

9、查看文件详细信息

svn info path

例如:svn info test.php

10、比较差异

svn diff path(将修改的文件与基础版本比较)

例如:svn diff test.php

svn diff -r m:n path(对版本m和版本n比较差异)

例如:svn diff -r 200:201 test.php

简写:svn di

11、将两个版本之间的差异合并到当前文件

svn merge -r m:n path

例如:svn merge -r 200:205 test.php(将版本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 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)

在Linux下Apache用户权限的问题

这更像是一个Linux用户的问题,Apache操作Linux下的东西,总要有个用户授权,我一直在找这个授权在什么地方。

上网搜,搜到的居然都是Apache限制http访问的授权

于是就苦找了一下,K.O.!

在httpd.conf里有apache的执行用户和用户组,

<IfModule !mpm_netware_module>

#

# If you wish httpd to run as a different user or group, you must run

# httpd as root initially and it will switch.

#

# User/Group: The name (or #number) of the user/group to run httpd as.

# It is usually good practice to create a dedicated user and group for

# running httpd, as with most system services.

#

User nobody

Group nobody

</IfModule>

用户授权和访问控制

你也许在访问某些网站时会遇到过这样的情况,当你点击某个连接时,你的浏览器会弹出一个身份验证的对话框,要求输入账号及密码,如果没有,就无法继续浏览了。有人会以为这是用CGI做出来的,其实不然,这是WWW服务器的用户授权和访问控制机制在发挥作用。

你是否还记得在设置Apache服务环境的过程中,有……..<./Directory>这个指令,可以对不同的目录提供不同的保护。但是这样的设定,需要重新启动服务器才会生效,灵活性较差,通过AccessFile指令指定访问控制文件的方式则比较灵活,在Apache服务器中设置用户的访问控制权限步骤如下:

1、首先对httpd.conf文件进行设置如下:

<Directory /home/httpd/html>

# AllowOverride FileInfo AuthConfig Limit

# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

Options Includes FollowSymLinks Indexes

AllowOverride All //*注意AllowOverride 一定要设置为All,这样后面的.htaccess文件才会起作用

<Limit GET POST OPTIONS PROPFIND>

Order allow,deny

Allow from all

</Limit>

# <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>

# Order deny,allow

# Deny from all

# </Limit>

</Directory>

#指定配置存取控制权限的文件名称

AccessFileName .htaccess

本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2007-03/2692.htm

2、创建.htaccess文件內容

要控制某目录的访问权限必须建立一访问控制文件,文件名前面指定的“.htaccess”,其内容格式如下:

AuthUserFile 用户帐号密码文件名

AuthGroupFile 群组帐号密码文件名

AuthName 画面提示文字

AuthType 验证方式

<Limit GET>

密码验证方式

</Limit>

用户验证方式AuthType目前提供了Basic和Digest两种。

密码检验设定方法与httpd.conf中的相关设定相同。

具体例子如下:

AuthUserFile /etc/secure.user

AuthName 安全认证中心

AuthType Basic

<Limit GET>

require valid-user

</Limit>

3、建立用户密码文件

如果你是第一次创建用户密码,命令格式如下:

htpasswd -c 密码文件名 用户名称

在上面的例子中,我们将用户密码文件放到了/etc/secure.user文件中,所以这里应按照如下进行操作:

htpasswd -c /etc/secure.user sword

程序会提示你输入两次用户的口令,然后用户密码文件就已经创建sword这个用户也添加完毕了。

如果要向密码文件中添加新的用户,按照如下命令格式进行操作:

htpasswd 密码文件 用户名称

这样,重新启动httpd后,进行该WEB目录时就会有一个对话框弹出,要求输入用户名及用户口令了。

本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2007-03/2692p2.htm

4、如何减少访问控制对Apache性能的影响

频繁的使用访问控制会对Apache的性能产生较大的影响,那么,如何才能减少这种影响呢?最简单也是最有效的方法之一就是减少.htaccess文件的数目,这样可以避免Apache对每一个请求都要按照.htaccess文件的内容进行授权检查。它不仅在当前的目录中查找.htaccess文件,它还会在当前目录的父目录中查找。

/

/usr

/usr/local

/usr/local/etc

/usr/local/etc/httpd

/usr/local/etc/httpd/htdocs

/usr/local/etc/httpd/htdocs/docs

通常在根目录下没有htaccess文件,但Apache仍然会进行例行检查以确定该文件确实不存在。这是影响很影响服务器工作效率的事情。下面的方法可以消除这个讨厌的过程:将AllowOverride选设置为None,这样Apache就会检查.htaccess文件了。将/根目录的 AllowOverride选项设为None,只将需要进行访问控制的目录下的AllowOverride选项设置为all,如下面的例子中将/根目录的 AllowOverride 选项关闭了,只打开了/usr/local/etc/httpd/htdocs目录下的AllowOerride选项,这样,系统就只在
/usr/local/etc/httpd/htdocs中检查.htaccess文件,达到的提高服务效率的目的。

<Directory />

AllowOverride None

</Directory>

<Directory /usr/local/etc/httpd/htdocs>

AllowOverride All

</Directory>

如果除了根目录以外,还有其它存放WWW文件的目录,你也可以采取同样的方法进行设置。比如:如果你使用UserDir来允许用户访问自己的目录,AllowOverride的设置如下:

<Directory /home/*/public_html>

AllowOverride FileInfo Indexes IncludesNOEXEC

</Directory>

本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2007-03/2692p3.htm

5、防止用户访问指定的文件

系统中有一些文件是不适宜提供给WWW用户的,如:.htaccess、htpasswd、*.pl等,可以用达到这个目的:

<Files .htaccess>

order allow,deny

deny from all

</Files>

用户访问控制三个.htaccess文件、.htpasswd和.htgroup(用于用户授权) ,为了安全起见,应该防止用户浏览其中内容,可以在httpd.conf中加入以下内容阻止用户对其进行访问:

<Files ~”/.ht”>

Order deny, allow

Deny from all

</Files>

这样这三个文件就不会被用户访问了。

6、限制某些用户访问特定文件

可以对目录进行约束,要限制某些用户对某个特定文件的访问可以使用,比如:不允许非domain.com域内的用户对/prices/internal.html进行访问,可以用如下的设置:

<Location /prices/internal.html>

order deny,allow

deny from all

allow from .domain.com

</Location>

如果你要授于相应权限的机器没有公开的域名,请在你的/etc/hosts文件中,将其IP地址映射到某个指定的名称,然后在Location中对其进行设置,否则该选项是不起作用的。

7、只接受来自特定链接的访问

例如,只让所有来自 http://www.sina.com.cn/* 的链接的用户进入此目录,由其它链接来的访客都不得进入; " * "表示此网站底下所有的链接。其中的 http://www.sina.com.cn/* 也可以是:http://202.106.184.200/* 或是指定文件 http://www.sina.com.cn/news.html
.htaccess文件的内容如下:

AuthUserFile /dev/null

AuthGroupFile /dev/null

AuthName ExampleAllowFromSpecificURL

AuthType Basic

<Limit GET>

order deny,allow

deny from all

referer allow from http://www.sina.com.cn/*
</Limit>

本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2007-03/2692p4.htm

Linux系统Apache用户授权和访问控制 (2009-03-23 11:09)
分类: linux APACHE配置

Linux系统Apache用户授权和访问控制
你也许在访问某些网站时会遇到过这样的情况,当你点击某个连接时,你的浏览器会弹出一个身份验证的对话框,要求输入账号及密码,如果没有,就无法继续浏览了。有人会以为这是用CGI做出来的,其实不然,这是WWW服务器的用户授权和访问控制机制在发挥作用。

你是否还记得在设置Apache服务环境的过程中,有……..<./Directory>这个指令,可以对不同的目录提供不同的保护。但是这样的设定,需要重新启动服务器才会生效,灵活性较差,通过AccessFile指令指定访问控制文件的方式则比较灵活,在Apache服务器中设置用户的访问控制权限步骤如下:

1、首先对httpd.conf文件进行设置如下:
<Directory /home/httpd/html>

# AllowOverride FileInfo AuthConfig Limit

# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

Options Includes FollowSymLinks Indexes

AllowOverride All //*注意AllowOverride 一定要设置为All,这样后面的.htaccess文件才会起作用

<Limit GET POST OPTIONS PROPFIND>

Order allow,deny

Allow from all

</Limit>

# <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>

# Order deny,allow

# Deny from all

# </Limit>

</Directory>

#指定配置存取控制权限的文件名称

AccessFileName .htaccess

2、创建.htaccess文件內容
要控制某目录的访问权限必须建立一访问控制文件,文件名前面指定的“.htaccess”,其内容格式如下:

AuthUserFile 用户帐号密码文件名

AuthGroupFile 群组帐号密码文件名

AuthName 画面提示文字

AuthType 验证方式

<Limit GET>

密码验证方式

</Limit>

用户验证方式AuthType目前提供了Basic和Digest两种。

密码检验设定方法与httpd.conf中的相关设定相同。

具体例子如下:

AuthUserFile /etc/secure.user

AuthName 安全认证中心

AuthType Basic

<Limit GET>

require valid-user

</Limit>

3、建立用户密码文件
如果你是第一次创建用户密码,命令格式如下:

htpasswd -c 密码文件名 用户名称

在上面的例子中,我们将用户密码文件放到了/etc/secure.user文件中,所以这里应按照如下进行喜欢作:

htpasswd -c /etc/secure.user sword

程序会提示你输入两次用户的口令,然后用户密码文件就已经创建sword这个用户也添加完毕了。

如果要向密码文件中添加新的用户,按照如下命令格式进行喜欢作:

htpasswd 密码文件 用户名称

这样,重新启动httpd后,进行该WEB目录时就会有一个对话框弹出,要求输入用户名及用户口令了。

4、如何减少访问控制对Apache性能的影响

频繁的使用访问控制会对Apache的性能产生较大的影响,那么,如何才能减少这种影响呢?最简单也是最有效的方法之一就是减少.htaccess文件的数目,这样可以避免Apache对每一个请求都要按照.htaccess文件的内容进行授权检查。它不仅在当前的目录中查找.htaccess文件,它还会在当前目录的父目录中查找。
/
/usr
/usr/local
/usr/local/etc
/usr/local/etc/httpd
/usr/local/etc/httpd/htdocs
/usr/local/etc/httpd/htdocs/docs
通常在根目录下没有htaccess文件,但Apache仍然会进行例行检查以确定该文件确实不存在。这是影响很影响服务器工作效率的事情。下面的方法可以消除这个讨厌的过程:将AllowOverride选设置为None,这样Apache就会检查.htaccess文件了。将/根目录的 AllowOverride选项设为None,只将需要进行访问控制的目录下的AllowOverride选项设置为all,如下面的例子中将/根目录的 AllowOverride 选项关闭了,只打开了/usr/local/etc/httpd/htdocs目录下的AllowOerride选项,这样,系统就只在
/usr/local/etc/httpd/htdocs中检查.htaccess文件,达到的提高服务效率的目的。

<Directory />

AllowOverride None

</Directory>

<Directory /usr/local/etc/httpd/htdocs>

AllowOverride All

</Directory>

如果除了根目录以外,还有其它存放WWW文件的目录,你也可以采取同样的方法进行设置。比如:如果你使用UserDir来允许用户访问自己的目录,AllowOverride的设置如下:

<Directory /home/*/public_html>

AllowOverride FileInfo Indexes IncludesNOEXEC

</Directory>5、防止用户访问指定的文件

系统中有一些文件是不适宜提供给WWW用户的,如:.htaccess、htpasswd、*.pl等,可以用达到这个目的:

<Files .htaccess>

order allow,deny

deny from all

</Files>用户访问控制三个.htaccess文件、.htpasswd和.htgroup(用于用户授权) ,为了安全起见,应该防止用户浏览其中内容,可以在httpd.conf中加入以下内容阻止用户对其进行访问:

<Files ~”/.ht”>

Order deny, allow

Deny from all

</Files>

这样这三个文件就不会被用户访问了。

6、限制某些用户访问特定文件

可以对目录进行约束,要限制某些用户对某个特定文件的访问可以使用,比如:不允许非domain.com域内的用户对/prices/internal.html进行访问,可以用如下的设置:

<Location /prices/internal.html>

order deny,allow

deny from all

allow from .domain.com

</Location>如果你要授于相应权限的机器没有公开的域名,请在你的/etc/hosts文件中,将其IP地址映射到某个指定的名称,然后在Location中对其进行设置,否则该选项是不起作用的。

7、只接受来自特定链接的访问

例如,只让所有来自 http://www.sina.com.cn/* 的链接的用户进入此目录,由其它链接来的访客都不得进入; " * "表示此网站底下所有的链接。其中的http://www.sina.com.cn/*
也可以是:http://202.106.184.200/* 或是指定文件http://www.sina.com.cn/news.html

.htaccess文件的内容如下:

AuthUserFile /dev/null

AuthGroupFile /dev/null

AuthName ExampleAllowFromSpecificURL

AuthType Basic

<Limit GET>

order deny,allow

deny from all

referer allow from http://www.sina.com.cn/*

</Limit>

svn配置后无法通过浏览器访问出现认证错误

svn配置后无法通过浏览器访问

操作系统: RHEL5

apache版本:Apache /2.2.3 (Red Hat)

svn版本:1.4.4-1

故障描述:

svn安装完毕后,客户端通过浏览器访问如下地址

http://192.168.98.1/svn/StockAnalyzer

提示输入密码,输入三次后出现如下错误:

Authorization Required

This server could not verify that you are authorized to accessthe documentrequested. Either you suppliedthe wrong
credentials (e.g., bad password), or your browser doesn't understand how to supplythe credentials required.

--------------------------------------------------------------------------------

Apache/2.2.3 (Red Hat) Server at 192.168.98.1 Port 80

检查Apache错误日志发现:

[root@rhel5 conf]# cd [Sun Feb 17 23:22:13 2008] [error] [client 192.168.98.2] (13)Permission denied:Could notopen password file: /hdb/svndata/Stock/passwd

[Sun Feb 17 23:22:13 2008] [error] [client 192.168.98.2] access to /svn/StockAnalyzer failed, reason: verification of user id 'stock' not configured

百思不得其解,请各位帮忙

系统的各项参数配置如下:

-----------------------------------------------

httpd.conf:

<Location /svn/StockAnalyzer>

DAV svn

SVNPath /hdb/svndata/Stock

AuthType Basic

AuthName "SVN - Stock Analyzer"

AuthUserFile /hdb/svndata/Stock/passwd

Require valid-user

</Location>

-----------------------------------------------

[root@rhel5 /]# cd /

[root@rhel5 /]# ls -l

总计 150

drwxr-xr-x 2 root root 4096 02-15 00:59 bin

drwxr-xr-x 4 root root 1024 02-14 03:57 boot

drwxr-xr-x 14 root root 3780 02-17 21:38 dev

drwxr-xr-x 99 root root 12288 02-17 21:38 etc

drwxrwxrwx 6 root root 4096 12-22 23:57 hdb

其余不相关的目录省略。

[root@rhel5 /]# cd hdb

[root@rhel5 hdb]# ls -l

总计 32

drwx------ 2 root root 16384 12-19 06:29 lost+found

drwxrwx--- 3 apache apache 4096 02-17 23:03 svndata

其余不相关的目录省略。

[root@rhel5 hdb]# cd svndata

[root@rhel5 svndata]# ls -l

总计 4

drwxrwx--- 7 apache apache 4096 02-17 08:24 Stock

[root@rhel5 svndata]# cd Stock/

[root@rhel5 Stock]# ls -l

总计 36

drwxrwx--- 2 apache apache 4096 12-22 00:47 conf

drwxrwx--- 2 apache apache 4096 12-22 23:43 dav

drwxrwx--- 5 apache apache 4096 02-09 17:21 db

-rwxrwx--- 1 apache apache 2 12-21 23:56 format

drwxrwx--- 2 apache apache 4096 12-21 23:56 hooks

drwxrwx--- 2 apache apache 4096 12-21 23:56 locks

-rwxrwx--- 1 apache apache 44 02-17 08:24 passwd

-rwxrwx--- 1 apache apache 229 12-21 23:56 README.txt

[root@rhel5 Stock]# cat passwd

stock:$apr1$SPjac/..$3Si5RFOlexx2C64BfKnIk1

UID6135 帖子2 精华0 积分24 阅读权限10 在线时间0 小时 注册时间2008-2-17 最后登录2008-2-20
查看详细资料

TOP

firstshine



新手上路



个人空间
发短消息
加为好友
当前离线

2#大 中 小 发表于 2008-2-20 00:18 只看该作者

搞定,与大家分享。

从日志看,因为检查过配置文件没有拼错,所以可以肯定是权限问题。从ls命令的结果可以看出,由于passwd的权限是没有问题的。

后来看了一位朋友的帖子【Linux环境下搭建Apache+subversion+svnmanager】的启发,可能是SELinux引发的问题,

于是执行命令:

chcon -R -h -t httpd_sys_content_t /hdb/svndata

后来还是不行。执行以下命令后搞定

chcon -R -h -t httpd_sys_content_t /hdb

总结教训:还是linux不熟悉的原因造成的,我是linux的新手。看来得恶补linux的基本知识。不过我到现在还没弄懂chcon命令的作用和用法,哪位朋友给指点以下?

http://www.subversion.org.cn/bbs/viewthread.php?tid=1260
chcon命令:修改对象(文件)的安全上下文。比如:用户:角色:类型:安全级别。

命令格式:

Chcon [OPTIONS…] CONTEXT FILES…..

Chcon [OPTIONS…] –reference=PEF_FILES FILES…

说明:

CONTEXT 为要设置的安全上下文

FILES 对象(文件)

--reference 参照的对象

PEF_FILES 参照文件上下文

FILES 应用参照文件上下文为我的上下文。

OPTIONS 如下:

-f 强迫执行

-R 递归地修改对象的安全上下文

-r ROLE 修改安全上下文角色的配置

-t TYPE 修改安全上下文类型的配置

-u USER 修改安全上下文用户的配置

-v 显示冗长的信息

-l, --range=RANGE 修改安全上下文中的安全级别

范例:

1、ftp

//If you want to share files anonymously <如果你想把这个共享给匿名的话,需要开启以下>

chcon -R -t public_content_t /var/ftp

//If you want to setup a directory where you can upload files

<如果你想让你设置的FTP目录可以上传文件的话,SELINUX需要设置>

chcon -t public_content_rw_t /var/ftp/incoming

//You must also turn on the boolean allow_ftpd_anon_write <允许匿名用户写入权限>

setsebool -P allow_ftpd_anon_write=1

//If you are setting up this machine as a ftpd server and wish to allow users to access their home directorories<如果你希望你的FTP用户可以访问自己的家目录的话,需要开启>

setsebool -P ftp_home_dir 1

//If you want to run ftpd as a daemon<如果你希望将vsftpd以daemon的方式运行的话,需要开启>

setsebool -P ftpd_is_daemon 1

//You can disable SELinux protection for the ftpd daemon<你可以让SElinux停止保护vsftpd的daemon方式动行>

setsebool -P ftpd_disable_trans 1

2、httpd//If you want a particular domain to write to the public_content_rw_t domain

<如果希望具体个doman具有可写权限的话,需要设置>

setsebool -P allow_httpd_anon_write=1

or

setsebool -P allow_httpd_sys__anon_write=1

//httpd can be setup to allow cgi s to be executed <HTTP被设置允许cgi的设置>

setsebool -P httpd_enable_cgi 1

//If you want to allow access to users home directories<允许用户HHTP访问其家目录,该设定限仅于用户的家目录主页>

setsebool -P httpd_enable_homedirs 1

chcon -R -t httpd_sys_content_t ~user/public_html

//httpd is allowed access to the controling terminal<允许httpd访问终端>

setsebool -P httpd_tty_comm 1

//such that one httpd service can not interfere with another

setsebool -P httpd_unified 0

//loadable modules run under the same context as httpd

setsebool -P httpd_builtin_ing 0

//httpd s are allowed to connect out to the network

setsebool -P httpd_can_network_connect 1

// You can disable suexec transition

setsebool -P httpd_suexec_disable_trans 1

//You can disable SELinux protection for the httpd daemon by executing <关闭Selinux的关于httpd进程守护的保护>

setsebool -P httpd_disable_trans 1

service httpd restart

3、named

//If you want to have named update the master zone files <关于named,master更新selinux设定>

setsebool -P named_write_master_zones 1

//You can disable SELinux protection for the named daemon by executing

<关闭named的进程守护保护>

setsebool -P named_disable_trans 1

service named restart

4、nfs

//If you want to setup this machine to share nfs partitions read only

<Selinux将本机的NFS共享设置成只读>

setsebool -P nfs_export_all_ro 1

//If you want to share files read/write<Selinux将本机的NFS共享设置成可读可写>

setsebool -P nfs_export_all_rw 1

//If you want to use a remote NFS server for the home directories on this machine

<如果你想要将远程NFS的家目录共享到本机,需要开启>

setsebool -P use_nfs_home_dirs 1

5、samba

//If you want to share files other than home directorie

<如果你希望将目录共享给其他用户,你需要设置>

chcon -t samba_share_t /directory

//If you want to share files with multiple domains

如果samba服务器共享目录给多个域,则需要:

setsebool -P allow_smbd_anon_write=1

//If you are setting up this machine as a Samba server and wish to share the home directories

samba服务器要共享家目录时:

setsebool -P samba_enable_home_dirs 1

//If you want to use a remote Samba server for the home directories on this machine

如果你需在本机上使用远程samba服务器的家目录

setsebool -P use_samba_home_dirs 1

//You can disable SELinux protection for the samba daemon by executing

关闭selinux关于samba的进程守护的保护

setsebool -P smbd_disable_trans 1

service smb restart

6、rsync

//If you want to share files using the rsync daemon

共享rsync目录时:

chcon -t public_content_t /directories

//If you want to share files with multiple domains

允许其他用户写入时

setsebool -P allow_rsync_anon_write=1

//You can disable SELinux protection for the rsync daemon by executing

停止rsync的进程保护

setsebool -P rsync_disable_trans 1

7、kerberos

//allow your system to work properly in a Kerberos environment

允许系统使用kerberos

setsebool -P allow_kerberos 1

//If you are running Kerberos daemons kadmind or krb5kdc

setsebool -P krb5kdc_disable_trans 1

service krb5kdc restart

setsebool -P kadmind_disable_trans 1

service kadmind restart

8、nis

Allow your system to work properly in a NIS environment

系统工作在nis环境时

setsebool -P allow_ypbind 1

 这几天,一直在测试线上apache+svn的部署文档,中间也遇到了不少困难,为了让

  大家以后少走弯路,大致几点如下:希望对朋友们有所帮助。

  一:svn软件包的安装

  这个是个很头疼的问题,安装的时候不是缺少这个就是缺少那个库文件什么

  的, 个人建议使用如下这些就可以了

  所需软件包:

  httpd-2.2.17.tar.gz

  apr-1.3.8.tar.gz

  apr-util-1.3.8.tar.gz

  sqlite-amalgamation-3.6.17.tar.gz

  subversion-1.6.17.tar.gz

  yum install -y expat expat-devel neon neon-devel

  以上几个软件包就可以了,至于预编译的时候提示不支持oracle的db格式的文件什

  么的,就不用去理会了,如果安装的话会和上面我所写的某些软件冲突。

  二:访问出现500问题

  安装配置好的svn出现500,这个时候要及时的去看apache的错误日志,看到如下,

  我想怎么解决问题我就不用说了吧

  [Sun Aug 07 17:06:59 2011] [error] [client 10.0.0.5] (13)Permission denied: Could not open password file: /data/svn/passwd

  [Sun Aug 07 17:07:05 2011] [error] [client 10.0.0.5] (13)Permission denied: Could not open password file: /data/svn/passwd

  [Sun Aug 07 17:07:06 2011] [error] [client 10.0.0.5] (13)Permission denied: Could not open password file: /data/svn/passwd

  此时需要我们给passwd 加权限了,

  chown -R apache:apache passwd

  chmod -R 774 passwd

  问题解决,其实权限可以放的更小,这个需要大家自己斟酌。

  三:svn提交的时候出现错误,

  提示/www/.svn权限不够,

  chown apache:apache /www/.svn

  chmod -R 775 /www/.svn

  问题解决。

  四:svn和apache同步脚本是提交一次同步一次,

  这个脚本有点意思,贴出来大家看下,网上找了些,并不是很凑效,下面是我整

  理过的贴出来很大家分享下

  #####################################################################

  #!/bin/sh

  REPOS="$1"

  REV="$2"

  export LANG=en_US.UTF-8

  SVN="/usr/local/svn/bin/svn"

  WEB="/www"

  $SVN update --username jesse --password 123456 $WEB

  #####################################################################

SVN管理多个项目的方法:

首先建好库

[c-sharp] view plaincopyprint?

#svnadmin create /usr/local/svn/project1
#svnadmin create /usr/local/svn/project2

单个项目:

启动方式是

[c-sharp] view plaincopyprint?

#svnserve -d -r /usr/local/svn/project1

然后需要配置相应的用户密码等信息

[c-sharp] view plaincopyprint?

#cd /usr/local/svn/project1/conf
#vi authz

在这种情况下,一个svnserve只能为一个版本库工作

[c-sharp] view plaincopyprint?

[groups]
admin=user1
dev=user2
[/]
@admin=rw
@doc=r

而配置成以下的内容则是错误的,错误提示是说找不到版本库

[c-sharp] view plaincopyprint?

[groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r

因为[project1:/]表示库project1的根目录,而按上面的启动参数,是没有库的概念的。

使用类似这样的URL:svn://192.168.0.1/ 即可访问project1

多库的管理方式:

-r 指定到版本库的上级目录(称之为多库svnserve方式)

同样,有一个库project1,位于D:/svn/project1

如果使用以下命令启动svnserve

[c-sharp] view plaincopyprint?

#svnserve -d -r /usr/local/svn

这种情况,一个svnserve可以为多个版本库工作,

这时如果想限制指定库的指定目录,就应该指定具体的库,像这样

[c-sharp] view plaincopyprint?

[groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r

注意访问方式:

如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录

使用类似这样的URL:svn://192.168.0.1/project1 即可访问project1

这样的URL:svn://192.168.0.1/project2 即可访问project2

references:

http://www.iusesvn.com/bbs/thread-157-1-1.html###
http://blog.csdn.net/fxpbupt/article/details/5686623

SUSE 上搭建SVN & 移动版本库

分类: 开发笔记 2010-06-21 16:21 121人阅读 评论(0)收藏举报

公司新换了服务器,居然是suse,一点都不会用。yast 不会配置,zypper 也没有,只能用源码装了。

下载 subversion-1.4.0.tar.bz2 和subversion-deps-1.4.0.tar.gz

解压缩 : tar -ixvf subversion-1.4.0.tar.bz2

tar -zxvf subversion-deps-1.4.0.tar.gz

其中,subversion-deps-1.4.0.tar.gz解开之后,会在subversion-1.4.0目录下,增加apr、apr-util、neon和zlib几个安装中必须的库文件。

进去 subversion-1.4.0 中

./configure -prefix=/opt/svn

make

make install

配置路径

在etc/profile中加入:

#vi /etc/profile

export PAHT="$PATH:/opt/svn/bin"

创建版本库

输入命令:

#mkdir /usr/local/svn

#mkdir /usr/local/svn/newrepos

#svnadmin create /usr/local/svn/newrepos

配置用户

#cd /usr/local/svn/newrepos

#vi authz

增加用户名,如果加一组用户的话:

g_beijing = user1, user2, user3

[/]

@g_beijing

#vi passwd

增加密码明文

user1 = 1234567

user2 = 7654321

user3 = 0987654

#vi svnserve.conf



anon-access = none

auth-access = write

password-db = passwd

authz-db = authz
全部去掉注释
都则会出现 鉴权失败

配置完毕
启动服务:
#svnserve –d –r /usr/local/svn/newrepos
然后导入文件
#svn import mytree file:///usr/local/svn/newrepos/some/project
svn 版本库备份和恢复
备份
#svnadmin dump old-repo-dir > back-up

恢复
#svnadmin load /usr/local/svn/newrepos < back-up
到此,我搭建好了svn,并把老的版本库从另一台server上移动到了新机器上
references:
http://www.svn8.com/svnpz/20100222/22855.html
http://www.linuxdiyf.com/bbs/redirect.php?tid=85350&goto=lastpost

按照http://mhbjava.javaeye.com/blog/26594 搭建的svn,当访问 http://localhost/svn/test 时提示

500 apache Internal Server Error .

查看apache 的log

错误提示如下:

[error] [client 127.0.0.1] (13)Permission denied: Could not open password file: /home/svnroot/repository/authfile

这个错误的原因是 apache没有权限打开authfile这个文件。

在apache的安装目录下 httpd.conf文件中找到apache所在的用户组和用户

suse下类似

User daemon

Group daemon

接下来把 repo 所在的目录递归的更改成daemon.daemon

#chwon -R daemon.daemon /XXX/XXX/repo

2011年07月27日 星期三 17:23
转载自 wanyujun
最终编辑 wanyujun
只需要运行一下命令即可知道

ps -ef |grep httpd

运行之后就显示了httpd进程的运行用户

当然也可以通过查看apache的httpd.conf配置文件来查看apache运行用户和组.

您所在的位置:读书频道 > 操作系统 > Linux > 6.3.4 为Apache使用专门的用户和用户组

6.3.4 为Apache使用专门的用户和用户组

2007-07-11 13:51 曹江华 电子工业出版社博文视点 我要评论(0) 字号:T | T

综合评级:
想读(16) 在读(3) 已读(4) 品书斋鉴(0) 已有23人发表书评





本书用20章和8个附录的内容,全面解析Linux服务器安全策略分四部分内容:第一部分分级介绍对Linux服务器的攻击情况,以及Linux网络基础;第二部分是本书的核心,针对不同的Linux服务器分别介绍各自的安全策略;第三部分介绍Linux服务器的安全工具;第四部分是8个附录,介绍Linux帮助信息和Linux常用命令汇总。本文是为Apache使用专门的用户和用户组。
AD:

6.3.4 为Apache使用专门的用户和用户组

按照最小特权原则,需要给Apache分配一个合适的权限,让其能够完成Web服务。

提示 最小特权原则是系统安全中最基本的原则之一,它限制了使用者对系统及数据进行存取所需要的最小权限,既保证了用户能够完成所操作的任务,同时也确保非法用户或异常操作所造成的损失最小。

必须保证Apache使用一个专门的用户和用户组,不要使用系统预定义的账号,比如nobody用户和nogroup用户组。

因为只有root用户可以运行Apache,DocumentRoot应该能够被管理Web站点内容的用户访问和使用Apache服务器的Apache用户和Apache用户组访问。所以,如果希望“cao”用户在Web站点发布内容,并且可以以httpd身份运行Apache服务器,通常可以这样:

groupadd webteam
usermod -G webteam cao
chown -R httpd.webteam /www/html
chmod -R 2570 /www/htdocs

只有root用户访问日志目录,这个目录的推荐权限:

chown -R root.root /etc/logs
chmod -R 700 /etc/logs

http://book.51cto.com/art/200707/51022.htm
从个人网站到淘宝网 仰观Java时代淘宝的技术发展(2)http://developer.51cto.com/art/201204/327050_1.htm
http://hi.baidu.com/piaokes/blog/item/b0e1b825190ad26a34a80f01.html http://6509e.blog.51cto.com/542252/116681 http://www.hudigg.com/blog/sort/ecmstips/ http://www.laoxiong.net/resolve-performance-problem-using-library-cache-advice-parameter.html#more-857 http://www.phome.net/doc/manual/install/html/installquestion.html http://hi.baidu.com/amenmen/blog/item/a0974e3f6624d9e954e723a3.html http://hi.baidu.com/chajingchajing/blog/item/092112f3617dcb1cb07ec584.html http://www.cnblogs.com/qiaojun/articles/1514112.html http://7sunet.iteye.com/ http://lin128.blog.51cto.com/407924/295073 http://www.dunsh.org/2006/08/02/robotstxt/ http://www.51testing.com/?uid-58025-action-viewspace-itemid-61154
如何提高在Google中的排名(3)

——Search Engine Friendly的URL设计

作者: 车东 Email: chedongATbigfoot.com/chedongATchedong.com

写于:2003/05 最后更新: 04/11/2012 03:42:07

Feed Back >> (Read this before you ask question)

01/04/2005 21:38:19 Feed Back >>

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.chedong.com/tech/google_url.html
关键词:"url rewrite" mod_rewrite isapi rewrite path_info iis "search engine friendly"

内容摘要:不得不承认,将动态网页链接rewriting成静态链接是最保险和稳定的面向搜索引擎优化方式

此外随着互联网上的内容以惊人速度的增长也越来越突出了搜索引擎的重要性,如果网站想更好地被搜索引擎收录,网站设计除了面向用户友好(User Friendly)外,搜索引擎友好(Search Engine Friendly)的设计也是非常重要的。进入搜索引擎的页面内容越多,则被用户用不同的关键词找到的几率越大。在Google的算法调查一文中提到一个站点被Google索引页面的数量其实对PageRank也是有一定影响的。由于Google 突出的是整个网络中相对静态的部分(动态网页索引量比较小),链接地址相对固定的静态网页比较适合被Google索引(怪不得很多大网站的邮件列表归档和BLOG按日期归档的文档很容被搜的到),因此很多关于面向搜索引擎
URL设计优化(URI Pretty)的文章中提到了很多利用一定机制将动态网页参数变成像静态网页的形式:

比如可以将:
http://phpunixman.sourceforge.net/index.php?mode=man¶meter=ls
变成:
http://phpunixman.sourceforge.net/index.php/man/ls
实现方式主要有2种:

基于url rewrite

IIS的ISAPI REWRITE下载(免费)

基于path_info

把URI地址用作参数传递:URL REWRITE

最简单的是基于各种WEB服务器中的URL重写转向(Rewrite)模块的URL转换:

这样几乎可以不修改程序的实现将 news.asp?id=234 这样的链接映射成 news/234.html,从外面看上去和静态链接一样。Apache服务器上有一个模块(非缺省):mod_rewrite:URL REWRITE功能之强大足够写上一本书。

当我需要将将news.asp?id=234的映射成news/234.html时,只需设置:

RewriteRule /news/(/d+)/.html /news/.asp/?id=$1 [N,I]

这样就把 /news/234.html 这样的请求映射成了 /news.asp?id=234

当有对/news/234.html的请求时:web服务器会把实际请求转发给/news.asp?id=234

而在IIS也有相应的REWRITE模块:比如ISAPI REWRITE和IIS REWRITE,语法都是基于正则表达式,因此配置几乎和apache的mod_rewrite是相同的:

比对于某一个简单应用可以是:

RewriteRule /news/(/d+)/.html /news/news/.php/?id=$1 [N,I]

这样就把 http://www.chedong.com/news/234.html 映射到了 http://www.chedong.com/news/news.php?id=234
一个更通用的能够将所有的动态页面进行参数映射的表达式是:

http://www.myhost.com/foo.php?a=A&b=B&c=C
表现成 http://www.myhost.com/foo.php/a/A/b/B/c/C。
RewriteRule (.*?/.php)(/?[^/]*)?/([^/]*)/([^/]*)(.+?)?$1(?2$2&:/?)$3=$4?5$5: [N,I]

以下是针对phpBB的一个Apache mod_rewrite配置样例:

RewriteEngine On

RewriteRule /forum/topic_(.+)/.html$ /forum/viewtopic.php?t=$1 [L]

RewriteRule /forum/forum_(.+)/.html$ /forum/viewforum.php?f=$1 [L]

RewriteRule /forum/user_(.+)/.html$ /forum/profile.php?mode=viewprofile&u=$1 [L]

这样设置后就可以通过topic_1234.html forum_2.html user_34.html这样的链接访问原来的动态页面了。

通过URL REWRITE还有一些好处:

mod_rewrite和isapirewrite基本兼容,但是还是有些不同,比如:isapirewrite中"?"需要转义成"/?",mod_rewrite不用,isapirewrite支持 "/d+" (全部数字),mod_rewrite不支持

隐藏后台实现:这在后台应用平台的迁移时非常有用:当从asp迁移到java平台时,对于前台用户来说,根本感受不到后台应用的变化;

简化数据校验:因为像(/d+)这样的参数,可以有效的控制数字的格式甚至位数;

比如我们需要将应用从news.asp?id=234迁移成news.php?query=234时,前台的表现可以一直保持为 news/234.html。从实现应用和前台表现的分离:保持了URL的稳定性,而使用mod_rewrite甚至可以把请求转发到其他后台服务器上。

基于PATH_INFO的URL美化

Url美化的另外一个方式就是基于PATH_INFO:

PATH_INFO是一个CGI 1.1的标准,经常发现很多跟在CGI后面的"/value_1/value_2"就是PATH_INFO参数:

比如:http://phpunixman.sourceforge.net/index.php/man/ls 中:$PATH_INFO = "/man/ls"

PATH_INFO是CGI标准,因此PHP Servlet等都有的支持。比如Servlet中就有request.getPathInfo()方法。

注意:/myapp/servlet/Hello/foo的 getPathInfo()返回的是/foo,而/myapp/dir/hello.jsp/foo的getPathInfo()将返回的 /hello.jsp,从这里你也可以知道jsp其实就是一个Servlet的PATH_INFO参数。ASP不支持PATH_INFO

PHP中基于PATH_INFO的参数解析的例子如下:

//注意:参数按"/"分割,第一个参数是空的:从/param1/param2中解析出$param1 $param2这2个参数

if ( isset($_SERVER["PATH_INFO"]) ) {

list($nothing, $param1, $param2) = explode('/', $_SERVER["PATH_INFO"]);

}

如何隐蔽应用:例如 .php,的扩展名:

在APACHE中这样配置:

<FilesMatch "^app_name$">

ForceType application/x-httpd-php

</FilesMatch>

如何更像静态页面:app_name/my/app.html

解析的PATH_INFO参数的时候,把最后一个参数的最后5个字符“.html”截断即可。

注意:APACHE2中缺省是不允许PATH_INFO的,需要设置 AcceptPathInfo on

特别是针对使用虚拟主机用户,无权安装和配置mod_rewrite的时候,PATH_INFO往往就成了唯一的选择。

OK,这样以后看见类似于http://www.example.com/article/234这样的网页你就知道可能是 article/show.php?id=234这个php程序生成的动态网页,很多站点表面看上去可能有很多静态目录,其实很有可能都是使用1,2个程序实现的内容发布。比如很多WIKIWIKI系统都使用了这个机制:整个系统就一个简单的wiki程序,而看上去的目录其实都是这个应用拿后面的地址作为参数的查询结果。

利用基于MOD_REWRITE/PATH_INFO + CACHE服务器的解决方案对原有的动态发布系统进行改造,也可以大大降低旧有系统升级到新的内容管理系统的成本。并且方便了搜索引擎收录入索引。
http://blog.csdn.net/ecrown/article/details/283186
网站漏洞扫描工具

Acunetix Web Vulnerability Scanner 7,WebCruiser,Jsky企业版

Acunetix Web Vulnerability Scanner是一个网站及服务器漏洞扫描软件,它包含有收费和免费两种版本。

下载地址: http://www.ddxia.com/view/11829052678911.html#xzdz_title
网站木马的检测:http://union.rising.com.cn/index/url_search.aspx

网站威胁

  多达 70% 的网络站点存在漏洞,可能会导致公司的敏感数据(例如:信用卡信息和客户列表等)失窃。

  黑客正将其精力集中在基于 web 的应用程序上——购物车、表格、登录页面、动态内容等。在世界各地可全天候访问且不安全的 web 应用程序提供对企业后台数据库的轻松访问。

  防火墙、SSL 和锁定的服务器无法抵御针对 web 应用程序的黑客攻击!

  来自于 80/443 端口的 web 应用程序攻击,直接穿过防火墙,通过操作系统和网络级别安全,并且正中您应用程序和企业数据的要害。定制的 web 应用程序通常未经过充分测试,含有未检测出的漏洞,因此容易成为黑客的猎物。

Acunetix Web Vulnerability Scanner的功能

  AcuSensor 技术

  自动的客户端脚本分析器,允许对 Ajax 和 Web 2.0 应用程序进行安全性测试。

  业内最先进且深入的 SQL 注入和跨站脚本测试

  高级渗透测试工具,例如 HTTP Editor 和 HTTP Fuzzer

  可视化宏记录器帮助您轻松测试 web 表格和受密码保护的区域

  支持含有 CAPTHCA 的页面,单个开始指令和 Two Factor(双因素)验证机制

  丰富的报告功能,包括 VISA PCI 依从性报告

  高速的多线程扫描器轻松检索成千上万个页面

  智能爬行程序检测 web 服务器类型和应用程序语言

  Acunetix 检索并分析网站,包括 flash 内容、SOAP 和 AJAX

  端口扫描 web 服务器并对在服务器上运行的网络服务执行安全检查

Linux samba文件服务器搭建mkdir -p /var/public/movies

[root@bogon ~]# vi /etc/samba/smb.conf

加入

[movie]

comment = Public share with movie files

path = /var/public/movies

public = yes

writable = yes

guest ok = yes

[root@bogon ~]# chmod -R 777 /var/public/movies

[root@bogon ~]# service smb restart

WebCruiser

  Web安全扫描工具WebCruiser - Web Vulnerability Scanner

  一个小巧但功能不凡的Web应用漏洞扫描器,能够对整个网站进行漏洞扫描,并能够对发现的漏洞(SQL注入,跨站脚本,XPath注入等)进行验证;它也可以单独进行漏洞验证,作为SQL注入工具、XPath注入工具、跨站检测工具使用。

  运行平台:Windows with .Net FrameWork 2.0或以上。

  界面语言:英文版

  功能简介:

  * 网站爬虫(目录及文件);

  * 漏洞扫描(SQL注入,跨站脚本,XPath注入);

  * 漏洞验证(SQL注入,跨站脚本,XPath注入);

  * SQL Server明文/字段回显/盲注;

  * MySQL字段回显/盲注;

  * Oracle字段回显/盲注;

  * DB2字段回显/盲注;

  * Access字段回显/盲注;

  * 管理入口查找;

  * GET/Post/Cookie 注入;

  * 搜索型注入延时;

  * 自动从自带浏览器获取Cookie进行认证;

  * 自动判断数据库类型;

  * 自动获取关键词;

  * 多线程;

  * 高级:代理、敏感词替换/过滤;

  * 报告;

经验:

1、一直密码登录失败,后台显示

ue Apr 17 15:00:48 2012] [error] [client 192.168.33.110] user kkk not found: /svn/test

[Tue Apr 17 15:00:51 2012] [error] [client 192.168.33.110] (13)Permission denied: Could not open password file: /home/phpq/repo/authfile

[Tue Apr 17 15:00:51 2012] [error] [client 192.168.33.110] user kkk not found: /svn/test

[Tue Apr 17 15:17:53 2012] [notice] Apache/2.0.64 (Unix) DAV/2 mod_jk/1.2.33 SVN/1.7.4 configured -- resuming normal operations

[Tue Apr 17 15:21:49 2012] [notice] SIGHUP received. Attempting to restart

[Tue Apr 17 15:21:49 2012] [notice] Apache/2.0.64 (Unix) DAV/2 mod_jk/1.2.33 SVN/1.7.4 configured -- resuming normal operations

[Tue Apr 17 15:22:55 2012] [error] [client 192.168.33.110] user kkk: authentication failure for "/svn/test": Password Mismatch

[Tue Apr 17 15:23:10 2012] [error] [client 192.168.33.110] (13)Permission denied: Failed to load the AuthzSVNAccessFile: Can't open file '/home/phpq/repo/authz.conf': Permission denied

[Tue Apr 17 15:23:10 2012] [error] [client 192.168.33.110] Access denied: 'kkk' GET test:/

[Tue Apr 17 15:24:49 2012] [notice] SIGHUP received. Attempting to restart

[Tue Apr 17 15:24:49 2012] [notice] Apache/2.0.64 (Unix) DAV/2 mod_jk/1.2.33 SVN/1.7.4 configured -- resuming normal operations

[Tue Apr 17 15:25:00 2012] [error] [client 192.168.33.110] Failed to load the AuthzSVNAccessFile: /authz.conf:3: Option must end with ':' or '='

[Tue Apr 17 15:25:00 2012] [error] [client 192.168.33.110] Access denied: 'kkk' GET test:/

[Tue Apr 17 15:25:48 2012] [notice] SIGHUP received. Attempting to restart

[Tue Apr 17 15:25:48 2012] [notice] Apache/2.0.64 (Unix) DAV/2 mod_jk/1.2.33 SVN/1.7.4 configured -- resuming normal operations

[Tue Apr 17 15:25:50 2012] [error] [client 192.168.33.110] (20014)Error string not specified yet: traced call

[Tue Apr 17 15:25:50 2012] [error] [client 192.168.33.110] Could not fetch resource information. [500, #0]

[Tue Apr 17 15:25:50 2012] [error] [client 192.168.33.110] Could not open the requested SVN filesystem [500, #13]

[Tue Apr 17 15:25:50 2012] [error] [client 192.168.33.110] Could not open the requested SVN filesystem [500, #13]

[Tue Apr 17 15:25:51 2012] [error] [client 192.168.33.110] (20014)Error string not specified yet: traced call

[Tue Apr 17 15:25:51 2012] [error] [client 192.168.33.110] Could not fetch resource information. [500, #0]

原因是不能把svn的认证文件放在别的用户下面,我是把文件放在了phpq用户下面

实验过的方法

按照http://mhbjava.javaeye.com/blog/26594 搭建的svn,当访问 http://localhost/svn/test 时提示

500 apache Internal Server Error .

查看apache 的log

错误提示如下:

[error] [client 127.0.0.1] (13)Permission denied: Could not open password file: /home/svnroot/repository/authfile

这个错误的原因是 apache没有权限打开authfile这个文件。

在apache的安装目录下 httpd.conf文件中找到apache所在的用户组和用户

suse下类似

User daemon

Group daemon

接下来把 repo 所在的目录递归的更改成daemon.daemon

#chwon -R daemon.daemon /XXX/XXX/repo
http://www.linuxfly.org/post/343/ http://blog.csdn.net/fxpbupt/article/details/5686623
Linux+Apache+subversion(svn)
2008-03-20 16:49
我的Linux是CentOS4.5

1.安装 httpd

如果已经装过则跳过此步

#yum install httpd

2.配置 httpd


如果有别的 web server,httpd可能会有端口冲突,如果这样则修改httpd服务的端口和主机配置

默认配置文件是 /etc/httpd/conf/httpd.conf

3.安装 subversion

#yum search svn


发现是 mod_dav_svn 包,所以

#yum install mod_dav_svn

rpm -qs mod_dav_svn 发现安装了以下文件

/etc/httpd/conf.d/subversion.conf #这个文件我们等下要修改

/usr/lib/httpd/modules/mod_authz_svn.so #这个文件已经在subversion.conf中指定加载

/usr/lib/httpd/modules/mod_dav_svn.so #这个文件已经在subversion.conf中指定加载

4.配置 subversion

<Location /svn>

DAV svn

SVNParentPath /web/svn/svndata

AuthType Basic

AuthName 'Subversion repository'

AuthzSVNAccessFile /web/svn/svnconf/svn-acc-file

AuthUserFile /web/svn/svnconf/svn-pwd-file

Require valid-user

</Location>

创建以下两个文件

/web/svn/svnconf/svn-acc-file #这个文件指定用户访问版本库的权限,这里不做介绍

/web/svn/svnconf/svn-pwd-file #这个文件指定用户登录的口令( #htpasswd -c /web/svn/svnconf/svn-pwd-file <username> )

注意:

要更改相关目录的权限

#chown –R apache:apache /var/svn/

由于RHEL5中引入了SELinux来加安全控制,因此还需要对该路径进行赋权。(整个路径的目录都要赋权,如:要访问/web/svn/svnconf,则从/web开始都要赋权)

如果不赋权,会出现 Permission denied: Could not open password file: /web/svn/svnconf/svn-pwd-file 这样的错误

#chcon -h -t httpd_sys_content_t /web/

#chcon -R -h -t httpd_sys_content_t /web/svn


创建版本库:

#svnadmin create /web/svn/svndata/sts

#chown –R apache.apache /web/svn/svndata/sts


启动Apache服务:

#service httpd start

访问 http://hostname/svn/sts,若有显示则证明配置通过。
http://hi.baidu.com/raidenxu/blog/item/df4bf3f2b5ad4017b07ec5ad.html
公司一直使用的是CVS来做版本控制,这对我这个已经用过SVN的追新狂来说实在别扭,年前就打算给公司的服务器装上SVN,无奈被一变态问题困扰至今,今天总算发现问题所在。

安装方法就不用说了,网上一堆,为了以防万一,我先在公司的开发服务器上装了一遍(开发服务器的系统和web服务器的系统都是CentOS 5.2),装完后一切都很正常,再到web服务器上安装,问题就出来了,输入地址登录时,总是通不过验证,看了一下apache的error-log,内容如下:

[Mon Feb 02 14:15:53 2009] [error] [client xxx.xx.xxx.xx] (13)Permission denied: Could not open password file: /var/svnroot/passwd

[Mon Feb 02 14:15:53 2009] [error] [client xxx.xx.xxx.xx] access to /svn failed, reason: verification of user id ‘bindiry’ not configured

看来问题是在passwd的权限上,可我早已经给它chmod -R 777了,Google一下,发现很多人也遇到这个问题,也没找到解决办法,实在诡异。

直到今天才知道原来同事在web服务器上开启了SElinux选项,关于SELinux请猛击这里,马上在开发服务器上也开启并测试了一下,果然就是这问题导致,无奈还是把SVN装到了开发服务器上,至此才算勉强解决问题。

关闭SElinux的方法:

在命令行执行setup,然后进入Firewall configuration,关闭方法就在下图中了。





哪位同学如果有此问题的最终解决办法,还望赐教。

———————————————

2009.04.02

解决方法(来自Linux(CentOS)下连接MSSQL):用如下命令开启SELinux对于httpd的网络访问权限:

/wp-content/sbin/setsebool -P httpd_can_network_connect=1
http://junnan.org/blog/345 http://www.macs.hw.ac.uk/~hwloidl/docs/Subversion/faq.html
在用eclipse连接之后,会提示没有权限提交,出现下面的错误

解决方法:chmod -R 777 /sourcedaima/

就可以了

/article/4097158.html

/article/4097158.html

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/common
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/common
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/common
Authorization failed

svn: OPTIONS of 'http://192.168.33.10/fjuidsvn/fd': authorization failed: Could not authenticate to server: rejected Basic challenge (http://192.168.33.10)

Filesystem has no item

svn: URL 'http://192.168.33.10/fjuidsvn/fd/aaa' non-existent in that revision

mkdir --parents -m "初始导入。" http://192.168.33.10/fjuidsvn/fd/aaa
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/aa
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/
mkdir -m "" http://192.168.33.10/fjuidsvn/fd/common
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/common
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/common
Authorization failed

svn: OPTIONS of 'http://192.168.33.10/fjuidsvn/fd': authorization failed: Could not authenticate to server: rejected Basic challenge (http://192.168.33.10)

Filesystem has no item

svn: URL 'http://192.168.33.10/fjuidsvn/fd/aaa' non-existent in that revision

mkdir --parents -m "初始导入。" http://192.168.33.10/fjuidsvn/fd/aaa
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/aa
Permission denied

svn: Can't open file '/sourcedaima/fd/db/txn-current-lock': Permission denied

mkdir -m "" http://192.168.33.10/fjuidsvn/fd/aa
下载最新的svn压缩包

Apache下整合的SVN,由于自己需要加modules,就重新./configure,make make install后启动apache出现如下错误:
httpd: Syntax error on line 53 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: /usr/local/apache2/modules/mod_dav_svn.so: undefined symbol: dav_register_provider
解决办法:
重新./configure 增加参数

./configure -prefix=/usr/local/apache -enable-dav -enable-so -enable-maintainer-mode -enable-rewrite
环境:Centos5.5+apache+svn
Apache下整合的SVN,重启apache出现如下错误:

报错内容:

[root@localhost local]# /usr/local/apache2/bin/apachectl start

httpd: Syntax error on line 53 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: /usr/local/svn/lib/libsvn_subr-1.so.0: undefined symbol: apr_hash_clear

解决办法:

重新安装Apache 编译安装./configure 增加参数

# ./configure --prefix=/usr/local/apache2/ --enable-dav --enable-so

*--enable-dav --enable-so参数是必须要加的,你还可以根据您的需要添加其他的参数。

* --enable-dav 启用davweb支持,是subversion+apache组合必选,缺少的话,在运行apache会出现undefined symbol: dav_register_provider的错误

* apr 和 apr-util一般会在httpd的安装包内,subversion安装会使用到apr和par-util,如果当前系统没有,最好安装一下

://subversion.apache.org/source-code.html

下载页面地址
http://subversion.apache.org/source-code.html
2012-04-16最新的版本是
http://apache.etoak.com/subversion/subversion-1.7.4.tar.gz
//解压SubVersion安装包 (root用户进行下面的操作) # tar xvzf subversion-1.4.5.tar.gz

//进入解压后的目录

# cd Subversion-1.7.4

//配置subversion安装

# ./configure --with-apxs=/usr/local/apache/bin/apxs --prefix=/usr/local/subversion --with-apr=/usr/local/apache --with-apr-util=/usr/local/apache --with-ssl --with-zlib --enable-maintainer-mode

出错提示1 :

onfigure: checking sqlite library

checking sqlite amalgamation... no

checking sqlite3.h usability... no

checking sqlite3.h presence... no

checking for sqlite3.h... no

checking sqlite library version (via pkg-config)... no

An appropriate version of sqlite could not be found. We recommmend

3.7.6.3, but require at least 3.6.18.

Please either install a newer sqlite on this system

or

get the sqlite 3.7.6.3 amalgamation from:
http://www.sqlite.org/sqlite-amalgamation-3.7.6.3.tar.gz
unpack the archive using tar/gunzip and copy sqlite3.c from the

resulting directory to:

/opt/subversion-1.7.4/sqlite-amalgamation/sqlite3.c

configure: error: Subversion requires SQLite

config.status: creating Makefile

config.status: creating tools/backup/hot-backup.py

config.status: creating tools/hook-scripts/commit-access-control.pl

config.status: creating subversion/bindings/swig/perl/native/Makefile.PL

config.status: creating subversion/svn_private_config.h.tmp

config.status: executing libtool commands

config.status: executing svn_private_config.h.tmp commands

configure: WARNING: we have configured without BDB filesystem support

You don't seem to have Berkeley DB version 4.0.14 or newer

installed and linked to APR-UTIL. We have created Makefile which will build

Subversion without support for the Berkeley DB back-end. You can find the

latest version of Berkeley DB here:
http://www.oracle.com/technology/software/products/berkeley-db/index.html
# make

//安装

# make install

//创建库文件所在的目录 (svnroot用户进行下面的操作)

# mkdir /home/svnroot/repository

//进入subversion的bin目录

# cd /usr/local/subversion/bin

//创建仓库"test"

#./svnadmin create /home/svnroot/repository/test

# cd /home/svnroot/repository/test

//看看是不是多了些文件,如果是则说明Subversion安装成功了

# ls –l

# cd /usr/local/subversion/bin

//这条语句将把路径/home/user/import下找到的文件导入到你创建的Subversion 仓库中去,

//提交后的修订版为1。

# ./svn import /home/user/import file:///home/svnroot/repository/test –m "注释"

[root@yunwei2 subversion-1.7.4]# mkdir /repository

[root@yunwei2 subversion-1.7.4]# cd /usr/local/subversion/bin

[root@yunwei2 bin]# ls

svn svnadmin svndumpfilter svnlook svnrdump svnserve svnsync svnversion

[root@yunwei2 bin]# ./svnadmin create /repository/test

[root@yunwei2 bin]# ls /repository/test

conf db format hooks locks README.txt

[root@yunwei2 bin]# ./svn

svn svndumpfilter svnrdump svnsync

svnadmin svnlook svnserve svnversion

[root@yunwei2 bin]# mkdir /kk

[root@yunwei2 bin]# ls

svn svnadmin svndumpfilter svnlook svnrdump svnserve svnsync svnversion

[root@yunwei2 bin]# touch /kk/aaa.txt

[root@yunwei2 bin]# ./svn import /kk/ file:///repository/test -m "kaishi"

正在增加 /kk/aaa.txt

提交后的版本为 1。

[root@yunwei2 bin]#

//不让其他人有该目录的权限

# chmod 700 /home/svnroot/repository

修改Apache配置文件

# cd /usr/local/apadche2/bin

//启动Apache

# ./apachect1 start

# vi /usr/local/apache2/conf/httpd.conf

//在最下面添加

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /svn>

DAV svn

SVNParentPath /home/svnroot/repository/ //svn父目录

AuthzSVNAccessFile /home/svnroot/repository/authz.conf //权限配置文件

AuthType Basic //连接类型设置

AuthName "Subversion.zoneyump" //连接框提示

AuthUserFile /home/svnroot/repository/authfile //用户配置文件

Require valid-user //采用何种认证

</Location>

//其中authfile是通过"htpasswd [–c] /home/svnroot/repository/authfile username password"来创建的

//"Require valid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它,

//则只能第一个用户可以访问新建库

6. 权限管理

1)增加用户
]# useradd -m -s /bin/bash wooin

]# htpasswd -c authfile wooin

# htpasswd [-c] /home/svnroot/repository/authfile wooin

//第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加

# htpasswd authfile 用户名(加入新的用户)

2)权限分配

# vi /home/svnroot/repository/authz.conf

[test:/] //这表示,仓库test的根目录下的访问权限

wooin = rw //test仓库wooin用户具有读和写权限

bao = r //test仓库bao用户具有读权限

[test2:/] //test2仓库根目录下的访问权限

wooin = r //wooin用户在test2仓库根目录下只有读权限

bao = //bao用户在 test2仓库根目录下无任何权限

[/] //这个表示在所有仓库的根目录下

* = r //这个表示对所有的用户都具有读权限

#[groups] //这个表示群组设置

#svn1-developers = wooin, bao //这个表示某群组里的成员

#svn2-developers = wooin

#[svn1:/]

#@svn1-developers = rw //如果在前面加上@符号,则表示这是个群组权限设置

将这个设置完成后。重启Apache,就可以通过
http://localhost/svn/test
这个URL来访问仓库了,当然,受权限的限制,必须是合法用户才能访问且具有相应的权限

7. 一些备忘:

1. svn checkout http://localhost/svn/hello.world
2. svn commit 时的默认编辑器的环境变量$SVN_EDITOR=vi需要手动设定,用kate好像有问题

3. 如果linux的登录用户名密码都和svn的其中一个用户名密码相同时,在checkout的时候不会要求输 入用户名密码直接就可以checkout出来。比如:linux有个用户wooin,svn也有一个用户wooin,并且密码 都是一样的,当用wooin登录linux后,执行checkout,可以直接提取出源码文件,不用输入认证信息。

4. 在svn使用过程中牵扯到几种权限:文件系统的权限,linux系统权限,svn用户的权限,apache进程的权限。

文件系统的权限,linux系统权限:这里相同的意思,就是平时大家使用linux时文件夹和文件的访问权限。在 svn建立仓库,文件夹,配置文件的时候用svnroot用户,并将仓库权限设置为700,不允许其他用户直接通过 文件系统查看,只能由svnroot进行管理。

apache进程的权限:因为所有跟仓库传输的操作都是通过apache进程进行的,所以即使你给svn用户设置了 很大的权限,但是apache进程没有访问仓库或者相关文件的权限也没有用,apache进程的权限设置在 /usr/local/apache2/conf/httpd.conf 文件中配置,找到文件中的这两行:

User daemon # 将daemon改为svnroot,让apache进程以svnroot的身份运行

Group daemon

svn用户的权限:就是在repository/authz.conf文件中设置的权限信息,是svn用来管理仓库访问权限的。

5. svn服务器设置有两种方式:http 和 svnserve。这里介绍的是http方法

6. 在/etc/profile的结尾设置一些svn启动时要做的工作 # start apache server for svn

/usr/sbin/apachectl start

export SVN_EDITOR=vi

7. APR libraries 安装 SVN 的时候最好指定 --with-apr= 和 --with-apr-util= 参数到 Apache 安装的根目录

(ServerRoot)下,而不是使用缺省的 SVN 安装包中自带的 apr 。否则如果你安装的 Apache

版本不同有可能导致 APR 库不匹配,出现类似:

Can't set position pointer in file '/svn/test/db/revs/1': Invalid argument 的错误。

Updated 2006-04-20 16:30 -- 比如说如果你安装的是apache 2.2.0版本,就需要在编译安装svn的时候指定

--with-apxs和--with-apr参数到你的apache2.2.0安装目录下:

./configure --divfix=${subversionInstallFolder} /

--with-apxs=${apacheInstallFolder}/bin/apxs /

--with-apr=${apacheInstallFolder} /

--with-apr-util=${apacheInstallFolder} /

--with-ssl /

--with-zlib /

--enable-maintainer-mode

1 环境:

  服务器放在redhatAS4.0上,客户端在windows 2000。

  2 软件包

  2.1 服务器:

  subversion-1.3.2-1.rh90.i386.rpm。可能还会用到其他依赖组件,在我的配置中要用到:apr-0.9.5-0.2.i386.rpm , neon-0.24.7-1.i386.rpm,apr-util-0.9.5-0.1.i386.rpm。

  2.2 客户端:

  TortoiseSVN-1.3.2.5840-svn-1.3.0

  3 安装服务器

  [root@localhost root]#rpm –ivh apr-0.9.5-0.2.i386.rpm

  [root@localhost root]#rpm –ivh neon-0.24.7-1.i386.rpm

  [root@localhost root]#rpm –ivh apr-util-0.9.5-0.1.i386.rpm

  [root@localhost root]#rpm –ivh subversion-1.3.2-1.rh90.i386.rpm

  安装完成以后,要测试是否已经安装成功,则要输入以下命令:

  [root@localhost root]#svnserve --version

  若显示如下,安装成功:

  svnserve, version 1.4.0 (r21228)

  compiled Oct 12 2006, 10:18:56

  Copyright (C) 2000-2006 CollabNet.

  Subversion is open source software, see http://subversion.tigris.org/
  This product includes software developed by CollabNet (http://www.Collab.Net/).

  The following repository back-end (FS) modules are available:

  * fs_fs : Module for working with a plain file (FSFS) repository.

  4 Svn配置

  4.1 建立版本库目录

  [root@localhost root] #mkdir –p /svn

  svn是我自己建立的目录,各人根据具体情况设计名字

  4.2 建立一个用户,用与管理这个版本库目录

  [root@localhost root] #useradd -m -s /bin/bash lyl

  lyl是建立的用户名,可以根据习惯改

  4.3 用建立的用户管理我们刚建的版本库目录

  [root@localhost root] #chown –R lyl.lyl /svn

  用lyl来管理我们的版本库目录/svn

  4.4 启动服务器

  用用户lyl来管理版本库目录/svn,则须转为lyl,命令如下:

  [root@localhost root] #su lyl

  启动svn服务

  [root@localhost root] #svnserve -d -r /svn/;

  -d表示以daemon方式(后台运行)运行

  -r/svn/指定根目录是/svn/

  检查服务器是否启动正常:

  [svn_leader@localhost root]$ ps -ef|grep svnserve

  如果显示如下,即为启动成功:

  lyl  6941   1 0 15:07 ?  00:00:00 svnserve -d ——listen-port 9999 -r /svn

5 建立版本库

  # cd /svn

  # svnadmin create p1;

# cd p1

  P1可以改,在p1目录下会有下面目录:conf dav db format hooks locks README.txt

  6 配置允许访问test的用户

  进入到conf,命令为:

# cd conf

  出现三个文件:authz passwd svnserve.conf

  6.1 修改svnserve.conf

# vi svnserve.conf

  出现:

  [general]

  ………………………

  # anon-access = read

  # auth-access = write

  ………………………

  # password-db = passwd

  ………………………

  # authz-db = authz

  去除注释,并内容修改为:

  [general]

  ………………………

  anon-access = none

  auth-access = write

  ………………………

  password-db = passwd

  ………………………

  authz-db = authz

  6.2 修改passwd

  # vi passwd

  文件格式如下:

[users]

<用户1> = <密码1>

<用户2> = <密码2>

其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。示例:

  [users]

  alan = password

  king = hello

  这个里面的user表示当前test版本库的成员.

6.3 修改authz

# vi authz

用户组格式:

[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服务器的的安装和配置就已经完成了。

http://blog.csdn.net/leo_arui/article/details/754486



LoadModule dav_module modules/mod_dav.so

这一行的注释去掉,原因如下:

You aren't loading mod_dav. mod_dav_svn just implements the back-end, you

still need to have mod_dav, which implements the dav protocol.

Ryan

On Sat, 5 Apr 2003, Robo wrote:

> Just ran apache from the command line, and got the following error message:

>

> Invalid command 'DAV', perhaps mis-spelled or defined by a module not

> included i

> n the server configuration

>

> Hope that helps pointing down the problem, thanks

>

> Robo

>

> ----- Original Message -----

> From: <rbb@rkbloom.net>

> To: "Dale Hirt" <dale@sbcltd.com>

> Cc: "'Robo'" <robo@vangof.com>; "Subversion Development Mailing List

> (E-mail)" <dev@subversion.tigris.org>

> Sent: Saturday, April 05, 2003 5:15 AM

> Subject: RE: Can't get SVNPath to work on Apache2

>

>

> >

> >

> > Unfortunately, on Windows errors like this often don't show up in the

> > error log. The problem comes from when Apache opens the log file. If

> > there isn't anything in the log file, then just run Apache from the

> > command line. That way, the error wil show up in the command window.

> > Once Apache runs from the command line, it will also run from the Services

> > window.

> >

> > Ryan

> >

> > On Fri, 4 Apr 2003, Dale Hirt wrote:

> >

> > > My first recommendation would be to check the Apache error log. It

> should

> > > have an error message saying what was wrong.

> > >

> > > > -----Original Message-----

> > > > From: Robo [mailto:robo555@gmx.net]

> > > > Sent: Thursday, April 03, 2003 10:44 PM

> > > > To: dev@subversion.tigris.org

> > > > Subject: Can't get SVNPath to work on Apache2

> > > >

> > > >

> > > > I'm running Subversion on WinXP, with the following config:

> > > >

> > > > Apache/2.0.44 (Win32) PHP/4.3.0 SVN/0.20.0

> > > >

> > > > Apache2 seems to load mod_dav_svn.so fine, but when I add the

> > > > following to

> > > > the end of httpd.conf, Apache refuses to start:

> > > >

> > > > <Location /svn>

> > > > DAV svn

> > > > SVNPath E:/svn

> > > > </Location>

> > > >

> > > > the path is correct, I've been able to commit changes to the

> > > > repos locally.

> > > >

> > > > Apache is running as a service, and it will only start if I

> > > > comment out the

> > > > four lines above, otherwise I get the following error:

> > > >

> > > > The Apache2 service is starting.

> > > > The Apache2 service could not be started.

> > > >

> > > > A service specific error occurred: 1.

> > > >

> > > > More help is available by typing NET HELPMSG 3547.

> > > >

> > > > Anyone know how I can solve this?

> > > >

> > > > Robo

> > > >

> > > >

> > > > ---------------------------------------------------------------------

> > > > To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org

> > > > For additional commands, e-mail: dev-help@subversion.tigris.org

> > > >

> > >

> > > ---------------------------------------------------------------------

> > > To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org

> > > For additional commands, e-mail: dev-help@subversion.tigris.org

> > >

> > >

> >

>

>

软件准备

svn-win32-1.6.1.zip(http://subversion.tigris.org/files/documents/15/45600/svn-win32-1.6.1.zip)和apache_2.2.11-win32-x86-no_ssl.msi注意版本要匹配,否则可能会报错误1和2(见下面)

软件安装:1.安装svn

1.1 直接解压下载的svn压缩包即可

1.2(%svn%为svn的主目录)使用%svn%/bin下的svnadmin命令创建工程:

svnadmin create d:/svn/myproject

注释:d:/svn为svn的根目录,myproject是我们的工程

2.安装apache:

2.1 按照提示安装即可

2.2 关于80端口是否被占用

2.2.1 使用命令netstat
-ano|findstr ".*:80.*:.*"即可查看80端口是否被使用,一般安装iis以及迅雷等软件有可能把端口占用,如果80被占用的话,最后一列的数字即为占用80端口软件的pid;当然您可以把该软件关闭,也可以修改apache的端口

2.2.2(%apache%为apache的主目录)修改apache的端口可以修改%apache%/conf/httpd.conf

把里面的Listen 80修改为:

Listen 81

这样您的apache的端口就变成81了,不会与80冲突啦,修改后端口再按照2.1重新安装一次即可

2.3在浏览器里输入http://localhost:81正常显示说明安装成功。(81是端口号)

3.把svn与apache结合

3.1拷贝%svn%下的文件到%apache%下

3.1.1把%svn%\bin\下的mod_dav_svn.so和mod_authz_svn.so到%apache%\modules目录下

3.1.2把%svn%\bin\下的九个dll文件intl3_svn.dll,libapr-1.dll,libapriconv-1.dll,libaprutil-1.dll,libdb44.dll,libsvn_delta-1.dll,libsvn_fs-1.dll,libsvn_repos-1.dll,libsvn_subr-1.dll拷贝到%apache%\bin目录下(建议全部copy过去,否则容易报错误2,见下面)

3.2修改%apache%/conf/httpd.conf文件

3.2.1把在httpd中找到以下2行,并把前面的注释符#删除:

#LoadModule dav_fs_module modules/mod_dav_fs.so

#LoadModule dav_module modules/mod_dav.so

如果不删除容易报错误3,见下面

3.2.2在LoadModule结尾处添加以下2行:

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

3.2.3在http.conf文件的结尾处添加以下配置行:

<Location /svn>

DAV svn

SVNParentPath D:\svn

AuthType Basic

AuthName "Subversion repositories"

AuthUserFile D:\svn\passwd

#AuthzSVNAccessFile D:\svnaccessfile

Require valid-user

</Location>

注释:1. SVNParentPath D:\svn为svn的主目录,参加1.2中设置

2 .AuthUserFile D:\svn\passwd密码存储文件,(下面要使用)

说明:

<Location /svn/>

意味着可以通过像这样的URL(http://MyServer/svn)来访问Subversion版本库

DAV svn

告诉Apache哪个模块负责服务像那样的URL--在这里就是Subversion模块

SVNListParentPath on

在Subversion 1.3及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库

SVNParentPath F:\svnROOT

告诉Subversion在目录F:\svnROOT下寻找版本库

AuthType Basic

启用基本的验证,比如用户名/密码对

AuthName "Subversion repositories"

当一个验证对话框弹出时,告诉用户这个验证是用来做什么的

AuthUserFile F:\svnROOT\htpasswd

指定F:\svnROOT\htpasswd用为密码文件用来验证用户的用户名及密码

AuthzSVNAccessFile F:\svnROOT\authz

指定F:\svnROOT\authz来限定各个用户或组在版本库中目录的访问权限

Require valid-user

限定用户只有输入正确的用户名及密码后才能访问这个路径(此项表示,无论是IE还是Tortoise,只有通过密码验证才能访问)。

下面表示允许匿名访问,对于读操作,不需要用户验证。

#<LimitExcept GET PROPFIND OPTIONS REPORT>

#Require valid-user

#</LimitExcept>

AuthUserFile和AuthzSVNAccessFile 的工作原理是,先使用Apache用户机制进行验证,通过之后将请求提交给mod_authz_svn.so进行认证,最后使用mod_dav_svn.so提供的功能。

3.3创建passwd文件来管理svn的访问权限

3.3.1 使用%apache%\bin\htpasswd.exe来创建密码

第一个用户的命令:htpasswd -c D:\svn\passwd %username%

第二个用户的命令:htpasswd D:\svn\passwd %username%

注释:1.-c是创建新文,%username%是用户名,输入命令后还会提示输入密码二次。

2.D:\svn\passwd为3.1.3中设置的路径文件

上面的配置仅仅是一个简单的示例。你还可以对Apache进行许许多多的配置。

1.如果你想让所有用户对版本库都有读的权限而只有特定的用户才有写的权限,你可以将这行

CODE:

Require valid-user

改为

CODE:

<LimitExcept GET PROPFIND OPTIONS REPORT>

Require valid-user

</LimitExcept>

2.上面的配置使用了passwd文件将你所有的版本库作为一个单元来限定访问权限。如果你想获得更多的控制,如限定某个用户可以访问版本库中的哪个目录,可以把下面这行的#去掉:

CODE:

#AuthzSVNAccessFile D:\svnaccessfile

然后用文本编辑器创建一个Subversion授权文件。Apache将确保只有有效的用户可以访问你的/svn位置,然后将用户名传到 AuthzSVNAccessFile模块,这样可以依据Subversion授权文件得到更精细的权限控制。注意,路径将被指定为[库:路径]或者简单 的[路径]。如果你不明确指定一个库,访问规则将应用到由SVNParentPath指定的目录下所有的版本库中。一个授权文件例子可能像这样:

CODE:

[groups]

admin = john, kate

devteam1 = john, rachel, sally

devteam2 = kate, peter, mark

docs = bob, jane, mike

training = zak

# 为所有库指定默认访问规则

# 所有人可以读,管理员可以写,危险分子没有任何权限

[/]

* = r

@admin = rw

dangerman =

# 允许开发人员可以完全访问他们的项目版本库

[proj1:/]

@devteam1 = rw

[proj2:/]

@devteam2 = rw

[bigproj:/]

@devteam1 = rw

@devteam2 = rw

trevor = rw

# 文档编写人员对所有的docs目录有写权限

[/trunk/doc]

@docs = rw

# 培训人员可以完全访问培训版本库

[TrainingRepos:/]

@training = rw

Svn与apache结合容易产生的错误

1.httpd.exe: Syntax error on line 86 of D:/Program Files/Apache Software Fou

n/Apache2.2/conf/httpd.conf: API module structure 'dav_svn_module' in file

ogram Files/Apache Software Foundation/Apache2.2/modules/mod_dav_svn.so is

ed - expected signature 41503232 but saw 41503230 - perhaps this is not an

e module DSO, or was compiled for a different Apache version?

Note the errors or messages above, and press the <ESC> key to exit. 3....

解决办法就是使用2.0版本的apache

2.httpd.exe: Syntax error on line 86 of D:/Program Files/Apache Software Foundatio

n/Apache2.2/conf/httpd.conf: Cannot load D:/Program Files/Apache Software Founda

tion/Apache2.2/modules/mod_dav_svn.so into server: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\

xb8\xb6\xa8\xb5\xc4\xb3\xcc\xd0\xf2\xa1\xa3

Note the errors or messages above, and press the <ESC> key to exit. 16...

可以看到已经说明了是2.2.9以上的apache

3.Syntax error on line 487 of D:/Program Files/Apache Software Foundation/Apache2.

2/conf/httpd.conf:

Invalid command 'DAV', perhaps misspelled or defined by a module not included in

the server configuration

Note the errors or messages above, and press the <ESC> key to exit. 25...

把LoadModule dav_module modules/mod_dav.so前的注释去掉

很多人抱怨使用了一些SVN的客户端软件,保存用户名和密码之后,找不到在什么地方修改,甚至卸载掉相关软件之后也没办法清除这些信息。

其实有些东西是保存在Documents and Settings\【user】\Application Data这个目录下的。

仔细找一下就有可能解决些问题。

用户名 密码保存在

C:\Documents and Settings\【user】\Application Data\Subversion\auth\svn.simple

这个目录下。

可以清除这个目录下的相关文件。



SVN入门及配置使用

2009-10-23 来源:网络

SVN,即Subversion,是一个自由开源的版本控制系统,可以将数据恢复到早期版本,或者检查数据修改的历史,这些数据可以是源代码,也可以是其他类型的文件。

在SVN出现之前,CVS是开源世界版本控制工具的事实标准,然而CVS存在一些固有的缺陷,并且修复这些缺陷需要耗费很大的精力,因此,SVN的发起者Brian Behlendorf和CollabNet决定重新编写一个版本控制系统,保留CVS的基本思想,但要修正其中错误和不合理的特性。于是,SVN作为CVS的继任者出现了。SVN的设计者们力图通过两方面的努力赢得CVS用户的青睐:保持开源系统的设计以及界面风格与CVS尽可能类似,同时尽力弥补CVS许多显著的缺陷。这些努力的结果使得从CVS迁移到SVN不需要作出重大的变革,因此越来越多的人选择了SVN。
http://svnbook.red-bean.com
http://www.subversion.org.cn

目录

一、客户端的使用

 1.1 Linux系统下一般使用(Ubuntu)

 1.2 Windows系统下一般使用

 1.3 Linux下使用SVN+ssh认证(未找到相关资料@_@)

 1.4 Windows下使用SVN+ssh认证

二、服务器端的配置

 2.1 Linux下的svnserve配置

 2.2 Windows下的svnserve配置

 2.3 Linux下的svnserve+ssh配置

 2.4 Windows下的svnserve+ssh配置(需使用Cygwin,略)

 2.5 Linux下基于APache的SVN服务器配置

 2.6 Windows下基于APache的SVN服务器配置

三、建立版本库

 3.1 Linux下创建版本库

 3.2 Windows下创建版本库

大多数人都是从客户端开始使用SVN,以下先介绍客户端的使用。假设已经假设好了SVN服务器,其文件夹地址为http://domain/svn/trunk/myproject,用户名为test,密码为test。(如果服务器端配置的是SVN,则使用svn://开头的URL访问;如果服务器端配置的是SVN+SSH,则使用svn+ssh开头的URL访问)

一、客户端的使用

1.1 Linux(Ubuntu)系统下一般使用

1)首先需要安装svn客户端,ubuntu下使用$sudo apt-get install subversion(其他请baigoogledu,余同)

2)checkeout命令:第一次使用时使用checkout命令,把服务器的目录拷贝到本地的当前目录下,同时会建立一个隐藏文件夹记录版本信息:

  [工作目录]$svn checkout "http://domain/svn/trunk/myproject" --username test

然后输入密码

3)svn update命令:获取服务器上的最新版本

  [工作目录]$svn update(除了第一次要加url和用户名和密码,之后系统会记住)

4)svn add命令:要把非版本控制的本地文件添加到版本控制:

  [工作目录]$svn add hello.c

5)svn commit命令:把本地文件上传到服务器

[工作目录]$svn commit(如果有新的文件,要首先svn add)

1.2 Windows系统下一般使用

1)安装客户端:http://tortoisesvn.net/downloads

2)新建一个文件夹(工作目录),右击选择checkout,填写URL和用户名密码

3)工作目录右键update

4)工作目录右键add

5)工作目录右键commit

1.3 Linux下使用SVN+ssh认证(未找到相关资料@_@)

1.4 Windows下使用SVN+ssh认证

(参考ubuntu下架设svn服务器及在windows建立svn+ssh客户

1.4.0 安装TortoiseSVN、Puttygen、Pageant

  http://sourceforge.net/projects/tortoisesvn

  http://www.chiark.greenend.org.uk/~sgtatham/putty/

1.4.1 转换私钥格式

 1)将Linux下的文件<username>key拷贝到windows下,运行Puttygen;

2)选择菜单conversions->Import Key;选择文件<username>key,提示"Enter passphrase for key",输入创建公私钥对示使用的passphrase关键字;

3)选择Parameters为“SSH-2 DSA”或“SSH-2 RSA”->Save private key->保存文件名为username>key.ppk。

1.4.2 建立TortoiseSVN与Pageant的关联,并将私钥加入Pageant:

1)鼠标右键选择TortoiseSVN->Settings->Network->SSH client,输入:

 C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe

2)鼠标右键选择TortoiseSVN->RepoBrowser 输入URL:

  svn+ssh://<username>@<SvnServiceIP>/usr/local/svn/trunk

3)运行Pageant,右键点击屏幕右下角的图标-〉Add Key,将私钥文件<username>key.ppk加入。

——如果不想缓存ssh密码,则第8、9步不需要,只保留第二步,但每次check out、check in中每进入一个文件夹都要输入两次密码,烦死你:)

二、服务器端的配置

Web服务器部署可以有三种选择,配置由简单到复杂排列为

·svnserve

·svnserve over SSH

·Apache+mod_dav_svn模块

下面从最简单的入手,介绍svnserve。

[更新]Windows下服务器端的配置可以使用VisualSVN Server进行傻瓜化安装。

官方网站:http://www.visualsvn.com/

参考链接:VisualSVN系列介绍(有详细的安装过程介绍,这里就不转述了)

2.1&2.2 配置svnserve

svnserve是一个轻型的服务器,可以同客户端通过在TCP/IP基础上的自定义有状态协议通讯,客户端通过使用开头为svn://或者svn+ssh://svnserve的URL来访问一个svnserve服务器。

2.1 Linux下的svnserve配置

2.1.0 同样地,使用命令$sudo apt-get install subversion

2.1.1 svnserve作为独立守护进程,监听请求

  $svnserve -d

  $ #svnserve is now running, listening on port 3690

  ——可以使用--listen-port=[端口号]来指定端口,或者--listen-host=[主机名]来指定主机名

  假定已经建立一个版本库位于/usr/local/repositories/project路径(版本库的建立稍后提及), 此时客户端可以使用svn://[主机]/usr/local/repositories/project来进行访问

  ——可以使用-r选项来限制只输出指定路径下的版本库,从而使客户端访问更为简洁:

  $svnserve -d -r /usr/local/repositories

  则客户端只要使用svn://[主机]/project就可以访问

2.1.2 通过inetd使用svnserve

  $svnserve -i

  ——此时svnserve会尝试使用自定义协议通过stdin和stdout来与subversion客户端通话,默认端口为3690。可以在/etc/services添加如下几行:

  svn 3690/tcp #subversion

  svn 3690/udp #subversion

  ——如果是使用经典的类Unix的inetd守护进程,可以在/etc/inetd.conf添加如下行,则如果有客户连接来到端口3690,inetd会产生一个svnserve进程来做服务

  svn stream tcp nowait svnowner /usr/bin/svnserve svnserve -i

2.1.3 设置svnserve的内置认证

编辑版本库目录的conf/svnserve.conf文件:

 1)设置匿名访问

  [general]

  anon-access = none #无权限

  anon-access = read #只读

  anon-access = write #打开匿名的写访问,但这样很危险,不能控制谁来修改版本库

 2)使用用户和密码

 2.1)定义保存用户名和密码的文件和一个认证域

  [general]

  password-db = <userfile> #指出保存用户和密码列表的文件,可以是绝对或相对路径

  realm = example realm #定义认证域

  anon-access = read

  auth-access = write

 2.2)然后在userfile文件中指明用户名和密码:(格式为“用户名=密码”)

  [users]

  harry = foopassword

  sall = barpassword

2.2 Windows下的svnserve配置

2.2.0 安装svnserve

1)从http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91得到最新版本的Subversion

(如果之前已经安装了subversion,svnserve已经在服务器上运行,需要先停止服务)

2)安装subversion,然后进入subversion的安装目录,找到bin目录下的文件svnserve.exe,int13_svn.dll,libapr.dll,libapriconv.dll,libapriutil.dll,libdb*.dll,libeay32.dll和ssleay32.dll,将它们复制到服务器目录下(如C:\svnserve)。

2.2.1 以守护方式运行svnserve

在命令行窗口输入svnserve.exe --daemon,则svnserve将会在端口3690等待请求,--daemon选项告诉svnserve以守护进程方式运行,这样在手动终止之前不会退出。这种方式的不便之处是需要保持命令行窗口不关闭。

2.2.2 svnserve作为windows服务

svnserve作为windows服务时,在后台运行,可以在启动时自动执行,并且可以使用同其他windows服务一致的管理界面启动和停止服务。

需要使用命令行工具sc.exe定义新的服务(create svnserve),在windows启动时指明svnserve的调用:

  C:\>sc create svnserve

   binpath= "\"c:\svnserve\svnserve.exe\" --service --root c:\repos"

   displayname= "Subversion"

   depend= tcpip

   start= auto

  ——注意为了回避目录名中的空格等字符,将整个binpath值放在双引号中;另外,sc 的命令行很特殊。在 key= value 对中,key 与 = 之间不能有空格,但是在 value 之前,必须有空格。

定义了服务之后,就可以使用GUI工具(如服务管理面板)进行停止、启动和查询,也可以通过命令行的方式进行:

  C:\>net stop svn

  C:\>net start svn

  C:\>sc delete svn(需要确定先停止了服务)

2.2.3 设置svnserve的内置认证

同上Linux配置文件即可。

2.3&2.4 配置svnserve+ssh

2.3 Linux下的svnserve+ssh配置

2.3.0 介绍与安装ssh

  通过此方法,svnserve不会作为守护进程启动,而是SSH来启动svnserve,以SSH授权用户进行。

  $sudo apt-get install ssh

2.3.1 创建帐户

  $sudo adduser <username> #为参与项目开发的成员建立用户帐户

  $sudo addgroup <groupname> #建立用户组

  $sudo addgroup <username> <groupname> #将用户帐户添加进用户组

2.3.2 为成员生成密钥对

  首先必须切换为<username>的用户登陆Linux:

  $sudo <username>

  $(提示输入密码)

  $cd ~/

  $whoami

  <username>$ssh-kegen -b 1024 -t dsa -N <passphrase> -f <filename> #使用DSA加密,也可以改为RSA加密

  ——这时产生两个文件:私钥<username>key和公钥<username>key.pub

  然后创建目录/home/<username>/.ssh,把公钥拷贝到该目录下:

  $cp <username>key.pub /home/<username>/.ssh/authrized_keys #文件名必须为authorized_keys

2.4 Windows下的svnserve+ssh配置

需要使用Cygwin来配置ssh,此处略,详情可参考http://tortoisesvn.net/node/156

2.5&2.6 基于Apache服务器的SVN配置

概述

Apache的http服务器是一个subversion可以利用的“重型”网络服务器,通过一个自定义模块,httpd可以让SVN版本库通过WebDAV/DeltaV协议在客户端前可见。可以将浏览器指向版本库的URL,无需安装SVN客户端就可以浏览内容。

基于Apache的SVN需要两个包的四个部分:Apache httpd2.0及其中包含的mod_dav DAV模块,Subversion及与之一起发布的mod_dav_svn模块。有了上述组件之后,配置步骤一般如下

 1)配置好http2.0,并且使用mod_dav启动

 2)为mod_dav安装mod_dav_svn插件

 3)配置httpd.conf来发布版本库

2.5 Linux下基于APache的SVN服务器配置

(参考http://www.123shang.cn/blog/?p=53

(参考“ubuntu下svn+apache版本管理服务器配置”)

2.5.1 安装aphache

  $sudo apt-get install apache2 #安装apache

  $sudo apt-get install libapache2-svn #安装相关组件

  $sudo apt-get install subversion #安装svn

  安装完毕后启动apache

  $/usr/local/apache/bin/apachectl –k start

  ——用浏览器查看http://localhost/,得到it works,说明apache已经配置成功了。

2.5.2 创建版本库(见第三节)

2.5.3 添加用户并设置密码文件

版本库的密码文件,一般命名为PasswdFile,由用户通过命令创建,里面保存授权用户的用户名和MD5加密后的密码。创建密码文件,密码文件保存在版本库文件目录下,在终端通过下面的命令创建密码文件:

  $htpasswd -c /etc/svn/passwordfile username

   passwordfile 密码文件名称,可以由用户自行命名

   username 你希望添加的用户名,比如zhangsan,lisi,wangwu

   -c 用来创建密码文件

  按提示输入密码,添加成功后会提示add user username,然后可以再继续添加第二个用户。

  $htpasswd /etc/svn/passwordfile seconduser

2.5.4 httpd.conf文件修改

  conf文件正常安装的话在etc/apache2/ 目录下,双击打开进行编辑,添加以下内容:

  LoadModule dav_svn_module modules/mod_dav_svn.so 加载mod_dav_svn模块

  LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so 加载 mod_anthz.svn模块

  <Location /vcard>

   DAV svn

   SVNPath /home/bb/svn/vcard/ 指明版本库的路径

   AuthType Basic 认证类型为基本认证

   AuthName "SVN repos" 认证名称,将在IE界面弹出一个对话框,其标题就是SVN repos

   AuthUserFile /home/bb/svn/vcard/VcardPasswdFile 加载密码文件,访问版本库用户的文件,用apache 的htpasswd命令生成

   # AuthzSVNAcessFile //home/bb/svn//vcard/accesspolicy 访问版本库权限的文件

   # satisfy Any

   Require valid-user 要求验证用户,即不能匿名访问;如果没有这个语句,则只能第一个用户可以访问新建库

  </Location>

  保存文件退出,重新启动apache

  # /usr/local/apache/bin/apachectl –k restart

  测试:

  $svn checkout http://localhost/svn

2.6 Windows下基于APache的SVN服务器配置

2.6.1 下载安装Apache

  APache:http://httpd.apache.org/download.cgi

  ——如果你将Apache安装成一个服务,它将以本地system帐户来运行。为Apache创建一个单独的用户来运行它将会更安全一些。

  ——请确保运行Apache的用户有版本库的完全访问权限(右键版本库目录->属性->安全)。要不然,用户将无法提交他们的更改。

  ——就算Apache以本机system来运行,你也要设置它能完全读写版本库目录。

  ——如果没有为Apache配置这个许可,用户将会得到"禁止访问"的错误信息,在Apache的错误日志中表现为错误500。

2.6.2 配置Subversion

使用Windwos资源管理器,来到Subversion的安装目录(通常是c:\program files\Subversion),找到文件httpd/mod_dav_svn.so和mod_authz_svn.so,复制这些文件到Apache的模块目录(通常是c:\program file\apache group\apache2\modules)。

2.6.3 配置httpd.conf文件

  路径通常为c:\program files\apache group\apache2\conf\httd.conf),修改以下内容:

  去掉以下两行的注释号“#”:

  #LoadModule dav_fs_module modules/mod_dav_fs.so

  #LoadModule dav_module modules/mod_dav.so

  在LoadModule节的最后添加以下两行:

  LoadModule dav_svn_module modules/mod_dav_svn.so

  LoadModule authz_svn_module modules/mod_authz_svn.so

  文件末尾添加以下行,让Apache知道哪个URL将被Subversion使用:

  <Location /svn>

   DAV svn

   SVNParentPath D:\SVN

   AuthType Basic

   AuthName "Subversion repositories"

   AuthUserFile D:\passwd

   #AuthzSVNAccessFile D:\svnaccessfile

   Require valid-user

  </Location>

  ——这样配置表示:你所有的版本库将位于D:\SVN目录下,要访问你的版本库可以使用这样的URL:http://MyServer/svn/,访问权限将由passwd文件中的用户名/密码来限制。

  要创建passwd文件,可以打开命令行,将当前目录切换到apache2目录,输入命令:

  c:\program files\apache group\apache2 >bin\htpasswd -c passwd <username>

  重启Apache服务。

  使用浏览器测试。

三、建立版本库

在前面的服务器配置上我们通常假设已经建立了版本库,这是为了避免在每种配置中重复赘述这种操作,因此把它独立出来讲。

版本库创建完毕后会在目录下生成若干个文件和文件夹:

   dav目录是提供给Apache与mod_dav_svn使用的目录,让它们存储内部数据;

   db目录就是所有版本控制的数据文件;hooks目录放置hook脚本文件的目录;

   locks用来放置Subversion文件库锁定数据的目录,用来追踪存取文件库的客户端;

   format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。

3.1 Linux下创建版本库

  版本库有两种数据存储格式:Berkeley DB和FSFS,推荐选用FSFS格式,具体可以查阅参考资料了解二者的区别。

  创建版本库时,在终端运行如下命令:

  # 运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb

  $ svnadmin create --fs-type fsfs /etc/svn/repos 创建版本库,运行这个命令后,我们就可以看到一个版本库应有的文件

  更改版本库的访问权限

  $ sudo mkdir /home/svn

  $ cd /home/svn

  $ sudo mkdir myproject

  前面三条命令用于创建版本库目录,如果已经建立,就可以省略掉;后面三条用于修改权限

  $ sudo chown -R www-data myproject

  $ sudo chgrp -R subversion myproject

  $ sudo chmod -R g+rws myproject 这条命令允许用户对版本库进行读写操作,即可以更新,可以提交

3.2 Windows下创建版本库

可以使用TortoiseSVN图形化的完成这一步,在目录E:subversionrepository下"右键->TortoiseSVN->Create Repository here...“, 然后可以选择版本库模式, 使用默认即可, 然后就创建了一系列目录和文件。

  [Tips]如果下载的是setup.exe版本,安装程序安装后会自动设置系统变量,如果下载的是zip版就需要手动设置系统变量.

  也可以使用命令行来创建:

  C:\> svnadmin create F:\svn\

window下架设SVN服务器,及常见错误

博客分类:
web应用

SVNsubversionApacheC++C#

OS: Windows XP SP2
1) 安装Apache Server

2) 安装SVN

3) 配置邮件通知
1. 安装apache2.0.59,从这里可以下载到http://apache.justdn.org/httpd/b ... in32-x86-no_ssl.msi

安装过程中设置以下参数:

Network Domain: localhost

Server name: localhost

Administrator's Emai Address: windymax@126.com

安装到默认路径为C:\Program Files\Apache Group\Apache2
2. 安装subversion1.4.0,从这里下载http://www.iusesvn.com/bbs/download/svn-win32-1.4.0.zip

安装到默认路径为C:\Program Files\Subversion

默认安装后,在apache的配置文件中会自动加入以下两行。

LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so"

LoadModule authz_svn_module "C:/Program Files/Subversion/bin/mod_authz_svn.so"

把这行的注释去掉

LoadModule dav_fs_module modules/mod_dav_fs.so
拷贝C:\Program Files\Subversion\bin下的libdb44.dll到这个目录下C:\Program Files\Apache Group\Apache2\bin

打开apache的配置文件在末尾处加入以下参数:

<Location /svn>

DAV svn

SVNPath d:\svndata\test

AuthType Basic

AuthName "Windy SVN"

AuthUserFile d:\svndata\test\passwd

Require valid-user

</Location>

保存。(在这里权限文件我不多讲了,大家多做实验就明白了)
建立仓库

打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"

C:\Documents and Settings\windy> d: //进入D盘(因为我们要在D盘下创建仓库)

D:\> md svndata //创建一个名叫svndata的目录

D:\> c: //进入C盘

C:\Documents and Settings\windy> cd\ //退到C盘根目录

C:\Documents and Settings\windy> cd C:\Program Files\Subversion\bin //进入subversion/bin目录

C:\Program Files\Subversion\bin> svnadmin create d:\svndata\test //用svnadmin命令创建名为test的仓库(这条命令成功后,在test下会出现很多文件夹和文件)

C:\Program Files\Subversion\bin> cd C:\Program Files\Apache Group\Apache2\bin //进入apache\bin目录

C:\Program Files\Apache Group\Apache2\bin> htpasswd -cm d:\svndata\test\passwd user1 //用htpasswd命令创建第一个用户(user1),同时生成密码认证文件,c参数为create,m参数为MD5加密方式

New password: ******

Re-type new password: ******

Adding password for user user1 //加入用户成功

C:\Program Files\Apache Group\Apache2\bin> htpasswd -m d:\svndata\test\passwd user2 //用htpasswd命令创建第二个用户(user2),注意如果在这时加入c参数会覆盖掉之前创建的用户及文件。

New password: ******

Re-type new password: ******

Adding password for user user2 //加入用户成功
重新启动apache,进行测试。

用IE打开http://localhost/svn,这时应该可以看到

Revision 0: /

--------------------------------------------------------------------------------

Powered by Subversion version 1.4.0 (r21228). //说明我们已经配置成功了
---------------------------------------------------------------------------------------------------------

今天好不容易把SubVersion1.4+Apache2.0环境搭建完毕,这个环境的安装可没有网上传说的那么容易,在这个过程中遇到了不少的问题,以下就是我在安装过程中碰到的问题,我将一一的为大家解释解决的过程。

httpd.exe: Syntax error on line 117 of

C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf:

API module structure `dav_svn_module' in file

C:/Program Files/Apache Software Foundation/Apache2.2/modules/mod_dav_svn.so is garbled - perhaps this is not an Apache module DSO?

Note the errors or messages above, and press the <ESC> key to exit. 27...

以上这个问题是我在使用最新版本的Apache2.2版本时候出现的错误,出现这个错误的时候,我也是安装网上的教程来安装的,把该复制的SO,该复制的DLL都复制了,该加的httpd.conf也加了可是无论我怎么重复这个过程,就是没有安装成功,具体参考的文件为一个《Subversion for Windows 安裝指南(繁体)》的文章。最终在查找了大量的e文后发现,是Apache最新版本的问题,所以对最新版本的期望最终放弃。

[Wed Oct 11 15:24:00 2006] [error] (OS 2)系统找不到指定的文件。 : No installed service named "Apache2".

Note the errors or messages above, and press the <ESC> key to exit. 27...

这个错误的是由于在安装的过程中,我设置的管理员的Email地址没有正确的被设置引起的,这个问题的解决也花了很长的时间,一开始并不知道为什么会引起这样的错误,修改httpd.conf,修改的又是上面安装的最新版本的遗留的(我就不明白同样是Apache,为什么2.0和2.2安装出来的路径都是不一致的呢?一个是C:\Program Files\Apache Group\Apache2而另一个是C:\Program Files\Apache Software Foundation\Apache2.2真是奇怪了)。最终找到正确的httpd.conf并把ServerAdmin的EMAIL设置正确后就可以了。

Syntax error on line 198 of C:/Program Files/Apache Group/Apache2/conf/httpd.conf:

ServerAdmin takes one argument, The email address of the server administrator

这是就是上面的问题的具体表现。

Syntax error on line 923 of C:/Program Files/Apache Group/Apache2/conf/httpd.conf:

Invalid command 'DAV', perhaps mis-spelled or defined by a module not included in the server configuration

Note the errors or messages above, and press the <ESC> key to exit. 26...

这个问题的出现更是可恶,我按教程来的可是就是没人说这个DAV模块需要怎么加载啊,实验了好久,终于把问题解决了,解决的办法就是LoadModule dav_module modules/mod_dav.so前面的#去掉。

下面给出一个比较正确的安装过程的连接,其实问题出现不要害怕,只要多google一下,多有心看看输出就能搞定了!

参考资料:
http://blog.chinaunix.net/u1/42969/showart_342954.html
http://blog.csdn.net/ginger547/archive/2006/10/11/1330356.aspx

分享到:





http://www.sqlite.org/sqlite-autoconf-3071100.tar.gz



http://sae.sina.com.cn/?m=devcenter&catId=212



SVN入门及配置使用

2009-10-23 来源:网络

SVN,即Subversion,是一个自由开源的版本控制系统,可以将数据恢复到早期版本,或者检查数据修改的历史,这些数据可以是源代码,也可以是其他类型的文件。

在SVN出现之前,CVS是开源世界版本控制工具的事实标准,然而CVS存在一些固有的缺陷,并且修复这些缺陷需要耗费很大的精力,因此,SVN的发起者Brian Behlendorf和CollabNet决定重新编写一个版本控制系统,保留CVS的基本思想,但要修正其中错误和不合理的特性。于是,SVN作为CVS的继任者出现了。SVN的设计者们力图通过两方面的努力赢得CVS用户的青睐:保持开源系统的设计以及界面风格与CVS尽可能类似,同时尽力弥补CVS许多显著的缺陷。这些努力的结果使得从CVS迁移到SVN不需要作出重大的变革,因此越来越多的人选择了SVN。
http://svnbook.red-bean.com
http://www.subversion.org.cn

目录

一、客户端的使用

 1.1 Linux系统下一般使用(Ubuntu)

 1.2 Windows系统下一般使用

 1.3 Linux下使用SVN+ssh认证(未找到相关资料@_@)

 1.4 Windows下使用SVN+ssh认证

二、服务器端的配置

 2.1 Linux下的svnserve配置

 2.2 Windows下的svnserve配置

 2.3 Linux下的svnserve+ssh配置

 2.4 Windows下的svnserve+ssh配置(需使用Cygwin,略)

 2.5 Linux下基于APache的SVN服务器配置

 2.6 Windows下基于APache的SVN服务器配置

三、建立版本库

 3.1 Linux下创建版本库

 3.2 Windows下创建版本库

大多数人都是从客户端开始使用SVN,以下先介绍客户端的使用。假设已经假设好了SVN服务器,其文件夹地址为http://domain/svn/trunk/myproject,用户名为test,密码为test。(如果服务器端配置的是SVN,则使用svn://开头的URL访问;如果服务器端配置的是SVN+SSH,则使用svn+ssh开头的URL访问)

一、客户端的使用

1.1 Linux(Ubuntu)系统下一般使用

1)首先需要安装svn客户端,ubuntu下使用$sudo apt-get install subversion(其他请baigoogledu,余同)

2)checkeout命令:第一次使用时使用checkout命令,把服务器的目录拷贝到本地的当前目录下,同时会建立一个隐藏文件夹记录版本信息:

  [工作目录]$svn checkout "http://domain/svn/trunk/myproject" --username test

然后输入密码

3)svn update命令:获取服务器上的最新版本

  [工作目录]$svn update(除了第一次要加url和用户名和密码,之后系统会记住)

4)svn add命令:要把非版本控制的本地文件添加到版本控制:

  [工作目录]$svn add hello.c

5)svn commit命令:把本地文件上传到服务器

[工作目录]$svn commit(如果有新的文件,要首先svn add)

1.2 Windows系统下一般使用

1)安装客户端:http://tortoisesvn.net/downloads

2)新建一个文件夹(工作目录),右击选择checkout,填写URL和用户名密码

3)工作目录右键update

4)工作目录右键add

5)工作目录右键commit

1.3 Linux下使用SVN+ssh认证(未找到相关资料@_@)

1.4 Windows下使用SVN+ssh认证

(参考ubuntu下架设svn服务器及在windows建立svn+ssh客户

1.4.0 安装TortoiseSVN、Puttygen、Pageant

  http://sourceforge.net/projects/tortoisesvn

  http://www.chiark.greenend.org.uk/~sgtatham/putty/

1.4.1 转换私钥格式

 1)将Linux下的文件<username>key拷贝到windows下,运行Puttygen;

2)选择菜单conversions->Import Key;选择文件<username>key,提示"Enter passphrase for key",输入创建公私钥对示使用的passphrase关键字;

3)选择Parameters为“SSH-2 DSA”或“SSH-2 RSA”->Save private key->保存文件名为username>key.ppk。

1.4.2 建立TortoiseSVN与Pageant的关联,并将私钥加入Pageant:

1)鼠标右键选择TortoiseSVN->Settings->Network->SSH client,输入:

 C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe

2)鼠标右键选择TortoiseSVN->RepoBrowser 输入URL:

  svn+ssh://<username>@<SvnServiceIP>/usr/local/svn/trunk

3)运行Pageant,右键点击屏幕右下角的图标-〉Add Key,将私钥文件<username>key.ppk加入。

——如果不想缓存ssh密码,则第8、9步不需要,只保留第二步,但每次check out、check in中每进入一个文件夹都要输入两次密码,烦死你:)

二、服务器端的配置

Web服务器部署可以有三种选择,配置由简单到复杂排列为

·svnserve

·svnserve over SSH

·Apache+mod_dav_svn模块

下面从最简单的入手,介绍svnserve。

[更新]Windows下服务器端的配置可以使用VisualSVN Server进行傻瓜化安装。

官方网站:http://www.visualsvn.com/

参考链接:VisualSVN系列介绍(有详细的安装过程介绍,这里就不转述了)

2.1&2.2 配置svnserve

svnserve是一个轻型的服务器,可以同客户端通过在TCP/IP基础上的自定义有状态协议通讯,客户端通过使用开头为svn://或者svn+ssh://svnserve的URL来访问一个svnserve服务器。

2.1 Linux下的svnserve配置

2.1.0 同样地,使用命令$sudo apt-get install subversion

2.1.1 svnserve作为独立守护进程,监听请求

  $svnserve -d

  $ #svnserve is now running, listening on port 3690

  ——可以使用--listen-port=[端口号]来指定端口,或者--listen-host=[主机名]来指定主机名

  假定已经建立一个版本库位于/usr/local/repositories/project路径(版本库的建立稍后提及), 此时客户端可以使用svn://[主机]/usr/local/repositories/project来进行访问

  ——可以使用-r选项来限制只输出指定路径下的版本库,从而使客户端访问更为简洁:

  $svnserve -d -r /usr/local/repositories

  则客户端只要使用svn://[主机]/project就可以访问

2.1.2 通过inetd使用svnserve

  $svnserve -i

  ——此时svnserve会尝试使用自定义协议通过stdin和stdout来与subversion客户端通话,默认端口为3690。可以在/etc/services添加如下几行:

  svn 3690/tcp #subversion

  svn 3690/udp #subversion

  ——如果是使用经典的类Unix的inetd守护进程,可以在/etc/inetd.conf添加如下行,则如果有客户连接来到端口3690,inetd会产生一个svnserve进程来做服务

  svn stream tcp nowait svnowner /usr/bin/svnserve svnserve -i

2.1.3 设置svnserve的内置认证

编辑版本库目录的conf/svnserve.conf文件:

 1)设置匿名访问

  [general]

  anon-access = none #无权限

  anon-access = read #只读

  anon-access = write #打开匿名的写访问,但这样很危险,不能控制谁来修改版本库

 2)使用用户和密码

 2.1)定义保存用户名和密码的文件和一个认证域

  [general]

  password-db = <userfile> #指出保存用户和密码列表的文件,可以是绝对或相对路径

  realm = example realm #定义认证域

  anon-access = read

  auth-access = write

 2.2)然后在userfile文件中指明用户名和密码:(格式为“用户名=密码”)

  [users]

  harry = foopassword

  sall = barpassword

2.2 Windows下的svnserve配置

2.2.0 安装svnserve

1)从http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91得到最新版本的Subversion

(如果之前已经安装了subversion,svnserve已经在服务器上运行,需要先停止服务)

2)安装subversion,然后进入subversion的安装目录,找到bin目录下的文件svnserve.exe,int13_svn.dll,libapr.dll,libapriconv.dll,libapriutil.dll,libdb*.dll,libeay32.dll和ssleay32.dll,将它们复制到服务器目录下(如C:\svnserve)。

2.2.1 以守护方式运行svnserve

在命令行窗口输入svnserve.exe --daemon,则svnserve将会在端口3690等待请求,--daemon选项告诉svnserve以守护进程方式运行,这样在手动终止之前不会退出。这种方式的不便之处是需要保持命令行窗口不关闭。

2.2.2 svnserve作为windows服务

svnserve作为windows服务时,在后台运行,可以在启动时自动执行,并且可以使用同其他windows服务一致的管理界面启动和停止服务。

需要使用命令行工具sc.exe定义新的服务(create svnserve),在windows启动时指明svnserve的调用:

  C:\>sc create svnserve

   binpath= "\"c:\svnserve\svnserve.exe\" --service --root c:\repos"

   displayname= "Subversion"

   depend= tcpip

   start= auto

  ——注意为了回避目录名中的空格等字符,将整个binpath值放在双引号中;另外,sc 的命令行很特殊。在 key= value 对中,key 与 = 之间不能有空格,但是在 value 之前,必须有空格。

定义了服务之后,就可以使用GUI工具(如服务管理面板)进行停止、启动和查询,也可以通过命令行的方式进行:

  C:\>net stop svn

  C:\>net start svn

  C:\>sc delete svn(需要确定先停止了服务)

2.2.3 设置svnserve的内置认证

同上Linux配置文件即可。

2.3&2.4 配置svnserve+ssh

2.3 Linux下的svnserve+ssh配置

2.3.0 介绍与安装ssh

  通过此方法,svnserve不会作为守护进程启动,而是SSH来启动svnserve,以SSH授权用户进行。

  $sudo apt-get install ssh

2.3.1 创建帐户

  $sudo adduser <username> #为参与项目开发的成员建立用户帐户

  $sudo addgroup <groupname> #建立用户组

  $sudo addgroup <username> <groupname> #将用户帐户添加进用户组

2.3.2 为成员生成密钥对

  首先必须切换为<username>的用户登陆Linux:

  $sudo <username>

  $(提示输入密码)

  $cd ~/

  $whoami

  <username>$ssh-kegen -b 1024 -t dsa -N <passphrase> -f <filename> #使用DSA加密,也可以改为RSA加密

  ——这时产生两个文件:私钥<username>key和公钥<username>key.pub

  然后创建目录/home/<username>/.ssh,把公钥拷贝到该目录下:

  $cp <username>key.pub /home/<username>/.ssh/authrized_keys #文件名必须为authorized_keys

2.4 Windows下的svnserve+ssh配置

需要使用Cygwin来配置ssh,此处略,详情可参考http://tortoisesvn.net/node/156

2.5&2.6 基于Apache服务器的SVN配置

概述

Apache的http服务器是一个subversion可以利用的“重型”网络服务器,通过一个自定义模块,httpd可以让SVN版本库通过WebDAV/DeltaV协议在客户端前可见。可以将浏览器指向版本库的URL,无需安装SVN客户端就可以浏览内容。

基于Apache的SVN需要两个包的四个部分:Apache httpd2.0及其中包含的mod_dav DAV模块,Subversion及与之一起发布的mod_dav_svn模块。有了上述组件之后,配置步骤一般如下

 1)配置好http2.0,并且使用mod_dav启动

 2)为mod_dav安装mod_dav_svn插件

 3)配置httpd.conf来发布版本库

2.5 Linux下基于APache的SVN服务器配置

(参考http://www.123shang.cn/blog/?p=53

(参考“ubuntu下svn+apache版本管理服务器配置”)

2.5.1 安装aphache

  $sudo apt-get install apache2 #安装apache

  $sudo apt-get install libapache2-svn #安装相关组件

  $sudo apt-get install subversion #安装svn

  安装完毕后启动apache

  $/usr/local/apache/bin/apachectl –k start

  ——用浏览器查看http://localhost/,得到it works,说明apache已经配置成功了。

2.5.2 创建版本库(见第三节)

2.5.3 添加用户并设置密码文件

版本库的密码文件,一般命名为PasswdFile,由用户通过命令创建,里面保存授权用户的用户名和MD5加密后的密码。创建密码文件,密码文件保存在版本库文件目录下,在终端通过下面的命令创建密码文件:

  $htpasswd -c /etc/svn/passwordfile username

   passwordfile 密码文件名称,可以由用户自行命名

   username 你希望添加的用户名,比如zhangsan,lisi,wangwu

   -c 用来创建密码文件

  按提示输入密码,添加成功后会提示add user username,然后可以再继续添加第二个用户。

  $htpasswd /etc/svn/passwordfile seconduser

2.5.4 httpd.conf文件修改

  conf文件正常安装的话在etc/apache2/ 目录下,双击打开进行编辑,添加以下内容:

  LoadModule dav_svn_module modules/mod_dav_svn.so 加载mod_dav_svn模块

  LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so 加载 mod_anthz.svn模块

  <Location /vcard>

   DAV svn

   SVNPath /home/bb/svn/vcard/ 指明版本库的路径

   AuthType Basic 认证类型为基本认证

   AuthName "SVN repos" 认证名称,将在IE界面弹出一个对话框,其标题就是SVN repos

   AuthUserFile /home/bb/svn/vcard/VcardPasswdFile 加载密码文件,访问版本库用户的文件,用apache 的htpasswd命令生成

   # AuthzSVNAcessFile //home/bb/svn//vcard/accesspolicy 访问版本库权限的文件

   # satisfy Any

   Require valid-user 要求验证用户,即不能匿名访问;如果没有这个语句,则只能第一个用户可以访问新建库

  </Location>

  保存文件退出,重新启动apache

  # /usr/local/apache/bin/apachectl –k restart

  测试:

  $svn checkout http://localhost/svn

2.6 Windows下基于APache的SVN服务器配置

2.6.1 下载安装Apache

  APache:http://httpd.apache.org/download.cgi

  ——如果你将Apache安装成一个服务,它将以本地system帐户来运行。为Apache创建一个单独的用户来运行它将会更安全一些。

  ——请确保运行Apache的用户有版本库的完全访问权限(右键版本库目录->属性->安全)。要不然,用户将无法提交他们的更改。

  ——就算Apache以本机system来运行,你也要设置它能完全读写版本库目录。

  ——如果没有为Apache配置这个许可,用户将会得到"禁止访问"的错误信息,在Apache的错误日志中表现为错误500。

2.6.2 配置Subversion

使用Windwos资源管理器,来到Subversion的安装目录(通常是c:\program files\Subversion),找到文件httpd/mod_dav_svn.so和mod_authz_svn.so,复制这些文件到Apache的模块目录(通常是c:\program file\apache group\apache2\modules)。

2.6.3 配置httpd.conf文件

  路径通常为c:\program files\apache group\apache2\conf\httd.conf),修改以下内容:

  去掉以下两行的注释号“#”:

  #LoadModule dav_fs_module modules/mod_dav_fs.so

  #LoadModule dav_module modules/mod_dav.so

  在LoadModule节的最后添加以下两行:

  LoadModule dav_svn_module modules/mod_dav_svn.so

  LoadModule authz_svn_module modules/mod_authz_svn.so

  文件末尾添加以下行,让Apache知道哪个URL将被Subversion使用:

  <Location /svn>

   DAV svn

   SVNParentPath D:\SVN

   AuthType Basic

   AuthName "Subversion repositories"

   AuthUserFile D:\passwd

   #AuthzSVNAccessFile D:\svnaccessfile

   Require valid-user

  </Location>

  ——这样配置表示:你所有的版本库将位于D:\SVN目录下,要访问你的版本库可以使用这样的URL:http://MyServer/svn/,访问权限将由passwd文件中的用户名/密码来限制。

  要创建passwd文件,可以打开命令行,将当前目录切换到apache2目录,输入命令:

  c:\program files\apache group\apache2 >bin\htpasswd -c passwd <username>

  重启Apache服务。

  使用浏览器测试。

三、建立版本库

在前面的服务器配置上我们通常假设已经建立了版本库,这是为了避免在每种配置中重复赘述这种操作,因此把它独立出来讲。

版本库创建完毕后会在目录下生成若干个文件和文件夹:

   dav目录是提供给Apache与mod_dav_svn使用的目录,让它们存储内部数据;

   db目录就是所有版本控制的数据文件;hooks目录放置hook脚本文件的目录;

   locks用来放置Subversion文件库锁定数据的目录,用来追踪存取文件库的客户端;

   format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。

3.1 Linux下创建版本库

  版本库有两种数据存储格式:Berkeley DB和FSFS,推荐选用FSFS格式,具体可以查阅参考资料了解二者的区别。

  创建版本库时,在终端运行如下命令:

  # 运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb

  $ svnadmin create --fs-type fsfs /etc/svn/repos 创建版本库,运行这个命令后,我们就可以看到一个版本库应有的文件

  更改版本库的访问权限

  $ sudo mkdir /home/svn

  $ cd /home/svn

  $ sudo mkdir myproject

  前面三条命令用于创建版本库目录,如果已经建立,就可以省略掉;后面三条用于修改权限

  $ sudo chown -R www-data myproject

  $ sudo chgrp -R subversion myproject

  $ sudo chmod -R g+rws myproject 这条命令允许用户对版本库进行读写操作,即可以更新,可以提交

3.2 Windows下创建版本库

可以使用TortoiseSVN图形化的完成这一步,在目录E:subversionrepository下"右键->TortoiseSVN->Create Repository here...“, 然后可以选择版本库模式, 使用默认即可, 然后就创建了一系列目录和文件。

  [Tips]如果下载的是setup.exe版本,安装程序安装后会自动设置系统变量,如果下载的是zip版就需要手动设置系统变量.

  也可以使用命令行来创建:

  C:\> svnadmin create F:\svn\

SAE自2011-7-10日起,将全面支持SVN代码部署,用户不仅可以通过任何SVN客户端部署代码,而且SAE现有的代码部署方式也已经对接应用的SVN仓库,即使不使用SVN客户端部署代码,也保证了代码版本。

如:通过桌面SDK或在线SDK代码编辑器(http://sdk.tools.sinaapp.com)等方式对代码的修改、部署等操作也会像svn commit一样,产生一个新版本。通过SVN客户端svn update可以获取最近的更新,也可以通过svn客户端回滚代码。

SVN仓库地址: https://svn.sinaapp.com/your_app_name (您可以通过此地址直接访问)

如:应用域名是 test.sinaapp.com,那么SVN仓库地址是:https://svn.sinaapp.com/test

SVN用户名: SAE安全邮箱

SVN密码: SAE安全密码

注:SVN用户名和密码为安全邮箱和安全密码,不是微博账号和微博密码!

与标准SVN的区别

为了保持与SAE兼容,使用svn方式部署代码到SAE有如下限制:

1. 文件名或目录名不允许含有以下字符:",*,?,<,>,|,另外文件或文件名的开始与结束也不允许有空格。

2. 上传单个文件大小不超过20M

3. 单个目录下的文 件个数不能超过2000个

4. 每个应用代码总大小不超过100M

5. 单个版本代码总大小不超过50M

6. appname目录下只允许存在10个以内的版本,并且版本号必须为正整数。(也就是说appname下面只允许出现10个以内的正整数目录名,不允许有非目录的存在)

代码部署原理

SAE代码部署分为三步:

创建应用

登陆SAE在线管理平台,“创建新应用”(http://sae.sina.com.cn/?m=myapp&a=create)时,如果创建成功,系统会自动为该应用创建一个SVN仓库。假设新创建的应用名为newapp,那么仓库地址为:
https://svn.sinaapp.com/newapp/
  

此时,可以通过本地SVN客户端检出(checkout)该应用的本地工作目录。

部署代码

SAE提供了不同的代码部署方式,可以分为两类:

  

一是通过SVN客户端部署,这是SAE推荐的代码部署方法。

另一个是通过非SVN客户端部署,即SAE之前提供的代码部署方式,如桌面SDK(winodws, linux)、在线SDK(即代

码在线编辑器)和推荐应用安装。

  

这两类代码部署方法都会更新应用的SVN仓库版本,但必须注意的是非SVN客户端部署方式无法提供版本管理

功能,只能看到最新版本的代码,也无法回滚代码。

因此,强烈建议仅使用SVN客户端方式部署代码,如果同时使用非SVN客户端方式部署,为避免代码版本冲

突,请及时在本地SVN工作目录下执行svn update操作,保证本地工作目录与线上代码保持一致。

验证

  

代码更新后,通过svn update或直接通过浏览器访问应用查看代码是否已经更新到线上。



相关资源

TortoiseSVN下载:http://tortoisesvn.net/downloads.html

Subversion中文站: http://www.subversion.org.cn/

Windows SVN

使用TortoiseSVN客户端

在Windows下推荐使用乌龟(Tortoise)SVN客户端。 TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。文件保存在中央版本库(即SAE中央SVN仓库),除了能记住文件和目录的每次修改以 外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将 Subversion 和版本控制系统看作一种“时间机器”。

下载安装

TortoiseSVN下载:http://tortoisesvn.net/downloads.html

又不是在linux下,安装就不多说了 :)

下面详细介绍使用TortoiseSVN向SAE部署代码。

创建本地工作目录

第一步,如图1,创建一个新文件夹作为本地工作目录(Working directory),可以使用应用名为文件夹名。如,为我的应用devcenter创建本地工作目录。



第二步,从SAE的SVN仓库检出(checkout)一个应用的全部版本代码,如图2,右键-->点击“SVN Checkout”



在弹出页面中填写仓库路径即可,这里是:https://svn.sinaapp.com/devcenter/,其它默认参数即可,如图3:



Reversion处,“HEAD revision”是指最新版,也可以指定Revision为任意一个版本。

点击“OK”,出现下载界面,如图4:



如果一切顺利,devcenter应用所有版本代码将会全部出现在刚刚创建的devcenter文件夹下,如图5:



修改代码

在本地使用你喜欢的编辑器,编辑任意文件,保存后该文件图标将会出现红色感叹号,如图6所示:



看,刚刚修改过的index.php变色了。下面需要提交(commit)最近的更新。在index.php文件上击右键,出现菜单 ,选择“SVN commit”,如图7:



然后填写关于本次更新的日志(log message),这是必填项,否则commit会失败。如图8:



当您看到如图9所示,表明刚才的修改已经成功提交,并且前该devcenter项目的SVN版本号加1,变成30.



新增文件/文件夹

在 SVN工作目录下,对于文件修改,完成后只需要commit就ok了,但对于新增文件,或者从其它目录复制进来的文件或文件夹,需要在commit之前需 要做一步add操作,即将文件或文件夹添加到svn工作目录中来,否则SVN客户端不认它。具体操作很简单,如图10:



然后再如图7所示,右键commit即可。

更多Tortoise SVN使用帮助,请参阅:http://www.subversion.org.cn/tsvndoc/

Notepad++集成svn插件

Notepad++ 是一款Windows环境下很受欢迎的免费开源的代码编辑器,有很丰富的第三方插件。

下面介绍Notepad++的svn插件的安装及使用。

如图12,点击Plugin --> Plugin Manager --> Show Plugin Manager



打开后,在“Available”页找到“Subversion”,然后点击“Install”,如图13所示:



安装成功后会在Plugins菜单下出现"Subversion"子菜单。

打开之前checkout下来的任一文件,如devcenter/1/index.php,编辑完成后,点击Plugins --> Subversion --> Commit File(或使用快捷键Ctrl+Alt+A)

出现熟悉的一页,如图14所示:



对,这就是乌龟SVN的Commit页面,输入Log Message,点击“OK”即可提交。

使用UltraEdit Studio部署

UltraEdit Studio(注意不是UltraEdit,UltraEdit不能与SVN整合)配置稍微复杂些。

第一步,SVN仓库账号设置,如图15所示:



然后填写仓库信息,如图16所示:



完成后,创建Project,如图17所示:



填写project名b.prj后,出现如图18所示"Project Settings",点击“Add Folder”,出现“NewFolder”,将"Group"前的勾去掉,然后点击“Browse”,在“Browse for Folder”页找到之前checkout出现的本地工作目录。



点击“OK”后出现提示,如图19所示:



表明UEStudio自动识别出了选择的代码目录是一个SVN工作目录,并询问是否整合,点击“Yes”,出现如图20所示:



大功告成,"Close"之后即可以编辑代码,并随时commit修改。如图21所示:



使用EditPlus部署

EditPlus依赖于Tortoise SVN(TSVN),必须先安装。

使用最简单,见图22所示:



当编辑SVN工作目录里的文件时,File --> TSVN即出现相应可操作的菜单。

Linux/Mac
SVN

仓库地址

https://svn.sinaapp.com/appname/

为了传输安全,SAE要求统一使用https方式部署代码;

创建仓库

登陆SAE在线管理平台(http://sae.sina.com.cn),创建应用,成功后您即可以检出该应用代码。

例如,您刚刚创建了应用newapp,在本地执行:

svn checkout https://svn.sinaapp.com/newapp
第一次checkout时需要验证,用户名/密码为您的SAE安全邮箱和安全密码(非微博登陆账号密码)。

创建版本

假如,为newapp应用创建版本1

目前提供两种方式:

使用svn客户端

svn checkout https://svn.sinaapp.com/newapp #此处需要认证,用户名/密码为您的SAE安全邮箱和安全密码

cd newapp

mkdir 1

svn add 1

svn commit -m"add version 1 for newapp"

使用在线管理平台

在SAE在线管理平台“代码管理”处创建版本即可。但为了避免与本地仓库冲突,务必在本地工作目录下执行:svn update ,将最近的更新拉到本地来。

更新代码

更新代码前本地必须有一个工作目录(Working Directory),创建工作目录很简单,只需要检出(checkout)代码仓库即可。如,对于已经创建好的应用newapp,在本地执行:

svn checkout https://svn.sinaapp.com/newapp
输入安全账号和安全密码,即完成本地工作目录的创建。

上传代码

需要增加某个文件或文件夹,如部署wordpress到版本1。

svn checkout https://svn.sinaapp.com/newapp
cd newapp/1

cp -rf /path/to/wordpress/* ./

svn add ./*

svn commit -m"add wordpress"

修改代码

假如需要修改newapp应用版本1根目录下某个文件,如index.php,完整的操作流程如下:

svn checkout https://svn.sinaapp.com/newapp #如果已经checkout过了,不需要重新checkout。

cd newapp/1

vim index.php #这里编辑代码

svn commit -m "edit index.php"

配置应用(appconfig)

在应用版本根目录下,如newapp/1下,创建文件config.yaml(语法参见:http://sae.sina.com.cn/?m=devcenter&catId=193),然后通过svn commit即可完成应用配置。

如,现在需要更新应用newapp的默认版本3的appconfig,操作如下:

svn checkout https://svn.sinaapp.com/newapp #如果已经checkout过了,不需要重新checkout。

cd newapp/3

vim config.yaml #这里按照config.yaml语法编辑即可。

svn commit -m "update config.yaml"

注意:config.yaml不会被部署到用户的代码目录,但会被存储在服务端SVN仓库中。因此下次可以被checkout出来,但不会被用户访问到。

在线编辑代码

SVN可以在线阅读应用代码,地址即SVN仓库地址:https://svn.sinaapp.com/appname/

将appname换成自己的应用名即可登陆查看代码。

在线编辑器 可在管理面板>>代码管理>>编辑代码 打开

SVN for SAE的限制条件

为了保持与SAE兼容,使用svn方式部署代码到SAE有如下限制:

0. 文件名或目录名不允许含有以下字符:",*,?,<,>,|,另外文件或文件名的开始与结束也不允许有空格。

1. 上传单个文件大小不超过4M

2. 单个目录下的文 件个数不能超过400个

3. 每个应用代码总大小不超过100M

4. 单个版本代码总大小不超过50M

5. appname目录下只允许存在10个以内的版本,并且版本号必须为正整数。(也就是说appname下面只允许出现10个以内的正整数目录名,不允许有非目录的存在)

常见错误说明及解决办法

错误提示错误原因解决方法
The change log need some words(not null)提交时没有添加log message提交时加上log message即可
The log message is a pathname (was -F intended?); use '--force-log' to overridelog message 与路径名称相同修改log message
Error file xxx in not allowed in root directory!working copy的根目录下不允许有名为xxx的文件(只能是正整数版本目录) 删除该文件或者移到到版本目录下
directory xxx/ is not allowed in root directory! Only positive integer dirs are allowed!
working copy的根目录下不允许有名为xxx的目录(只能是正整数版本目录) 删除该目录或者移到版本目录下
Too many versions!(less than 10 is permited)版本目录多于10个,最多不超过10个删除刚刚创建的版本目录即可。
Too many files: XXX (less than 2000 is allowed).XXX目录下文件的数量超过2000删除XXX目录下的文件,使其总数降至2000以下
dir APPNAME/dir(size:xxxx) is too large less than xxx该应用下代码(不包括.svn目录)总大小超过100M,或某个版本总大小超过50M删除不必要的代码再尝试提交
File XXX is too large!(less than 4M)单个文件大小超过4M删除重试
类似Repository UUID '305daf1b-94be-48ee-a4b9-f4bcd36320de' doesn't match expected UUID '44e2f7a2-1b69-4710-974a-b6edef0fdc12'服务器端仓库被删除重建,客户端对原仓库进行操作导致。重新checkout出一份代码即可
add vers xxx faild文件部署失败内部原因,请联系saesupport@sina.cn。

常用svn命令说明

1. 从SVN仓库中检索出代码到工作拷贝:

# svn checkout https://svn.sinaapp.com/appname [workcopy]

其中workcopy是可选的,如果不写workcopy,SVN会默认将appname做为workcopy。

如果只检索某个版本:

# svn checkout https://svn.sinaapp.com/appname/appversion [workcopy]

只检索某个版本的某个目录:

# svn checkout https://svn.sinaapp.com/appname/appversion/folder [workcopy]

2. 向SVN仓库提交代码:

# svn commit -m "here is message"

3. 将本地文件添加到工作拷贝:

# svn add something

注:如果something为文件,svn会将这个文件添加到工作拷贝;如果something是目录,svn会将目录及里面的文件全添加到工作拷贝。something也可以是通配符*,这样会忽略已经添加过的文件。

4. 从工作拷贝中删除一个文件:

# svn delete something

注:如果something为文件,svn会将这个文件从工作拷贝中删除;如果something是目录,svn会将目录及里面的文件全部从工作拷贝中删除。

5. 直接从SVN仓库中删除文件:

# svn delete -m "delete something" https://svn.sinaapp.com/appname/appversion/something
注:可以从SVN仓库中直接删除单个文件或单个目录甚至某个版本。

6. 将一个本地项目导入到SVN仓库:

导入应用的某个版本:

# svn import localdir https://svn.sinaapp.com/appname/appversion
注:要确保目前应用的appversion不冲突。

7. 查看工作拷贝中的文件或目录状态:

# svn status [something]

8. 更新自己的工作拷贝:

# svn update

注:从SVN仓库下载最新版本,此命令会导致本地没有提交的更改丢失,建议使用此命令前先查看一下本地拷贝状态(svn status)。

9. 取消对代码修改

取消对代码的修改分为两种情况。

第一种情况:改动没有被提交(commit)。

这种情况下,使用svn revert就能取消之前的修改。

svn revert用法如下:

# svn revert [-R] something

其中something可以是(目录或文件的)相对路径也可以是绝对路径。

当something为单个文件时,直接svn revert something就行了;当something为目录时,需要加上参数-R(Recursive,递归),否则只会将something这个目录的改动。

在这种情况下也可以使用svn update命令来取消对之前的修改,但不建议使用。因为svn update会去连接仓库服务器,耗费时间。

注意:svn revert本身有固有的危险,因为它的目的是放弃未提交的修改。一旦你选择了恢复,Subversion没有方法找回未提交的修改。

第二种情况:改动已经被提交(commit)。这种情况下,用svn merge命令来进行回滚。

回滚的操作过程如下:

1). 保证我们拿到的是最新代码:

svn update

假设最新版本号是28。

2). 然后找出要回滚的确切版本号:

svn log [something]

假设根据svn log日志查出要回滚的版本号是25,此处的something可以是文件、目录或整个项目

如果想要更详细的了解情况,可以使用svn diff -r 28:25 [something]

3). 回滚到版本号25:

svn merge -r 28:25 something

为了保险起见,再次确认回滚的结果:

svn diff [something]

发现正确无误,提交。

4). 提交回滚:

svn commit -m "Revert revision from r28 to r25,because of ..."

提交后版本变成了29。

将以上操作总结为三条如下:

a. svn update,svn log,找到最新版本(latest revision)

b. 找到自己想要回滚的版本号(rollbak revision)

c. 用svn merge来回滚: svn merge -r : something

10. 查看SVN仓库日志信息:

# svn log [workcopy]

查看所有本地的历史日志,如果workcopy为某文件,那么就是查看某个文件的日志信息。

查看SVN仓库所有文件的日志信息:

# svn log https://svn.sinaapp.com/appname/
这个命令会查看所有修改过的日志。

注:SAE提供的SVN服务完全支持标准SVN的所有命令,更详细的使用说明请查阅SVN官方帮助文档。

SVN命令帮助文档:http://www.subversion.org.cn/svnbook/1.4/svn.ref.html

中文完全帮助文档:http://svnbook.red-bean.com/index.zh.html

Linux系统RedHat9.0 上配置SVN+APACHE服务参考

博客分类:
svn&cvs

SVNApacheLinux配置管理subversion

(查看了好多网页,加上自己不断出错不断的解决,终于解决了在linux系统上配置svn服务的问题

现将我参考的资料加上自己安装时遇到的问题等总结一下,供大家参考)

一、 准备好相关的几个安装包

我下的是最新的

Apr : apr-1.3.8.tar.gz 和 apr-util-1.3.9.tar.gz

Apache : httpd-2.2.13.tar.gz

Subversion: 我不知道apr和apache最新的能和哪个subversion搭配

就在官网上找一个发布时间跟apr、apache差不多的版本(放心我安装成功了,你可大胆的跟我做)

subversion-1.5.6.tar.gz 和 subversion-deps-1.5.6tar.gz

二、 安装和配置步骤:

1.安装apr-1.3.8.tar.gz

tar –zvxf apr-1.3.8.tar.gz (解压)

cd apr-1.3.8 (进入apr…所在的目录)

./configure /* (安装不指定路径时 默认安装到/usr/local/apr)

make ; make install (安装)

2. 安装 apr-util-1.3.9.tar.gz

tar –zvxf apr-util-1.3.9.tar.gz

cd apr-util-1.3.9

./configure - -with-apr=/usr/local/apr

make ; make install

3. 安装httpd-2.2.13.tar.gz

cd /usr/local

mkdir apache

(不手动建的话,等哈很麻烦的)

回到刚才的目录

tar –zvxf httpd-2.2.13.tar.gz

cd httpd-2.2.13

./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --enable-modules=so --enable-dav

--enable-maintainer-mode --enable-rewrite

make ; make install

安装之后重新启动apache服务

/usr/local/apache/bin/apachectl –k start / restart

用浏览器查看http://192.168.18.110(Linux系统IP地址),得到it works,说明apache已经配置成功了。

4.安装subversion

tar –zvxf subversion-1.5.6.tar.gz

tar –zvxf subversion-deps-1.5.6.tar.gz (这两个自动解压成一个包 subversion-1.5.6)

cd subversion-1.5.6

(# 如果linux系统上已经装有apr或者apr-util ,移除 apr存在的版本,subversion解压后的文件里有apr相关的文件,需要移除)

rm –rf apr

rm -rf apr-util

说明:SVN 依赖的APR版本要正确。如果Apache为2.0.x,对应的APR版本应为0.9.x;Apache为2.2.x,对应的APR版本应为1.2.x。 由于subversion-deps包里的APR是0.9.x的,因此编译svn时要删除从deps里解压出来的apr, apr-util,改而使用apache 2.2里提供的。(这里指定为开始安装的apr目录),这一点知识非常重要,自己之前多次安装都没成功,现在才明白是在这一点被卡住了,但最终还是被我解 决了, 学习,和不断实践 会使你不断成长!

(先跑去建/usr/local/svn)

cd /usr/local

mkdir svn

(不知道为什么我不手动建目录的话,它不给我自动建)

cd cd subversion-1.5.6

./configure

--prefix=/usr/local/svn

--with-apxs=/usr/local/apache/bin/apxs

--with-apr=/usr/local/apr/bin/apr-1-config

--with-apr-util=/usr/local/apr/bin/apu-1-config

--with-ssl

--with-zlib

--enable-maintainer-mode

make

make install

确定一下svn有没有安装成功

/usr/local/svn/bin/svnserve --version

会看到相关版本信息!

(如果:

执行了configure,make后

make install时出错:

/bin/sh /usr/local/httpd-2.2.3/srclib/apr/libtool --mode=install /usr/bin/install -c -m 755 libaprutil-1.la /usr/local/apache2/lib

libtool: install: error: cannot install `libaprutil-1.la' to a directory not ending in /usr/local/apache22/lib

make[2]: *** [install] Error 1

则在./configure 后

make clean

make

make install



完了再看看apache 的相关模块有没有加载!如下! (这一步可以不做)

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

到此如果一直都顺利的话就基本没什么问题!继续往下!

开始建立版本库

/usr/local/svn/bin/svnadmin create /svn/project/www (创建仓库"www" )

ls /svn/project/www (查看有没有创建好,如果多了一些文件则说明版本库已经创建好)

(如果出现“无法创建顶级目录”的错误,请先

cd /

mkdir svn

)

导入项目文件到版本库

/usr/local/svn/bin/svn import /home/test file:///svn/project/www -m "init"

这条语句将把路径/share/www下找到的项目文件导入到你创建的/svn/project/www 仓库中去,提交后的修订版为1

配置提高svn版本库的安全性

chmod –R 700 /svn/project/www (不让其他人有该目录的权限)

注意:直接这么chmod会导致svn客户端无法访问,同时需要修改apache配置文件./conf/httpd.conf文件,(如果你的水平不够高的话, 这一步可以先跳过,以免给自己找麻烦!等把服务完全搞定后再来进一步提高安全性) 在httpd.conf文件中有这么一段内容:

User daemon

Group daemon

把上述内容改成:

User apache

Group apache

(我的系统在安装apache的时候,自动增加了apache用户和apache组,如果你系统没有这个用户和组,则请自己添加该用户和组)

修改svn仓库的所有者

chown -R apache:apache /svn/project

5、配置apache支持svn

vi /usr/local/apache/conf/httpd.conf (编辑httpd.conf文件)

在文件末尾添加

<Location /svn>

DAV svn

SVNParentPath /svn/project (此处配置你的版本库根目录)

AuthType Basic (连接类型设置 基本验证)

AuthName "Hello welcome to here" (此处字符串内容修改为提示对话框标题)

AuthUserFile /svn/passwd (访问版本库用户的文件,用apache 的htpasswd命令生成)

AuthzSVNAccessFile /svn/auth.conf (此处修改为访问版本库权限的文件)

Require valid-user ("Require valid-user"告诉apache在authfile中所有的用户都可以访问)

</Location>

保存文件退出!

重新启动apache

/usr/local/apache/bin/apachectl –k restart

(如果启动httpd 80端口被占用

lsof -i:80 查看使用80端口的进程

kill pid (kill 所有的pid)



打开浏览器访问http://192.168.18.110/svn/project/www 会提示输入用户名密码,检测是否配置成功

对svn的用户和权限配置管理

6、配置svn权限管理(即authz.conf的配置)

1. 添加用户:

/usr/local/apache/bin/htpasswd –c /svn/passwd user1

第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加,第二次添加用户不需要带-c参数

2. 权限分配:

vi /svn/auth.conf (进入文件auth.conf,对其进行编辑)

[groups]

Admin=usr1,user2 (这个表示admin群组里的成员 user1,user2)

Develop=u1, u2 (这个表示Develop群组里的成员 u1,u2)

[www:/] (这表示,仓库www的根目录下的访问权限)

user1 = rw (www仓库user1用户具有读和写权限)

user2 = r ( www仓库userl用户具只有读权限)

@develop=rw (这表示 群 develop的成员都具有读写权限)

[/] (这个表示在所有仓库的根目录下)

* = r (这个表示对所有的用户都具有读权限)

注意:在编辑authz.conf文件时,所有行都必须要顶头写,否则会报错

7、重启apache服务和启动svn服务

/usr/local/apache/bin/apachectl –k restart

就可以通过 http://192.168.18.110/svn/project/www 这个URL来访问仓库了,当然,受权限的限制,必须是合法用户才能访问且具有相应的权限

客户端

windows客户端用TortoiseSVN-1.4.4.9706-win32-svn-1.4.4.msi 也许有更高版本,我没有测试

Eclipse插件:software update > url=http://subclipse.tigris.org/update_1.0.x

注意:

如果输入用户名密码后出现:

Could not open the request SVN filesystem

请检查你的/usr/local/apache/conf/httpd.conf 是否正确

如果客户端出现:

org.tigris.subversion.javahl.clientexception ra layer request failed

请检查你的url.username password

如果系统时间和现实时间相差太大,可能会导致安装出问题,修改系统时间的命令:

Date –s (修改linux系统时间)

访问过程中出现的两个问题:

1. svn: Can’t create directory ‘/subversion/main/db/transactions/0-1.txn’: Permission denied

解答:设置svn配置库库文件夹的权限(chmod -R 777 /svn/project/www) 2. Error: 服务器发送了意外的返回值(403 Forbidden),在响应 “CHECKOUT” 的请求

Error: “/svn/www/!svn/ver/1/111/bbb.txt” 中

解答:提交人没有权限,可设置提交权限 即可。

开机自启动服务

设置SVN开机自启动服务,只要启动相关的Apache服务,如何设置请看这里

/article/4097159.html

分享到:





设置Linux自启动服务 |JSF在一个管理Bean中引用另一个管理Bean

2009-09-17 16:32
浏览 624
评论(4)
论坛回复 / 浏览 (4 / 10648)
相关推荐

评论

4 楼 gxl_ct001 2009-12-20
楼主的这一段是不是错了

./configure

--prefix=/usr/local/svn

--with-apxs=/usr/local/apache/bin/apxs

--with-apr=/usr/local/apr/bin/apr-1-config

--with-apr-util=/usr/local/apr/bin/apu-1-config

--with-ssl

--with-zlib

--enable-maintainer-mode

加黑的那一行应该写成

--with-apr-util=/usr/local/apr-util/bin/apu-1-config



3 楼 ranyut 2009-09-23
【转】打开Eclipse,里面的项目文件后面的 版本号 、 文件的状态图标 等等都不见了。反复重启Eclipse都不管作用,前几天还好好的,我就郁闷了。配置什么文件都没动过。 在小组里面更新,提交等操作都能正常使用,就是看不到文件状态了。只好网上搜搜,最终得到解决办法:

打开 : windows ->preferences->General->Appearance->Lable Decorations 勾选其中的 SVN 项即可。

中文:窗口 ->首选项->常规->外观->标签装饰 勾选其中的 SVN 项即可。

2 楼 ranyut 2009-09-23
Error:

Permission denied

svn: Commit failed (details follow):

svn: Can't open file '/svnroot/ryproject/db/txn-current-lock': Permission denied

请查看:

#ls -l /svnroot/ryproject

是属于哪个用户,是否有rw权限

如果不是属于apache

则:

#chown -R apache:apache /svnroot/ryproject

如果没有rw权限则:

#chmod –R o+rw /svnroot/ryproject

1 楼 ranyut 2009-09-18
linux svn命令大全

1、将文件checkout到本地目录

svn checkout path(path是服务器上的目录)

例如:svn checkout svn://192.168.1.1/pro/domain

简写:svn co

2、往版本库中添加新的文件svn add file

例如:svn add test.php(添加test.php)

svn add *.php(添加当前目录下所有的php文件)

3、将改动的文件提交到版本库

svn commit -m “LogMessage“ [-N] [--no-unlock] PATH

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand';
this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.blogjava.net/Images/dot.gif');}" onmousewheel="return imgzoom(this);" alt="" />

(如果选择了保持锁,就使用–no-unlock开关)

例如:svn commit -m “add test file for my test“ test.php

简写:svn ci

4、加锁/解锁

svn lock -m “LockMessage“ [--force] PATH

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand';
this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.blogjava.net/Images/dot.gif');}" onmousewheel="return imgzoom(this);" alt="" />

例如:svn lock -m “lock test file“ test.php

svn unlock PATH

5、更新到某个版本

svn update -r m path

例如:

svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。

svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)

svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)

简写:svn up

6、查看文件或者目录状态

1)svn status path

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand';
this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.blogjava.net/Images/dot.gif');}" onmousewheel="return imgzoom(this);" alt="" />

(目录下的文件和子目录的状态,正常状态不显示)

【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】

2)svn status -v path

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand';
this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.blogjava.net/Images/dot.gif');}" onmousewheel="return imgzoom(this);" alt="" />

(显示文件和子目录状态)

第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。

注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。

简写:svn st

7、删除文件

svn delete path -m “delete test fle“

例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”

或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种

简写:svn (del, remove, rm)

8、查看日志

svn log path

例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化

9、查看文件详细信息

svn info path

例如:svn info test.php

10、比较差异

svn diff path(将修改的文件与基础版本比较)

例如:svn diff test.php

svn diff -r m:n path(对版本m和版本n比较差异)

例如:svn diff -r 200:201 test.php

简写:svn di

11、将两个版本之间的差异合并到当前文件

svn merge -r m:n path

例如:svn merge -r 200:205 test.php(将版本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 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)

在Linux下Apache用户权限的问题

这更像是一个Linux用户的问题,Apache操作Linux下的东西,总要有个用户授权,我一直在找这个授权在什么地方。

上网搜,搜到的居然都是Apache限制http访问的授权

于是就苦找了一下,K.O.!

在httpd.conf里有apache的执行用户和用户组,

<IfModule !mpm_netware_module>

#

# If you wish httpd to run as a different user or group, you must run

# httpd as root initially and it will switch.

#

# User/Group: The name (or #number) of the user/group to run httpd as.

# It is usually good practice to create a dedicated user and group for

# running httpd, as with most system services.

#

User nobody

Group nobody

</IfModule>

用户授权和访问控制

你也许在访问某些网站时会遇到过这样的情况,当你点击某个连接时,你的浏览器会弹出一个身份验证的对话框,要求输入账号及密码,如果没有,就无法继续浏览了。有人会以为这是用CGI做出来的,其实不然,这是WWW服务器的用户授权和访问控制机制在发挥作用。

你是否还记得在设置Apache服务环境的过程中,有……..<./Directory>这个指令,可以对不同的目录提供不同的保护。但是这样的设定,需要重新启动服务器才会生效,灵活性较差,通过AccessFile指令指定访问控制文件的方式则比较灵活,在Apache服务器中设置用户的访问控制权限步骤如下:

1、首先对httpd.conf文件进行设置如下:

<Directory /home/httpd/html>

# AllowOverride FileInfo AuthConfig Limit

# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

Options Includes FollowSymLinks Indexes

AllowOverride All //*注意AllowOverride 一定要设置为All,这样后面的.htaccess文件才会起作用

<Limit GET POST OPTIONS PROPFIND>

Order allow,deny

Allow from all

</Limit>

# <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>

# Order deny,allow

# Deny from all

# </Limit>

</Directory>

#指定配置存取控制权限的文件名称

AccessFileName .htaccess

本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2007-03/2692.htm

2、创建.htaccess文件內容

要控制某目录的访问权限必须建立一访问控制文件,文件名前面指定的“.htaccess”,其内容格式如下:

AuthUserFile 用户帐号密码文件名

AuthGroupFile 群组帐号密码文件名

AuthName 画面提示文字

AuthType 验证方式

<Limit GET>

密码验证方式

</Limit>

用户验证方式AuthType目前提供了Basic和Digest两种。

密码检验设定方法与httpd.conf中的相关设定相同。

具体例子如下:

AuthUserFile /etc/secure.user

AuthName 安全认证中心

AuthType Basic

<Limit GET>

require valid-user

</Limit>

3、建立用户密码文件

如果你是第一次创建用户密码,命令格式如下:

htpasswd -c 密码文件名 用户名称

在上面的例子中,我们将用户密码文件放到了/etc/secure.user文件中,所以这里应按照如下进行操作:

htpasswd -c /etc/secure.user sword

程序会提示你输入两次用户的口令,然后用户密码文件就已经创建sword这个用户也添加完毕了。

如果要向密码文件中添加新的用户,按照如下命令格式进行操作:

htpasswd 密码文件 用户名称

这样,重新启动httpd后,进行该WEB目录时就会有一个对话框弹出,要求输入用户名及用户口令了。

本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2007-03/2692p2.htm

4、如何减少访问控制对Apache性能的影响

频繁的使用访问控制会对Apache的性能产生较大的影响,那么,如何才能减少这种影响呢?最简单也是最有效的方法之一就是减少.htaccess文件的数目,这样可以避免Apache对每一个请求都要按照.htaccess文件的内容进行授权检查。它不仅在当前的目录中查找.htaccess文件,它还会在当前目录的父目录中查找。

/

/usr

/usr/local

/usr/local/etc

/usr/local/etc/httpd

/usr/local/etc/httpd/htdocs

/usr/local/etc/httpd/htdocs/docs

通常在根目录下没有htaccess文件,但Apache仍然会进行例行检查以确定该文件确实不存在。这是影响很影响服务器工作效率的事情。下面的方法可以消除这个讨厌的过程:将AllowOverride选设置为None,这样Apache就会检查.htaccess文件了。将/根目录的 AllowOverride选项设为None,只将需要进行访问控制的目录下的AllowOverride选项设置为all,如下面的例子中将/根目录的 AllowOverride 选项关闭了,只打开了/usr/local/etc/httpd/htdocs目录下的AllowOerride选项,这样,系统就只在
/usr/local/etc/httpd/htdocs中检查.htaccess文件,达到的提高服务效率的目的。

<Directory />

AllowOverride None

</Directory>

<Directory /usr/local/etc/httpd/htdocs>

AllowOverride All

</Directory>

如果除了根目录以外,还有其它存放WWW文件的目录,你也可以采取同样的方法进行设置。比如:如果你使用UserDir来允许用户访问自己的目录,AllowOverride的设置如下:

<Directory /home/*/public_html>

AllowOverride FileInfo Indexes IncludesNOEXEC

</Directory>

本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2007-03/2692p3.htm

5、防止用户访问指定的文件

系统中有一些文件是不适宜提供给WWW用户的,如:.htaccess、htpasswd、*.pl等,可以用达到这个目的:

<Files .htaccess>

order allow,deny

deny from all

</Files>

用户访问控制三个.htaccess文件、.htpasswd和.htgroup(用于用户授权) ,为了安全起见,应该防止用户浏览其中内容,可以在httpd.conf中加入以下内容阻止用户对其进行访问:

<Files ~”/.ht”>

Order deny, allow

Deny from all

</Files>

这样这三个文件就不会被用户访问了。

6、限制某些用户访问特定文件

可以对目录进行约束,要限制某些用户对某个特定文件的访问可以使用,比如:不允许非domain.com域内的用户对/prices/internal.html进行访问,可以用如下的设置:

<Location /prices/internal.html>

order deny,allow

deny from all

allow from .domain.com

</Location>

如果你要授于相应权限的机器没有公开的域名,请在你的/etc/hosts文件中,将其IP地址映射到某个指定的名称,然后在Location中对其进行设置,否则该选项是不起作用的。

7、只接受来自特定链接的访问

例如,只让所有来自 http://www.sina.com.cn/* 的链接的用户进入此目录,由其它链接来的访客都不得进入; " * "表示此网站底下所有的链接。其中的 http://www.sina.com.cn/* 也可以是:http://202.106.184.200/* 或是指定文件 http://www.sina.com.cn/news.html
.htaccess文件的内容如下:

AuthUserFile /dev/null

AuthGroupFile /dev/null

AuthName ExampleAllowFromSpecificURL

AuthType Basic

<Limit GET>

order deny,allow

deny from all

referer allow from http://www.sina.com.cn/*
</Limit>

本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2007-03/2692p4.htm

Linux系统Apache用户授权和访问控制 (2009-03-23 11:09)
分类: linux APACHE配置

Linux系统Apache用户授权和访问控制
你也许在访问某些网站时会遇到过这样的情况,当你点击某个连接时,你的浏览器会弹出一个身份验证的对话框,要求输入账号及密码,如果没有,就无法继续浏览了。有人会以为这是用CGI做出来的,其实不然,这是WWW服务器的用户授权和访问控制机制在发挥作用。

你是否还记得在设置Apache服务环境的过程中,有……..<./Directory>这个指令,可以对不同的目录提供不同的保护。但是这样的设定,需要重新启动服务器才会生效,灵活性较差,通过AccessFile指令指定访问控制文件的方式则比较灵活,在Apache服务器中设置用户的访问控制权限步骤如下:

1、首先对httpd.conf文件进行设置如下:
<Directory /home/httpd/html>

# AllowOverride FileInfo AuthConfig Limit

# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

Options Includes FollowSymLinks Indexes

AllowOverride All //*注意AllowOverride 一定要设置为All,这样后面的.htaccess文件才会起作用

<Limit GET POST OPTIONS PROPFIND>

Order allow,deny

Allow from all

</Limit>

# <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>

# Order deny,allow

# Deny from all

# </Limit>

</Directory>

#指定配置存取控制权限的文件名称

AccessFileName .htaccess

2、创建.htaccess文件內容
要控制某目录的访问权限必须建立一访问控制文件,文件名前面指定的“.htaccess”,其内容格式如下:

AuthUserFile 用户帐号密码文件名

AuthGroupFile 群组帐号密码文件名

AuthName 画面提示文字

AuthType 验证方式

<Limit GET>

密码验证方式

</Limit>

用户验证方式AuthType目前提供了Basic和Digest两种。

密码检验设定方法与httpd.conf中的相关设定相同。

具体例子如下:

AuthUserFile /etc/secure.user

AuthName 安全认证中心

AuthType Basic

<Limit GET>

require valid-user

</Limit>

3、建立用户密码文件
如果你是第一次创建用户密码,命令格式如下:

htpasswd -c 密码文件名 用户名称

在上面的例子中,我们将用户密码文件放到了/etc/secure.user文件中,所以这里应按照如下进行喜欢作:

htpasswd -c /etc/secure.user sword

程序会提示你输入两次用户的口令,然后用户密码文件就已经创建sword这个用户也添加完毕了。

如果要向密码文件中添加新的用户,按照如下命令格式进行喜欢作:

htpasswd 密码文件 用户名称

这样,重新启动httpd后,进行该WEB目录时就会有一个对话框弹出,要求输入用户名及用户口令了。

4、如何减少访问控制对Apache性能的影响

频繁的使用访问控制会对Apache的性能产生较大的影响,那么,如何才能减少这种影响呢?最简单也是最有效的方法之一就是减少.htaccess文件的数目,这样可以避免Apache对每一个请求都要按照.htaccess文件的内容进行授权检查。它不仅在当前的目录中查找.htaccess文件,它还会在当前目录的父目录中查找。
/
/usr
/usr/local
/usr/local/etc
/usr/local/etc/httpd
/usr/local/etc/httpd/htdocs
/usr/local/etc/httpd/htdocs/docs
通常在根目录下没有htaccess文件,但Apache仍然会进行例行检查以确定该文件确实不存在。这是影响很影响服务器工作效率的事情。下面的方法可以消除这个讨厌的过程:将AllowOverride选设置为None,这样Apache就会检查.htaccess文件了。将/根目录的 AllowOverride选项设为None,只将需要进行访问控制的目录下的AllowOverride选项设置为all,如下面的例子中将/根目录的 AllowOverride 选项关闭了,只打开了/usr/local/etc/httpd/htdocs目录下的AllowOerride选项,这样,系统就只在
/usr/local/etc/httpd/htdocs中检查.htaccess文件,达到的提高服务效率的目的。

<Directory />

AllowOverride None

</Directory>

<Directory /usr/local/etc/httpd/htdocs>

AllowOverride All

</Directory>

如果除了根目录以外,还有其它存放WWW文件的目录,你也可以采取同样的方法进行设置。比如:如果你使用UserDir来允许用户访问自己的目录,AllowOverride的设置如下:

<Directory /home/*/public_html>

AllowOverride FileInfo Indexes IncludesNOEXEC

</Directory>5、防止用户访问指定的文件

系统中有一些文件是不适宜提供给WWW用户的,如:.htaccess、htpasswd、*.pl等,可以用达到这个目的:

<Files .htaccess>

order allow,deny

deny from all

</Files>用户访问控制三个.htaccess文件、.htpasswd和.htgroup(用于用户授权) ,为了安全起见,应该防止用户浏览其中内容,可以在httpd.conf中加入以下内容阻止用户对其进行访问:

<Files ~”/.ht”>

Order deny, allow

Deny from all

</Files>

这样这三个文件就不会被用户访问了。

6、限制某些用户访问特定文件

可以对目录进行约束,要限制某些用户对某个特定文件的访问可以使用,比如:不允许非domain.com域内的用户对/prices/internal.html进行访问,可以用如下的设置:

<Location /prices/internal.html>

order deny,allow

deny from all

allow from .domain.com

</Location>如果你要授于相应权限的机器没有公开的域名,请在你的/etc/hosts文件中,将其IP地址映射到某个指定的名称,然后在Location中对其进行设置,否则该选项是不起作用的。

7、只接受来自特定链接的访问

例如,只让所有来自 http://www.sina.com.cn/* 的链接的用户进入此目录,由其它链接来的访客都不得进入; " * "表示此网站底下所有的链接。其中的http://www.sina.com.cn/*
也可以是:http://202.106.184.200/* 或是指定文件http://www.sina.com.cn/news.html

.htaccess文件的内容如下:

AuthUserFile /dev/null

AuthGroupFile /dev/null

AuthName ExampleAllowFromSpecificURL

AuthType Basic

<Limit GET>

order deny,allow

deny from all

referer allow from http://www.sina.com.cn/*

</Limit>

svn配置后无法通过浏览器访问出现认证错误

svn配置后无法通过浏览器访问

操作系统: RHEL5

apache版本:Apache /2.2.3 (Red Hat)

svn版本:1.4.4-1

故障描述:

svn安装完毕后,客户端通过浏览器访问如下地址

http://192.168.98.1/svn/StockAnalyzer

提示输入密码,输入三次后出现如下错误:

Authorization Required

This server could not verify that you are authorized to accessthe documentrequested. Either you suppliedthe wrong
credentials (e.g., bad password), or your browser doesn't understand how to supplythe credentials required.

--------------------------------------------------------------------------------

Apache/2.2.3 (Red Hat) Server at 192.168.98.1 Port 80

检查Apache错误日志发现:

[root@rhel5 conf]# cd [Sun Feb 17 23:22:13 2008] [error] [client 192.168.98.2] (13)Permission denied:Could notopen password file: /hdb/svndata/Stock/passwd

[Sun Feb 17 23:22:13 2008] [error] [client 192.168.98.2] access to /svn/StockAnalyzer failed, reason: verification of user id 'stock' not configured

百思不得其解,请各位帮忙

系统的各项参数配置如下:

-----------------------------------------------

httpd.conf:

<Location /svn/StockAnalyzer>

DAV svn

SVNPath /hdb/svndata/Stock

AuthType Basic

AuthName "SVN - Stock Analyzer"

AuthUserFile /hdb/svndata/Stock/passwd

Require valid-user

</Location>

-----------------------------------------------

[root@rhel5 /]# cd /

[root@rhel5 /]# ls -l

总计 150

drwxr-xr-x 2 root root 4096 02-15 00:59 bin

drwxr-xr-x 4 root root 1024 02-14 03:57 boot

drwxr-xr-x 14 root root 3780 02-17 21:38 dev

drwxr-xr-x 99 root root 12288 02-17 21:38 etc

drwxrwxrwx 6 root root 4096 12-22 23:57 hdb

其余不相关的目录省略。

[root@rhel5 /]# cd hdb

[root@rhel5 hdb]# ls -l

总计 32

drwx------ 2 root root 16384 12-19 06:29 lost+found

drwxrwx--- 3 apache apache 4096 02-17 23:03 svndata

其余不相关的目录省略。

[root@rhel5 hdb]# cd svndata

[root@rhel5 svndata]# ls -l

总计 4

drwxrwx--- 7 apache apache 4096 02-17 08:24 Stock

[root@rhel5 svndata]# cd Stock/

[root@rhel5 Stock]# ls -l

总计 36

drwxrwx--- 2 apache apache 4096 12-22 00:47 conf

drwxrwx--- 2 apache apache 4096 12-22 23:43 dav

drwxrwx--- 5 apache apache 4096 02-09 17:21 db

-rwxrwx--- 1 apache apache 2 12-21 23:56 format

drwxrwx--- 2 apache apache 4096 12-21 23:56 hooks

drwxrwx--- 2 apache apache 4096 12-21 23:56 locks

-rwxrwx--- 1 apache apache 44 02-17 08:24 passwd

-rwxrwx--- 1 apache apache 229 12-21 23:56 README.txt

[root@rhel5 Stock]# cat passwd

stock:$apr1$SPjac/..$3Si5RFOlexx2C64BfKnIk1

UID6135 帖子2 精华0 积分24 阅读权限10 在线时间0 小时 注册时间2008-2-17 最后登录2008-2-20
查看详细资料

TOP

firstshine



新手上路



个人空间
发短消息
加为好友
当前离线

2#大 中 小 发表于 2008-2-20 00:18 只看该作者

搞定,与大家分享。

从日志看,因为检查过配置文件没有拼错,所以可以肯定是权限问题。从ls命令的结果可以看出,由于passwd的权限是没有问题的。

后来看了一位朋友的帖子【Linux环境下搭建Apache+subversion+svnmanager】的启发,可能是SELinux引发的问题,

于是执行命令:

chcon -R -h -t httpd_sys_content_t /hdb/svndata

后来还是不行。执行以下命令后搞定

chcon -R -h -t httpd_sys_content_t /hdb

总结教训:还是linux不熟悉的原因造成的,我是linux的新手。看来得恶补linux的基本知识。不过我到现在还没弄懂chcon命令的作用和用法,哪位朋友给指点以下?

http://www.subversion.org.cn/bbs/viewthread.php?tid=1260
chcon命令:修改对象(文件)的安全上下文。比如:用户:角色:类型:安全级别。

命令格式:

Chcon [OPTIONS…] CONTEXT FILES…..

Chcon [OPTIONS…] –reference=PEF_FILES FILES…

说明:

CONTEXT 为要设置的安全上下文

FILES 对象(文件)

--reference 参照的对象

PEF_FILES 参照文件上下文

FILES 应用参照文件上下文为我的上下文。

OPTIONS 如下:

-f 强迫执行

-R 递归地修改对象的安全上下文

-r ROLE 修改安全上下文角色的配置

-t TYPE 修改安全上下文类型的配置

-u USER 修改安全上下文用户的配置

-v 显示冗长的信息

-l, --range=RANGE 修改安全上下文中的安全级别

范例:

1、ftp

//If you want to share files anonymously <如果你想把这个共享给匿名的话,需要开启以下>

chcon -R -t public_content_t /var/ftp

//If you want to setup a directory where you can upload files

<如果你想让你设置的FTP目录可以上传文件的话,SELINUX需要设置>

chcon -t public_content_rw_t /var/ftp/incoming

//You must also turn on the boolean allow_ftpd_anon_write <允许匿名用户写入权限>

setsebool -P allow_ftpd_anon_write=1

//If you are setting up this machine as a ftpd server and wish to allow users to access their home directorories<如果你希望你的FTP用户可以访问自己的家目录的话,需要开启>

setsebool -P ftp_home_dir 1

//If you want to run ftpd as a daemon<如果你希望将vsftpd以daemon的方式运行的话,需要开启>

setsebool -P ftpd_is_daemon 1

//You can disable SELinux protection for the ftpd daemon<你可以让SElinux停止保护vsftpd的daemon方式动行>

setsebool -P ftpd_disable_trans 1

2、httpd//If you want a particular domain to write to the public_content_rw_t domain

<如果希望具体个doman具有可写权限的话,需要设置>

setsebool -P allow_httpd_anon_write=1

or

setsebool -P allow_httpd_sys__anon_write=1

//httpd can be setup to allow cgi s to be executed <HTTP被设置允许cgi的设置>

setsebool -P httpd_enable_cgi 1

//If you want to allow access to users home directories<允许用户HHTP访问其家目录,该设定限仅于用户的家目录主页>

setsebool -P httpd_enable_homedirs 1

chcon -R -t httpd_sys_content_t ~user/public_html

//httpd is allowed access to the controling terminal<允许httpd访问终端>

setsebool -P httpd_tty_comm 1

//such that one httpd service can not interfere with another

setsebool -P httpd_unified 0

//loadable modules run under the same context as httpd

setsebool -P httpd_builtin_ing 0

//httpd s are allowed to connect out to the network

setsebool -P httpd_can_network_connect 1

// You can disable suexec transition

setsebool -P httpd_suexec_disable_trans 1

//You can disable SELinux protection for the httpd daemon by executing <关闭Selinux的关于httpd进程守护的保护>

setsebool -P httpd_disable_trans 1

service httpd restart

3、named

//If you want to have named update the master zone files <关于named,master更新selinux设定>

setsebool -P named_write_master_zones 1

//You can disable SELinux protection for the named daemon by executing

<关闭named的进程守护保护>

setsebool -P named_disable_trans 1

service named restart

4、nfs

//If you want to setup this machine to share nfs partitions read only

<Selinux将本机的NFS共享设置成只读>

setsebool -P nfs_export_all_ro 1

//If you want to share files read/write<Selinux将本机的NFS共享设置成可读可写>

setsebool -P nfs_export_all_rw 1

//If you want to use a remote NFS server for the home directories on this machine

<如果你想要将远程NFS的家目录共享到本机,需要开启>

setsebool -P use_nfs_home_dirs 1

5、samba

//If you want to share files other than home directorie

<如果你希望将目录共享给其他用户,你需要设置>

chcon -t samba_share_t /directory

//If you want to share files with multiple domains

如果samba服务器共享目录给多个域,则需要:

setsebool -P allow_smbd_anon_write=1

//If you are setting up this machine as a Samba server and wish to share the home directories

samba服务器要共享家目录时:

setsebool -P samba_enable_home_dirs 1

//If you want to use a remote Samba server for the home directories on this machine

如果你需在本机上使用远程samba服务器的家目录

setsebool -P use_samba_home_dirs 1

//You can disable SELinux protection for the samba daemon by executing

关闭selinux关于samba的进程守护的保护

setsebool -P smbd_disable_trans 1

service smb restart

6、rsync

//If you want to share files using the rsync daemon

共享rsync目录时:

chcon -t public_content_t /directories

//If you want to share files with multiple domains

允许其他用户写入时

setsebool -P allow_rsync_anon_write=1

//You can disable SELinux protection for the rsync daemon by executing

停止rsync的进程保护

setsebool -P rsync_disable_trans 1

7、kerberos

//allow your system to work properly in a Kerberos environment

允许系统使用kerberos

setsebool -P allow_kerberos 1

//If you are running Kerberos daemons kadmind or krb5kdc

setsebool -P krb5kdc_disable_trans 1

service krb5kdc restart

setsebool -P kadmind_disable_trans 1

service kadmind restart

8、nis

Allow your system to work properly in a NIS environment

系统工作在nis环境时

setsebool -P allow_ypbind 1

 这几天,一直在测试线上apache+svn的部署文档,中间也遇到了不少困难,为了让

  大家以后少走弯路,大致几点如下:希望对朋友们有所帮助。

  一:svn软件包的安装

  这个是个很头疼的问题,安装的时候不是缺少这个就是缺少那个库文件什么

  的, 个人建议使用如下这些就可以了

  所需软件包:

  httpd-2.2.17.tar.gz

  apr-1.3.8.tar.gz

  apr-util-1.3.8.tar.gz

  sqlite-amalgamation-3.6.17.tar.gz

  subversion-1.6.17.tar.gz

  yum install -y expat expat-devel neon neon-devel

  以上几个软件包就可以了,至于预编译的时候提示不支持oracle的db格式的文件什

  么的,就不用去理会了,如果安装的话会和上面我所写的某些软件冲突。

  二:访问出现500问题

  安装配置好的svn出现500,这个时候要及时的去看apache的错误日志,看到如下,

  我想怎么解决问题我就不用说了吧

  [Sun Aug 07 17:06:59 2011] [error] [client 10.0.0.5] (13)Permission denied: Could not open password file: /data/svn/passwd

  [Sun Aug 07 17:07:05 2011] [error] [client 10.0.0.5] (13)Permission denied: Could not open password file: /data/svn/passwd

  [Sun Aug 07 17:07:06 2011] [error] [client 10.0.0.5] (13)Permission denied: Could not open password file: /data/svn/passwd

  此时需要我们给passwd 加权限了,

  chown -R apache:apache passwd

  chmod -R 774 passwd

  问题解决,其实权限可以放的更小,这个需要大家自己斟酌。

  三:svn提交的时候出现错误,

  提示/www/.svn权限不够,

  chown apache:apache /www/.svn

  chmod -R 775 /www/.svn

  问题解决。

  四:svn和apache同步脚本是提交一次同步一次,

  这个脚本有点意思,贴出来大家看下,网上找了些,并不是很凑效,下面是我整

  理过的贴出来很大家分享下

  #####################################################################

  #!/bin/sh

  REPOS="$1"

  REV="$2"

  export LANG=en_US.UTF-8

  SVN="/usr/local/svn/bin/svn"

  WEB="/www"

  $SVN update --username jesse --password 123456 $WEB

  #####################################################################

SVN管理多个项目的方法:

首先建好库

[c-sharp] view plaincopyprint?

#svnadmin create /usr/local/svn/project1
#svnadmin create /usr/local/svn/project2

单个项目:

启动方式是

[c-sharp] view plaincopyprint?

#svnserve -d -r /usr/local/svn/project1

然后需要配置相应的用户密码等信息

[c-sharp] view plaincopyprint?

#cd /usr/local/svn/project1/conf
#vi authz

在这种情况下,一个svnserve只能为一个版本库工作

[c-sharp] view plaincopyprint?

[groups]
admin=user1
dev=user2
[/]
@admin=rw
@doc=r

而配置成以下的内容则是错误的,错误提示是说找不到版本库

[c-sharp] view plaincopyprint?

[groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r

因为[project1:/]表示库project1的根目录,而按上面的启动参数,是没有库的概念的。

使用类似这样的URL:svn://192.168.0.1/ 即可访问project1

多库的管理方式:

-r 指定到版本库的上级目录(称之为多库svnserve方式)

同样,有一个库project1,位于D:/svn/project1

如果使用以下命令启动svnserve

[c-sharp] view plaincopyprint?

#svnserve -d -r /usr/local/svn

这种情况,一个svnserve可以为多个版本库工作,

这时如果想限制指定库的指定目录,就应该指定具体的库,像这样

[c-sharp] view plaincopyprint?

[groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r

注意访问方式:

如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录

使用类似这样的URL:svn://192.168.0.1/project1 即可访问project1

这样的URL:svn://192.168.0.1/project2 即可访问project2

references:

http://www.iusesvn.com/bbs/thread-157-1-1.html###
http://blog.csdn.net/fxpbupt/article/details/5686623

SUSE 上搭建SVN & 移动版本库

分类: 开发笔记 2010-06-21 16:21 121人阅读 评论(0)收藏举报

公司新换了服务器,居然是suse,一点都不会用。yast 不会配置,zypper 也没有,只能用源码装了。

下载 subversion-1.4.0.tar.bz2 和subversion-deps-1.4.0.tar.gz

解压缩 : tar -ixvf subversion-1.4.0.tar.bz2

tar -zxvf subversion-deps-1.4.0.tar.gz

其中,subversion-deps-1.4.0.tar.gz解开之后,会在subversion-1.4.0目录下,增加apr、apr-util、neon和zlib几个安装中必须的库文件。

进去 subversion-1.4.0 中

./configure -prefix=/opt/svn

make

make install

配置路径

在etc/profile中加入:

#vi /etc/profile

export PAHT="$PATH:/opt/svn/bin"

创建版本库

输入命令:

#mkdir /usr/local/svn

#mkdir /usr/local/svn/newrepos

#svnadmin create /usr/local/svn/newrepos

配置用户

#cd /usr/local/svn/newrepos

#vi authz

增加用户名,如果加一组用户的话:

g_beijing = user1, user2, user3

[/]

@g_beijing

#vi passwd

增加密码明文

user1 = 1234567

user2 = 7654321

user3 = 0987654

#vi svnserve.conf



anon-access = none

auth-access = write

password-db = passwd

authz-db = authz
全部去掉注释
都则会出现 鉴权失败

配置完毕
启动服务:
#svnserve –d –r /usr/local/svn/newrepos
然后导入文件
#svn import mytree file:///usr/local/svn/newrepos/some/project
svn 版本库备份和恢复
备份
#svnadmin dump old-repo-dir > back-up

恢复
#svnadmin load /usr/local/svn/newrepos < back-up
到此,我搭建好了svn,并把老的版本库从另一台server上移动到了新机器上
references:
http://www.svn8.com/svnpz/20100222/22855.html
http://www.linuxdiyf.com/bbs/redirect.php?tid=85350&goto=lastpost

按照http://mhbjava.javaeye.com/blog/26594 搭建的svn,当访问 http://localhost/svn/test 时提示

500 apache Internal Server Error .

查看apache 的log

错误提示如下:

[error] [client 127.0.0.1] (13)Permission denied: Could not open password file: /home/svnroot/repository/authfile

这个错误的原因是 apache没有权限打开authfile这个文件。

在apache的安装目录下 httpd.conf文件中找到apache所在的用户组和用户

suse下类似

User daemon

Group daemon

接下来把 repo 所在的目录递归的更改成daemon.daemon

#chwon -R daemon.daemon /XXX/XXX/repo

2011年07月27日 星期三 17:23
转载自 wanyujun
最终编辑 wanyujun
只需要运行一下命令即可知道

ps -ef |grep httpd

运行之后就显示了httpd进程的运行用户

当然也可以通过查看apache的httpd.conf配置文件来查看apache运行用户和组.

您所在的位置:读书频道 > 操作系统 > Linux > 6.3.4 为Apache使用专门的用户和用户组

6.3.4 为Apache使用专门的用户和用户组

2007-07-11 13:51 曹江华 电子工业出版社博文视点 我要评论(0) 字号:T | T

综合评级:
想读(16) 在读(3) 已读(4) 品书斋鉴(0) 已有23人发表书评





本书用20章和8个附录的内容,全面解析Linux服务器安全策略分四部分内容:第一部分分级介绍对Linux服务器的攻击情况,以及Linux网络基础;第二部分是本书的核心,针对不同的Linux服务器分别介绍各自的安全策略;第三部分介绍Linux服务器的安全工具;第四部分是8个附录,介绍Linux帮助信息和Linux常用命令汇总。本文是为Apache使用专门的用户和用户组。
AD:

6.3.4 为Apache使用专门的用户和用户组

按照最小特权原则,需要给Apache分配一个合适的权限,让其能够完成Web服务。

提示 最小特权原则是系统安全中最基本的原则之一,它限制了使用者对系统及数据进行存取所需要的最小权限,既保证了用户能够完成所操作的任务,同时也确保非法用户或异常操作所造成的损失最小。

必须保证Apache使用一个专门的用户和用户组,不要使用系统预定义的账号,比如nobody用户和nogroup用户组。

因为只有root用户可以运行Apache,DocumentRoot应该能够被管理Web站点内容的用户访问和使用Apache服务器的Apache用户和Apache用户组访问。所以,如果希望“cao”用户在Web站点发布内容,并且可以以httpd身份运行Apache服务器,通常可以这样:

groupadd webteam
usermod -G webteam cao
chown -R httpd.webteam /www/html
chmod -R 2570 /www/htdocs

只有root用户访问日志目录,这个目录的推荐权限:

chown -R root.root /etc/logs
chmod -R 700 /etc/logs

http://book.51cto.com/art/200707/51022.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: