# Definitive Magento installation guide
While getting started with Magento some time ago, I thought it would be a good idea to write a post that started at the beginning: how to install it. Reading through the Magento forums, I get the impression that Magento users have extremely varied levels of web development and systems administration experience. That raises the question of the amount of detail to include in a post aimed at Magento newcomers, since experienced web developers will need only the important steps, whilst those new to web development will prefer more info. Here's our take on an install guide that will hopefully prove useful for both audiences.

In order to broaden the appeal of this article I have used JavaScript to make things more readable. Below are all the steps necessary to install Magento, and if you are unsure about any of the steps, just click for more details.

 Installing Magento is similar to installing Drupal or Wordpress. Before we can install Magento we need to configure the environment in which it will run. In this case we'll use Ubuntu as the operating system in our examples, though the instructions are fairly similar for other Linux distributions. You will need sudo access in order to complete the steps below.

 Configure Ubuntu

 Install php5 including the following modules:

 mhash
 cli
 mcrypt
 curl
 mysql
 gd

 Make sure that your installer is up to date: 
 sudo aptitude update
 To install php5 with the necessary modules:
 sudo aptitude install php5 php5-mhash php5-mcrypt php5-curl
 php5-cli php5-mysql php5-gd

 Install mysql

 If you have not already done so in the install php step, make sure that your installer is up to date: 
 sudo aptitude update
 To install mysql with the necessary modules:
 sudo aptitude install mysql-client mysql-server
 The installation process will ask you to create a root password for mysql. You will need this password in the next step.

 Create a database for Magento

 Using command-line

 To create a database in mysql type this at the command prompt:
 mysql -u root -p
 When prompted enter the root password. At the mysql prompt type the following:
 CREATE DATABASE magento;
 Create user magento for the database magento:
 GRANT USAGE ON *.* TO magento@localhost IDENTIFIED BY 'password'
 where password is a password of your choosing. Make note of this password as you will need it
 when you install Magento. You also need to grant the privileges to the new user:
 GRANT ALL PRIVILEGES ON magento.* TO magento@localhost;
 You can test your setup with:
 mysql -u magento -p'password' magento
 which should return something like this:

Your MySQL connection id is 22
Server version: 5.0.75-0ubuntu10 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

 The database is now completed. You can type exit; to quit mysql.

 Using phpmyadmin

 On the phpmyadmin start page click 'Privileges'.
 Click 'Add a new User'
 Fill in the following:
 User name:'Use text field:' magento
Host: 'Local' localhost
Password: 'Use text field:' &lt;enter your password&gt;
Re-type: &lt;enter your password&gt;

 Under 'Database for user' select 'Generate database with same name and grant all privileges'
 Click 'Go'

 Using MySQL Databases in cPanel

 On the MySQL Databases start page type magento in the 'New Database:' box and click 'Create Database'.
 Under 'Add New User' type in Username:magento and choose a password. Click 'Create User'.
 Under 'Add User To Database' match the user you created to the database you created and click 'Add'.
 Note: The database name as well as database user will be given a prefix. That means that when you 
 install Magento you need to use the full database name and full user name as set here!

 Increase memory limit in /etc/php5/apache2/php.ini to 64MB

 In order to use Magento the memory limit needs to be increased in the php.ini file. This file can usually be found in the
 /etc/php5/apache2/ directory. A simple editor like vi will suffice to change the necessary value:
 sudo vi /etc/php5/apache2/php.ini
 To find the line that needs to be changed simply type /memory and press Enter. Change the memory limit
 from 16MB to 64MB by pressing i and then editing the line. To save the file press Escape, type :wq
 and press Enter

 Increase memory limit in /etc/php5/cli/php.ini to 64MB
 Enable server rewrites

 If you know that server rewrites are enabled you can skip this step. Enabling server rewrites allows for index.php
 to be removed from all urls. To check or to enable server rewrites open the apache default configuration file:
 sudo vi /etc/apache2/sites-available/default
 Make sure that AllowOverride is set to All and not None for /var/www/ portion of the code, which should look like this:
 &lt;Directory /var/www/&gt;
 Options Indexes FollowSymLinks MultiViews
 AllowOverride All
 Order allow,deny
 allow from all
