1.编译安装httpd (root用户操作):
首先卸载系统自带的旧版本httpd(使用rpm -qa|grep httpd查找系统自带的httpd)
# tar xvzf httpd-2.2.15.tar.gz
# cd httpd-2.2.15
# ./configure --enable-dav --enable-so
--enable-mods-shared=all (注意此处,如果subversion编译的时候用了这个参数,则此处也必须加此参数)
--prefix=/usr/local/apache2(无此参数会默认在http解压后所在目录下安装为apache2)
# make
# make install
以上执行完毕后会在/usr/local下生成apache2的目录
编辑配置文件httpd.conf
# vi /usr/local/apache2/conf/httpd.conf
修改内容:
ServerName www.example.com:80 为ServerName(如localhost):80或者Apache服务器的IP(这行默认是被注释掉的)
安装完成并修改后,启动apache进程:/usr/local/apache2/bin/apachectl start(或者在/usr/local/apache2/bin/下,用./httpd –k start),然后打开浏览器
http://localhost/或者http://Apache服务器的IP,如果有测试页"It works!"出现,则证明已经安装成功。

设置RHEL启动系统后,自启动Apache服务:
编辑etc/rc.d/rc.local
# vi /etc/rc.d/rc.local
在最后加上一句: /usr/local/apache2/bin/apachectl start
重启系统试一下就可以了。

2.下载、编译、安装subversion
下载地址 http://subversion.tigris.o...
里面有各版本的subversion,本文档仅限1.6.11,其余版本未曾实验,subversion安装时需要第三方软件,1.6.11的两个下载包包含了这些必须的软件,比较方便。

下载文件:subversion-1.6.11.tar.gz和subversion-deps-1.6.11.tar.gz,这两个文件拷贝到服务器的/usr/local下并解压后会全部解压到一个目录subversion-1.6.11下,这样安装的时候只要configure和make一次即可,避免了从前还要对apr和apr-utils的操作,非常方便。

进入subversion-1.6.11目录,执行执行 ./configure --prefix=/usr/local/svn 进行配置设定并指明安装目录,注意“--prefix=/usr/local/svn”参数,官方说明中没有提到,如果无此参数则,安装后安configure文件指定的目录安装,都会安装到/usr/bin下,并自动配置。前面操作完后执行make,然后make install就可以了(执行过程中可以看到提示,subversion对apache进行了修改操作),执行完成后会在/usr/local下生成apr目录和svn目录,若./configure未使用参数指定安装目录则在/usr/bin下生成很多相关文件,但这样也有个方便的地方就是,我们无需做环境变量的修改就可以在任何目录下执行svnadmin命令了,否则还要切换到安装目录下的bin目录中执行该命令或手工修改环境变量;
手工修改环境变量: vi /etc/profile 在文件最后加入: SVNPATH=$PATH:/usr/local/svn/bin export SVNPATH,执行source /etc/profile使环境变量生效;
执行svnadmin命令,会提示“type 'svnadmin help” for usage”说明subversion安装成功

其实subversion也有自带服务器详细的可参考这个文档http://www.linux521.com/20...

3.配置apache和subversion
创建管理svn的用户svnroot #useradd svnroot
//创建库文件所在的目录
# cd /home
# mkdir svnroot
# cd svnroot
# mkdir repository
//创建"test"仓库
# ./svnadmin create /home/svnroot/repository/test
//进入到数据仓库"test"目录
# cd /home/svnroot/repository/test
//看看是不是多了些文件,如果是则说明Subversion安装成功了
# ls –l
//不让其他人有该目录的权限(仅对于多用户的服务器,自己的单用户服务器就无所谓)
# chmod 700 /home/svnroot/repository

修改Apache配置文件
# cd /usr/local/apadche2/bin
# ./apachect1 stop //停止Apache进程
vi /usr/local/apache2/conf/httpd.conf
在最下面加入如下片段:

DAV svn
SVNParentPath /home/svnroot/repository                   //svn父目录
AuthType Basic
AuthName "China Subversion repository"            //连接框提示,引号内的内容随便写
AuthUserFile /home/svnroot/repository/authfile           //用户配置文件
AuthzSVNAccessFile /home/svnroot/repository/authz.conf   //权限配置文件
Require valid-user                                       //告诉apache在authfile中所有的用户都可以访问



创建authfile用户文件
authfile是通过"/usr/local/apache2/bin/htpasswd [–c] /home/svnroot/repository/authfile username"来创建的 , 执行后会提示输入用户名,username是要新建的用户名 -c是可选参数,如果是第一次执行则用此参数建立个用户文件。

