새로운 기본 브랜치가 추가되었습니다. 기본 브랜치는 백엔드만 포함합니다. 마스터 브랜치의 백엔드를 기반으로 다시 작성되었으며, 더 나은 권한 제어, 워크플로우 엔진, 운영 및 유지 관리, 웹소켓 지원을 제공합니다. 일반적인 기능이 유틸리티에 통합되었습니다.
이후의 기능 변경은 주로 기본 브랜치를 기반으로 하며 마스터 브랜치는 호환성만 처리하므로 세부 사항을 보려면 기본 브랜치로 전환하면 됩니다.
RBAC 모델 권한 제어를 기반으로 하는 중소형 애플리케이션을 위한 기본 개발 플랫폼입니다. 프런트엔드와 백엔드가 분리되어 있으며, 백엔드는 django+django-rest-framework를 사용하고, 프런트엔드는 vue+ElementUI를 사용하며, 모바일 터미널입니다. uniapp+uView를 사용합니다(h5 및 소규모 프로그램 게시 가능).
JWT 인증, simple_history를 사용하여 감사 기능을 구현하고 Swagger를 지원할 수 있습니다.
내장 모듈에는 organizationuserrolepositiondata Dictionaryfile librarytimed jobsworkflow가 포함됩니다(대부분의 코드가 업로드되었으며 백엔드 코드는 apps/wf에 있음).
워크플로 사용 시 데이터베이스로 Postgresql을 사용하는 것이 좋습니다. 다음 미리보기 환경은 SQLite를 사용하므로 일부 json 쿼리는 지원되지 않습니다. 사용 방법은 기본적으로 동일하며 주로 단순화됩니다.
기능적 권한(각 인터페이스에 대한 제어) 및 단순 데이터 권한(전체, 이 수준 이하, 동 수준 이하, 나 등)을 지원합니다.
문제 제기에 오신 것을 환영합니다.
미리보기 주소는 runserver, 계정 관리자, 비밀번호 admin을 직접 사용합니다. 주의 깊게 작업하시고 비밀번호는 변경하지 마세요 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로 패키징하고 교체한 다음 Collectstatic을 실행할 수도 있습니다.
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;
}
}
프런트엔드 ./client
및 백엔드 ./server
디렉터리에 Dockerfile이 있습니다. 이미지를 별도로 빌드해야 하는 경우 직접 빌드할 수 있습니다.
여기서는 주로 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 메서드입니다). 라우팅 테이블에서)
백엔드 기능 권한의 핵심 코드는 server/apps/system/permission.py 아래의 has_permission 메소드를 다시 작성하고 APIView 및 ViewSet에 권한 권한 코드를 정의합니다.
데이터 권한은 특정 비즈니스와 관련되어 있으므로 몇 가지 규칙을 정의하고 필요에 따라 사용할 수 있도록 has_object_permission 메서드를 다시 작성하면 됩니다.
실제 상황은 더 복잡하기 때문에 상황에 따라 drf의 허가_클래스를 직접 작성하는 것이 좋습니다.
celery 및 django_celery_beat 패키지를 사용하여 구현됨
Redis를 설치하고 기본 포트에서 시작해야 하며 작업자를 시작하고 비트해야 합니다.
가상 환경에 들어가서 작업자를 시작합니다. celery -A server worker -l info -P eventlet
, Linux 시스템의 경우 -P eventlet을 추가할 필요가 없습니다.
가상 환경에 들어가서 비트를 시작하세요: celery -A server beat -l info
워크플로 모듈은 loonflow의 구현을 참조하며 해당 문서를 볼 수 있습니다(loonflow 덕분에 로직은 동일함). Swagger를 볼 수 있습니다.
소통하고 싶다면 QQ 그룹 235665873 또는 WeChat 그룹에 가입하세요.