Magento: Automated Bash Script Installer

Magento: Automated Bash Script Installer
Magento: Automated Bash Script Installer

The following SSH script will automate the process of installing Magento, with or without sample data. It will walk you through everything, and the only thing you need to setup first is the database and assign a user to the database.

You will need SSH access to use this. SSH is similar to FTP, in that it requires software that you’ll need to download in order to connect to your site. If you don’t have an SSH client, you can download PuTTY for free.

Once you connect to your site via SSH, simply go to the directory where you want to install Magento.

By default, when you connect to your site you’re placed in your home directory. Files and directories in here are usually not accessible from a browser, so you will need to change to a public HTML directory.

For cPanel users, you would simply type the following to get to your root web directory:

cd public_html/

If you wanted Magento installed in a subdirectory, you would need to create it first (assuming it didn’t exist):

mkdir store/

And then change into that directory:

cd store/

Once you’re in the directory where you want Magento installed, you’ll need to copy and paste the following in to a file and set the permissions on it.

To create the file, type the following:

vi install

Hit the I key to insert data. Copy the following code and paste it in your SSH window, either by right-clicking or hitting Shift + Insert:

#!/bin/bash

clear

stty erase '^?'
    
echo -n "Database Name: "
read dbname

echo -n "Database User: "
read dbuser

echo -n "Database Password: "
read dbpass

echo -n "Admin Password: "
read adminpass

echo -n "Store URL (with trailing slash): "
read url

echo -n "Include Sample Data? (y/n) "
read sample

