月度归档:2012年05月

再增加一条 Mac 适合开发人员使用的原因

在 Mac 上配置 Apache 和 SVN 极其方便。

序:
    之前在 Windows 上,因为心里美的原因,配置过 Apache 和 SVN 集成,使用 http 协议来访问 SVN。配置过程有些麻烦,也容易出错。
    后来,一直使用 svnserve -d,在 windows 上一般还会用 sc 命令做成 service,因为简单方便。
后来因为试验的目的,在 Mac 上配置了 Apache 和 SVN,我的 OS X 是 10.7 Lion
居然极其简单,只要在“系统偏好设置” -> “共享” 中,把 Web 共享打开,然后把个人网站点开(仅仅是不想修改全局配置文件)
然后修改文件 /private/etc/apache2/users/你的用户名.conf ,里面加上

# svn module

LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so
LoadModule authz_svn_module libexec/apache2/mod_authz_svn.so
<Location /svn>
     DAV svn
     SVNListParentPath on
     SVNParentPath “/repository/svn/path”
</Location>
就可以了,
两个 svn 相关的 module 已经放好了,只要 load 一下就行。
配置方面还可以增加认证等等。为了权限管理得更细致,也可以使用 SVNPath 而不是 SVNParentPath。
唉,真是方便,Mac 用来开发,不错!

ssh 免密码登录,脚本

ssh 免密码登录,需要使用公私钥来认证@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

首先通过 ssh-keygen 生成一对公私钥,默认在 ~/.ssh/id_rsa.pub 和 ~/.ssh/id_rsa,前面的是公钥。
认证就是要把这个文件加到远程用户目录 ~/.ssh/authorized_keys 文件中,而且这个文件的权限不能被其它人访问。
下面的脚本能够自动把这个文件放到远程,方法是 ./addpk ip username password
#!//usr/bin/expect
set host [lrange $argv 0 0]
set user [lrange $argv 1 1]
set passwd [lrange $argv 2 2]
proc ssh {cmd} {
    global user host passwd
    spawn ssh $user@$host “$cmd”
    expect {
        “*conne*” {
            send “yes\n”
            expect “*password*”
            send “$passwd\n”
            expect eof
        }
        “*password*” {
            send “$passwd\n”
            expect eof
    }
    }
}
proc scp {src dest} {
    global user host passwd
    spawn scp $src $user@$host:$dest
    expect {
        “*conne*” {
            send “yes\n”
            expect “*password*”
            send “$passwd\n”
            expect eof
        }
        “*password*” {
            send “$passwd\n”
            expect eof
        }
    }
}
ssh “mkdir -p ~/.ssh”
scp “/home/user1/.ssh/id_rsa.pub” “~/.ssh/id_rsa.pub”
ssh “cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys”
ssh “uniq ~/.ssh/authorized_keys > ~/.ssh/authorized_keys.tmp”
ssh “mv ~/.ssh/authorized_keys.tmp ~/.ssh/authorized_keys”
ssh “chmod 700 ~/.ssh”
ssh “chmod 600 ~/.ssh/*”