Serving ExpressionEngine
2 January, 2009 | Filed under “ExpressionEngine”
This article is kind of twofold. On the one hand it checks if ExpressionEngine – the Content Management System (CMS) from EllisLab – is compatible with an external server, and on the other hand, if it works with a client side server. The latter is interesting if you have followed the earlier articles on building a local Apache server with PHP, MySQL, and phpMyAdmin. You will find nothing new or revolutionary here. It is more or less my own diary as I am working towards different installations of my choice of CMS. This laboratory exercise will run a check for ExpressionEngine 1.6.6.
I am not going to add anything to the arguments that speak in favour of ExpressionEngine. With the plethora of CMS options out there it is an impossible task to try everything out before settling for a system. It all boils down to word of mouth and gut feeling. In the end, it doesn’t really matter – if everything works and one is happy with the workflow. And if it leaves time to spend on actual web pages and content.
There is one but, however. Each CMS has certain requirements that must be met for most or anything to work – and there is not much mere mortals can do about that. Point in question is the communication between CMS and server and between CMS and database. This is something you have to check regardless of chrome or pomp and ceremony. Refer to EllisLab’s web site for the formal list of requirements.
What follows is a rather sketchy procedure along with a few comments.
Is your server up to the task?
1. Download the Server Wizard. This is a script called wizard.php.
2. Unzip the file.
3a. Upload wizard.php to your external server.
4a. Point your web browser to the file, e.g.:
http://www.siteinquestion.com/wizard.php
Your browser returns a test page; Check Requirements for ExpressionEngine.

A typical list of supported features on an external server.
3b. Upload wizard.php to your local, client side server. If you are working with virtual hosts as per the article Apache on the Macintosh, choose one of the web site folders on the server partition,e.g., Cochise.
4b. Point your web browser to the file:
cochise/wizard.php
Your browser returns a test page; Check Requirements for ExpressionEngine.

A possible list of supported features on a client side server.
If the test page quarrels about a missing image, never mind. Your machine is presently not able to retrieve the logo from EllisLab (their server may be down for some reason or you are not connected to the Internet).

This is not a problem.
5. Make sure that your server supports at least the two required features. If your external server is not up to the task, you will either have to request your Internet provider to “open” the features, or you may have to upgrade your web hosting service.
Is your database up to the task?
ExpressionEngine depends on a MySQL database. It must already be installed and set up properly for the communication to work. You will need to fill in four fields in the wizard to check communication:
MySQL server address
MySQL username
MySQL password
MySQL database name
Note: Your Internet host will create a database for you and provide you with all the necessary information for your external server. If you are testing a client side server, you will have to create the (named) database yourself, for instance via phpMyAdmin, before trying to connect. The MySQL user name will most likely be root.
6. With the four pieces of information at hand, run the MySQL settings check. If everything is in place for ExpressionEngine, you will be greeted with the following message:
Congratulations! Your Server is Ready for ExpressionEngine!
If something is amiss, you will see the following message:

This is a problem.
Important: If connection with the EllisLab suggestion of localhost as the MySQL server address fails, try 127.0.0.1 instead. If this turns up an error as well, you may have to backtrack your original database installation steps.
The number of the Beast – and worse!
I will not dwell on the actual installation of ExpressionEngine. The procedure is adequately described in its documentation. There is, however, one small detail which must be taken care of regardless of installation method, be it FTP for uploading to an external server or simple copying to a client side (local) server. It concerns the setting of file permissions. Usually performed with the FTP application once the files have been uploaded to a web server, it is not immediately evident that this can be carried out on local files as well.
On a Unix server the following three files must be set to file permissions 666:
path.php
system/config_bak.php
system/config.php
The following seven directories (aka folders) must be set to file permissions 777:
images/avatars/uploads/
images/captchas/
images/member_photos/
images/pm_attachments/
images/signature_attachments/
images/uploads/
system/cache/
Note: EllisLab recommends that the system folder be renamed for security reasons. Not a big issue with client site servers, but if done, three of the paths will differ from the ones shown above.
Once the complete suite of ExpressionEngine files have been copied to your local server, open your FTP program (for the sake of this exercise, Transmit from Panic is used) and point the application to the local ExpressionEngine directory (in Transmit this is called your stuff).

Mark the file/folder in question, ask for information on the item (in Transmit this is File > Get Info), and change the permissions (aka octal) to the new value (in Transmit you will have to choose <Apply> for the changes to take effect).

Repeat the procedure for all files and folders involved.
Important: Security-wise, install.php should be deleted from the server once everything is installed and configured.