if [ "$sample" = "y" ]; then
    echo
    echo "Now installing Magento with sample data..."
    
    echo
    echo "Downloading packages..."
    echo
    
    wget http://www.magentocommerce.com/downloads/assets/1.6.0.0/magento-1.6.0.0.tar.gz
    wget http://www.magentocommerce.com/downloads/assets/1.2.0/magento-sample-data-1.2.0.tar.gz
    
    echo
    echo "Extracting data..."
    echo
    
    tar -zxvf magento-1.6.0.0.tar.gz
    tar -zxvf magento-sample-data-1.2.0.tar.gz
    
    echo
    echo "Moving files..."
    echo
    
    mv magento-sample-data-1.2.0/media/* magento/media/
    mv magento-sample-data-1.2.0/magento_sample_data_for_1.2.0.sql magento/data.sql
    mv magento/* magento/.htaccess .
    
    echo
    echo "Setting permissions..."
    echo
    
    chmod 550 mage
    
    echo
    echo "Importing sample products..."
    echo
    
    mysql -h localhost -u $dbuser -p$dbpass $dbname < data.sql
    
    echo
    echo "Initializing PEAR registry..."
    echo
    
    ./mage mage-setup .
    
    echo
    echo "Cleaning up files..."
    echo
    
    rm -rf magento/ magento-sample-data-1.2.0/
    rm -rf magento-1.6.0.0.tar.gz magento-sample-data-1.2.0.tar.gz
    rm -rf index.php.sample .htaccess.sample php.ini.sample data.sql *.txt
    
    echo
    echo "Installing Magento..."
    echo
    
    php-cli -f install.php -- \
    --license_agreement_accepted "yes" \
    --locale "en_US" \
    --timezone "America/Los_Angeles" \
    --default_currency "USD" \
    --db_host "localhost" \
    --db_name "$dbname" \
    --db_user "$dbuser" \
    --db_pass "$dbpass" \
    --url "$url" \
    --use_rewrites "yes" \
    --use_secure "no" \
    --secure_base_url "" \
    --use_secure_admin "no" \
    --admin_firstname "Store" \
    --admin_lastname "Owner" \
    --admin_email "[email protected]" \
    --admin_username "admin" \
    --admin_password "$adminpass"
    
    echo
    echo "Finished installing the latest stable version of Magento With Sample Data"
    echo
    
    echo "+=================================================+"
    echo "| MAGENTO LINKS"
    echo "+=================================================+"
    echo "|"
    echo "| Store: $url"
    echo "| Admin: ${url}admin/"
    echo "|"
    echo "+=================================================+"
    echo "| ADMIN ACCOUNT"
    echo "+=================================================+"
    echo "|"
    echo "| Username: admin"
    echo "| Password: $adminpass"
    echo "|"
    echo "+=================================================+"
    echo "| ENCRYPTION KEY"
    echo "+=================================================+"
    echo "|"
    echo "| PASTE-ENCRYPTION-KEY-HERE"
    echo "|"
    echo "+=================================================+"
    echo "| DATABASE INFO"
    echo "+=================================================+"
    echo "|"
    echo "| Database: $dbname"
    echo "| Username: $dbuser"
    echo "| Password: $dbpass"
    echo "|"
    echo "+=================================================+"
    
    exit
else
    echo "Now installing Magento without sample data..."
    
    echo
    echo "Downloading packages..."
    echo
    
    wget http://www.magentocommerce.com/downloads/assets/1.6.0.0/magento-1.6.0.0.tar.gz
    
    echo
    echo "Extracting data..."
    echo
    
    tar -zxvf magento-1.6.0.0.tar.gz
    
    echo
    echo "Moving files..."
    echo
    
    mv magento/* magento/.htaccess .
    
    echo
    echo "Setting permissions..."
    echo
    
    chmod 550 mage
    
    echo
    echo "Initializing PEAR registry..."
    echo
    
    ./mage mage-setup .
    
    echo
    echo "Cleaning up files..."
    echo
    
    rm -rf magento/ magento-1.6.0.0.tar.gz
    rm -rf index.php.sample .htaccess.sample php.ini.sample *.txt
    
    echo
    echo "Installing Magento..."
    echo
    
    php-cli -f install.php -- \
    --license_agreement_accepted "yes" \
    --locale "en_US" \
    --timezone "America/Los_Angeles" \
    --default_currency "USD" \
    --db_host "localhost" \
    --db_name "$dbname" \
    --db_user "$dbuser" \
    --db_pass "$dbpass" \
    --url "$url" \
    --use_rewrites "yes" \
    --use_secure "no" \
    --secure_base_url "" \
    --use_secure_admin "no" \
    --admin_firstname "Store" \
    --admin_lastname "Owner" \
    --admin_email "[email protected]" \
    --admin_username "admin" \
    --admin_password "$adminpass"
    
    echo
    echo "Finished installing the latest stable version of Magento Without Sample Data"
    echo
    
    echo "+=================================================+"
    echo "| MAGENTO LINKS"
    echo "+=================================================+"
    echo "|"
    echo "| Store: $url"
    echo "| Admin: ${url}admin/"
    echo "|"
    echo "+=================================================+"
    echo "| ADMIN ACCOUNT"
    echo "+=================================================+"
    echo "|"
    echo "| Username: admin"
    echo "| Password: $adminpass"
    echo "|"
    echo "+=================================================+"
    echo "| ENCRYPTION KEY"
    echo "+=================================================+"
    echo "|"
    echo "| PASTE-ENCRYPTION-KEY-HERE"
    echo "|"
    echo "+=================================================+"
    echo "| DATABASE INFO"
    echo "+=================================================+"
    echo "|"
    echo "| Database: $dbname"
    echo "| Username: $dbuser"
    echo "| Password: $dbpass"
    echo "|"
    echo "+=================================================+"
    
    exit
fi
&#91;/text&#93;

Hit the <strong>Esc</strong> key to exit out of insert mode.

Type the following to save the file and exit back to the prompt:
[text] :x 

Hit the Enter key after you’ve typed that in.

Now set the permissions:

chmod +x install

[box type=”info”]
Password

Please make sure your database and admin passwords only contain alphanumeric characters! Also, the admin password must be at least 8 characters in length, and contain at least 1 number.
[/box]

Next, run the installation script:

./install

When you’re done, delete the installer script:

rm -f install