&lt;/Directory&gt;
 Next you also need to make sure that the rewrite module is actually enabled. To check, list the content of
 /etc/apache2/mods-enabled, where if you don't find a link called rewrite.load you then
 need to create one. To create it, type:
 cd /etc/apache2/mods-enabled
 sudo ln -s ../mods-available/rewrite.load
 You will now need to restart Apache for all of these changes to take effect.
 sudo /etc/init.d/apache2 restart
 Server rewrites should now be enabled. The final step is to tell Magento to use server rewrites. This is done
 at the Magento installation (see 'Install Magento' below).

 Download Magento

 Follow this link to the download page

 Download the Full Release in your favourite format. If you are not sure which format to choose download zip.
 Uncompress the file

 If you have downloaded a zip file, to unzip:
 unzip magento-x.x.x.zip
 where the x's stand for the current version number.

 Move the Magento directory to your web accessible directory

 If you are using a standard Ubuntu install you need to move the Magento directory to /var/www/
 sudo mv magento /var/www/

 Make magento/app/etc, magento/var/ and magento/media world-writable

 To change the directory permissions go to the Magento base directory:
 cd /var/www/magento
 and enter
 chmod 777 app/etc/
 All of the subdirectories of the media and var/ directories must also be world-writable, hence
 chmod -R 777 media/ var/

 Install sample data for Magento(Optional - click here for details)

 If you want to install the sample data you MUST do so before installing Magento.

 Follow this link to the download page

 Download the Sample Data in your favourite format. If you are not sure which format to choose download zip.
 Uncompress the file

 If you have downloaded a zip file, to unzip:
 unzip magento-sample-data-x.x.x
 where the x's stand for the current version number.

 Copy catalog directory in media to /var/www/magento/media and ensure it is world-writable.

 Import the sample .sql file into your previously created mysql database

 To import an .sql file into a database simply type the following on the command line:
 mysql -u root -p magento &lt; magento_sample_data_for_x.x.x.sql 
 where magento is the name of the database we created earlier and magento_sample_data_for_x.x.x.sql
 is the name of the .sql file that came in the sample data zip file.

 If you encounter difficulties with importing the sample data consult this
 forum thread

 Install Magento

 To install Magento load it in the browser by
 typing magento after server's base url.

 For example if you are installing Magento on the localhost, you would type
 http://127.0.0.1/magento

 On the first page that loads accept the license agreement and click 'Continue'
 Enter locale information

 Enter your locale, time zone and currency. Note that if your currency uses the $ symbol (e.g. US$, A$, NZ$)
 and you would like it to appear without the country code in front, you must choose the correct locale AND the correct currency.
 For example if the chosen locale is Australia and the chosen currency is Australian dollar, then prices will appear as follows:
 Price in AU dollars: $ 19.99
Price in US dollars: US$ 19.99
Price in NZ dollars: NZ$ 19.99
 Further, if you would like to remove the space between the currency symbol and the amount, you can do so in the
 Magento backend settings after you complete the installation.

 Enter database information

 Host: leave default (localhost)
Database name: the name of Magento database (e.g. magento)
User name: the name of Magento mysql user (e.g. magento)
User password: password chosen for mysql Magento user
 Note that if you are running your localhost on a non standard port, then you must include the port number.
 For example, if your server is running on port 8888, then under 'host' put localhost:8888
 Under 'Web access options' tick the Use web server (Apache) Rewrites option. To see how to enable server rewrites,
 if you have not done so already, please refer to the 'Configure Ubuntu' section.

 Enter personal information

 Enter your personal details. Make note of the username and password you choose, since you will need those to log into the
 Magento backend. You can leave the 'Encryption Key' field empty since Magento can generate one for you.

 Magento Installation Complete!

 At this point you can follow the link to the front end, which will usually be your server base url followed by
 magento/. The backend url is the server base url followed by magento/admin. Note that if you are using
 Magneto on a local host use 127.0.0.1/magento rather than localhost/magento since the admin panel may not
 load with the second one. Finally, you can now log into the Magento backend using the username and password you created in the
 previous step.

 Install extensions(Optional - click here for details)

 Run ./pear mage-setup in Magento directory

 Go to your /var/www/magento directory and type
 ./pear mage-setup
 Note that mage-setup needs only be done once. If you decide to install more extensions, you do
 not have to run mage-setup again.

 Follow this link to the Magento Connect page

 Choose the extension you want
 Click 'Get extension key' on the left under the extension image
 Click to agree to the license agreement and click 'GET EXTENSION KEY'
 Make note of this 'Extension Key'
 Run ./pear install &lt;var&gt;key&lt;/var&gt; in your Magento directory

 Go to your /var/www/magento directory and type
 ./pear install key
 where key is the 'Extension Key' you noted on the Extension webpage

 Keep Magento up-to-date
 Warning! Please don't perform an upgrade on your live site, you should always test the upgrade process on a copy of your live site first. Also keep backups of both the database and magento directory just in case.

 Run ./pear mage-setup in Magento directory (if you haven't done so in the 'Install extensions' step)

 Go to your /var/www/magento directory and type
 ./pear mage-setup
 Note that mage-setup needs only be done once. If you decide to install more extensions, you do
 not have to run mage-setup again.

 Run ./pear upgrade magento-core/Mage_All_Latest in your Magento directory

 Go to your /var/www/magento directory and type
 ./pear upgrade magento-core/Mage_All_Latest

 Clear session and cache data

 Go to your /var/www/magento/var/session directory and type
 rm -rf *
 Go to your /var/www/magento/var/cache directory and type
 rm -rf *

 I hope your installation was successful. Have fun using Magento!