Drupal: Installation

By the way: ALWAYS use binary ftp transfers.

In Ascii mode: Many .js and .css files contain very long lines, this causes transfer errors. Also, you do not want to replace newlines with carriage-return-newlines in shell scripts.

For filezilla: go to "Edit -> Settings ... -> FTP: File types" and choose 'Binary' for 'Default transfer type'.

Using multiple ports

Here is my recipe to install drupal on an ubuntu-pc. I find it convenient to have more that one website available on one system. The easiest solution I found is using different port numbers for each site, for example:

  • localhost:8081
  • localhost:8082
  • etc ...

In this example, the host name of the system where the websites are situated is "geranium". So, to access the sites on a local network from another ubuntu-pc:

  • geranium.local:8081
  • geranium.local:8082
  • etc ...

Note: Command line commands are preceded by $, for example:

$ ls -l

Note: in the text below, "geranium.local" is used as (part of) an url. When testing on the system where the installation is done, "localhost" can be used.

Note: make sure your umask is correctly set:

$ umask 022

Note: I use as editor "vim", so I use this in the instructions. Feel free to use another editor.

Note: The example-user is "theboss". Use your own login instead.

Step 1: install apache, the web server

$ sudo apt install apache2

test: a browser on the url: geranium.local, should show the Apache2 Ubuntu Default Page.

Step 2: install ftp server

$ sudo apt install ftpd

Step 3: install php, the language drupal is written in.

$ sudo apt install php libapache2-mod-php
$ sudo a2enmod php7.0  # or php5.0, if php5 is your php version

test: create the file /var/www/html/phpinfo.php with the following content:

<?php phpinfo(); ?>

and test with the url: geranium.local/phpinfo.php . This should show the settings for your php installation.

Step 4: install mysql

Mysql is the database system where drupal saves nearly everything.

$ sudo apt install mysql-client mysql-server

You will be asked to set a password for the root-mysql-user. Note: this has nothing to do with the system-root-password.

Test on geranium:

$ mysql -u root -p -h localhost

should give the mysql prompt to signify that you started a mysql session. End this session with CNTRL-D.

Step 5: install phpmyadmin

Phpmyadmin is a web-based tool to manage the mysql server.

$ sudo apt install phpmyadmin libmcrypt-dev mcrypt

Choose "apache2" as server to configure for.

Click "yes" for configuration with dbconfig-common.

You will be asked for the mysql-root password.

You will be asked to choose a password for the use of phpmyadmin.

$ sudo ln -s /etc/phpmyadmin/apache.conf \
$ sudo a2enconf phpmyadmin
$ sudo phpenmod mcrypt
$ sudo service apache2 reload

Test: the url geranium.local/phpmydamin should show the phpmyadmin page.

Step 6: enable userdir and clean urls

This step tells apache to use ~/public_html as place for the web pages of an user. This is not really necessary in this process, but can come in handy now and then. Enabling clean urls makes life with drupal easier.

$ sudo a2enmod userdir     # to enable userdir
$ sudo a2enmod rewrite     # to enable clean urls
$ sudo service apache2 restart

$ cd /etc/apache2/mods-enabled

Edit userdir.conf


AllowOverride FileInfo AuthConfig Limit Indexes


AllowOverride All


$ sudo service apache2 reload

Test: logged in as usual, for example with user name "theboss":

$ mkdir -p ~/public_html
$ echo "hello" > $HOME/public_html/index.html

The url geranium.local/~theboss should show the word "hello".

Step 7: enable php in user directories

Edit /etc/apache2/mods-enabled/php7.0.conf (or php5.conf)

$ sudo vim /etc/apache2/mods-enabled/php7.0.conf

and follow the instructions at the end of the file. After editing, the end of the file should show something as:

<IfModule mod_userdir.c>
   <Directory /home/*/public_html>
      php_admin_flag engine Off

$ sudo service apache2 reload

Test: logged in as "theboss":

$ echo '<?php phpinfo(); ?>' > ~/public\_html/phpinfo.php

The url geranium.local/~theboss/phpinfo.php should show the phpinfo screen.

Step 8: enable php error messages.

If not enabled, you will encounter blank screens or misleading screens when a php5 error occurs.

$ cd /etc/php/7.0/apache2/ # or /etc/php5/apache2
$ sudo cp php.ini php.ini.orig

Edit php.ini, change

display\_errors = Off
display\_errors = On

$ sudo service apache2 reload

Test: logged in as "theboss":

$ echo '<?php apekool(); ?>' > ~/public\_html/apekool.php

The url geranium.local/~theboss/apekool.php should produce an error message in your browser.

Step 9: adapt apache to serve your new drupal website

We will arrange that:

  • Your website is available as geranium.local:8081, or alternatively on the geranium system as localhost:8081

  • The website will be placed in ~theboss/public_html/ratrabbit

        $ cd /etc/apache2/sites-available
        $ sudo cp 000-default.conf ratrabbit.conf

edit ratrabbit.conf. Change

<VirtualHost *:80>
<VirtualHost *:8081>

put after the line

     ServerAdmin webmaster@localhost

The following:

     ServerName geranium:8081

Change the line

     DocumentRoot /var/www/html

into the following lines:

     DocumentRoot /home/theboss/public_html/ratrabbit
     <Directory />
       Options FollowSymLinks
       AllowOverride All

and save the file.

$ cd /etc/apache2

Edit ports.conf, after:

         Listen 80

add this line:

         Listen 8081


$ sudo a2ensite ratrabbit  # to enable your website
$ sudo service apache2 reload   # to restart apache2

Test: logged in as theboss:

$ cd ~/public_html
$ mkdir ratrabbit
$ cd ratrabbit
$ echo '8081' > index.html

The url geranium.local:8081 should now show '8081'

Step 10: installation of drupal

In this example we use drupal-7.41, but probably there is a newer one available now. Use that version instead.

Logged in as theboss:

$ mkdir ~/drupals              # folder to store drupal-related files
$ cd drupals
$ wget http://ftp.drupal.org/files/projects/drupal-7.41.tar.gz
$ tar xf drupal-7.41.tar.gz
$ rm ~/public_html/ratrabbit/index.html
$ cd drupal-7.41
$ cp -r * .htaccess ~/public_html/ratrabbit

Test: The url geranium.local:8081 should show the configuration screen of drupal. DO NOT CONFIGURE YET.

Step 11: create an mysql user and a drupal database

  • Goto url: geranium.local/phpmyadmin
  • click tab Users -> Add user<br>

  User name: ratrabbit (or whatever you like)
  Host: select Local
  Password: choose password for user ratrabbit

  • Under database for user:<br> 

    choose 'Create database with same name and grant all privileges'
    click 'Go' (right under)

   In the left column should now show database 'ratrabbit',
   and in Users Overview should also show 'ratrabbit'.

Step 12: Configure drupal

  Goto url geranium.local:8081 and follow the instructions carefully.

Now your website should be up and running. If you want another website next to the first one, but with port 8082 in stead of 8081, invent another name for your website, for example "dracula" in stead of "ratrabbit" and follow steps 9-12, replacing "ratrabbit" with "dracula" and "8081" with "8082".

It is not necessary to install drupal in the document-root directory for geranium.local:8081. Following the example above, you could define ~/public_html/ratrabbit as document-root, and install drupal in a subdirectory, for example ~/public_html/ratrabbit/drupal-website.