Posts

2011

Apache+Django+FastCGI

最近在课上做动态网页的作业,虽然要求用JSP完成,但是我实在是不想碰Java,于是跟老师商量了一下决定用Django来做。 程序还没写完,却已经开始琢磨着怎么部署Django,Django Book上建议使用Apache+mod_python的方式实现,但是我在编译mod_python时却总是会出错,Google了一通也没找出原因,索性弃之不用而改用FastCGI。 一点准备工作 安装Apache,虽然更偏爱Nginx,但是这次想尝试一下使用Apache作为Web Server 安装mod_fastcgi,mod_fastcgi是Apache的FastCGI模块 安装flup,flup是一个用来处理FastCGI的Python库 配置Apache 为了让Apache能够使用FastCGI模块,需要编辑httpd.conf,添加一行 LoadModule fastcgi_module modules/mod_fastcgi.so 其次,为了使得目录中的.htaccess文件有效,需要将中的参数 AllowOverride None 改为 AllowOverride All 最后,需要修改参数 Options FollowSymLinks 在此之后添加+ExecCGI,成为 Options FollowSymLinks +ExecCGI 这是为了允许执行目录中的CGI脚本,之前尝试过很多次都无法执行CGI脚本,直到看到这篇文章才明白其中的原因。 部署Django Project 假设/srv/http为网站的根目录,而Django …

#Django#Apache#FastCGI

再见

虽然有太多的不舍,但是在检票口松手的那一瞬间我却并没有多少犹豫,直到——你冲我挥手,然后转身,看着你的背影消失在人海中时,情绪再也控制不住…… 时间真的过得很快,尤其是和你在一起的时候。 仿佛还是昨天,在西站的北二出口见到了你,抑制不住的喜悦。 这么快,却又在西站跟你道别,心中充满了苦涩。 在检票口伫立了很久,直到人群都散去才肯转身离开,下楼。 此时此刻脑子里只有一个念头,我再也不要,再也不要异地了…这确是一种煎熬。 我努力地仰着脸,不让眼泪掉落下来。 在北广场的路边站着发呆很久却不忍离去,因为,这样就可以离你更近一点,虽然我知道,火车开动了,我们,已经越来越远了…… 保重

#love#Aroma

为OpenVZ VPS添加HE IPv6 tunnel

身为校园网用户,由于学校的公网出口带宽很少,纵有教育网千兆带宽,访问国外网站速度依然慢得难以忍受。但是,在教育网使用IPv6速度却还算不错,以至于很多时候不得不通过IPv6绕道访问国外网站。当初选择BURST.NET的VPS,一方面是因为便宜,另一方面也是因为它提供原生的IPv6支持,在教育网访问速度较快。 但是就在几个月前,BURST.NET的VPS上的IPv6线路全部出了问题,SSH完全无法连接,Ping测试也丢包率100%。发了ticket给了BURST.NET的客服,但是过了很久也没有给予解决,也许是因为IPv6的用户实在太少吧。当时在这种情况下,其实想着要换一家VPS商的,但是一时半会儿找不到这么便宜的,而且BURST.NET的IPv4访问速度看起来也还不错,就一直没有换。 过了这么久,BURST.NET的IPv6线路一直没有恢复正常,只好想想办法自己动手解决了。IPv6 tunnel本来是为了给没有原生IPv6支持的服务器提供IPv6访问的解决方案,鉴于我的VPS的IPv6线路基本处于瘫痪的状态,干脆通过IPv6 tunnel给它提供IPv6支持吧。 首先,需要到http://tunnelbroker.net/上申请免费的HE IPv6 Tunnel Broker,注册登录后,点击Create Regular Tunnel 在IPv4 Endpoint中填入VPS的IPv4地址,然后在下面的Available Tunnel Servers选择服务器,可以根据自己VPS的地理位置,选择速度相对较快的服务器。 我本应该选择Los Angeles, CA, US的,但是提示Not Available (Full),只好选择旁边的Fremont, CA, US,然后点击Create Tunnel创建Tunnel 一般来说,成功创建Tunnel后只要按照网站上提供的Example Configurations就可以配置成功了,但是由于我的VPS不支持通过modprobe载入IPv6模块,只好放弃这么做而改用tb-tun 先检查tun/tap设备是否已经打开,可以通过命令cat /dev/net/tun检测,如果返回File descriptor in …

