THIS IS A DRAFT
Install CentOS
Yep, you will need CentOS 5 from http://www.centos.org
Database
yum install postgresql postgresql-server
Initialize the cluster:
su postgres
initdb -D /var/lib/pgsql/data -E UTF8 --locale=en_US.utf8
Add postgresql to the default runlevel (use e.g. ntsysv tool)
Run postgresql with /etc/init.d/postgresql start
Tweak the database configuration located at /var/lib/pgsql/data/postgresql.conf. You might want to:
- increase memory — find out how to do this ;-)
- fsync = Off if you know what you are doing
Memcached
Memcached is not included in the distro, you can get an RPM e.g. from http://rpm.pbone.net/. Or you can compile it from source. Memcached 1.2.X is recommended.
Set it up to listen on port 11211 (default), protect this port from outer-world (listen on localhost only or set up iptables).
Add memcached to the default runlevel (use e.g. ntsysv tool)
Run memcached with /etc/init.d/memcached start
Apache
I hope any Apache 2.X will do fine.
TODO: mod_gzip
Other software
LaTeX
yum install tetex tetex-fonts tetex-dvips tetex-latex ghostscript
ImageMagick
ImageMagick is used to:
- identify (media) files
- generate thumbnails and scale images
- convert latex equations to images
yum install ImageMagick
PHP, PEAR, PECL and dependencies
PHP itself
We will try to install the plain php-5.1.6 from the repository and see if it works.
yum install php
Notable configuration tweaks
allow_url_fopen = On
PEAR
yum install php-pear
PECL + dependencies
Fileinfo and memcache
yum install php-pecl-Fileinfo php-pecl-memcache
And put this into your php.ini
extension=memcache.so
extension=fileinfo.so
NOTE: make sure that fileinfo can recognize files and output both description and mime type. Try to upload a file and check its record in the database. The problem is with fileinfo not able to find proper mime files in /usr/share/misc/mime.*. In our installation the files were located in /usr/share/file and we had to copy them to /usr/share/misc.
xdiff + libxdiff
Grab libxdiff from here: http://www.xmailserver.org/xdiff-lib.html
Unpack, compile and install. Then install pecl-xdiff
pear install pecl/xdiff
You should also add this to your php.ini:
[apc]
extension=xdiff.so
APC
pear install pecl/apc
You should also add this to your php.ini:
[apc]
extension=apc.so
Instead of APC you can also use Eaccelerator.
IMPORTANT: it seems that APC is permanently broken and is segfaulting the webserver under high load. Recommendation: DON'T! Eaccelerator works fine.
Tidy and php-tidy
TidyHTML is used to purify and repaid broken html generated by the parser.
yum install php-tidy
PostgreSQL functions
yum install php-pgsql
Other PHP
yum install php-mbstring
Major tweaks
PHP 5.2.X
The easiest way to upgrade PHP to 5.2.X is to use this repository: http://www.jasonlitka.com/yum-repository/. It is also advised to use newer php-pear.
You can also use a src.rpm instead of binary versions. Like this one: http://www.jasonlitka.com/2007/11/16/upgrading-to-php-525-on-rhel-and-centos/
PCRE
The problem with complex (with recurrsion?) regular expressions is that they can eat a lot of memory, which can result in sementation fault if pcre wants to use more memory than available. PCRE library uses stock during processing, the trick is to recompile the the pcre lib with --disable-stack-for-recursion — it helps a lot.
Currently we are using PCRE 7.3, you can grab an src.rpm from Fedora dev repository, edit the pcre.spec and compile with rpmbuild -bb pcre.spec.
Broken Xdiff 1.4
The pecl-xdiff library is broken. It uses int when long should be used, which results in faulty parsing of arguments. Now we have a Xdiff fixed (where we needed).