SVN设置权限,密码

电脑换了64位系统,重新装了很多软件,换了个tortoiseSVN才发现不用密码凭证可以登录并检出。原来设置了需要凭证才可以提交的。我发现SVN的手册好难看。网上找了一下资料。也比较零散。后来找到,总结如下:

\conf\下有三个文件。

authz:权限文件

passwd:用户密码文件

svnserve.conf:配置文件

修改版本库中\conf\svnserve.conf,把相关设置为以下:

anon-access = none
auth-access = write

意思是匿名用户没有权限,认证用户有写权限。

如果要设置密码的话。在passwd输入形如:

user=password

格式的就可以了。

修改后保存,不需重启SVN。直接生效

wampserver2.1试用小记

今天发现wampserver有升级版本了,2.1,和之前的2.0的诸多版本有较大的进步。总结一下:

wampserver2.1多了几个小工具:

sqlbuddy:sql的web图形管理工具,和phpmyadmin类似,界面比较清爽,AJAX体验的,不过没有phpmyadmin功能多,sqlbuddy有的功能phpmyadmin都有。不过有个特点,在首页的时候可以选择登陆的服务器,不像phpmyadmin没有,还要去config修改。

ClientXdebug:还没有搞懂怎么用

webGrind:和xdebug配合着用,使用诸如:http://localhost/webgrind/的地址可以看到程序的开销,很方便。不过有个问题,我是用基于单入口的网址,在网址后加/webgrind。系统会报错~~~囧

除外,wampserver2.1较2.0版本,还把apache和mysql的启动分开来了,如果环境启动不了,可以查看是什么问题,比较方便。

官方下载地址:http://www.wampserver.com/en/download.php

wampserver2.1

wampserver2.1

apache访问日志中忽略图片请求的记录

以下示例将避免将对图片的请求记入访问日志中。你修改一下就可以将它用于避免特定目录或特定主机的请求被记入日志。

SetEnvIf Request_URI \.gif image-request
SetEnvIf Request_URI \.jpg image-request
SetEnvIf Request_URI \.png image-request
CustomLog logs/access_log common env=!image-request


我改写成这样,可以支持几种后缀的文件,还可以自己根据需要增加:
SetEnvIf Request_URI \.(ico|gif|jpg|png|bmp|swf|css|js) image-request
用的是cronolog记录日志,后面这句这样写:
CustomLog “|bin/cronolog.exe logs/cpseadmin/mywebsite_%Y%m%d.log” combined env=!image-request

同一个目录的多个URL映射

问题:你想将特定的URL的请求重定向都其他服务器上。比如我有两个网站,网站A:www.site1.com,网站B:www.site2.com。当我在网站A中想用网站B的图片,但是不想用网站B的网址。从用户体验和SEO的角度来说,同一个网站的内容,应该统一才好。

解决方法:在httpd.conf文件中使用Redirect指令,并在第二个参数中设定绝对路径的URL.

Redirect “/example” “http://www2.example.com/new/location”

参数说明

temp:临时重定向(302重定向)

permanent:永久重定向(301重定向)

gone:不在此位置上(曾经存在)

seaother:被其他的文件代替(303重定向)

我的解决案例:

<IfModule alias_module>
#
# Redirect: Allows you to tell clients about documents that used to
# exist in your server’s namespace, but do not anymore. The client
# will make a new request for the document at its new location.
# Example:
# Redirect permanent /foo http://localhost/bar
Redirect permanent “/hotel-imgages” “http://www.hoteltour.cn/media/upload/hotel”
……
ScriptAlias /cgi-bin/ “cgi-bin/”
</IfModule>

说明:
这是在当前服务器的所有网站中,包含有“/hotel-imgages”的URL,都会映射到http://www.hoteltour.cn/media/upload/hotel
如图1:这是原始的,域名A上,用了域名B的文件。

图2:这是做了映射只后,网页的域名和图片域名统一了。

url-after

巧妙自动清除svn

用svn进行版本控制很方便。有时候我们想清除其中的svn信息,如果版本控制软件出错的话,不能直接用“导出”功能。

这里有个简单的办法(谢谢小熊同学提供的)。把一下代码存成一个bat批处理文件。然后把包含有svn信息的文件夹直接拖到这个脚本下运行即可。

@echo off
REM AUTHOR:http://crazyphper.com
if "%1"=="" (
goto error
) else (
goto action %1
)

