<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Language" content="en-us" /> <meta name="ROBOTS" content="ALL" /> <meta http-equiv="imagetoolbar" content="no" /> <meta name="MSSmartTagsPreventParsing" content="true" /> <meta name="Keywords" content="cherokee web server httpd http" /> <meta name="Description" content="Cherokee is a flexible, very fast, lightweight Web server. It is implemented entirely in C, and has no dependencies beyond a standard C library. It is embeddable and extensible with plug-ins. It supports on-the-fly configuration by reading files or strings, TLS/SSL (via GNUTLS or OpenSSL), virtual hosts, authentication, cache friendly features, PHP, custom error management, and much more." /> <link href="media/css/cherokee_doc.css" rel="stylesheet" type="text/css" media="all" /> </head> <body> <h2 id="_a_href_index_html_index_a_8594_a_href_cookbook_html_cookbook_a"><a href="index.html">Index</a> → <a href="cookbook.html">Cookbook</a></h2> <div class="sectionbody"> </div> <h2 id="_cookbook_setting_up_joomla">Cookbook: Setting up Joomla</h2> <div class="sectionbody"> <div class="paragraph"><p>Setting up <a href="http://www.joomla.org/">Joomla</a> with Cherokee is really easy. Joomla is offered through the Cherokee Market and can be automatically installed as a new dedicated Virtual Server, or to set it up inside a Directory.</p></div> <div class="paragraph"><p>This recipe contains sections detailing how to: . Configure Cherokee for either installation mode using the Market. . Install Joomla v1.5.14 which is the last one available at the time of writing. . Configure Cherokee manually.</p></div> <h3 id="market_configuration">Configure Cherokee using the Market</h3><div style="clear:left"></div> <div class="paragraph"><p>The easiest way is to look for the application in the Market and follow the point and click interface.</p></div> <div class="paragraph"><p>However, these are the steps for those wanting to install it manually.</p></div> <h3 id="manual_configuration">Configuring Cherokee manually</h3><div style="clear:left"></div> <div class="paragraph"><p>The Market can handle both series of Joomla, 1.5.x and 1.6.x. This manual process was documented for 1.5.x and might not work for 1.6.x.</p></div> <div class="paragraph"><p>You will need PHP support correctly configured in Cherokee, and PHP with the MySQL module installed. For this you will require php-cgi installed on your system, and to run the PHP wizard, so in case it is not configured yet you an follow the appropriate recipe about <a href="cookbook_php.html">setting up PHP</a>. You will also need an FTP server if the Joomla files are owned by a user other than the one running the web server.</p></div> <div class="paragraph"><p>Under these conditions, you could start Joomla’s installation and you would already be able to have your site up and running.</p></div> <div class="paragraph"><p>However, we can add several refinements. In this recipe we will be dedicating a virtual server entirely to Joomla, so either create a new one or adjust <tt>default</tt> accordingly. Of course, you can also set it up under a directory in an existing virtual server, but we will take the first approach for clarity and simplicity.</p></div> <div class="paragraph"><p>For our purposes, we will make the modifications in our <tt>default</tt> virtual server. This will only affect the URLs we’ll be accessing to log in to Joomla. First download and uncompress the distributed Joomla release into <tt>/var/www/joomla</tt>, and set that path as the <tt>Document Root</tt> in your virtual host’s <tt>Basics</tt> tab.</p></div> <div class="paragraph"><p>We will also be making changes in the <tt>Error Handler</tt> tab, selecting the <tt>Custom redirections</tt> option and adding an option to send errors to Joomla.</p></div> <div class="tableblock"> <table rules="all" width="100%" frame="border" cellspacing="0" cellpadding="4"> <col width="50%" /> <col width="50%" /> <thead> <tr> <th align="left" valign="top">Error </th> <th align="left" valign="top">URL</th> </tr> </thead> <tbody> <tr> <td align="left" valign="top"><p class="table">403 Forbidden</p></td> <td align="left" valign="top"><p class="table">/index.php</p></td> </tr> <tr> <td align="left" valign="top"><p class="table">404 Not Found</p></td> <td align="left" valign="top"><p class="table">/index.php</p></td> </tr> </tbody> </table> </div> <div class="paragraph"><p>Finally, set up the rewrite rules recommended by Joomla to block out the most common type of exploit attempts. To do so, simply create <tt>Regular Expression</tt> rules for the following expressions:</p></div> <div class="listingblock"> <div class="content"> <pre><tt>mosConfig_[a-zA-Z_]{1,21}(=|\%3D) base64_encode.*\(.*\) (\<|%3C).*script.*(\>|%3E) GLOBALS(=|\[|\%[0-9A-Z]{0,2}) _REQUEST(=|\[|\%[0-9A-Z]{0,2})</tt></pre> </div></div> <div class="paragraph"><p>Each should be managed by a handler that returns an error:</p></div> <div class="tableblock"> <table rules="all" width="100%" frame="border" cellspacing="0" cellpadding="4"> <col width="50%" /> <col width="50%" /> <thead> <tr> <th align="left" valign="top">Handler </th> <th align="left" valign="top">Error</th> </tr> </thead> <tbody> <tr> <td align="left" valign="top"><p class="table">HTTP error</p></td> <td align="left" valign="top"><p class="table">403 Forbidden</p></td> </tr> </tbody> </table> </div> <div class="paragraph"><p>After this you are done! Remember that all these settings are refinements not really needed by Joomla to perform its basic functions.</p></div> <h3 id="package_installation">Installing Joomla</h3><div style="clear:left"></div> <div class="paragraph"><p>Both Cheroee and the system have to be prepared for Joomla to be installed. The database issue can be taken care of with the following steps. Log in to MySQL:</p></div> <div class="listingblock"> <div class="content"> <pre><tt>mysql -u root -p</tt></pre> </div></div> <div class="paragraph"><p>And create the database for Joomla. We will be using the name <em>joomla</em>, the user <em>joomlauser</em> and the password <em>joomlapassword</em>, but you should set up your own.</p></div> <div class="listingblock"> <div class="content"> <pre><tt>CREATE DATABASE joomla; GRANT ALL PRIVILEGES ON joomla.* TO joomlauser@localhost IDENTIFIED BY 'joomlapassword'; GRANT ALL PRIVILEGES ON joomla.* TO joomlauser@localhost.localdomain IDENTIFIED BY 'joomlapassword'; FLUSH PRIVILEGES; quit;</tt></pre> </div></div> <div class="paragraph"><p>Then point your web browser to <tt>http://localhost/joomla</tt> and follow the instructions provided by the Joomla installer.</p></div> <div class="paragraph"><p>There is not much else you must do for Cherokee to work with Joomla. If you follow the Joomla installer’s instructions -providing valid database information in most cases will suffice-, you will go thorough every step swiftly. Once you are done you will have to eliminate the <tt>installation</tt> subdirectory, as Joomla does not allow going any further until you do so as a security precaution. It is also a good idea to make the <tt>cache</tt> directory world writable.</p></div> <div class="listingblock"> <div class="content"> <pre><tt>rm -rf /var/www/joomla/installation chmod 777 /var/www/joomla/cache</tt></pre> </div></div> <div class="imageblock"> <div class="content"> <img src="media/images/cookbook_joomla.png" alt="media/images/cookbook_joomla.png" /> </div> </div> <div class="paragraph"><p>Now to set up Joomla. Visit <a href="http://localhost/administration">http://localhost/administration</a> and log in. Go to the <tt>Global Configuration</tt> option and enable all the <strong>SEO Settings</strong>, including the ones for Apache mod_rewrite.</p></div> <div class="paragraph"><p>Mission accomplished!</p></div> </div> <div id="footer"> <div id="footer-text"> </div> </div> </body> </html>