Chamilo 2 installation guide

This is the official Chamilo installation guide for version 2+.

Requirements

This version of Chamilo requires the following software stack. It might be installed in other contexts as PHP is very portable, but the following has been thoroughly tested for production environments. Within PHP, Chamilo requires or benefits from the following modules, which might already be included in PHP on your system:

Web-panel installation

Database

Make sure you have a database available with full permissions. Do not share that database with another application as Chamilo might need to create a table that has the same name as a table in the other application.

Virtual host

Define a new virtual host/subdomain name you will use for Chamilo (Chamilo 2 does *not* work as a sub-folder of an existing website, you need a subdomain like "elearning.yourdomain.com").
Upload and/or unzip your Chamilo files inside your web folder (usually inside a folder called "public_html/").
Configure a virtual host pointing at the "public" directory inside your Chamilo directory. For example, this could be "/home/elearning.yourdomain.com/public_html/chamilo2/public/".

Files permissions

Make sure the following files and folders are writeable by the web server. Set permissions to 0770 for example: The .env is the *file* where Chamilo will write the data collected during the installation.
You can create an empty file called ".env" at the root of your Chamilo folder ("/home/elearning.yourdomain.com/public_html/chamilo2/.env" in the example above), or temporarily give write permissions to the web server on the entire Chamilo folder ("/home/elearning.yourdomain.com/public_html/chamilo2/"). If you do the whole folder, don't forget to write down the permissions it had initially, and return it to its original permissions when the installation is over.

PHP settings

Some PHP settings are recommended, but the default values should be enough to get you started.
If you prefer to set them previously, here are the settings to change:

Installation wizard

You are ready to go. Open your browser on your subdomain (elearning.yourdomain.com in the example above), keep your database credentials at hand, and let the Chamilo installer guide you.

Sessions and Redis

In this alpha version, there are known issues with sessions not getting updated fast enough, which can be solved (temporarily) by using a Redis server. Check the command line instructions for more about this. This is a temporary situation that we expect to fix before the stable release.

Command line installation

Software stack

Assuming you are using a dedicated Ubuntu 24.04 LTS, these commands should help you have the software stack installed in a breeze. Otherwise, please review the requirements above and make sure they are met before moving on to the next section.

sudo -s
apt update && apt -y upgrade
apt -y install apache2 libapache2-mod-php8.3 mariadb-client mariadb-server redis-server php8.3-{bcmath,curl,exif,gd,iconv,intl,mbstring,mysql,opcache,soap,xml,zip,redis}
a2enmod rewrite
cd /var/www/
mkdir chamilo
wget https://github.com/chamilo/chamilo-lms/releases/download/v2.0.0-alpha.1/chamilo2.0.0-alpha.1.tar.gz
# about 400MB
tar zxf chamilo2.0.0-alpha.1.tar.gz
rm chamilo2.0.0-alpha.1.tar.gz
cd chamilo
touch .env
chown -R www-data: var config .env
mysql -u root -e "GRANT ALL PRIVILEGES ON chamilo.* TO chamilo@localhost IDENTIFIED BY '[choose a password here]'";
mysql -u root -e "FLUSH PRIVILEGES;"
mysql_secure_installation
# give a MariaDB root password twice and answer the default "Y" to anything else. The root password is *not* the one you gave above here.

Database

You will need a database user with privilege to fully use (and optionally create) a database.
Although progress has been made to support multiple database management systems, Chamilo currently only supports MariaDB and MySQL.
Setup a new user in your database system either through visual tools or directly in the terminal. If you have followed the command lines above, you can skip this.

mysql> GRANT ALL PRIVILEGES ON [db-name].* TO [db-user]@[db-host] IDENTIFIED BY '[db-password]';
mysql> FLUSH PRIVILEGES;
mysql> exit;
where:

Web server

Chamilo 2+ only requires a working web server setup to work. You can run it on localhost with the default installation of any web server, provided you configure your DocumentRoot as the path pointing to Chamilo's public/ subfolder.
Here is an example Apache vhost configuration file for an installation on the http://my.chamilo.local/ URL (replace all values between brackets, including the brackets, to your custom values).
It includes PHP settings which will only affect this vhost. If you prefer to set those PHP settings in php.ini, you are welcome to do so.
We also assume you will be using a default Redis installation to manage sessions (see notes in the web panel install section).
cd /etc/apache2/sites-available
vim [my.chamilo.local].conf
<VirtualHost *:80>
    ServerAdmin [your-email]
    ServerName [my.chamilo.local]
    DocumentRoot [/var/www/chamilo]/public/
    # The following might not even be required
    ErrorLog /var/log/apache2/[my.chamilo.local]-error.log
    CustomLog /var/log/apache2/[my.chamilo.local]-access.log combined
    DirectoryIndex index.php index.html
    Options Indexes FollowSymLinks
    <Directory [/var/www/chamilo/public]>
      AllowOverride all
    </Directory>
    php_value display_errors Off
    php_value file_uploads On
    php_value session.auto_start Off
    php_value short_open_tag Off
    php_value session.cookie_httponly On
    php_value upload_max_filesize 100M
    php_value post_max_size 100M
    php_value memory_limit 128M
    php_value session.save_handler "redis"
    php_value session.save_path "tcp://127.0.0.1:6379"
</VirtualHost>
After setting up this virtual host, don't forget to enable it (example here on Debian/Ubuntu's command line):
a2ensite [my.chamilo.local]
systemctl restart apache2

Files permissions

Make sure the following files and folders are writeable by the web server. Set permissions to 0770 for example: Assuming your web server user is www-data, you can do that quickly with the following from inside the Chamilo root directory (already done in first example commands list for Ubuntu):
sudo touch .env
sudo chown -R www-data:www-data var/ config/ .env

PHP settings

Some PHP settings are recommended, but the default values should be enough to get you started.
See vhost config's "php_value" section above for details.

Installation wizard

You should now be able to direct your browser to your URL (e.g. [http://my.chamilo.local]).
Chamilo will pick it up from there and offer the installation wizard to help guide you through the rest of the process.

Help available

If you are struggling with this guide, don't hesitate to ask for help on our community forum.
If you have reasons to seek professional assistance and warranties, please contact one of our official providers. They contribute heavily to the project and will be able to help you out quickly and efficiently, for configurations from 10 to 1M users.

Last updated: 2024-07-18 Valid XHTML 1.0 Transitional Valid CSS