ملحوظة: تم استبدال هذا الريبو بـ picili-ts.
picili هو محرك بحث / متصفح آلي للصور يتزامن مع المجلد المختار في صندوق الإسقاط الخاص بك. فهو يقوم تلقائيًا بتحليل جميع الصور هناك، ويبقى على اطلاع بأي صور تضيفها أو تزيلها أو تغيرها. يسهل تطبيق الويب خفيف الوزن التصفح والبحث من خلال صورك. تم تصميم تطبيق الويب للتوافق الدقيق مع الأنواع المختلفة من العلامات التي يصنف picili صورك بها. ويستخدم بعض واجهات برمجة التطبيقات الخارجية للمساعدة في وضع العلامات، ولكنه مصمم للبقاء ضمن الطبقة المجانية لكل منها. لذلك يجب أن يتم الدفع مقابل VPS فقط.
تم إنشاء أنواع العلامات | يتطلب بيانات GPS exif | يستخدم واجهة برمجة التطبيقات الخارجية |
---|---|---|
الدلائل | ||
تاريخ | ||
بيانات exif | ||
موضوع | ✓ | |
العنوان / الموقع | ✓ | ✓ |
ارتفاع | ✓ | ✓ |
الأنواع النباتية | ✓ | |
لوحات أرقام | ✓ | |
النص / التعرف الضوئي على الحروف | ✓ |
كيف يعمل
يثبت
العمل على بيتشيلي
جارٍ النشر
يقوم المستخدم بالتسجيل وربط حساب صندوق الإسقاط الخاص به من خلال OAuth
يقوم المستخدم بعد ذلك بإدخال مجلد في صندوق الإسقاط الخاص به حيث يقوم بتخزين صوره
صندوق إسقاط picili لاستطلاعات الرأي كل x دقيقة، للحصول على قائمة بالملفات.
يقارن بجميع الملفات التي حددتها حتى الآن.
يضيف أي ملفات جديدة إلى قائمة محلية ويضعها في قائمة الانتظار ليتم استيرادها، ويزيل أي ملفات محذوفة الآن.
يتم تنزيل كل الملفات الموجودة في قائمة الانتظار محليًا، ومعالجتها، ثم حذفها محليًا
تتكون المعالجة من
الترميز الجغرافي: الحصول على معلومات الموقع (عبر واجهة برمجة التطبيقات الخارجية)
ترميز الارتفاع: اشتقاق الارتفاع بالأمتار من خط العرض/خط الطول (عبر واجهة برمجة التطبيقات الخارجية)
إنشاء الصور المصغرة
استخراج معلومات exif
تحديد الألوان
إرسال الصورة إلى API التعرف على الموضوع
إذا كانت الصورة تحتوي على بيانات Geo exif
الأجزاء الرئيسية:
SPA: الواجهة الأمامية عبارة عن تطبيق Angular ذو صفحة واحدة (SPA)
واجهة برمجة التطبيقات (API): واجهة برمجة تطبيقات PHP تم إنشاؤها باستخدام laravel والتي يستدعيها SPA
تلقائي: مشروع منفصل يعمل في الخلفية وهو أيضًا مشروع Laravel PHP، ويقوم بكل مزامنة صندوق الإسقاط ووضع علامات على الملفات/معالجتها.
Auto-Scaler: مشروع عقدة js صغير يعمل على توسيع نطاق مثيلات المشروع التلقائي بناءً على الطلب
التقنيات:
SPA: JS / Typescript / Angular 7 / SASS / Gulp
المقياس التلقائي: Node JS
واجهة برمجة التطبيقات / تلقائي: PHP / Laravel / Elasticsearch / MySQL
*: عامل الميناء
Mac: قم بإلحاق حجم مساحة العمل بـ :cached
. لذلك - ./www-workspace:/var/www
يصبح - ./www-workspace:/var/www:cached
Linux: قد تحتاج إلى تشغيل sudo sysctl vm.max_map_count=262144
للتأكد من إمكانية تشغيل Elasticsearch بشكل صحيح
تم إرساء Picili بالكامل.
cd
في المجلد الجذر
قم بإنشاء وتكوين ملف env من النموذج cp .env.sample .env
، مع التأكد من تحديث المفاتيح التالية:
APP_KEY (يجب أن يتكون من 32 حرفًا)
APP_URL (على سبيل المثال http://localhost)
DROPBOX_CLIENT_ID (مفتاح التطبيق)
DROPBOX_CLIENT_SECRET (سر التطبيق)
API_GOOGLE_ELEVATION_KEY
API_OPEN_CAGE_KEY
API_IMAGGA_KEY
API_IMAGGA_SECRET
API_PLANT_NET_KEY
AWS_KEY
AWS_SECRET
AWS_REGION
قم بتشغيل docker-compose up -d
للبناء
في المرة الأولى التي تقوم فيها بتشغيل picili محليًا، يجب عليك إنشاء البيانات الأولية الضرورية:
docker-compose run workspace bash "./local-setup.sh"
أصبح picili الآن جاهزًا للتشغيل ويجب الوصول إليه من http://localhost
انقر فوق "تسجيل الدخول" ثم قم بالتسجيل للبدء.
سوف تحتاج إلى بدء القياس التلقائي، حتى تتم معالجة الصور "في الخلفية".
لبدء المعالج (المعالجات) التلقائي: cd /var/www/auto-scaler && npm start
(يجب تشغيل هذا من داخل حاوية مساحة العمل - docker-compose run workspace bash "cd /var/www/auto-scaler && npm start"
)
افعل كل ما يتعلق بالتطوير في حاوية مساحة العمل: docker-compose run workspace bash
اختبارات واجهة برمجة التطبيقات: cd /var/www/user-api-laravel && vendor/bin/phpunit
الاختبارات التلقائية: cd /var/www/auto && vendor/bin/phpunit
cd /var/www/user-api-laravel && vendor/bin/phpunit --filter testUpdateDropboxFilesource tests/Feature/BlackboxTest
سبا: http://localhost
واجهة برمجة التطبيقات مباشرة: http://localhost:81
PHP myAdmin: http://localhost:8080
المضيف: الخلية
المستخدم: الجذر
كلمة المرور: كلمة المرور (لا تتبع قيم البيئة على الإطلاق..)
كيبانا http://localhost:5601/
متصفح وحدة التحكم: http://localhost:5601/app/kibana#/dev_tools/console?_g=()
ديجافو http://localhost:1358
عند إدخال تفاصيل المجموعة بعناية، يجب أن يحتوي معرف URI على البروتوكول والمنفذ بالإضافة إلى المضيف: (URI: http://localhost:9200
وindex: files
)
واجهة برمجة تطبيقات TS: http://localhost:3200/graphql
رد فعل الواجهة الأمامية لـ TS: http://localhost:3201
(يتم تشغيله من حاوية مساحة العمل)
حذف مرن: cd /var/www/auto && php artisan elastic-delete
إنشاء فهرس مرن: cd /var/www/auto && php artisan elastic-create
إعادة الفهرسة: cd /var/www/auto && php artisan index-all
إعادة الإنشاء: cd /var/www/auto && php artisan elastic-delete && php artisan elastic-create
الكل (إعادة الإنشاء وإعادة الفهرسة): cd /var/www/auto && php artisan elastic-delete && php artisan elastic-create && php artisan index-all
المضيف: 127.0.0.1
المستخدم: الجذر
كلمة المرور: كلمة المرور
يتم تشغيله من داخل spa
لحاوية عامل الإرساء. تم بناء المنتجع الصحي وإدارته وفقًا للمعايير، لذا ما عليك سوى العمل على مصدر المنتجع الصحي وسيستمر في إعادة البناء تلقائيًا. إذا كنت تريد الدخول إلى الحاوية، فقم بتشغيل docker-compose run spa sh
يتم تقديم التطبيق على localhost:80
ويتصل بواجهة برمجة التطبيقات التي تعمل على localhost:81
(بافتراض أنك قمت بالفعل بتشغيل docker-compose up [-d]
لبدء "الواجهة الخلفية".
إذا كنت تخطط لتحرير ملفات sass، فقم أيضًا بتشغيل docker-compose run spa yarn run gulp-watch
.
يتم تمكين تصحيح الأخطاء عبر مهمة vscode. أضف نقاط توقف إلى أي رمز على جانب الخادم، ثم اضغط على F5 لبدء تصحيح الأخطاء. سيتوقف التطبيق مؤقتًا عندما يصل (عبر طلب http) إلى نقطة توقف.
محليًا، يعمل SPA وAPI على منفذ المضيف المحلي 80 و81 على التوالي. في الإنتاج، يعمل كلاهما على المنفذ 80، ويتم تقديمهما كموقع ويب واحد. تخدم واجهة برمجة التطبيقات SPA التي تم نسخها إلى المجلد العام الخاص بها كجزء من عملية الإنشاء.
الزاوي - القديم - SPA: https://[YOUR IP/SITE]
php - القديم - API: https://[YOUR IP/SITE]:81
رد فعل - جديد - SPA: http://[YOUR IP/SITE]:82
(ملاحظة: ليس https/ssl)
ts - جديد - واجهة برمجة التطبيقات: https://[YOUR IP/SITE]:3200
bash ./deploy-scripts/initial-deploy
سيقوم بإنشاء/تكوين VPS وإعداد المشروع.
بشكل منفصل:
قم بتحديث تطبيق صندوق الإسقاط الخاص بك للحصول على عنوان URI لإعادة التوجيه المسموح به: https://[YOUR IP/SITE]/oauth/dropbox
git دفع/دمج التغييرات لإتقانها
تحديث الملفات البعيدة، وإعادة تشغيل الصور (بما في ذلك المقياس التلقائي، وإعادة بناء المنتجع الصحي أيضًا) bash ./deploy-scripts/run-remote-update.sh
*إذا كانت التغييرات في SPA، فقم بمسح ذاكرة التخزين المؤقت (على سبيل المثال، cloudflare)
اضرب في حاوية لترى ما يحدث:
ssh في الخادم: docker-machine ssh picili
منتجع صحي: docker-compose -f docker-compose.prod.yml run spa sh
php-fpm: docker-compose -f docker-compose.prod.yml run php-fpm bash
مساحة العمل: docker-compose -f docker-compose.prod.yml run workspace bash
قم بتنزيل ملف السجل: docker-machine scp picili:/picili/www-workspace/user-api-laravel/storage/logs/laravel.log .
سيقوم بتنزيل ملف laravel.log
في الدليل المحلي
قم بتنزيل جميع السجلات (إلى ./serverlogs
): bash ./deploy-scripts/download.logs.sh