Debian – Julien ANNE https://news.julien-anne.fr Développeur Ruby On Rails, Coach Craft et Agile Sat, 11 Jan 2025 12:08:53 +0000 fr-FR hourly 1 https://wordpress.org/?v=6.7.1 https://news.julien-anne.fr/wp-content/uploads/2020/07/cropped-knocker-1172580_1920-retouche512x512-32x32.jpg Debian – Julien ANNE https://news.julien-anne.fr 32 32 177439806 Mise à jour PHP 7.3 vers PHP 7.4 sur debian 10 buster, fichiers PHP non interprétés https://news.julien-anne.fr/mise-a-jour-php-7-3-vers-php-7-4-sur-debian-10-buster-fichiers-php-non-interpretes/ Fri, 14 Aug 2020 15:03:24 +0000 https://news.julien-anne.fr/?p=432 La distribution GNU/Linux Debian 10 buster contient dans ses dépôts officiels la version 7.3 de PHP (Hypertext Preprocessor) lorsque vous installer le méta pacquet php. De plus, lorsque vous utilisez Apache comme serveur http pour servir vos applications web écrites en PHP, vous utilisez bien souvent le package libapache2-mod-php qui vous fournit depuis les dépôts officiels de debian la version pour PHP 7.3, ce qui semble logique. Lorsque vous avez installé PHP via apt install php et que vous souhaitez connaître la version de PHP avec php -v vous obtenez une sortie semblable à :

PHP 7.3.19-1 .....

Mise à jour de PHP

Pour mettre à jour votre version de PHP, il faut suivre les premières étapes suivantes :

Téléchargement et ajout de la clé gpg pour le dépôt PPA de PHP :

sudo apt -y install lsb-release apt-transport-https ca-certificates 
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

Ensuite installons PHP 7.4 depuis ce ppa fraîchement configuré :

sudo apt update
sudo apt -y install php7.4

A ce moment là si vous faites php -v vous devriez avoir un retour comme celui-ci :

PHP 7.4.9 ...

On peut donc en conclure que PHP a bien été mis à jour.

Cependant si vous mettez un fichier PHP avec un phpinfo(); à l’intérieur est que vous l’appelez à travers votre apache, la réponse sera que la version utilisé de PHP est la 7.3.

Deux versions de PHP en parallèle

Vous avez à ce moment là 2 versions de PHP installer en parallèle, la 7.3 et la 7.4, si vous n’avez plus besoin de la version 7.3 vous vous dites que vous pouvez la désinstaller sans souci avec sudo apt purge php7.3 suivi ou non par un sudo apt autoremove pour faire le ménage. Oui et non si vous faites cela à l’instant vous allez vous retrouver avec vos fichiers php qui ne seront plus interprété par apache (si ce n’est pas un serveur de prod vous pouvez faire le test).

Pourquoi mes fichiers PHP ne sont plus interprétés par apache

La réponse est logique mais pas évidente, comme je vous le mentionnais en début d’article, l’installation du méta paquet php installe aussi apache2 et le module libapache2-mod-php. Tout ceci fonctionne bien ensemble, php 7.3 compatible avec libapache2-mod-php développé pour la version spécifique de php 7.3, donc lorsque l’on purge php7.3 il désinstalle le module apache associé et vos fichiers php ne sont plus interprétés par apache2.

Ok mais j’ai installé php7.4, ne m’a t-il pas installé libapache2-mod-php pour la version php 7.4 ? Vous avez raison le méta paquet php7.4 installe bien libapache2-mod-php pour la version php 7.4 mais ce derniers n’est pas automatiquement activé car il existait à ce moment là encore le module libapache2-mod-php pour la version php 7.3 et ces 2 modules sont incompatibles ensemble c’est pourquoi vous devez lancer les 2 commandes suivantes :

sudo a2dismod php7.3
sudo a2enmod php7.4

La première commande va désactiver le module libapache2-mod-php pour la version php 7.3 s’il est encore présent et la seconde va activer le module libapache2-mod-php pour la version php 7.4 enfin après systemctl restart apache2, vous pouvez vérifier votre fichier php contenant le phpinfo(); qui devrait maintenant vous indiquez PHP 7.4

Vous avez retrouver l’interprétation de vos fichiers PHP, la mise à jour est terminée, sauf s’il vous manque des extensions php à installer avec par exemple pour l’extension common :

