Installation d'un serveur web et de Drupal 11

Préparation du serveur (Apache + PHP + MariaDB)

L'installation de PHP entraîne l'installation d'Apache.

sudo apt update ; sudo apt upgrade
sudo apt install php

Utiliser curl afin de télécharger Composer (d'abord dans notre dossier home, ensuite on le déplace vers /usr/local/bin) :

sudo apt install curl
curl -s https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Installer le reste des paquets nécessaires pour php :

sudo apt install zip unzip php-mbstring php-xml php-gd php-curl php-zip
sudo apt install php-pdo-mysql

Activer ces extensions de php :

sudo vi /etc/php/8.3/apache2/php.ini
# ... TODO ...

Vérifier que le module rewrite d'Apache soit activé :

sudo apachectl -M | grep rewrite

Activer le module s'il ne l'est pas encore :

sudo a2enmod rewrite
sudo systemctl restart apache2.service

Installer le serveur MariaDB :

sudo apt install mariadb-server

Sécurisation de MariaDB (et désactivation de l'accès root)

sudo mariadb-secure-installation
# Répondre au questions :
Enter current password for root (enter for none):  # ENTER 
Set root password? [Y/n]                           # N 
Remove anonymous users? [Y/n]                      # Y 
Disallow root login remotely? [Y/n]                # Y 
Remove test database and access to it? [Y/n]       # Y 
Reload privilege tables now? [Y/n]                 # Y 

Création d'un user admin :

sudo mariadb
GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY '******' WITH GRANT OPTIONS;
FLUSH PRIVILEGES;
exit
# Tester le compte admin :
mariadb-admin -u admin -p version

Installation du certbot pour utiliser Let's encrypt :

sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

Création de la base de données

Créer une base de données "mydrupal" et un utilisateur "mydrupal" ayant tous les droits sur cette base de données :

mariadb -u admin -p
CREATE DATABASE mydrupal;
GRANT ALL PRIVILEGES ON mydrupal.* TO 'mydrupal'@'localhost' IDENTIFIED BY '******';
FLUSH PRIVILEGES;
exit

Configuration du VirtualHost et HTTPS

Créer un dossier /var/www/drupal (vide pour l'instant).

Créer un fichier /etc/apache2/sites-available/drupal.conf :

<VirtualHost *:80>
    ServerName www.marclebrun.be
    ServerAlias marc.lebrun.be
    ServerAdmin marc@email.com
    DocumentRoot /var/www/drupal/web
    <Directory /var/www/drupal/web>
        Options Indexes FollowSymLinks Multiviews
        AllowOverride all
        Require all denied
        Require all granted
        Allow from all
    </Directory>
 
    ErrorLog ${APACHE_LOG_DIR}/drupal/error.log
    CustomLog ${APACHE_LOG_DIR}/drupal/access.log combined
</VirtualHost>

Créer le dossier pour les fichiers .log

sudo mkdir /var/log/apache2/drupal sudo chown root:adm /var/log/apache2/drupal

Tester et activer le nouveau site :

sudo a2ensite drupal.conf sudo apachectl configtest sudo systemctl reload apache2.service

Ajouter un certificat Let's encrypt pour le nouveau site :

sudo certbot certonly --apache

Ensuite modifier la configuration du VirtualHost :

 

 

 

 

 

 

 

Historique des commandes

    3  sudo apt update
    4  sudo apt upgrade
    5  sudo apt install php
    6  sudo apt install curl
    7  curl -s https://getcomposer.org/installer | php
    8  sudo mv composer.phar /usr/local/bin/composer
    9  composer
   10  sudo apt install zip unzip php-mbstring php-xml php-gd php-curl php-zip
   11  sudo apt install php-pdo-mysql
   12  apt search php-pdo
   13  apt search php-pdo-mysql
   14  sudo apt search php-pdo-mysql
   15  sudo apt search php-zip
   16  sudo apachectl -M
   17  sudo apachectl -M | grep rewrite
   18  sudo a2enmod rewrite
   19  sudo systemctl restart apache2.service 
   20  sudo apachectl -M | grep rewrite
   21  sudo apt install mariadb-server
   22  sudo systemctl status mariadb
   23  sudo mariadb-secure-installation
   24  sudo mariadb
   25  mariadb-admin -u admin -p version
   26  mariadb -u admin -p
   27  sudo vi /etc/php/8.3/apache2/php.ini
   28  sudo systemctl reload apache2.service 
   29  cd /var/www
   30  ls -l
   31  cd html/
   32  ls -l
   33  cd /etc/apache2/sites-available/
   34  ls -l
   35  cat 000-default.conf 
   36  sudo systemctl status apache2.service 
   37  sudo vi drupal.conf
   38  sudo mkdir /var/log/apache2/drupal
   39  sudo chown root:adm /var/log/apache2/drupal
   40  sudo a2ensite drupal.conf 
   41  sudo apachectl configtest
   42  sudo systemctl reload apache2.service 
   43  exit
   44  vi drupal.txt
   45  cat drupal.txt 
   46  exit
   47  sudo apachectl -M
   48  sudo a2enmod ssl
   49  sudo a2enmod headers 
   50  sudo systemctl restart apache2.service 
   51  sudo apachectl -M
   52  sudo snap install core; sudo snap refresh core
   53  sudo snap install --classic certbot
   54  sudo ln -s /snap/bin/certbot /usr/bin/certbot
   55  cd /etc/apache2/
   56  ls -l
   57  cd sites-enabled/
   58  ls -l
   59  a2dissite 000-default.conf 
   60  sudo a2dissite 000-default.conf 
   61  ls -l
   62  sudo vi drupal.conf 
   63  sudo systemctl reload apache2.service 
   64  sudo certbot certonly --apache
   65  sudo vi drupal.conf 
   66  ls -l /etc/letsencrypt/live/
   67  sudo ls -l /etc/letsencrypt/live/
   68  sudo ls -l /etc/letsencrypt/live/marclebrun.be/
   69  sudo apachectl configtest
   70  sudo systemctl restart apache2.service 
   71  exit
   72  cd /home/marc
   73  composer create-project drupal/recommended-project drupal
   74  sudo mv /home/marc/drupal /var/www
   75  cd /var/www/
   76  ls -l
   77  sudo chown -R www-data:www-data /var/www/drupal/
   78  sudo chmod -R 775 /var/www/drupal/
   79  cd /etc/apache2/sites-enabled/
   80  ls -l
   81  sudo vi drupal.conf 
   82  sudo apachectl configtest
   83  sudo systemctl reload apache2.service
   

Préparation du serveur