Revision 31 as of 2010-10-11 14:19:00

Clear message

About Joomla!

Joomla! is an award-winning Content Management System (CMS) that will help you build websites and other powerful online applications. Modern CMSes like Joomla allow you to organize and update web-sites without using any local editor; all editing is done online.

This guide applies to Ubuntu 6.06 LTS (Dapper Drake) as well as to 7.04 (Feisty Fawn)

Tested this guide with 10.04 Lucid - works perfectly, with some minor differencies:

  • new mysql root password is automatically requested on

    aptitude install mysql-server - no need for entering commands manually

  • mambots folder does not exist in the joomla 1.5.21 version.

    chown -R www-data:www-data $i issues warnings (that do not harm).

Alternative to manual installation

Some users may prefer to skip manual installation by using the unofficial pre-integrated TurnKey Joomla Appliance based on Ubuntu LTS.

Pre-Install Requirements

Note that this guide works for Joomla! 1.0 and Joomla! 1.5.

Any new install should be done with the newest 1.5.

Install the LAMP stack

Use any method to install the Apache2, Mysql and Php stack. You will need the following packages:

apache2 php5-mysql libapache2-mod-php5 mysql-server

Set a mysql-root password (not the same as a root password, but a password for mysql)

mysql -u root

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourpassword');
mysql> SET PASSWORD FOR 'root'@'yourhostname' = PASSWORD('yourpassword');

Where you should change 'yourhostname' in last line. Each successful mysql command will show:

Query OK, 0 rows affected (0.00 sec)

Quit the mysql prompt:

mysql> \q

You should now have a functional LAMP stack and a password for the mysql root user.

Visit Apache PHP MySQL for more information on LAMP.

Download Joomla!

You should download the latest stable version from the official Joomla Download page. Unpack it and then copy it to your webserver directory.

NOTE - the default root directory for Apache2 is /var/www. If you intend to use Joomla exclusively you don't need to create a 'joomla' sub-folder as instructed in their official documentation.

# Change for new version
SOURCEPKG=Joomla_1.5.14-Stable-Full_Package.tar.bz2
SOURCEWWW=http://joomlacode.org/gf/download/frsrelease/10785/42653/Joomla_1.5.14-Stable-Full_Package.tar.bz2

# Get it
mkdir joomla
cd joomla
wget $SOURCEWWW

# Unpack it
tar xvjf $SOURCEPKG

# Cleanup
rm -f $SOURCEPKG

# Move
cd ..
sudo mv joomla /var/www/

Configure Access Rights

The default folder rights will block various Joomla functions so you need to change the rights. There is the quick/easy way, and the more sophisticated way; choose one:

# A. Quick but less secure. Allow writing in whole joomla subtree
sudo chown -R www-data:www-data /var/www/joomla

# or B. More secure (recommended). Allow writting only in places Joomla! needs to write to (more secure)
sudo chown -R root:root /var/www/joomla
cd /var/www/joomla
PLACES='
administrator/backups
administrator/components
administrator/modules
administrator/templates
cache
components
images
images/banners
images/stories
language
mambots
mambots/content
mambots/editors
mambots/editors-xtd
mambots/search
media
modules
templates
'
for i in $PLACES; do
    sudo chown -R www-data:www-data $i
done

Handle file and directory permissions:

cd /var/www/joomla
sudo find . -type f -exec chmod 644 {} \;
sudo find . -type d -exec chmod 755 {} \;

Configure MySQL

You need to create a new database dedicated to Joomla. You can do this with PhpMyAdmin or via the command line:

I believe the Joomla 1.5 install does it automatically, and prompts you for a name

mysqladmin -u root -p create joomla

Where joomla is the name you picked for the mysql database that joomla will use. You can call it anything you want.

mysql -u root -p

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON joomla.* TO 'yourusername'@'localhost' IDENTIFIED BY 'yourpassword';

You do not want to have Joomla use the mysql root user to access the database. The above command creates a mysql user (other than the mysql root user) with some priviledges to use the joomla database. You will need to chose the yourusername and yourpassword. If the command was successful, activate the new permissions:

mysql> FLUSH PRIVILEGES;

Quit the mysql prompt:

mysql> \q

Open history file for MySQL commands and delete the above SQL, since the password is in readable format!

gedit ~/.mysql_history

Reload Apache2

You may need to force-reload apache2 so that it knows to use the php module if you haven't done so since you installed the LAMP stack.

sudo /etc/init.d/apache2 restart

Perform Joomla Installation

Point your browser to localhost/joomla, and follow the onscreen instructions.

Pre-installation check

If everything is listed in green, you may proceed.

Licence

Joomla! is GPLed.

Database configuration

Configure the database name, username and password.

Name your site

Give your site a name

More site information

Enter site URL and administrator user and password

Finish install and remove installation directory

You will be asked to remove the installation directory once configuration is complete.

sudo rm -R /var/www/joomla/installation/

Please refer to the Joomla! installation manual for more details, specially to Joomla! Administrator's Security Checklist.

Basics of Administering Joomla

There is a "Quick Start Guide" on the official Joomla.org web-site which does a walk-through of the install, as well as using several of the administration features. One thing it does not do is provide a 'philosophical' overview of how Joomla organizes things.

Quick Points:

  • The Administator menus are non-intuitive at first, mostly because they refer to an advanced system of Content Types
  • The most high-level form of editing is done in Extensions > Module Manager.

This section needs a lot of work. Or just use the official Joomla! documentation!

Types of Content

Sections

  • General grouping (with Categories and Articles beneath it)
  • FYI - The 'order' the Sections are listed in the Section Manager is just cosmetic.

Categories

  • Each Category grouping is assigned to a Section

Articles

  • Main form of individual content!
  • Must be assigned a Section and Category; you cannot mismatch these, i.e., choose a Category from an unselected Section.
  • Can also be assigned to the Front Page (separate from the required Section/Category assignment)

Menu Links

  • Each link is assigned a 'type' e.g. blog listing (with assigned Section/Category)

Types of Layout

Menus

  • Menu items link to pre-defined module-types, or to stand-alone Modules.
  • Not every Template displays every Menu, e.g. RokWebify only displays "top"

  • Menu items can be moved between menus by editing them (in their original location)

Modules

  • Groups of content which can assigned on-screen areas.
  • Some modules let you add other Content, others are pre-defined, e.g. Breadcrumbs.
  • Module positioning is specified as left, right, or footer.

Front Page

  • A 'special' screen with it's own layout settings
  • Individual articles can be 'forced' to the Front Page; not recommended except for permanent info.

Templates

  • Pre-defined set of menus, module positions and artwork.
  • Different templates support different positioning options.
  • If you switch templates you may end-up with unexpected positioning changes, e.g. if a module is 'assigned' to an unsupported position-option.
  • If you switch templates you may lose menus, ie., they'll still be defined in Admin but ignored by template.
  • You can customize the XML/CSS of templates but you risk breaking things.