mirror of
https://github.com/balkian/balkian.github.com.git
synced 2024-11-05 03:21:42 +00:00
Proxies
This commit is contained in:
parent
e4afafac0e
commit
43a0c63169
@ -1,7 +1,7 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Publishing in PyPi"
|
||||
date: 2014-10-27 10:00:00
|
||||
date: 2014-09-27 10:00:00
|
||||
tags: github python pypi
|
||||
---
|
||||
|
67
_posts/2014-10-09-proxies.markdown
Normal file
67
_posts/2014-10-09-proxies.markdown
Normal file
@ -0,0 +1,67 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Proxies with Apache and python"
|
||||
date: 2014-10-09 10:00:00
|
||||
tags: python apache proxy gunicorn uwsgi
|
||||
---
|
||||
|
||||
This is a quick note on proxying a local python application (e.g. flask) to a subdirectory in Apache.
|
||||
This assumes that the file wsgi.py contains a WSGI application with the name *application*. Hence, wsgi:application.
|
||||
|
||||
## Gunicorn
|
||||
{% highlight apache %}
|
||||
<Location /myapp/>
|
||||
ProxyPass http://127.0.0.1:8888/myapp/
|
||||
ProxyPassReverse http://127.0.0.1:8888/myapp/
|
||||
RequestHeader set SCRIPT_NAME "/myapp/"
|
||||
</Location>
|
||||
{% endhighlight %}
|
||||
|
||||
**Important**: *SCRIPT_NAME* and the end of *ProxyPass* URL **MUST BE THE SAME**. Otherwise, Gunicorn will fail miserably.
|
||||
|
||||
Try it with:
|
||||
{% highlight bash %}
|
||||
venv/bin/gunicorn -w 4 -b 127.0.0.1:8888 --log-file - --access-logfile - wsgi:application
|
||||
{% endhighlight %}
|
||||
|
||||
|
||||
## UWSGI
|
||||
This is a very simple configuration. I will try to upload one with more options for uwsgi (in a .ini file).
|
||||
|
||||
{% highlight apache %}
|
||||
<Location /myapp/>
|
||||
SetHandler uwsgi_handler
|
||||
uWSGISocker 127.0.0.1:8888
|
||||
</Location>
|
||||
{% endhighlight %}
|
||||
|
||||
Try it with:
|
||||
|
||||
{% highlight bash %}
|
||||
uwsgi --socket 127.0.0.1:8888 -w wsgi:application
|
||||
{% endhighlight %}
|
||||
|
||||
### Extra: Supervisor
|
||||
If everything went as expected, you can wrap your command in a supervisor config file and let it handle the server for you.
|
||||
{% highlight ini %}
|
||||
[unix_http_server]
|
||||
file=/tmp/myapp.sock ; path to your socket file
|
||||
|
||||
[supervisord]
|
||||
logfile = %(here)s/logs/supervisor.log
|
||||
childlogdir = %(here)s/logs/
|
||||
|
||||
[rpcinterface:supervisor]
|
||||
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
|
||||
|
||||
[supervisorctl]
|
||||
logfile = %(here)s/logs/supervisorctl.log
|
||||
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
|
||||
|
||||
|
||||
[program:myapp]
|
||||
command = venv/bin/gunicorn -w 4 -b 0.0.0.0:5000 --log-file %(here)s/logs/gunicorn.log --access-logfile - wsgi:application
|
||||
directory = %(here)s
|
||||
environment = PATH=%(here)s/venv/bin/
|
||||
logfile = %(here)s/logs/myapp.log
|
||||
{% endhighlight %}
|
Loading…
Reference in New Issue
Block a user