Гид по технологиям

Установка Askbot на Ubuntu 16.04 с uWSGI и Nginx

• 6 min read • DevOps • Обновлено 18 Nov 2025
Установка Askbot на Ubuntu 16.04 с uWSGI и Nginx
Установка Askbot на Ubuntu 16.04 с uWSGI и Nginx

Важно: команда и пути в примерах соответствуют окружению из руководства — при развёртывании замените пароли, имена пользователей и домены на свои.

Что будет сделано

  • Установка зависимостей и инструментов сборки.
  • Установка PostgreSQL и создание базы/пользователя.
  • Установка Askbot в виртуальном окружении Python.
  • Настройка uWSGI как systemd-сервиса.
  • Настройка Nginx как обратного прокси к uWSGI.
  • Тестирование, устранение неполадок и рекомендации по безопасности.

Кому это руководство полезно

Кратко: системным администраторам и девопсам, которые хотят запустить Askbot на Ubuntu 16.04 вручную. Терминология: virtualenv — изолированное окружение Python; uWSGI — WSGI-приложение/процесс-менеджер; Nginx — веб-сервер/обратный прокси.


Требования

  • Ubuntu 16.04 Xenial Xerus (64‑bit).
  • Права root или эквивалент через sudo.
  • Доступ по SSH к серверу.

Шаг 1 — Установка зависимостей

Подключитесь к серверу по SSH и установите пакеты для сборки и Python:

ssh root@AskbotServerIP

Установите необходимые пакеты:

apt install -y build-essential python-pip python-dev python-flup libpng12-dev zlib1g-dev libpng-dev libjpeg-dev python-setuptools

Важно: если вы используете более новую версию Ubuntu (18.04/20.04), пакеты и имена библиотек могут отличаться. На современных релизах libpng12 может отсутствовать — используйте актуальные пакеты для вашей версии.

Шаг 2 — Установка и настройка PostgreSQL

Askbot поддерживает MySQL, SQLite и PostgreSQL. В этом руководстве — PostgreSQL.

Установите СУБД:

apt install -y postgresql postgresql-contrib

Отредактируйте файл аутентификации pg_hba.conf, чтобы локальные подключения использовали md5 (шифрованный пароль):

vim /etc/postgresql/9.5/main/pg_hba.conf

Замените строку локальной аутентификации на:

local   all             all                                     md5

Редактирование pg_hba.conf с настройкой md5

Перезапустите и включите службу PostgreSQL:

systemctl restart postgresql
systemctl enable postgresql

Создайте базу и пользователя (в примере — askbotdb / hakaselabs / hakase123). Замените пароли на безопасные:

su - postgres
psql
\password postgres
create database askbotdb;
create user hakaselabs with password 'hakase123';
grant all privileges on database askbotdb to hakaselabs;
\q

Создание базы данных и пользователя в psql

Совет: создавайте отдельного пользователя БД под приложение; не используйте superuser для веб‑приложений.

Шаг 3 — Установка и настройка Askbot в virtualenv

Создайте системного пользователя для Askbot и добавьте его в sudo:

useradd -m -s /bin/bash askbot
passwd askbot
usermod -a -G sudo askbot

Создание пользователя askbot

Обновите pip и установите virtualenv:

pip install --upgrade pip
pip install virtualenv

Обновление pip и установка virtualenv

Переключитесь на пользователя askbot, создайте виртуальное окружение и активируйте его:

su - askbot
virtualenv hakase-labs
cd hakase-labs/
source bin/activate

Активация виртуального окружения hakase-labs

Установите Askbot и драйвер PostgreSQL:

pip install askbot psycopg2

Результат установки askbot и psycopg2

Создайте каталог приложения и запустите askbot-setup:

mkdir myapp/
cd myapp
askbot-setup

При запросе пути установки укажите “.” (текущую папку). Для конфигурации БД выберите PostgreSQL (номер 1) и введите созданные ранее askbotdb / hakaselabs и пароль.

Ввод параметров базы данных в askbot-setup

Соберите статические файлы:

python manage.py collectstatic

Подтвердите ‘yes’ при появлении запроса.

Сбор static файлов