启动apache服务
# /usr/local/apache2/bin/apachectl start
//打开浏览器访问
http://localhost/svn/test/ 提示输入用户名密码,输入创建authfile用户文件时的用户名密码,登录成功后,页面会显示“test - Revision 0: /”说明安装成功。

4. 权限管理(即authz.conf的配置)
1)增加用户
# htpasswd [-c] /home/svnroot/repository/authfile user1
//第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,和确认密码,完成对用户的增加,此时是要用root的权限来添加的,添加完后在authfile中看到用户名和加密的密码。
# htpasswd /home/svnroot/repository/authfile 用户名(加入新的用户)
//如:"htpasswd /home/svnroot/repository/authfile user2"
2)权限分配
# vi /home/svnroot/repository/authz.conf
简单写入如下内容
#用户组与权限配置方法----------------------------
#定义用户组
[groups]
group1 = user1,user2,user3
group2 = user1,user4,user5
group3 = user4,user6,user7

#定义组权限
[资源库名1:/]
@group1 = rw
[资源库名2:/]
@group2 = rw
[资源库名3:/]
@group3 = rw
#------------------------------------------------
#单用户权限配置----------------------------------
[资源库名1:/]
user1 = rw
user2 = r
[资源库名2:/]
user3 = r
user4 =
[/]
* = r
#------------------------------------------------
[groups] //这个表示群组设置
Tester = test,svnroot,nbj,user1,user2 //这个表示某群组里的成员
#anonymous = guest
[test:/] //这表示,仓库test的根目录下的访问权限
@Tester = rw //test仓库Tseter组中用户具有读和写权限
* = r //test仓库中所有用户具有读的权限
[document:/] //这表示,仓库document的根目录下的访问权限
@Tester = rw //test仓库Tseter组中用户具有读和写权限
#@anonymous = r
* = r //test仓库中所有用户具有读的权限
//注意:在编辑authz.conf文件时,所有行都必须要顶头写,不能有缩行出现,否则会报错:"Access denied: 'user1' "。
Tags: , , ,
编辑apache2配置文件
/etc/apache2/mods-enable/alias.conf
增加以下内容

Alias /svntools "/mnt/svndb/svntools"

<Directory "/mnt/svndb/svntools">
Require valid-user
AuthType Basic
AuthName "GridTeam`s subversion tools"
AuthUserFile "/etc/subversion/passwd"
</Directory>


新建PHP页面,保存svntools目录下

index.php


<?
$username = $_SERVER["PHP_AUTH_USER"]; //经过 AuthType Basic 认证的用户名
$authed_pass = $_SERVER["PHP_AUTH_PW"]; //经过 AuthType Basic 认证的密码
$input_oldpass = (isset($_REQUEST["oldpass"]) ? $_REQUEST["oldpass"] : ""); //从界面上输入的原密码
$newpass = (isset($_REQUEST["newpass"]) ? $_REQUEST["newpass"] : ""); //界面上输入的新密码
$repeatpass = (isset($_REQUEST["repeatpass"]) ? $_REQUEST["repeatpass"] : ""); //界面上输入的重复密码
$action = (isset($_REQUEST["action"]) ? $_REQUEST["action"] : ""); //以hide方式提交到服务器的action

if($action!="modify"){
$action = "view";
}
else if($authed_pass!=$input_oldpass){
$action = "oldpasswrong";
}
else if(empty($newpass)){
$action = "passempty";
}
else if($newpass!=$repeatpass){
$action = "passnotsame";
}
else{
$action = "modify";
}
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Subversion 在线自助密码修改</title>
</head>
<body>

