Transfer to VPS
I have moved most part of my website from Hostmonster to Burst VPS. The plan I choose has 512MB ram. When I first logged into the Debian 6 system and did a
aptitude upgrade, it crashed with a message saying not having enough memory. I checked the memory usage. It was more than 300MB, 250MB of which was taken by Apache. So I decided to use Cherokee instead.
Cherokee is a fast and efficient HTTP server, and it obviously does not support Apache’s
.htaccess files. Most server-side programs (well, most PHP programs) ship with such a file with some rewrite rules in it. A common set of such rules goes like
- Redirect `/prefix/` to `/prefix/index.php`.
- Serve `/prefix/blabla` if this `blabla` is an actual file,
- otherwise redirect `/prefix/blabla` to `/prefix/index.php/blabla`.
These rules apply to all the PHP programs I am using, including Wordpress. Sometimes an extra “?” is needed immediately after
index.php in the last rule.
How these rules can be implemented in Cherokee depends on whether the program is in a virtual server or a sub-directory of a virtual server. In most cases, this means to see if a program is in the root directory of a web site. If the program is directly in a virtual server, the first rule is covered by the directory indexes setting of the virtual server; otherwise it has to be a behavior rule of the virtual server. A simple path rule that substitutes
$1/index.php will do. The second rule can be implemented with a logic and of a directory and a file exists match rule, that servers static content. The third rule can be done with a regexp matching of
/prefix/(.+) and substitute it with
/prefix/index.php/$1. Cherokee has a Wordpress wizard which does one more rule between the first and the seond, if Wordpress is in a sub-directory of a virtual server. It set the document root to that sub-directory. And this rule is non-final.