Recherche de site Web

Installation de LAMP (Linux, Apache, MySQL/MariaDB et PHP/PhpMyAdmin) dans Arch Linux


Arch Linux fournit un environnement système flexible et constitue une solution puissante et la mieux adaptée au développement d'applications Web sur de petits systèmes non critiques, car il s'agit d'un Open Source complet et fournit les dernières versions mises à jour sur les noyaux et les logiciels Web pour serveurs et bases de données.

L'objectif principal de ce didacticiel est de vous guider à travers des instructions complètes étape par étape qui mèneront finalement à l'installation de l'une des combinaisons de logiciels les plus utilisées dans le développement Web : LAMP (Linux, Apache, MySQL/MariaDB et PHP/PhpMyAdmin) et il vous présentera quelques fonctionnalités intéressantes (scripts Bash rapides et sales) qui ne sont pas présentes dans un système Arch Linux, mais qui peuvent faciliter le travail de création de plusieurs hôtes virtuels , générez les certificats SSL et les clés nécessaires aux transactions HTTS sécurisées.

Exigences

  1. Processus d'installation d'Arch Linux précédent – ignorez la dernière partie avec DHCP.
  2. Installation précédente de LEMP sur Arch Linux – uniquement la partie avec la configuration de l'Adresse IP statique et de l'accès SSH à distance.

Étape 1 : Installer le logiciel de base LAMP

1. Après une installation minimale du système avec une adresse IP statique et un accès au système à distance via SSH, mettez à niveau votre machine Arch Linux à l'aide de l'utilitaire pacman.

sudo pacman -Syu

2. Une fois le processus de mise à niveau terminé, installez LAMP à partir de morceaux, installez d'abord Apache Web Server et démarrez/vérifiez chaque démon de processus serveur.

sudo pacman -S apache 
sudo systemctl start httpd 
sudo systemctl status httpd

3. Installez le langage de script dynamique côté serveur PHP et son module Apache.

sudo pacman -S php php-apache

4. Lors de la dernière étape d'installation de la base de données MySQL, choisissez 1 fork de base de données communautaire (MariaDB), puis démarrez et vérifiez l'état du démon.

sudo pacman -S mysql 
sudo systemctl start mysqld 
sudo systemctl status mysqld

Vous avez maintenant installé le logiciel LAMP de base et démarré avec les configurations par défaut jusqu'à présent.

Étape 2 : Sécuriser la base de données MySQL

5. L'étape suivante consiste à sécuriser la base de données MySQL en définissant un mot de passe pour le compte root, en supprimant les comptes d'utilisateurs anonymes, en supprimant la base de données de test et en interdisant la connexion à distance pour l'utilisateur root (appuyez sur [ Touche Entrée] pour le mot de passe actuel du compte root et répondez par Oui à toutes les questions de sécurité).

sudo mysql_secure_installation

6. Vérifiez la connectivité de la base de données MySQL en exécutant la commande suivante, puis quittez le shell de la base de données avec l'instruction quit ou exit.

mysql -u root -p

Étape 3 : Modifier le fichier de configuration principal d'Apache

7. Les configurations suivantes sont pour la plupart liées au Apache Web Server pour fournir une interface dynamique pour l'Hébergement virtuel avec le langage de script PHP, SSL ou Les hôtes virtuels non SSL peuvent être effectués en modifiant les configurations des fichiers de service httpd.

Ouvrez d’abord la configuration du fichier Apache principal avec votre éditeur de texte préféré.

sudo nano /etc/httpd/conf/httpd.conf

Tout en bas du fichier, ajoutez les deux lignes suivantes.

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf

Le rôle des instructions Include ici est d'indiquer à Apache qu'à partir de maintenant, il doit lire d'autres configurations à partir de tous les fichiers qui résident dans /etc/httpd/conf/sites-enabled/ (pour l'hébergement virtuel) et /etc/httpd/conf/mods-enabled/ (pour les modules serveur activé) chemins système qui se terminent par une extension .conf.

8. Une fois qu'Apache a reçu ces deux directives, créez les répertoires système nécessaires en émettant les commandes suivantes.

sudo mkdir /etc/httpd/conf/sites-available
sudo mkdir /etc/httpd/conf/sites-enabled
sudo mkdir /etc/httpd/conf/mods-enabled

