Ubuntu 10.04 LTS : installation rapide et facile d’un serveur web 2

Après l’achat d’un petit serveur dédié chez OVH -le plus petit des Kimsufi- je me suis rendu compte que contrairement à mon expérience des Gentoo2 d’OVH, il n’y avait VRAIMENT rien dessus !

Voici donc les étapes afin de mettre en place facilement un serveur web, et surtout de le faire fonctionner correctement.

Si, comme moi, vous avez d’abord installé Webmin et Virtualmin via des tuto et de façons séparées, je suis désolé mais il va vous falloir recommencer à ZÉRO !
Direction le Manager V3 d’OVH, vous sélectionnez votre serveur > Service > Réinstaller / Changer d’OS.
J’ai essayé pendant plusieurs heures de supprimer tout ce que je me souvenais avoir installé mais rien n’y a fait, j’ai fini par sauvegarder mes sites et mes DB et réinstaller mon Ubuntu 🙁

Passons maintenant au vif du sujet ! Vous devriez donc avoir votre serveur Ubuntu 10.04 LTS tout neuf avec rien dessus, si ce n’est « DNS Server, Mail Server, SSH Server ».

Première chose que nous allons faire : installer la dernière version de PHP

Virtualmin télécharge pas mal de dépendances mais il vient avec PHP 5.3, alors que personnellement je préfère travailler en PHP 5.4. N’ayant pas trouvé comment installer facilement PHP 5.4 après Virtualmin, nous allons simplement le télécharger et l’installer AVANT 🙂

  • sudo echo « deb http://ppa.launchpad.net/ondrej/php5/ubuntu lucid main » >> /etc/apt/sources.list
  • sudo echo « deb-src http://ppa.launchpad.net/ondrej/php5/ubuntu lucid main » >> /etc/apt/sources.list
  • sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys E5267A6C
  • sudo apt-get update
  • sudo apt-get install php5
Pour vérifier que nous avons la bonne version de PHP, toujours en ligne de commande : php5 -v
Source: http://www.zimbio.com/Ubuntu+Linux/articles/D_AsJR2qAL6/How+Upgrade+PHP+5+4+Ubuntu

La magie qui opère

Si, comme moi, vous vous êtes foiré lors de votre première installation vous aller voir une grande différence ici. En effet, en suivant les « mauvais » tuto qui indiquent comment installer Webmin + Virtualmin (de façons séparées), c’est vraiment la galère !
La bonne méthode tient en fait en 2 commandes :
  • wget http://software.virtualmin.com/gpl/scripts/install.sh
  • /bin/sh install.sh

Voilà, le step by step pourrait presque finir ici tellement c’est simple mais vu que nous voulu un serveur complet, je vais aller plus loin quand même 😉

Préparer son serveur

A présent que Virtualmin est bien installé, on va terminer la configuration et la vérifier.
Attention, n’installez pas phpMyAdmin maintenant, car nous n’avons toujours pas réglé notre base de données !

Connectez-vous à votre webmin : https://nomduserveur.tld:10000 et entrez vos accès (par défaut ce sont les mêmes que ceux de votre SSH ;))

Sur la partie principale, vous verrez le « Post installation wizard », cliquez sur le bouton CANCEL et ensuite sur le lien « Re-check Configuration »
(Si vous ne voyez plus ce lien, il est accessible à tout moment dans la colonne de gauche « System Settings > Re-check Configuration »)

Normalement, Virtualmin va vous dire qu’il y a un problème avec MySQL. En effet, aucun mot de passe n’est défini. Il suffit de cliquer sur le lien situé dans le message et introduisez votre mot de passe. Attention, pensez à le noter quelque part. Il s’agit de votre mot de passe d’accès root à MySQL !!!

Installer PhpMyAdmin

Maintenant que notre serveur est en ordre, nous allons installer PhpMyAdmin. Virtualmin vient par défaut avec une possibilité d’installation d’un script -phpMyAdmin par exemple- mais bon, ça veut dire qu’il faut l’installer pour chaque serveur virtual. Au-delà de la flemmardise qui m’envahi en constatant ça, je trouvais ça pas pratique du tout : beaucoup d’espace disque utilisé pour rien (13 Mo par phpMyAdmin installé environ) et même point de vue maintenance pour garder ça à jour, c’est pas génial.

Nous allons donc installer phpMyAdmin « normalement », à savoir grâce à APT-GET :

  • apt-get install phpmyadmin

Il suffit de choisir ensuite pour quel serveur Web l’installer (ici Apache2) et pour la question de la configuration automatique, j’ai répondu YES.

