Installing ExpressionEngine on a Rackspace Cloud Server

Introduction

This article is intended to provide a general approach to installing ExpressionEngine on a Rackspace Cloud Server running Linux.

In our sample, we’re working with a server running Ubuntu. Other Linux operating systems should be pretty similar, and you can get OS-specific instructions at the Rackspace Cloud Knowledgebase (http://cloudservers.rackspacecloud.com/index.php/Main_Page).

The process of installing ExpressionEngine on the Rackspace Cloud involves several tasks, from installing the LAMP stack to setting file permissions in ExpressionEngine. These topics are covered more comprehensively on other blogs, so this article is really just a documented process that references those other blogs with a few comments of my own. That said, let’s get started.

Server Setup

1. Basic Setup

The first part of the process is to get your Linux server ready with your user accounts and firewall rules. Rackspace provides a procedure for each Linux OS. Find yours on the list, and complete the steps outlined therein. Here’s their list:

http://cloudservers.rackspacecloud.com/index.php/List_of_Articles#Linux

Since we are running Ubuntu, we performed the procedures here:

http://cloudservers.rackspacecloud.com/index.php/Ubuntu_-_Setup

To make a terminal connection to your server, you can use a client application or the console interface provided by Rackspace. To access the console, follow these steps:

Login to the Rackspace Cloud to access your account, and click on “Cloud Servers”.

Expression-Engine-on-Rackspace-Cloud-1
Click on the server that you intend to use for hosting the EE site.

Expression-Engine-on-Rackspace-Cloud-2
On the resulting page, click “Console”. This will open a browser window wherein you can perform the terminal commands noted in the Rackspace set up documentation and those noted below.

2. Install the LAMP Stack

Next, we’re going to install Apache, PHP and MySQL with one command, as documented here:

http://tuxtweaks.com/2010/04/installing-lamp-on-ubuntu-10-04-lucid-lynx/.

sudo apt-get install lamp-server^

Be sure to include the caret (^). The command will not work without it.

Restart Apache

sudo /etc/init.d/apache2 restart

Refer to the blog article linked above if you need more detailed information.

3. Install phpMyAdmin

sudo apt-get install libapache2-mod-auth-mysql phpmyadmin

Test it all out by opening phpMyAdmin at http://YOUR-IP/phpmyadmin/

4. Enable FTP Connections

Here is the command, but refer to this post for more detailed information:

http://cloudservers.rackspacecloud.com/index.php/Introduction_to_iptables#Allowing_connections_to_FTP

sudo iptables -I INPUT 1 -p tcp --dport 21 -j ACCEPT

5. Install FTP Server

I used vsftpd (https://help.ubuntu.com/10.10/serverguide/C/ftp-server.html), but you can use whatever you prefer. Be sure to follow FTP software documentation to ensure proper security!

sudo apt-get install vsftpd

6. Set the permissions on the web directory

The user created in step 1 (Rackspace Server Setup) should have their home directory set to /var/www. Use this command:

sudo usermod -d /var/www yourusername

Now set this user as the owner:

sudo chown yourusername /var/www
sudo chgrp yourusername /var/www

7. Secure Web Server

I can’t give specifics on this, as each environment is unique, as are the security needs for your website. However, you should look into disabling directory listing and the like. This is a pretty good post about that:

10 things you should do to secure Apache

8. Enable mod_rewrite

In some instances, you may need to enable mod_rewrite. This is necessary if you want friendly URLs, as documented here: Remove index.php From URLs

To enable mod_rewrite, use this command:

sudo a2enmod rewrite

Install ExpressionEngine

We’ll be following the ExpressionEngine installation instructions found here, http://expressionengine.com/user_guide/installation/installation.html. But note that our step 4, “Set Base Permissions” is needed after uploading the ExpressionEngine files.

1. Create the MySQL database

Login to phpMyAdmin at http://YOUR-IP/phpmyadmin/ to create the database that you intend to use for ExpressionEngine. You will need to create a database user (it’s not good security to use the root account). Note the database name, user and password. You’ll need it during the ExpressionEngine installation.

2. Download ExpressionEngine

Download your copy of ExpressionEngine, and rename the “system” folder as noted in Step 2 here:

http://expressionengine.com/user_guide/installation/installation.html

3. Upload ExpressionEngine Files

Upload the ExpressionEngine files to your web server via FTP.

4. Set Base Permissions

Ensure that the files that you uploaded to your website root have 755 for permissions, including sud-directories.

sudo chmod 755 /var/www/*

5. Set the ExpressionEngine File Permissions

As documented in “Step 4, Set File Permissions” of the ExpressionEngine Installation process, set the permissions for specific directories. You can do this through FTP or sudo chmod.

6. Run the Installation Wizard

We’re now ready to run the installation wizard, as documented here:

http://expressionengine.com/user_guide/installation/installation_wizard.html.

That’s It

You should now have ExpressionEngine running on your Rackspace Cloud site!

Need some help with your project? Learn more about Pedrera’s ExpressionEngine Developer services.

5 Responses to Installing ExpressionEngine on a Rackspace Cloud Server

  1. Thanks, Tim – you make it look so easy. I’m a long-time cloud sites user, just getting ready to start using cloud servers. Do you have a sense when you’d choose CloudServer over CloudSites? That is, a site traffic load number, or are they much faster?

    Thanks again,
    Bud

    • Hi Bud,

      You raise a good question. ExpressionEngine deployments on Cloud Sites are a lot easier to manage with their web-based tools, whereas the Cloud Servers require working in the console. However, Cloud Sites start at $149/month and Cloud Servers start at $11/month (prices as of time of writing, April 18th 2011). That’s a pretty big difference if you have a lot of sites (say 20 or more).

      If you have a low bandwidth site, or you want an inexpensive development environment, Cloud Servers may be the way to go. It will cost less, but it takes a little more effort to get going. Also, if for any reason you need shell access, you need to go with Cloud Servers. It is not offered with Cloud Sites (http://www.rackspace.com/cloud/cloud_hosting_products/sites/faq/).

      Ultimately, comparing the specs between Cloud Sites and Cloud Servers on the Rackspace site is the real deciding factor. That, and your comfort level working without the web-based tools.

      I hope that helps!

      Tim

  2. Great article,

    Have you any experience installing Multi Site Manager, Expression Engine on Cloud Sites..?

    Will it work?

    Niall

    • Hi Niall,

      Yes, we’ve installed EE with MSM on Rackspace Cloud Sites many times. Compared to the above described process for Rackspace Cloud Servers, installing on Cloud Sites is incredibly easy. You see, Cloud Servers are “raw” environments without Apache, MySQL, PHP, etc. at the start. You have to install all that. On the other hand, Cloud Sites have everything that you need right from the start: Apache and PHP are running, you can create MySQL databases from the web interface, etc.

      Installing ExpressionEngine on Cloud Sites is clearly a lot easier. You can pretty much follow the ExpressionEngine Installation process without deviation. But with a starting price of $150/month, that fee can drive the decision. It should be noted that Cloud Sites can handle numerous ExpressionEngine websites (or WordPress, Drupal, Joomla, for which this approach would also be valid), so the price may be right if you can get enough websites on the plan.

      This article was written with the purpose of documenting how to get an ExpressionEngine website installed at Rackspace for the minimal cost. I am a big fan of Rackspace (I’ve had so many bad experiences with so many other ISPs), but Rackspace doesn’t offer plans comparable to MediaTemple’s $20/month Grid service (don’t get me started on how often their Grid has issues).

      As I wrote previously, this process is valid for low bandwidth sites, development environments, or when the fee for Rackspace Cloud Sites can’t be covered. It does, however, demand a technical aptitude for configuring Linux that other hosting options do not. So, consider it one more option for hosting, depending on the circumstances.

      I hope that helps. If you have specific questions about your installation, feel free to post them.

      Tim

Leave a Response