虚拟主机方案 – Apache + SuEXEC + (F)CGI + PHP-CGI

首先非常感谢浪点主机技术支持给我的方向,使我有机会能够了解虚拟主机的另一方案。

A. 特点
1. 权限分离,用户间互不干扰。
2. 相对使用ITK MPM方案内存需求更小,响应速度更快,并发高。
3. 可定制性强。

B. 应用程序说明
Apache: 不多说,HTTP服务器。
SuEXEC: Apache的模块,用于实现CGI或SSI应用程序的用户权限分离。
(F)CGI: Apache的模块,用于使Apache能够执行CGI和PHP-CGI。
PHP-CGI: PHP的CGI接口版本。

C. CGI模块和FastCGI模块的区别和适用环境
CGI模块为每个CGI请求fork一个新的进程,处理完成后该进程释放。适用于并发要求不高,内存资源少的系统。
FastCGI模块采用常驻的进程处理请求,由模块统一调度。适用于并发要求高,内存充足的系统。
Continue reading 虚拟主机方案 – Apache + SuEXEC + (F)CGI + PHP-CGI

HTTP Cookie 与 Session 乱云

JSP、Java Servlet。不爽,我不爽东学点西学点,样样精通者样样稀松,怎么办?于是想通过 JSP、Servlet 搞明白其中的作用原理,HTTP 才是王道,和服务端语言有个辣子关系。Java 和我无关,但 Cookie、HTTP、Session 是放之四海的东西。Session 和 Cookie 更是论坛灌水、居家搭站必备良药。把玩下 JSP 是怎样把号称无状态的 HTTP 协议搞成有状态记录的,唯有此意。

之前,先说说网上的 Java 前辈们经常说道的几句金玉良言:
1. 了解 Cookie 和 Session 两种记录用户状态的方法。
2. 关掉浏览器后,会话就结束了。

下面是一个极度菜鸟的 C/C++ 程序员,在搞完 Session 后的一些谬论:
1. 什么 Session,哪有这玩意!
2. Cookie,当初怎么不叫 Handle?呵呵 HTTP Tracking Handle,或 fd?不,这个太俚了。
3. 关掉浏览器,会话就结束了?不一定吧?Shit!一定不!

从上面叙述风格中可以看出,那个菜鸟就是我。很讽刺的是,哪些金玉良言把我带入了困惑的深渊,而谬论多少让我懂得了一点东西。

Cookie
Cookie,参考:HTTP cookie @ Wikipedia。从介绍中可以知道一些关于 Cookie 的东西:

发端是一个由 Netscape 的 Lou Montulli 发明的浏览器操纵并管理的小东西,目的完全是应用驱动的,完成像购物车(virtual shopping cart)这种能记录用户信息的应用。

需要 Web 浏览器、服务器、HTTP 协议共同支持,Cookie 才能完成其作用。当然,当 IETF 还没有标准化 Cookie 技术的时候,Netscape 实际上在用它自家的 HTTP。

最后 IETF 有了几个和 Cookie 有关的标准:RFC 2109、RFC 2965,标题都叫 HTTP State Management Mechanism,后者是前者的修订版。不过似乎后来 Microsoft 和 Netscape 都不是很甩 IETF,所以 Netscape 和 IE 的 Cookie 具体实现嘛……,差不多就好。

Cookie 能做什么:Session managementPersonalizationTrackingThird-party cookies。看到了吧!Tracking!其实介绍中明确说了:cookie 也可以叫 tracking cookie。
Continue reading HTTP Cookie 与 Session 乱云

巧用 Python 的 CGIHTTPServer 模块开发 CGI 应用程序

在开发 CGI 应用程序中,使用 Apache 运行调试不是很方便,这里推荐使用 Python 的 CGIHTTPServer 模块,不仅无需安装 Apache 同时有一定的调试功能。

使用方法
1. 创建一个工作目录 web
2. 在 web 目录中创建一个 cgi-bin 应用程序目录
3. 复制 test.cgi 应用程序到 cgi-bin 目录中
4. 打开终端并切换到 web 目录,执行下面命令

python -m CGIHTTPServer

5. 打开 http://localhost:8000/cgi-bin/test.cgi

Over!

升级 VPS 操作系统计划

BurstNET 的 Linux VPS 已经有 Ubuntu 10.04 系统可用了,我打算升级一下。如果在原有的 VPS 上重新安装操作系统的话,会影响到当前的服务,如果在升级过程中出现问题的话,影响会更严重,且数据的拷贝很不方便。

所以我的方案是重新购买一个 VPS 安装 Ubntu 10.04 系统,在两个VPS都能使用的期间将设置和数据拷贝过去。

Over!

Latest proxy scripts for Windows

Enable compression.

socksv5.bat

@echo off
rem proxy.bat
rem Heihaier < [email protected] >

:relink
echo Connecting VPS...
plink -N -C -D 1080 [email protected] -i fwd_rsa.ppk
echo Connection closed!
goto relink

http.bat

@echo off
rem proxy.bat
rem Heihaier < [email protected] >

:relink
echo Connecting VPS...
plink -N -C -L 8000:127.0.0.1:80 [email protected] -i fwd_rsa.ppk
echo Connection closed!
goto relink

Over!

Android Wired Tether 有线共享手机网络

Android Wired Tether 可以将手机模拟成一个有线网卡,通过USB连接的计算机就可以通过手机的移动网络接入到 Internet,这款软件与 Android Wireless Tether 非常类似,只是它是有线的。

手机要运行这款软件需要 root 权限,同时内核也需要支持,具体看官方的说明。

我在 Ubuntu 10.04 LTS 操作系统的计算机上连接 G1,NetworkManager 能够自动连接网络,无需任何配置,非常方便,推荐使用。

Over!

使用 Apache mod_proxy 模块搭建正向代理服务

Apache 的 mod_proxy 模块实现了正向和反向代理功能,这里使用这个模块搭建一个正向代理服务在G1手机上使用,呵呵。

sudo a2enmod proxy
sudo a2enmod proxy_connect
sudo a2enmod proxy_http
sudo vim /etc/apache2/httpd.conf
# HTTP Proxy

ProxyRequests On
ProxyVia On

	Order deny,allow
	Deny from all
	Allow from 127.0.0.1


sudo /etc/init.d/apache2 restart

Over!