Blog

installer django dans un jails FreeBSD partie 1

Ce tutoriel montre comment déployer le framework django dans un jail FreeBSD 11.2 dans l’environnement virtuel python. Pour ce faire, nous allons utiliser le gestionnaire de base de données(SGBD) postgresql 10 avec l’extension postgis. Et, dans un prochain billet, le tout sera déployé avec apache mod-wsgi.

 

Les prérequis de ce tutoriel est d’avoir installer FreeBSD et d’avoir installer le gestionnaire de jail warden.

installation de FreeBSD

warden

 

On cré le jail

 

# warden create django –startauto

# warden stop django

#warden set ipv4 django adresse.ip.locale.xx

#warden set flags django allow.sysvipc=true

# warden start django

# warden chroot django

 

Une fois à l’intérieur du jail on télécharge l’arbre de port.

 

# portsnap fetch extract

 

on installe l’éditeur texte nano, postgresql10 et python36

 

# pkg install nano postgresql10-client postgresql10-server python36

 

on configure postgresql

 

# sysrc postgresql_enable=yes

# service postgresql initdb

# service postgresql start

 

ensuite on rend accessible la lecture de la base de donnée depuis l’adresse local

 

# nano var/db/postgres/data10/pg_hba.conf

 

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             adresse.ip.locale.xx/32               md5
# IPv6 local connections:
host    all             all             ::1/128                 md5



 

puis

# nano var/db/postgres/db/data10/postgresql.conf

on se rend à la ligne listen puis on la transforme de cette manière

listen = « * »

# service postgresql restart

Maintenant, on s’occupe de postgis. Malheureusement sous FreeBSD, postgis vient avec postgresql95. Il faut donc le compiler. Il faut aussi noter que pour faire fonctionner django, nous n’avons pas besoin explicitement de postgis. Cependant, si vous voulez lui ajouter des composante de cartographie poussé et utiliser géodjango, vous avez besoin de postgis. Étant géographe de formation, j’installe toujours par défaut postgis. On ne sait jamais si nous en aurons besoin ultérieurement et il n’en coûte pas plus cher en ressource.


 

Pour pouvoir bénéficier de postGIS combiné à postgresql

# nano /etc/make.conf

DEFAULT_VERSIONS+=pgsql=10

# nano /usr/ports/MK/bsd.default-version.mk

set PGSQL_DEFAULT?= 10

# cd /usr/ports/databases/postgis24 && make install clean

Postgis s’installera par compilation. Si ce processus est peu coûteux en ressource, il est cependant plus coûteux en temps. Allez prendre un café et revenez plus tard! Une fois installer, nous créons un utilisateur normale dans le jail. Cet utilisateur n’aura aucun droit d’administration si ce n’est que de modifier le contenue de ses propres fichiers. # adduser vous remplissez alors des paramètre semblable à ce qu’on a fait pour l’installation du système de base sans toutefois lui donner de groupe wheel. Maintenant, nous paramétrons la base de données postgresql. Vous modifiez la configuration à votre goût.

# su – postgresql

$ psql

postgre # CREATE BATABASE django;

postgres # CREATE USER django WITH PASSWORD ‘django’;

postgre # ALTER ROLE django SET client_encoding TO utf8;

postgre # ALTER ROLE django SET default_transaction_isolation TO read committed;

postgre # GRANT ALL PRIVILEGES ON DATABASE django TO django;

postgres # \q

$ psql django

postgres # CREATE EXTENSION postgis;

postgres # CREATE EXTENSION postgis_topology;

postgres # \q

$ exit

Maintenant, on se dirige vers le dossier de notre utilisateur. Dans mon cas sebastien.


 

# cd /home/sebastien

on cré le répertoire django

# mkdir django

on cré l’environnement virtuel python

# python3.6 -m venv venv

on active l’environnement virtuel

# source venv/bin/activate.csh

on met à jour l’outil pip, on install django et le connecteur python de la base de donnée postgresql

venv # pip install –upgrade pip

venv# pip install django psycopg2



 

on cré notre projet django

venv # django-admin startproject myproject

on donne la propriété du projet à notre utilisateur si l’on veut modifier notre projet via ssh ou sftp à partir de notre réseau local.

Venv # chown -R sebastien myproject

il est à noter que vous aurez à lancer cette commande à chaque fois que vous créerez une application dans votre projet. Il s’agit d’une mesure de sécurité peut-être chiante, mais gérable.

Vous vous déplacez dans votre projet

venv # cd myproject

dans ce dossier vous retrouvez normalement un fichier manage.py et un autre dossier portant le même nom que votre projet(myproject)

on édite le fichier settings.py

puis on modifie la section de la base de donnée


 

 DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'django',
        'USER': 'django',
        'PASSWORD': 'django',
        'HOST': 'localhost',
        'PORT': '',
    }
}

vous enregistrez les modification puis retournez à votre terminal 

venv # /home/sebastien/django/myproject/# python manage.py runserver

La note en rouge inscrive que vous devez faire une migration de base de donnée. Dans notre cas nous en tiendrons pas compte. On ouvre notre navigateur et entrons l’adresse adresse.ip.local.xx:8000.


 

Nous devrions y voire une jolie petite fusée signe que notre installation de base a fonctionné.

Le tutoriel fini ici. Sous peu, je vous montrerais comment déployer django avec apache mod-wsgi. Pour toute question: sebastien.douville@fexcomm.ca


 


Tous les titres


Bachelier en Géographie depuis 2009
Certificat en administration des affaire en 2016
12 ans d'expérience en système d'information géographique
10 ans d'expérience avec les systèmes d'exploitation linux
6 ans d'expérience avec les Sytèmes d'exploitation BSD (UNIX)
10 ans d'expérience en programmation web
5 ans d'expérience avec les éditeurs de contenue Wordpress et Drupal.
2 ans d'expérience avec le framework django.
3 ans d'expérience en Sytème de gestion (ERP/CRM)
10 ans de connaissance en langage python
2 ans de loisir avec Raspberry py
2 ans d'expérience avec les systèmes ip-pbx
Fondateur et proprétaire de Fexcomm, informatique de gestion en 2017
Pour m'embaucher