From c6f45b0115f19f79479c2461b3125d8465a422c0 Mon Sep 17 00:00:00 2001 From: cs131014 Date: Tue, 9 Jun 2020 13:10:16 +0000 Subject: [PATCH] Upload files to 'adoc&html_files' --- adoc&html_files/README.adoc | 198 ++++++++++ adoc&html_files/README.html | 728 ++++++++++++++++++++++++++++++++++++ 2 files changed, 926 insertions(+) create mode 100644 adoc&html_files/README.adoc create mode 100644 adoc&html_files/README.html diff --git a/adoc&html_files/README.adoc b/adoc&html_files/README.adoc new file mode 100644 index 0000000..dc418b3 --- /dev/null +++ b/adoc&html_files/README.adoc @@ -0,0 +1,198 @@ += README + +Για να συνδεθούμε στην εικονική μηχανή τρέχουμε την εντολή. + +[source, console] +---- +ssh user@ +password: **** +---- + +image::https://i.imgur.com/P4ViujF.png[] + +[CAUTION] +Πρέπει να είστε συνδεδεμένοι στο https://wiki.noc.uniwa.gr/doku.php?id=vpn_service_openvpn[VPN - Πανεπιστημίου Δυτικής Αττικής] + +== Τεχνολογίες + +Για την υλοποίηση της εργασίας χρησιμοποιήθηκε η τεχνολογία *Docker* το οποίο εικονικοποιεί σε επίπεδο λειτουργικού συστήματος. + +[source, console] +---- +sudo apt-get update +sudo apt install docker.io +sudo systemctl start docker +sudo systemctl enable docker +---- + +[TIP] +Για να ελέγξουμε ότι η υπηρεσία του *Docker* λειτουργεί εκτελούμε την εντολή + +[source, console] +---- +docker --version +---- + +== Εκτέλεση Εργασίας + +Αρχικά, δημιουργούμε το δικό μας image για τον *nginx* ανάλογα με τις ανάγκες της υπηρεσίας μας. + +Το αποθηκεύουμε σε ένα αρχείο ονομάζοντας το [underline]#Dockerfile# + +Επόμενο βήμα είναι η εκτέλεση της παρακάτω εντολής για τη δημιουργία του image + +[source, console] +---- +docker build -f Dockerfile -t anginx . +---- + +[NOTE] +==== +Οptions: + +* -f προσδιορίζει το αρχείο για το build +* -t tag (το όνομα του image) +* "." είναι το current directory +==== + +Όλα τα services τα οποία θα τρέξουν στην εργασία μας βρίσκονται στο αρχείο [underline]#docker-compose.yml# + +Αναλυτικά: + +=== Nginx + +[source, yml] +---- +nginx: + image: anginx #image from docker building my Dockerfile (docker build -f Dockerfile -t anginx .) // <1> + container_name: production_nginx // <2> + volumes: // <3> + - /home/user/docker/nginx.conf:/etc/nginx/conf.d/default.conf + - /home/user/docker/cert.pem:/etc/nginx/public.crt + - /home/user/docker/key.pem:/etc/nginx/private.key + ports: // <4> + - 9080:80 + - 9443:443 + networks: // <5> + - main_net +---- + +=== MariaDB +[source, yml] +---- +mariadb: + image: mariadb // <1> + container_name: mariadb // <2> + volumes: // <3> + - db_data:/var/lib/mysql + environment: // <8> + MYSQL_ROOT_PASSWORD: wordpress + MYSQL_DATABASE: wordpress + networks: // <5> + - main_net +---- + +=== WordPress +[source, yml] +---- +wordpress: + image: wordpress:latest // <1> + container_name: wordpress // <2> + restart: always + deploy: #create replicas with specific resources // <6> + mode: replicated + replicas: 2 +# max_replicas_per_node: 1 + resources: + limits: #max resources + cpus: '0.50' + memory: 50M + reservations: #default resources + cpus: '0.25' + memory: 20M + ports: // <4> + - 80:80 + volumes: // <3> + - wp-app:/var/www/html + environment: // <8> + WORDPRESS_DB_HOST: mariadb:3306 + WORDPRESS_DB_NAME: wordpress + WORDPRESS_DB_USER: root + WORDPRESS_DB_PASSWORD: wordpress + networks: // <5> + - main_net + depends_on: // <7> + - mariadb +---- + +=== PHPMyAdmin +[source, yml] +---- +phpmyadmin: + image: phpmyadmin/phpmyadmin // <1> + container_name: phpmyadmin // <2> + deploy: // <6> + mode: replicated + replicas: 2 +# max_replicas_per_node: 1 + resources: + limits: + cpus: '0.50' + memory: 50M + reservations: + cpus: '0.25' + memory: 20M + environment: // <8> + PMA_HOST: mariadb + MYSQL_ROOT_PASSWORD: wordpress + PMA_PORT: 3306 + ports: // <4> + - 8080:80 + networks: // <5> + - main_net +---- + +=== Minio +[source, yml] +---- +minio1: + image: minio/minio:RELEASE.2020-04-10T03-34-42Z // <1> + hostname: minio1 + volumes: // <3> + - minio1-data:/export + ports: // <4> + - "9001:9000" + networks: // <5> + - minio_distributed + deploy: // <6> + restart_policy: + delay: 10s + max_attempts: 10 + window: 60s + placement: + constraints: + - node.labels.minio1==true + command: server http://minio{1...4}/export + environment: // <8> + MINIO_ACCESS_KEY: AKIAIOSFODNN7EXAMPLE + MINIO_SECRET_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY + # secrets: + # - secret_key + # - access_key + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 30s + timeout: 20s + retries: 3 +---- + +=== Configuration Options: +:nofooter: +<1> image: Το image file από το οποίο θα τρέξει το service +<2> container_name: Είναι το όνομα του service +<3> volumes: "Mount host paths or named volumes from our VM to the service" +<4> ports: Είναι τα ports τα οποία κάνουμε expose "στον έξω" κόσμο +<5> networks: Είναι το εικονικό δίκτυο στο οποίο θα τρέξει το service +<6> deploy: Κάνουμε specify τα resources και τον αριθμό των replicas που θα τρέξουν +<7> depends_on: "Express dependency between services" +<8> environment: "Add environment variables" \ No newline at end of file diff --git a/adoc&html_files/README.html b/adoc&html_files/README.html new file mode 100644 index 0000000..98c5175 --- /dev/null +++ b/adoc&html_files/README.html @@ -0,0 +1,728 @@ + + + + + + + +README + + + + + +
+
+
+
+

