搭建Git服务器-gitolite

git就是一个很流行的版本控制工具,至于gitolite的介绍,可以参考官方网站

直接进入正题

  • 安装git
    yum install git
  • 添加git用户及git组,目录仅供参考,可以设置成其他的
    mkdir -o /data/git
    groupadd git
    useradd -g git -d /data/git -s /bin/bash git
  • 修改git用户密码,及git目录权限
    passwd git
    chown -R git:git /data/git
    chmod -R 2755 /data/git
  • 客户端声称ssh-key,YOURNAME改成你喜欢的
    ssh-keygen -t rsa -f ~/.ssh/YOURNAME
    然后把~/.ssh/YOURNAME.pub传到服务器上(scp/ftp…)
  • 安装gitolite
    su git
    cd $HOME
    git clone git://github.com/sitaramc/gitolite
    cd gitolite
    src/gl-system-install
    echo "PATH=$PATH:$HOME/bin" >> ~/.bashrc
    source ~/.bashrc
    gl-setup ~/YOURNAME.pub       #这里就是你刚才传的那个公钥

服务器端搭建结束,快吧!

接下来是gitolite的配置,以下都是在客户端进行,客户端要有git

  • 编辑~/.ssh/config,仿照以下内容
    host gitolite #只是一个名字
            user git
            hostname YOUR SERVER NAME/IP
            port 22    #ssh端口号,默认22,改成你的
            identityfile ~/.ssh/YOURNAME    #最开始ssh-keygen生成的那个
  • 改config文件权限(不改似乎也行)
    chmod 0644 config
  • 找个好地方,把gitolite-admin clone下来
    git clone gitolite:gitolite-admin
  • 设置git管理员信息,任意
    git config –global user.email "YOUREMAIL"
    git config –global user.name "YOURNAME"
  • 添加用户(首先要得到那个用户机器上生成的ssh-key)
    cd gitolite-admin/
    cp ANOTHERUSER.pub keydir/ANOTHERUSER.pub
    git add keydir/
    git commit -m "add new user"
    git push
  • 添加用户完成,如需添加多个用户方法类似

–以上–

CentOS上L2TP安装与配置

2012.04.10 更新:ubuntu上除了安装,以及xl2tpd的启动脚本以外,本文的配置方法测试可行。采用编译安装可以参考这篇文章

2011.11.28 更新:CentOS 6 32bit 下xl2tpd,openswan等安装参照这篇文章,xl2tpd的启动脚本参考这篇文章,配置还是照本文的配置就ok(已经做了一些小修改),如果iptables重启后要重新配置一下才好使可以考虑将iptables那段添加到/etc/rc.local里面

先说下我的环境:CentOS 5.4 32bit 安装了Nginx

针对CentOS有L2TP的一键安装包,首先我推荐尝试一下这个安装包,毕竟很方便,但是我RP不好,这个一键包不仅没能让L2TP在我的机器上正确运行,还因为iptables配置不正确导致Nginx出现404,502错误,如果你也遇到了这个问题,可以简单的通过
service iptables stop
来重置并关闭iptables,以修复nginx的404,502错误,接下来再启用iptables就没什么问题了.但是来l2tp也就肯定不能连接了

