La ZwookMachine est un serveur LAMPPPZZ :
Le but de cette page est de créer un LiveDVD installable.
Contrairement aux serveurs traditionnels, qui ne comprennent aucune interface graphique, la ZwookMachine proposera Gnome, et ce pour deux raisons :
Pour un serveur, il est habituellement conseillé d'utiliser une version LTS (Long Term Support) d'Ubuntu. La dernière LTS en date est Lucid Lynx, ou 10.04, sortie fin Avril 2010.
Rendez-vous sur la page des téléchargements. J'aime particulièrement la version francisée !
C'est la partie la plus délicate de l'installation.
En supposant que le serveur web ne comporte qu'un seul disque, et que l'on ne voudra pas redimensionner un jour ses partitions, voici ce que je propose de créer, successivement:
C'est en effet la partition /var qui va recueillir toutes les données du serveur : /var/www contiendra les pages html et php, les cripts cgi (et tout ce qui concerne Apache) ; /var/lib/mysql contiendra les bases de données MySQL ; /var/lib/zopex.y (où x.y est la version de Zope installée) contiendra les sites et bases de données Zope, etc.
Nom d'utilisateur : adminzm
Mot de passe : à votre guise, mais retenez-le !
Nom de machine : je suggère www, ou www2 (si www.votredomaine.com existe déjà)
Si vous ne devez passer par un proxy (serveur mandataire) pour accéder à l'internet, passez cette section.
En présence d'un proxy, vous devrez l'indiquer par l'intermédiaire du bouton [Avancé…] dans le panneau "Prêt à installer". N'oubliez pas de renseigner une éventuelle authentification, comme ceci : identifiant:mot_de_passe@ip
Il vous sera demandé de retirer le DVD pour que le serveur ne risque pas de redémarrer sur une nouvelle procédure d'installation.
En général, la résolution de l'écran est aisément modifiable par le menu Système / Préférences / Écrans.
Cependant, si vous vous trouvez bloqué dans une résolution trop basse (800x600 par exemple), et que vous savez pertinemment que votre carte graphique et votre moniteur acceptent une résolution plus grande, essayez d'abord d'installer les pilotes propriétaires de ceux-ci (s'ils existent) dans Système / Administration / Pilotes de périphériques, puis tentez à nouveau de modifier la résolution de l'écran.
Si cela ne fonctionne toujours pas, tentez ceci :
HorizSync 31-80 VertRefresh 56-76
SubSection "Display" Viewport 0 0 Depth 24 Modes "1280x1024" "1024x768" EndSubSection DefaultDepth 24
Vous devez renseigner un éventuel proxy à deux endroits (même si vous l'avez déjà fait durant l'installation !) :
Si vous n'arrivez pas à faire des mises à jour en ligne de commande (si la commande sudo apt-get update retourne une erreur 407), entrez la commande :
sudo gedit /etc/environment
et modifiez la ligne :
http_proxy="http://ip:port/"
en :
http_proxy="http://id:mdp@id:port/"
Recommencez à l'identique avec le fichier /etc/apt/apt.conf.
Ensuite, tapez :
source /etc/environment sudo apt-get update
Les logiciels se trouvent dans des paquets téléchargeables dans des dépôts.
Soit dans Synaptics (menu Configuration / Dépôts), soit dans Système / Administration / Sources de logiciels :
La mise à jour des paquets se fait soit par l'intermédiaire de Synaptics (en cliquant successivement sur Recharger, Tout mettre à jour, puis Appliquer), soit par le Gestionnaire de mises à jour (menu Système / Administration).
Si vous n'avez pas utilisé, lors de l'installation, la version francisée d'Ubuntu, il vous faut effectuer les mises à jour des langues par : Système / Administration / prise en charge des langues.
On ne joue pas sur un serveur !
sudo apt-get remove --purge gnome-games-common gbrainy
ou bien dans Synaptics sélectionnez gnome-games-common et gbrainy pour suppression complète.
Pas besoin de fenêtre bondissantes !
sudo apt-get remove --purge compiz-core compiz-wrapper mesa-utils
ou bien dans Synaptics sélectionnez ces paquets pour suppression complète.
Pas besoin de Gimp (graphisme), Xsane (scanneur), ni de pilotes d'imprimantes :
sudo apt-get remove --purge gimp gimp-data sane-utils xsane xsane-common min12xxw gimp-help-common
ou bien dans Synaptics sélectionnez ces paquets pour suppression complète.
Pas besoin de suite bureautique, sauf si vous lisez de la documentation en .odt, ou .doc.
sudo apt-get remove --purge openoffice.org-common
ou bien dans Synaptics sélectionnez ce paquet pour suppression complète.
Certains paquets sont rendus obsolètes par une mise à jour avec une version plus élevée ; c'est souvent le cas de linux-headers-2.6.xx-yy. Supprimez-les avec :
sudo apt-get autoremove
Nous avons besoin d'installer les logiciels cités dans la présentation.
Nous pouvons les installer en un clic (cela prend du temps). (Si firefox vous demande avec quoi ouvrir ce lien, validez le choix par défaut qui est apturl.)
Ou bien les installer en ligne de commande :
sudo apt-get update sudo apt-get install apache2 apache2-doc mysql-server php5 libapache2-mod-php5 php5-mysql php5-auth-pam libapache2-mod-auth-pam perl php-pear proftpd-basic phpmyadmin openssl php5-gd freetype2-demos libfreetype6 libjpeg-progs libjpeg62 libpng12-0 libgdbm3 zlib1g zlib1g-dev expat sablotron php5-cli proftpd-doc libgd-tools libcompress-zlib-perl libxml2-dev mingw32-binutils webalizer php-fpdf ncurses-bin libapache2-mod-perl2 libapache2-mod-perl2-doc freetds-dev gettext php5-mcrypt php5-mhash php5-sqlite dovecot-postfix php5-xcache dokuwiki txt2tags zopeedit python-ldap python-zodb openssh-server nautilus-gksu nautilus-open-terminal vim debconf-utils ssh filezilla
Ou bien les installer un par un : apache2, apache2-doc, mysql-server, php5, libapache2-mod-php5, php5-mysql, php5-auth-pam, libapache2-mod-auth-pam, perl, php-pear, proftpd-basic, phpmyadmin, openssl, php5-gd, freetype2-demos, libfreetype6, libjpeg-progs, libjpeg62, libpng12-0, libgdbm3, zlib1g, zlib1g-dev, expat, sablotron, php5-cli, proftpd-doc, libgd-tools, libcompress-zlib-perl, libxml2-dev, mingw32-binutils, webalizer, php-fpdf, ncurses-bin, libapache2-mod-perl2, libapache2-mod-perl2-doc, freetds-dev, gettext, php5-mcrypt, php5-mhash, php5-sqlite, dovecot-postfix, php5-xcache, dokuwiki, txt2tags, zopeedit, python-ldap, python-zodb, openssh-server, nautilus-gksu, nautilus-open-terminal, vim, debconf-utils, ssh, filezilla
Paquet | Renseignement demandé | Conseil |
---|---|---|
proftpd | Lancement de proftpd | inetd si l'usage du ftp est très ponctuel, standalone s'il est intensif |
mysql-server | Mot de passe du root (administrateur) de MySQL | Évitez les accents |
phpmyadmin | Quel serveur HTTP faut-il configurer | Apache2 |
phpmyadmin | Utiliser dbconfig-common ? | Oui |
phpmyadmin | Mot de passe de l'administrateur de MySQL | Le même que précédemment |
dovecot-postfix | Configuration-type du courrier de messagerie | Internet avec un "smarthost" |
dovecot-postfix | Nom de courrier | Indiquez votre nom de domaine, ou le FQDN de votre ZwookMachine |
dovecot-postfix | Relais SMTP | Indiquez l'adresse du serveur SMTP de votre FAI (smtp.fai.com) ou de votre réseau |
dokuwiki | Emplacement du dokuwiki | Indiquez le chemin à partir de la racine du site, par exemple /wiki |
dokuwiki | Supprimer les pages à la suppression du paquet | Ne pas cocher, au risque de perdre des données |
Zope 2.9.12 est nécessaire pour faire tourner certains sites Zwook. Mais il faut auparavant compiler et installer Python 2.4.6, qui n'est plus dans les dépôts de Lucid.
sudo apt-get install build-essential libreadline-dev zlib1g-dev libjpeg62-dev subversion libpq-dev lib32z1-dev
Pour Python 2.4.6 :
cd mkdir install cd install wget http://www.python.org/ftp/python/2.4.6/Python-2.4.6.tgz tar xzf Python-2.4.6.tgz cd Python-2.4.6 make clean ./configure --prefix=/usr/lib/python2.4 make sudo make install
Pour l'utilitaire easy_install :
cd ~/install wget http://peak.telecommunity.com/dist/ez_setup.py sudo /usr/lib/python2.4/bin/python ez_setup.py
Pour l'utilitaire virtualenv :
sudo /usr/lib/python2.4/bin/easy_install virtualenv
Pour la bibliothèque PIL (Python Imaging Library) :
sudo /usr/lib/python2.4/bin/easy_install PIL
Pour les module python-ldap et sasl :
sudo apt-get install libsasl2-dev libssl-dev libldap2-dev sudo /usr/lib/python2.4/bin/easy_install python-ldap sasl
cd ~/install wget http://www.zope.org/Products/Zope/2.9.12/Zope-2.9.12-final.tgz tar xzf Zope-2.9.12-final.tgz cd Zope-2.9.12-final make clean ./configure --prefix=/usr/lib/zope2.9 --with-python=/usr/lib/python2.4/bin/python make sudo make install
Pour créer l'instance zwookedu dans /var/lib/zope2.9/instances
, avec pour utilisateur principal admin, qui aura pour mot de passe adminzope :
sudo /usr/lib/zope2.9/bin/mkzopeinstance.py --dir=/var/lib/zope2.9/instances/zwookedu --user=admin:adminzope
Vérification :
ls /var/lib/zope2.9/instances/zwookedu/
bin etc Extensions import inituser lib log Products README.txt var
Rendre adminzm propriétaire du dossier /var/lib/zope2.9
, et root propriétaire des scripts inituser
(s'ils existent) :
sudo chown -R $USER:$USER /var/lib/zope2.9 sudo chown root:root /var/lib/zope2.9/instances/*/inituser 2> /dev/null
Éditer le fichier de configuration de l'instance :
gedit /var/lib/zope2.9/instances/zwookedu/etc/zope.conf
Vers la ligne 150, insérer :
effective-user adminzm
Ainsi, l'instance zwookedu fonctionnera sous le nom d'adminzm.
Nous reviendrons plus tard sur ce fichier de configuration.
Démarrage de l'instance zwookedu :
/var/lib/zope2.9/instances/zwookedu/bin/zopectl start
Test : Ouvrir Firefox sur http://localhost:8080
La page d'accueil de Zope apparait.
Cliquez ensuite sur le lien Zope Management Interface, une fenêtre d'authentification apparait. Utilisateur : admin et mot de passe adminzope, comme défini précédemment.
Si zwookedu est votre seule instance de Zope 2.9, créer les liens suivants :
sudo ln -s /var/lib/zope2.9/instances/zwookedu/bin/zopectl /usr/bin/zopectl2.9 sudo ln -s /var/lib/zope2.9/instances/zwookedu/bin/runzope /usr/bin/runzope2.9 sudo mkdir /etc/zope2.9 sudo ln -s /var/lib/zope2.9/instances/zwookedu/etc/zope.conf /etc/zope2.9
Ainsi, il vous sera plus facile de faire un zopectl2.9 restart
au lieu d'un /var/lib/zope2.9/instances/zwookedu/bin/zopectl restart
, et d'éditer le fichier /etc/zope2.9/zope.conf
plutôt que le fichier /var/lib/zope2.9/instances/zwookedu/etc/zope.conf
Pour faire en sorte que l'instance zwookedu de Zope se lance au démarrage du serveur, nous allons la daemoniser.
Les liens symboliques dont il est question ci-dessus ont été créés.
On crée le script /etc/init.d/zope2.9
sudo gedit /etc/init.d/zope2.9
qui contient ceci (Attention à la ligne 27 : OWNER=adminzm ; à modifier éventuellement pour l'adapter à votre cas) :
#! /bin/sh ### BEGIN INIT INFO # Provides: zope2.9 # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Lance l'instance Zope 2.9 # Description: Lance l'instance Zope 2.9 contrôlée par le lien # symbolique /usr/bin/zopectl2.9 ### END INIT INFO # Author: Claude Clerc <claude.clerc@ac-aix-marseille.fr> # # Do NOT "set -e" # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="Zope 2.9.12" NAME=zopectl2.9 DAEMON=/usr/bin/$NAME #DAEMON_ARGS="--options args" DAEMON_ARGS="" PIDFILE=/var/run/zope2.9.pid SCRIPTNAME=/etc/init.d/zope2.9 OWNER=adminzm # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # # Function that starts the daemon/service # do_start() { su $OWNER $DAEMON start || exit 1 su $OWNER $DAEMON status | sed s/^.*pid=// > $PIDFILE exit 0 } # # Function that stops the daemon/service # do_stop() { rm -f $PIDFILE su $OWNER $DAEMON stop || exit 1 exit 0 } do_restart() { rm -f $PIDFILE su $OWNER $DAEMON restart || exit 1 su $OWNER $DAEMON status | sed s/^.*pid=// > $PIDFILE exit 0 } read_status() { su $OWNER $DAEMON status exit 0 } case "$1" in start) do_start ;; stop) do_stop ;; status) read_status ;; restart|force-reload) do_restart ;; *) #echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 exit 3 ;; esac :
Rendons-le exécutable :
sudo chmod +x /etc/init.d/zope2.9
Installons les raccourcis-service :
sudo update-rc.d zope2.9 defaults 90 10
Ainsi le service zope2.9 démarrera en position 90, avant Apache2 (qui démarre en position 91), et s'arrêtera en position 10, après Apache2 (qui s'arrête en position 9).
Éditer le fichier /var/lib/zope2.9/instances/zwookedu/etc/zope.conf, ou plus simplement /etc/zope2.9/zope.conf :
gedit /etc/zope2.9/zope.conf
Vérifier les "directives" suivantes, en les adaptant à vos besoins :
<environment> TZ Europe/Paris # TimeZone (fuseau horaire) ; liste : ls /usr/share/zoneinfo TMPDIR /tmp # Dossier des données temporaires (doit contenir plusieurs GiO) </environment> debug-mode off effective-user adminzm # Zope tourne avec les droits de l'utilisateur adminzm. zserver-threads 30 # Le nombre de threads de votre serveur Zope ; dépend de la quantité de RAM. python-check-interval 2000 http-realm Espace privé # Domaine apparaissant, en cas d'authentification, dans la boîte de dialogue. maximum-number-of-session-objects 5000 suppress-all-site-roots off <eventlog> level info <logfile> path $INSTANCE/log/event.log level info </logfile> </eventlog> <logger access> level WARN <logfile> path $INSTANCE/log/Z2.log format %(message)s </logfile> </logger> <warnfilter> action ignore category exceptions.DeprecationWarning </warnfilter> <http-server> # valid keys are "address" and "force-connection-close" address 9080 # force-connection-close on </http-server> <ftp-server> # valid key is "address" address 9021 </ftp-server> <zodb_db main> # Main FileStorage database <filestorage> path $INSTANCE/var/Data.fs </filestorage> mount-point / </zodb_db> <zodb_db temporary> # Temporary storage database (for sessions) <temporarystorage> name temporary storage for sessioning </temporarystorage> mount-point /temp_folder container-class Products.TemporaryFolder.TemporaryContainer </zodb_db> # zoperunner section (tells zopectl where runzope is) <zoperunner> program $INSTANCE/bin/runzope </zoperunner>
Penser à redémarrer Zope après toute modification de sa configuration :
sudo service zope2.9 restart
ZwookEdu est un CMS (Content Management System ou système de gestion de contenu) Libre, pensé pour favoriser les échanges ente professeurs et élèves, développé par des enseignants Suisses et Français à partir du CMS Zwook.
Sites : zwook.org (site communautaire), zwook.ch (site de développement), zwookedu.ch (site pédagogique)
Le ZwooksManager permet de créer ou de mettre à jour des sites web Zwook.
Télécharger la dernière version sur http://sourceforge.net/projects/zwook/files/.
Déplacer le fichier que vous venez de télécharger dans le dossier Product de l'instance zwookedu que vous avez créée.
cd /var/lib/zope2.9/instances/zwookedu/Products/ mv ~/Téléchargements/ZwooksManagerAAAAMMJJ.tgz .
(AAAAMMJJ est une date ; ne pas oublier le point, qui désigne le répertoire actuel, à la fin de la dernière commande.)
Décompresser ce fichier :
tar xzf ZwooksManager20100516.tgz
Un ls -l
permet de constater qu'un dossier ZwooksManager a été créé.
Pour faire un peu de ménage, supprimer le tarball :
rm ZwooksManagerAAAAMMJJ.tgz
Copier les extensions nécessaires au bon endroit :
mkdir ../Extensions cp ZwooksManager/NeedExtensions/* ../Extensions/
Copier les products nécessaires dans le dossier actuel :
cp -a ZwooksManager/NeedProducts/* .
Redémarrer zope2.9 :
sudo service zope2.9 restart
Ouvrir la page manage_main de Zope : http://localhost:9080/manage_main
En haut à droite de cette page, une liste déroulante commence par Accelerated HTTP Cache Manager. Le dérouler pour sélectionner ZwooksManager (en bas de la liste).
Un objet nommé ZwooksManager (doté d'une icone rouge) apparait. Cliquer dessus, puis sur l'onglet View.
Tout en bas de la page intitulée Zwooks Manager, dans la partie Installer un Zwook, indiquer le nom du nouveau Zwook : internet ; choisir la version 1.3.1 de zwook et cliquer sur le bouton Install.
Au bout de quelques dizaines de secondes, apparait ceci :
container ok
copy du zexp dans import
import du zexp
copy ok
cleaning ok
Cliquez ici pour voir…
Cliquer sur le lien ; le site apparait. Se connecter en administrateur avec login et mot de passe : admin/admin.
L'utilisation d'un service DNS (Domain Name Server) est nécessaire pour l'utilisation d'hôtes virtuels dans Apache2.
sudo apt-get install bind9 bind9-doc bind9utils
Les fichiers de configuration sont dans /etc/bind
.
Nous allons configurer un serveur DNS hybride, qui d'une part sera maître pour le ou les pseudo-noms de domaine correspondants aux FQDN des sites hébergés, et d'autre part servira de cache pour les autres noms de domaine.
Ce DNS va consulter d'autres serveurs DNS locaux ou distants (par exemple ceux du FAI) pour les noms de domaines qu'il ne gère pas.
Remplacez le fichier /etc/bind/named.conf.options
par le modèle ci-dessous, en substituant à %%NAMESERVER%% et %%NAMESERVER2%% les IP des DNS à consulter. (Un petit cat /etc/resolv.conf
peut vous être utile pour connaître ces IP.)
options { directory "/var/cache/bind"; // S'il y a un firewall entre ce poste et les serveurs de noms // que vous désirez consulter, vous pouvez avoir besoin de décommenter // l'instruction query-source ci-après. Les précedentes versions de BIND // envoyaient toujours leurs requêtes à travers le port 53, mais BIND // version 8.1 et suivantes utilisent un port non-privilégié par défaut. query-source address * port 53; // Si votre FAI propose une ou plusieurs addresses IP de // serveurs de noms, vous voudrez probablement les utiliser comme // forwarders, c'est-à-dire leur transmettre les requêtes pour les noms // de domaines extérieurs. Attention au point-virgule après chaque IP. forwarders { %%NAMESERVER%%; %%NAMESERVER2%%; }; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; };
Ce fichier définit les domaines gérés par la ZwookMachine.
Dans le modèle ci-dessous, %%EPOCH%% devra être remplacé par le résultat de :
date +%s
%%FQDN_POINT%% devra être remplacé par le nom de domaine pleinement qualifié (Full Qualified Domain Name) de votre machine, celui-ci terminé par un point ; par exemple : www2.lyc-detest.ac-aix-marseille.fr.
%%HOSTIP%% devra être remplacé par l'IP de votre ZwookMachine.
Voici le modèle de fichier /etc/bind/db.zm
:
; BIND data file for rfc1918 zone ; $TTL 86400 @ IN SOA %%FQDN_POINT%% adminzm.%%FQDN_POINT%% ( %%EPOCH%% ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS %%FQDN_POINT%% @ IN A %%HOSTIP%%
Remplacer les variables comme indiqué ci-dessus.
%%HOSTIP_4%% devra être remplacé par le dernier nombre de l'IP de votre ZwookMachine.
Voici le modèle de fichier /etc/bind/db.zm.inv
:
; BIND data file for rfc1918 zone ; $TTL 86400 @ IN SOA %%FQDN_POINT%% adminzm.%%FQDN_POINT%% ( %%EPOCH%% ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS %%FQDN_POINT%% %%HOSTIP_4%% PTR %%FQDN_POINT%%
C'est le fichier à renseigner pour que les fichier db.zm
et db.zm.inv
soient pris en compte.
%%HOSTIP_3%%.%%HOSTIP_2%%.%%HOSTIP_1%% est l'écriture inversée des 3 premiers nombres de l'IP de la ZwookMachine. Par exemple, si l'IP est 172.19.34.10, alors vous devrez remplacer ceci par 34.19.172.
// // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; zone "%%FQDN%%" { type master; file "/etc/bind/db.zm"; forwarders{}; }; zone "%%HOSTIP_3%%.%%HOSTIP_2%%.%%HOSTIP_1%%.in-addr.arpa" { type master; file "/etc/bind/db.zm.inv"; forwarders{}; };
sudo service bind9 restart
Éditer le fichier /etc/resolv.conf
afin qu'il ne contienne que la ligne nameserver suivante :
nameserver 127.0.0.1
(Commentez les autres lignes en les faisant commencer par un #.)
Peut-on pinguer le nom de domaine ?
ping www2.lyc-detest.ac-aix-marseille.fr
Test du fichier de configuration db.zm
:
named-checkzone www2.lyc-detest.ac-aix-marseille.fr /etc/bind/db.zm
Test du fichier de configuration db.zm.inv
:
named-checkzone www2.lyc-detest.ac-aix-marseille.fr /etc/bind/db.zm.inv
(S'il vous est répondu que cette zone has no address records (A or AAAA), c'est normal.)
Test de la résolution directe :
host www2.lyc-detest.ac-aix-marseille.fr
ou, plus complet :
dig www2.lyc-detest.ac-aix-marseille.fr AXFR
Test de la résolution inverse :
host 192.168.0.13
ou, plus complet :
dig 0.168.192.in-addr.arpa AXFR
Une erreur m'a bloqué longtemps, m'empêchant d'utiliser des solutions Php/MySQL : les modules idoines de Php5 ne se chargent pas ; une erreur "PHP Startup: Unable to load dynamic library" apparaît dans /var/log/apache2/error.log
.
La solution :
cd /usr/lib/php5 sudo ln -s 20090626+lfs modules
Ensuite, éditer le fichier /etc/php5/apache2/php.ini
; modifier la ligne :
extension_dir = "/usr/lib/php5/*/"
en :
extension_dir = "/usr/lib/php5/modules/"