Για να συνδεθούμε στην εικονική μηχανή τρέχουμε την εντολή.

+
+
+
+
ssh user@<ip>
+password: ****
+
+
+
+
+P4ViujF +
+
+
+ + + + + +
+
Caution
+
+Πρέπει να είστε συνδεδεμένοι στο VPN - Πανεπιστημίου Δυτικής Αττικής +
+
+
+
+
+

Τεχνολογίες

+
+
+

Για την υλοποίηση της εργασίας χρησιμοποιήθηκε η τεχνολογία Docker το οποίο εικονικοποιεί σε επίπεδο λειτουργικού συστήματος.

+
+
+
+
sudo apt-get update
+sudo apt install docker.io
+sudo systemctl start docker
+sudo systemctl enable docker
+
+
+
+ + + + + +
+
Tip
+
+Για να ελέγξουμε ότι η υπηρεσία του Docker λειτουργεί εκτελούμε την εντολή +
+
+
+
+
docker --version
+
+
+
+
+
+

Εκτέλεση Εργασίας

+
+
+

Αρχικά, δημιουργούμε το δικό μας image για τον nginx ανάλογα με τις ανάγκες της υπηρεσίας μας.

+
+
+

Το αποθηκεύουμε σε ένα αρχείο ονομάζοντας το Dockerfile

+
+
+

Επόμενο βήμα είναι η εκτέλεση της παρακάτω εντολής για τη δημιουργία του image

+
+
+
+
docker build -f Dockerfile -t anginx .
+
+
+
+ + + + + +
+
Note
+
+
+

Οptions:

+
+
+
    +
  • +

    -f προσδιορίζει το αρχείο για το build

    +
  • +
  • +

    -t tag (το όνομα του image)

    +
  • +
  • +

    "." είναι το current directory

    +
  • +
+
+
+
+
+

Όλα τα services τα οποία θα τρέξουν στην εργασία μας βρίσκονται στο αρχείο docker-compose.yml

+
+
+

Αναλυτικά:

+
+
+

Nginx

