Informatique : Telnet, Apache, MySQL

1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)
Submit to DeliciousSubmit to DiggSubmit to FacebookSubmit to Google PlusSubmit to StumbleuponSubmit to TechnoratiSubmit to TwitterSubmit to LinkedIn

Informatique : Telnet, Apache, MySQL

Telnet

Q. Comment puis-je installer et démarrer le service telnet / serveur sous Linux(Ubuntu) ?

R. Telnet est un service non sécurisé. Il est recommandé que d'utiliser le service ssh. Cependant quelques fois le serveur telnet ou un service est nécessaire. Voici les instructions pour activer Telnet :

Installer le serveur Telnet : $ sudo apt-get install telnetd
Redémarrer le service :
$ sudo /etc/init.d/openbsd-inetd restart
Se connecter au serveur Telnet :
$ telnet nom_de_la_machine ou $ telnet adresse_IP

Apache

Arrêter, démarrer et redémarrer Apache

Arrêter Apache : $ sudo /etc/init.d/apache2 stop
Démarrer Apache : $ sudo /etc/init.d/apache2 start
Redémarrer Apache : $ sudo /etc/init.d/apache2 restart

Statut Apache : $sudo /etc/init.d/apache2 status

La documentation est dans  : /usr/share/doc
Les journaux sont dans : /var/log/apache2/
Le script de lancement du service serveur est dans :/etc/init.d

Fichiers de configuration d'Apache

Toute modification d'un fichier de configuration ou le chargement/déchargement d'un module nécessite la relecture de la configuration, ceci peut-être obtenu par la commande :

Relecture des fichiers de configuration Apache :sudo /etc/init.d/apache2 force-reload

De part sa conception, le serveur Apache répartit sa configuration dans un certain nombre de fichiers et répertoires que nous aborderons ici.

  • apache2.conf : Il s'agit du fichier principal de configuration d'Apache.
  • envvars : Ce fichier sert à définir les variables d'environnement du serveur. Par défaut ce fichier est vide. Mis à part quelques rares cas précis vous n'aurez pas à modifier celui-ci.
  • httpd.conf : Ce fichier est présent afin de maintenir la compatibilité avec des applications plus anciennes. Il n'est plus utilisé avec la version actuelle d'Apache.
  • magic : Il s'agit du fichier de configuration du module mod_magic_mime qui définit le comportement du serveur vis à vis de certains fichiers.
  • ports.conf : C'est dans ce fichier que sont définis les ports d'écoute du serveur. Par défaut un serveur web écoute les requêtes sur le port 80, ce qui est modifiable en éditant ce fichier
  • conf.d/ : Ce répertoire contient les "extensions" du fichiers apache2.conf. Dans ce répertoire nous pourrons créer des fichiers qui nous éviteront de modifier directement le fichier apache2.conf.
  • mods-available/ : Ce répertoire contient les fichiers de configuration des modules d'Apache disponibles (mais pas nécessairement activés).
  • mods-enabled/ : Ce répertoire contient des liens vers les fichiers de configuration des modules d'Apache activés situées dans mods-available.
  • sites-available/ : Ce répertoire fonctionne sur le même principe que les modules dans mods-available, mais cette fois ci concerne la configuration des sites disponibles sur le serveur
  • sites-enabled/ : Ce répertoire contient des liens vers les fichiers de configuration des sites activés situées dans sites-available
  • ssl/ : Contient la configuration d'Apache liée à SSL

3.3. Paramètres du fichier apache2.conf

Le paramètrage global du serveur web se fait par le biais du fichier apache2.conf ainsi que par les fichiers présents dans le dossier /etc/apache2/conf.d/. En effet, si vous ne souhaitez pas modifier directement le fichier principal de configuration, vous pouvez créer un fichier dans ce dossier. Celui-ci est alors automatiquement pris en compte par la directive Include présente dans le fichier apache2.conf.

Voici quelques directives que vous pouvez placer dans le fichier apache2.conf

ServerRoot : définit l'emplacement des fichiers de configuration du serveur.

Exemple :

ServerRoot "/etc/apache2"
ServerName : définit le nom complet du serveur

Exemple :

Servername www.monserveur.org
ServerAdmin : Définit l'adresse mail de l'administrateur du serveur qui apparaitra sur les pages d'erreurs

