ubuntu下gitosis的安装

还是使用gitlab吧~~~~ https://about.gitlab.com/

参考 ubuntu wiki上的文章: Git服务器Gitosis安装设置

毫无疑问,工具的安装过程中总是会出现教程未提及的错误处理,解决起来很是麻烦,在此记录一二,也许对未来人有帮助。

1 获取并安装gitosis

教程里是 git clone git://eagain.net/gitosis.git,但是我clone不下来,于是取github上获取,项目地址:https://github.com/res0nat0r/gitosis.git

2 gitosis 安装后,会有3个可执行命令生成到 /usr/local/bin 下

gitosis-server gitosis-ini gitosis-run-hook

但是安装过程中提示 bash: gitosis-serve: command not found 等错误,解决方案

软链这几个命令到  /usr/bin 目录之下。

3 gitweb安装之后,倒不用像 wiki 里面那么复杂的配置

<VirtualHost *:80>
        ServerName www.yooshang.com
        ScriptAlias /gitweb/ /usr/lib/cgi-bin/
        DirectoryIndex /gitweb/gitweb.cgi
        DocumentRoot /home/git/gitweb
</VirtualHost>

设置了 gitweb 的解析路径为 /home/git/gitweb 把,gitweb需要引用的静态资源软链到此路径

sudo vi /etc/gitweb.conf 修改 $projectroot 改为git仓库存储目录(例如:/home/git/repositories),apache进程需要有该路径的755权限,
那么所有的可读项目都会暴露出去了,不好控制。
所以我的做法是在gitweb创建一个 repositories 目录,我需要在 gitweb 展示的仓库,则软链到 repositories 路径下。

Linode VPS OpenVPN安装配置教程(基于Debian/Ubuntu)

转载至:VPS侦探  链接地址:http://www.vpser.net/build/linode-install-openvpn.html

因为众所周知的原因,目前Gmail等相关服务原来越不稳定,虽然可以通过SSH来解决,但是打开网站一多SSH也有些力不从心,VPS侦探以前发表过在Linode VPS安装PPTP VPN的教程,相对于PPTP来说OpenVPN加密型更强,而且穿透性更强。