Le chemin sites-available contient tous les fichiers de configuration des hôtes virtuels qui ne sont pas activés sur Apache, mais le prochain script Bash utilisera ce répertoire pour créer des liens et activer les sites Web qui s'y trouvent.

Étape 4 : Créer les commandes Apache a2eniste et a2diste

9. Il est maintenant temps de créer les scripts Apache a2ensite et a2dissite qui serviront de commandes pour activer ou désactiver le fichier de configuration de l'hôte virtuel. Tapez la commande cd pour revenir à votre chemin utilisateur $HOME et créez vos scripts bash a2eniste et a2dissite en utilisant votre éditeur préféré.

sudo nano a2ensite

Ajoutez le contenu suivant sur ce fichier.

#!/bin/bash
if test -d /etc/httpd/conf/sites-available && test -d /etc/httpd/conf/sites-enabled  ; then
echo "-------------------------------"
else
mkdir /etc/httpd/conf/sites-available
mkdir /etc/httpd/conf/sites-enabled
fi

avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-available/`

if [ "$#" != "1" ]; then
        echo "Use script: n2ensite virtual_site"
        echo -e "\nAvailable virtual hosts:\n$site"
        exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi

Créez maintenant le fichier de script bash a2dissite.

sudo nano a2dissite

Ajoutez le contenu suivant.

#!/bin/bash
avail=/etc/httpd/conf/sites-enabled/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-enabled`

if [ "$#" != "1" ]; then
        echo "Use script: n2dissite virtual_site"
        echo -e "\nAvailable virtual hosts: \n$site"
        exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nsudo systemctl restart httpd"
exit 0
fi
fi

10. Une fois les fichiers créés, attribuez des autorisations d'exécution et copiez-les dans un répertoire exécutable ` PATH pour les rendre disponibles dans tout le système.

sudo chmod +x a2ensite a2dissite
sudo cp a2ensite a2dissite /usr/local/bin/

Étape 5 : Créer des hôtes virtuels dans Apache

11. Le fichier de configuration par défaut de l'hôte virtuel pour le serveur Web Apache sur Arch Linux est fourni par le fichier httpd-vhosts.conf situé dans /etc/httpd/conf/extra / mais si vous avez un système qui utilise beaucoup d'hôtes virtuels, il peut être très difficile de savoir quel site Web est activé ou non. Si vous souhaitez désactiver un site Web, vous devez commenter ou supprimer toutes ses directives et cela peut être une mission difficile si votre système fournit de nombreux sites Web et que votre site Web a plus de directives de configuration.

L'utilisation des chemins sites disponibles et sites activés simplifie grandement le travail d'activation ou de désactivation des sites Web et préserve également tous les fichiers de configuration de vos sites Web, même s'ils sont activés ou non.