:error
echo.
echo 直接将要清空svn的文件夹拖到此文件上,请先备份.
echo.
pause
goto end

:action %1
echo ————————————————————————–
echo 本次操作将删除 [%1] 文件夹下所有的svn标记,请慎重操作!
echo Y 清理文件夹
echo N 退出
echo —————————————————————————
choice /c YN /m 请选择菜单(按ctrl+c或N退出):

if %errorlevel% equ 2 goto end
echo 正在清理文件夹:%1
echo 请稍候…
for /r %1 %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn"
echo 清理完毕!
echo 按任意键退出…
pause>echo.

:end
exit

或点击这里下载源码文件,下载后改后缀.txt为.bat

解决开启apache的rewrite重写功能

给同事重新配置环境,记录过程。
1.开启rewrite模块的调用
Apache 2.x 中URL重写,是通过mod_rewrite.so 来实现的,在 httpd.conf 中,我们会发现类似如下的一行,是有关rewrite模块的,模块名是 mod_rewrite.so 。开启它。
2.设置AllowOverride(注意这里,原来我就是这个设为none,即使apache显示rewrite模块开启了,但是重写还是用不了)在 httpd.conf 中,我们会看到比如:
<Directory “/opt/www”>
Options FollowSymLinks
#AllowOverride None 注:把这行前面加#号,然后加下面的一行  ,也就是   AllowOverride ALL
AllowOverride ALL
Order allow,deny
Allow from all
</Directory>
如果AllowOverride指令被设置为None ,那么.htaccess文件将被完全忽略。事实上,服务器根本不会读取.htaccess文件。当此指令设置为 All时,所有具有”.htaccess”作用域的指令都允许出现在.htaccess文件中。
3.重启httpd服务器

解决开启apache的URL重写功能
1.开启rewrite模块的调用Apache 2.x 中URL重写,是通过mod_rewrite.so 来实现的,在 httpd.conf 中,我们会发现类似如下的一行,是有关rewrite模块的,模块名是 mod_rewrite.so 。开启它。
2.设置DocumentRoot的Directory(注意这里,原来我就是这个设为none,即使apache显示rewrite模块开启了,但是重写还是用不了)在 httpd.conf 中,我们会看到比如:<Directory “/opt/www”>Options FollowSymLinks#AllowOverride None 注:把这行前面加#号,然后加下面的一行  ,也就是   AllowOverride ALL AllowOverride ALL    Order allow,denyAllow from all</Directory>
如果AllowOverride指令被设置为None ,那么.htaccess文件将被完全忽略。事实上,服务器根本不会读取.htaccess文件。当此指令设置为 All时,所有具有”.htaccess”作用域的指令都允许出现在.htaccess文件中。

3.重启httpd服务器

SVN 服务器端简要配置步骤和常见问题解决

又重新配了一次SVN服务器,我把过程和遇到的错误及解决办法记录下来。

过程简化为6步:

  1. 安装Subversion:我装的是Setup-Subversion-1.6.4.msi
  2. 建立版本库:开始->运行->cmd->进入SVN服务端的安装目录下面的bin目录,试用create命令建立版本库,如: svnadmin create E:\svn\doc
  3. 开启服务: svnserve.exe –daemon –root E:\svn\doc svnserve 将会在端口 3690 等待请求 –daemon(两个短横线)选项告诉 svnserve 以守护进程方式运行,这样在手动终止之前不会退出。注意不要关闭命令行窗口,关闭窗口会把 svnserve 停止。 –root设置根目录,也可不用这个命令可以存在一个批处理文件中,设置为计划任务,每次开机启动,这样就启动服务了。或者使用windows服务注册,这里不说明,自己找资料。
  4. 设置密码和权限:(1)打开E:\svn\doc\conf下的svnserve.conf,把#password-db = passwd前的#去掉,注意不要留空格,否则会报错;如果默认所有帐户都具有全部权限,则不要把#authz-db = authz前的#去掉,否则要进入E:\svn\doc\conf下的authz文件为每个帐户设定权限。(2)进入E:\svn\doc\conf下的passwd文件,在[users]下增加sally=sallypsw,则为用户sally创建了密码sallypsw。
  5. 安装TortoiseSVN客户端软件:当然不装也行,但是TSVN是图形化软件,可视化和可操作性都大大简化。我装的是TortoiseSVN-1.6.8.19260-win32-svn-1.6.11.msi + LanguagePack_1.6.8.19260-win32-zh_CN.msi,后面是语言包,可装可不装。安装了语言包后,还要在设置->语言那里选择中文,才可用。
  6. 导入:使用TSVN在服务器上或在客户端为版本库导入文件/文件夹

