Инструменты пользователя

Инструменты сайта


mp_doc:imain_install_deb13_webapp_admin

Это старая версия документа!


Развертывание приложения веб интерфейса администратора (Debian 13)

1. Создадим пользователя mpweb, группу pyenv и включим нового пользователя в новую группу (из под root):

adduser mpweb
addgroup pyenv
usermod -G pyenv mpweb

2. Создать каталог для ведения логов и назначить права (из под root):

mkdir /var/log/mpweb && chown mpweb:adm /var/log/mpweb

3. Установим зависимости (из под root):

apt install subversion python3 python3-pip gettext default-libmysqlclient-dev nginx pyenv python3-venv

4. Добавить в ~/.bashrc (для root и mpweb):

export PYENV_ROOT=/opt/pyenv

Это важно! Не забудьте выйти - войти под каждым пользователем!
5. Установим нужную версию python через pyenv:

pyenv install 3.8.20

6. Сделаем каталог доступный для пользователей группы pyenv (из под root):

chown root:pyenv -R $PYENV_ROOT

Тут требуется пояснение: идеология pyenv предполагает установку в домашний каталог пользователя (~/pyenv). Мне кажется такое избыточным поэтому версия 3.8.20 установлена в систему как дополнительная версия python.
7. Добавим символические ссылки (из под root):

ln -s $PYENV_ROOT/versions/3.8.20/bin/python3.8 /usr/bin/python3.8
ln -s $PYENV_ROOT/versions/3.8.20/bin/pip3.8 /usr/bin/pip3.8

8. Создадим виртуальное окружение (из под mpweb):

python3.8 -m venv ~/.virtualenvs/mpweb

9. Для активации окружения выполняем:

source ~/.virtualenvs/mpweb/bin/activate

10. Создадим файл /home/mpweb/mpweb.update, вида:

#!/bin/bash

# Global
pth=/home/mpweb/minipbx_web
USR=
URL=http://svn.minipbx.ru/minipbx_web/mpweb

if [ "$1" = "checkout" ]; then
    # Checkout!
    mkdir $pth
    svn checkout --username $USR --no-auth-cache $URL $pth
elif [[ "$1" = "update" || "$1" = "" ]]; then
    # Update
    svn update --username $USR --no-auth-cache $pth
else
    echo "Unknown command!"
fi

11. Сделаем исполняемым и получим репозитарий (из под mpweb):

chmod +x /home/mpweb/mpweb.update
/home/mpweb/mpweb.update checkout

12. Установим зависимости (из под mpweb, с активированным виртуальным окружением mpweb):

source ~/.virtualenvs/mpweb/bin/activate # Если окружение не активировано!
pip3.8 install -r /home/mpweb/minipbx_web/requirements.txt
pip3.8 install pyramid_genshi pyramid_jinja2 bcrypt

13. [Переделать] Установить egg для pyserv (из под mpweb):

# По идее это должно работать так:
python3.8 /home/mpweb/minipbx_web/setup.py install

Но, так как задумывалось НЕ работает… Создадим руками:

mkdir ~/.virtualenvs/mpweb/lib/python3.8/site-packages/mpweb-1.0-py3.8.egg
ln -s -T /home/mpweb/minipbx_web/mpweb.egg-info ~/.virtualenvs/mpweb/lib/python3.8/site-packages/mpweb-1.0-py3.8.egg/EGG-INFO
ln -s -T ~/minipbx_web/mpweb ~/.virtualenvs/mpweb/lib/python3.8/site-packages/mpweb-1.0-py3.8.egg/mpweb

14. Скопируем файлы настроек и запускаемый скрипт (из под mpweb):

cp /home/mpweb/minipbx_web/development.ini.sample /home/mpweb/minipbx_web/development.ini
cp /home/mpweb/minipbx_web/production.ini.sample /home/mpweb/minipbx_web/production.ini
# если каталог отсутствует то нужно выйти войти под mpweb (пере зайти в сессию)
mkdir /home/mpweb/bin
cp /home/mpweb/minipbx_web/scripts/run_mpweb /home/mpweb/bin/run_mpweb

15. Обновим языковые файлы (из под mpweb):

/home/mpweb/minipbx_web/lcompile.sh

16. Запустим:

/home/mpweb/bin/run_mpweb

Можно выполнять из без пути (просто run_mpweb), но только в том случае если файл лежит bin и каталог bin был созда ДО входа в текущую сессию! Если запуск выполнился без ошибок, то двигаемся дальше.
17. Установим службу (из под root):

cp /home/mpweb/minipbx_web/scripts/mpweb.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable mpweb
systemctl start mpweb
systemctl status mpweb

18. Распакуем из архива (www/www.tar.gz) в /var/www/ следующие каталоги (из под root):

  • fontawesome/5.8.1
  • webix/10.2.0
  • mp

19. Настройка nginx (из под root):

  • Создадим файл /etc/nginx/conf.d/http_upgrade.conf:
    map $http_upgrade $connection_upgrade {
        default upgrade;
        "" close;
    }
  • Создадим файл /etc/nginx/sites-enabled/mpweb:
server {
  server_name <ИМЯ ДОМЕНА>;
  client_max_body_size 32m;

        location / {
            root   /var/www/mp;
            index  index.html;

            # kill cache
            add_header Last-Modified $date_gmt;
            add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
            if_modified_since off;
            expires off;
            etag off;
        }

        location /webix/ {
            rewrite  ^/webix/(.*) /$1 break;
            root   /var/www/webix/10.2.0;
        }

        location /fa/ {
            rewrite  ^/fa/(.*) /$1 break;
            root /var/www/fontawesome/5.8.1/;
        }

        location /api/ {
            rewrite  ^/api/(.*) /$1 break;
            proxy_pass   http://127.0.0.1:8000;
            proxy_redirect off;
            proxy_http_version 1.1;

            proxy_set_header Connection keep-alive;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
        }


  root /var/www/mp;

  listen 80;

}

Не забудьте поменять <ИМЯ ДОМЕНА>, на свое имя. И добавить ssl.
19. Добавим символическую ссылку и проверим конфигурацию (из под root).

ln -s /etc/nginx/sites-available/mpweb /etc/nginx/sites-enabled/
nginx -t
# если тест ОК, то
systemctl restart nginx
mp_doc/imain_install_deb13_webapp_admin.1787653989.txt.gz · Последнее изменение: zis

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki