Setup de Django avec Apache

C’était franchement pas le truc le plus facile, mais ça y est. Je peux faire tourner Django avec Apache. C’était vraiment pour le style, parce que tant que vous êtes en dev, il est largement préférable d’utiliser runserver, le serveur web disponible avec Django. Pourquoi ?

Et bien parce qu’il faut recharger apache à chaque modification de fichier. En discutant sur IRC #django-fr c’est ce que j’avais pensé lire, et ça s’est confirmé quand j’ai réussit à faire fonctionner le bouzin. Mais de toute façon notre application va partir en production, donc autant savoir quoi faire.

Apache

Au risque de dire quelques bêtises, l’équivalent de fast-cgi quand on veut pythonner, c’est wsgi. Pour ceux qui veulent en savoir plus, je vous recommande l’article de Sam et Max qui traite du sujet. Il faut donc installer le module apache correspondant à votre distribution GNU/Linux. Ensuite, il faut activer le module en modifiant le httpd.conf et en ajoutant :

LoadModule wsgi_module modules/mod_wsgi.so
#ça peut changer en fonction de votre distribution aussi. Ici on est sur archlinux, donc Apache est brut.

Vu le temps que ça m’a pris d’avoir le bon template pour avoir un vhost qui fonctionne, dans le virtualenv, avec les bons chemins, ce n’est pas une mauvaise idée de t’en faire cadeau :

La homepage : première app du projet

On rembobine

Dans le billet précédent, je pensais que pour utiliser django-dotenv, il fallait importer la fonction parse_dotenv pour l’utiliser en précisant la clé désirée, et bien padutou. En fait, cette lib ajoute les variables d’environnement, pour qu’elles soient disponibles via votre système. Donc quand on a configuré le package, il faut simplement utiliser ce que Python propose pour les lire :

os.getenv('DBCONNECTION')

La homepage

Il faut donc créer une app pour la home. Donc :

python manage.py startapp home

Et on va aller modifier le fichier url comme ceci pour faire pointer / vers la méthode index de la vue home :

from django.conf.urls import url
from django.contrib import admin
from home import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', views.index)
]

Ensuite on va créer un layout de base à étendre, et insérer le hello world dans le template qui va afficher la page d’accueil. En tout cas, je commence à bien saisir la structure, et ce système de template, même si à première vue est redondant, est en fait une très bonne solution pour la surcharge, et avec ce que j’ai en tête, ça peut être très utile.

La prochaine fois, on verra comment préparer la stack front-end, avec webpack et npm. En attendant, si vous voulez le détail, c’est par ici .

metrogeek

Comments 1

Laisser un commentaire