mirror of
https://github.com/Tygs/0bin.git
synced 2023-08-10 21:13:00 +03:00
Documentation is now exhaustive and zerobin is apache friendly
This commit is contained in:
@ -2,8 +2,7 @@
|
||||
Installation avec Apache
|
||||
=========================
|
||||
|
||||
Apache est plus lent, plus lourd, et plus complexe à mettre en oeuvre que Nginx.
|
||||
Mais il est aussi beaucoup plus connu:
|
||||
Apache est plus lourd que Nginx mais il est aussi beaucoup plus connu:
|
||||
|
||||
- plus de gens pourront vous aider les fora;
|
||||
- votre hébergeur propose surement Apache;
|
||||
@ -34,9 +33,67 @@ l'installation du modle Apache mod_wsgi. Si vous ne savez pas comment faire,
|
||||
ou si vous ne pouvez pas le faire (par exemple sur un hébergement mutualisé
|
||||
qui ne le propose pas), il vous faudra choisir l'installation CGI.
|
||||
|
||||
Premièrement, assurez-vous d'avoir mod_wsgi installé et chargé (en tant qu'admin)::
|
||||
|
||||
Mod_CGI
|
||||
==========
|
||||
a2enmod wsgi
|
||||
|
||||
Ceci va activer mod_wsgi. Si cela ne marche pas, il faudra l'installer d'abord (
|
||||
sur ubuntu, le paquet est libapache2-mod-wsgi)
|
||||
|
||||
Ensuite, il faut créer un fichier de configuration Apache, généralement dans
|
||||
/etc/apache/sites-available/. Nommez le zerobin::
|
||||
|
||||
<VirtualHost *:80>
|
||||
ServerName www.votersiteweb.com
|
||||
|
||||
WSGIDaemonProcess zerobin user=www-data group=www-data processes=1 threads=5
|
||||
WSGIScriptAlias / /chemin/vers/zerobin/app.wsgi
|
||||
|
||||
<Directory /chemin/vers/zerobin/>
|
||||
WSGIProcessGroup zerobin
|
||||
WSGIApplicationGroup %{GLOBAL}
|
||||
Order deny,allow
|
||||
Allow from all
|
||||
</Directory>
|
||||
</VirtualHost>
|
||||
|
||||
Activez le site web (en tant qu'admin)::
|
||||
|
||||
a2ensite zerobin
|
||||
|
||||
Et rechargez la configuration d'Apache (en tant qu'admin)::
|
||||
|
||||
service apache2 reload
|
||||
|
||||
Vous aurez noté que l'on fait référence à un fichier nommé app.wsgi. C'est un
|
||||
fichier Python qui créé l'application qu'Apache va utiliser pour lancer le
|
||||
processus Python::
|
||||
|
||||
import os, sys
|
||||
|
||||
# s'assurer que le module zerobin est dans le PYTHON PATH et importable
|
||||
ZEROBIN_PARENT_DIR = os.path.dirname(os.path.dirname(__file__))
|
||||
sys.path.insert(0, ZEROBIN_PARENT_DIR)
|
||||
|
||||
# créer le wsgi callable
|
||||
from zerobin.routes import get_app
|
||||
settings, application = get_app(compressed_static=True)
|
||||
|
||||
Vous pouvez bien sûr créer le votre, puisque la fonction `get_app` et le seul
|
||||
moyen de passer des paramètres à 0bin avec cette installation. Cela peut se
|
||||
faire en créant un fichier de configuration et en le passant à la fonction::
|
||||
|
||||
import os, sys
|
||||
|
||||
ZEROBIN_PARENT_DIR = '/chemin/du/dossier/parent/de/zerobin'
|
||||
sys.path.insert(0, ZEROBIN_PARENT_DIR)
|
||||
|
||||
from zerobin.routes import get_app
|
||||
settings, application = get_app(settings_file='/path/to/settings.py')
|
||||
|
||||
CGI
|
||||
===
|
||||
|
||||
Vous pouvez aussi utiliser CGI, mais nous n'avons pas encore eu le temps de
|
||||
couvrir cette partie. Contactez nous si vous avez besoin de l'utiliser.
|
||||
|
||||
Cette installation est considérée comme relativement lente. Mais vous bénéficierez
|
||||
tout de même de la robustesse d'Apache
|
@ -55,10 +55,53 @@ nous ne couvrirons pas cette partie.
|
||||
Vous devez créer une fichier de configuration Nginx pour 0bin. Sous GNU/Linux,
|
||||
on les mets en général dans /etc/nginx/conf.d/. Nommez le zerobin.conf.
|
||||
|
||||
Le fichier minimal pour faire tourner le site est:
|
||||
|
||||
Mais on peut apporter plusieurs améliorations de performance:
|
||||
Le fichier de configuration minimal pour faire tourner le site est::
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name www.votresiteweb.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:8000;
|
||||
}
|
||||
}
|
||||
|
||||
`proxy_pass` transmet les requêtes aux processus Python. Bien entendu le
|
||||
port doit correspondre à celui utilisé par 0bin.
|
||||
|
||||
On peut apporter plusieurs améliorations à l'expérience utilisateur::
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name www.votresiteweb.com;
|
||||
|
||||
location /favicon.ico {
|
||||
root /chemin/vers/zerobin/static/img;
|
||||
}
|
||||
|
||||
location /static/ {
|
||||
root /chemin/vers/zerobin;
|
||||
gzip on;
|
||||
gzip_http_version 1.0;
|
||||
gzip_vary on;
|
||||
gzip_comp_level 6;
|
||||
gzip_proxied any;
|
||||
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
|
||||
gzip_buffers 16 8k;
|
||||
# Disable gzip for certain browsers.
|
||||
gzip_disable ~@~\MSIE [1-6].(?!.*SV1)~@~];
|
||||
expires modified +90d;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://zerobin_cherrypy;
|
||||
}
|
||||
}
|
||||
|
||||
Nginx sert maintenant le favicon ainsi que les fichiers statiques,
|
||||
on a ajouté une date d'expiration dans les en-têtes HTTP
|
||||
et on s'assure que la compression gzip est utilisée pour les navigateurs
|
||||
qui la supporte.
|
||||
|
||||
|
||||
|
||||
|
@ -1,3 +1,75 @@
|
||||
====================
|
||||
Utiliser supervisor
|
||||
====================
|
||||
====================
|
||||
|
||||
Supervisor est un très bon moyen de gérer des processus Python. Nous n'allons
|
||||
pas couvrir son installation (qui la plupart du temps se résume à
|
||||
apt-get install supervisor ou pip install supervisor), mais voici un rapide
|
||||
résumé de comment l'utiliser:
|
||||
|
||||
Créez un fichier de configuration nommé supervisor.ini::
|
||||
|
||||
[unix_http_server]
|
||||
file=/tmp/supervisor.sock;
|
||||
|
||||
[supervisorctl]
|
||||
serverurl=unix:///tmp/supervisor.sock;
|
||||
|
||||
[rpcinterface:supervisor]
|
||||
supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface
|
||||
|
||||
[supervisord]
|
||||
logfile=/tmp/zerobin.log
|
||||
logfile_maxbytes=50MB
|
||||
logfile_backups=2
|
||||
loglevel=trace
|
||||
pidfile=/tmp/supervisord.pid
|
||||
nodaemon=false
|
||||
minfds=1024
|
||||
minprocs=200
|
||||
user=zerobin
|
||||
|
||||
[program:zerobin]
|
||||
command=/chemin/vers/zerobin/zerobin.py --port 80 --compressed-static
|
||||
directory=/chemin/vers/zerobin/
|
||||
environment=PYTHONPATH='/chemin/vers/zerobin/'
|
||||
user=zerobin
|
||||
autostart=true
|
||||
autorestart=true
|
||||
|
||||
Les 4 premières entrées sont juste de la configuration standard et vous pouvez
|
||||
les copier telles qu'elles.
|
||||
|
||||
La dernière entrée définie un processus (il peut y en avoir plusieurs)
|
||||
que supervisor doit gérer.
|
||||
|
||||
Cela veut dire qu'il va lancer la commande::
|
||||
|
||||
/chemin/vers/zerobin/zerobin.py --port 80 --compressed-static
|
||||
|
||||
Et ceci dans le dossier, avec l'environnement et l'utilisateur défini, le tout
|
||||
en arrière plan en tant que daemon.
|
||||
|
||||
`autostart` et `autorestart` permettent simplement de le lancer et de l'oublier:
|
||||
supervisor redémarera le processus automatiquement en cas d'arrêt impromptu.
|
||||
|
||||
La première fois que vous lancez supervisor, passez lui le fichier de configuration::
|
||||
|
||||
supervisord -c /chemin/vers/supervisor.ini
|
||||
|
||||
Ensuite vous pouvez gérer les processus avec::
|
||||
|
||||
supervisorctl -c /chemin/vers/supervisor.ini
|
||||
|
||||
Cela va démarrer un shell depuis lequel vous pouvez faire un start/stop/restart
|
||||
sur le service.
|
||||
|
||||
Toutes les erreurs seront logguées dans /tmp/zerobin.log.
|
||||
|
||||
|
||||
.. Note::
|
||||
|
||||
Si vous avez installé zerobin dans un virtualenv, vous devriez définir la
|
||||
commande pour qu'elle s'éxécute depuis le virtualenv::
|
||||
|
||||
command=/chemin/vers/le/virtualenv/bin/zerobin --port 80 --compressed-static
|
Reference in New Issue
Block a user