Installing Elgg - Community Builder Based Open Source

26
www.almuhibbin.com 1 Installing Elgg Before you begin, make sure you have read Elgg's technical requirements. If you discover problems after following these instructions, check out the troubleshootingpage. 1. Upload Elgg Download the latest version of Elgg. Unzip Elgg and upload it to your webserver. If you want Elgg in your root domain (e.g. http://example.com), move or upload the contents of the unzipped Elgg folder into the document root directory of your server. If you want Elgg in its own subdirectory on your website (e.g. http://example.com/elgg), rename your unzipped directory to the name you would like the subdirectory to have and upload the directory to your document root. 2. Create a data folder Elgg needs a special folder to store uploaded files, including profile icons and photos. You will need to create this directory. We recommend that this folder is called data. For security reasons this must be stored outside of your document root. For example, if Elgg is installed in /home/elgg/html/, you might create it in /home/elgg/data. Alternately, if Elgg is installed/home/username/public_html/, then you may want to create it in/home/username/elgg/. Once this folder has been created, you'll need to make sure the web server Elgg is running on has permission to write to it and create directories in it. This shouldn't be a problem on Windows-based servers, but if your server runs Linux or a UNIX variant, you'll need to type something like: chgrp www-data /home/elgg/data/ chmod 775 /home/elgg/data/ If you use a graphical client to upload files, you can usually set permissions by right or shift-clicking on the folder and selecting 'properties' or 'Get Info'. NOTE: Setting your data directory to 777 will work, but it is insecure and so not recommended. If you are unsure how to correctly set permissions, contact your host for more information. Again, you need to make sure your web server has full permissions to the directory. 3. Create a database

description

Installing Elgg - Community Builder Based Open Source

Transcript of Installing Elgg - Community Builder Based Open Source

Page 1: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

1

Installing Elgg

Before you begin, make sure you have read Elgg's technical requirements. If you discover problems

after following these instructions, check out the troubleshootingpage.

1. Upload Elgg

Download the latest version of Elgg. Unzip Elgg and upload it to your webserver.