Pour être certain que le navigateur propose d’enregistrer le login et mot de passe, nous allons modifier légèrement le fichier config.inc.php. Ouvrez le fichier blowfish_secret.inc.php et récupérez-y la ligne de clé secrète. On va simplement la copier/coller dans notre config.inc.php

  • nano /var/lib/phpmyadmin/blowfish_secret.inc.php 
    (ici on copie la ligne $cfg[‘blowfish_secret’] = ‘***’; [ vous devriez avoir une clé à la place de *** si ce n’est pas le cas, écrivez n’importe quoi])
  • nano /usr/share/phpmyadmin/config.inc.php
    (collez après include(‘/var/lib/phpmyadmin/blowfish_secret.inc.php’);)
  • service apache2 restart

Si les champs de votre DB vous affichent des chiffres ou du contenu BLOB :

  • nano /usr/share/phpmyadmin/config.inc.php

Et changer la ligne suivante (tout en bas du fichier) :

$cfg['Servers'][$i]['extension'] = 'mysql';

En :

$cfg['Servers'][$i]['extension'] = 'mysqli';

Source: http://stackoverflow.com/a/6461783

Configurer son serveur

Voilà, maintenant on a presque fini !

On va retourner dans la Webmin et régler quelques options !

DNS

On va régler 2-3 petits trucs afin que les DNS fonctionnent bien. Je ne suis pas certain de l’utilité de rajouter l’IP du secondary nameserver en Forwards par contre la 2ieme ligne est PRIMORDIALE !

Allez donc tout d’abord dans Webmin > Servers > BIND DNS Server. Là vous cliquez sur « Edit Config File » et sélectionnez le fichier « /etc/bind/named.conf.options » et cliquez sur Edit.

Décommentez la ligne des forwarders et ajoutez l’IP de votre NS2, pour ns.kimsufi.com c’est 213.186.33.199

Commentez la ligne « listen-on { 127.0.0.1; }; »

Vous devriez donc avoir ceci :

options {
 directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
 // to talk to, you may need to fix the firewall to allow multiple
 // ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable 
 // nameservers, you probably want to use them as forwarders. 
 // Uncomment the following block, and insert the addresses replacing 
 // the all-0's placeholder.
forwarders {
 213.186.33.199;
 };
auth-nxdomain no; # conform to RFC1035
 listen-on-v6 { ::1; };
// listen-on { 127.0.0.1; };
 allow-recursion { 127.0.0.1; };
};

PHP 5

Pensez à éditer vos fichiers php.ini, par défaut ils seront copiés par tous les futurs serveurs virtuels.
Vous pourrez évidemment les modifier séparement mais personnellement je modifierais juste une chose : l’error_reporting !

Pour se faire, allez dans Webmin > Others > PHP Configuration

Cliquez sur chaque lien « Manage » et ensuite « Error Logging »

En face de « Expression for error types » : E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE

FTP

Par défaut, la méthode pour se connecter à vos serveurs virtuels est le SFTP. Pour activer la connexion en FTP classique, sur la page d’accueil de Webmin en bas vous aurez « Status ». Vous verrez que le serveur ProFTPD n’est pas démarré. Démarrez-le et vous pourrez vous connecter en FTP 🙂

Tant qu’on y est, on va limiter les utilisateurs à leur dossier home pour plus de sécurité !
Rendez-vous dans la partie Webmin à présent, et dans le menu à gauche suivez : Servers > ProFTPD Server
Sur l’écran principal, cliquez sur le lien « Files and Directories » et à droite de l’intitulé « Limit users to directories », cochez « Home »

Features & Settings

Ce menu, situé dans Virtualmin sous System Settings > Features and Plugins, permet de définir quelles options sont disponibles à la création d’un serveur virtuel et les quelles sont disponibles par défaut. Il est intéressant d’y faire un tour afin d’accélérer la future création de vos Vhosts.

Server Templates

Les templates serveurs permettent de créer différents gabarits de serveur. Ici nous utiliserons uniquement ceux par défaut, à savoir un serveur virtuel classique et le type « sous-domaine ». Pour accéder aux options, il faut être dans la partie Virtualmin et dans le menu à gauche suivre : System Settings > Server Templates

SUB-SERVERS
  • Ajouter pour SUB-SERVERS, le fait que PHP doit être exécuté en FAST CGI : System Settings > Server Templates > Settings For Sub-Servers > Apache website > Default PHP executionmode > FCGId
