gwift-book/source/production/environment.rst

124 lines
3.4 KiB
ReStructuredText
Raw Normal View History

2016-04-26 16:26:56 +02:00
2016-04-27 08:29:16 +02:00
*************
Environnement
*************
2016-04-26 16:26:56 +02:00
Préparation
===========
2016-04-27 08:29:16 +02:00
On prépare l'environement pour accueillir notre application Django. On considère que le serveur est un système GNU/Linux, basé sur une distribution Debian ou Ubuntu. Si vous vous basez sur un autre système d'exploitation ou une autre distribution, adaptez en fonction.
2016-04-26 16:26:56 +02:00
2016-04-27 08:29:16 +02:00
Il faut d'abord rajouter certains paquets qui seront nécessaires pour compiler certains module Python:
2016-04-26 16:26:56 +02:00
.. code-block:: shell
$$$ aptitude install libpq-dev python3-dev
On créé un utilisateur dédié, pour limiter les accès au serveur dans le cas où notre application serait piratée.
.. code-block:: shell
$$$ groupadd --system webapps
$$$ useradd --system --gid webapps --shell /bin/bash --home /webapps/gwift gwift
2016-04-27 08:29:16 +02:00
Ensuite, on crée le repertoire où se trouvera notre application et on lui attribue le bon utilisateur:
2016-04-26 16:26:56 +02:00
.. code-block:: shell
$$$ mkdir -p /webapps/gwift
$$$ chown gwift:webapps /webapps/gwift
Puis on crée notre environement virtuel:
.. code-block:: shell
$$$ su - gwift
gwift@gwift:~$ mkvirtualenv -p /usr/bin/python3 gwift
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in gwift/bin/python3
Also creating executable in gwift/bin/python
Installing setuptools, pip...done.
(gwift)gwift@gwift:~$
On peut maintenant cloner notre projet:
.. code-block:: shell
(gwift)gwift@gwift:~$ git clone git@framagit.org:Grimbox/gwift.git
Et installer les dépendances:
.. code-block:: shell
(gwift)gwift@gwift:~$ pip install -r requirements/production.txt
2016-04-27 08:29:16 +02:00
Le fichier ``production.txt`` contient les librairies pour gunicorn et PostgreSQL:
2016-04-26 16:26:56 +02:00
.. code-block:: txt
-r base.txt
gunicorn
psycopg2
Configuration
=============
Il ne nous reste plus qu'à mettre à jour la DB. On commance par créer le fichier de configuration de l'application en production:
.. code-block:: shell
(gwift)gwift@gwift:~$ touch gwift/gwift/settings/local.py
Et le contenu de local.py, avec la clé secrète et les paramètres pour se connecter à la DB:
.. code-block:: python
from .production import *
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'strong_secret_key'
# Allowed host needed to be defined in production
ALLOWED_HOSTS = ["sever_name.com", "www.sever_name.com"]
2016-04-26 16:26:56 +02:00
# DB
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'gwift',
'USER': 'gwift_user',
'PASSWORD': 'gwift user password',
'HOST': 'localhost',
'PORT': '', # Set to empty string for default.
}
}
Finalement, on peut mettre à jour la DB et créer un super utilisateur:
.. code-block:: shell
(gwift)gwift@gwift:~$ python manage.py migrate
2016-04-27 19:54:58 +02:00
(gwift)gwift@gwift:~$ python manage.py createsuperuser
2016-04-26 16:26:56 +02:00
Test
====
2016-04-27 08:29:16 +02:00
On peut tester si tout fonctionne bien en lançant le serveur avec Django:
2016-04-26 16:26:56 +02:00
.. code-block:: shell
(gwift)gwift@gwift:~$ python manage.py runserver sever_name.com:8000
Et en se rendant sur server_name.com:8000/admin, on obtient:
.. image:: production/admin_without_static.png
2016-04-26 16:26:56 +02:00
:align: center
2016-04-27 19:54:58 +02:00
Comme on peut le voir, il n'y a pas de mise en forme de la page car les fichiers statics ne sont pas encore servis. Ils le seront par Nginx.