这篇文章参考了这里,这里,这里,这里和这里的文章,建议一起看看
下面进入正题:

  1. 安装必须的包
    yum install -y ppp iptables make gcc gmp-devel xmlto bison flex xmlto libpcap-devel lsof vim-enhanced
    
  2. 编译安装OpenSwan
    wget http://www.openswan.org/download/openswan-2.6.24.tar.gz
    tar zxvf openswan-2.6.24.tar.gz
    cd openswan-2.6.24
    make programs install
    
  3. 安装xl2tpd
    yum install xl2tpd
    
  4. 编辑 /etc/ipsec.conf 注意$vpsip替换成你机器的ip
    config setup
        nat_traversal=yes
        virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
        oe=off
        protostack=netkey
    
    conn L2TP-PSK-NAT
        rightsubnet=vhost:%priv
        also=L2TP-PSK-noNAT
    
    conn L2TP-PSK-noNAT
        authby=secret
        pfs=no
        auto=add
        keyingtries=3
        rekey=no
        ikelifetime=8h
        keylife=1h
        type=transport
        left=$vpsip #改这里
        leftprotoport=17/1701
        right=%any
        rightprotoport=17/%any
    
  5. 编辑 /etc/ipsec.secrets注意$vpsip替换成你机器的ip, $mypsk替换成你想要的密钥
    $vpsip %any: PSK "$mypsk"
    
  6. 修改/添加 /etc/sysctl.conf
    net.ipv4.ip_forward = 1
    net.ipv4.conf.default.rp_filter = 0
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.all.log_martians = 0
    net.ipv4.conf.default.log_martians = 0
    net.ipv4.conf.default.accept_source_route = 0
    net.ipv4.conf.all.accept_redirects = 0
    net.ipv4.conf.default.accept_redirects = 0
    net.ipv4.icmp_ignore_bogus_error_responses = 1
    
  7. 让修改后的sysctl.conf生效
    sysctl -p
    
  8. 验证ipsec运行状态
    ipsec setup restart
    ipsec verify
    

    输出以下内容ipsec就配置成功了

    Checking your system to see if IPsec got installed and started correctly:
    Version check and ipsec on-path                             	[OK]
    Linux Openswan U2.6.24/K2.6.32.16-linode28 (netkey)
    Checking for IPsec support in kernel                        	[OK]
    NETKEY detected, testing for disabled ICMP send_redirects   	[OK]
    NETKEY detected, testing for disabled ICMP accept_redirects 	[OK]
    Checking for RSA private key (/etc/ipsec.secrets)           	[OK]
    Checking that pluto is running                              	[OK]
    Pluto listening for IKE on udp 500                          	[OK]
    Pluto listening for NAT-T on udp 4500                       	[OK]
    Two or more interfaces found, checking IP forwarding        	[OK]
    Checking NAT and MASQUERADEing
    Checking for 'ip' command                                   	[OK]
    Checking for 'iptables' command                             	[OK]
    Opportunistic Encryption Support                            	[DISABLED]
    
  9. 编辑 /etc/xl2tpd/xltpd.conf
    [global]
    ipsec saref = yes
    listen-addr = $vpsip ;服务器地址
    [lns default]
    ip range = 10.1.2.2-10.1.2.254 ;这里改成你想要的ip范围
    local ip = 10.1.2.1 ;这里改成你想要的ip
    refuse chap = yes
    refuse pap = yes
    require authentication = yes
    ppp debug = yes
    pppoptfile = /etc/ppp/options.xl2tpd
    length bit = yes
    
  10. 编辑 /etc/ppp/options.xl2tpd
    require-mschap-v2
    ms-dns 8.8.8.8
    ms-dns 8.8.4.4
    asyncmap 0
    auth
    crtscts
    lock
    hide-password
    modem
    debug
    name l2tpd
    proxyarp
    lcp-echo-interval 30
    lcp-echo-failure 4
    
  11. 配置用户名,密码:编辑 /etc/ppp/chap-secrets
    # user server password ip
    username * userpass * #改成你的用户名 密码
    
  12. 重启xl2tp
    service xl2tpd restart
    
  13. 设置iptables,注意$vpsip改成你机器的ip, 最后一行10.1.2.0改成跟你前面设置xltpd.conf时对应的ip
    iptables -A INPUT -p 50 -j ACCEPT
    iptables -A INPUT -p udp -d `ifconfig | grep 'inet addr:'| grep -v '$vpsip' | cut -d: -f2 | awk 'NR==1 { print $1}'` --dport 500 -j ACCEPT
    iptables -A INPUT -p udp -d `ifconfig | grep 'inet addr:'| grep -v '$vpsip' | cut -d: -f2 | awk 'NR==1 { print $1}'` --dport 4500 -j ACCEPT
    iptables -A INPUT -p udp -d `ifconfig | grep 'inet addr:'| grep -v '$vpsip' | cut -d: -f2 | awk 'NR==1 { print $1}'` --dport 1701 -j ACCEPT
    iptables -t nat -A POSTROUTING -s 10.1.2.0/24 -o eth0 -j MASQUERADE
    
  14. 保存
    service iptables save
    service iptables restart
    
  15. 添加启动项
    chkconfig xl2tpd on
    chkconfig iptables on
    chkconfig ipsec on
    

l2tp配置完成,过程如有疏漏欢迎批评指正