DEFAULT SERVERS
  • Ajouter le nameserver secondaire : System Settings > Server Templates > Default settings > BIND DNS domain > Additional configurer nameservers => ns.kimsufi.com
  • Ajouter la création automatique d’un alias sous le domaine principal : System Settings > Server Templates > Default Settings > Virtual server creation > Automatically create alias domain > Create under DOMAIN.TLD + cocher « First part of domain »
  • Editer les directives Apache par défaut (on va d’ailleurs ajouter les directives pour PhpMyAdmin) : System Settings > Server Templates > Default Settings > Apache website
    Remplacer tout ce qu’il y a par ceci : (tout ce qu’on fait ici au final, c’est ajouter les directives pour PhpMyAdmin et corriger les directives du directory « public_html » afin qu’il utilise le CGI WARPER
ServerName ${DOM}
ServerAlias www.${DOM}
DocumentRoot ${HOME}/public_html
ErrorLog /var/log/virtualmin/${DOM}_error_log
CustomLog /var/log/virtualmin/${DOM}_access_log combined
ScriptAlias /cgi-bin/ ${HOME}/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5
<Directory ${HOME}/public_html>
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
AddHandler fcgid-script .php
AddHandler fcgid-script .php5
FCGIWrapper ${HOME}/fcgi-bin/php5.fcgi .php
FCGIWrapper ${HOME}/fcgi-bin/php5.fcgi .php5
</Directory>
<Directory ${HOME}/cgi-bin>
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
</Directory>
Alias /phpmyadmin "/usr/share/phpmyadmin"
<Directory "/usr/share/phpmyadmin">
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
AddHandler fcgid-script .php
AddHandler fcgid-script .php5
FCGIWrapper ${HOME}/fcgi-bin/php5.fcgi .php
FCGIWrapper ${HOME}/fcgi-bin/php5.fcgi .php5
</Directory>

UPDATE :

Vous pouvez également définir l’alias pour phpMyAdmin dans le Vhost des sub-servers. Pour ça, allez toujours dans Server Templates mais sélectionnez « Settings for Sub-Servers ».

Maintenant, vous n’avez qu’à copier/coller une nouvelle fois les directives (les mêmes que pour le serveur principal, c’est juste au-dessus !:))

Vous pouvez maintenant créer vos serveurs virtuels et y accéder !

Si vous rencontrer une erreur, que le fichier se télécharge au lieu d’afficher la page, allez dans la Webmin > Servers > Apache Server
Sélectionnez le Vhost qui pose problème, et remplacer les règles du directory « public_html » par :
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
AddHandler fcgid-script .php
AddHandler fcgid-script .php5
FCGIWrapper /home/[DOMAINE]/fcgi-bin/php5.fcgi .php
FCGIWrapper /home/[DOMAINE]/fcgi-bin/php5.fcgi .php5

Si vous souhaitez envoyer un joli mail pour vous ou vos clients

Vous pouvez le faire via les Servers Templates :
System Settings > Server Templates > Default settings > Mail for domainVoici comment j’ai rédigé le mien :
Subject line :
Virtual server created for ${DOM}
Email message to send upon server creation :
The following virtual server has been set up successfully :

DOMAIN INFORMATION

      Domain name:            ${DOM}
      Website:                    http://www.${DOM}/
      Hosting server:            ${HOSTNAME}
      Server IP address:       ${IP}

ADMINISTRATIVE ACCESS

${IF-WEBMIN}
      Administration URL:           https://www.${DOM}:10000/
      Administration login:          ${USER}
      Administration password:   ${PASS}

      Administration Email
      The administration (default) mailbox for this server is ${USER}@${DOM}
${ENDIF-WEBMIN}

FTP ACCESS

      FTP host:                   ftp.${DOM} OR ${HOSTNAME}
      FTP login:                  ${USER}
      FTP password:            ${PASS}
      Home directory:          /public_html/

${IF-MYSQL}
MYSQL INFORMATION

      MySQL database:          ${DB}
      MySQL login:                ${MYSQL_USER}
      MySQL password:          ${MYSQL_PASS}

      phpMyAdmin URL:          http://${HOSTNAME}/phpmyadmin/
${ENDIF-MYSQL}
${IF-POSTGRES}
POSTGRESQL INFORMATION

      PostgreSQL database:     ${DB}
      PostgreSQL login:        ${USER}
      PostgreSQL password:     ${PASS}
${ENDIF-POSTGRES}

Installer des mods supplémentaires

Pour installer des mods supplémentaires, c’est très simple, c’est l’utilisation classique d’Ubuntu. Prenons l’exemple de CURL qui n’est pas installé par défaut :

  • apt-get php5-curl

2 thoughts on “Ubuntu 10.04 LTS : installation rapide et facile d’un serveur web

  1. Reply Didier Misson Jan 2,2014 09:52

    Bonjour,

    Pourquoi installer un Ubuntu 10.04 LTS ?
    Ubuntu 12.04 LTS est sorti depuis presque 1 an au moment où tu écris ce post.
    Pourquoi ne pas avoir installé cette version 12.04 LTS ?

    Les LTS sont supportées 5 ans.
    Autant prendre la LTS la plus récente. Tu auras des versions de softs plus récentes, et un support plus étendu.

    😉

    • Reply Pierre Fév 3,2014 09:26

      Bonjour,
      Ça date un petit peu donc je ne me souviens pas bien pourquoi mon choix s’est porté vers la 10.04 plutôt que la 12.04, désolé ^^

Leave a Reply