Base Install

Since I often have to move this site from one box to another, I've taken the opportunity to document one such migration (to 9.0 and 4.3.2):

Set up a minimal , etc., plus the apt package manager. Then install the whole shebang, including some development libraries that you'll need to rebuild later:

# apt-get install mysql-devel php php-devel aspell-devel imap-devel net-snmp \
net-snmp-devel net-snmp-utils bzip2-devel freetype-devel aspell-devel \
httpd-devel libjpeg-devel libpng-devel pcre-devel postgresql-devel \
unixODBC-devel gd-devel

Installing ming

For some reason, the SRPMS I get off Rawhide have a broken (or outdated) ming, so I compile and install it as follows:

$ cd ming-0.2a
$ make
$ make install
$ make install-static

Upgrading

Get the latest source RPM (from either 's Rawhide or Edwin's), rebuild it (patching the SPEC file dependencies as needed and adding ming to the configure invocation), and upgrade :

# wget http://ftp.redhat.com/pub/redhat/linux/rawhide/SRPMS/SRPMS/php-4.3.2-7.src.rpm
# rpm -ivh php-4.3.2-7.src.rpm
# cd /usr/src/redhat/SPECS/
# rpmbuild -ba php.spec
error: Failed build dependencies:
        aspell-devel >= 0.50.0 is needed by php-4.3.2-7
...
(build errors and minimal fixes to aspell dependencies - 0.50 changed to 0.30):
- BuildRequires: gd-devel >= 1.8.4, gdbm-devel, gmp-devel, aspell-devel >= 0.50.0
+ BuildRequires: gd-devel >= 1.8.4, gdbm-devel, gmp-devel, aspell-devel >= 0.30.0
...
+      --with-ming=/usr \
...
# cd /usr/src/redhat/RPMS/i386
# rpm -Uvh php-*

Note: I am now grafting SRPMs onto 9.0 with only minimal changes. For instance, to upgrade to 4.3.6, I did the above and upgraded pcre to version 4.4 from the SRPM as well.

Accelerate it:

Install Turck MMCache with:

# cd ~/Packages
# wget http://belnet.dl.sourceforge.net/sourceforge/turck-mmcache/turck-mmcache-2.3.23.tar.gz
# cd ../Build
# tar -zxvf ../Packages/turck-mmcache-2.3.23.tar.gz
# cd turck-mmcache-2.3.23/
# export PHP_PREFIX="/usr"
# $PHP_PREFIX/bin/phpize
# ./configure --enable-mmcache=shared --with-php-config=$PHP_PREFIX/bin/php-config
# make
# make install

Add the following to the end of /etc/php.ini:

zend_extension="/usr/lib/php4/mmcache.so"
mmcache.shm_size="16"
mmcache.cache_dir="/tmp/mmcache"
mmcache.enable="1"
mmcache.optimizer="1"
mmcache.check_mtime="1"
mmcache.debug="0"
mmcache.filter=""
mmcache.shm_max="0"
mmcache.shm_ttl="0"
mmcache.shm_prune_period="0"

Secure mySQL

Check mySQL/Security. The default firewall measures are enough for the base configuration, but I like to follow this.


Not covered: Apache security tweaks, security tweaks, site layout, etc.