Exemple :

ServerAdmin Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.

DocumentRoot : définit la racine des documents du serveur Web

Exemple :

DocumentRoot /var/www

Encodage de caractères

Si vous utilisez ce tutoriel, il y a fort à parier que vous souhaitez publier un site web en langue française. Or la langue de Molière dispose d'un certain nombre de particularités et notamment l'accentuation. Afin d'éviter l'affichage de caractères exotiques en lieu et place de vos "é", "è" ou encore "à" ou "ç", il est nécessaire d'indiquer à votre serveur web d'utiliser un jeu de caractères compatible avec la langue française. La prise en charge du caractère "€" relève elle aussi de son système d'encodage. Heureusement pour nous, Apache peut gérer un tel jeu de caractères.

Pour cela nous allons donc le configurer :

Modification du fichier apache2.conf : $ sudo gedit /etc/apache2/apache2.conf

Cherchez la ligne suivante :

#AddDefaultCharset ISO-8859-1

Et modifiez la comme ceci

AddDefaultCharset ISO-8859-15

et ajoutez la ligne suivante dans le paragraphe qui suit :

AddCharset ISO-8859-15 .iso8859-15 .latin15 .fr

Il ne nous reste plus qu'à recharger la configuration d'Apache :

Recharger la configuration Apache : $ sudo /etc/init.d/apache2 reload

Configuration du port d'écoute

Tout serveur Web normalement configuré est censé attendre les connexions sur port 80/TCP. Or, rien ne vous empêche de modifier ce port pour des besoins spécifiques, ou juste pour sécuriser votre serveur. Nous verrons d'ailleurs plus tard lors de la configuration du mode SSL que cela sera indispensable. Afin de modifier le port d'écoute ou en ajouter un, il suffit de le mentionner dans le fichier ports.conf.

Modification du fichier ports.conf : $ sudo gedit /etc/apache2/ports.conf

Vous pouvez alors, soit ajouter un port d'écoute en ajoutant une ligne à ce fichier, soit modifier le 80 en ce que vous souhaitez ; tout en prenant garde que le port choisi ne soit pas déjà affecté à un autre service.

Exemple :

Listen 80
Listen 1880

Mon serveur web attendra les requêtes sur le port 80 ainsi que sur le port 1880

Listen 81

Mon serveur web n'attendra les requêtes que sur le port 81.

Une fois les modifications effectuées redémarrez le serveur par

Redémarrer le serveur Apache : $ sudo /etc/init.d/apache2 restart

Gestion des alias

La directive Alias permet de rendre accessibles des fichiers présents ailleur que dans la sous-arborescence définie grâce à la directive DocumentRoot. Elle permet donc d'accéder à des répertoires situés à l'extérieur de la racine du serveur.

Exemple :

Alias /image /ftp/pub/image

Une requête pointant vers http://votre_serveur/image affichera le contenu du répertoire /ftp/pub/image comme si celui-ci était présent dans /var/www/image (comme défini dans la directive DocumentRoot plus haut)

NOTE : L'utilisation de cette directive dépend du module alias qui peut être chargé à l'aide des commandes :

sudo a2enmod alias
sudo /etc/init.d/apache2 force-reload

Hôtes virtuels

Une des fonctionnalités intéressantes du serveur web Apache est sa capacité à pouvoir héberger plusieurs sites web pour différentes adresses. Le même système pourra par exemple héberger le site www.toto.com et www.monsite.org.

Il existe plusieurs types d'hôtes virtuels. Nous n'aborderons ici que les serveurs virtuels basés sur le nom. 

Afin de pouvoir héberger plusieurs sites web disposant d'adresses différentes, il est nécessaire que la résolution des noms soit effective. Il faut donc pour cela disposer d'un système de résolution de type DNS qui effectue cette résolution pour vous. Vous pouvez utiliser un système de DNS gratuit de type DynDNS disponible sur http://www.dyndns.com. Si vous possédez votre propre nom de domaine vous pouvez mettre en place un serveur DNS par le biais du très efficace serveur Bind9, ou utiliser les serveurs DNS de votre fournisseur de nom de domaine.

La meilleure façon de créer un hôte virtuel basé sur le nom consiste à écrire un fichier situé dans le répertoire /etc/apache2/sites-available et contenant l'ensemble des paramètres de cet hôte. Ce fichier sera basé sur le modèle que nous allons créer : /etc/apache2/sites-available/example