If you want Elgg in your root domain (e.g. http://example.com), move or upload the contents of

the unzipped Elgg folder into the document root directory of your server.

If you want Elgg in its own subdirectory on your website (e.g.http://example.com/elgg),

rename your unzipped directory to the name you would like the subdirectory to have and upload

the directory to your document root.

2. Create a data folder

Elgg needs a special folder to store uploaded files, including profile icons and photos. You will need to

create this directory.

We recommend that this folder is called data. For security reasons this must be stored outside of your

document root. For example, if Elgg is installed in /home/elgg/html/, you might create it

in /home/elgg/data. Alternately, if Elgg is installed/home/username/public_html/, then you may want

to create it in/home/username/elgg/.

Once this folder has been created, you'll need to make sure the web server Elgg is running on has

permission to write to it and create directories in it. This shouldn't be a problem on Windows-based

servers, but if your server runs Linux or a UNIX variant, you'll need to type something like:

chgrp www-data /home/elgg/data/

chmod 775 /home/elgg/data/

If you use a graphical client to upload files, you can usually set permissions by right or shift-clicking on the

folder and selecting 'properties' or 'Get Info'.

NOTE: Setting your data directory to 777 will work, but it is insecure and so not recommended. If you are

unsure how to correctly set permissions, contact your host for more information. Again, you need to make

sure your web server has full permissions to the directory.

3. Create a database

Page 2: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

2

Using your database administration tool of choice (if you're unsure about this, ask your system

administrator), create a new database for Elgg. Add a user to the database with all privileges. Make sure

you know the database name, username and password necessary to access this as you will be prompted

to add this information in the installer.

Create a database with cPanel

Create a database with cPanel

cPanel is a widely used graphical administration tool for websites that provides a wizard for creating

MySQL databases.

To make a database using the cPanel MySQL Database Wizard:

1. Log in to your cPanel

2. Click on the MySQL Database Wizard icon.

3. Create a name for the database (e.g. elgg)

4. Create a username (e.g. elgg)

5. Type in a password twice or have the wizard create one

6. Click the All Privileges checkbox

You will be prompted for the database name, the username, and password when you install Elgg. With

cPanel, the database and user names must be proceeded by the cPanel username and an underscore.

For example:

Database: cpanelloginname_databasename

Username: cpanelloginname_username

Create a database with phpMyAdmin

Create a database with phpMyAdmin

phpMyAdmin is a popular web-based front end for MySQL Administration. To create a new database,

follow these instructions:

1. Log in to phpMyAdmin

2. Create the database

3. Select your database on the sidebar menu

4. Go to the Priviledges tab and click Add a new user

Page 3: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

3

5. Fill out the top 4 fields, setting Host to localhost and then click Go

The database name, username, and password set here are used in the first install screen of Elgg.

Create a database with mysql client

Create a database with mysql client

To follow these instructions, you must know the root password for the database. This is likely different

from the root password of the server.

1. Start mysql client: mysql -u root -p

2. Create database: CREATE DATABASE mydatabasename;

3. Create user: CREATE USER myuser IDENTIFIED BY PASSWORD 'mypassword';

4. Give user permissions to the database: GRANT ALL ON mydatabasename.* to myuser;

4. Visit your Elgg site

Once you've performed these steps, visit your Elgg site in your web browser. Elgg will take you through

the rest of the installation process from there. The first account that you create at the end of the

installation process will be an administrator account.

A note on settings.php and .htaccess

The Elgg installer will try and create two files for you:

engine/settings.php, which contains the database settings for your installation

.htaccess, which allows Elgg to generate dynamic URLs

If these files can't be automatically generated, for example because the web server doesn't have write

permissions in the directories, Elgg will tell you how to create them. You could also temporarily change

the permissions on the root directory and the engine directory. Set the permissions on those two

directories so that the web server can write those two files, complete the install process, and them

change the permissions back to their original settings. If, for some reason, this won't work, you will need

to:

Page 4: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

4

Copy engine/settings.example.php to engine/settings.php, open it up in a text editor and fill in

your database details

Copy /htaccess_dist to /.htaccess

Note for installation on a virtual host (e.g. Rackspace, Amazon EC2)

For installation to proceed successfully, modify the .htaccess file in the root, and uncomment out:

117: #RewriteBase /

To be:

117: RewriteBase /

Operating System Specific Instructions

Windows EasyPHP

Windows XAMPP

Mac OSX MAMP

Ubuntu Linux

Install Ubuntu

1. Install Apache webserver: sudo apt-get install apache2

2. Install MySQL database server: sudo apt-get install mysql-server

3. Install PHP: sudo apt-get install php5 libapache2-mod-php5 php5-mysql

4. Install phpmyadmin: sudo apt-get install phpmyadmin

5. Turn on the Apache module rewrite: sudo a2enmod rewrite

6. Edit /etc/apache2/available_sites/default to allow URL rewrites

7. Restart Apache: sudo /etc/init.d/apache2 restart

Page 5: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

5

Install Troubleshooting

Help! I'm having trouble installing Elgg

You'll want to first recheck that your server meets the technical requirements for Elgg. Are you sure that

your server is not configured to run in cgi mode or safe mode? Have you verified that mod_rewrite is

being loaded? Is the mysql apache being loaded?

Keep notes on steps that you take to fix the install. Sometimes changing some setting or file to try to fix a

problem may cause some other problem later on. If you need to start over, just delete all the files, drop

your database, and begin again.

I can't save my settings on installation (I get a 404 error when saving settings)

Elgg relies on the mod_rewrite Apache extension in order to simulate certain URLs. For example,

whenever you perform an action in Elgg, or when you visit a user's profile, the URL is translated by the

server into something Elgg understands internally. This is done using rules defined in an .htaccess file,

which is Apache's standard way of defining extra configuration for a site.

This error suggests that the mod_rewrite rules aren't being picked up correctly. This may be for several

reasons. If you're not comfortable implementing the solutions provided below, we strongly recommend

that you contact your system administrator or technical support and forward this page to them.

Instructions for testing mod_rewrite

mod_rewrite isn't installed.

Check your httpd.conf to make sure that this module is being loaded by Apache. You may have to

restart Apache to get it to pick up any changes in configuration. You can also use PHP info to check to

see if the module is being loaded.

The rules in .htaccess aren't being obeyed.

In your virtual host configuration settings (which may be contained withinhttpd.conf), change the

AllowOverride setting so that it reads:

AllowOverride all

This will tell Apache to pick up the mod_rewrite rules from .htaccess.

Page 6: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

6

You installed Elgg in a subdirectory

See the item below about installing in a subdirectory of your html root.

The install script redirects me to "action" when it should be "actions"

This is a problem with your mod_rewrite setup (see previous troubleshooting item).

DO NOT, REPEAT, DO NOT change any directory names!

I installed in a subdirectory and my install action isn't working!

If you're getting errors on installation like:

Not Found. The requested URL /elgg/action/systemsettings/install was not found on this server

Notice that the requested URL begins with elgg. That means you installed Elgg in a subdirectory rather

than your site's html document root. You may need to give mod_rewrite a pointer to where your Elgg

installation is.

Open up .htaccess in a text editor

Where prompted, add a line like RewriteBase /path/to/your/elgg/installation/ (Don't

forget the trailing slash)

Save the file and refresh your browser.

Please note that the path you are using is the web path, minus the host.

For example, if your Elgg install is in:

/var/www/html/elgg/

and you view the site by going to http://example.com/elgg/.

Your RewriteBase line should look like:

RewriteBase /elgg/

I did everything! mod_rewrite is working fine, but still the 404 error

Maybe there is a problem with the file .htaccess. Sometimes the elgg install routine is unable to create

one and unable to tell you that. If you are on this point and tried evrything thats written above:

Page 7: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

7

check if it is really the elgg-created .htaccess (not only a dummy provided from the server

provider)

if it is a dummy, use the htaccess_dist (rename it to .htaccess)and edit it in a texteditor, you'll find

the entryRewriteBase commented out with an "#"

delete the "#" and add your path (i.e.:RewriteBase /path/to/your/elgg/installation/ Don't

forget the trailing slash)

There is a white page after I submit my database settings

Check that the Apache mysql module is installed and is being loaded.

I'm getting a 404 error with a really long url

If you see a 404 error during the install or on the creation of the first user with a url

like:http://example.com/homepages/26/d147515119/htdocs/elgg/action/register that means

your site url is incorrect in your sites_entity table in your database. This was set by you on the second

page of the install. Elgg tries to guess the correct value but has difficulty with shared hosting sites. Use

phpMyAdmin to edit this value to the correct base url.

I am having trouble setting my data path

This is highly server specific so it is difficult to give specific advice. If you have created a directory for

uploading data, make sure your http server can access it. The easiest way to do this is give it permissions

777.

Make sure the path is correct and ends with a /. You can check the path in your database in the datalists

table.

If you only have ftp access to your server and created a directory but do not know the path of it, you might

be able to figure it out from the www file path set in your datalists database table. Asking for help from

your hosting help team is recommended at this stage.

If your server uses PHP in the deprecated safe mode, you may need to add the data directory to the

open_basedir restrictions. Ask your host for more information.

Page 8: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

8

I am having problems running on MAMP

On certain versions of MAMP, Elgg will either fail to install or have intermittent problems while running.

This is a known issue with MAMP and is related to the Zend Optimizer. Until Zend/MAMP have resolved

this issue it is recommended that you turn off the Zend Optimizer in your PHP settings.

I can't validate my admin account because I don't have an email server!

While it's true that normal accounts (aside from those created from the admin panel) require their email

address to be authenticated before they can log in, the admin account does not.

Once you have registered your first account you will be able to log in using the credentials you have

provided!

I'm installing over an existing Elgg classic install and am getting all kinds of errors (e.g. 500 Internal server error)

Don't!

Elgg 1.0 is an entirely new codebase and data model, and is not backwards compatible with Elgg Classic!

Additionally, it has different installation requirements.

You must install Elgg 1.0 to a new database, and in a different directory on your server.

We will be providing a way of migrating between 0.92 and 1.0 in due course.

Installation breaks with "Parse error: syntax error, unexpected T_NEW"

Elgg is not running under PHP 5.

Remember, PHP has three components - the php module, php cli and php cgi. Running php -v on the

console and getting 5.x.x back does not necessarily mean that the apache module is running PHP 5!

Confirm you have PHP 5 installed and activated as an apache module.

I have tried all of these suggestions and I still cannot install Elgg

It is possible that during the process of debugging your install you have broken something else. Make

sure that you have confirmed that your server meets Elgg's technical requirements. Test your

mod_rewrite. Then do a clean install (drop your elgg database, delete all the files in your elgg directory,

and start the process again).

Page 9: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

9

If that fails, you may want to seek the help of the Elgg community by posting at Elgg community site. Be

sure to mention what version of Elgg you are installing, details of your server platform, and any error

messages that you may have received including ones in the error log of your server.

Getting Started

You have installed Elgg on your server and worked through any initial server issues. The question you

may be asking yourself is now what? The answer to that question partly depends on why you installed

Elgg in the first place. Let's assume your evaluating Elgg as the basis of a social networking project.

Focus first on core functionality

While it may be tempting to go to the community site and install every interesting plugin, it is better to

initially stick with the plugins included with the installation package. This will allow you to get a sense of

what the platform is like without any issues possibly introduced by a plugin that's not written well.

Assuming that you have already created your first user (who is automatically an admin), using the toolbar

on top go to Site Administration -> Tools Administration and then enable all plugins. This should give you

a basic set of social networking functionality: blog, social bookmarking, files, internal messaging,

microblogging, notifications, activity feed, message board, user profiles.

Create test users

You have two choices for creating test users with the plain install. You can sign them up by going to the

home page or as an admin, you can create users by using the administrative interface (Administration ->

User Administration). You'll probably want to use a different browser when using a test user since only

one user can be logged in at a time in a browser.

Explore user functionality

Now use your test users to create blogs, add widgets to your profile or dashboard, post to the wire

(microblogging), and create pages (wiki-like page creation). Make sure to investigate the Settings off the

toolbar. This is where a user sets notification settings and configures tools (which will be blank as none of

the default plugins add controls here).

Explore admin functionality

All of the admin controls are found by clicking Administration on the toolbar. You have already used the

administration section to turn on plugins and you may have created some users with it also. Now use it to

Page 10: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

10

browse the log or play around with modifying the default profile fields. You will also want to go to the

Tools Administration page and look for plugins that have settings. With the riverdashboard plugin, turn its

dashboard override setting to yes and then notice how the dashboard has changed from an individual

page with widgets to a site-wide activity stream.

Extending Elgg

After satisfying yourself on what Elgg can do out of the box, you will want to try out some themes and

plugins. You can find many plugins and themes at the community site. As is normal with this sort of thing,

the quality varies so be sure to notice what sort of comments a plugin is getting.

Plugins

The easiest way to look through the plugins is to sort by the number of downloads (most popular). Plugins

are installed in the mod directory and activated on the Tools Administration page. You can find

instructions on installing and configuring pluginshere. If you run into any difficulty, be sure to check

the Administration FAQ.

Themes

Themes are plugins that override display aspects of Elgg. They should normally be placed at the bottom

of the plugin list so that the theme runs last. There were some significant changes between Elgg 1.2 and

Elgg 1.5 so beware what versions the theme supports. Also, the default theme is built into Elgg and does

not need to be turned off. Whenever you install a theme, you are overriding all or portions of the default.

Be sure to read the instructions on installing a theme.

Configuration/Themes

Changing the Look and Feel of Elgg

The look and feel of Elgg can be easily changed through the use of themes. A theme is a type of plugin

that overrides display aspects of Elgg.

Where to get themes

Themes can be obtained from:

The Elgg website

Page 11: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

11

Theme installation

A theme is installed just as all plugins are installed. Simply copy the theme's folder to the "mod" directory

in your Elgg install and then activate it from the Elgg admin panel.

To activate the theme:

Log in to your Elgg site with your administrator account

Go to Administration -> Tool Administration

Find your theme in the list of installed plugins and click on the 'enable' button.

Often you will want the theme to be the last plugin to run. The order of the plugins in the Tool

Administration page determines their loading order; to make the theme run last, click the bottom link.

Building your own theme

Theme development

Themes

In Elgg, a theme is a plugin. Themes are built and installed just as any other plugin. To begin, it is

advisable to familiarise yourself with Plugins and the Views system.

Create your plugin

Step one is to create your plugin as described in plugin development.

Create a new directory under mod/

Create a new start.php

Create a manifest file describing your theme.

Build your theme

There are two ways you can modify views:

View extension

The first way is to add extra stuff to an existing view via the extend view function from within your

start.php’s initialisation function.

For example, the following start.php will add mytheme/spotlight to the already existing site spotlight:

<?php

Page 12: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

12

function mytheme_init()

{

extend_view('page_elements/spotlight','mytheme/spotlight');

}

register_elgg_event_handler('init','system','mytheme_init');

?>

View overloading

Plugins can have a view hierarchy, any file that exists here will replace any files in the existing core view

hierarchy... so for example, if my plugin has a file:

/mod/myplugin/views/default/page_elements/spotlight.php

it will replace:

/views/default/page_elements/spotlight.php

But crucially, only when the plugin is active.

This gives you total control over the way elgg looks and behaves. It gives you the option to either slightly

modify or totally replace existing views.

More information

Themes for Elgg are both extremely easy to develop and incredibly powerful. Using themes you can

completely change how an Elgg install looks and feels (and even behaves).

Since there has been a fair amount of discussion of themes on the groups, I thought it would be a good

idea to write a brief post about it.

Themes use two key Elgg concepts - namely, the plugin architecture and the views system.

By far the easiest and flexible way to make a theme for Elgg is to build it as a plugin. This makes it easy

to distribute (since they are self contained) and lets you turn the theme on and off from the admin panel

(making the theming process far less invasive!)

What you must first do is create a new plugin directory under /mod (documented here). In a nutshell;

create a directory in the name of your theme, a new start.php and a new manifest.xml.

Page 13: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

13

Once you’ve done this you then can start modifying views. This can be done either by extension or by

view overriding.

View extension The first way is to add extra stuff to an existing view via the extend view function from

within your start.php’s initialisation function.

For example, the following start.php will add mytheme/spotlight to the already existing site spotlight:

<?php

function mytheme_init()

{

extend_view('page_elements/spotlight','mytheme/spotlight');

}

register_elgg_event_handler('init','system','mytheme_init');

?>

View overriding The next method is to override an existing theme, completely replacing it with the one

provided by your plugin.

View files provided by plugins automatically take precedence over views from the core. So all we have to

do to entirely replace the existing spotlight is to create a new spotlight.php in the appropriate hierarchy.

So, if the original view is stored in:

/elgg/views/default/page_elements/spotlight.php

We need to create the file:

/elgg/mod/mytheme/views/default/page_elements/spotlight.php

Now, when we go to the admin panel and activate our theme the spotlight will be replaced by whatever

you put in that file. Simple eh?

You can of course do this with any view.

Using a combination of these methods means you can replace the entire look and feel of a site very

quickly indeed, although I would suggest that you start slowly since many views do some quite

complicated things.

Page 14: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

14

Upgrading Elgg

Upgrade Instructions

1. Before upgrading, back up your Elgg database and code. Disable non-core plugins.

2. Download the new version of Elgg from elgg.org.

3. Overwrite your existing Elgg files. Any modifications should have been written within plugins, so

that they are not lost on overwriting. If this is not the case, take care to maintain your

modifications.

4. Visit http://your-elgg-site-URL/upgrade.php

5. Copy htaccess_dist to .htaccess, replacing your existing version. If you modified the default

.htaccess, be sure to move your modifications over to the new one.

Other notes

It is best to try out a new version on a test site before doing an upgrade

As you turn your plugins and theme back on when the upgrade is finished, be careful to note

problems with those plugins so that you can report them to the plugin authors.

Administration Manual

Elgg Administrator's Manual

This is mostly a skeleton at this point. Anyone interested in helping to build out an Administration Manual,

please join the Elgg Documentation group. Right now we are assembling an outline of what to include

in such a manual.

Installing Extensions

Installing and configuring plugins

Configuration/Plugins

Extending Elgg

Elgg can be easily extended to add extra functionality, this is accomplished through the use of Plugins.

Where to get plugins

Plugins can be obtained from:

Page 15: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

15

Elgg.org

The Elgg community site

Plugin installation

To install a plugin, unzip the plugin and copy the plugin's main folder to the "mod" directory in your Elgg

installation.

You must then activate the plugin:

Log in to your Elgg site with your administrator account

Go to Administration -> Tool Administration

Find your plugin in the list of installed plugins and click on the 'enable' button.

Installing a theme

Changing the Look and Feel of Elgg

The look and feel of Elgg can be easily changed through the use of themes. A theme is a type of plugin

that overrides display aspects of Elgg.

Where to get themes

Themes can be obtained from:

The Elgg website

Theme installation

A theme is installed just as all plugins are installed. Simply copy the theme's folder to the "mod" directory

in your Elgg install and then activate it from the Elgg admin panel.

To activate the theme:

Log in to your Elgg site with your administrator account

Go to Administration -> Tool Administration

Find your theme in the list of installed plugins and click on the 'enable' button.

Often you will want the theme to be the last plugin to run. The order of the plugins in the Tool

Administration page determines their loading order; to make the theme run last, click the bottom link.

Page 16: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

16

Building your own theme

Theme development

Installing a language pack

Configuration/LanguagePacks

Adding Language Support to Elgg

Language packs are available for download at the Elgg community site. There are language packs

for the core and they are usually installed in the languages directory off the elgg root directory. Other

language packs are provided for various plugins. Generally, the authors make it easy to copy those files

into the languages directory of each plugin under the mod directory.

Managing Your Server and Database

Configuring Cron

Cron

Contents

[hide]

1 What is cron?

2 Elgg and cron

3 How does it work?

4 Example crontab

5 Installation

6 See also

What is cron?

Cron is a program available on Unix-based operating systems that enables users to run commands and

scripts at set intervals or at specific times. A common use of cron is to rotate server logs to prevent them

from becoming too large.

Page 17: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

17

Elgg and cron

Elgg has a cron handler for executing functionality periodically. This enables the administrator to setup

jobs to be run periodically. Two common examples would be rotating the system log in the database or

doing garbage collection in the database (compacting the database by removing entries that are no

longer required).

Currently, Elgg supports the following hooks:

reboot - Run on server boot

hourly - Run every hour

daily - Run every day

weekly - Run every week

monthly - Run every month

yearly - Run every year

How does it work?

The Elgg cron handler is activated when particular pages are loaded. As an example,

loadinghttp://example.com/pg/cron/hourly/ in a web browser would activate the hourly hook. To

automate this, a cron job is setup to hit those pages at certain times. This is done by setting up a crontab

which is a configuration file that determines when and what cron runs.

The crontab needs to specify a script or command that will hit the Elgg cron pages. Two commonly

available programs for this are GET and wget. You will need to determine the location of one of these on

your server. Your crontab also needs to specify the location of your website.

Note: If you choose the utility "wget", then we suggest that you specify the option "--output-document"

(see manual for wget). For example, under Debian: /usr/bin/wget --output-document=/dev/null. If you don't

do that, files will be created in the home directory of the CRON user. The number of created files will

increase over and over...

Example crontab

# Location of GET

GET='/usr/bin/GET'

Page 18: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

18

# Location of your site (don't forget the trailing slash!)

ELGG='http://www.example.com/'

# The crontab

@reboot $GET ${ELGG}pg/cron/reboot/

@hourly $GET ${ELGG}pg/cron/hourly/

@daily $GET ${ELGG}pg/cron/daily/

@weekly $GET ${ELGG}pg/cron/weekly/

@monthly $GET ${ELGG}pg/cron/monthly/

@yearly $GET ${ELGG}pg/cron/yearly/

Installation

Take the example and change the ELGG and GET variables according to your server setup. If you have

ssh access to your Linux servers, type crontab -e and enter the crontab details into the text editor that

results. If you already have a crontab setup, you will have to merge the Elgg information into it. If you

don't have ssh access, you will have use a web-based configuration tool to set your crontab. This will vary

depending on hosting provider.

On Windows servers, there are a number of cron emulators available.

For wget, you should try using the flag --spider so that it does not download the file each time. For more

information on wget, see the wget manual.

Page 19: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

19

Log rotation

Permission error

You do not have permission to do that, for the following reasons:

The action you have requested is limited to users in one of the groups user, Sysops.

Elgg Documentation has restricted the ability to create new pages. You can go back and edit an

existing page, or log in or create an account.

Garbage collection

Managing Your Website

Taking your site temporarily offline

Taking your site temporarily offline

To take your site offline, you may wish to download and install the Elgg plugin Maintenace.

Making your site search engine friendly

Entering search engine meta-data

Moving your site

Duplicate Installation

Contents

[hide]

1 Introduction

o 1.1 Why Duplicate an Elgg Installation?

o 1.2 What Is Not Covered in This Tutorial

o 1.3 Before You Start

2 Copy Elgg Code to the Test Server

3 Copy Data to the Test Server

4 Edit engine/settings.php

5 Copy Elgg Database

6 Database Entries

o 6.1 Change the installation path

o 6.2 Change the data directory

o 6.3 Change the site URL

Page 20: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

20

o 6.4 Change the filestore data directory

7 Check .htaccess

8 Update Webserver Config

9 Run upgrade.php

10 Tips

[edit]Introduction

[edit]Why Duplicate an Elgg Installation?

There are many reasons you may want to duplicate an Elgg installation: moving the site to another

server, creating a test or development server, and creating functional backups are the most common. To

create a successful duplicate of an Elgg site, 3 things need to be copied:

database

data from the data directory

code

Also at least 5 pieces of information must be changed from the copied installation:

engine/settings.php file

.htaccess file

database entry for your site entity

database entry for the installation path

database entry for the data path

[edit]What Is Not Covered in This Tutorial

This tutorial expects a basic knowledge of Apache, MySQL, and Linux commands. As such, a few things

will not be covered in this tutorial. These include:

* How to backup and restore MySQL databases.

* How to configure Apache to work with Elgg.

* How to transfer files to and from your production server.

[edit]Before You Start

Before you start, make sure the Elgg installation you want to duplicate is fully functional. You will also

need the following items:

* A backup of the live Elgg database.

Page 21: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

21

* A place to copy the live database.

* A server suitable for installing duplicate Elgg site.

(This can be the same server as your production Elgg installation.)

Backups of the database can be obtained various ways, including phpMyAdmin, the MySQL official GUI,

and the command line. Talk to your host for information on how to backup and restore databases or use

Google to find information on this.

During this tutorial, we will make these assumptions about the production Elgg site:

* The URL is http://www.myelgg.org/

* The installation path is /var/www/elgg/

* The data directory is /var/data/elgg/

* The database host is 'localhost'

* The database name is 'production_elgg'

* The database user is 'db_user'

* The database password is 'db_password'

* The database prefix is 'elgg'

At the end of the tutorial, our test Elgg installation details will be:

* The URL is http://test.myelgg.org/

* The installation path is /var/www/elgg_test/

* The data directory is /var/data/elgg_test/

* The database host is 'localhost'

* The database name is 'test_elgg'

* The database user is 'db_user'

* The database password is 'db_password'

* The database prefix is 'elgg'

[edit]Copy Elgg Code to the Test Server

Page 22: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

22

The very first step is to duplicate the production Elgg code. In our example, this is as simple as copying

/var/www/elgg/ to /var/www/elgg_test/.

cp -a /var/www/elgg/ /var/www/elgg_test/

[edit]Copy Data to the Test Server

In this example, this is as simple as copying /var/data/elgg/ to /var/data/elgg_test/.

cp -a /var/data/elgg/ /var/data/elgg_test/

If you don't have shell access to your server and have to ftp the data, you may need to change ownership

and permissions on the files.

Note that you also need to delete the views cache on the test server after the copy process. This is a

directory calledviews_simplecache in your data directory and the file called view_paths.

[edit]Edit engine/settings.php

The engine/settings.php file contains the database configuration details. These need to be adjusted for

your new test Elgg installation. In our example, we'll look in /var/www/elgg_test/engine/settings.php and

find the lines that look like this:

// Database username

$CONFIG->dbuser = 'db_user';

// Database password

$CONFIG->dbpass = 'db_password';

// Database name

$CONFIG->dbname = 'elgg_production';

// Database server

// (For most configurations, you can leave this as 'localhost')

$CONFIG->dbhost = 'localhost';

// Database table prefix

Page 23: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

23

// If you're sharing a database with other applications, you will want to use this

// to differentiate Elgg's tables.

$CONFIG->dbprefix = 'elgg';

We need to change these lines to match our new installation:

// Database username

$CONFIG->dbuser = 'db_user';

// Database password

$CONFIG->dbpass = 'db_password';

// Database name

$CONFIG->dbname = 'elgg_test';

// Database server

// (For most configurations, you can leave this as 'localhost')

$CONFIG->dbhost = 'localhost';

// Database table prefix

// If you're sharing a database with other applications, you will want to use this

// to differentiate Elgg's tables.

$CONFIG->dbprefix = 'elgg';

Notice the $CONFIG->dbname has changed to reflect our new database.

[edit]Copy Elgg Database

Now the database must be copied from 'elgg_production' to 'elgg_test'. See your favorite MySQL

manager's documentation for how to make a duplicate database. You will generally export the current

database tables to a file, create the new database, and then import the tables that you previously

exported.

You have two options on updating the values in the database. You could change the values in the export

file or you could import the file and change the values with database queries. One advantage of modifying

Page 24: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

24

the dump file is that you can also change links that people have created to content within your site. For

example, if people have bookmarked pages using the bookmark plugin, the bookmarks will point to the

old site unless your update their URLs.

[edit]Database Entries

We must now change 4 entries in the database. This is easily accomplished with 4 simple SQL

commands:

[edit]Change the installation path

UPDATE `elggdatalists` SET `value` = "/var/www/elgg_test/" WHERE `name` = "path";

[edit]Change the data directory

UPDATE `elggdatalists` SET `value` = "/var/data/elgg_test/" WHERE `name` = "dataroot";

[edit]Change the site URL

UPDATE `elggsites_entity` SET `url` = "http://test.myelgg.org/";

[edit]Change the filestore data directory

(Only change the first path here!!)

UPDATE elggmetastrings set string = '/var/data/elgg_test/' WHERE id = (SELECT value_id

from elggmetadata where name_id = (SELECT * FROM (SELECT id FROM elggmetastrings WHERE

string = 'filestore::dir_root') as ms2) LIMIT 1) ;

[edit]Check .htaccess

If you have made changes to .htaccess that modify any paths, make sure you update them in the test

installation.

[edit]Update Webserver Config

For this example, you must edit the Apache config to enable a subdomain with a document root of

/var/www/elgg_test/. If you plan to install into a subdirectory of your document root, this step is

unnecessary.

[edit]Run upgrade.php

To regenerate cached data, make sure to run http://test.myelgg.org/upgrade.php

[edit]Tips

Page 25: Installing Elgg - Community Builder Based Open Source

www.almuhibbin.com

25

It is a good idea to keep a test server around to experiment with installing new mods and doing

development work. If you automate restorations to the 'elgg_test' database, changing the $CONFIG

values and adding the follow lines to the end of the elgg_test/engine/settings.php file will allow seamless

re-writing of the MySQL database entries.

$con = mysql_connect($CONFIG->dbhost, $CONFIG->dbuser, $CONFIG->dbpass);

mysql_select_db($CONFIG->dbname, $con);

$sql = 'UPDATE `elgg_datalists`

SET `value` = "/var/www/test_elgg/"

WHERE `name` = "path"';

mysql_query($sql);

print mysql_error();

$sql = 'UPDATE `elgg_datalists`

SET `value` = "/var/data/test_elgg/"

WHERE `name` = "dataroot"';

mysql_query($sql);

print mysql_error();

$sql = 'UPDATE `elgg_sites_entity`

SET `url` = "http://test.myelgg.org/"';

mysql_query($sql);

print mysql_error();

Managing Users

Setting user registration policy

Adding a new user

Resetting a user password

Dealing with a problem user