Below is a minimal step by step guide on installing CodeIgniter 2.1.4. The assumptions are that your using either Ubuntu or Debian, with a GIT + Apache + PHP + MySQL stack available.
Step 1: Clone the CodeIgniter repository
CodeIgniter is available either as a compressed tarball, or as a git repository. The latter is a straightforward way of downloading, installing and maintaining an up-to-date version of CI, enabling you to switch to experimental branches at any given time. Clone the repository:
git clone https://github.com/EllisLab/CodeIgniter.git .
Step 2: Change folder permissions
Give permissions to your Apache user (default www-data) and group (similarly, www-data):
chown -R www-data:www-data /path/to/ci
Step 3: Configure your Apache VirtualHost
Next step is to configure you Apache’s VirtualHost DocumentRoot to point to the cloned folder, with enabled .htaccess.
sudo vi /etc/apache2/sites-enabled/your-site-name.tld
Adjust the template below accordingly:
DocumentRoot /path/to/ci ServerName your-site-name.tld ServerAlias *.your-site-name.tld Options -Indexes -MultiViews FollowSymLinks AllowOverride All Order allow,deny allow from all CustomLog ${APACHE_LOG_DIR}/your-site-name.tld-access.log combined ErrorLog ${APACHE_LOG_DIR}/your-site-name.tld-error.log
Step 4: Create an .htaccess file, in your DocumentRoot path, to avoid including the index.php in your URLs
vi /path/to/ci/.htaccess
Add the following lines (taken from here):
RewriteEngine on RewriteCond $1 !^(index.php|images|robots.txt) RewriteRule ^(.*)$ /index.php/$1 [L]
Step 5: Once the file is saved, reload Apache
sudo apache2ctl reload
Step 6: Load your page, and add a fist view
Loading your CI instance for the first time, will display a Welcome page. You can use the controller found in application/controllers/Welcome.php as a base template for your new controllers. Feel free to remove this file, once you do not need it, along with the sample application/controllers/welcome_message.php file.
NOTE: Controller file and class names must be capitalized.
Below is an example Hello World controller stored in application/controllers/Home.php: