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 @@
|
||||
Apache setup
|
||||
=============
|
||||
|
||||
Apache is slower, heavier and more complicated to setup than Nginx. But it's also
|
||||
much more famous:
|
||||
Apache is heavier than Nginx. But it's also much more famous:
|
||||
|
||||
- more people will be able to help you on forums;
|
||||
- your hosting will most probably support Apache;
|
||||
@ -33,7 +32,65 @@ the setup of the Apache module mod_wsgi. If you don't know how to do this, or
|
||||
if you can't do it (E.G: your hosting won't let you), you need to go for
|
||||
the CGI setup.
|
||||
|
||||
==========
|
||||
First, make sure you have mod_wsgi installed and enable by running (as admin)::
|
||||
|
||||
This setup is considered as slow, but you will still benefit from Apache
|
||||
robustness.
|
||||
a2enmod wsgi
|
||||
|
||||
This enable mod_wsgi. It it doesn't, install it first (on ubuntu, the package
|
||||
is libapache2-mod-wsgi).
|
||||
|
||||
Then create an Apache configuration file, usually in /etc/apache/sites-available/.
|
||||
Name it zerobin::
|
||||
|
||||
<VirtualHost *:80>
|
||||
ServerName www.yourwebsite.com
|
||||
|
||||
WSGIDaemonProcess zerobin user=www-data group=www-data processes=1 threads=5
|
||||
WSGIScriptAlias / /path/to/zerobin/app.wsgi
|
||||
|
||||
<Directory /path/to/zerobin/zerobin/>
|
||||
WSGIProcessGroup zerobin
|
||||
WSGIApplicationGroup %{GLOBAL}
|
||||
Order deny,allow
|
||||
Allow from all
|
||||
</Directory>
|
||||
</VirtualHost>
|
||||
|
||||
Activate the website (as admin)::
|
||||
|
||||
a2ensite zerobin
|
||||
|
||||
And reload the apache configuration (as admin)::
|
||||
|
||||
service apache2 reload
|
||||
|
||||
You'll note that we refer to a file named app.wsgi. It's a Python file
|
||||
creating the application Apache is going to use to start the Python process::
|
||||
|
||||
import os, sys
|
||||
|
||||
# make sure the zerobin module is in the PYTHON PATH and importable
|
||||
ZEROBIN_PARENT_DIR = os.path.dirname(os.path.dirname(__file__))
|
||||
sys.path.insert(0, ZEROBIN_PARENT_DIR)
|
||||
|
||||
# create the wsgi callable
|
||||
from zerobin.routes import get_app
|
||||
settings, application = get_app(compressed_static=True)
|
||||
|
||||
You can of course create your own, as the `get_app` function is the only
|
||||
way to pass settings to 0bin with this setup. You would do this by creating
|
||||
a configuration file and passing it to the function::
|
||||
|
||||
import os, sys
|
||||
|
||||
ZEROBIN_PARENT_DIR = '/path/to/zerobin/parent/dir'
|
||||
sys.path.insert(0, ZEROBIN_PARENT_DIR)
|
||||
|
||||
from zerobin.routes import get_app
|
||||
settings, application = get_app(settings_file='/path/to/settings.py')
|
||||
|
||||
CGI
|
||||
===
|
||||
|
||||
You can also run 0bin using CGI, but infortunaly we didn't have time to cover
|
||||
it yet. Please contact us if you ever get the need to use it.
|
@ -51,9 +51,51 @@ installing it.
|
||||
Vous must create a Nginx configuration file for 0bin. On GNU/Linux, they usually
|
||||
go into /etc/nginx/conf.d/. Name it zerobin.conf.
|
||||
|
||||
The minimal file to run the site is:
|
||||
The minimal configuration file to run the site is::
|
||||
|
||||
But you can make some adjustement to get better perfomances:
|
||||
server {
|
||||
listen 80;
|
||||
server_name www.yourwebsite.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:8000;
|
||||
}
|
||||
}
|
||||
|
||||
`proxy_pass` just passes the external request to the Python process.
|
||||
The port much match the one used by the 0bin process of course.
|
||||
|
||||
You can make some adjustements to get a better user experience::
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name www.yourwebsite.com;
|
||||
|
||||
location /favicon.ico {
|
||||
root /path/to/zerobin/static/img;
|
||||
}
|
||||
|
||||
location /static/ {
|
||||
root /path/to/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;
|
||||
}
|
||||
}
|
||||
|
||||
This make Nginx serve the favicon and static files, set the expire HTTP headers
|
||||
and make sure gzip compression is used with browsers that support it.
|
||||
|
||||
|
||||
|
||||
|
@ -1,15 +1,3 @@
|
||||
|
||||
|
||||
--host=STR
|
||||
|
||||
The host on which to listen for incomming request. Usually 127.0.0.1 to
|
||||
listen locally or 0.0.0.0 to listen from the outside.
|
||||
|
||||
Default: 127.0.0.1
|
||||
Setting file : HOST
|
||||
|
||||
|
||||
|
||||
============
|
||||
Options
|
||||
============
|
||||
|
@ -2,9 +2,9 @@
|
||||
Theming
|
||||
=======
|
||||
|
||||
0bin comes a complete theming support, but for now it's not well ingrated.
|
||||
0bin comes with a complete theming support, but for now it's not well integrated.
|
||||
|
||||
If you wish to create your own theme, you'll need to create template similar
|
||||
If you wish to create your own theme, you'll need to create templates similar
|
||||
to the ones in zerobin/view, and add the path to the director containing them
|
||||
to the settings file.
|
||||
|
||||
|
@ -1,3 +1,72 @@
|
||||
====================
|
||||
=================
|
||||
Using supervisor
|
||||
====================
|
||||
=================
|
||||
|
||||
Supervisor is a very nice way to manage you Python processes. We won't cover
|
||||
the setup (which is just apt-get install supervisor or pip install supervisor
|
||||
most of the time), but here is a quick overview on how to use it.
|
||||
|
||||
Create a configuration file named 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=/path/to/zerobin/zerobin.py --port 80 --compressed-static
|
||||
directory=/path/to/zerobin/
|
||||
environment=PYTHONPATH='/path/to/zerobin/'
|
||||
user=zerobin
|
||||
autostart=true
|
||||
autorestart=true
|
||||
|
||||
The 4 first entries are just boiler plate to get you started, you can copy
|
||||
them verbatim.
|
||||
|
||||
The last one define one (you can have many) process supervisor should manage.
|
||||
|
||||
It means it will run the command::
|
||||
|
||||
/path/to/zerobin/zerobin.py --port 80 --compressed-static
|
||||
|
||||
In the directory, with the environnement and the user you defined.
|
||||
|
||||
This command will be ran as a daemon, in the background.
|
||||
|
||||
`autostart` and `autorestart` just make it fire and forget: the site will always be
|
||||
running, even it crashes temporarly or if you retart the machine.
|
||||
|
||||
The first time you run supervisor, pass it the configuration file::
|
||||
|
||||
supervisord -c /path/to/supervisor.ini
|
||||
|
||||
Then you can manage the process by running::
|
||||
|
||||
supervisorctl -c /path/to/supervisor.ini
|
||||
|
||||
It will start a shell from were you can start/stop/restart the service
|
||||
|
||||
You can read all errors that might occurs from /tmp/zerobin.log.
|
||||
|
||||
.. Note::
|
||||
|
||||
If you installed zerobin in a virtualenv, you may set the command
|
||||
to run directly from it::
|
||||
|
||||
command=/path/to/virtualenv/bin/zerobin --port 80 --compressed-static
|
@ -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
|
@ -27,12 +27,5 @@
|
||||
+-------------------------+--------------------------------+
|
||||
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`modindex`
|
||||
* :ref:`search`
|
||||
|
||||
.. _Signaler un bug: https://github.com/sametmax/0bin/issues
|
||||
.. _Report a bug: <https://github.com/sametmax/0bin/issues>
|
@ -53,8 +53,7 @@
|
||||
|
||||
<div class="section" id="apache-setup">
|
||||
<h1>Apache setup<a class="headerlink" href="#apache-setup" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Apache is slower, heavier and more complicated to setup than Nginx. But it’s also
|
||||
much more famous:</p>
|
||||
<p>Apache is heavier than Nginx. But it’s also much more famous:</p>
|
||||
<ul class="simple">
|
||||
<li>more people will be able to help you on forums;</li>
|
||||
<li>your hosting will most probably support Apache;</li>
|
||||
@ -79,9 +78,63 @@ interfacing: WSGI.</p>
|
||||
the setup of the Apache module mod_wsgi. If you don’t know how to do this, or
|
||||
if you can’t do it (E.G: your hosting won’t let you), you need to go for
|
||||
the CGI setup.</p>
|
||||
<hr class="docutils" />
|
||||
<p>This setup is considered as slow, but you will still benefit from Apache
|
||||
robustness.</p>
|
||||
<p>First, make sure you have mod_wsgi installed and enable by running (as admin):</p>
|
||||
<div class="highlight-python"><pre>a2enmod wsgi</pre>
|
||||
</div>
|
||||
<p>This enable mod_wsgi. It it doesn’t, install it first (on ubuntu, the package
|
||||
is libapache2-mod-wsgi).</p>
|
||||
<p>Then create an Apache configuration file, usually in /etc/apache/sites-available/.
|
||||
Name it zerobin:</p>
|
||||
<div class="highlight-python"><pre><VirtualHost *:80>
|
||||
ServerName www.yourwebsite.com
|
||||
|
||||
WSGIDaemonProcess zerobin user=www-data group=www-data processes=1 threads=5
|
||||
WSGIScriptAlias / /path/to/zerobin/app.wsgi
|
||||
|
||||
<Directory /path/to/zerobin/zerobin/>
|
||||
WSGIProcessGroup zerobin
|
||||
WSGIApplicationGroup %{GLOBAL}
|
||||
Order deny,allow
|
||||
Allow from all
|
||||
</Directory>
|
||||
</VirtualHost></pre>
|
||||
</div>
|
||||
<p>Activate the website (as admin):</p>
|
||||
<div class="highlight-python"><pre>a2ensite zerobin</pre>
|
||||
</div>
|
||||
<p>And reload the apache configuration (as admin):</p>
|
||||
<div class="highlight-python"><pre>service apache2 reload</pre>
|
||||
</div>
|
||||
<p>You’ll note that we refer to a file named app.wsgi. It’s a Python file
|
||||
creating the application Apache is going to use to start the Python process:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">sys</span>
|
||||
|
||||
<span class="c"># make sure the zerobin module is in the PYTHON PATH and importable</span>
|
||||
<span class="n">ZEROBIN_PARENT_DIR</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">__file__</span><span class="p">))</span>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">ZEROBIN_PARENT_DIR</span><span class="p">)</span>
|
||||
|
||||
<span class="c"># create the wsgi callable</span>
|
||||
<span class="kn">from</span> <span class="nn">zerobin.routes</span> <span class="kn">import</span> <span class="n">get_app</span>
|
||||
<span class="n">settings</span><span class="p">,</span> <span class="n">application</span> <span class="o">=</span> <span class="n">get_app</span><span class="p">(</span><span class="n">compressed_static</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>You can of course create your own, as the <cite>get_app</cite> function is the only
|
||||
way to pass settings to 0bin with this setup. You would do this by creating
|
||||
a configuration file and passing it to the function:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">sys</span>
|
||||
|
||||
<span class="n">ZEROBIN_PARENT_DIR</span> <span class="o">=</span> <span class="s">'/path/to/zerobin/parent/dir'</span>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">ZEROBIN_PARENT_DIR</span><span class="p">)</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">zerobin.routes</span> <span class="kn">import</span> <span class="n">get_app</span>
|
||||
<span class="n">settings</span><span class="p">,</span> <span class="n">application</span> <span class="o">=</span> <span class="n">get_app</span><span class="p">(</span><span class="n">settings_file</span><span class="o">=</span><span class="s">'/path/to/settings.py'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="cgi">
|
||||
<h2>CGI<a class="headerlink" href="#cgi" title="Permalink to this headline">¶</a></h2>
|
||||
<p>You can also run 0bin using CGI, but infortunaly we didn’t have time to cover
|
||||
it yet. Please contact us if you ever get the need to use it.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -95,6 +148,7 @@ robustness.</p>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">Apache setup</a><ul>
|
||||
<li><a class="reference internal" href="#mod-wsgi">Mod_wsgi</a></li>
|
||||
<li><a class="reference internal" href="#cgi">CGI</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -95,8 +95,48 @@ separate process let you do this without having to restart the server.</p>
|
||||
installing it.</p>
|
||||
<p>Vous must create a Nginx configuration file for 0bin. On GNU/Linux, they usually
|
||||
go into /etc/nginx/conf.d/. Name it zerobin.conf.</p>
|
||||
<p>The minimal file to run the site is:</p>
|
||||
<p>But you can make some adjustement to get better perfomances:</p>
|
||||
<p>The minimal configuration file to run the site is:</p>
|
||||
<div class="highlight-python"><pre>server {
|
||||
listen 80;
|
||||
server_name www.yourwebsite.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:8000;
|
||||
}
|
||||
}</pre>
|
||||
</div>
|
||||
<p><cite>proxy_pass</cite> just passes the external request to the Python process.
|
||||
The port much match the one used by the 0bin process of course.</p>
|
||||
<p>You can make some adjustements to get a better user experience:</p>
|
||||
<div class="highlight-python"><pre>server {
|
||||
listen 80;
|
||||
server_name www.yourwebsite.com;
|
||||
|
||||
location /favicon.ico {
|
||||
root /path/to/zerobin/static/img;
|
||||
}
|
||||
|
||||
location /static/ {
|
||||
root /path/to/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;
|
||||
}
|
||||
}</pre>
|
||||
</div>
|
||||
<p>This make Nginx serve the favicon and static files, set the expire HTTP headers
|
||||
and make sure gzip compression is used with browsers that support it.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -51,12 +51,7 @@
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
|
||||
<p>–host=STR</p>
|
||||
<p>The host on which to listen for incomming request. Usually 127.0.0.1 to
|
||||
listen locally or 0.0.0.0 to listen from the outside.</p>
|
||||
<p>Default: 127.0.0.1
|
||||
Setting file : HOST</p>
|
||||
<div class="section" id="options">
|
||||
<div class="section" id="options">
|
||||
<h1>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h1>
|
||||
<p>0bin’s behavior can be adjusted with options passed using a configuration
|
||||
file or directly using the command line. Some parameters are only available
|
||||
|
@ -53,8 +53,8 @@
|
||||
|
||||
<div class="section" id="theming">
|
||||
<h1>Theming<a class="headerlink" href="#theming" title="Permalink to this headline">¶</a></h1>
|
||||
<p>0bin comes a complete theming support, but for now it’s not well ingrated.</p>
|
||||
<p>If you wish to create your own theme, you’ll need to create template similar
|
||||
<p>0bin comes with a complete theming support, but for now it’s not well integrated.</p>
|
||||
<p>If you wish to create your own theme, you’ll need to create templates similar
|
||||
to the ones in zerobin/view, and add the path to the director containing them
|
||||
to the settings file.</p>
|
||||
<p>You’ll also need to copy static files from zerobin/static to a new direcotry
|
||||
|
@ -26,8 +26,8 @@
|
||||
<script type="text/javascript" src="../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../_static/doctools.js"></script>
|
||||
<link rel="top" title="0bin 0.1 documentation" href="../index.html" />
|
||||
<link rel="next" title="<no title>" href="theming.html" />
|
||||
<link rel="prev" title="Installing with Nginx" href="nginx_install.html" />
|
||||
<link rel="next" title="Theming" href="theming.html" />
|
||||
<link rel="prev" title="Nginx setup" href="nginx_install.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
@ -37,10 +37,10 @@
|
||||
<a href="../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="theming.html" title="<no title>"
|
||||
<a href="theming.html" title="Theming"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="nginx_install.html" title="Installing with Nginx"
|
||||
<a href="nginx_install.html" title="Nginx setup"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li><a href="../index.html">0bin 0.1 documentation</a> »</li>
|
||||
</ul>
|
||||
@ -53,6 +53,65 @@
|
||||
|
||||
<div class="section" id="using-supervisor">
|
||||
<h1>Using supervisor<a class="headerlink" href="#using-supervisor" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Supervisor is a very nice way to manage you Python processes. We won’t cover
|
||||
the setup (which is just apt-get install supervisor or pip install supervisor
|
||||
most of the time), but here is a quick overview on how to use it.</p>
|
||||
<p>Create a configuration file named supervisor.ini:</p>
|
||||
<div class="highlight-python"><pre>[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=/path/to/zerobin/zerobin.py --port 80 --compressed-static
|
||||
directory=/path/to/zerobin/
|
||||
environment=PYTHONPATH='/path/to/zerobin/'
|
||||
user=zerobin
|
||||
autostart=true
|
||||
autorestart=true</pre>
|
||||
</div>
|
||||
<p>The 4 first entries are just boiler plate to get you started, you can copy
|
||||
them verbatim.</p>
|
||||
<p>The last one define one (you can have many) process supervisor should manage.</p>
|
||||
<p>It means it will run the command:</p>
|
||||
<div class="highlight-python"><pre>/path/to/zerobin/zerobin.py --port 80 --compressed-static</pre>
|
||||
</div>
|
||||
<p>In the directory, with the environnement and the user you defined.</p>
|
||||
<p>This command will be ran as a daemon, in the background.</p>
|
||||
<p><cite>autostart</cite> and <cite>autorestart</cite> just make it fire and forget: the site will always be
|
||||
running, even it crashes temporarly or if you retart the machine.</p>
|
||||
<p>The first time you run supervisor, pass it the configuration file:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="n">supervisord</span> <span class="o">-</span><span class="n">c</span> <span class="o">/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">supervisor</span><span class="o">.</span><span class="n">ini</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Then you can manage the process by running:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="n">supervisorctl</span> <span class="o">-</span><span class="n">c</span> <span class="o">/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">supervisor</span><span class="o">.</span><span class="n">ini</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>It will start a shell from were you can start/stop/restart the service</p>
|
||||
<p>You can read all errors that might occurs from /tmp/zerobin.log.</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p>If you installed zerobin in a virtualenv, you may set the command
|
||||
to run directly from it:</p>
|
||||
<div class="last highlight-python"><pre>command=/path/to/virtualenv/bin/zerobin --port 80 --compressed-static</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@ -63,10 +122,10 @@
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="nginx_install.html"
|
||||
title="previous chapter">Installing with Nginx</a></p>
|
||||
title="previous chapter">Nginx setup</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="theming.html"
|
||||
title="next chapter"><no title></a></p>
|
||||
title="next chapter">Theming</a></p>
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="../_sources/en/using_supervisor.txt"
|
||||
@ -96,10 +155,10 @@
|
||||
<a href="../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="theming.html" title="<no title>"
|
||||
<a href="theming.html" title="Theming"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="nginx_install.html" title="Installing with Nginx"
|
||||
<a href="nginx_install.html" title="Nginx setup"
|
||||
>previous</a> |</li>
|
||||
<li><a href="../index.html">0bin 0.1 documentation</a> »</li>
|
||||
</ul>
|
||||
|
@ -53,8 +53,7 @@
|
||||
|
||||
<div class="section" id="installation-avec-apache">
|
||||
<h1>Installation avec Apache<a class="headerlink" href="#installation-avec-apache" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Apache est plus lent, plus lourd, et plus complexe à mettre en oeuvre que Nginx.
|
||||
Mais il est aussi beaucoup plus connu:</p>
|
||||
<p>Apache est plus lourd que Nginx mais il est aussi beaucoup plus connu:</p>
|
||||
<ul class="simple">
|
||||
<li>plus de gens pourront vous aider les fora;</li>
|
||||
<li>votre hébergeur propose surement Apache;</li>
|
||||
@ -81,11 +80,64 @@ une norme d’interfaçage: WSGI.</p>
|
||||
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.</p>
|
||||
<p>Premièrement, assurez-vous d’avoir mod_wsgi installé et chargé (en tant qu’admin):</p>
|
||||
<div class="highlight-python"><pre>a2enmod wsgi</pre>
|
||||
</div>
|
||||
<div class="section" id="mod-cgi">
|
||||
<h2>Mod_CGI<a class="headerlink" href="#mod-cgi" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Cette installation est considérée comme relativement lente. Mais vous bénéficierez
|
||||
tout de même de la robustesse d’Apache</p>
|
||||
<p>Ceci va activer mod_wsgi. Si cela ne marche pas, il faudra l’installer d’abord (
|
||||
sur ubuntu, le paquet est libapache2-mod-wsgi)</p>
|
||||
<p>Ensuite, il faut créer un fichier de configuration Apache, généralement dans
|
||||
/etc/apache/sites-available/. Nommez le zerobin:</p>
|
||||
<div class="highlight-python"><pre><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></pre>
|
||||
</div>
|
||||
<p>Activez le site web (en tant qu’admin):</p>
|
||||
<div class="highlight-python"><pre>a2ensite zerobin</pre>
|
||||
</div>
|
||||
<p>Et rechargez la configuration d’Apache (en tant qu’admin):</p>
|
||||
<div class="highlight-python"><pre>service apache2 reload</pre>
|
||||
</div>
|
||||
<p>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:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">sys</span>
|
||||
|
||||
<span class="c"># s'assurer que le module zerobin est dans le PYTHON PATH et importable</span>
|
||||
<span class="n">ZEROBIN_PARENT_DIR</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">__file__</span><span class="p">))</span>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">ZEROBIN_PARENT_DIR</span><span class="p">)</span>
|
||||
|
||||
<span class="c"># créer le wsgi callable</span>
|
||||
<span class="kn">from</span> <span class="nn">zerobin.routes</span> <span class="kn">import</span> <span class="n">get_app</span>
|
||||
<span class="n">settings</span><span class="p">,</span> <span class="n">application</span> <span class="o">=</span> <span class="n">get_app</span><span class="p">(</span><span class="n">compressed_static</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Vous pouvez bien sûr créer le votre, puisque la fonction <cite>get_app</cite> 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:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">sys</span>
|
||||
|
||||
<span class="n">ZEROBIN_PARENT_DIR</span> <span class="o">=</span> <span class="s">'/chemin/du/dossier/parent/de/zerobin'</span>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">ZEROBIN_PARENT_DIR</span><span class="p">)</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">zerobin.routes</span> <span class="kn">import</span> <span class="n">get_app</span>
|
||||
<span class="n">settings</span><span class="p">,</span> <span class="n">application</span> <span class="o">=</span> <span class="n">get_app</span><span class="p">(</span><span class="n">settings_file</span><span class="o">=</span><span class="s">'/path/to/settings.py'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="cgi">
|
||||
<h2>CGI<a class="headerlink" href="#cgi" title="Permalink to this headline">¶</a></h2>
|
||||
<p>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.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -99,7 +151,7 @@ tout de même de la robustesse d’Apache</p>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">Installation avec Apache</a><ul>
|
||||
<li><a class="reference internal" href="#mod-wsgi">Mod_wsgi</a></li>
|
||||
<li><a class="reference internal" href="#mod-cgi">Mod_CGI</a></li>
|
||||
<li><a class="reference internal" href="#cgi">CGI</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -98,8 +98,50 @@ sans avoir à redémarer le serveur.</p>
|
||||
nous ne couvrirons pas cette partie.</p>
|
||||
<p>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.</p>
|
||||
<p>Le fichier minimal pour faire tourner le site est:</p>
|
||||
<p>Mais on peut apporter plusieurs améliorations de performance:</p>
|
||||
<p>Le fichier de configuration minimal pour faire tourner le site est:</p>
|
||||
<div class="highlight-python"><pre>server {
|
||||
listen 80;
|
||||
server_name www.votresiteweb.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:8000;
|
||||
}
|
||||
}</pre>
|
||||
</div>
|
||||
<p><cite>proxy_pass</cite> transmet les requêtes aux processus Python. Bien entendu le
|
||||
port doit correspondre à celui utilisé par 0bin.</p>
|
||||
<p>On peut apporter plusieurs améliorations à l’expérience utilisateur:</p>
|
||||
<div class="highlight-python"><pre>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;
|
||||
}
|
||||
}</pre>
|
||||
</div>
|
||||
<p>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.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -26,7 +26,7 @@
|
||||
<script type="text/javascript" src="../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../_static/doctools.js"></script>
|
||||
<link rel="top" title="0bin 0.1 documentation" href="../index.html" />
|
||||
<link rel="next" title="<no title>" href="theming.html" />
|
||||
<link rel="next" title="Personnaliser l’apparence" href="theming.html" />
|
||||
<link rel="prev" title="Installation avec Nginx" href="nginx_install.html" />
|
||||
</head>
|
||||
<body>
|
||||
@ -37,7 +37,7 @@
|
||||
<a href="../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="theming.html" title="<no title>"
|
||||
<a href="theming.html" title="Personnaliser l’apparence"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="nginx_install.html" title="Installation avec Nginx"
|
||||
@ -53,6 +53,68 @@
|
||||
|
||||
<div class="section" id="utiliser-supervisor">
|
||||
<h1>Utiliser supervisor<a class="headerlink" href="#utiliser-supervisor" title="Permalink to this headline">¶</a></h1>
|
||||
<p>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:</p>
|
||||
<p>Créez un fichier de configuration nommé supervisor.ini:</p>
|
||||
<div class="highlight-python"><pre>[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</pre>
|
||||
</div>
|
||||
<p>Les 4 premières entrées sont juste de la configuration standard et vous pouvez
|
||||
les copier telles qu’elles.</p>
|
||||
<p>La dernière entrée définie un processus (il peut y en avoir plusieurs)
|
||||
que supervisor doit gérer.</p>
|
||||
<p>Cela veut dire qu’il va lancer la commande:</p>
|
||||
<div class="highlight-python"><pre>/chemin/vers/zerobin/zerobin.py --port 80 --compressed-static</pre>
|
||||
</div>
|
||||
<p>Et ceci dans le dossier, avec l’environnement et l’utilisateur défini, le tout
|
||||
en arrière plan en tant que daemon.</p>
|
||||
<p><cite>autostart</cite> et <cite>autorestart</cite> permettent simplement de le lancer et de l’oublier:
|
||||
supervisor redémarera le processus automatiquement en cas d’arrêt impromptu.</p>
|
||||
<p>La première fois que vous lancez supervisor, passez lui le fichier de configuration:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="n">supervisord</span> <span class="o">-</span><span class="n">c</span> <span class="o">/</span><span class="n">chemin</span><span class="o">/</span><span class="n">vers</span><span class="o">/</span><span class="n">supervisor</span><span class="o">.</span><span class="n">ini</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Ensuite vous pouvez gérer les processus avec:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="n">supervisorctl</span> <span class="o">-</span><span class="n">c</span> <span class="o">/</span><span class="n">chemin</span><span class="o">/</span><span class="n">vers</span><span class="o">/</span><span class="n">supervisor</span><span class="o">.</span><span class="n">ini</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Cela va démarrer un shell depuis lequel vous pouvez faire un start/stop/restart
|
||||
sur le service.</p>
|
||||
<p>Toutes les erreurs seront logguées dans /tmp/zerobin.log.</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p>Si vous avez installé zerobin dans un virtualenv, vous devriez définir la
|
||||
commande pour qu’elle s’éxécute depuis le virtualenv:</p>
|
||||
<div class="last highlight-python"><pre>command=/chemin/vers/le/virtualenv/bin/zerobin --port 80 --compressed-static</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@ -66,7 +128,7 @@
|
||||
title="previous chapter">Installation avec Nginx</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="theming.html"
|
||||
title="next chapter"><no title></a></p>
|
||||
title="next chapter">Personnaliser l’apparence</a></p>
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="../_sources/fr/using_supervisor.txt"
|
||||
@ -96,7 +158,7 @@
|
||||
<a href="../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="theming.html" title="<no title>"
|
||||
<a href="theming.html" title="Personnaliser l’apparence"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="nginx_install.html" title="Installation avec Nginx"
|
||||
|
@ -92,14 +92,6 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="indices-and-tables">
|
||||
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
|
||||
<li><a class="reference internal" href="py-modindex.html"><em>Module Index</em></a></li>
|
||||
<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
@ -108,14 +100,6 @@
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="#">Table Of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">0bin’s documentation</a><ul>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
|
||||
</ul>
|
||||
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="en/intro.html"
|
||||
title="next chapter">Introduction</a></p>
|
||||
|
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user