Créer un nouveau domaine est maintenant très facile. La version que j’utilise est ancienne, ce n’est pas la version #ANNEE#. Faites comme sur l’image. Attention, si vous avez mis des restrictions sur les mots de passe avec mysql_secure_installation, vous devez respecter ces restrictions sinon vous aurez une erreur.
Créer un domaine depuis Virtualmin
Si vous être pressé d’aller voir le résultat, vous aurez le message d’erreur suivant :Forbidden You don’t have permission to access / on this server. Apache/2.4.18 (Ubuntu) Server at web-presence.ch Port 80C’est bêtement que vous n’avez rien dans votre dossier public_html. Si vous mettez un fichier index.html Il va s’afficher. À ce stade, vous devez encore autoriser votre domaine à exécuter les fichier php. Si vous ne le faites pas le fichier php ne sera pas exécuté, mais sera téléchargé. Pour cela ajouter les lignes suivantes dans votre fichier etc/apache2/sites-available/votre_domaine.conf
#Mettez le bout de script après la ligne suivante:
#FCGIWrapper /home/web-presence/fcgi-bin/php7.0.fcgi .php7.0
php_admin_flag engine on
php_admin_flag engine on
On redémarre apache ...
/etc/init.d/apache2 restart
C'est terminé, votre domaine devrait normalement être maintenant fonctionnel.
Si vous avez un problème avec les DNS, c'est peut-être que vous n'autorisez pas BIND DNS Server à écouter au bon endroit.
La façon la plu simple et de l'autoriser a écouter partout de la façon suivante:
etc/bind/named.conf.options
listen-on {
any;
};
Avant d’aller plus loin et pour être sûr que vous allez le lire, il faut dire que Virtualmin n’est pas disponible pour toutes les versions d’Ubuntu. En cas d’incompatibilité, vous aurez le message suivant:
Virtualimin : Failed to detect operating system
Allez voir dans le fichier etc/issue. Il doit avoir contenir votre OS par exemple: Ubuntu 16.04 LTS. Si ce n’est pas le cas, c’est peut-être que virtualmin n’est pas encore compatible avec votre version.
Si vous activez mysql_secure_installation
Dans le shell ci-dessous, il vous est demandé si vous désirez utiliser le script mysql_secure_installation. Si vous répondez oui vous avez certaine contrainte sur les mots de passes. Pour plus d’infos allez lire mon article.
mysql_secure_installation a des incidences sur le choix de votre mot de passe. Si vous l’activez, un mauvais mot de passe va générer des erreurs.
Niveaux de sécurité et directives pour les mots des de passes.
LOW: Longueur de plus de 7 caractères. MEDIUM: Longueur de plus de 7 caractères, avoir des majuscules et minuscules et caractères spéciaux. STRONG : Longueur de plus de 7 caractères, avoir des majuscules et minuscules et caractères spéciaux et ne doit pas être dans un fichier de dictionnaire s’il a été défini.
Installation Mysql / Phpmyadmin / Vitrualmin sur Ubuntu 16.04
Je vous donne ci-dessous toutes les commandes a effectuer pour installer les bases d’un serveur web
Installation Ubuntu 16.04 script shell
######### INSTALL Apache et modules php 7 #########
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apache2
service apache2 restart
### Voir la liste des modules php7 disponible -> sudo apt-cache search php7-*
### On installe maintenant les module que l'on a besoin
sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi php7.0-mcrypt php7.0-mbstring libapache2-mod-php7.0
######### Install mysql #########
sudo apt-get install mysql-server
sudo mysql_secure_installation
######### Install Phpmyadmin #########
sudo apt-get install phpmyadmin
/etc/init.d/apache2 restart
service mysql restart
######### Install virtualmin #########
mkdir /virtualmin
cd /virtualmin
wget http://software.virtualmin.com/gpl/scripts/install.sh
chmod +x install.sh
sh install.sh
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-enabled/phpmyadmin.conf
sudo a2dismod mpm_event && sudo a2enmod mpm_prefork && sudo a2enmod php7.0
sudo apt-get install php libapache2-mod-php
sudo a2enmod rewrite
/etc/init.d/apache2 restart
Actuellement, phpmyadmin ne devrait pas s’exécuter mais afficher le code php. Pour qu’il s’exécute, allez modifier le fichier etc/apache2/apache2.conf et ajouter les lignes suivantes après le texte en commentaire.
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
SetHandler application/x-httpd-php
ServerSignature Off
ServerTokens Prod
A cette étape, je redémarre la machine pour être certain que tout a bien été prix en compte.
reboot
Vous pouvez maintenant vous connecter sur phpmyadmin à l’adresse suivante: Http://votre_ip/phpmyadmin. Connectez-vous ensuite sur Webmin à l’adresse http://votre_ip:10000/ et terminer l’installation.
Fin de l’installation de virtualmin
Installation et activation de modules utiles
Vous pouvez maintenant installer les modules dont vous avez besoin. Pour ma part j’installe toujours la liste suivant. Reportez-vous à mon pour plus d’infos sur ce sujet.
Si vous utiliser l’upload d’images, vous serez peut-être amenez à augmenter la taille maximale des fichier téléchargeable. Par défaut elle est de 2MB. Pour ce faire modifier votre php.ini de la sorte et rdémarrer apache (/etc/init.d/apache2 restart):etc/php/7.0/apache2/php.iniupload_max_filesize = 5M max_file_uploads = 40
Pour savoir ou se trouve votre php.ini, afficher phpinfo(); et regarder la variable: Loaded Configuration File
Liste de commandes de base pour l’administration et l’utilisation d’un serveur linux. Je regroupe ici toutes les commandes que j’utilise très régulièrement et dont je veux être certain de la syntaxe avant de les exécuter.
Affichage des fichiers et dossiers
cd ..
Monte dans le rep parent
cd /home/web-presence
Aller dans un rep chemin depuis la racine
cd public_css/img
Aller dans un rep chemin depuis le rep courant
ls
Lister le contenu du répertoire courant
ls -1 |wc -l
Compte de nombre de fichiers ou dossiers du rep.
Taille des fichiers et dossiers (Disk Usage)
du –max-depth=1
Affiche la taille des dossiers du rep. courant.
du –max-depth=1 | sort -n
Affiche la taille des dossiers du rep courant trié par taille
du |sort -n
Affiche la taille des dossiers du rep courant et des enfants trié par taille
du |sort -n
Même chose mais du plus grand au plus petit
Gestion des fichiers et dossiers
m log.txt
Supprime le fichier (Pas de confirmation)
mkdir
Créer un dossier
rm -rf *
Supprimer tous le contenu du répertoire courant (Pas de confirmation)
rmdir log
Supprimer le répertoire
rm -rf var/generation/
Supprime le dossier var/generation
find . -name « sess_a* » -exec rm {} \;
Supprime tous les fichiers ayant un nom commençant par sess_s dans le dossier courant. Utile si le dossier est trop long et que si rm -rf retourne « bash: /bin/rm: Argument list too long »
rm -rf var/generation/*
Supprime le contenu du dossier var/generation
chown -R www-data:www-data *
Change le user et le group du rep. courant et des enfants
chown -h www-data:www-data en
Change le user et le group d’un lien symbolique. dans notre cas le dossier ‘en’
chmod -R 755 /home/web-presence/public _html/css
Change les droits récursivement dans les dossiers.
J’ai dernièrement été confronté au problème suivant, les vidéos mp4 étaient lu sur les desktop mais pas sur les mobiles Android et autres malgré que le html ne pouvait être faux et que si je mettais les vidéos sur un autre serveur, ça fonctionnait…
Après de nombreuses tentative comme mettre à jours avconv et ffmpeg car les vidéos étaient convertient sur le server, j’ai fait comme proposé sur de nombreux sites modifié le fichier htacces en ajoutant les lignes suivantes mais sans succès:
Mais ca ne marchait pas. J’ai ensuite contrôlé les fichier que je recevait et j’ai vu que mes vidéos étaient compressé en GZIP. Il m’a ensuit suffit de modifier le .htaccess de la façon suivante pour que les vidéos ne soient pas transmisent compressées et qu’elles se chargent sur les devices mobiles:
Lors de l’amélioration de la vitesse de chargement de vos pages afin d’améliorer l’UX pour réduire le taux de rebonds et satisfaire plus aux directives de Google, vous serez vite confronté au fait d’avoir des images trop lourdes qu’il est difficile de réduire sans en réduire la qualité. Pour arriver à cela aussi appelé lossless, des librairies sont extrêmement utiles, efficaces et rapide à mettre en œuvre. Les librairies optipng et jpegoptim permettent d’atteindre les taux de compression définis par Google Page Speed et donc de valider cette partie de leur test.
Jpegoptim
Jpegoptim comme son nom l’indique permet d’optimiser des fichier jpeg selon un taux de compression définie ou sans perte. Un des grands avantages de cette librairie est qu’elle est extrêmement rapide.
Installation de JpegOptiom sur Ubuntu
sudo apt-get update apt-get install jpegoptim
Exécution de jpegoptim
Je vous montre ci-dessous comment exécuter jpegotim de différentes façon afin d’avoir un aperçu global. Il est parfois utile de compresser par lot et parfois par fichier.
Exécuter jpegotim en ligne de commande
Paramètre
Utilisation
–strip-all
Enlève tous les marquer de l’image (nom du programme utilisé,…), à utiliser pour satisfaire Google
-m
Choix de la qualité à avoir entre 0 et 100. Si vous mettez ce paramètre, la compression ne sera plus sans perte ou lossless.
-p
Préserve les différentes informations de date
-P
Préserve les permissions de l’image originale.
jpegotim change le proriétaire du fichier Les version précédentes à la version 1.4.2 ne permettent pas de garder les permissions (owner/group) ce qui a pour effet que, si vous exécuter le script depuis une cron, le propriétaire peut changer et rendre l’image inaccessible pour l’utilisateur. Pour voir votre version exécuter simplement: #jpegotim –version
Exécuter en ligne de commande
La ligne ci-dessous compresse toutes les images de type JPG qui se trouvent dans mon dossier /img/
Pour compresser toutes les images de type JPG modifiée il y a moins de 60 minutes qui se trouvent dans le dossier img/cache, exécuter un fichier php contenant les commandes suivantes :
Vous l’aurez bien sur compris, optipng est lui conçu pour compresser des images png. Plus lent que pour les jpegs, il est néanmoins très utile et selon les réglages pas trop lent.
Installation de Optipng sur Ubuntu
sudo apt-get update
apt-get install optipng
Paramètres principaux
Paramètre
Utilisation
-strip all
Enleve toutes les meta données de l’image. Elles sont inutiles et prennent de la place.
-o
Choix du niveau d’optimisation entre 0 et 7. La valeur par défaut est 2. Plus le niveau de compression est élevé, plus la vitesse d’exécution sera lente.
-preserve
Tente de préserver les attributs du fichier
Exécuter Optipng
Les principes sont les mêmes que pour Jpegoptim. Je donne ici 2 exemple, le premier avec une recherche de fichier et le second en lui transmettant le nom du fichier. Je vous incite à regarder plus haut pour plus d’exemples.
Bien que le ptotocole HTTP2 soit encore en mode expérimental, je l’utilise sur de nombreux site sans le moindre problème. Il permet de réduire considérablement les temps de chargement comme le montre les waterfall tout en bas de la page. La seule limitation est qu’il faut avoir son site en HTTPS. Je vais vous montrer ci-dessous comment l’installer et l’activer.
HTTP/2 ne fonctionne qu’avec des sites tournant en HTTPS
Installer et activer HTTP2
Installer HTTP2 est simplissime. Pour se faire suivez les instructions ci-dessous.
sudo a2enmod http2
Si vous le message d’erreur suivant c’est que vous ne l’avez pas installé et poursuivez. Si vous n’avez pas d’erreur allez directement à la section configuration.
ERROR: Module http2 does not exist!
Installation
Pour passez à l’installation proprement dite, exécutez les commandes suivantes:
sudo add-apt-repository -y ppa:ondrej/apache2
sudo apt-key update
sudo apt-get update
# Répondez non à la question pour savoir s'il faut écraser la config
sudo apt-get --only-upgrade install apache2 -y
sudo a2enmod http2
/etc/init.d/apache2 restart
Activez http2 pour votre domaine
Pour activer le protocole sur votre domaine, effectuez la modification suivante et redémarrer.
Pour contrôler si les changements ont été pris en compte, le plus simple est de regarder avec l’outil de développement chrome (F12) quel est le protocole utilisé. Attention, en fonction de vos directives d’expiration vous devez cliquer sur CTRL + F5
Détection du protocole utilisé avec Chrome Developer Tools
Temps de chargement HTTP 1.1 versus HTTP2
Les graphiques ci-dessous sont de comparatif de waterfall de chargement entre la version 1.1 et 2 de HTTP. Ils permettent de voir très clairement les avantages en terme de temps que la nouvelle version apporte.
Temps de chargement http versus http2 sur GTmetrix.com
Passez son site en HTTPS à plusieurs avantages non-négligeables. Il donne une image de qualité aux visiteurs, il accroît la sécurité ce qui est très utile si vous transmettez des données sensibles comme des mots de passe ou information de paiement, il est quelque chose d’officiellement positif pour Google et permet d’utiliser la technologie HTTP2 qui réduit les temps de chargement.
Dans ce tuto, je vais vous expliquez comment le mettre en place sans rien oublier. Dans cet exemple, j’utilise une machine Ubuntu 16.04 installé comme expliqué ici et avec un achat de certificat chez Gandi.net.
Générer la clé SSL sur le serveur et valider les infos
Commençons par générer les fichiers requis sur notre serveur. Effectuez la commande suivante et répondez aux questions posées.
Mettez l’url de votre site dans le champs Common Name
Cette commande a crée 2 fichiers : la clé publique en .csr et la clé privée en .key que nous devons garder et qu’il faudra utiliser. Lors de l’achat de sur Gandi.net, il faut transmettre la clé .CSR. Maintenant, il faut poursuivre l’achat et attendre que le registrar confirme l’activation du certificat.
Une fois le certificat activé, il faut maintenant copier ou déplacer les clés générées sur le serveur et télécharger la clé intermédiaire (.pem) depuis votre interface d’administration chez votre registrar. J’utilise les commandes suivantes pour les déplacer.
Vous devez actuellement avoir les fichier suivants sur votre serveur:
/etc/ssl/certs/mon_domaine.crt clé fournie par le registrar /etc/ssl/certs/mon_domaine.csr la clé publique /etc/ssl/private/mon_domaine.key la clé privée /etc/ssl/certs/GandiStandardSSLCA2.pem le certificat intermédiaire pour rester compatible avec les vieux navigateurs fournie par le registrar
Ajouter le certificat SSL
Une fois tous les fichiers nécessaires en place, je modifie mon fichier etc\apache2\sites-enabled\mon_domaine.conf de la façon suivante. Je recopie tout le contenu de VirtualHost *:80 .. /VirtualHost et le renomme en VirtualHost *:443 … /VirtualHost et j’ajoute la position de mes fichiers crt, key et pem. Pour arriver à quelque chose qui ressemble à cela:
Checklist pour passer sans erreur de HTTP en HTTPS
Assurez-vous que toutes les images et les liens sont maintenant en https. Des outils comme ScreaminFrog permettent de faire cela très facilement. Contrôler vos balises hreflang et canonical. Créer une nouvelle propriété dans la Search Console de Google. Copiez les fichiers de désaveux de liens si vous en avez. Contrôler les fichiers sitemap Contrôler les fichiers CSS Modifier si nécessaire votre fichier robots.txt Changer un maximum de backlink sur la nouvelle adresse