#IPv6#HE#Tunnel#vps

异地恋不是云恋爱

不知不觉就走上了异地恋的这条“不归路”。 Jesse大叔说,我这是“云恋爱”,万一哪天没有了网络,该如何继续? 虽然,我们无法见面,无法拥抱,无法亲吻,无法相拥而眠; 虽然,我们只能靠网络、电话、短信维持着彼此之间的沟通; 虽然,我们的生活无法保持同步。 但是,异地恋并不是云恋爱。 当初要不是我们得以相见,可能永远无法下定爱的决心; 当初要不是我不顾一切穿过半个中国去向你表白,可能永远无法相信心的距离其实可以很近很近; 当初要不是毅然决定回家见你,可能我们需要很久很久才确定此生可以不离不弃。 所以,虽然我们身处异地,但是心却从来没有分开过。 虽然各自远行,相信终有一天,会回到这里。 因为有一颗心在这里等待着,等待着你的归来。

#love#异地恋#云恋爱

HP Veer初体验[多图杀猫]

最近在学校里移动的EDGE网络越来越烂了,每天晚上熄灯之后几乎无法上网,于是终于忍无可忍去办了一张联通3G的卡,但是暂时还不打算丢掉移动的卡,所以就想买个手机让手里这张移动卡还能够用得上~ 正犹豫着要买哪个手机,就在twitter上看到很多人都在讨论HP的Veer,上网搜索了一下觉得看起来挺不错的,于是跟MM商量了一下就决定入手了。 两天之后收到快递,迫不及待地打开包装,嗯,挺漂亮的盒子 盒子侧面的AT&T标志说明了这是一部AT&T定制版的手机 打开盒子,取出手机,顿时被这小巧的外形给萌翻了! 机器尺寸很小,大概也就跟银行卡差不多大吧,刚好可以握在掌心 这么小的屏幕仍然可以有不错的分辨率,显示效果很不错 从Deice info可以看到,WebOS的版本为2.1.2,虽然Veer本身不支持存储卡,但是机身8GB内存也足够使用了。 Veer的充电+数据传输接口,是使用磁性连接的,很特别 Veer的3.5mm耳机接口,同样使用磁性连接 好可爱的充电器! 与我的MOTO MB525对比,明显小巧了很多 主屏幕 短信界面 Google Talk是直接嵌入到短信中的,这一点做得比Android更好 Applications界面 内置的Google Maps,不知道为什么一直无法启用GPS,只能使用Google的定位服务 用了几天Veer之后,感觉webOS的流畅度超出我的想象,尤其是卡片式的多任务切换,感觉比我用过的任何一个操作系统都要棒~唯一美中不足的是,webOS上的应用实在是少得可怜...好在webOS是基于Linux的操作系统,很多Linux上的软件都可以直接移植使用,比如openvpn,关于openvpn的使用可以参考这篇文章http://www.yeyaxi.com/2011/10/how-to-openvpn-in-webos-2-x/

#veer#HP#webOS

将Arch Linux安装到U盘

一直打算在U盘上安装一个系统,一方面可以用来救急,万一主系统出了问题不至于没有电脑可用;另一方面我的笔记本电池很不给力,而使用U盘系统时相对比较省电,在不得不使用电池的时候还可以维持较长的续航时间。 虽然有很多方法可以直接将LiveCD的镜像写入U盘做成LiveUSB,但是这样在U盘里构建的Live系统并没有办法保存系统的更改,而且软件和配置也不方便定制。更重要的是没有找到适合自己使用习惯(Arch Linux)的Live系统,在尝试过几个基于Arch的Live系统感觉均不太满意之后,决定还是直接在U盘中安装系统。 其实在U盘中安装Arch Linux的过程和在硬盘上安装也基本一样,无非是安装的目的载体不同罢了,有了以前安装Arch Linux的经验,倒也不是很困难。 我使用的是一块8G的U盘,全部格式化为ext3文件系统,并挂载到/,考虑到U盘的使用寿命,就没有另外分区给swap了,再说,以现在电脑的内存,也基本用不着swap是吧。 需要注意的几点: 在进行系统配置时,务必记得修改/etc/mkinitcpio.conf,然后在HOOKS中加入对USB的支持,否则开机会无法正常从USB启动。 HOOKS="base udev autodetect pata scsi sata usb filesystems" 如果在U盘中安装了GRUB,则一定要修改/boot/grub/menu.lst,将启动参数中的(hdx,0)改为(hd0,0),因为不管U盘的位置是什么,选择从U盘启动时GRUB总是会将其识别为hd0。 而且由于U盘位置的不确定性,不能再使用root=/dev/sdb2这样的启动参数,而必须改用UUID,比如root=/dev/disk/by-uuid/ef331508-87eb-4d6d-9427-ce4bcc7af812,其中的UUID可以通过blkid命令获得。 为了让系统有足够的时间加载完驱动再去寻找root,最好在参数里加入rootdelay=n,其中n是时间,单位为秒。 这是我的menu.lst文件,仅供参考: # (0) Arch Linux title Arch Linux root (hd0,0) …

