Возникла необходимость деплоить на сервак, на котором уже работает один проект на php, django, с сохранением работоспособности php. Погуглив и почитав нашел такое решение:
apache2:
ports.conf
Тут все просто:
Listen 8080 # порт на котором будет висеть php
Listen 8081 # тут будет висеть django
../sites-available/php
<VirtualHost *:8080>
ServerName your.server.name
ServerAlias your.server.name.alias
DocumentRoot /var/www/
Alias / /var/www/
<Directory /var/www>
Options Indexes FollowSymLinks
AllowOverride None
Order Deny,Allow
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log common
</VirtualHost>
../sites-available/django
<VirtualHost *:8081>
ServerAdmin webmaster@localhost
ServerName your.server.name
ServerAlias your.server.name.alias
<Directory /PATH_TO_DJANGO_PROJECT/apache/>
Order deny,allow
Allow from all
</Directory>
LogLevel warn
ErrorLog /PATH_TO_DJANGO_PROJECT/logs/apache_error.log
CustomLog /PATH_TO_DJANGO_PROJECT/logs/apache_access.log combined
WSGIDaemonProcess django user=www-data group=www-data threads=25
WSGIProcessGroup djano
WSGIScriptAlias / /PATH_TO_DJANGO_PROJECT/apache/django.wsgi
</VirtualHost>
nginx:
proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
../sites-available/php
server {
listen *:80;
server_name your.server.name your.server.alias;
root /var/www/;
index index.php index.html;
location / {
root /var/www/;
proxy_pass http://127.0.0.1:8080;
include ../nginx/proxy.conf;
}
}
../sites-available/django
server {
listen *:80;
server_name your.server.name your.server.alias;
access_log /PATH_TO_DJANGO_PROJECT/logs/nginx_access.log;
error_log /PATH_TO_DJANGO_PROJECT/logs/nginx_error.log;
location / {
proxy_pass http://127.0.0.1:8081;
include /etc/nginx/proxy.conf;
}
location /media {
root /DJANGO_PROJECT_ROOT/;
}
location /static {
root /DJANGO_STATIC_ROOT/;
}
}
Вот собственно и все. Возможно есть и более элегантное решение, но пока я его не нашел.