Category Archives: GNU/Linux

Linux relateed.

搭建本地 ubuntu 12.04 和 ubuntu-cloud 镜像

我们知道,ubuntu 是通过 apt-get 这套包管理软件来安装软件的,比如你要安装 screen, apt-get install -y screen 就可以了,apt-get 就会从网络上的一个软件源里面把 screen 相关的包下载下来,然后安装。apt-get 是从网络端的软件源来安装的,所以在我们装好操作系统后,经常会有这么一步,选择最近的软件源,来替代 /etc/apt/sources.list 配置的默认的软件源,一般我们会用 ustc, 163, souhu 等国内比较快的源。

如果是个人电脑的话,这种方式没有问题,可是如果是公司有很多服务器的情况下,这种方式就不合适了。因为每台服务器升级安装软件都要单独从网络下载一份软件包,一方面由于公司网络带宽的限制,速度不会太快,另一方面,重复下载,浪费带宽。所以考虑在公司内部搭建一个 ubuntu 镜像,作为缓存或者代理,定时和网络上的镜像源同步,把公司里的电脑的源配置成本地源,这样就能既提升速度,又节省带宽。

下面是本人在给公司部署 OpenStack 时候搭建镜像源的过程:

镜像服务器
这里我们用到 apt-mirror
[code lang="bash"]
sudo apt-get install apt-mirror
[/code]
Continue reading

Vagrant:程序员的VirtualBox(一)

前言

VirtualBox相信很多人都用过,它是一个虚拟化软件,用来在我们的电脑上虚拟出一电脑来,和 VMware Workstation, kvm, xen等是一类东西(专业点的说法叫Hypervisor),不过它提供易用的界面(VMware也有),对各平台的支持(Linux, Win, Mac),又非常的轻量,最关键的free呀,所以使用非常广泛。

我们平时使用VirtualBox最常见的情况就是,自己电脑是个Win,想跑个Linux,或者电脑是个Linux,要跑win上网银啊,QQ什么的 win only之类的,虽然有wine这样的东东,可以在Linux下跑win下的软件,但有个win系统稳定性不更好么,并且现在的电脑配置,完全不用担心虚拟机消耗内存CPU什么的,你不用那才是浪费呢,何况VirtualBox这么轻量。个人体验,弄个xp虚拟机跑QQ资源消耗比chrome或者ff登webQQ要少,可恶的用了多少js。。。

对天天码代码的苦逼程序员来说,VirtualBox就不能是简简单单的挂个Q这么用了->_->

程序员搞最多的就是码代码了,可能做很多个项目,公司里搞java的,php的,自己回家再玩个python什么的,想体验下新版本的mongodb或者nginx,Emacs或者vim的配置啦,保不准哪个项目前个版本的数据库是mysql,下个版本用了postgresql, 这么多东西全都搞在一起,装在一个电脑上,肯定会被这各种配置环境搞的晕晕的,烦不胜烦。

怎么办呢,最好是每个项目都有一个干净的开发环境,只为这个项目,可是我们不可能为每一个项目配一个电脑吧,有了,虚拟机,给每一个项目配一个虚拟机,开发A的时候就启A的虚拟机,这样各个开发环境互相独立,干干净净。还有一个问题,我们的项目有多个开发人员,如何保障大家的开发环境都一样呢,总不能每个人都一个个点击鼠标,填写配置参数,建好后上支一个个软件安装吧,这太麻烦了,太不geek了。我们想要的是,环境只配置一遍,然后可以把这个环境打包deliver给别人,别人拿到后,直接启起来就可以用。那有没有这样的东西呢,肯定是有的,Vagrant,它就是用来干这个的。
Continue reading

http代理环境下使用github

公司上网一般是通过http代理,只能访问外网的443和80端口,github现在本身就支持https的方式提交代码,这里讲的是如何通过默认方式即git协议提交代码,我们知道git是基于ssh的,端口是22,github这个服务器的ssh端口我们又不能像自己的服务器一样改成443,怎么办呢。在基于http做好的ssh代理之上,再连接github,已经开启的ssh代理是不受端口限制的。

首先参考 用ssh突破公司http代理,把ssh代理建立起来。
然后按照github的官网Generating SSH Keys,生成密钥,并相应的配置github的帐户。
配置好后在 .ssh/conifg 里添加配置如下:
[code lang="bash"]
Host github.com
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/github.rsa
ProxyCommand nc -x 127.0.0.1:7070 %h %p
[/code]

然后就可以正常使用git clone/pull/push这些命令啦!

这里有个介绍如何直接使用http代理的,没试过,估计是可以的
如何让 Git 使用 HTTP 代理服务器

irssi在http代理条件下登录irc聊天室

公司上网一般是通过http代理,然后只能访问外网的443和80端口,而irc服务器的端口是6667,如irc.freenode.net。那么我们该怎么做呢,可以用ssh的本地端口(Local Forwarding)转发来实现。关于ssh的各种端口转发,SSH Cheat Sheet有详细的介绍。
前提是要能连上ssh服务,如何在http代理环境下连ssh,参考 用ssh突破公司http代理
Continue reading

用ssh突破公司http代理

公司出于安全考虑一般都通过防火墙将内网和外网隔离开来,然后为了控制监控员工的上网行为,架设专门与外网交互的代理,所有的电脑要想上网必须通过这个代理。代理的形式一般是HTTP和HTTPS的,这样做不仅可以限制员工上哪些网站,还能看上网在干啥,http是完全透明的,没有隐私。
作为一个技术人员,我们是不能容忍上网被限制和监控的,怎么办,代理!可以代理的前提是,你要能与外界互通,而现在只能通过公司的http代理与外界互通(当然,你可以突破公司的这种代理限制,另寻与网络互联的方法,不过这种从风险和技术角度来说都有点太过了),所以代理必须能基于http才行。常用的代理是ssh的socks,有没有方法可以在http上打通一层socks通道呢,有,Corkscrew就是专门来干这事的,官方主页的介绍 “Corkscrew is a tool for tunneling SSH through HTTP proxies”,这正事我们想要的。
Continue reading