#ArchLinux

防止ssh密码遭暴力破解

最近把/var/log/secure给导出了一下,发现里面有很多登录失败的记录,很明显是有人在暴力破解ssh的密码,绝大部分是在尝试root账户的密码,也有一部分是在试不同的账户,虽然密码被试出来的可能性不大,但是为了保险起见,还是打算写个脚本用来自动屏蔽掉这些暴力破解密码的主机。 用来检测主机IP地址的脚本:从/var/log/secure中提取出登录失败的记录,然后把其中失败次数超过10次的IP记录下来,设置iptables规则屏蔽之,并写入ssh_err.log文件。然后只需在crontab中设置定时器每隔5分钟执行一次即可。 #!/bin/bash #Protecting server from brute force password cracking #by Chon http://ichon.me PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin LOG_PATH="/home/ssh_err.log" #指定log文件路径 iptables -F #清除所有规则 date >> $LOG_PATH #在log文件中写入时间 echo " Times IP address" >> $LOG_PATH …

#密码#ssh#bash

在Arch Linux上运行Machinarium(机械迷城)

Machinarium(机械迷城)是我最喜欢的一个解密游戏,由于游戏是采用flash开发的,自然可以跨平台运行。之前用Ubuntu时曾经尝试过在Linux安装Machinarium,但是尝试了很多次一直没有成功,只好作罢。 昨天逛AUR的时候发现AUR里面竟然也有Machinarium,于是又萌生了在Linux上安装Machinarium的想法。 虽然AUR里有Machinarium的PKGBUILD文件,但是本身并不提供游戏文件,因此需要自己去网上下载游戏镜像,然后在Windows上安装, 安装完成后将C:\Program Files\Machinarium目录复制到Linux上,然后需要到官网下载两个Patch,解压缩后放到同一目录下面。此时如果操作正确的话,该目录下面应该会有00 01 10 11这几个子目录和一个名为Machinarium的可执行程序。 Patch 01 Patch 02 接下来,用tar将Machinarium目录打包,操作: tar -zcvf Machinarium_full_en.tar.gz Machinarium 然后就可以使用yaourt -S machinarium命令安装游戏啦,安装过程中会提示找不到游戏文件,这时候这需要输入先前打包的Machinarium_full_en.tar.gz的路径即可,剩下的操作即可自动完成。 安装完成后可以直接输入machinarium命令或者在程序菜单里点击machinarium的图标即可开始游戏,或者在浏览器输入地址/usr/share/games/machinarium/machinarium-browser.swf就可以在浏览器里开始游戏了~ 但是...我在安装完成后,输入machinarium运行之后只会出来一个flash的窗口而没有游戏,而在浏览器中运行则没有任何问题,这种情况可能是没有加载游戏文件导致的,解决方法是修改/usr/bin/machinarium中的内容,将其中的./Machinarium "$@"改成./Machinarium machinarium-browser.swf就可以顺利运行游戏了~ Have fun!

#linux#ArchLinux#Machinarium

AUR ipv6代理

最近回到学校发现AUR(https://wiki.archlinux.org/index.php/Arch_User_Repository)总是连不上,导致很软件包无法更新,于是打算在VPS上设置一个AUR ipv6反向代理。 nginx设置反向代理很简单,只需在配置文件nginx.conf中添加 server { listen 80; listen [::]:80; server_name repo.archlinux.fr; location / { proxy_pass http://repo.archlinux.fr/; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 若要使用AUR ipv6代理,只需在/etc/hosts中添加 2607:f878:3:11:0:302:1191:2 repo.archlinux.fr …

#IPv6#ArchLinux#nginx#AUR#代理