可能的问题及解决方法:

  1. iptables Setting chains to policy ACCEPT: security raw nat mangle filter [FAILED] 问题
    http://vps.openzz.com/archives/224

–以上–

 

博客迁移到VPS啦!

更新:目前已经放弃Diahosting转用Linode,对比起来虽然linode最便宜那款相对Diahosting的X180贵了一倍,但是无论从性能还是网络延迟方面都比Diahosting要好,对于想体验高质量服务同时又不希望成本第一些的用户来说可以考虑合租,唯一一点不足的就是支付需要用支持美金支付的信用卡,关于这点可以通过淘宝代购解决。

本博客之前一直都是建在Godaddy买域名给的免费空间上,虽然那个免费空间有广告(在顶端,超大),但是你选择Windows主机然后升级成IIS 7那个广告就出不来了(这似乎是个Godaddy没解决的技术问题),这个方法强烈建议建站新手尝试,连空间带域名一年多说60人民币,买info域名更爽才10块,至于.XXX肯定就贵了.这个免费空间速度还算可以,就是有时候线路抽风,访问比较慢,总体还能令人满意(毕竟不要钱).

这里PS一下,Godaddy有各种优惠码,买得时候查一下.能省不少钱,另外除非很便宜,否则没必要找淘宝代购,付款时支持支付宝,而且币种兑换没有手续费,相当方便.有关教程Google一下,满地都是. >>7.49 .com 域名@Godaddy(广告XD).

用了半年后,这个免费空间上搭建的Wordpress在更新时经常出错,总是不能正确删除旧版的插件目录,ftp上去也不行,过一小时没准那个目录就自己消失了,由于把广告弄掉了也没好意思找客服问,折磨得但疼就准备花钱换主机了.但是光是主机真是没啥意思,一点Geek精神都没有,所以VPS是个好选择,虽然贵了很多,但是可玩性高不少,别人推荐的便宜又稳定的VPS有PhotonVPS,还有国内的Diahosting,我选择了Diahosting最便宜的那个X180(63一个月),理由就是我买完才发现Photon的更便宜.至于哪个更稳定,我也不知道.

Diahosting是中文客服,Ticket处理蛮快的,有什么问题很快就解决了,至今不满意的一点就是最近有时掉包严重(洛杉矶机房),跟客服沟通了下,客服说最近网通出口有问题,机房正努力解决,希望早点解决吧.另外Diahosting的Xen-shell可以自己重装系统,很方便.

配置VPS没有想象得困难(lnmp+wordpress+phpmyadmin),lnmp教程基本参考这个(愿意用一键安装脚本也可以)

对于这个教程的几点补充:

  • 第一步那里有个地址已经失效了,到这里找最新的包就可以了,要不然不能直接yum install php535,你自己编译安装就用不着了
  • 这个教程有个缺点就是通过yum安装的Php的Mysql Library是通过旧版的MySQL编译的,进入phpmyadmin的时候会有提示(我的是:你的 PHP MySQL 库版本 5.0.94 和你的 MySQL 服务器版本 5.5.15 不同。这可能造成一些未知的问题。),没有洁癖得无视就好了,有洁癖的安装php时就自己编译一下,也不费劲.
  • 教程里没有提到nginx的配置问题,这个自己查一下,也很好解决。
  • 至于phpmyadmin,解压缩然后改以下那个config文件就好

遇到的问题及可能的解决方法:

  • 访问.php文件时浏览器显示空页面—-nginx配置文件中php脚本转发那里有问题,一般是php文件路径的问题。
  • phpmyadmin登陆那里无法登陆,无论对错都只是刷新一下,没有提示也不能过去—-跟上一个问题一样。
  • wordpress固定链接问题—-Apache和lighttpd比较幸福,nginx还是要改配置文件,转发规则有个.htaccess和nginx在线转换的一个网站,转换完帖到响应位置即可
  • wordpress插件wp-db-backup不能发送邮件—-安装sendmail

至于ftp(vsftpd)没什么难度,随便一个教程即可

pptpd(都知道是干什么的吧),这里有一键安装包,超方便。

学校连不上pptp,今天又折腾了l2tp,这个费了点劲,有空写个教程。

总体来讲新手配置VPS并不是很难,教程太多了,但是需要有一点terminal基础,再有就是改完配置文件注意重启响应服务才能让配置文件生效。

–以上–