Oct 20

转自:https://liruqi.wordpress.com/2011/02/26/reverse-proxy-for-wordpress/

做这个的起因是之前 @annsherry_ 希望给自己的博客(http://annsherry.wordpress.com/) 绑定一个独立域名。我看了下后台配置,发现 wordpress.com 不让用A记录的方式配置,要想绑定域名,需要把自己的域名 nameserver 改成 wordpress的,让wordpress 帮你解析。作为一名互联网工作者,这种霸王条款当然是深深伤害了像我这种高端用户的感情。所以研究了一下用自己的主机给 *.wordpress.com 做反向代理的方法。

研究过程很纠结。我先把结论拿出来,然后大概解释下为什么。

比如,我希望把 annsherry.wordpress.com 绑定到 liruqi.me。步骤如下:

1. 重新编译 nginx, 加上 HttpSubModule(http://wiki.nginx.org/HttpSubModule) 模块。简而言之,是 ./configure 时加上参数 –with-http_sub_module 其它参数保持不变即可。
2. 修改Nginx 配置。在 http 块中加入 server:

server {
listen   80;
server_name liruqi.me;
location / {
proxy_set_header  X-Real-IP  $remote_addr;
proxy_set_header  Accept-Encoding  ”";
proxy_pass http://annsherry.wordpress.com;
sub_filter annsherry.wordpress.com liruqi.me;
sub_filter_once off;
}
}

3. 启动 nginx 或者重新加载配置文件.

只要 域名 liruqi.me 是指向正确的主机ip, 反向代理就做好了。而且点链接不会跳回到 annsherry.wordpress.com 域名上。

大概说下原理。
a) *.wordpress.com 上的连接不少是绝对路径。如果直接proxy_pass ,再点一次连接就会回到 wordpress 域名上。所以这里做了一个简单的文本替换。
HttpSubModule 仅支持单模式的纯文本替换,不支持正则表达式。如果希望用正则,做一个更复杂的替换,可以考虑一个华人开发的 HttpSubsModule (http://wiki.nginx.org/HttpSubsModule) 第三方模块。

b) proxy_set_header Accept-Encoding ””; 这一项,可以让nginx 不法送 Accept-Encoding HTTP header。这个时候,wordpress 返回的页面是不做 gzip压缩的。因为gzip 压缩之后,文本替换就会失效了。
国外有VPS的同学(而且ip没被墙的),可以考虑用类似的方式给自己的 blogspot 或者其它博客做反向代理。
另外,我现在没有给自己的 liruqi.com 做反向代理了(之前是反向代理到 appspot 上的 micolog),而是直接跳转到 http://liruqi.wordpress.com/。另外,我也建议大家少自己折腾搭建博客,不止一次见过把博客做在 VPS 上,然后因各种原因丢数据。而数据的价值,远大于技术本身。

Oct 20

转自:http://linuxtoy.org/archives/wget-tips.html

Wget 是一个命令行的下载工具。对于我们这些 Linux 用户来说,几乎每天都在使用它。下面为大家介绍几个有用的 wget 小技巧,可以让你更加高效而灵活的使用 wget。

$ wget -r -np -nd http://example.com/packages/

这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。

$ wget -r -np -nd --accept=iso http://example.com/centos-5/i386/

与上一条命令相似,但多加了一个 –accept=iso 选项,这指示 wget 仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,只需用逗号分隔即可。

$ wget -i filename.txt

此命令常用于批量下载的情形,把所有需要下载文件的地址放到 filename.txt 中,然后 wget 就会自动为你下载所有文件了。

$ wget -c http://example.com/really-big-file.iso

这里所指定的 -c 选项的作用为断点续传。

$ wget -m -k (-H) http://www.example.com/

该命令可用来镜像一个网站,wget 将对链接进行转换。如果网站中的图像是放在另外的站点,那么可以使用 -H 选项。

Oct 20

转自:https://gist.github.com/2686973

# /etc/nginx/sites-available/blog.shellexy.info
server {
  resolver 8.8.8.8;
  listen 80;
  server_name blog.shellexy.info;
  #access_log off; 
  access_log  /var/log/nginx/blog.shellexy.info.access.log;
  location / {
    #避免远方启用压缩导致无法替换纯文本
    proxy_set_header Accept-Encoding "";
    #按需替换为您的 blogger
    proxy_pass $scheme://shellexy.wordpress.com$request_uri;
    sub_filter http://shellexy.wordpress.com http://blog.shellexy.info;
    #替换全文所有文本
    sub_filter_once off;
  }
}
Oct 19

转自:http://www.busfly.net/post/452.html

以前一直都是在虚机上跑Linux,眼看着磁盘空间越来越小,速度越来越慢。正好手头有个16G的U盘,就琢磨把Ubuntu装到U盘里面去, 制作一个便携的Linux系统,下面是具体攻略,用的是Ubuntu9.10系统。(本攻略是在U盘完整安装Ubuntu,创建LiveCD请直接跳转到 尾部。此攻略也适用于将Ubuntu安装到移动硬盘)。
1. 下载Ubuntu CD镜像,刻盘。

2. 开机,光盘启动到Ubuntu,选择Try Ubuntu without change ….

3. 进去光盘系统后,插入U盘,用System->gParted给U盘分区,具体如下:
3.1 桌面右击U盘图标, Unmount之。
3.2 启动gParted,选中U盘,在我机器上硬盘式sda,U盘是sdb,注意千万不要误选原来的硬盘。
3.3 删除已有分区。
3.4 新建一个Extended分区sdb,直接OK。
3.5 sdb下新建一个Logical分区sdb1,FAT32格式,设了2G给Windows下继续当U盘用,也可以避免误把U盘格掉。
3.6 sdb下新建一个Logical分区sdb2,选ext3或者ext4格式,用来安装Ubuntu。
3.7 因为有2G内存,不打算建SWAP分区了,如果以后要用,可以挂载swap文件。

4. 分区完毕,可以开始安装了(跑到Windows下看了下,FAT32分区可用)。

5. 点击桌面的安装图标,开始安装Ubuntu了,选择语言,时区,键盘。

6. 开始选择磁盘了,这一步万分忐忑,生怕不小心把硬盘上的系统给搞崩溃了,选高级,自己指定分区。

7. 选择刚才创建的用来安装sdbx分区(奇怪,在gParted里面U盘第二个分区是sdb2, 现在变成了sdb6),点下面的Change按钮,在这个分区挂载根目录/,格式选ext3或ext4。

8. 谨慎点击Next,设置姓名密码之类的,一直到最后一步显示安装概要的时候,点击右下角的Advanced按钮,设置将Loader安装到U盘sdb(将Grub装到U盘上,不要碰原来硬盘,不然有啥闪失就亏大了)。

9. 漫长的等待,跑去洗了个澡,吃了些东西,上了会儿网,看了会儿书。终于到了100%了,”copying installation logs”,居然挂在那儿不动了。这是Ubuntu的一个BUG,不用管,直接重启。

10.BIOS设置U盘启动,开机即可进去Ubuntu了,注意还有事情要做。因为U盘频繁读写会严重影响U盘寿命,所以需要把一些目录挂在到RAM盘中去。
10.1 sudo gedit /etc/fstab。
10.2 在fstab尾部添加一行:”none tmpfs /tmp size=200m 0 0″ 给了200M空间。
10.3 我把/home/myname/Downloads也给挂进去了,其他常读写的地方可能还有/var/tmp等。

11 保存fstab文件,重启,添加速度快的源,安装Ubuntu Tweak,更新,安装各种软件,够折腾的了。

Ubuntu支持直接用U盘制作LiveCD,LiveCD可以理解成U盘光碟,能够启动,但是不能在U盘写入内容,无法安装软件。具体创建方法是
a. 虚机加载Ubuntu ISO镜像(或者刻盘,光盘启动)
b. 插入USB
c. 运行System->Administer->LiveCD USB Creator

Oct 19

转自:http://blog.csdn.net/vah101/article/details/6117563

最近突发奇想,打算定制一个Ubuntu 10.10桌面最小系统,并且将其制成LiveCD。以下是我的制作过程。

1.首先要下载ubuntu-10.10-alternate-i386.iso和ubuntu-10.10-desktop-i386.iso镜像,之所以要用2个镜像是因为需要通过ubuntu-10.10-alternate-i386.iso来安装命令行系统,再在命令行的基础上安装X11环境和GNOME环境,而ubuntu-10.10-desktop-i386.iso则是用来制作LiveCD。alternate版和desktop版的区别在http://www.linuxdiyf.com/bbs/thread-64198-1-1.html有详细的介绍,主要就是安装原理的不同desktop版相当于一个LiveCD,安装时就是从光盘将Ubuntu系统“恢复”到硬盘,而alternate版才是真正意义上的安装程序,并且可以只安装命令行系统。

2.用ubuntu-10.10-alternate-i386.iso引导开机,选择好语言后,按F4选择安装模式为“安装命令行系统”,再按“安装Ubuntu”,就可以开始了。

3.安装完,重启后执行 $sudo apt-get update 更新源下载文件,再执行

$sudo apt-get install openssh-server

安装ssh server,

4.下载并安装X-window环境,执行

$sudo apt-get install x-window-system-core

5.再就要安装显卡驱动了,由于我用的VMWare虚拟机的显卡驱动已经被Ubuntu集成了,所以这一步可以跳过

6.安装GNOME桌面环境

$sudo apt-get install gnome-core

安装gnome-core需要的包较多,可能会下载比较长的时间

7.安装Compiz窗口管理器

$sudo apt-get install compiz

按道理这个不需要装的,但是不安装的话,ubuntu新开窗口不能移动,缩放。

8.安装输入法管理器与小企鹅输入法

$sudo apt-get install im-switch
$sudo apt-get install fcitx

某些情况下可能,在安装了fcitx输入法以后可能会出现和SCIM并存的问题,只要用im-switch把默认输入法改成fcitx就可以了:

$sudo im-switch -a fcitx
$im-switch -a fcitx

9.设置英语界面中文输入环境,如果不需要输入汉字的话,8、9两步可以省略

$sudo vim.tiny /etc/environmont

添加:

LC_CTYPE=zh_CN.UTF-8

10.安装中文字体(如果执行了第8步,这一步可以省略)

$sudo apt-get install ttf-arphic-uming

11.现在运行$sudo startx就可以进入Ubuntu的图形界面了。第一次进入界面,会看到”OAFILD:Gnome_FastUserSwitch Applet”的出错窗口,这实际上是一个快速切换用户的功能包,要解决的话,要执行

$sudo apt-get install indicator-applet-session

12.再安装gdm这样下次重启就能直接进入GNOME界面了,

$sudo apt-get install gdm

也可以把startx写到/etc/rc.d/local下

13.执行$sudo apt-get clean,再执行df -h可以看到装完整个系统用了大约1.2G的空间。

安装系统到此可以告一段落了,下面就可以开始制作LiveCD了。前文已经说过,ubuntu-10.10-desktop-i386.iso实际上就是一个现成的LiveCD,我们只要利用它的结构,就可以方便快捷的生成自己的最小系统LiveCD了。这里主要做的事情是首先将已安装操作系统上的文件备份成一个squashfs归档文件,然后将ubuntu-10.10-desktop-i386.iso里的内容拷贝出来,用新的squashfs文件替换掉里面已有的文件,再调整一些配置,然后将其生成新的ISO文件,再将其刻录成CD或者制成USB引导盘,这个过程就算大功告成了。

1.将当前操作系统备份成squashfs归档文件,有很多工具,其中最简便的就数国内某大牛写的Live Ubuntu Backup V2.2了,尤其是它还支持中文提示,在http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=206287 可以看到使用说明。这是一个shell脚本写成的Ubuntu备份工具,直接运行即可。

将lub拷贝到/home下,$sudo chmod 777 /home/lub 然后执行$sudo /home/lub -b,然后按e或c来选择是英文提示,还是中文提示。第一次执行时,可能会提示需要安装lupin-casper和squashfs-tools,其中lupin-casper可以忽略,而squashfs-tools必须安装,运行$sudo apt-get install squashfs-tools即可。

之后再次运行$sudo /home/lub -b,依提示运行,就能在用户文件夹下生成一个backup-2011.01.05的目录了,其中有的backup-2011.01.05.squashfs文件就是我们想要的。

2.再将ubuntu-10.10-desktop-i386.iso拷贝到用户目录下,比如/home/jxg/下,

创建一个目录,用来挂载ubuntu-10.10-desktop-i386.iso

$sudo mkdir /home/jxg/mnt ,

将ISO挂载到/home/jxg/mnt下

$sudo mount -o loop /home/jxg/ubuntu-10.10-desktop-i386.iso /home/jxg/mnt

创建一个livecd的工作目录

$sudo mkdri /home/jxg/livecd

将mnt目录下casper/filesystem.squashfs以外的内容,同步的livecd工作目录上

$sudo rsync --exclude=/home/jxg/mnt/casper/filesystem.squashfs -a /home/jxg/mnt/ /home/jxg/livecd

下面,我们要对/home/jxg/livecd/casper/目录下的filesystem.squashfs、filesystem.manifest、filesystem.manifest-desktop这三个文件进行操作,由于它们只有读权限,所以先执行

$sudo chmod o+w /home/jxg/livecd/casper/filesystem.*

将刚才lub生成的那个backup-2011.01.05.squashfs文件,拷贝成/home/jxg/livecd/casper/filesystem.squashfs

执行:

$sudo cp /home/jxg/backup-2011.01.05/backup2011.01.05.squashfs /home/jxg/livecd/casper/filesystem.squashfs

此外,还要更新/home/jxg/livecd/casper/目录下的filesystem.manifest和filesystem.manifest-desktop,这两个文件实际上是LiveCD系统内所装包的列表,通过以下方式更新

$sudo dpkg -l | grep ii | awk '{print $2,$3}' > /home/jxg/livecd/casper/filesystem.manifest
$sudo dpkg -l | grep ii | awk '{print $2,$3}' > /home/jxg/livecd/casper/filesystem.manifest-desktop

实际上filesystem.manifest-desktop和filesystem.manifest是有所不同的,主要是少了ubiquity casper live-initramfs user-setup discover1 xresprobe os-prober libdebian-installer4这几个包,这里我将其忽略了。

3.退回的LiveCD的工作目录 /home/jxg/livecd 下,执行

$cd /home/jxg/livecd
$sudo rm md5sum.txt
$find -type f -print0 | sudo xargs -0 md5sum | grep -v ./isolinux/ | grep -v ./md5sum.txt | sudo tee md5sum.txt

更新原有的md5sum

4.将工作目录下的内容打包成ISO
安装ISO打包工具

$sudo apt-get install mkisofs

将livecd内的内容打成ISO包,执行

$sudo mkisofs -D -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-jxg-test.iso .

这个一定要在工作目录的跟下执行,并且命令最后的 . 一定不要忘记。命令完成后,就可以在上一级的目录下发现ubuntu-jxg-test.iso文件了,大小为407MB

总结,实际上我的制作过程中,对包的选择比较粗放,很多包比如 indicator-applet-session 、 gdm 、fcitx包都可以不装,并且对linux的内核也没有裁剪,限于时间所限,目前只能做到这一步了,其实还有Ubuntu精简还有很大的潜力。我使用LXDE替代GNOME制作了一个LiveCD包,只有350多M,过程参见 基于LXDE的Ubuntu桌面最小系统LiveCD

参考文档:
最小化定制Ubuntu
http://keqi360.blog.163.com/blog/static/636039142009221112144993/
制作自己的Ubuntu安装盘
http://upc.gg.blog.163.com/blog/static/297984982010930644120/
从零开始构建Ubuntu LiveCD
http://shenqiubufu.blog.163.com/blog/static/1627924942010814101024134/
Live Ubuntu Backup V2.2,备份你的 ubuntu 为可启动的 squashfs 文件
http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=206287