<?
//action=view 显示普通的输入信息
if ($action == "view"){
?>
<script language = "javaScript">
<!--
function loginIn(myform)
{
var newpass=myform.newpass.value;
var repeatpass=myform.repeatpass.value;

if(newpass==""){
alert("请输入密码!");
return false;
}

if(repeatpass==""){
alert("请重复输入密码!");
return false;
}

if(newpass!=repeatpass){
alert("两次输入密码不一致,请重新输入!");
return false;
}
return true;
}
//-->
</script>
<style type="text/css">
<!--
table {
border: 1px solid #CCCCCC;
background-color: #f9f9f9;
text-align: center;
vertical-align: middle;
font-size: 9pt;
line-height: 15px;
}
th {
font-weight: bold;
line-height: 20px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-bottom-style: solid;
color: #333333;
background-color: f6f6f6;
}
input{
height: 18px;
}
.button {
height: 20px;
}

-->
</style>
<br><br><br>
<form method="post">
<input type="hidden" name="action" value="modify"/>
<table width="220" cellpadding="3" cellspacing="8" align="center">
<tr>
<th colspan=2>Subversion 密码修改</th>
</tr>
<tr>
<td>用户名:</td>
<td align="left"> <?=$username?></td>
</tr>
<tr>
<td>原密码:</td>
<td><input type=password size=12 name=oldpass></td>
</tr>
<tr>
<td>用户密码:</td>
<td><input type=password size=12 name=newpass></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type=password size=12 name=repeatpass></td>
</tr>
<tr>
<td colspan=2>
<input onclick="return loginIn(this.form)" class="button" type=submit value="修 改">
<input name="reset" type=reset class="button" value="取 消">
</td>
</tr>
</table>
</form>
<?
}
else if($action == "oldpasswrong"){
$msg="原密码错误!";
}
else if($action == "passempty"){
$msg="请输入新密码!";
}
else if($action == "passnotsame"){
$msg="两次输入密码不一致,请重新输入!";
}
else{
$passwdfile="/etc/subversion/passwd";
$command='"htpasswd" -b '.$passwdfile." ".$username." ".$newpass;
system($command, $result);
if($result==0){
$msg="用户[".$username."]密码修改成功,请用新密码登陆.";
}
else{
$msg="用户[".$username."]密码修改失败,返回值为".$result.",请和管理员联系!";
}
}

if (isset($msg)){
?>
<script language="javaScript">
<!--
alert("<?=$msg?>");
window.location.href="<?=$_SERVER["PHP_SELF"]?>"
//-->
</script>
<?
}
?>
</body>
</html>
Tags: , , ,

linux:vi 替换命令

[阴 2010/06/30 11:10 | by 井宿 ]
 vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。

  :s/vivian/sky/ 替换当前行第一个 vivian 为 sky

  :s/vivian/sky/g 替换当前行所有 vivian 为 sky

  :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky

  :n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky

  n 为数字,若 n 为 .,表示从当前行开始到最后一行

  :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky

  :%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

  可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

  :s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/

  :%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

  * ************************************

  1.:s/vivian/sky/ 替换当前行第一个 vivian 为 sky

  :s/vivian/sky/g 替换当前行所有 vivian 为 sky

  2. :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky

  :n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky

  (n 为数字,若 n 为 .,表示从当前行开始到最后一行)

  3. :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky

  :%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

  4. 可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

  :s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/

  5. 删除文本中的^M

  问题描述:对于换行,window下用回车换行(0A0D)来表示,linux下是回车(0A)来表示。这样,将window上的文件拷到unix上用时,总会有个^M.请写个用在unix下的过滤windows文件的换行符(0D)的shell或c程序。

  · 使用命令:cat filename1 | tr -d “^V^M” > newfile;

  · 使用命令:sed -e “s/^V^M//” filename > outputfilename。需要注意的是在1、2两种方法中,^V和^M指的是Ctrl+V和Ctrl+M。你必须要手工进行输入,而不是粘贴。

  · 在vi中处理:首先使用vi打开文件,然后按ESC键,接着输入命令:%s/^V^M//。

  · :%s/^M$//g

  如果上述方法无用,则正确的解决办法是:

  · tr -d "\r" < src >dest

  · tr -d "\015" dest

  · strings A>B

  6. 其它

  利用 :s 命令可以实现字符串的替换。具体的用法包括:

  :s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1

  :s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1

  :.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1

  :1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1

  :g/str1/s//str2/g 功能同上

  从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索

  字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。
Tags: ,

linux登陆后精确命令记录

