Tutoriel N° 27d
Passage Release 2 OVH à Release 3 OVH
Nous allons voir dans ce tutoriel comment passer d'un serveur OVH release 2 à un serveur OVH release 3.
Changement sur la Realease 3:
Passage PHP 5 à 5.3 (pas de choix possible pour ceux qui étaient en version 4 ou 5)
Passage de QMAIL à POSTFIX comme serveur de mail
Nouvelle interface WEBMIN (Nous ne traiterons pas de ce sujet)
Ce tutoriel vous propose :
[# Passage PHP 5 à 5.3 - Adaptation de quelques fonctions php(include,$HTTP_POST_VARS)
# SPF PASS / DKIM OK dans les signatures des emails PHP envoyés avec un exemple
# La correction des bugs de charsets (caractères accentués)
# Configuration PHP.INI
# La correction de la fonction mail PHP qui ne fonctionne pas
# La migration de vos sites, bases mysql, emails
# Quelques fonctions POSTFIX utiles
# Migration des DNS
# Eviter de recevoir des mails de ANACRON et de CRON
# Suppression des logs via CRON
# Activer Alias de siteweb du type http://vpsxxxxxx.ovh.net/~siteweb
Des connaissances de base pour se connecter en SSH sont nécessaires à ce tutoriel.
Pour rappel sous windows il y a le logiciel Putty, sous mac osx il suffit de lancer l'application Term
et de saisir:
ssh -l root XX.XX.XX.XX
avec XX.XX.XX.XX l'ip de votre serveur vps ou kimsufi
avec XX.XX.XX.XX l'ip de votre serveur vps ou kimsufi
# Passage PHP 5 à 5.3
Certaines fonctionnalités peuvent ne plus être compatibles dans vos scripts du au passage de PHP 4.5 à PHP 5.3 dans cette release 3 OVH.
- La fonction PHP INCLUDE(URL?VAR=$VAR...) ne fonctionne plus
voici une alternative compatible PHP 5.3
Remplacer
include("http://www.domaine.com/file.php?var=$VAR&var2=$VAR2...");
par
$fichier=file_get_contents("http://www.domaine.com/file.php?var=$VAR&var2=$VAR2...");
echo $fichier;
include("http://www.domaine.com/file.php?var=$VAR&var2=$VAR2...");
par
$fichier=file_get_contents("http://www.domaine.com/file.php?var=$VAR&var2=$VAR2...");
echo $fichier;
Pour les paiements en ligne de type ATOS
Remplacer $HTTP_POST_VARS[DATA] par $_POST[DATA]
# SPF PASS / DKIM OK dans les signatures des emails PHP envoyés
La signature DKIM est automatiquement ajouté dans vos mails expédiés, vous pouvez cependant la désactiver en ssh avec la commande (stop/start)
/etc/init.d/opendkim stop
Voici le code php 5.3 pour envoyer un email avec la signature SPF/DKIM sous postfix
$mailto="noreply@domaine.com";
$subject="sujet de l'email";
$message="ceci est un message test";
$spam_sender="spam_sender@domaine.com";
$from = "From:exemple<spam_sender@domaine.com>rn";
$from .= "Return-Path:$spam_senderrn";
$from .= "Reply-To: $spam_senderrn";
$from .= "MIME-version: 1.0n";
$from .= "Content-type: text/html; charset= iso-8859-1n";
mail($mailto, $subject, $message, $from, "-fspam_sender@domaine.com");
$subject="sujet de l'email";
$message="ceci est un message test";
$spam_sender="spam_sender@domaine.com";
$from = "From:exemple<spam_sender@domaine.com>rn";
$from .= "Return-Path:$spam_senderrn";
$from .= "Reply-To: $spam_senderrn";
$from .= "MIME-version: 1.0n";
$from .= "Content-type: text/html; charset= iso-8859-1n";
mail($mailto, $subject, $message, $from, "-fspam_sender@domaine.com");
Pour ajouter la signature SPF, rendez vous sur webmin (basculer sur la nouvelle interface OVH)
https://vpsxxxxxx.ovh.net:10000/
Menu Serveurs sur la gauche > Serveur de noms de domaines BIND > Zones DNS existantes (en bas à droite) > Sélectionner le domaine > Modifier le fichier d'enregistrements
Modifier la ligne contenant ip6 par une ligne de cette forme, puis sauvegarder, appliquer les changements et redemarrer BIND
domaine.com. IN TXT "v=spf1 a ip4:XX.XX.XX.XX mx ~all"
Exemple (*):
$ttl 86400
shareannonce.com. IN SOA shareannonce.com. postmaster.shareannonce.com. (
2014112702
21600
3600
604800
86400 )
IN NS XX.ip-XX-XX-XXX.eu.
IN NS sdns2.ovh.net.
IN MX 10 mail.shareannonce.com.
IN A XX.XX.XX.XX
www IN A XX.XX.XX.XX
mail IN A XX.XX.XX.XX
smtp IN A XX.XX.XX.XX
pop IN A XX.XX.XX.XX
pop3 IN A XX.XX.XX.XX
imap IN A XX.XX.XX.XX
sql IN A XX.XX.XX.XX
mysql IN A XX.XX.XX.XX
ftp IN A XX.XX.XX.XX
ownercheck IN TXT "xxxxxxxxx"
shareannonce.com. IN TXT "v=spf1 a ip4: XX.XX.XX.XX mx ~all"
default._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=M..................................................................AB" ) ; ----- DKIM key default for shareannonce.com
shareannonce.com. IN SOA shareannonce.com. postmaster.shareannonce.com. (
2014112702
21600
3600
604800
86400 )
IN NS XX.ip-XX-XX-XXX.eu.
IN NS sdns2.ovh.net.
IN MX 10 mail.shareannonce.com.
IN A XX.XX.XX.XX
www IN A XX.XX.XX.XX
mail IN A XX.XX.XX.XX
smtp IN A XX.XX.XX.XX
pop IN A XX.XX.XX.XX
pop3 IN A XX.XX.XX.XX
imap IN A XX.XX.XX.XX
sql IN A XX.XX.XX.XX
mysql IN A XX.XX.XX.XX
ftp IN A XX.XX.XX.XX
ownercheck IN TXT "xxxxxxxxx"
shareannonce.com. IN TXT "v=spf1 a ip4: XX.XX.XX.XX mx ~all"
default._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=M..................................................................AB" ) ; ----- DKIM key default for shareannonce.com
# La correction des bugs de charsets (caractères accentués)
Editer le fichier httpd.conf,
#nano /etc/httpd/conf/httpd.conf
commenter la ligne avec un #
#AddDefaultCharset UTF-8
ajouter les lignes en dessous
AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru
AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb
AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk
AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb
AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5 .Big5 .big5
# For russian, more than one charset is used (depends on client, mostly):
AddCharset WINDOWS-1251 .cp-1251 .win-1251
AddCharset CP866 .cp866
AddCharset KOI8-r .koi8-r .koi8-ru
AddCharset KOI8-ru .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8 .utf8
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru
AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb
AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk
AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb
AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5 .Big5 .big5
# For russian, more than one charset is used (depends on client, mostly):
AddCharset WINDOWS-1251 .cp-1251 .win-1251
AddCharset CP866 .cp866
AddCharset KOI8-r .koi8-r .koi8-ru
AddCharset KOI8-ru .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8 .utf8
commenter les lignes avec un # pour éviter les logs
#ErrorLog logs/error_log
#CustomLog logs/access_log combined
Redémarrer apache
/etc/init.d/httpd restart
# Configuration PHP.INI
nano /etc/php.ini
Modifier pour supprimer l'affichage des messages d'erreurs et enregistrements des logs
register_globals = On
display_errors = Off
log_errors = Off
; Add X-PHP-Originaiting-Script: that will include uid of the script followed by the filename
mail.add_x_header = Off
display_errors = Off
log_errors = Off
; Add X-PHP-Originaiting-Script: that will include uid of the script followed by the filename
mail.add_x_header = Off
Ajouter pour autoriser les INCLUDE PHP
allow_url_include = 1
Redémarrer apache
#/etc/init.d/httpd restart
# La correction de la fonction mail PHP qui ne fonctionne pas
nano /etc/postfix/main.cf
on remplace
inet_protocols = all
par
inet_protocols = ipv4
on remplace
inet_protocols = all
par
inet_protocols = ipv4
==> lancer smptp
chown postfix.postfix -R /var/lib/postfix
/etc/init.d/postfix restart
service postfix start
chown postfix.postfix -R /var/lib/postfix
/etc/init.d/postfix restart
service postfix start
# La migration de vos sites, bases mysql, emails
Pour les emails, vous devez recréer vos boites mails sur
https://vpsxxxxxx.ovh.net/postfixadmin/login.php
Pour la migration de vos sites et de vos bases mysql:
Sur l'ancien SERVEUR (RELEASE 2 OVH) on se logue
On se place dans /
cd /
mysqldump -u root -pMOT_DE_PASSE_MYSQL --databases base1 base2 base3 > base.sql
cd /
mysqldump -u root -pMOT_DE_PASSE_MYSQL --databases base1 base2 base3 > base.sql
ATTENTION: Prendre uniquement vos bases et surtout pas les bases par defaut comme test, mail, et mysql dans la liste des bases base1 base2 base3 ...
On se place dans /
cd /
tar -cf home.tar --exclude=icons --exclude=log --exclude=mail --exclude=mysql --exclude=ovh --exclude=usage home
cd /
tar -cf home.tar --exclude=icons --exclude=log --exclude=mail --exclude=mysql --exclude=ovh --exclude=usage home
On doit ensuite créer les domaines via WEBMIN sur le serveur RELEASE 3 OVH avec OVHM
On peut maintenant envoyer les bases et les sites avec les commandes suivantes:
XX.XX.XX.XX étant l'ip (serveur OVH RELEASE 3)
rsync -avz home.tar root@XX.XX.XX.XX:/
rsync -avz base.sql root@XX.XX.XX.XX:/
rsync -avz base.sql root@XX.XX.XX.XX:/
le mot de passe root (serveur OVH RELEASE 3) sera demandé
On se logue ensuite en ssh sur (serveur OVH RELEASE 3)
on importe les bases mysql:
cd /
mysql -u root -pMOT_DE_PASSE_MYSQL < base.sql
cd /home
on efface les répertoire créer avec WEBMIN qui se trouve dans /home
avec la commande rm -rf login-domain (ceci pour chaque site)
on se remet à la racine et on déverse les sites avec la commande
tar XVF home.tar
cd /home
on efface les répertoire créer avec WEBMIN qui se trouve dans /home
avec la commande rm -rf login-domain (ceci pour chaque site)
on se remet à la racine et on déverse les sites avec la commande
tar XVF home.tar
fini
# Quelques fonctions POSTFIX utiles
Voici quelques commandes utiles POSTFIX
checker queue postfix
postqueue -p
Supprimer tous les messages en Queue :
postsuper -d ALL
version postfix
postconf -d | grep mail_version
Supprimer Mailer daemon
mailq | grep MAILER-DAEMON | awk '{print $1}' | tr -d '*'| postsuper -d -
lire un message avec id
sudo postcat -q 8913E2F64DFD
sudo postcat -q MESSAGE_ID | head -n 100
sudo postcat -q 8913E2F64DFD | head -n 100
postqueue -p
Supprimer tous les messages en Queue :
postsuper -d ALL
version postfix
postconf -d | grep mail_version
Supprimer Mailer daemon
mailq | grep MAILER-DAEMON | awk '{print $1}' | tr -d '*'| postsuper -d -
lire un message avec id
sudo postcat -q 8913E2F64DFD
sudo postcat -q MESSAGE_ID | head -n 100
sudo postcat -q 8913E2F64DFD | head -n 100
# Migration des DNS
Supprimer les DNS secondaire de l'ancien manager du serveur OVH RELEASE 2
Modidier les DNS chez votre registrar
Ajouter DNS secondaire sur OVH release 3
il est necessaire d'ajouter la ligne de commande OWNERCHECK dans le bind de chaque domaine
de cette façon avec le code qu'OVH vous donnera xxxxxxxxx. Redemarage de bind.
Il se peut que vous deviez attendre 30min avant qu'OVH accepte le DNS.
ownercheck IN TXT "xxxxxxxxx"
(voir exemple (*) ci dessus)
Cette étape peut être assez fastidieuse à cause des refus d'OVH, il suffit de patienter et de renouveler l'opération
# Eviter de recevoir des mails de ANACRON et de CRON
nano /etc/crontab
remplacer
MAILTO=ROOT par MAILTO=""
sauvegarder puis faire
/etc/init.d/crond restart
remplacer
MAILTO=ROOT par MAILTO=""
sauvegarder puis faire
/etc/init.d/crond restart
# Suppression des logs via CRON
On commence par créer le script qui efface les logs, on se place où l'on souhaite sur le serveur.
Je choisis par exemple un domaine et un emplacement arbitraire et je crée le script purglog.sh
Remplacer domain par l'un des répertoires de site web sur votre serveur.
Ce script effacera les logs qui s'inscrivent sur votre serveur malgré les directives apache déjà supprimées.
cd /home/domain/www
nano purglog.sh
nano purglog.sh
#!/bin/bash
# Pour chaque domaine dans /var/log/httpd ajouter ces 2 lignes ci dessous
cat /dev/null > /var/log/httpd/domain-access_log
cat /dev/null > /var/log/httpd/domain-error_log
cat /dev/null > /var/log/httpd/access_ssl_log
cat /dev/null > /var/log/httpd/access_log
cat /dev/null > /var/log/httpd/error_log
cat /dev/null > /var/log/httpd/error_ssl_log
cat /dev/null > /var/log/httpd/ovh-access_log
cat /dev/null > /var/log/httpd/ovh-access_ssl_log
cat /dev/null > /var/log/httpd/ovh-error_ssl_log
cat /dev/null > /var/log/httpd/ovh-ssl_request_log
cat /dev/null > /var/log/httpd/ssl_request_log
cat /dev/null > /var/log/httpd/suphp_log
cat /dev/null > /var/log/cron
cat /dev/null > /var/log/maillog
cat /dev/null > /var/log/mysqld.log
cat /dev/null > /var/log/cron.log
cat /dev/null > /var/log/daemon.log
cat /dev/null > /var/log/kern.log
cat /dev/null > /var/log/messages
cat /dev/null > /var/log/debug
# vide la queue postfix de mails
postsuper -d ALL
# Pour chaque domaine dans /var/log/httpd ajouter ces 2 lignes ci dessous
cat /dev/null > /var/log/httpd/domain-access_log
cat /dev/null > /var/log/httpd/domain-error_log
cat /dev/null > /var/log/httpd/access_ssl_log
cat /dev/null > /var/log/httpd/access_log
cat /dev/null > /var/log/httpd/error_log
cat /dev/null > /var/log/httpd/error_ssl_log
cat /dev/null > /var/log/httpd/ovh-access_log
cat /dev/null > /var/log/httpd/ovh-access_ssl_log
cat /dev/null > /var/log/httpd/ovh-error_ssl_log
cat /dev/null > /var/log/httpd/ovh-ssl_request_log
cat /dev/null > /var/log/httpd/ssl_request_log
cat /dev/null > /var/log/httpd/suphp_log
cat /dev/null > /var/log/cron
cat /dev/null > /var/log/maillog
cat /dev/null > /var/log/mysqld.log
cat /dev/null > /var/log/cron.log
cat /dev/null > /var/log/daemon.log
cat /dev/null > /var/log/kern.log
cat /dev/null > /var/log/messages
cat /dev/null > /var/log/debug
# vide la queue postfix de mails
postsuper -d ALL
Rendre éxécutable ce script
chmod 777 /home/domain/www/purglog.sh
Ajouter dans CRON l'éxécution automatique de ce script toutes les 15 minutes par exemple
nano /etc/crontab
15 * * * * root /bin/sh /home/domain/www/purglog.sh;
15 * * * * root /bin/sh /home/domain/www/purglog.sh;
Pour finir nous allons supprimer les dernières directives de log encore présentes:
cd /etc/httpd/vhosts/
Editer chaque fichier de ce répertoire puis,
pour chaque fichier que l'on édite via nano mettre un # devant ces 2 lignes
#CustomLog logs/alertfin-access_log combined
#ErrorLog logs/alertfin-error_log
#ErrorLog logs/alertfin-error_log
# Activer Alias de siteweb du type http://vpsxxxxxx.ovh.net/~siteweb
Cette fonction bien pratique qui permet de visualiser son site avant la propagation DNS n'est plus activée par défaut, pour l'activer procéder comme suit:
nano /etc/httpd/vhosts/default.conf
cocher
#suPHP_UserGroup ovh users
cocher
#suPHP_UserGroup ovh users
nano /etc/httpd/conf/httpd.conf
decocher
LoadModule userdir_module modules/mod_userdir.so
decocher
LoadModule userdir_module modules/mod_userdir.so
puis redémarrer apache
/etc/init.d/httpd restart
/etc/init.d/httpd restart
Je reste à votre disposition par email pour vous aider