Инициализируйте базу данных и создайте административного пользователя:

python manage.py syncdb

Подтвердите создание admin-пользователя и задайте email/пароль.

Создание администратора Askbot

Тестовый запуск локального сервера:

python manage.py runserver 0.0.0.0:8080

Откройте http://SERVER_IP:8080 — вы увидите страницу Askbot.

Главная страница Askbot при тестовом запуске

Примечание: runserver подходит только для тестирования. Для продакшена используйте uWSGI + Nginx.

Шаг 4 — Установка и настройка uWSGI

Установите uWSGI в систему (под root):

sudo pip install uwsgi

Создайте каталог конфигураций uWSGI и файл для сайта:

mkdir -p /etc/uwsgi/sites
cd /etc/uwsgi/sites
vim askbot.ini

Добавьте конфигурацию uWSGI (отредактируйте пути под вашу установку):

[uwsgi]

# Project directory, Python directory
chdir = /home/askbot/hakase-labs/myapp
home = /home/askbot/hakase-labs/
static-map = /m=/home/askbot/hakase-labs/myapp/static
wsgi-file = /home/askbot/hakase-labs/myapp/django.wsgi

master = true
processes = 5

# Askbot will running under the sock file
socket = /home/askbot/hakase-labs/myapp/askbot.sock
chmod-socket = 664
uid = askbot
gid = www-data
vacuum = true

# uWSGI Log file
logto = /var/log/uwsgi.log

Создание конфигурации askbot.ini для uWSGI

Создайте systemd‑сервис для uWSGI: /etc/systemd/system/uwsgi.service

cd /etc/systemd/system/
vim uwsgi.service

Вставьте:

[Unit]
Description=uWSGI Emperor service

[Service]
ExecStartPre=/bin/bash -c 'mkdir -p /run/uwsgi; chown askbot:www-data /run/uwsgi'
ExecStart=/usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all

[Install]
WantedBy=multi-user.target

Перезагрузите systemd, запустите и включите сервис:

systemctl daemon-reload
systemctl start uwsgi
systemctl enable uwsgi

Старт uWSGI сервиса

Проверьте лог /var/log/uwsgi.log при ошибках.

Шаг 5 — Установка и настройка Nginx

Установите Nginx:

apt install nginx

Создайте виртуальный хост в /etc/nginx/sites-available/askbot и затем включите его:

cd /etc/nginx
vim sites-available/askbot

Пример конфигурации:

server {
        listen 80;
        server_name askbot.me www.askbot.me;
        location / {
        include         uwsgi_params;
        uwsgi_pass      unix:/home/askbot/hakase-labs/myapp/askbot.sock;
   }
}

Сохраните, создайте символьную ссылку и проверьте конфигурацию:

ln -s /etc/nginx/sites-available/askbot /etc/nginx/sites-enabled/
nginx -t

Проверка конфигурации nginx

Перезапустите и включите nginx:

systemctl restart nginx
systemctl enable nginx

Проверьте, что nginx слушает порт 80 и что сокет uWSGI создан:

netstat -plntu
netstat -pl | grep askbot

Проверка сокета askbot и netstat

Шаг 6 — Тестирование

Откройте в браузере домен или IP сервера (в примере askbot.me). Проверьте:

  • Главную страницу приложения.
  • Вход/регистрацию пользователя.
  • Доступ к административной панели Django (/admin).

Примеры экранов:

Главная страница Askbot

Страница входа пользователя Askbot

Панель пользователя Askbot

Страница настроек Askbot

Вход в Django admin Askbot

Панель администратора Django для Askbot

Поздравляем — Askbot развернут на Ubuntu 16.04 с uWSGI и Nginx.


Резервные и проверочные действия

  • Резервируйте папку проекта и файл базы данных (или создавайте дампы pg_dump).
  • Добавьте мониторинг процессов uWSGI и nginx (например, systemd + Prometheus Exporter).
  • Автоматизируйте развертывание через Ansible/Playbook.

Поведение в нестандартных ситуациях

Когда это может не сработать

  • Неподдерживаемая версия Python или Ubuntu.
  • Отсутствие необходимых libjpeg/libpng в репозитории.
  • Ошибка в путях wsgi-file или права на сокет.

