Installation de apache, php, mysql et phpmyadmin sur un serveur dédié

configurer apache php mysql

Dans ce tutoriel vidéo consacré aux serveurs dédiés (sommaire des tutos), nous allons voir ce qu’il est nécessaire d’installer pour avoir son site en ligne. Nous allons donc installer et configurer :

  • Un serveur web apache2
  • PHP pour avoir des pages dynamiques
  • Une base de données Mysql
  • L’application Web phpmyadmin pour gérer nos bases de données simplement

Dans la vidéo, vous apprendrez également comment fonctionne apache2, comment activer et désactiver des mods/sites. Voici la vidéo, pensez à activer le mode plein écran avec la HD :

Installation d’apache

Apache est l’un des éléments les plus importants, c’est le serveur web qui va délivrer les pages aux visiteurs. Vous pouvez l’installation via la ligne de commande « apt-get install apache2 apache2-common« . La configuration par défaut d’apache est pas si mal, mais on peut améliorer quelques éléments. Je vous conseille d’ajouter/modifier ces éléments :
Dans /etc/apache2/apache2.conf


# Enlever les bandeaux donnant des informations sur le serveur en cas de 404
ServerSignature Off
ServerTokens Prod
# Pour donner un nom à votre serveur
ServerName ksXXXXXX.kimsufi.com
Modification à faire dans /etc/apache2/apache2.conf

Dans la vidéo, j’ai également parlé de quelques commandes. En voici un résumé, néanmoins sachez que j’en reparle dans la 3ème vidéo sur les serveurs dédiés :

  • a2enmod : permet d’activer un mod pour apache (apache2 enable mod)
  • a2dismod : permet de désactiver un mod (apache2 disable mod)
  • a2ensite : active un site
  • a2dissite : désactive un site
  • apache2ctl -t -D DUMP_MODULES : permet de voir la liste des modules activés

Une parenthèse au passage, que j’explique dans le 3ème tutoriel, tous les mods disponibles sont contenus dans le dossier /etc/apache2/mods-available et tous les mods activé sont dans /etc/apache2/mods-enabled. C’est la même chose avec les sites dans /etc/apache2/sites-available (et enabled). À chaque fois que vous voulez ajouter un site, vous devez créer un fichier de configuration (appelé un virtual host) dans /etc/apache2/sites-available et activer ce site avec la commande a2ensite.

Par défaut, les sites sont dans le répertoire /var/www (en y faisant un tour, vous retrouvez le fameux « It Works »). Plus tard, on changera ça pour faire une configuration particulière : un site = un utilisateur sur le système et donc les fichiers du site seront contenu dans /home/username/www. Pour cela on aura besoin du mode userdir. (mais c’est l’objet de la prochaine vidéo)

Installation de PHP

Avoir un serveur Web c’est bien, mais s’il est seulement capable de gérer des pages HTML toute simple, on ne va pas aller bien loin ! On a donc besoin d’installer PHP pour avoir des pages dynamiques. Voici la commande (très longue) à taper pour installer PHP et tous ces modules  :


apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
Installation de PHP

Une fois PHP installé, c’est une bonne idée d’aller faire un tour dans les fichiers de configuration. Voici ce que je vous propose de modifier/ajouter :
/etc/php5/apache2/php.ini

; Modification à faire dans le php.ini

; Temps max en seconde qu'un script à pour s’exécuter
max_execution_time = 30
; Temps max qu'a un script pour parser des données (POST, GET etc..)
max_input_time = 60
; Mémoire max qu'un script a le droit d'allouer
memory_limit = 64M
; Taille max des uploads
upload_max_filesize = 25M
; Variable (super) globale (problème de sécurité)
register_globals = Off
; Cache php
expose_php = Off
; Affiche les erreurs dans les scripts
display_errors = On
; Permet d'utiliser <? à la place de <?php
short_open_tag = Off
; Filtre les données Post et Get et ajoute des / devant les '
magic_quotes_gpc = Off
; Quelques fonctions qui peuvent être dangereuses à limiter
disable_functions = symlink,shell_exec,exec,proc_close,proc_open,popen,system,dl,passthru,escapeshellarg,escapeshellcmd
; Pour activer l'utf-8 par defaut
mbstring.language=UTF-8
mbstring.internal_encoding=UTF-8
mbstring.http_input=UTF-8
mbstring.http_output=UTF-8
mbstring.detect_order=auto

Voilà pour le fichier php.ini, qui est très long, je vous recommande de lire la documentation et notamment cette page qui contient toutes les directives de ce fichier php.ini. N’oubliez pas de redémarrer le serveur apache avec un /etc/init.d/apache reload.

Configuration de MySQL

Un site dynamique sans base de données n’est pas très utile. Pour installer MySQL, il suffit de faire un « apt-get install mysql-server mysql-client mysql-common« . Lors de l’installation on vous demandera des informations, comme le mot de passe Root de MySQL. Au niveau de la configuration, voici les options que le recommande :

/etc/mysql/my.cnf

# Mettre la langue en Français
language = /usr/share/mysql/french
# Taille du cache des index
key_buffer = 32M
# Limite du cache par requête
query_cache_limit = 2M
# Limite du cache pour toutes les requêtes
query_cache_size = 32M
# Loguer les requêtes lentes
log_slow_queries = /var/log/mysql/mysql-slow.log
# Indique le temps à partir du moment ou une requête est considéré comme lente
long_query_time = 2
# Activer l'utf-8 par default sur le serveur (dans [mysqld])
default-character-set = utf8
default-collation = utf8_general_ci
# dans [client]
default-character-set = utf8