NameVirtualHost *:80

ServerAdmin Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
DocumentRoot /www/docs/www.example.com
ServerName www.example.com
ErrorLog logs/www.example.com-error_log
CustomLog logs/www.example.com-access_log common

Le conteneur accepte presque toutes les directives disponibles dans le cadre de la configuration du serveur principal, sa capacité à être personnalisé est donc très élevée.

Une fois votre hôte virtuel créé il est nécessaire d'activer cette configuration :

sudo a2ensite example
sudo /etc/init.d/apache2 force-reload

Pages d'erreurs

Dans le cas d'une erreur ou d'un problème, Apache peut être configuré pour effectuer quatres actions différentes :

  • afficher le message d'erreur par défaut
  • afficher un message personnalisé
  • rediriger vers un document local pour traiter l'erreur
  • rediriger vers une URL externe (un autre site web par exemple)

Afin d'activer les pages d'erreurs personnalisées il est nécessaire d'activer le module Include dont dépend cette fonctionnalité.

sudo a2enmod include

Pages d'erreurs en français

Nous allons activer les pages d'erreurs en français en éditant le fichier /etc/apache2/apache2.conf.

Cherchez cette partie

Alias /error/ "/usr/share/apache2/error/"

AllowOverride None
Options IncludesNoExec
AddOutputFilter Includes html
AddHandler type-map var
Order allow,deny
Allow from all
LanguagePriority en es de fr
ForceLanguagePriority Prefer Fallback

ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
ErrorDocument 410 /error/HTTP_GONE.html.var
ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
ErrorDocument 415 /error/HTTP_SERVICE_UNAVAILABLE.html.var
ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var

Modifiez la ligne

LanguagePriority en es de fr en LanguagePriority fr en es de

Puis rechargez la configuration d'Apache avec la commande sudo /etc/init.d/apache2 force-reload

Pages d'erreurs personnalisées

Afin de créer des pages d'erreurs personnalisées, nous allons utiliser la directive ErrorDocument. Celle-ci accepte deux arguments : le numéro de l'erreur et le document à utiliser pour celle-ci.

ErrorDocument

L'argument document peut prendre plusieurs valeurs, suivant l'action que l'on veut effectuer :

  • le mot clé "default" : Apache affichera alors le message d'erreur par défaut
  • "un message commencant par une double côte : Apache affichera le message depuis le guillemet ouvrant jusqu'à la fin de la ligne
  • un chemin sur le système de fichier local : cela permet d'afficher nos pages d'erreurs personnalisées
  • une URL entière vers laquelle le client sera redirigé lorsque l'erreur se produira

Exemple :

# On veut rediriger toutes les erreurs 404 (document non trouvé)
# vers la page http://www.example.com
ErrorDocument 404 http://www.example.com

# On veut afficher le message "Notre serveur a eu une erreur"
# pour toutes les erreurs 500 (erreur interne au serveur)
ErrorDocument 500 "Notre serveur a eu une erreur

# On veut afficher la page "/var/www/error/404.html" pour toutes
# les erreurs 404
# Mais on veut afficher le message d'erreur par défaut pour le
# répertoire /var/www/htdocs
ErrorDocument 404 /var/www/error/404.html

ErrorDocument 404 default
[ autres directives de configuration ]

Vous pouvez maintenant personnaliser entièrement les pages d'erreurs de votre serveur web. Afin de connaitre la correspondance des numéros d'erreurs reportez vous au tableau suivant

400 Bad Request
401 Authorization Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable (encoding)
407 Proxy Authentication Required
408 Request Timed Out
409 Conflicting Request
410 Gone
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URI Too Long
415 Unsupported Media Type
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported

Une fois vos pages d'erreurs configurées, rechargez la configuration d'Apache avec la commande sudo /etc/init.d/apache2 force-reload

3.4. Quelques rappels

Activation du serveur (Utilisez les commandes suivantes pour activer, désactiver le serveur) :

/etc/init.d/apache start
/etc/init.d/apache stop

Pour relire le fichier de configuration alors qu'apache est déjà lancé, utilisez :

/etc/init.d/apache reload

Pour activer et desactiver un module, utilisez :

