تمت إضافة فرع أساسي جديد. يتضمن الفرع الأساسي فقط الواجهة الخلفية، وقد تمت إعادة كتابته بناءً على الواجهة الخلفية للفرع الرئيسي، وهو يتمتع بتحكم أفضل في الأذونات، ومحرك سير العمل، وإدارة التشغيل والصيانة، ودعم websocket، ويوفر مجموعة متنوعة من وظائف مشتركة.
ستعتمد التغييرات الوظيفية اللاحقة بشكل أساسي على الفرع الأساسي، وسيتعامل الفرع الرئيسي مع التوافق فقط. يمكنك التبديل إلى الفرع الأساسي لعرض التفاصيل.
منصة تطوير أساسية للتطبيقات الصغيرة والمتوسطة الحجم تعتمد على التحكم في أذونات نموذج RBAC، ويتم فصل الأطراف الأمامية والخلفية عن بعضها البعض، وتستخدم الواجهة الخلفية إطار عمل django+Django-rest، وتستخدم الواجهة الأمامية vue+ElementUI، والمحطة المتنقلة. يستخدم uniapp+uView (يمكنه نشر برامج h5 والبرامج الصغيرة).
مصادقة JWT، يمكنك استخدام simple_history لتنفيذ وظيفة التدقيق ودعم التباهي
تتضمن الوحدات المضمنة المؤسسةالمستخدمالدورالموضعقاموس البياناتمكتبة الملفاتالمهام المحددة بوقتسير العمل (تم تحميل معظم التعليمات البرمجية، ويوجد رمز الواجهة الخلفية في apps/wf)
عند استخدام سير العمل، يوصى باستخدام Postgresql كقاعدة بيانات. تستخدم بيئة المعاينة التالية SQLite، لذا فإن بعض استعلامات json غير مدعومة.
يدعم الأذونات الوظيفية (التحكم في كل واجهة) وأذونات البيانات البسيطة (الكل، هذا المستوى وما دونه، نفس المستوى وما دونه، أنا، وما إلى ذلك)
مرحبا بكم في إثارة القضايا
يستخدم عنوان المعاينة خادم التشغيل ومسؤول الحساب ومسؤول كلمة المرور مباشرةً. يرجى العمل بحذر وعدم تغيير كلمة المرور 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
افتح المضيف المحلي: 8012 للوصول
واجهة المستند المضيف المحلي: 8000/api/swagger/
عنوان الواجهة الخلفية المضيف المحلي: 8000/Django/admin/
انتبه إلى تعديل conf.py عند النشر
يمكن نشر الواجهة الأمامية والخلفية بشكل منفصل عبر وكيل nginx. يمكنك أيضًا حزم واستبدال قرص الواجهة الأمامية بالخادم/التوزيع، ثم تنفيذ الأمر Collectstatic
ابدأ باستخدام gunicorn: أدخل البيئة الافتراضية وقم بتنفيذ gunicorn -w 5 -b 0.0.0.0:2251 server.wsgi
إذا كنت بحاجة إلى websocket، فستحتاج أيضًا إلى تكوين 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;
}
}
توجد ملفات Dockerfiles في مجلدات الواجهة الأمامية ./client
والخلفية ./server
إذا كنت بحاجة إلى إنشاء الصورة بشكل منفصل، فيمكنك بنائها بنفسك.
نتحدث هنا بشكل أساسي عن بدء تشغيل عامل الإرساء.
قم بتعديل ملف docker-compose.yml وفقًا للتعليقات. هناك خدمتان رئيسيتان فيه، إحداهما backend
والأخرى frontend
.
الافتراضي هو تشغيل الواجهة الخلفية والواجهة الأمامية في وضع التطوير. إذا كنت بحاجة إلى النشر على جهاز واحد وترغب في استخدام docker-compose، فسيكون الأداء أفضل إذا قمت بالتغيير إلى وضع الإنتاج.
.بدء
cd <path-to-your-project>
docker-compose up -d
بعد بدء التشغيل الناجح، يكون منفذ الوصول هو نفسه كما كان من قبل، منفذ الواجهة 8000، ومنفذ الواجهة الأمامية 8012. إذا كنت بحاجة إلى تغييره، فقم بتغيير docker-compose.yml بنفسك.
إذا كنت تريد تنفيذ الأمر docker-compose exec <اسم الخدمة> <command>
إعطاء الكستناء:
إذا كنت أرغب في تنفيذ أمر تغيير البيانات التي تم إنشاؤها في الخلفية. python manage.py makemigrations
ثم استخدم العبارة التالية
docker-compose exec backend python manage.py makemigrations
أولاً، يجب أن تكون قادرًا على استخدام إطار عمل Django-rest وفهم حل الواجهة الأمامية vue-element-admin.
يستخدم هذا المشروع توجيه الواجهة الأمامية، تقرأ الواجهة الخلفية رمز إذن المستخدم وفقًا لدور المستخدم وتعيده إلى الواجهة الأمامية، والتي يتم تحميلها بواسطة الواجهة الأمامية (الرمز الأساسي هو سمة التصريح وطريقة التحقق من الأذونات). في جدول التوجيه)
يعيد الكود الأساسي لأذونات وظيفة الواجهة الخلفية كتابة طريقة has_permission ضمن server/apps/system/permission.py، ويحدد رموز أذونات perms في APIView وViewSet.
نظرًا لأن أذونات البيانات مرتبطة بأعمال تجارية محددة، فإننا ببساطة نحدد بعض القواعد ونعيد كتابة طريقة has_object_permission، ويمكنك استخدامها حسب الحاجة.
نظرًا لأن الوضع الفعلي أكثر تعقيدًا، فمن المستحسن أن تكتب فئة الأذونات الخاصة بـ drf بنفسك وفقًا للمواقف المختلفة.
تم تنفيذه باستخدام حزم الكرفس وdjango_celery_beat
تحتاج إلى تثبيت redis وتشغيله على المنفذ الافتراضي وبدء تشغيل العامل والتغلب عليه
أدخل إلى البيئة الافتراضية وابدأ العامل: celery -A server worker -l info -P eventlet
، ليست هناك حاجة لإضافة -P eventst لأنظمة Linux
أدخل البيئة الافتراضية وابدأ بالإيقاع: celery -A server beat -l info
تشير وحدة سير العمل إلى تنفيذ loonflow ويمكنها عرض وثائقها (المنطق هو نفسه، بفضل loonflow، تم تحميل معظم التعليمات البرمجية).
إذا كنت ترغب في التواصل، يمكنك الانضمام إلى مجموعة QQ 235665873 أو مجموعة WeChat