Selectel возобновил штатную работу облачного сервиса, поэтому я решил создать новый сервер в новом серверном пуле и заодно переехать с lighttpd на nginx.
Сервер работает на Debian Squeeze Mini.
Nginx устанавливаем из репозитория squeeze-backports.
Из-под root:
echo "# squeeze-backports" >> /etc/apt/sources.list echo "deb http://backports.debian.org/debian-backports squeeze-backports main" >> /etc/apt/sources.list apt-get update apt-get -t squeeze-backports install nginx
Для управления серверными процессами установим supervisord:
apt-get install supervisor
Установим virtualenv и mercurial:
apt-get install virtualenv apt-get install mercurial
useradd -m -s /bin/bash blog su blog
Из-под пользователя blog:
cd ~ virtualenv env cd env . bin/activate
Из-под виртуального окружения:
easy_install pip pip install gunicorn
Я использую собственную версию, поэтому устанавливаю из репозитория (из-под виртуального окружения):
cd ~ hg clone https://bitbucket.org/ForeverYoung/blohg cd blohg python setup.py install
Если при установке ошибка, нужно установить gcc и python-dev (из-под root):
apt-get install gcc apt-get install python-dev
Для стандартной версии (из-под виртуального окружения):
pip install blohg
Создаем blog_app.py в ~blog:
#!/usr/bin/python from blohg import create_app app = create_app("/home/blog/blog")
Клонируем блог на сервер (как описано тут):
hg clone my_blohg ssh://blog@yourdomain.tld/home/blog/blog/
Создаем gunicorn.conf.py в ~blog:
import multiprocessing workers = multiprocessing.cpu_count() * 2 + 1 bind = "unix:/home/blog/blog.socket" pidfile = "/home/blog/blog.pid" logfile = "/home/blog/logs/gunicorn.log" loglevel = "info" proc_name = "blog" user = "www-data" group = "www-data"
Создаем /etc/supervisor/conf.d/blog.conf:
[program:blog] command = /home/blog/env/bin/gunicorn blog_app:app -c /home/blog/gunicorn.conf.py directory = /home/blog/ autostart = true autorestart = true redirect_stderr = true daemon = false debug = false logfile = /home/blog/logs/supervisor.log loglevel = "info" user = "www-data"
Запускаем supervisor:
/etc/init.d/supervisor start
Создаем /etc/nginx/sites-available/blog:
server { listen 80; server_name yourdomain.tld; access_log /home/blog/logs/nginx_access.log; error_log /home/blog/logs/nginx_error.log; location / { proxy_pass http://unix:/home/blog/blog.socket; include proxy_params; } }
Создаем ссылку в sites-enabled:
cd /etc/nginx/sites-enabled ln -s ../sites-available/blog blog
Запускаем nginx:
/etc/init.d/nginx start
Вот и всё!
© Anton Novosyolov | Design by: Matthew James Taylor | Powered by: blohg 0.10.1_multilang+/2fc5a1d551a5+