Après avoir fait des modifications, n’oubliez pas de relancer le serveur avec « /etc/init.d/mysql reload« . Ensuite je vous recommande très fortement de lancer « mysql_secure_installation » pour sécurité votre installation. Répondez « no » à la première question (sauf si vous désirez changer le mot de passe root de mysql) et Yes à toutes les autres (et refaites un reload).

Installation de phpmyadmin

Pour gérer vos bases de données, je vous recommande d’utiliser phpmyadmin qui est bien plus pratique que mysql en ligne de commande. Pour cela rien de plus simple, faites un « apt-get install phpmyadmin » et donner le mot de passe root de MySQL et choigissez un mot de passe Root pour phpmyadmin durant l’installlation.

N’oubliez pas de cocher la case « apache2 » durant l’installation avec la touche espace du clavier (si vous faites « entrer » ça ne cochera pas apache et passera à l’étape suivante). Si vous avez fait « entrer » (comme moi au début, forcément), vous pouvez rattraper la boulette avec un dpkg-reconfigure phpmyadmin.

Lorsque l’installation est terminée, redémarrez apache et allez sur : http://ksXXXXXX.kimsufi.com/phpmyadmin pour vous loguer et créer vos BDD.

Le tutoriel est terminé, n’hésitez pas à approfondir vos connaissances en faisant quelques recherches, bidouiller les fichiers de configurations, poser des questions, c’est comme ça qu’on apprend ! Au passage, je vous propose de rejoindre la page facebook du blog en cliquant ici (merci !).

(Image à la une : DC-31 du kit de photo online)

54 commentaires ont été ajoutés, ajoutez le vôtre.

Vous pouvez laisser un commentaire, cependant je ne peux pas vous garantir qu'il sera modéré rapidement ou qu'il aura une réponse, faute de temps pour m'occuper du site.

  1. cocolabombe0

    Bonjour, les variables magic_quotes_gpc et register_globals ont été supprimés de php 5.4.

    J’ai un amis qui m’a fait ce serveur (vu que je n’y connais pas grand chose et lui, il a mit :
    # Quelques fonctions qui peuvent être dangereuses à limiter
    disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,

    Donc j’ai pas remplacé par ce que vous avez fait.

    Dans mysql, je n’ai pas mis le UTF8 car j’ai un failed lors du redemarrage sans montrer l’erreur.

    J’ai deux key_buffer. Il faut remplacer les deux ou seulement celui qui est dans la vidéo?

    Et pour finir, je n’ai pas vu cette ligne de code dans mysql.
    language = /usr/share/mysql/french

  2. Ajizu-sama

    Bonjour,
    Merci pour ce tuto ^^
    je voulais savoir s’il y possible de install apache2 et lighttpd dans le meme server ..??

    thanks !!

    • Madrzejewski Alexis

      Bonjour Ajizu-sama,

      C’est possible, c’est même courant de faire une installation php + nginx. Il suffit simplement de les configurer sur des ports différents. La plupart du temps, on utilise Nginx (ou lighttpd que je ne connais pas) sur le port 80 (par défaut) pour s’occuper des ressources statiques (images, css, car c’est plus rapide avec nginx) et apache sur le 8080 pour les codes php. Nginx s’occupe alors de transmettre les requêtes pour du php à apache, c’est donc transparent pour l’utilisateur mais plus complexe à mettre en place. On touche au domaine de l’optimisation à ce niveau.

  3. Epitaf

    Bravo et merci pour la qualité de vos tutoriels.
    Tout parait tellement simple lorsque vous nous guidez et puis après…on se sent un peu seul, alors on revient sur votre site pour vous témoigner notre gratitude.

    Sincèrement une grande qualité didactique.
    Encore merci
    Bonne année !!

  4. s2prod

    Un grand merci pour des tutos de grande qualité, je te l’ai déjà dit sur Twitter, je te renouvelles mes félicitations et ma gratitude. J’en profite pour te remonter une petite faute d’inattention, au-dessus du titre Configuration de MySQL, tu as écris : /etc/init.d/apache reload pour relancer apache, tu as oublié le 2 du service apache : /etc/init.d/apache2.

    Encore merci pour ton travail.

  5. sebastien

    Bonjour Alexis, et merci pour tous tes tutos !

    Je me rends compte que mysql 5.1 s’installe à partir du gestionnaire de paquet. J’aimerai utiliser la version 5.5.

    Je trouve bien comment faire pour l’installer mais comment supprimer proprement et re-installer proprement sans tout foutre en l’air ^^

    Merci à toi !

    • Madrzejewski Alexis

      Bonjour,

      Il suffit de désinstaller MySQL avec « apt-get autoremove mysql-server –purge ». Bon, je suis pas sur de mon coup pour le nom du paquet, mais c’est un truc similaire je pense. Ensuite, il faut le réinstaller. Pour avoir des versions à jours des paquets, généralement il faut soit ajouter un dépot, soit télécharger une archives manuellement pour le compiler ou récupérer directement un .deb. Généralement, je préfère la méthode « ajouter un dépot » comme ça on reste avec le système « apt-get » pratique pour les mises à jours.

  6. Kin Calvin

    Tout d’abord : Super tuto et super site, merci beaucoup, beaucoup.

    Juste une petite erreur, dans le cadre ou c’est bien apache2 qui est installé :
    /etc/init.d/apache2 reload

    au lieu de :
    un /etc/init.d/apache reload

    Bonne continuation,