Давным давно, я писал как установить nginx
там же в комментариях подсказали ещё способ
nginx=stable
add-apt-repository ppa:nginx/$nginx
apt-get update
apt-get install nginxCode language: Bash (bash)
получаем последний nginx.
Напомню, что у меня за nginx стоят разные «бэк-энды»
для самого нагруженного сайта я использую php5-fpm
для остальных сайтов я использую apache2
для Django проектов я использовал Apache2 + mod_python но его прожорливость, давала повод задуматься.
в итоге я искал способ освободить ресурсы занимаемые Индейцем.
Такой способ нашёлся 🙂
создаю конфигурационный файл хоста nginx.
touch djangositeCode language: Bash (bash)
у меня они лежат в /etc/nginx/sites-available и уже от туда симлинками идут в /etc/nginx/sites-enabled
Конфигурационный файл такого содержания
server {
listen 80;
server_name sitename.ru www.sitename.ru;
charset utf-8;
access_log /var/log/nginx/sitename-access.log;
error_log /var/log/nginx/sitename-error.log;
client_max_body_size 300m;
location /media_admin {
alias /usr/lib/python2.5/site-packages/django/contrib/admin/media;
}
location / {
fastcgi_pass unix:/tmp/sitename.sock;
include fastcgi_params_django;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}Code language: Bash (bash)
так же создаём файл
touch /etc/nginx/fastcgi_params_djangoCode language: Bash (bash)
и в него вкладываем вот такие параметры
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REDIRECT_STATUS 200;Code language: Bash (bash)
проверяем верность конфигурации
nginx -tCode language: Bash (bash)
если всё ОК идём дальше.
проекты джанго у меня лежат в /home/django
Заходим в нужный нам проект и создадим там скрипт сервера.
touch server.shCode language: Bash (bash)
Вот с таким содержанием
#!/bin/bash
case "$1" in
"start")
python ./manage.py runfcgi method=prefork socket=/tmp/sitename.sock pidfile=/tmp/sitename.pid
chown www-data:www-data /tmp/sitename.sock
;;
"stop")
kill -9 `cat /tmp/sitemane.pid`
;;
"restart")
$0 stop
sleep 1
$0 start
;;
*) echo "Usage: ./server.sh {start|stop|restart}";;
esacCode language: Bash (bash)
Вот и весь скрипт, не забываем только поменять sitename на имя вашего сайта, а то получится, что на один pid или сокет у вас будет ссылаться несколько серверов.
чтоб запустить сервер
./server.sh startCode language: Bash (bash)
А вот он и не запустился ругается на Flup
No module named flupCode language: Bash (bash)
нам понадобится пакет flup это питоновский пакет, поэтому его я устанавливаю вот так
easy_install flupCode language: Bash (bash)
Можно попробовать поставить его из репозитория убунты
apt-get install python-flupCode language: Bash (bash)
Но я так не пробовал 😉
Всё сервер запустился, можно перезапустить nginx для применения новой конфигурации
/etc/init.d/nginx restartCode language: Bash (bash)
Всё готово, наш сервер запустился.
Теперь по хорошему добавить скрипт запуска сервера в автозагрузку.