本教程也适用其他的基于Debian/Ubuntu Linux的VPS/服务器,也已在DiaHostingVPSYOUPhotonVPS123Systems、oplink上测试通过,如有问题欢迎反馈。(Linode购买及测试教程:http://www.vpser.net/usa-vps/linode.html

1、安装

apt-get install openvpn udev lzop

2、使用easy-rsa生成服务端证书

将OpenVPN所需的配置文件复制到/etc/openvpn/下面:

cp -r /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/

生产CA证书:

cd /etc/openvpn/easy-rsa/2.0
source vars
./clean-all
./build-ca

./build-ca时会提示输入一些信息,可以都直接回车按默认信息。

生成服务器端证书和密钥,server为名字可以自定义:

./build-key-server server

此步也是会提示输入一些信息,前面的信息直接回车按默认信息,提示Sign the certificate? [y/n]:时输入y,提示1 out of 1 certificate requests certified, commit? [y/n] 也是输入y。

生成客户端证书和密钥,client为名字可以自定义,注意前面的./build-key-server与./build-key client输入的名字不能相同:

./build-key client

前面的信息直接回车按默认信息,提示Sign the certificate? [y/n]:时输入y,提示1 out of 1 certificate requests certified, commit? [y/n] 也是输入y

生成其他的客户端就是执行:./build-key 你想添加的客户端的名字。

生成的证书和密钥存放在/etc/openvpn/easy-rsa/2.0/keys/下面。

生成Diffie Hellman参数:

./build-dh

3、配置OpenVPN服务

编辑/etc/openvpn/server.conf 文件,如果没有可以创建一个,加入下面的内容:

local 服务器IP
port 8080    #端口,需要与客户端配置保持一致
proto udp    #使用协议,需要与客户端配置保持一致
dev tun         #也可以选择tap模式
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pemifconfig-pool-persist ipp.txtserver 10.168.1.0 255.255.255.0    #给客户的分配的IP段,注意不要与客户端网段冲突!push "redirect-gateway"

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
client-to-client

;duplicate-cn

keepalive 20 60

comp-lzo

max-clients 50

persist-key
persist-tun

status openvpn-status.log
log-append openvpn.log
verb 3
mute 20

按上述说明修改服务器IP,复制到VPS上是可以把注释信息删除。

安装iptables

apt-get install iptables   #如果已经安装可以跳过

设置IP转发

iptables -t nat -A POSTROUTING -s 10.168.0.0/16 -o eth0 -j MASQUERADE
iptables-save > /etc/iptables.rules

上面的eth0要替换为你的网卡标识,可以通过ifconfig查看。

在/etc/network/if-up.d/目录下创建iptables文件,内容如下:

#!/bin/sh
iptables-restore < /etc/iptables.rules

给脚本添加执行权限:

chmod +x /etc/network/if-up.d/iptables

修改/etc/sysctl.conf的内容为:

net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0

重新载入/etc/sysctl.conf使其生效,执行如下命令:

sysctl -p

重启OpenVPN及网络:

/etc/init.d/openvpn restart
/etc/init.d/networking restart

4、安装配置OpenVPN客户端

下载客户端

打开http://openvpn.net/download.html,点击Windows Installer后的链接,下载OpenVPN Windows客户端。

下载完成后,安装,安装中的选项全部按默认即可。

下载客户端证书及密钥:

证书和密钥存放在/etc/openvpn/easy-rsa/2.0/keys/下面,可以使用winscp链接到VPS上下载。

将/etc/openvpn/easy-rsa/2.0/keys/下面的ca.crt、client.crt、client.key下载到C:\Program Files\OpenVPN\config 下面。

创建客户端配置文件

在C:\Program Files\OpenVPN\config 下面创建一个linode.ovpn的文件,添加如下内容:

client
dev tun       #要与前面server.conf中的配置一致。
proto udp              #要与前面server.conf中的配置一致。
remote 服务器IP 8080    #将服务器IP替换为你的服务器IP,端口与前面的server.conf中配置一致。
resolv-retry infinite
nobind
persist-key
persist-tun
ca linodeca.crt
cert linodeclient.crt
key linodeclient.key
ns-cert-type server
redirect-gateway
keepalive 20 60
#tls-auth ta.key 1
comp-lzo
verb 3
mute 20
route-method exe
route-delay 2

5、OpenVPN客户端连接测试:

运行OpenVPN GUI,会在屏幕右下角的系统托盘区,会显示右击该图标,会在菜单中出现我们添加的服务器,点击Connect,OpenVPN客户端就会开通链接OpenVPN服务器,过一会儿,OpenVPN图标变成绿色就是链接成功了。

如果想实现国内网站不走VPN,国外网站走VPN可以看一下:http://code.google.com/p/chnroutes/wiki/Usage 这个教程。

如有问题欢迎反馈,或到VPS论坛交流。

 

在自己的linode vps搭建成功,成功翻墙~

转载:Emacs23编译安装过程

转载至:http://www.quhuashuai.com/wiki/emacs:emacs23%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85%E8%BF%87%E7%A8%8B

整个过程基于Ubuntu 7.10,主要内容参考Ubuntu中文论坛的《Emacs23配置指南》, 并随时更新。
准备工作

编译前的准备工作,配置编译环境


sudo apt-get install ssh cvs
sudo apt-get install texinfo
sudo apt-get install build-essential
sudo apt-get build-dep emacs22
sudo apt-get install xserver-xorg-dev
sudo apt-get install xorg-dev
sudo apt-get install libncurses5
sudo apt-get install libncurses5-dev
sudo apt-get install libgtk2.0-dev

获取源代码

通过CVS获取最新的Emacs代码,建议在/usr/local/src目录下载,下载之后的源码位于/usr/local/src/emacs。之所以建议在/usr/local/进行编译安装,是因为这样便于备份。在终端下输入

export CVS_RSH="ssh"
cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co emacs

编译安装

进入cvs得到的Emacs目录,进入编译过程。configure过程中的参数可以根据自己需要自己查看configure.ini文件。如果在编译过程中提示缺少包,直接apt-get install就可以了。安装之后默认的路径应该是在/usr/share/emacs/23.0.60

./configure --enable-font-backend --with-xft --with-freetype --with-x-toolkit=gtk
make bootstrap
make info
sudo make install

初步配置

对于配置Emacs,个人感觉直接借鉴一个高手的配置开始使用更为实在。在自己的学习使用过程中慢慢修改,按照自己的需要添加或者删除扩展。

在这里仅仅说明一下字体的配置,因为Emacs23支持xft字体,当然你在configure的时候要加上–with-xft这个参数,这样才可以。大家可以根据自己的需要修改字体,我个人比较偏爱Monaco而已。


(set-default-font "Monaco-10")
(set-fontset-font (frame-parameter nil 'font)
'han '("AR PL ShanHeiSun Uni". "unicode-bmp"))
(set-fontset-font (frame-parameter nil 'font)
'cjk-misc '("AR PL ShanHeiSun Uni" . "unicode-bmp"))
(set-fontset-font (frame-parameter nil 'font)
'bopomofo '("AR PL ShanHeiSun Uni" . "unicode-bmp"))
(set-fontset-font (frame-parameter nil 'font)
'gb18030 '("AR PL ShanHeiSun Uni". "unicode-bmp"))
(set-fontset-font (frame-parameter nil 'font)
'symbol '("AR PL ShanHeiSun Uni". "unicode-bmp"))

在线图片转base64编码

功能:在线将图片转化为base64编码,在css中,可以减少HTTP请求数

链接:http://www.motobit.com/util/base64-decoder-encoder.asp

使用方法:

.class{
background:url("data:image/png;base64,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") center 5px no-repeat;
}

在线native2ascii

功能:中文转ascii码,在js文件中使用,因为一些压缩js的程序对中文压缩有问题。

链接:在线native2ascii

主要转换代码:http://www.00bug.com/js/native2ascii3.js

<code>

////////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2008 http://www.native2ascii.com.  All rights reserved.
//	Author:Hans He
//	Date:2008-12-16
//
////////////////////////////////////////////////////////////////////////////////
function native2ascii(){
var character=document.getElementById("characterTa").value.split("");
var ascii="";
for(var i=0;i<character.length;i++){
var code=Number(character[i].charCodeAt(0)); // charCodeAt->获得Unicode 编码
if(!document.getElementById("ignoreLetter").checked||code>127){
var charAscii=code.toString(16);  //转换为16进制
charAscii=new String("0000").substring(charAscii.length,4)+charAscii;
ascii+="\\u"+charAscii
}else{
ascii+=character[i];
}};
document.getElementById("asciiTa").value=ascii;};
function ascii2native(){var character=document.getElementById("asciiTa").value.split("\\u");var native=character[0];for(var i=1;i<character.length;i++){var code=character[i];native+=String.fromCharCode(parseInt("0x"+code.substring(0,4)));if(code.length>4){native+=code.substring(4,code.length);}};document.getElementById("characterTa").value=native;}

</code>

原理:获得输入框里的值,然后逐个转换为unicode编码(这个返回值是 0 – 65535 之间的整数),unicode转化为16进制,再添加上”\\u”前缀