+
+
+
nginx:
+    image: anginx #image from docker building my Dockerfile (docker build -f Dockerfile -t anginx .)  // (1)
+    container_name: production_nginx // (2)
+    volumes:  // (3)
+      - /home/user/docker/nginx.conf:/etc/nginx/conf.d/default.conf
+      - /home/user/docker/cert.pem:/etc/nginx/public.crt
+      - /home/user/docker/key.pem:/etc/nginx/private.key
+    ports: // (4)
+      - 9080:80
+      - 9443:443
+    networks: // (5)
+      - main_net
+
+
+
+
+

MariaDB

+
+
+
mariadb:
+    image: mariadb // (1)
+    container_name: mariadb // (2)
+    volumes:  // (3)
+      - db_data:/var/lib/mysql
+    environment: // (8)
+       MYSQL_ROOT_PASSWORD: wordpress
+       MYSQL_DATABASE: wordpress
+    networks: // (5)
+      - main_net
+
+
+
+
+

WordPress

+
+
+
wordpress:
+    image: wordpress:latest // (1)
+    container_name: wordpress // (2)
+    restart: always
+    deploy: #create replicas with specific resources // (6)
+      mode: replicated
+      replicas: 2
+#      max_replicas_per_node: 1
+      resources:
+        limits: #max resources
+          cpus: '0.50'
+          memory: 50M
+        reservations: #default resources
+          cpus: '0.25'
+          memory: 20M
+    ports: // (4)
+      - 80:80
+    volumes:  // (3)
+      - wp-app:/var/www/html
+    environment: // (8)
+      WORDPRESS_DB_HOST: mariadb:3306
+      WORDPRESS_DB_NAME: wordpress
+      WORDPRESS_DB_USER: root
+      WORDPRESS_DB_PASSWORD: wordpress
+    networks: // (5)
+      - main_net
+    depends_on:  // (7)
+      - mariadb
+
+
+
+
+

PHPMyAdmin

+
+
+
phpmyadmin:
+    image: phpmyadmin/phpmyadmin // (1)
+    container_name: phpmyadmin // (2)
+    deploy: // (6)
+      mode: replicated
+      replicas: 2
+#      max_replicas_per_node: 1
+      resources:
+        limits:
+          cpus: '0.50'
+          memory: 50M
+        reservations:
+          cpus: '0.25'
+          memory: 20M
+    environment: // (8)
+      PMA_HOST: mariadb
+      MYSQL_ROOT_PASSWORD: wordpress
+      PMA_PORT: 3306
+    ports: // (4)
+      - 8080:80
+    networks: // (5)
+      - main_net
+
+
+
+
+

Minio

+
+
+
minio1:
+    image: minio/minio:RELEASE.2020-04-10T03-34-42Z // (1)
+    hostname: minio1
+    volumes:  // (3)
+      - minio1-data:/export
+    ports: // (4)
+      - "9001:9000"
+    networks: // (5)
+      - minio_distributed
+    deploy: // (6)
+      restart_policy:
+        delay: 10s
+        max_attempts: 10
+        window: 60s
+      placement:
+        constraints:
+          - node.labels.minio1==true
+    command: server http://minio{1...4}/export
+    environment: // (8)
+       MINIO_ACCESS_KEY: AKIAIOSFODNN7EXAMPLE
+       MINIO_SECRET_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
+    # secrets:
+      # - secret_key
+      # - access_key
+    healthcheck:
+      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
+      interval: 30s
+      timeout: 20s
+      retries: 3
+
+
+
+
+

Configuration Options:

+
+
    +
  1. +

    image: Το image file από το οποίο θα τρέξει το service

    +
  2. +
  3. +

    container_name: Είναι το όνομα του service

    +
  4. +
  5. +

    volumes: "Mount host paths or named volumes from our VM to the service"

    +
  6. +
  7. +

    ports: Είναι τα ports τα οποία κάνουμε expose "στον έξω" κόσμο

    +
  8. +
  9. +

    networks: Είναι το εικονικό δίκτυο στο οποίο θα τρέξει το service

    +
  10. +
  11. +

    deploy: Κάνουμε specify τα resources και τον αριθμό των replicas που θα τρέξουν

    +
  12. +
  13. +

    depends_on: "Express dependency between services"

    +
  14. +
  15. +

    environment: "Add environment variables"

    +
  16. +
+
+
+
+
+
+ + \ No newline at end of file