sudo apt install php7.4-common

Vous pouvez aussi si vous le souhaitez purger les extensions php7.3 comme ceci sudo apt purge php7.3-common pour l’extension common.

Sources : https://geekmag.fr/blog/2020/01/25/installer-php-7-4-sur-debian-10-ou-debian-9/

Image par simplu27 de Pixabay

]]>
432
Installer et configurer Let’s encrypt pour votre application django sur une debian10 https://news.julien-anne.fr/installer-et-configurer-lets-encrypt-pour-votre-application-django-sur-une-debian10/ Mon, 01 Jun 2020 14:52:37 +0000 https://news.julien-anne.fr/?p=181 Dans ce tutoriel nous allons voir comment installer et configurer Let’s encrypt pour votre application Django sur un serveur debian 10.

Les pré-requis

Installons les dépendances nécessaires à Let’s encrypt

Afin de simplifier les commandes toutes les instructions suivantes sont à réaliser avec les droits root.

Pour utiliser Let’s encrypt sur notre serveur nous allons ajouter une source de données pour le gestionnaire de paquets apt, pour cela éditer le fichier /etc/apt/sources.list et ajouter en fin de fichier la ligne suivante :

deb http://ftp.debian.org/debian buster-backports main

Lancer ensuite les 2 commandes suivantes afin de respectivement mettre à jour la liste des paquets disponibles et installer le paquet certbot nécessaire pour simplifier l’installation de certificats Let’s encrypt :

apt update
apt install python-certbot-apache -t buster-backports

Mise en place de notre certificat ssl et particularité avec les instructions WSGI

Un petit point sur le fonctionnement du paquet certbot, afin de ne pas perdre vos configurations initiales, la commande certbot réalise une copie de votre virtualhost (port 80 – http) avant de réaliser des modifications afin de le passer en port 443 – https, ensuite en fonction des réponses que vous fournirez à la commande certbot ce dernier modifiera votre virtualhost (port 80) pour réaliser une redirection automatique vers le port 443 ou non.

Le souci que j’ai rencontré est que certaines directives dans notre virtualhost (port 80) ne peuvent être présentes et actives qu’une seule fois sur la totalité des virtualhosts et les directives WSGI font parties de ces directives, la duplication du virtualhost (port 80) entraîne donc une erreur pour Apache2 si nous ne prenons pas garde avant d’utiliser certbot.

Nettoyage de notre virtualhost (port 80 – http)

Pour nettoyer notre virtualhost (port 80), nous allons dans un premier temps commenter, avec un # en début de ligne, les directives WSGI suivantes : WSGIDaemonProcess, WSGIProcessGroup, WSGIScriptAlias

A partir de ce moment là si vous redémarrez votre apache2, votre application Django ne fonctionnera plus. Ne vous inquiétez pas nous allons remettre cela en ordre rapidement.

Demandons maintenant à certbot de nous générer et installer un certificat SSL

Pour cela rien de plus simple, en root, lancer la commande suivante (attention les crochets sont là seulement pour indiquer que vous pouvez précisez votre nom de domaine avec et sans www si vous souhaitez un certificat pour les 2, dans le cas où vous êtes sur un sous domaine la partie entre crochets et les crochets est à supprimer) :

certbot --apache -d votre_nom_de_domaine [-d www.votre_nom_de_domaine]

Si c’est votre premier certificat généré par certbot vous devrez répondre à quelques questions :

  1. Un email de contact
  2. A ou D pour indiquer si vous êtes d’accord avec les termes de la licence ou pas (A pour Agree et D pour Disagree)
  3. Y ou N pour indiquer si vous désirez partager votre email avec certbot

Enfin dans tous les cas (premier certificat ou non) vous devrez répondre sur le choix de la redirection automatique entre le http et le https, le choix 2 permet cette redirection.

Certbot va ensuite communiquer avec les serveurs de Let’s encrypt afin de générer les certificats demandés et les installer sur votre serveur et les configurer dans votre virtualhost (c’est beau l’automatisation), et tout ceci après avoir certifié que vous possédez bien le nom de domaine mentionné et que ce dernier pointe bien sur votre serveur.

Enfin certbot va recharger les configurations Apache2. Et là c’est le drame votre application n’est plus en ligne, rappelez vous nous avions commenté dans le virtualhost (port 80) les directives WSGI, elles le sont donc aussi dans notre virtualhost (port 443 – https).