[不指定 2010/06/29 18:24 | by 井宿 ]
主要功能:

  可以记录哪个ip和时间(精确到秒)作了哪些命令

  通过用户登录时候,重新定义HISTFILE

  HISTFILE文件名包含登录用户名,ip,登录时间(精确到秒)等

  这样即使相同的用户从不同ip、在不同的时间登录都会被记录

  可以记录每条命令的开始执行时间

  把下面的代码直接粘贴到/etc/profile后面就可以了

  #history

  export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]"

  USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`

  HISTDIR=/var/log/.hist

  if [ -z $USER_IP ]

  then

  USER_IP=`hostname`

  fi

  if [ ! -d $HISTDIR ]

  then

  mkdir -p $HISTDIR

  chmod 777 $HISTDIR

  fi

  if [ ! -d $HISTDIR/${LOGNAME} ]

  then

  mkdir -p $HISTDIR/${LOGNAME}



chmod 300 $HISTDIR/${LOGNAME}

  fi

  export HISTSIZE=4096

  DT=`date %Y%m%d_%H%M%S`

  export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.hist.$DT"

  chmod 600 $HISTDIR/${LOGNAME}/*.hist* 2>/dev/null

  得到的结果,永久保存,每个用户的命令记录分目录保存

  # ls -l /var/log/.hist/root/

  -rw------- 1 root root 546 2006-05-26 10:00 218.82.245.54.hist.20060526_092458

  -rw------- 1 root root 243 2006-05-28 13:28 218.82.245.54.hist.20060528_114822

  -rw------- 1 root root 10 2006-05-28 12:18 218.82.245.54.hist.20060528_121605

  查看命令记录

  # export HISTFILE=/var/log/.hist/root/222.72.16.204.hist.20060608_152551

  # history

  1 [2006.06.24 13:22:51] vi /etc/profile

  2 [2006.06.24 13:23:25] cd /var/log/.hist

  3 [2006.06.24 13:23:26] ls -al

  4 [2006.06.24 13:23:30] cd sadmin

  5 [2006.06.24 13:23:31] ls -al

  6 [2006.06.24 13:24:22] more 58.35.169.51.hist.20060524_193219

  7 [2006.06.24 13:24:35] 222.72.16.204.hist.20060622_143133

  8 [2006.06.24 13:24:39] more 222.72.16.204.hist.20060622_143133

  9 [2006.06.24 13:24:51] hist -f 222.72.16.204.hist.20060622_143133
使用date命令:
将当前系统时间转换为UNIX时间戳

?View Code BASH12
$date +%s1263236513

+%s是date的格式控制,上面命令的意思其实就是将当前系统时间以UNIX时间戳的形式输出。
如果要将任意UTC时间转换为UNIX时间戳的话:

?View Code BASH12
$date -d '2010-01-12 utc' +%s1263254400

相反的如果要将UNIX时间戳转换为UTC时间则是:

?View Code BASH12
$date -d '1970-01-01 utc 1263236311 seconds'  +%Y-%m-%d-%H:%M:%S2010-01-12-02:58:31


由此可以看出linux下的date命令还是十分强大的,更详细的介绍参看info date.

使用Python:
将当前系统时间转换为UNIX时间戳

?View Code PYTHON123
>>> import time>>> time.time()1263239477.4449849


如果要将任意UTC时间转换为UNIX时间戳的话:

?View Code PYTHON123456789
>>> import time>>> time.time()1263239477.4449849>>> import datetime>>> d1 = datetime.datetime(2010,1,12,2,28,01)>>> t1 = time.mktime(d1.timetuple())>>> print t11263234481.0>>> d2 = time.localtime(t1)


mktime()函数是将time对象转为一个浮点数(即UNIX时间戳)。可以用localtime()再将浮点数转换
为time对象。
相反的如果要将UNIX时间戳转换为UTC时间则使用的是time.localtime()函数。

还有一个很有用的函数就是 time.strptime(string[,format]):
用来从一个字符串中按照一定的格式提取出一个struct_time,例如:

?View Code PYTHON123
>>> import  time>>> time.strptime("2010-1-12", "%Y-%m-%d")time.struct_time(tm_year=2010, tm_mon=1, tm_mday=12, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=12, tm_isdst=-1)


其中的format转意符跟date命令中的相同,如下:

format转义符对应意义如下

%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%j 年内的一天(001-366)#hi.baidu.com/muinlive
%m 月份(01-12)
%M 分钟数(00=59)
%p 本地A.M.或P.M.的等价符
%S 秒(00-59)
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%Z 当前时区的名称
%% %号本身
Tags: , ,

svn在linux下的使用

[晴 2010/06/29 18:20 | by 井宿 ]
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(如果选择了保持锁,就使用–no-unlock开关)
例如:svn commit -m “add test file for my test“ test.php
简写:svn ci
4、加锁/解锁
 svn lock -m “LockMessage“ [–force] PATH
例如: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(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st
7、删除文件
 svn delete path -m “delete test fle“
例如:svn delete svn://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 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)
Tags: ,

bind中文域名解析配置

[晴 2010/06/24 11:13 | by 井宿 ]
中文域名分为两类:
1. 国际中文域名: 中文.com , 中文.net ;
2. 国内中文域名,又称中文通用域名: 中文.cn , 中文.中国 , 中文.公司 , 中文.网络 。

中文域名解析原理
中 文域名在解析的时候,须经转换为 xn-xxxxxxxx.com/.cn 形式的ASCII码,后者称为punycode。".中国"后缀不被标准的解析服务器支持,所以CNNIC同时赠送同名的.cn中文域名,所以".中国"和".cn"中文域名是等价的。类似的,".公司"实际使用是需要附加.cn 后缀,或者使用CNNIC的浏览器插件才能解码使用,因此DNS解析的punycode会被转化为.xn-55qx5d.cn后缀, ".网络"也类似。
中文域名在线转码工具,网上可以在线使用
http://www.cnnic.net.cn/ht...

DNS服务器配置

用户注册完一个中文域名之后,需要配置相应的DNS服务器来完成对该中文域名的解析。具体步骤如下:

1. 在线转码或者利用离线转码工具将用户注册的这个中文域名转成punycode编码;
2. 在DNS服务器的配置文件中增加新注册的这个中文域名子域;
3. 指定这台DNS服务器为该中文域名子域解析系统的主服务器;
4. 指定一个域数据文件,用来保存属于该中文域名子域的域名数据;
5. 编辑域数据文件,设定域数据文件的系列号、更新周期等相关参数,并添加域名记录。

以"天蓝蓝.cn"为例:
天蓝蓝.cn转成punycode编码后变成了xn--rssy03ha.cn

配置文件名:named.conf
......
zone "xn--rssy03ha.cn" IN {
type master;
file "tllcn.zone"
}
......

配置文件名:tllcn.zone
@ IN SOA xn--rssy03ha.cn. sysadmin.xn--rssy03ha.cn. (
2003040101 ; Serial
43200 ; Refresh after 12 hours
7200 ; Retry after 2 hours
2592000 ; Expire after 30 days
86400 ) ; Minimum TTL of 1 day
IN NS xn--rssy03ha.cn.
xn--rssy03ha.cn. IN A 159.226.7.159

虚拟主机配置

虚拟主机分为基于IP的虚拟主机和基于名字的虚拟主机

如果是基于IP的虚拟主机,只需在httpd.conf为该主机配置一个punycode的ServerName就可以了。如:

ServerAdmin sysadmin@xn--rssy03ha.cn
DocumentRoot /usr/local/apache/htdocs
ServerName xn--rssy03ha.cn
ErrorLog /usr/local/apache/logs/error_log
CustomLog /usr/local/apache/logs/access_log common

如果是基于名字的虚拟主机,多主机名字基于一个IP,则需要在httpd.conf中做相应的配置:

NameVirtualHost 159.226.7.159

ServerAdmin sysadmin@xn--rssy03ha.cn
DocumentRoot /usr/local/apache/htdocs
ServerName xn--rssy03ha.cn
ErrorLog /usr/local/apache/logs/error_log
CustomLog /usr/local/apache/logs/access_log common

linux GRE 隧道加密

[晴 2010/06/23 16:44 | by 井宿 ]
好处:
1.设置超简单
2.避免明文数据发送

前提条件:
1.两个端点不经过任何NAT网关
2.两个端点GRE不能被firewall过滤掉

软件版本:
不清楚,反正新一点的kernel+新一点的iproute2

步骤:
先假设一下,两个机器实际IP分别是A, B. 配置后tunnel两端IP为A2, B2.提醒一下,不要忘掉装载kernel module. modprobe ip_gre
A:
ip tunnel AB mode gre local $A remote $B key 1.2.3.4
ip addr add $A2 peer $B2 dev AB
ip link set AB up

B:
ip tunnel BA mode gre local $B remote $A key 1.2.3.4
ip addr add $B2 peer $A2 dev BA
ip link set BA up
Tags: ,
在VSFTPD.CONF中添加
cmds_allowed=ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RNFR,RNTO,SIZE,STOR,TYPE,USER,REST,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,FEAT(一些FTP的命令,就是除了DELE等命令)
然后重启VSFTP服务
Tags:

春玉,同学的朋友

[不指定 2010/04/28 02:16 | by 井宿 ]
http://my.jiayuan.com/?uidhash=d16082d237e9e3994287ad1b2b663fd7&m_type=11&chat=1&ol=1&flt=zdtj

点击在新窗口中浏览此图片



分页: 3/114 第一页 上页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下页 最后页 [ 显示模式: 摘要 | 列表 ]