vérifié sous Mint 18 / 19
Attention : Tuto de base, aucune notion de sécurité n'est abordée, ce n'est pas un tutorial pour transformer son PC en serveur WEB pour la toile, qu'on soit bien d'accord, juste pour apprendre les bases de fonctionnement d'APACHE2.
PLAN
- Installer un serveur LAMP
- Configurer le répertoire de publication web local
- Configurer les Virtuals hosts
- Editer et configurer le fichier /etc/hosts
- Le module php
- La base de données : mysql
- Gérer la base de données : Phpmyadmin / adminer
- Au sein de son réseau local
1. Installer le LAMP
Dans cet exemple, le réseau local est derrière une box et est géré en 192.168.0.*
L'IP local du serveur est fixe : 192.168.0.35
(à adapter à votre réseau / besoins)
Code : Tout sélectionner
sudo aptitude install apache2 php libapache2-mod-php mysql-server php-mysql
[sudo] Mot de passe de libres09 :
Les NOUVEAUX paquets suivants vont être installés :
apache2 apache2-bin{a} apache2-data{a} apache2-utils{a} libaio1{a} libapache2-mod-php libapache2-mod-php7.0{a} libapr1{a} libaprutil1{a}
libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libevent-core-2.0-5{a} liblua5.1-0{a} mysql-client-5.7{a} mysql-client-core-5.7{a} mysql-common{a}
mysql-server mysql-server-5.7{a} mysql-server-core-5.7{a} php php-common{a} php-mysql php7.0{a} php7.0-cli{a} php7.0-common{a} php7.0-fpm{a}
php7.0-json{a} php7.0-mysql{a} php7.0-opcache{a} php7.0-readline{a}
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
libhtml-template-perl
0 paquets mis à jour, 30 nouvellement installés, 0 à enlever et 99 non mis à jour.
Il est nécessaire de télécharger 25,1 Mo d'archives. Après dépaquetage, 186 Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
A ce stade, on doit accéder à la configuration par défaut d'Apache2 (message d'accueil pour dire que tout fonctionne)
Via un navigateur, saisir soit :
Reste maintenant à créer nos sites....
2. Configurer le répertoire de publication web local
Une fois le serveur installé, on va le configurer pour qu'il gére 2 sites internet différents (méthode identique pour plus ou pour moins ; il suffira de réitérer ces entrées).
Les répertoires racines de ces sites seront situés dans /var/www/LeNomDuSite/public_html
(ce qui laissera possible une évolution par la suite avec la création d'une partie private_html , on verra si j'ai le courage de faire un autre tuto....
On crée la structure :
Code : Tout sélectionner
sudo mkdir -p /var/www/site-1.com/public_html
sudo mkdir -p /var/www/site-2.com/public_html
Code : Tout sélectionner
sudo chown -R libres09: /var/www/site-1.com
sudo chown -R libres09: /var/www/site-2.com
Dans chacun de ces sites, on va y placer les fichiers d'accueil suivants
Code : Tout sélectionner
$ cat /var/www/site-1.com/public_html/index.html
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Site 1</title>
</head>
<body>
<h1>Cool, site 1 disponible :)</h1>
</body>
</html>
Code : Tout sélectionner
$ cat /var/www/site-2.com/public_html/index.html
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Site 2</title>
</head>
<body>
<h1>Cool, site 2 disponible :)</h1>
</body>
</html>
3. Configurer les Virtuals hosts
La configuration des Virtual Hosts se fait dans ce répertoire /etc/apache2/sites-available/
Les fichiers créés doivent obligatoirement se terminer par l'extension .conf
Pour une meilleure lisibilité, les fichiers de configuration porteront le même nom que les sites locaux.
On crée 2 fichiers de conf nouveau
Code : Tout sélectionner
$ cd /etc/apache2/sites-available/
$ sudo touch site-1.com.conf site-2.com.conf
Code : Tout sélectionner
$ cat site-1.com.conf
<VirtualHost *:80>
ServerName site-1.com
ServerAlias www.site-1.com
ServerAdmin webmaster@site-1.com
DocumentRoot /var/www/site-1.com/public_html
<Directory /var/www/site-1.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site-1.com-error.log
CustomLog ${APACHE_LOG_DIR}/site-1.com-access.log combined
</VirtualHost>
Code : Tout sélectionner
$ cat site-2.com.conf
<VirtualHost *:80>
ServerName site-2.com
ServerAlias www.site-2.com
ServerAdmin webmaster@site-2.com
DocumentRoot /var/www/site-2.com/public_html
<Directory /var/www/site-2.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site-2.com.com-error.log
CustomLog ${APACHE_LOG_DIR}/site-2.com.com-access.log combined
</VirtualHost>
Une fois créé, ces fichiers doivent être activés, il s'agit juste d'un lien symbolique de ce répertoire vers le répertoire /etc/apache2/sites-enabled/
Code : Tout sélectionner
$ ls -l /etc/apache2/sites-enabled/
total 0
lrwxrwxrwx 1 root root 35 mai 1 15:16 000-default.conf -> ../sites-available/000-default.conf
lrwxrwxrwx 1 root root 34 mai 1 14:35 site-1.com.conf -> ../sites-available/site-1.com.conf
lrwxrwxrwx 1 root root 34 mai 1 15:00 site-2.com.conf -> ../sites-available/site-2.com.conf
Code : Tout sélectionner
a2disconf a2dismod a2dissite a2enconf a2enmod a2ensite a2query
Donc pour activer nos 2 sites
Code : Tout sélectionner
$ sudo a2ensite site-1.com
Enabling site site-1.com.
To activate the new configuration, you need to run:
service apache2 reload
Code : Tout sélectionner
$ sudo a2ensite site-2.com
Enabling site site-2.com.
To activate the new configuration, you need to run:
service apache2 reload
Code : Tout sélectionner
$ sudo service apache2 reload
Code : Tout sélectionner
$ sudo systemctl restart apache2
4.Editer et configurer le fichier /etc/hosts
Code : Tout sélectionner
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 libres09-Latitude-E6410
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Il suffit d'ajouter nos 2 virtuals hosts pour que toutes requêtes sur ceux-ci restent en local.
On ajoutera donc ces 2 ligne avec la ligne 127.0.0.1 localhost
Code : Tout sélectionner
127.0.0.1 site-1.com
127.0.0.1 site-2.com
Code : Tout sélectionner
cat /etc/hosts
127.0.0.1 localhost
127.0.0.1 site-1.com
127.0.0.1 site-2.com
127.0.1.1 libres09-Latitude-E6410
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
5. Le module PHP
Bien sûr, Apache c'est cool, mais l'enjeu reste le développement PHP pour la plupart d'entre eux nous
(tous les autres langages peuvent être utilisés également, mais ici nous ne parlerons que de PHP).
On va reprendre le premier site créé et on va créer un fichier php tout simple
Code : Tout sélectionner
$ cat /var/www/site-1.com/public_html/index.php
<?php
phpinfo();
?>
Allez sur le site : http://site-1.com/
Et c'est toujours l'ancienne page qui s'affiche, normal les pages html sont prioritaires sur les pages php.
Donc pour l'avoir : http://site-1.com/index.php
Si vous voulez que le fichier d'index php soient constamment prioritaires au fichier d'index html, il suffit d'ajouter cette option dans le virtual hosts en question sous l'entrée DocumentRoot
Code : Tout sélectionner
DirectoryIndex index.php
Si besoin de modifier les options de configuration de php, ça se passe là
Code : Tout sélectionner
$ cat /etc/php/7.0/apache2/php.ini
Recharger la configuration d'apache
Code : Tout sélectionner
$ sudo service apache2 reload
6. La base de données mysql
Elle a été installée et configurée lors de l'installation du LAMP
La commande suivante vous donnera sa version.
Code : Tout sélectionner
$ mysql --version
mysql Ver 14.14 Distrib 5.7.26, for Linux (x86_64) using EditLine wrapper
Code : Tout sélectionner
$ sudo mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.7.26-0ubuntu0.16.04.1 (Ubuntu)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
show databases vous montrera les bases
use databasename en sélectionnera une
show tables vous montrera les tables d'une base,
etc... tout est dans la doc...
Exemples : liste les tables :
Code : Tout sélectionner
mysql> show databases ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0,00 sec)
On sélectionne celle nommée mysql
Code : Tout sélectionner
mysql> use mysql ;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
Code : Tout sélectionner
mysql> show tables ;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| event |
| func |
| general_log |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
31 rows in set (0,00 sec)
Mais c'est trivial, je l'accorde.
On va donc utiliser une interface graphique qui fera l'interprête . Et phpmyadmin pointe le bout de son nez
7. Gérer la base de données : phpmyadmin et adminer
Code : Tout sélectionner
$ sudo aptitude install phpmyadmin
Et pour s'y connecter
http://localhost/phpmyadmin
Pour les allergiques à phpmyadmin, il existe une alternative : adminer
Tout simple
Code : Tout sélectionner
sudo aptitude install adminer
Code : Tout sélectionner
echo "Alias /adminer.php /usr/share/adminer/adminer/index.php" | sudo tee /etc/apache2/conf-available/adminer.conf
Code : Tout sélectionner
sudo a2enconf adminer.conf
8. Au sein de son réseau local
Reste maintenant à configurer le réseau local pour accéder au serveur LAMP de ce poste.
Bien entendu, il est préférable que ce poste ait une IP fixe.
Il suffit pour avoir la page par défaut du virtual issue de l'installation de saisir l'IP de ce poste.
Ici, on saisira
http://192.168.0.35
Sur la capture d'écran on voit bien que le client (http://192.168.0.11/)a une réponse positive du serveur (http://192.168.0.35/)qui lui renvoie la page par défaut.
Bon mais pour les virtuals hosts qui hébergent les sites site-1.com et site-2.com ?
Il suffit simplement de modifier les fichiers /etc/hosts du client de cette manière et le tour est joué.
Code : Tout sélectionner
root@asgard-freeBSD:~ #
::1 localhost localhost.my.domain
127.0.0.1 localhost localhost.my.domain
192.168.0.35 site-1.com
192.168.0.35 site-2.com
Au fait, vous avez compris que le fichier /etc/hosts propose un routage interne donc mettez des noms de sites explicites qui n'existent pas sur la toile, style .local, sinon vous risquez de ne plus accéder à ces sites
Pour toutes réactions, commentaires, avis , ne pas utiliser ce thread mais celui ci :
viewtopic.php?f=12&t=13035