À l'étape suivante, nous allons construire le premier hôte virtuel qui pointe vers l'hôte local par défaut avec le chemin DocumentRoot par défaut pour servir les fichiers des sites Web (/srv/http.

sudo nano /etc/httpd/conf/sites-available/localhost.conf

Ajoutez ici les directives Apache suivantes.

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-error_log"
        TransferLog "/var/log/httpd/localhost-access_log"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Les instructions les plus importantes ici sont les directives Port et ServerName qui demandent à Apache d'ouvrir une connexion réseau sur le port 80 et de rediriger toutes les requêtes avec le nom d'hôte local vers servir les fichiers situés dans le chemin /srv/http/.

12. Une fois le fichier localhost créé, activez-le puis redémarrez le démon httpd pour afficher les modifications.

sudo a2ensite localhost
sudo systemctl restart httpd

13. Pointez ensuite votre navigateur sur http://localhost, si vous l'exécutez à partir du système Arch ou sur http://Arch_IP si vous utilisez un système distant.

Étape 6 : Activer SSL avec l'hébergement virtuel sur LAMP

SSL (Secure Sockets Layer) est un protocole conçu pour crypter les connexions HTTP sur les réseaux ou Internet, qui permettent la transmission des flux de données sur un canal sécurisé à l'aide de clés de cryptographie symétriques/asymétriques. et est fourni dans Arch Linux par le package OpenSSL.

14. Par défaut, le module SSL n'est pas activé sur Apache dans Arch Linux et peut être activé en décommentant le module mod_ssl.so depuis le httpd.conf principal. fichier de configuration et le fichier Inclure httpd-ssl.conf situé dans le chemin httpd supplémentaire.

Mais pour simplifier les choses, nous allons créer un nouveau fichier de module pour SSL dans le chemin mods-enabled et laisser le fichier de configuration principal d'Apache intact. Créez le fichier suivant pour le module SSL et ajoutez le contenu ci-dessous.

sudo nano /etc/httpd/conf/mods-enabled/ssl.conf

Ajoutez le contenu suivant.

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Listen 443

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout  300

15. Créez maintenant un fichier d'hôte virtuel qui pointe vers le même nom d'hôte local mais en utilisant cette fois les configurations du serveur SSL, et modifiez légèrement son nom pour vous rappeler qu'il signifie localhost avec SSL.

sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf

Ajoutez le contenu suivant sur ce fichier.

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-ssl-error_log"
        TransferLog "/var/log/httpd/localhost-ssl-access_log"

SSLEngine on

SSLCertificateFile "/etc/httpd/conf/ssl/localhost.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/localhost.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/srv/http/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory />

    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Outre les directives Port et ServerName, d'autres directives importantes ici sont celles pointant vers le fichier Certificat SSL et le fichier Clé SSL qui ne sont pas encore créés, alors ne redémarrez pas Apache Web Server sinon vous obtiendrez des erreurs.

16. Pour créer le fichier de certificat SSL et les clés requis, installez le package OpenSSL en exécutant la commande ci-dessous.

sudo pacman -S openssl

17. Créez ensuite le script Bash suivant qui crée et stocke automatiquement tous vos certificats Apache et clés dans /etc/httpd/conf/ssl/ chemin système.

sudo nano apache_gen_ssl

Ajoutez le contenu du fichier suivant, puis enregistrez-le et rendez-le exécutable.

#!/bin/bash
mkdir /etc/httpd/conf/ssl
cd /etc/httpd/conf/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Nginx  SSL certificate!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate "$cert" has been generated!\nPlease link it to Apache SSL available website!"

ls -all /etc/httpd/conf/ssl
exit 0

sudo chmod +x apache_gen_ssl

Si vous souhaitez que le script soit disponible dans tout le système, copiez-le dans un ` PATH exécutable.

sudo cp /apache_gen_ssl  /usr/local/bin/

18. Générez maintenant votre Certificat et vos Clés en exécutant le script. Fournissez vos options SSL et n'oubliez pas le nom du certificat et le Nom commun correspondant à votre domaine officiel (FQDN).

sudo ./apache_gen_ssl

Une fois le certificat et les clés créés, n'oubliez pas de modifier les configurations de votre certificat d'hôte virtuel SSL et de vos clés pour qu'elles correspondent au nom de ce certificat.

19. La dernière étape consiste à activer le nouvel hôte virtuel SSL et à redémarrer votre serveur pour appliquer les configurations.

sudo a2ensite localhost-ssl
sudo systemctl restart httpd

C'est ça! Pour le vérifier, ouvrez le navigateur et ajoutez Arch IP sur l'URL à l'aide du protocole HTTPS : https://localhost ou https://system_IP.

Étape 7 : Activer PHP sur Apache

20. Par défaut, Apache ne sert que le contenu des fichiers statiques HTML dans Arch Linux, sans prise en charge des langages de script dynamiques. Pour activer PHP, ouvrez d'abord le fichier de configuration principal d'Apache, puis recherchez et décommentez l'instruction LoadModule suivante (php-apache ne fonctionne pas avec mod_mpm_event dans Arch Linux ).

sudo nano /etc/httpd/conf/httpd.conf

En utilisant [Ctrl]+[w], recherchez et commentez la ligne suivante pour qu'elle ressemble à ceci.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Créez ensuite un nouveau fichier pour le module PHP dans le chemin mods-enabled avec le contenu suivant.

sudo nano /etc/httpd/conf/mods-enabled/php.conf

Ajoutez exactement le contenu suivant (vous devez utiliser mod_mpm_prefork).

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php5_module modules/libphp5.so

Include conf/extra/php5_module.conf

22. Pour vérifier les paramètres, créez PHP un fichier nommé info.php dans votre DocumnetRoot (/srv/http/), puis redémarrez Apache et pointez votre navigateur vers le fichier info.php : https://localhost/info.php.

<?php

phpinfo();

?>
sudo systemctl restart httpd

C'est ça! Si tout ressemble à l'image ci-dessus, vous disposez désormais du langage de script dynamique côté serveur PHP activé sur Apache et vous pouvez désormais développer des sites Web à l'aide d'un CMS Open Source comme WordPress par exemple.

Si vous souhaitez vérifier les configurations de la syntaxe Apache et voir une liste des modules chargés sans redémarrer le démon httpd, exécutez les commandes suivantes.

sudo apachectl configtest
sudo apachectl -M

Étape 8 : Installer et configurer PhpMyAdmin

23. Si vous ne maîtrisez pas la ligne de commande MySQL et souhaitez un simple accès à distance à la base de données MySQL fourni via l'interface Web, vous devez alors installer le package PhpMyAdmin sur votre boîtier Arch.

sudo pacman -S phpmyadmin php-mcrypt

24. Une fois les packages installés, vous devez activer certaines extensions PHP (mysqli.so, mcrypt.so – pour l'authentification interne) et vous pouvez également activer d'autres modules nécessaires aux futures plates-formes CMS comme openssl.so, imap.so ou iconv.so etc.

sudo nano /etc/php/php.ini

Recherchez et décommentez les extensions ci-dessus.

extension=mcrypt.so
extension=mssql.so
extension=mysqli.so
extension=openssl.so
extension=iconv.so
extension=imap.so
extension=zip.so
extension=bz2.so

De plus, sur le même fichier, recherchez et localisez l'instruction open_basedir et ajoutez le chemin système PhpMyAdmin (/etc/webapps/ et /usr/share/webapps/) pour vous assurer que PHP peut accéder et lire les fichiers dans ces répertoires (si vous modifiez également le chemin DocumentRoot des hôtes virtuels de /srv/http/ vers un autre emplacement, vous devez également ajouter le nouveau chemin ici ).

25. La dernière chose que vous devez faire pour accéder à l'interface Web de PhpMyAdmin est d'ajouter des instructions Apache PhpMyAdmin sur les hôtes virtuels. Par mesure de sécurité, nous veillerons à ce que l'interface Web PhpMyAdmin ne soit accessible qu'à partir de l'hôte local (ou de l'adresse IP du système) à l'aide du protocole HTTPS et non à partir d'autres hôtes virtuels différents. Alors, ouvrez votre fichier Apache localhost-ssl.conf et en bas, avant la dernière instruction , ajoutez le contenu suivant.

sudo nano /etc/httpd/conf/sites-enabled/localhost-ssl.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"

<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.html index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>

26. Ensuite, redémarrez le démon Apache et pointez votre navigateur vers l'adresse suivante. Vous devriez pouvoir accéder à votre interface Web PhpMyAdmin : https://localhost/phpmyadmin ou https://system_IP/phpmyadmin.

27. Si, après vous être connecté à PhpMyAdmin, vous voyez une erreur en bas concernant un blowfish_secret, ouvrez et modifiez /etc/webapps/phpmyadmin/config.inc. php et insérez une chaîne aléatoire comme celle de l'instruction suivante, puis actualisez la page.

$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;

Étape 9 : Activer l'ensemble du système LAMP

28. Si vous souhaitez que la pile LAMP soit automatiquement démarrée après le redémarrage du système, exécutez les commandes suivantes.

sudo systemctl enable httpd mysqld

Voici quelques-uns des principaux paramètres de configuration sur LAMP nécessaires pour transformer un système Arch Linux en une plate-forme Web simple mais puissante, rapide et robuste avec un logiciel serveur de pointe pour les petits utilisateurs. -environnements critiques, mais si vous êtes têtu et souhaitez toujours l'utiliser dans un environnement de production à grande échelle, vous devez vous armer de beaucoup de patience et accorder une attention particulière aux mises à jour des packages et créer régulièrement des images de sauvegarde du système pour une restauration rapide du système en cas de problème. pannes du système.