Remettons en ligne notre projet Django en https

Nous devons donc maintenant dé-commenter ces 3 directives WSGIDaemonProcess, WSGIProcessGroup, WSGIScriptAlias dans le virtualhost copié puis modifié par certbot, ce virtualhost prend le même nom que votre virtualhot (port 80) suivi de -le-ssl.conf

Ensuite nous pouvons vérifier le bon état de l’art de nos virtualhosts avec : apache2ctl configtest

Si tout est au vert, lancer systemctl restart apache2

Enfin afin de vérifier sans rien modifier la possibilité du renouvellement vous pouvez lancer : certbot renew --dry-run

Pour information vous pouvez retrouver le script de mise à jour automatique du certificat dans le fichier /etc/cron.d/certbot, ce fichier permet de lancer très régulièrement la vérification de la date d’expiration du certificat et ainsi faire le renouvellement du certificat si nécessaire

Parfait nous arrivons au bout de notre tutoriel car nous avons dorénavant un projet Django qui tourne sur un serveur debian 10 avec apache2 et son module WSGI, tout ceci derrière un certificat Let’s encrypt auto-renouvelé. Si vous souhaitez revoir des étapes de ce tutoriel, rendez-vous sur le sommaire du tutoriel pour continuer votre lecture.

Image par Tumisu de Pixabay

]]>
181
Mise en production de notre projet Django sur une Debian 10 – Apache https://news.julien-anne.fr/mise-en-production-de-notre-projet-django-sur-une-debian-10-apache/ https://news.julien-anne.fr/mise-en-production-de-notre-projet-django-sur-une-debian-10-apache/#comments Thu, 14 May 2020 17:14:10 +0000 https://news.julien-anne.fr/?p=152 Dans ce tutoriel nous allons voir comment mettre en production un projet Django sur un serveur debian 10 avec Apache.

Les pré-requis

Configurons le serveur web apache2 pour notre projet Django

Nous avons donc un serveur web apache2 qui est installé sur le serveur, nous allons maintenant créer le virtualhost associé pour rendre accessible notre projet mais avant cela nous avons besoin d’un module spécifique WSGI.

Pour installer ce module rien de plus simple, en root lancer la commande suivante :

apt install libapache2-mod-wsgi-py3

Éditer maintenant un virtualhost /etc/apache2/sites-available/mon-site.conf et mettre les directives suivantes.

<VirtualHost *:80>
# Ne pas mettre cette directive si vous n'avez pas de nom de domaine et que vous accéder à votre serveur par ip
ServerName mon-nom-de-domaine 

# Les 4 lignes suivantes permettent de servir des fichiers dits statiques images, css, js, ...
Alias /static /opt/django-deploy-production-example/static
<Directory /opt/django-deploy-production-example/static>
Require all granted
</Directory>

<Directory /opt/django-deploy-production-example/djangoexample>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

WSGIDaemonProcess djangoexample python-home=/opt/django-deploy-production-example/venv python-path=/opt/django-deploy-production-example
WSGIProcessGroup djangoexample
WSGIScriptAlias / /opt/django-deploy-production-example/djangoexample/wsgi.py
</VirtualHost>

Il nous faut maintenant donner les bons droits sur les dossier pour le groupe www-data

chmod 775 /opt/django-deploy-production-example/
chown :www-data /opt/django-deploy-production-example

Activons maintenant ce nouveau virtualhost avec la commande suivante a2ensite mon-site puis systemctl restart apache2.

Ok donc à ce moment là nous avons un projet qui tourne sur un serveur debian 10 avec apache2 et son module WSGI. Passons à la suite. Rendez-vous sur le sommaire du tutoriel pour continuer votre lecture.

Image par Gerd Altmann de Pixabay

]]>
https://news.julien-anne.fr/mise-en-production-de-notre-projet-django-sur-une-debian-10-apache/feed/ 1 152
Environnement pour un projet django sur un serveur debian 10 https://news.julien-anne.fr/environnement-pour-un-projet-django-sur-un-serveur-debian-10/ https://news.julien-anne.fr/environnement-pour-un-projet-django-sur-un-serveur-debian-10/#comments Mon, 04 May 2020 18:18:25 +0000 https://news.julien-anne.fr/?p=88 Dans ce tutoriel nous allons voir comment mettre en place l’environnement nécessaire à l’hébergement d’un projet django sur un serveur debian 10.

