1
0
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:
sam
2012-05-18 22:18:40 +02:00
parent 97935e51d3
commit a3dcbe9c2b
40 changed files with 1100 additions and 149 deletions

View File

@ -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

View File

@ -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.

View File

@ -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