หมายเหตุ: REPO นี้ถูกแทนที่ด้วย picili-ts
picili คือเครื่องมือค้นหา/เบราว์เซอร์รูปภาพอัตโนมัติที่ซิงโครไนซ์กับโฟลเดอร์ที่เลือกในดรอปบ็อกซ์ของคุณ มันจะวิเคราะห์รูปภาพทั้งหมดที่นั่นโดยอัตโนมัติ โดยคอยอัปเดตรูปภาพที่คุณเพิ่ม ลบ หรือเปลี่ยนแปลงอยู่เสมอ แอปพลิเคชันเว็บน้ำหนักเบาอำนวยความสะดวกในการเรียกดูและค้นหารูปภาพของคุณ แอปพลิเคชันเว็บได้รับการออกแบบเพื่อให้สอดคล้องกับแท็กประเภทต่างๆ ที่ picili จัดหมวดหมู่รูปภาพของคุณ โดยจะใช้ API ภายนอกบางตัวเพื่อช่วยในการติดแท็ก แต่ได้รับการออกแบบมาให้คงอยู่ภายใน Free Tier ของแต่ละรายการ ดังนั้นจึงต้องจ่ายเพียง VPS เท่านั้น
ประเภทแท็กที่สร้างขึ้น | ต้องใช้ข้อมูล GPS EXIF | ใช้ API ภายนอก |
---|---|---|
ไดเรกทอรี | ||
วันที่ | ||
ข้อมูล EXIF | ||
เรื่อง | ||
ที่อยู่ / ที่ตั้ง | ||
ระดับความสูง | ||
พันธุ์พืช | ||
ป้ายทะเบียน | ||
ข้อความ / OCR |
มันทำงานอย่างไร
ตั้งค่า
การทำงานเกี่ยวกับพิซิลิ
กำลังปรับใช้
ผู้ใช้ลงทะเบียนและเชื่อมต่อบัญชีดรอปบ็อกซ์ผ่าน OAuth
จากนั้นผู้ใช้จะเข้าสู่โฟลเดอร์ในดรอปบ็อกซ์เพื่อจัดเก็บรูปภาพ
picili สำรวจดรอปบ็อกซ์ทุก ๆ x นาทีเพื่อรับรายการไฟล์
เปรียบเทียบกับไฟล์ทั้งหมดที่ระบุจนถึงตอนนี้
เพิ่มไฟล์ใหม่ลงในรายการในเครื่องและจัดคิวเพื่อนำเข้า และลบไฟล์ที่ถูกลบออกไปแล้ว
ไฟล์ที่อยู่ในคิวแต่ละไฟล์จะถูกดาวน์โหลดในเครื่อง ประมวลผล แล้วลบออกในเครื่อง
การประมวลผลประกอบด้วย
geocoding: รับข้อมูลตำแหน่ง (ผ่าน API ภายนอก)
การเข้ารหัสความสูง: รับระดับความสูงเป็นเมตรจากละติจูด/ลองจิจูด (ผ่าน API ภายนอก)
การสร้างภาพขนาดย่อ
กำลังดึงข้อมูล EXIF
การกำหนดสี
การส่งรูปภาพไปยัง API การจดจำวัตถุ
หากรูปภาพมีข้อมูลทางภูมิศาสตร์ Exif
ส่วนหลัก:
SPA: ส่วนหน้าเป็นแอปพลิเคชันหน้าเดียวเชิงมุม (SPA)
API: PHP API สร้างขึ้นโดยใช้ laravel ซึ่ง SPA เรียก
อัตโนมัติ: โปรเจ็กต์แยกที่ทำงานในพื้นหลังซึ่งเป็นโปรเจ็กต์ Laravel PHP ด้วยเช่นกัน ซึ่งจะทำการซิงโครไนซ์ดรอปบ็อกซ์และการแท็ก/ประมวลผลไฟล์ทั้งหมด
Auto-Scaler: โปรเจ็กต์โหนด js ขนาดเล็กที่ขยายขนาดอินสแตนซ์ของโปรเจ็กต์ Auto ตามความต้องการ
เทคโนโลยี:
SPA: JS / Typescript / เชิงมุม 7 / SASS / อึก
ตัวปรับขนาดอัตโนมัติ: โหนด JS
API / อัตโนมัติ: 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
การทดสอบ API: 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
API โดยตรง: http://localhost:81
PHP myAdmin: http://localhost:8080
โฮสต์: mysql
ผู้ใช้: รูท
รหัสผ่าน: รหัสผ่าน (ไม่เป็นไปตามค่า env เลย..)
คิบานะ http://localhost:5601/
เบราว์เซอร์คอนโซล: http://localhost:5601/app/kibana#/dev_tools/console?_g=()
เดจาวู http://localhost:1358
การป้อนรายละเอียดคลัสเตอร์อย่างระมัดระวัง URI ควรมีโปรโตคอลและพอร์ตพร้อมกับโฮสต์: (uri: http://localhost:9200
และดัชนี: files
)
TS API: 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
และสื่อสารกับ API ที่ทำงานบน localhost:81
(สมมติว่าคุณได้เรียกใช้ docker-compose up [-d]
เพื่อเริ่ม 'แบ็กเอนด์' แล้ว
หากคุณวางแผนที่จะแก้ไขไฟล์ sass ให้รัน docker-compose run spa yarn run gulp-watch
ด้วย
การดีบักเปิดใช้งานผ่านงาน vscode เพิ่มเบรกพอยต์ให้กับโค้ดฝั่งเซิร์ฟเวอร์ จากนั้นกด F5 เพื่อเริ่มการแก้ไขข้อบกพร่อง แอพจะหยุดชั่วคราวเมื่อถึงจุดพัก (ผ่านการร้องขอ http)
ภายในเครื่อง SPA และ API ทำงานบนพอร์ต localhost 80 และ 81 ตามลำดับ ในการผลิตทั้งคู่ทำงานบนพอร์ต 80 และให้บริการเป็นเว็บไซต์เดียวกัน API ให้บริการ SPA ซึ่งได้รับการคัดลอกไปยังโฟลเดอร์สาธารณะโดยเป็นส่วนหนึ่งของกระบวนการสร้าง
เชิงมุม - เก่า - SPA: https://[YOUR IP/SITE]
php - เก่า - API: https://[YOUR IP/SITE]:81
ตอบสนอง - ใหม่ - SPA: http://[YOUR IP/SITE]:82
(หมายเหตุ: ไม่ใช่ https/ssl)
ts - ใหม่ - API: https://[YOUR IP/SITE]:3200
bash ./deploy-scripts/initial-deploy
จะสร้าง/กำหนดค่า VPS และตั้งค่าโปรเจ็กต์
แยกกัน:
อัปเดตแอปดรอปบ็อกซ์ของคุณให้มี URI การเปลี่ยนเส้นทางที่อนุญาต: https://[YOUR IP/SITE]/oauth/dropbox
git push/merge เปลี่ยนเป็น master
อัปเดตไฟล์ระยะไกล รีสตาร์ทอิมเมจ (รวมตัวปรับขนาดอัตโนมัติและสร้างสปาใหม่ด้วย) 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
ลงใน dir ในเครื่อง
ดาวน์โหลดบันทึกทั้งหมด (ถึง ./serverlogs
): bash ./deploy-scripts/download.logs.sh