commit aea98da5761e444e9c5e939d4cac6d33a78adb01 Author: cs151098 <85884343+cs151098@users.noreply.github.com> Date: Mon Jun 14 16:36:16 2021 +0300 Add files via upload diff --git a/cs151098_Project.md b/cs151098_Project.md new file mode 100644 index 0000000..c57dd4c --- /dev/null +++ b/cs151098_Project.md @@ -0,0 +1,160 @@ + +# Project Υπολογιστικής Νέφους και Υπηρεσιών + +>## Ναθαναήλ Αντώνιος +>## cs151098 +>## Εξάμηνο: 12ο + +## Αρχική παρουσίαση εφαρμογών +- Tυχαία υπηρεσία δημιουργίας τυχαίων αριθμών και απαρίθμηση αυτών (θύρα 800). + +- Υπηρεσία CRUD για έναν χρήστη: Δημιουργία, Ανάγνωση, Ενημέρωση και αποσύνδεση λειτουργιών σε μια συλλογή χρηστών (θύρα 81) + +- Μηχανή αναζήτησης πλήρους κειμένου υποστηριζόμενη από ευρετήριο της MongoDb (θύρα 82) + +- Μια επίδειξη με μεταφορτώσεις φωτογραφικών αρχείων, hash search και χρήση docker volumes. Επίσης θα είναι διαθέσιμη μια αναζήτηση μέσω API εικόνας (θύρα 85) + +- Μια εικονική βιβλιοθήκη, διαθέτει μεθόδους API για μηχανισμούς διαχείρισης και δανεισμού βιβλίων. Οι χρήστες πρέπει να έχουν δημιουργήσει "προφίλ" χρησιμοποιώντας την υπηρεσία User CRUD. (θύρα 86) + +- Grafana με αποθηκευτικό χώρο InfluxDb. Για εμφάνιση γραφημάτων σε αισθητήρες. Συνδέεται με την υπηρεσία MQTT. Κάθε σημείο δεδομένων που περνά μέσω της υπηρεσίας MQTT θα αποθηκεύεται στο InfluxDb και θα εμφανίζεται σε Grafana. (θύρα 3000) Τα προεπιλεγμένα διαπιστευτήρια είναι: admin / admin (Εγκατάσταση της MQTT: sudo apt-get install mosquitto-clients) + +## Έλεγχος θυρών και εγκατάσταση curl + +cd docker-flask-mongodb-example +./check_ports.sh + +>port 800 is free +port 81 is free +port 82 is free +port 85 is free +port 86 is free +port 3000 is free + +sudo apt-get install curl + + +## Έναρξη microservices + +cd docker-flask-mongodb-example +docker-compose build +docker-compose up + +## Εφαρμογή 1: + +Αυτή η υπηρεσία δημιουργεί τυχαίους αριθμούς και τους αποθηκεύει σε έναν συγκεκριμένο πίνακα (5 από αυτούς). Επίσης μπορεί να δημιουργήσει και να επιστρέψει έναν τυχαίο αριθμό. + +- Δημιουργία τυχαίου αριθμού μεταξύ 10 και 100 και επιστροφή: + >curl -i "http://localhost:800/random?lower=10&upper=100" + +- Δημιουργία τυχαίου αριθμού μεταξύ 10 και 100 και αποθήκευση στον πίνακα: + >curl -X PUT -i "http://localhost:800/random" -d lower=10 -d upper=20 + +- Εμφάνιση τελευταίων 5 δημιουργημένων αριθμών: + >curl -i "http://localhost:800/random-list" + + +## Εφαρμογή 2 + +CRUD σημαίνει create, read, update και delete. Ένας χρήστης έχει ένα id, email και ένα όνομα + +- curl POST: Προσθήκη χρήστη με ένα email, όνομα και userid: + >curl -X POST -d email=cs151098@uniwa.gr -d name=Antonis http://localhost:81/users/151 + +- curl PUT: Αλλαγή ονόματος, email ή και των δύο, στον χρήστη με το αντίστοιχο userid: + >curl -X PUT -d email=cs15109879@uniwa.gr http://localhost:81/users/155 + +- curl GΕT: Εμφάνιση των στοιχείων του χρήστη με το δοθέν userid + >curl -i "http://localhost:81/users/96" + +- curl DELETE: Διαγραφή του χρήστη με το δοθέν userid: + >curl -X DELETE -i "http://localhost:81/users/96" + +## Εφαρμογή 3: + +Χρησιμοποιείται μία REST API για την εισαγωγή ενός κειμένου σε μία βάση πλήρους κειμένου, ενώ επανακτά τις 10 τελευταίες εισαγωγές. + +- Προσθήκη νέας έκφρασης: + + >curl -u admin:changeme -X PUT -d expression="Magical Educational Institute of Athens" http://localhost:82/fulltext + +- Εμφάνιση αποθηκευμένων κειμένων που περιέχουν τη λέξη "of": + + >curl -u admin:changeme -i "http://localhost:82/search/of" + + +## Εφαρμογή 4: + +Εργαλεία προς εργασία σχετική με αρχεία εικόνας. Upload, Delete, resize, rotate, brightness και αναζήτηση με βάση την ανεβασμένη εικόνα. + +- Αλλαγή μεγέθους φωτογραφίας που έχει id=3: + >curl -i "http://localhost:85/photo/3?resize=100" + +- Διαγραφή φωτογραφίας που έχει id=3: + >curl -X DELETE http://localhost:85/photo/3 + +- Προσθήκη φωτογραφίας που έχει id=3: + >curl -X PUT -F "file=@stefanosxios.jpg" http://localhost:85/photo/3 + +- Αναζήτηση σχετικής φωτογραφίας: + >curl -X PUT -F "file=@giorgosleventis.jpg" http://localhost:85/photo/similar + +## Εφαρμογή 5: + +Οι λογαριασμοί των χρηστών της βιβλιοθήκης δημιουργήθηκαν στην εφαρμογή 2. + +- Προσθήκη βιβλίου + >curl -X PUT "http://localhost:86/book/978-1607965503" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"isbn\": \"978-1607965503\", \"name\": \"Lincoln the Unknown\", \"author\": \"Dale Carnegie\", \"publisher\": \"snowballpublishing\", \"nr_available\": 5}" + +- Εμφάνιση βιβλίου + >curl -i "curl -X GET "http://localhost:86/book/978-1607965503" -H "accept: application/json"" + +- Εμφάνιση όλων των βιβλίων + >curl -X GET "http://localhost:86/book?limit=5&offset=0" -H "accept: application/json" + +- Διαγραφή βιβλίου + >curl -X DELETE "http://localhost:86/book/1" -H "accept: application/json" + +- Δανεισμός βιβλίου + >curl -X PUT "http://localhost:5000/borrow/1" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"id\": \"1\", \"userid\": 4, \"isbn\": \"978-1607965503\", \"borrow_date\": \"2019-12-12T09:32:51.715Z\", \"return_date\": \"2020-02-12T09:32:51.715Z\"}" + +- Εμφάνιση λίστας δανεισμών + >curl -X GET "http://localhost:86/borrow?limit=2&offset=0" -H "accept: application/json" + +- Επιστροφή βιβλίου + >curl -X PUT "http://localhost:86/borrow/return/16" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"id\": \"16\", \"return_date\": \"2019-12-13T08:48:47.899Z\"}" + + +## Εφαρμογή 6: + +Grafana με υλοποίηση Influx Db για την εμφάνιση δεδομένων αισθητήρων. +- Τα default στοιχεία είναι admin/admin +- Το web interface: http://localhost:3000 + +Η docker εικόνα του Grafana δημιουργεί ένα dashboard που ονομάζεται "SensorMetrics", οπότε στο interface επιλέγουμε "Home". + +- Προσθήκη υγρασίας με τιμή 74 κατευθείαν στην βάση δεδομένων InfluxDb: + >curl -i -XPOST 'http://localhost:8086/write?db=influx' --data-binary 'humidity value=74' + +- Προσθήκη υγρασίας με τιμή 74 χρησιμοποιώντας MQTT: + >mosquitto_pub -h localhost -u some_user -P some_pass -p 1883 -d -t sensors -m "{\"sensor_id\": \"humidity\", \"sensor_value\": 74}" + +Έπειτα, μπορούν να εμφανιστούν τα γραφήματα. + + - Επιλογή του *SensorMetrics* + - Άνω δεξιά, επιλογή "Last 5 minutes" + - Επιλογή κατηγορίας που προστέθηκαν εγγραφές *(εν προκειμένω humidity)* + - Σύνδεση με την τοπική *InfluxDb* + >docker ps + - Έναρξη του influx shell, αλλάζοντας το 035124f1b665 με το προσωπικό container id + >docker exec -it 035124f1b665 influx + - Τώρα υπάρχει πρόσβαση στο influx shell, όπου υπάρχει η δυνατότητα των παρακάτω εντολών: + > SHOW DATABASES +-- Εμφάνιση όλων των βάσεων δεδομένων +USE influx +-- επιλογή "influx" βάσης δεδομένων +SHOW MEASUREMENTS +-- εμφάνιση τρεχόντων μετρήσεων, όπως humidity, temperature κλπ. +SELECT * from "humidity" +-- Εμφάνιση όλων των εγγραφών που αφορούν το humidity + - List item + diff --git a/cs151098_Project.zip b/cs151098_Project.zip new file mode 100644 index 0000000..855577f Binary files /dev/null and b/cs151098_Project.zip differ