Была добавлена новая базовая ветка. Базовая ветка включает только бэкэнд. Она была переписана на основе бэкенда главной ветки. Она имеет улучшенный контроль разрешений, механизм рабочего процесса, управление эксплуатацией и обслуживанием, поддержку веб-сокетов и предоставляет различные возможности. общие функции интегрированы в утилиты.
Последующие функциональные изменения будут в основном основаны на базовой ветке, а основная ветка будет обеспечивать только совместимость. Вы можете переключиться на базовую ветку, чтобы просмотреть подробности.
Базовая платформа разработки для приложений малого и среднего размера, основанная на управлении разрешениями модели RBAC. Передняя и задняя части разделены. Внутренняя часть использует django+django-rest-framework, передняя часть использует vue+ElementUI, а мобильный терминал. использует uniapp+uView (может публиковать h5 и небольшие программы).
Аутентификация JWT, вы можете использовать simple_history для реализации функции аудита и поддержки чванства.
Встроенные модули включают организациюпользователярольпозициюсловарь данныхбиблиотеку файловзадачи по временирабочий процесс (большая часть кода загружена, а внутренний код находится в папке apps/wf).
При использовании рабочего процесса рекомендуется использовать Postgresql в качестве базы данных. Следующая среда предварительного просмотра использует SQLite, поэтому некоторые методы использования см. в документе loonflow. Они в основном одинаковы, в основном упрощены.
Поддерживает функциональные разрешения (управление каждым интерфейсом) и простые разрешения на данные (все, этот уровень и ниже, тот же уровень и ниже, я и т. д.)
Добро пожаловать, чтобы поднять вопросы
Адрес предварительного просмотра напрямую использует сервер запуска, администратора учетной записи и администратора паролей. Пожалуйста, действуйте осторожно и не меняйте пароль http://49.232.29.236:2222/.
Перейдите в папку сервера
Создайте виртуальную среду python -m venv venv
Активировать виртуальную среду .venvscriptsactivate
Установить пакеты зависимостей pip install -r requirements.txt
Скопируйте conf_e.py из папки сервера в conf.py и при необходимости измените подключение к базе данных и параметры DEBUG внутри.
python manage.py migrate
базу данных
Вы можете импортировать исходные данные с помощью python manage.py loaddata db.json
или напрямую использовать базу данных sqlite (пароль учетной записи суперуправления — admin, и база данных будет время от времени сбрасываться).
Создайте суперадминистратора python manage.py createsuperuser
Запустите службу python manage.py runserver 8000
Перейдите в папку клиента
Установите node.js
Установить пакеты зависимостей npm install --registry=https://registry.npmmirror.com
Запустите службу npm run dev
Измените nginx.conf при локальном запуске для отображения файлов ресурсов.
listen 8012
location /media {
proxy_pass http://localhost:8000;
}
location / {
proxy_pass http://localhost:9528;
}
Запустите nginx.exe
Откройте localhost:8012 для доступа.
Документ интерфейса localhost:8000/api/swagger/
Внутренний адрес localhost: 8000/django/admin/
Обратите внимание на изменение conf.py при развертывании.
Передняя и задняя части могут быть развернуты отдельно, прокси-сервер nginx. Вы также можете упаковать и заменить внешний dist на server/dist, а затем выполнить сбор статических
Начните использовать Gunicorn: войдите в виртуальную среду и выполните Gunicorn -w 5 -b 0.0.0.0:2251 server.wsgi.
Если вам нужен веб-сокет, вам также необходимо настроить daphne для запуска. Вы можете использовать супервизор для мониторинга.
Конфигурацию Nginx можно назвать следующим образом:
server {
listen 2250;
client_max_body_size 1024m;
location /media/ {
alias /home/lighthouse/xx/media/;
limit_rate 800k;
}
location / {
alias /home/lighthouse/xx/dist/;
index index.html;
}
location ~ ^/(api|django)/ {
set $CSRFTOKEN "";
if ($http_cookie ~* "CSRFTOKEN=(.+?)(?=;|$)") {
set $CSRFTOKEN "$1";
}
proxy_set_header X-CSRFToken $CSRFTOKEN;
proxy_pass http://localhost:2251;
proxy_pass_header Authorization;
proxy_pass_header WWW-Authenticate;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /ws/ {
proxy_pass http://localhost:2252;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
proxy_set_header X-Forwarded-Host $server_name;
}
}
Файлы Dockerfile находятся во внешних каталогах ./client
и внутренних ./server
. Если вам нужно собрать образ отдельно, вы можете собрать его самостоятельно.
Здесь мы в основном говорим о стартапе docker-compose.
Измените файл docker-compose.yml согласно комментариям. В нем есть две основные службы: одна — backend
, другая — frontend
.
По умолчанию серверная часть и внешний интерфейс запускаются в режиме разработки. Если вам нужно выполнить развертывание на одной машине и вы хотите использовать docker-compose, производительность повысится, если вы перейдете в производственный режим.
запускать
cd <path-to-your-project>
docker-compose up -d
После успешного запуска порт доступа тот же, что и раньше: порт интерфейса 8000, порт внешнего интерфейса 8012. Если вам нужно его изменить, измените docker-compose.yml самостоятельно.
Если вы хотите выполнить команду docker-compose exec <имя службы> <команда>
Дайте каштан:
Если я хочу выполнить команду изменения данных, сгенерированную серверной частью. python manage.py makemigrations
Затем используйте следующее утверждение
docker-compose exec backend python manage.py makemigrations
Во-первых, вы должны уметь использовать django-rest-framework и понимать интерфейсное решение vue-element-admin.
В этом проекте используется интерфейсная маршрутизация. Внутренняя часть считывает код разрешений пользователя в соответствии с ролью пользователя и возвращает его во внешний интерфейс, который загружается внешним интерфейсом (основной код — это атрибут perms и метод checkpermission). в таблице маршрутизации)
Основной код разрешений серверной функции перезаписывает метод has_permission в файле server/apps/system/permission.py и определяет коды разрешений разрешений в APIView и ViewSet.
Поскольку права доступа к данным связаны с конкретным бизнесом, мы просто определяем несколько правил и переписываем метод has_object_permission, чтобы вы могли использовать их по мере необходимости.
Поскольку реальная ситуация более сложна, рекомендуется самостоятельно написать класс разрешений drf в зависимости от различных ситуаций.
Реализовано с использованием пакетов celery и django_celery_beat.
Нужно установить redis и запустить его на порту по умолчанию, а рабочий запустить и прибить
Войдите в виртуальную среду и запустите работника: celery -A server worker -l info -P eventlet
, нет необходимости добавлять -P eventlet для систем Linux.
Войдите в виртуальную среду и начните бит: celery -A server beat -l info
Модуль рабочего процесса относится к реализации loonflow и может просматривать его документацию (логика та же, благодаря loonflow загружена большая часть кода).
Если вы хотите общаться, вы можете присоединиться к группе QQ 235665873 или группе WeChat.