a2enmod nomModule
a2dismod nomModule

nomModule est le nom d'un module présent dans /etc/apaches2/mods-available

Pour activer et desactiver un site WEB, utilisez

a2ensite nomSite
a2dissite nomSite

nomSite est le nom d'un fichier de configuration du site présent dans /etc/apaches2/sites-available

Pensez dans tous les cas à consulter les journaux afin de détecter les dysfonctionnements.

MySQL

Arrêter, démarrer et redémarrer MySQL

Arrêter MySQL : $ sudo /etc/init.d/mysq stop
Démarrer
MySQL : $ sudo /etc/init.d/mysq start
Redémarrer
MySQL : $ sudo /etc/init.d/mysq restart
Statut
MySQL : $ sudo /etc/init.d/mysq status

Configuration de MySQL

La configuration de base est stockée dans /etc/mysql/my.cnf

Éditer le configuration :vi /etc/mysql/my.cnf

Voici quelques options intéressantes à modifier par défaut

language = /usr/share/mysql/french
Choisir la langue par défaut pour les messages du serveur (français)

key_buffer = 32M
Taille du cache des index

query_cache_limit = 2M
Taille limite du cache par requête

query_cache_size = 32M
Taille totale du cache des requêtes

#log_bin = /var/log/mysql/mysql-bin.log
#expire_logs_days = 10
Désactiver le log binaire en commentant ces deux lignes grâce à # (le log binaire n'est utile que dans le cas de réplications avec serveurs maître-esclave)

log_slow_queries = /var/log/mysql/mysql-slow.log
Mettre en log les requêtes lentes (utile pour les repérer et les optimiser)

long_query_time = 2
Durée (en secondes) à partir de laquelle une requête est considérée comme lente

[mysqld]

default-character-set = utf8
Jeu de caractères par défaut pour le serveur

default-collation = utf8_general_ci
Collation du jeu de caractères

[client]

default-character-set = utf8
Jeu de caractères par défaut pour le client

N'oubliez pas de recharger le serveur suite à ces modifications :

Recharger le serveur : $ /etc/init.d/mysql reload

Sécurisation de MySQL

Il est facile de mettre en place quelques règles simples pour sécuriser le serveur, grâce au script :

mysql_secure_installation

Et en répondant à quelques questions :

Set root password ? Y
Permet de modifier le mot de passe root (de mysql)

Remove anonymous users ? Y
Retire les accès anonymes

Disallow root login remotely ? Y
Retire l'accès root distant (recommandé)

Remove test database and access to it ? Y
Retire la base test et ses accès

Reload privilege tables now ? Y
Recharge les privilèges suite aux modifications

Connexion

Vous pourrez vous connecter en ligne de commande grâce au client :

mysql -ulogin -pmotdepasse

Ou bien en utilisant un client graphique, voire aussi phpMyAdmin (installation par défaut : apt-get install phpmyadmin puis éditez config.inc.php ou recopiez-le à partir de config.sample.inc.php)

Commandes shell utiles

mysqldump -ulogin -pmotdepasse nom_base --opt >fichier.sql
Exporte la base nom_base vers fichier.sql

mysqldump -ulogin -pmotdepasse --all-databases --opt >fichier.sql
Exporte toutes les bases vers fichier.sql

mysql -ulogin -pmotdepasse <fichier.sql
Importe les instructions du fichier SQL

mysqladmin
Toute une collection d'outils pour administrer le serveur.

L'option --opt combine --add-drop-table --add-locks --all --extended-insert --quick --lock-tables. Référez-vous à la documentation (man mysqldump) pour plus de renseignements.

Commandes de base en ligne de commande MySQL (client)

Terminez toutes vos commandes avec le caractère point-virgule ;

SHOW DATABASES;
Liste les bases de données

SHOW STATUS;
Affiche le statut du serveur

USE nom_base
Sélectionne la base par défaut

SHOW TABLES;
Affiche les tables de la base courante

DESCRIBLE table;
Affiche la structure de la table

SELECT * FROM table;
Affiche le contenu de la table

CREATE DATABASE base;
Crée une nouvelle base de données

Submit to DeliciousSubmit to DiggSubmit to FacebookSubmit to Google PlusSubmit to StumbleuponSubmit to TechnoratiSubmit to TwitterSubmit to LinkedIn