Fiches:Installer un serveur LAMP en mode texte
# --------------------------------------------------- # # INSTALLATION SERVEUR : LINUX FEDORA CORE 4 # # --------------------------------------------------- #
Voici donc une (encore une !) installation d'un serveur LAMPP : Linux, Apache, mysql, Php et ...ftp (Proftpd) à partir de rien ou presque.
Pourquoi une telle notice d'installation ? simplement je n'ai pas trouvé aussi
détaillé. Je n'ai sûrement pas suffisament cherché, bref. Ce que je trouve (et
vous trouverez je n'en doute pas) intéressant c'est de partir de pratiquement
rien et arriver à un bon résultat assez dernier cri. J'ai choisi une ditribution
FEDORA CORE 4 pour deux raisons :
- FEDORA est une distribution issue de RED HAT orientée serveur qui marche bien.
Ceci dit ce choix ne doit pas avoir beaucoup d'importance et d'autres
ditributions valent sûrement autant que celle-ci;
- plus important pour la suite, la version 4 est la dernière sur CD-ROMs, les
autres sont sur DVD, mon poste n'a pas de lecteur DVD.
Je me suis appuyé sur plusieur documentations sur la toile citées aux endrois opportuns et les documentations intégrées aux sources téléchargées. Nous allons voir cette installation en mode texte, ce qui constitue une approche moins habituelle pour certains. Si votre souris ne fonctionne pas, ce n'est pas grave vous n'en aurez plus jamais besoin. L'avantage réside dans un système déchargé de programmes inutiles puisqu'une fois installé, on ne travaille qu'en mode texte. Quelques connaissances d'Unix (ou Linux) sont toutefois nécessaires, mais je devrais arriver à vous convaincre du mode texte et de son intérêt. C'est parti.
# --------------------------------------------------- # # 1 - Installation O.S. # # --------------------------------------------------- #
Vous vous êtes procuré une machine, pour moi c'est un H.P. vectra vei8 Pentium 3 256Mo de RAM avec un disque de 30 Go je crois branché sur un vulgaire écran pouvant fournir du 800X600 un peu en couleur. Donc vous voyez que vous n'allez pas faire des frais. Mais cela ne va pas nous empêcher d'installer les dernières versions des logiciels. Vous avez aussi sous la main au moins les 4 premiers CD-ROMs de la distribution FEDORA CORE 4.
Débrouillez-vous pour que votre engin démarre sur le CD-ROM afin de lancer l'installeur. Après le chargement, à l'invite, tapez "text" pour effectuer l'installation en mode texte. Pas de panique c'est quand même un peu graphique : il y a quatre couleurs : noir, bleu, blanc et rouge. (non il n'y a pas de noir clair ... et les bords des différentes fenêtres ne sont pas arrondis). Le premier choix consiste à vérifier les CD-ROMs : c'est comme vous voulez. Le deuxième choix est la langue. Pour ma part j'ai choisi "french". Rien ne vous empèche d'en choisir une autre mais je ne traduirai pas à votre place. Vient ensuite le choix du clavier "fr-latin-1", ça va le faire. Puis le type d'installation, j'ai galéré un peu comme ce sera marqué plus loin alors si le disque est tout propre ce sera "installer ..." puis choisir "serveur" ou si vous avez recommencé, choisissez "réinstaller le système" puis "serveur" bien-sûr. L'installeur vous propose d'effectuer le partitionnement. Choisissez un partitionnement personnalisé avec Diskdruid (le maudit ... je vais y venir). Voici le choix que je vous propose, à adapter un peu selon votre disque : Suppression de toutes les partitions (garder peut-être celles d'un autre O.S. !).
création partition racine "/" 512Mo ext3
création partition boot "/boot" 128Mo ext3
création partition usr "/usr" 8000Mo ext3
création partition var "/var" 1024Mo ext3
création partition var/log "/var/log" 512Mo ext3
création partition tmp "/tmp" 512Mo ext3
création partition swap 512Mo swap
Ce qu'il faut retenir :
La partition racine / va comprendre tout ce qui n'est pas dans les autres
partitions et notamment /bin l'O.S. proprement dit qui en principe ne tient pas
une place phénoménale : 512 Mo est largement suffisant.
La partition /boot comme son nom l'indique contiendra peu de choses ... pour démarrer. Il y aura encore mois de choses qu'au dessus : 128 Mo suffisent. La partition /usr contiendra les programmes applicatifs à savoir Mysql, Apache, Php, Proftpd et les autres ainsi que tout un tas de bibliothèques diverses et variées. Si vous le voulez bien, elle contiendra aussi les bases mysql, les scripts php, pages html enfin tout ce qui composera votre site ou application. Chacun comprendra donc que c'est ici que la place va être bouffée.
J'ai mis 8 Go car mon disque le permet. Mais pour bricoler 2 Go peuvent suffire. Dans les partitions /var et /var/log seront enregistrés les journaux. Il faut de la place mais sans plus non plus. Cette formule de séparer les logs sur une partition peut permettre d'enregistrer des journaux sur une autre machine, mais ceci ne fait pas partie de cette notice. /tmp et swap sont en rapport avec la memoire RAM disonible : le double tout simplement.
Laissez 1 Go libre pour plus loin.
Diskdruid agence tout cela comme il l'entend. Je l'ai laissé faire.
TRES IMPORTANT : avant de lancer le formatage relevez l'intégralité du shéma de
partition comme ceci :
/dev/hdbx /
/dev/hdby /boot etc...
En effet j'ai eu quelques soucis à la réinstallation avec la partition swap. J'ai dù recommencer et j'ai pu retrouver mon shéma et les partitions prévues. Au cas où cela vous arrive, c'est un peu long dans les manips mais forcez le formatage de toutes ces partitions (bon courage mais ça va le faire).
Vient ensuite le choix entre ... 1 chargeur : grub, pas de configuration ou s'il y a un autre O.S. renommez le champ other, Faites le choix de "pas de mot de passe" dans le chargeur cela évite d'avoir à le taper s'il on veut effectuer un autre choix que celui par défaut au démarrage de la machine. Enfin j'ai choisi "ordre par défaut" et "block de démarrage principal".
Nous allons configurer mantenant le réseau :
config eth0 : activation au démarrage bien sûr
adresse IP fixe : xxx.xxx.xxx.xxx / xxx.xxx.xxx.xxx vous saurez faire un bon
choix ainsi que pour la passerelle : xxx.xxx.xxx.xxx et le DNS : xxx.xxx.xxx.xxx
Le nom d'hôte : manuel, "monserveuramoi.bien.fait" (domaine reservé !).
pare-feu : désactivé c'est juste pour la maison.
SELinux : niveau "avertissement", ça envoie des messages chez root
fuseau horaire "Europe/Paris" ou à votre convenance, puis mot de passe root :
évidemment ne pas laisser vide.
Puis voici venu le temps des paquetages. Ici on va faire très light car on va éviter d'installer des choses inutiles (je ne prétends pas tout savoir, loin de là il y aura donc encore des choses inutiles). Pour cette distribution des groupes sont définis. Nous sélectionnerons ceux qui nous intéressent.
éditeurs : rajouter vim-enhanced (la coloration syntaxique c'est bien). Pour
modifier un groupe il faut taper F2
internet basée sur texte : j'ai ajouté "lynx"
outils de développement : tout, cela évite des surprises mais il y a sûrement de l'inutile, la liste est un peu longue.
support de langues : francais, déja coché si vous avez fait ce choix plus haut
outils sytème : la sélection par défaut.
Tout le reste est inutile : cela est sûr.
Vous avez déja bien travaillé c'est au tour de votre poste d'en faire un peu. Passez de temps en temps à coté pour changer le disque (CD-ROM au nombre de 4).
A l'issue l'installeur vous demande de retirer tout CD-ROM et de redémarrer le bazard. Suivez bien ce qu'il se passe à la télé. Vous aurez peut-être quelques soucis (comme moi) avec les partitions : problème de montage. Mais en principe vous devriez arriver à l'invite de connexion "login:" à la suite de nombreux [ OK ] en vert correspondant aux différents services et peut-être quelques [ECHEC] en rouge !
Si problème sur les partitions se connecter en tant que root/<mot de passe>
et éditer le fichier /etc/fstab comme ceci :
vim /etc/fstab<entrée> (je vous renvoie à la doc de vim, à l'aide de 3 ou 4
commandes vous devriez vous en sortir)
et vérifiez qu'il n'y ait pas des choses bizarres dans certaines lignes. En ce qui me concerne le swap n'a pas été enregistré correctement il ne le trouvait pas => cafouillage mais vite réparé.
Ca y est tout est propre, redémarrez pour vous en assurer, il ne doit y avoir
mantenant que des [ OK ] verts. Pour cela à l'invite tapez reboot<entrée>
Vous remarquerez un truc de nfslock qui ne s'arrête pas correctement. Ce service nous étant inutile on va lui faire sa fête rapidement comme ceci :
Après reconnexion root tapez
chkconfig --level 0123456 nfslock off<entrée>
Profitez de ce moment pour désactiver de la même manière le bluetooth
chkconfig --level 0123456 bluetooth off<entrée>
Il y a peut-être d'autres services inutiles que vous purgerez de la même manière.
Installation de nos logiciels serveurs : dans que ordre ?
On installe d'abord l'environnement avec les paquets et sources utiles non
disponibles à l'installation première.
On a besoin de PROFTPD en priorité pour le transfert (éventuel) de fichiers utiles à l'installation.
PROFTPD s'appuie sur MYSQL. On installe donc d'abord MYSQL puis PROFTPD. On installe ensuite APACHE puis PHP qui en dépend.
Vous avez pris soin de tout récupérer sur la toile en archives .tar.gz ou rpm et copié dans une arborescence claire sur une clé USB.
exemple :
/lamp/httpd/httpd-2.2.4.tar.gz /lamp/php/php-5.2.1.tar.gz /lamp/mysql/mysql-5.0.37.tar.gz /lamp/proftpd/proftpd-1.3.0.tar.gz /lamp/libs/libpng-1.2.16.tar.gz /lamp/libs/zlib-1.2.3.tar.bz2 /lamp/libs/jpegsrc.v6b.tar.gz /lamp/libs/libpng-devel-1.2.8-2.i386.rpm /lamp/libs/libjpeg-devel-6b-34.i386.rpm /lamp/libs/libtiff-devel-3.7.1-6.i386.rpm
Ceci constitue également la liste exhaustive de ce dont on a besoin. Les trois rpm sont dispo sur la toile mais ils sont aussi dans certains CD-ROMs je me rappele plus les numéros.
# --------------------------------------------------- # # 2 - Préparation préalable # # --------------------------------------------------- #
Nous allons créer une partition pour les sources et transfert depuis la clé USB.
Déplacez vous dans /usr/sbin puis tapez :
./fdisk /dev/<votre disque> (pour moi hdb)
Cet utilitaire permet d'effectuer des travaux de partitionnement.
Nous allons créer notre partition mais auparavant nous allons regarder le shéma existant à l'aide de la commande p<entrée>. La nouvelle partition aura pour nom <votre disque> et le nombre qui suit celui de la dernière partition (si hdb9 alors ce sera hdb10). Tapez à présent m<entrée>
L'utilitaire vos demande le bloc de départ faites <entrée> pour prendre celui par défaut soit le premier libre puis ajoutez +1000M<entrée> pour indiquer la taille de la partition, c'est le plus pratique.
Enfin tapez w<entrée> pour enrgistrer la table de partition puis q<entrée> pour quitter. Fdisk vous propose de redémarrer pour que les changements soient pris en compte : exécutez-vous par reboot<entrée>
Formatage de la partition : après une reconnexion root
mkfs.ext3 /dev/<votre partition fraichement créée que l'on appellera hdb10>
on crée alors le répertoire de montage
mkdir /mnt/sources
Dans fstab ajouter la ligne suivante
/dev/hdb10 /mnt/sources ext3 1 2
au moyen de
vim /etc/fstab
Test de montage avant de redémarrer
mount /dev/hdb10
Si rien ne se passe c'est que c'est en principe bon. Vérifiez tout de même par ls /mnt/sources # doit renvoyer un répertoire lost+found
Si la partition ne se monte pas bien, revoir le problème mais avant tout redémarrage commenter absolument la ligne précédemment insérée dans /etc/fstab à l'aide de # (après ce n'est pas insurmontable mais ça devient complexe car le système ne peut monter la partition et bascule en mode safe ce qui oblige à remonter la partition / afin de pouvoir modifier fstab : à éviter)
Mais tout s'est bien passé et votre /dev/hdb10 est disponible en /mnt/sources En fait, on a fait un peu joujou pour voir comment ça marchait en mode commande cela aurait pu être fait au départ.
Transferez vite les sources depuis la clé.
Connectez la clé sur un port USB, une fois celle-ci détectée vous devez faire
<ctrl> c pour revenir à l'invite de commande sur la console. Se rendre dans le
répertoire de destination par :
cd /mnt/sources<entrée>
puis il faut monter la clé :
mount /media/<votre clé USB><entrée> # le nom se trouve dans /etc/fstab
ensuite copie :
cp -r /media/<votre clé USB>/lamp/* . <entrée>
démontage de la clé (elle ne meurt pas) :
umount /media/<votre clé USB><entrée>
On peut la retirer.
Installation sources et rpm devel pour gestion des images par PHP A partir d'ici je fais un peu plus bref. Les lignes de commentaires seront commentées à l'aide du # (ça fait plus pro).
# Tous ces fichiers sont dans /mnt/sources/libs donc (avec la complétion # automatique par la touche tab cela va assez vite) :
cd /mnt/sources/libs
tar xvzf libtiff-3.8.2.tar.gz
cd tiff-3.8.2/
./configure
make
make install
cd ..
tar xvzf libpng-1.2.16.tar.gz
cd libpng-1.2.16
./configure
make
make install
cd ..
tar xvzf jpegsrc.v6b.tar.gz
cd jpeg-6b/
./configure
make test
make install
cd ..
# Attention celle-ci est en bzip2 donc c'est le commutateur j au lieu de z dans # la commande tar.
tar xvjf zlib-1.2.3.tar.bz2
cd zlib-1.2.3
./configure
make test
make install
cd ..
rpm -ivh libtiff-devel-3.7.1-6.i386.rpm
rpm -ivh libjpeg-devel-6b-34.i386.rpm
rpm -ivh libpng-devel-1.2.8-2.i386.rpm
# --------------------------------------------------- # # 3 - Installation MySQL # # --------------------------------------------------- #
# Tout ceci est extrait de la documentation contenue dans l'archive. # Lire ce ficher est très instructif. # Création du compte de service :
cd /usr/sbin
./groupadd mysql
./useradd -g mysql mysql
# Compilation programme. On l'installe en /usr/local/mysql-5.0.37-src. on créera # plus loin un raccourci vers ce répertoire ce qui fait que quand on changera de # version par exemple mysql-5.0.38 on n'aura plus qu'à changer le raccourci pour # passer de l'une à l'autre, c'est plus sécurisant. La compilation est ici un # peu longue, vous pouvez refaire du café :
cd /mnt/sources/mysql
tar xvzf mysql-5.0.37.tar.gz
cd mysql-5.0.37
./configure --prefix=/usr/local/mysql-5.0.37-src
make
make install
# Installation configuration définitive :
cd /usr/local
# On fait le raccourci pour M.A.J. futures
ln -s mysql-5.0.37-src/ mysql
cd mysql
# Installation bases par défaut (il faut bien faire cette commande à partir de # cet endroi et non du répertoire mysql/bin sinon cela ne fonctionne pas) :
./bin/mysql_install_db --user=mysql
# Modification permissions :
chown -R root .
chown -R mysll var
chgrp -R mysql .
# Installation de la configuration par défaut :
cp /mnt/sources/mysql/mysql-5.0.37/support-files/my-medium.cnf /etc/my.cnf
# un petit test !
cd /usr/local/mysql
./bin/mysqld_safe &
# installation démarrage auto du service :
cp /mnt/sources/mysql/mysql-5.0.37/support-files/mysql.server /etc/init.d/mysql
# On rend exécutable le script :
chmod +x /etc/init.d/mysql
# Démarrage et arrêt du service :
chkconfig --add mysql
chkconfig --level 345 mysql on
# Ne laissez pas votre serveur sql sans mot de passe :
cd /usr/local/mysql/bin
./mysqladmin password <votre mot de passe>
# --------------------------------------------------- # # 4 - Installation ProFTPD # # --------------------------------------------------- #
# Cette documentation est extraite de la documentation de lea-linux.org # Création du compte de service :
cd /usr/sbin
./groupadd -g 5500 ftpgroup
./useradd -u 5500 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
# Compilation programme :
cd /mnt/sources/proftpd
tar xvzf proftpd-1.3.0.tar.gz
cd proftpd-1.3.0
make distclean # si en cas de problème on recommence
./configure
--with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql \
--with-includes=/usr/local/mysql/include/mysql \
--with-libraries=/usr/local/mysql/lib/mysql
make
make install
# Phase de test ! (récupérée dans la doc de l'archive proftpd) :
./sample-configurations/PFTEST.install
./proftpd -n -d 5 -c /tmp/PFTEST/PFTEST.conf
% ftp -n -d
ftp> open <hostname> 2021
ftp> user proftpd
---> USER proftpd
331 Password required for proftpd.
Password: [proftpd]
---> PASS proftpd
230 User proftpd logged in.
ftp>
# Installation de la configuration définitive :
cd /usr/local/etc/
rm proftpd.conf.old # s'il existe
mv proftpd.conf proftpd.conf.old
# Récupérérez et adaptez à votre site le proftpd.conf dans l'article
lea-linux.org que vous copierez dans /usr/local/etc/
# Installation base de données pour proftpd. Récupérérez et adaptez à votre site # le proftpd.sql dans l'article lea-linux.org que vous copierez dans # /mnt/sources/proftpd/ # vérifier et adapter le contenu : il doit y avoir cohérence entre les compte et # mot de passe indiqués dans proftpd.conf et les compte et mot de passe créés # par le script proftpd.sql :
vim proftpd.sql
# On installe la base de données :
cd /usr/local/mysql/bin
./mysql < /sources/proftpd/proftpd.sql
# Installation démarrage auto du service :
cp /mnt/sources/proftpd/proftpd-1.3.0/contrib/dist/rpm/proftpd.init.d
/etc/rc.d/init.d/proftpd
chmod +x /etc/rc.d/init.d/proftpd
/etc/rc.d/init.d/proftpd start
chkconfig --add proftpd
chkconfig --level 345 proftpd on
# Création du répertoire pour les logs
mkdir /var/log/proftpd
# Vous pouvez tester si tout démarre correctement par un :
reboot
# On pourrait se connecter en ftp mais on n'a pas encore créé le répertoire # racine du site. Nous y voila.
# --------------------------------------------------- # # 5 - Installation Apache # # --------------------------------------------------- #
# Cette documentation est issue de la page # http://www.trustonme.net/didactels/315.html que je salue ici. # Compilation programme :
cd /mnt/httpd
tar xvzf httpd-2.2.4.tar.gz
cd httpd-2.2.4
# je préfère envoyer le résultat de la commande dans un "petit" fichier texte # nommé configure.txt histoire de voir ce qu'il en résulte.
./configure --localstatedir=/var --prefix=/usr/local/apache2 > configure.txt
# inspection pour voir d'éventuels soucis:
cat configure.txt # more
# Mais c'est parfait !
make
make install
# Configuration :
vim /usr/local/apache2/conf/httpd.conf
# Les directives à adapter sont :
User nobody
Group nobody
ServerAdmin truc_muche@chez-vous.net
DocumentRoot "/usr/local/apache2/htdocs"
Décommenter éventuellement
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
Configurer votre page d'erreur
ErrorDocument 404 /err/missing.html
# Démarrage du service :
/usr/local/apache2/bin/apachectl start
# on teste !
lynx <votre adresse I.P.>
# création répertoire de gestion des erreurs (404) et de la page missing.html de # votre choix :
mkdir /usr/local/apache2/htdocs/err
vim /usr/local/apache2/htdocs/err/missing.html
# On adapte les permissions sur htdocs
chown -R ftpuser:ftpgroup /usr/local/apache2/htdocs
chmod -R 644 /usr/local/apache2/htdocs
# Rajoutez un :
chmod 755 <répertoires de htdocs>
# Vous pouvez tester le ftp si vous avez mis /usr/local/apache2/htdocs dans le # répertoire racine de l'usager ftp
# --------------------------------------------------- # # 6 - Installation PHP # # --------------------------------------------------- #
# Ultime étape et on pourra jouer complètement # Cette documentation est issue de http://www.trustonme.net/didactels/316.html # avec une modification sur les bibliothèques : j'ai retiré # --with-xpm-dir=/usr/X11R6 et --with-freetype-dir=/usr/X11R6 n'ayant pas les # paquetages requis. A la lecture du configure.txt vous trouverez deux # avertissements qui ne semblent pas être d'importance. j'ai rajouté # --with-config-file-path=/usr/local/apache2/conf pour avoir les deux fichiers # de configuration httpd.conf et php.ini au même endroi. Lisez la documentation, # vous trouverez sûrement des petits plus pour chez vous. # Compilation et installation programme :
tar xvzf php-5.2.1.tar.gz
cd php-5.2.1
./configure --prefix=/usr/local/php5 \
--enable-sockets \
--enable-ftp \
--enable-gd-native-ttf \
--enable-mbstring=all \
--with-gd \
--with-zlib \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-jpeg-dir=/usr/local/bin \
--with-png-dir=/usr/local/lib \
--with-zlib-dir=/usr/local/lib \
--with-config-file-path=/usr/local/apache2/conf > configure.txt
make
make install
# parcourir le résultat :
cat configure.txt # more
# On copie le php.ini :
cp php.ini-recommended /usr/local/apache2/conf/php.ini
# Configuration httpd.conf :
décommenter les deux lignes suivantes :
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ajouter les extensions .php à la ligne DirectoryIndex comme ceci :
DirectoryIndex index.html index.php
# Redémarrer le service
/usr/local/apache2/bin/apachectl restart
# Ca marche ?
# Paramétrage PHP # J'ai choisi de créer un répertoire pour les sessions. # création répertoire pour sessions user et group d'apache
mkdir /usr/local/apache2/sessions
chmod 770 /usr/local/apache2/sessions
chown -R nobody:nobody /usr/local/apache2/sessions
# Création répertoire temporaire :
mkdir /usr/local/apache2/tmp
chmod 770 /usr/local/apache2/tmp
chown -R nobody:nobody /usr/local/apache2/tmp
# Paramétrer les chemins dans php.ini :
directive session.save_path = "/usr/local/apache2/sessions"
directive upload_tmp_dir = "/usr/local/apache2/tmp"
# Installation démarrage auto du service. Après de longues recherches dans # toutes les documentation je me suis rabattu sur mon "petit castor junior" # autrement appelé Linux Administration quatrième édition chez Eyrolles dont # voici le numéro ISBN : 2-212-11505-9 et j'ai trouvé ceci : # Copier dans le script /etc/rc.d/rc.local la ligne suivante :
/usr/local/apache2/bin/apachectl start
# --------------------------------------------------- # # 7 - Epilogue # # --------------------------------------------------- #
Enfin je m'arrêterai là et vous renvoie aux conseils d'Antoine Bajolet sur http://www.toiletoine.net/ que je m'empresse de mettre à exécution. Je veux remercier ici toutes celles (je sais elles ne sont pas nombreuses mais il y a Léa !!!) et tous ceux qui ici et là livrent leur travail de fourmi pour que tout le monde en profite. Et c'est dans cet esprit là que je diffuse cette maigre contribution me sentant un peu redevable. Bon tapoti. Vous pouvez venir me voir un peu ici http://lesgirafesrayees.org/