一些常见错误及解决:

  1. Q:出现”svnserve.conf:12: Option expected”错误 A:打开svnserve.conf文件中的第12行,该错误是由于该行的前面有空格引起的,把左边多出的空格删除掉即可;
  2. Q:输入URL(svn://127.0.0.1/SVN_PRJ)点下一步出现”svn://127.0.0.1/SVN_PRJ non-existent in revision ’7′”错误 A:URL错了,应该输入svn://127.0.0.1即可
  3. Q:svn 璁よ瘉澶辫触 A:上如果出现此错误,此错误是“认证失败”,有两种解决方式,一个是把Author这个配置文件写好,另一个是把svnserve.conf文件中的#authz-db = authz这个去掉,这个注释掉的意思是不再去读取AUTHOR文件里的信息

使用bat批处理做ftp自动下载

不是因为懒,不想每天从手动从服务器更新数据下来。确实是要提高效率。想找一个自动ftp下载的工具,找了很多,BatchSync FTP很好用,但是始终找不到破解版。后来和小熊同学一起配合下,终于把批处理的ftp下载搞定了,小巧绿色环保原生态,下面分享一下使用bat批处理做ftp自动下载的方法。

新建一个bat,随便名字如download.bat,敲入如下代码:

set ymd=%date:~0,10%

md “C:\backup\%ymd%”

cd C:\backup\%ymd%

@echo off

echo open 127.0.0.1>ftp.src

echo username>>ftp.src

echo password>>ftp.src

echo cd “/%ymd%/”>>ftp.src

echo prompt n>>ftp.src

echo type binary>>ftp.src

echo runique y>>ftp.src

echo mget *>>ftp.src

echo bye>>ftp.src

ftp -s:ftp.src

del ftp.src

解释:

红色部分用真实的ftp地址,用户名,密码代替。代码解释:

  1. 首先在本地新建一个以当天日期为名的文件夹
  2. 然后生成一个ftp.src的临时文件,这个文件有ftp操作的步骤,注意,要用另外一个文件存储ftp命令(FTP命令详解)。
  3. 使用ftp.src文件链接ftp服务器,开始下载
  4. 下载完成,删除临时文件ftp.src

还有几点需要注意的是,为什么要生成临时文件又删除?其实做成单独的文件也可以,但是这个ftp脚本限制了下载的文件只能存储在当前批处理脚本的路径下,而我希望按每天的日期来分别下载。而ftp命令中并不支持诸如%date:~0,10%这样的环境变量。所以这里就耍了一个小聪明。每天生成当天文件夹和当天脚本->下载好文件->删除脚本。如果你不用日期分割,可以把echo部分抽出来写一个文件。

apache命令htpasswd生成AuthUserFile,网站文件夹设置密码,认证指令

转到apache\bin目录下,输入:
htpasswd -cmb user abc 123456
即可在当前目录下生成文件,user,且用户名为abc,密码为123456(加密的),

或依此步骤生成
E:\web\Apache2\bin>htpasswd -c userpass user1
Automatically using MD5 format.
New password: ******
Re-type new password: ******
Adding password for user user1
更新密码:
E:\web\Apache2\bin>htpasswd userpass user1
Automatically using MD5 format.
New password: ******
Re-type new password: ******
Updating password for

然后把认证指令在需要密码的地方放名为:.htaccess 的文件

#Don’t show files or folders
Options +FollowSymlinks
ErrorDocument 404 “don’t find your page”
ErrorDocument 403 “don’t access!”
#need some auth user info
AuthName “login”
AuthUserFile E:\web\Apache2\bin
AuthType Basic
#some limited condition
<Limit GET>
require user abc
</Limit>
或把认证指令放在主配置文件的<Directory>段中是一个更好的方法。
如:
<Directory “D:/www/mysite/lock_folder/“>
#Don’t show files or folders
Options +FollowSymlinks
ErrorDocument 404 “don’t find your page”
ErrorDocument 403 “don’t access!”
#need some auth user info
AuthName “login”
AuthUserFile E:\web\Apache2\bin
AuthType Basic
#some limited condition
<Limit GET>
require user abc
</Limit>
</Directory>
红色加粗部分,是要根据实际情况修改的。