====== Mise en place de l’environnement de production ====== ===== Objectif ===== Cette documentation va expliquer comment mettre en place un environnement de production avec un serveur Debian, configurer pour exécuter le service Apache charger de servir le framework Web2Py. ===== Pre-requis ===== * Une ferme de serveur avec assez de ressource disponible * Le vSphere Client de VMWare * L'ISO de Debian 7 //netinst// ===== Création de la VM ===== Premièrement, nous allons nous connecter à la ferme de serveur grâce à vSphere Client avec nos identifiants fournie en début d'année. {{ :sio:ppe2:mission_3:vsphere_login.png?300 |}} Lorsque l'on va cliquer sur le bouton **Connexion** nous allons obtenir un avertissement de sécurité. L'avertissement est normal puisque le certificat utiliser est auto-généré par le serveur. On se retrouve sur l'écran d'accueil. {{ :sio:ppe2:mission_3:vsphere_ssl.png?300 |}} Nous lançons la procédure pour créer une nouvelle machine virtuelle en cliquant sur //Fichier// > //Créer une nouvelle machine virtuelle// - Choisir une configuration **Typique** - Saisir le nom de notre machine **M2LWebProd** que l'on place dans //VMS Etudiants// > //PPE2// > //M2L// > // Groupe 1// - Dans la partie //Hôte/cluster//, choisir //CLUSTER// - Mettre la VM dans le //Pool Pédagogique// - Sélectionner l'espace de stockage //SLAM// - Le système d'exploitation sera un //Linux//, version //Debian GNU/Linux 6 (64 bits)// - La VM se trouvera sur le réseau //VLAN501// - Créer un disque dur de 5Go en provisionnement dynamique. Après avoir compléter les huit étapes, on arrive sur un écran de résumer comme suit : {{ :sio:ppe2:mission_3:vsphere_pret_vm.png?500 |}} Il ne reste plus qu'à valider la fenêtre pour lancer la création de la VM. ===== Installation de Debian 7 ===== {{:sio:ppe2:mission_3:vsphere_iso_vm.png?290 |}} Pour commencer l'installation, nous devons commencer par monter l'ISO télécharger comme indiquer dans les [[sio:ppe2:mission_3:env_prod#pre-requis|pre-requis]]. Pour y parvenir, nous démarrons la VM et cliquons sur l'icône en forme de CD avec une clé, on sélectionne le lecteur de la VM // Lecteur CD/DVD 1// puis //Connecter l'image ISO sur le disque local...//. Une fenêtre demandant d'indiquer le chemin vers l'ISO s'ouvre. On lui indique, valide. On se rend ensuite dans la console et on exécute le raccourci clavier : **Ctrl** + **Alt** + **Insert** pour redémarrer la VM. \\ Lors du démarrage sur l'image ISO debian affiche un menu avec différents choix on sélectionne **Install** A la suite de cette étape l'installateur va nous demander différents éléments de configuration dans cette ordre : *Sélection de la langue : ici français *Choix de la location géographique : ici France *Choix du layout(disposition) du clavier : ici français *Configuration auto du réseau On obtient une erreur DHCP, cette erreur intervient car aucun serveur DHCP n'est présent sur le réseau {{ :sio:ppe2:mission_3:install_dhcp_error.png }} *Configuration manuelle du réseau : ici on utilise l'IP fournit *Configuration du masque : ici //255.255.255.0// *Configuration de la passerelle : ici //172.21.101.254// *Configuration de l'IP du serveur de nom : ici //172.21.101.254// *Configuration du nom d'hôte de la machine : ici //M2LWEBProd// *Choix du mot de passe root : ici on ne n'en met pas pour désactiver le root *Choix d'un nom d'utilisateur *Choix du mot de passe + confirmation *Configuration du partitionnement du disque dur : ici on met tout sur la même partition {{ :sio:ppe2:mission_3:install_partition_recap.png |}} *Configuration de l'adresse du miroir : ici //ftp.fr.debian.org // *Configuration de l'adresse du mandataire : ici //http://192.168.222.85:3142/ // *Demande de participation a une étude statistique : ici on répond //Non// *Sélection des logiciels : ici on ne coche que //Utilitaires usuels du système// {{ :sio:ppe2:mission_3:install_logiciels.png |}} *Installation de GRUB : ici on répond //Oui// L'installation est maintenant terminée, on peut éjecter l'ISO en utilisant la même procédure que celle utilisée au début de cette partie. ===== Mise en place des outils ===== On commence avec l'installation du serveur **OpenBSD** (ssh): # apt-get install -y ssh Ensuite on passe à l'installation d'**Apache 2** : # apt-get install apache2 Puis au déploiement du framework **web2py** sur la machine à l'aide de la [[http://web2py.com/books/default/chapter/29/13/deployment-recipes#Linux-and-Unix|documentation]] : On installe les paquets zip et unzip # apt-get -y install zip unzip On configure le proxy pour wget # vi /etc/wgetrc 79 https_proxy = http://172.30.137.29:3128/ 80 http_proxy = http://172.30.137.29:3128/ 81 ftp_proxy = http://172.30.137.29:3128/ On télécharge l'archive et on l'extrait # wget http://web2py.com/examples/static/web2py_src.zip # unzip web2py_src.zip On déplace le fichier **wsgihandler.py** permettant l’interfaçage entre web2py et apache et on change le propriétaire du dossier pour **www-data** # mv web2py/handlers/wsgihandler.py web2py/wsgihandler.py # chown -R www-data:www-data web2py On configure Apache, sans oublier d'installer le module wsgi # apt-get -y install libapache2-mod-wsgi # a2enmod ssl # a2enmod proxy # a2enmod proxy_http # a2enmod headers # a2enmod expires # a2enmod wsgi # a2enmod rewrite # service apache2 restart On créer ensuite un certificat auto signé pour accéder à l'administration de web2py # mkdir /etc/apache2/ssl # openssl genrsa 1024 > /etc/apache2/ssl/self_signed.key # chmod 400 /etc/apache2/ssl/self_signed.key # openssl req -new -x509 -nodes -sha1 -days 365 -key /etc/apache2/ssl/self_signed.key > /etc/apache2/ssl/self_signed.cert # openssl x509 -noout -fingerprint -text < /etc/apache2/ssl/self_signed.cert > /etc/apache2/ssl/self_signed.info On installe la configuration pour Apache et on l'active # vi /etc/apache2/sites-available/web2py WSGIDaemonProcess web2py user=www-data group=www-data display-name=%{GROUP} WSGIProcessGroup web2py WSGIScriptAlias / /var/www/web2py/wsgihandler.py AllowOverride None Order Allow,Deny Deny from all Allow from all AliasMatch ^/([^/]+)/static/(.*) /var/www/web2py/applications/$1/static/$2 Order Allow,Deny Allow from all Deny from all Deny from all CustomLog /var/log/apache2/access.log common ErrorLog /var/log/apache2/error.log SSLEngine on SSLCertificateFile /etc/apache2/ssl/self_signed.cert SSLCertificateKeyFile /etc/apache2/ssl/self_signed.key WSGIProcessGroup web2py WSGIScriptAlias / /var/www/web2py/wsgihandler.py AllowOverride None Order Allow,Deny Deny from all Allow from all AliasMatch ^/([^/]+)/static/(.*) /var/www/web2py/applications/$1/static/$2 Order Allow,Deny Allow from all CustomLog /var/log/apache2/access.log common ErrorLog /var/log/apache2/error.log # a2ensite web2py # service apache2 restart On définit ensuite le mot de passe administrateur avec les commandes : # sudo -u www-data python -c "from gluon.widget import console; console();" # sudo -u www-data python -c "from gluon.main import save_password; save_password(raw_input('admin password: '),443)" Après cette installation, nous avons rencontrer un problème de réécriture d'url avec Apache. Le numéro de version apparaissait après **/static/** dans l'url des fichiers de l'application **admin**. Pour corriger le problème, nous avons remplacer les deux lignes du fichier // /etc/apache2/sites-available/web2py // AliasMatch ^/([^/]+)/static/(.*) /var/www/web2py/applications/$1/static/$2 par AliasMatch ^/([^/]+)/static/(?:_[\d]+.[\d]+.[\d]+/)?(.*) /var/www/web2py/applications/$1/static/$2