Что попробовать

  • Проверить логи: /var/log/uwsgi.log, /var/log/nginx/error.log, systemctl status uwsgi.
  • Убедиться, что виртуальное окружение содержит все зависимости.
  • Проверить права на UNIX-сокет и владельца папок.

Альтернативные подходы

  • Gunicorn вместо uWSGI: проще в конфигурации, хорошо работает с systemd и Nginx.
  • Использовать Docker-контейнеры: упрощает переносимость и обновление.
  • Использовать managed PostgreSQL (RDS/GCP Cloud SQL) для отказоустойчивости.

Рекомендации по безопасности

  • Замените все пароли в примерах на надёжные.
  • Настройте HTTPS (Let’s Encrypt + Certbot) и перенаправление HTTP→HTTPS.
  • Ограничьте доступ к сокету uWSGI через права пользователей и группу www-data.
  • Запретите прямой доступ к /static/ и обслуживайте статику через Nginx.

Пример перенаправления HTTPS (кратко):

  • Установите certbot и получите сертификат: certbot –nginx -d example.com.
  • Обновите конфигурацию nginx для ssl_certificate и ssl_certificate_key.

Роль‑ориентированные контрольные списки

Для системного администратора

  • Создать системного пользователя askbot.
  • Настроить PostgreSQL и права доступа.
  • Настроить uWSGI systemd-сервис и права на сокет.
  • Настроить Nginx и получить SSL.

Для разработчика

  • Проверить миграции Django.
  • Убедиться, что collectstatic собирает все ресурсы.
  • Тестировать приложение локально через runserver и через uWSGI.

План восстановления и откат

  1. Остановить uWSGI и nginx: systemctl stop uwsgi nginx.
  2. Вернуть бэкап базы из pg_dump: psql askbotdb < backup.sql или pg_restore.
  3. Вернуть файлы проекта из архива и проверить виртуenv.
  4. Запустить сервисы и проверить логи.

Миграция на более новые версии Ubuntu

  • На Ubuntu 18.04/20.04 пакеты и версии Python будут отличаться.
  • Обновите psycopg2 до совместимой с вашей версией libpq.
  • Проверьте systemd unit‑файлы и пути к uwsgi (может быть /usr/bin/uwsgi).

Критерии приёмки

  • Askbot доступен по HTTP(S) и отвечает 200 на главной странице.
  • Админ-панель доступна и работает.
  • uWSGI запущен как systemd-сервис и демонстрирует процессы.
  • Nginx корректно проксирует запросы в uWSGI через unix-сокет.

Быстрая проверка и тесты приёмки

  • curl -I http://localhost/ должно вернуть 200.
  • systemctl status uwsgi nginx — оба должны быть active (running).
  • ls -l /home/askbot/hakase-labs/myapp/askbot.sock — сокет должен существовать.

Короткая методология развёртывания

  1. Подготовка сервера и зависимостей.
  2. Установка БД и создание учетных записей.
  3. Установка приложения в virtualenv.
  4. Сервисный запуск через uWSGI + systemd.
  5. Реверс-прокси через Nginx и SSL.
  6. Тестирование и мониторинг.

Мини‑справочник команд (cheat sheet)

  • Запуск uWSGI: systemctl start uwsgi
  • Логи uWSGI: journalctl -u uwsgi или tail -f /var/log/uwsgi.log
  • Проверка nginx: nginx -t
  • Перезагрузка nginx: systemctl restart nginx

Ключевые числа и факты

  • Применяемая ОС: Ubuntu 16.04.
  • Рекомендуемое количество процессов uWSGI: 2–5 для небольшого сайта.
  • UNIX-сокет для связи Nginx↔uWSGI вместо TCP уменьшает накладные расходы.

Справочная ссылка

https://askbot.org/en/question/


Итог: описанная последовательность — рабочий ручной способ развернуть Askbot на Ubuntu 16.04 с PostgreSQL, uWSGI и Nginx. Для продакшена добавьте HTTPS, автоматические бэкапы и мониторинг.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро