Apple


Installing Apache 2.2.10, PHP 5.2.6, MySQL 5.2.1, Mod_Python, PostgreSQL 8.3, Nginx, & CouchDB on OS X

About a year ago, I had moved to a Macbook Pro and had to set up my development environment on it. It was far from straight forward and involved a bit of work.

A year on from that time, I have moved laptops again and this time I have a Macbook and OS X Leopard Version 10.5.5 and there is a world of a difference out there.

I am not sure whether it was something that I was previously doing wrong or if the packages are now being better maintained towards OS X, but compilation and installation has been a breeze this time.

The only thing that I had installed before I got started was Xcode from the install DVD.

If your Xcode package is not the latest and greatest, do get to the Apple Developer Connection and grab it.

The list of software we will finally end up is something like this:

  • Apache (2.2.10)
  • mod_python (3.3.1)
  • MySQL (5.5.1.29-rc)
  • PostgreSQL (8.3.5)
  • Memcached (1.2.6)
  • PHP (5.2.6)
  • CouchDB

All the packages are installed in such a manner that they are installed into /usr/local/{software-name}-{version}, from which it is symlinked to /usr/local/{software-name}.

This will enable us to keep track of all the package versions and also switch between the versions in case of any trouble.

Time to start the process:

Get Camino, on OS X, shame on the rest

For me, the browser is the primary productivity suite. I use it for everything from email to keeping documents, workflows and many other things. Even to the extent that my browser instances can run for close to a week without being restarted, that is when they don't wind up being sluggish like a drunk mule, which happens way too often for my liking.

I started with Firefox when it was called Phoenix and did not have an installer. I have tried all sorts of browsers, K-Melon, Opera, every version of Internet Explorer till version 7 and many more that did not last for more than a couple of days at the best on my computers. But if there is anything that has been constant with all of them, it is that they have grown progressively worse with every release in terms of resource utilization.

Now, that was not so much of an issue when I moved to a Mac about a year ago. It was a Macbook Pro that sported 2 GB of RAM, which leads you to kind of be pretty okay with the RAM-tastic excesses the browsers tend to indulge in. My development environment, including Apache and the various databases (MySQL, PostgreSQL and CouchDB) and other nicknacks had about a GB to play with, while the browser itself could use 500 MB of RAM and I could not give a damn.

It is a different story altogether that even with 500 GB of RAM, the venerable Firefox would slow down with usage, and even in the stock-install extension-free mode, it would still consume memory much worse than a lifetime AA member knocking back glass after glass at an open bar. I loved my extensions, but seriously, this was getting to be way too much, with or without them. I had to find a new browser and the move to a Macbook with just one GB of RAM made it even more urgent.

My OS X suite of applications

It can be a real problem for people who are new to OS X to find the right software to get their routine work done.

To help such people along a bit, I am posting a list of software that I use on a daily basis.

In the first installment, I am going to post the average-Joe list and will be tackling the development platform list in a later post.

Leopard Tip: Flushing DNS cache

Instead of doing "lookupd -flushcache" you have to do "dscacheutil -flushcache".

Installing Apache, PHP, MySQL, Postgresql on Mac OSX Leopard from source

Notes

  1. We won't be running any binary installations, all software will be compiled from source.
  2. The installation won't make use of Fink or Darwinports either.
  3. These are instructions for the Intel Macs.
  4. Using this approach would mean that you will need to maintain the stack by hand.
  5. Use this information at your own risk.
  6. If you don't want to go through all the trouble and use a binary installation, read this post.

The software stack we are going to install will be as follows:

Apache HTTP Server 2.2.6

Modules
core
mod_authn_file
mod_authn_dbm
mod_authn_default
mod_authz_host
mod_authz_groupfile
mod_authz_user
mod_authz_default
mod_auth_basic
mod_include
mod_filter
mod_log_config
mod_env
mod_setenvif
mod_ssl
prefork
http_core
mod_mime
mod_dav
mod_status
mod_autoindex
mod_asis
mod_info
mod_cgi
mod_dav_fs
mod_negotiation
mod_dir
mod_actions
mod_speling
mod_alias
mod_rewrite
mod_so
mod_php5

PHP 5.2.5

Modules
bz2
calendar
ctype
curl
date
dom
exif
filter
gd
hash
iconv
json
ldap
libxml
mbstring
mysql
mysqli
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
pgsql
posix
session
SimpleXML
snmp
SPL
SQLite
standard
tidy
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
xsl
zlib

MySQL 5.1.22 RC

Stock install

Postgresql 8.2.5

Stock install

We will also need to install the following software dependencies:

  1. Xcode (from the Leopard DVD or Apple Developer connection )
  2. Readline (http://tiswww.case.edu/php/chet/readline/rltop.html)
  3. Tidy (http://tidy.sourceforge.net)

This installation would not have been possible without help from the following websites:

  1. Installing Readline on OSX without using Fink or Darwinports
  2. Workaround for Tidy's platform.h problem
  3. Installing the GD library on OSX Leopard

Now to the installation:

Install Xcode

Install MySQL

Download mysql-5.1.22-rc.tar.gz from the http://dev.mysql.com website
Uncompress
$/configure --prefix=/usr/local/mysql
$make
$sudo make install

Update: The steps did help me in getting to install the server, but on start up it did give certain location-specific errors.

As Hill has pointed out in the comments, MySQL.com has not released a version of their software for Leopard, but I got 5.1.22 RC to install, run and connect from PHP without any hassles following the instructions in one of the links he had kindly posted.

Install Readline

Download the source from ftp://ftp.cwru.edu/pub/bash/readline-5.2.tar.gz
Uncompress
$./configure
There are bugs with the installation as elaborated in this link with workarounds:
$make static
$sudo make install static

Install Postgresql

Download the source from http://www.postgresql.org
Uncompress
$./configure --with-prefix=/usr/local/postgresql
$make
$sudo make install

Install GD

Follow the instructions at Veola.net

Install Tidy

Download Tidy source
Uncompress
$./configure
$make

This will throw up errors that can be fixed by following these instructions
$sudo make install

Install Apache

$CFLAGS="-arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk"
$./configure \
--prefix=/usr/local/apache2 \
--enable-authn-dbm \
--enable-ssl \
--enable-dav \
--enable-info \
--enable-speling \
--disable-userdir \
--enable-rewrite \
--enable-so \
--with-ssl=/usr/bin

if you get an apr.h error regarding sendfile, edit the apr.h file in srclib/ext/includes and change APR_HAS_SENDFILE to '0'

$make
$sudo make install

Install PHP

$./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--prefix=/usr/local/php \
--with-pgsql=/usr/local/postgresql \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-tidy=/usr \
--with-curl=/usr/bin \
--with-curlwrappers \
--with-openssl-dir=/usr/bin \
--with-gd \
--with-jpeg-dir=/usr/local/lib \
--with-png-dir=/usr/X11R6 \
--with-zlib-dir=/usr \
--with-freetype-dir=/usr/X11R6 \
--enable-mbstring \
--with-xpm-dir=/usr/X11R6 \
--with-pdo-pgsql=/usr/local/postgresql \
--with-pdo-mysql=/usr/local/mysql \
--with-xsl=/usr/bin \
--with-ldap \
--with-xmlrpc \
--with-iconv-dir=/usr \
--with-snmp=/usr --enable-exif \
--enable-calendar \
--with-bz2=/usr \
--enable-debug

$make
$sudo make install

And that's all folks!