Les pré-requis

  • Un serveur debian 10 installé (en vm ou chez un hébergeur) avec une connexion ssh opérationnel et les droits root
  • Un projet Django que vous avez récupéré et uploadé sur le serveur dans le dossier /opt/django-deploy-production-example, pour le tutoriel nous prendrons ce projet : https://gitlab.com/julienanne/django-deploy-production-example

Installation des éléments nécessaires

Pour plus de simplicité toutes les commandes seront exécutées en tant qu’utilisateur root bien évidemment vous pouvez les exécuter à travers sudo si vous n’avez pas accès à l’utilisateur root.

Commençons par installer pip pour Python3 et ensuite le package virtualenv qui va nous permettre d’isoler pour chaque projet python un environnement spécifique.

apt install python3-pip
pip3 install virtualenv

Mise en place de l’environnement python

Maintenant rendons nous dans le dossier /opt/django-deploy-production-example pour créer et activer l’environnement du projet.

cd /opt/django-deploy-production-example
virtualenv venv
source venv/bin/activate

et pour vérifier que l’environnement est bien activé, vous devez voir le nom de l’environnement ici venv devant le prompt et vous pouvez aussi tapez pip list cette liste devrait être peu fournie mais bien présente. Maintenant installons les packages qui sont en dépendances (la liste est dans le fichier requirements.txt) et notamment Django avec la commande suivante.

pip install -r requirements.txt

Et avec un pip list vous verrez de nouveaux paquets installés.

A partir de là votre projet est opérationnel, vous pouvez le voir en lançant la commande suivante.

./manage.py runserver

Cela va lancé le serveur interne de django prévu pour le développement sur le port 8000, à vous maintenant de vous rendre sur l’url suivante http://IP_SERVEUR:8000 et vérifier que vous obtenez bien la page d’accueil, dans notre cas le contenu est

Hello, world 
Welcome to your first django application in production mode

Vous pouvez aussi vérifier que le super utilisateur est bien présent en vous rendant sur l’url suivante http://IP_SERVEUR:8000/admin/ le login est admin et le mot de passe adminadmin

Ok donc à ce moment là nous avons un projet qui tourne avec une base sqlite3 et en mode standalone. Passons à la suite. Rendez-vous sur le sommaire du tutoriel pour continuer votre lecture.

Image par Brian Ego de Pixabay

]]>
https://news.julien-anne.fr/environnement-pour-un-projet-django-sur-un-serveur-debian-10/feed/ 3 88
Tutoriel Django MySql Debian 10 Apache2 Let’s Encrypt Gitlab https://news.julien-anne.fr/tutoriel-django-mysql-debian-10-apache2-lets-encrypt-gitlab/ https://news.julien-anne.fr/tutoriel-django-mysql-debian-10-apache2-lets-encrypt-gitlab/#comments Mon, 04 May 2020 18:18:21 +0000 https://news.julien-anne.fr/?p=77 Ce tutoriel va être sur une série d’articles avec pour chaque article un objectif défini, l’idée principale de ce tutoriel sera de mettre en production un code source python réalisé avec Django et une base de données MySql, versionné par Git et « stocké » sur Gitlab, sur un serveur Debian 10 avec Apache2 et le module WSGI et enfin le ssl de ce projet avec Let’s Encrypt. Ok il y a un peu de travail.

Sur ce premier article de la série, nous allons principalement retrouver les pré-requis avant de se lancer et le sommaire pointant sur chaque partie individuelle de ce tutoriel, ainsi qu’une courte description pour chaque partie. Les différentes parties de ce tutoriel sortiront au fur et à mesure, en commençant par les parties à plus fortes valeurs ajoutées 😉 pour les parties en constructions j’essaierai de trouver un tutoriel déjà présent sur Internet.

Les pré-requis

Il va nous falloir différents éléments pour mener à bien ce tutoriel :

Sommaire

Chaque partie est indépendante mais le tout fera un tutoriel assez complet. Bonne lecture.

Image par Claire05 de Pixabay

]]>
https://news.julien-anne.fr/tutoriel-django-mysql-debian-10-apache2-lets-encrypt-gitlab/feed/ 5 77