Πώς να αναπτύξετε πολλούς ιστότοπους Wordpress χρησιμοποιώντας το Virtualmin και το Ansible στο Ubuntu 16.04

Μια κοινή χρήση ενός εικονικού διακομιστή Vultr είναι η φιλοξενία ιστοσελίδων Wordpress. Αυτός ο οδηγός σάς δείχνει πώς να αυτοματοποιήσετε τη διαμόρφωση ενός εικονικού διακομιστή από την αρχή (χρησιμοποιώντας το Ansible) και να αναπτύξετε πολλούς ανεξάρτητους ιστότοπους του Wordpress (χρησιμοποιώντας Webmin/Virtualmin). Το Virtualmin/Webmin είναι μια γραφική διεπαφή χρήστη που σας επιτρέπει να διαχειρίζεστε την ανάπτυξη πολλαπλών λογαριασμών εικονικών διακομιστή στον ίδιο υπολογιστή (πλήρης με στοίβα LAMP/LEMP). Το Virtualmin μοιάζει πολύ με το cPanel και το Plesk και σε αυτό το σεμινάριο θα χρησιμοποιήσουμε τη δωρεάν έκδοση GPL. Μετά την αρχική εγκατάσταση του διακομιστή Vultr και την εγκατάσταση του Virtualmin, μπορείτε πολύ γρήγορα να ρυθμίσετε πολλούς εικονικούς διακομιστές μέσα από τη διεπαφή Virtualmin και να εγκαταστήσετε απευθείας το Wordpress σε αυτόν τον εικονικό διακομιστή με το δικό του όνομα τομέα.

Σε αυτό το σεμινάριο, αντί να εισάγουμε με μη αυτόματο τρόπο μια μακρά λίστα εντολών, θα χρησιμοποιήσουμε το Ansible. Το Ansible είναι ένα εργαλείο αυτοματισμού που βασίζεται σε python και σας επιτρέπει να αυτοματοποιείτε αξιόπιστα και επανειλημμένα τις εργασίες διακομιστή. Αυτό σημαίνει ότι αφού ακολουθήσετε αυτό το σεμινάριο, θα μπορείτε να αναπτύξετε έναν άλλο διακομιστή με τον ίδιο τρόπο με μερικές μόνο εντολές.

Προαπαιτούμενα

  • Τουλάχιστον ένα Πλήρως Πιστοποιημένο Όνομα Τομέα και πρόσβαση στις εγγραφές DNS
  • Ένας λογαριασμός Vultr

Βήμα 1 - Εγκατάσταση του Ansible στον τοπικό σας υπολογιστή

Εγκαταστήστε το Ansible στον τοπικό σας υπολογιστή ή σε άλλο διακομιστή.

mkdir ansible
cd ansible
virtualenv env
source env/bin/activate
pip install ansible

Βήμα 2 - Δημιουργήστε κλειδιά SSH και αναπτύξτε τον διακομιστή

Το Ansible λειτουργεί με τη σύνδεση στον διακομιστή σας μέσω SSH. Η πρόσβαση SSH είναι πιο ασφαλής εάν χρησιμοποιούμε κλειδιά αντί για κωδικό πρόσβασης. Ας δημιουργήσουμε πρώτα ένα ζεύγος δημόσιου και ιδιωτικού κλειδιού.

mkdir ssh_keys
ssh-keygen -t rsa -b 2048 -f ./ssh_keys

Στον ssh_keysκατάλογο θα υπάρχουν τώρα δύο αρχεία ssh_keysκαι ssh_keys.pub. ssh_keysείναι το αρχείο του ιδιωτικού κλειδιού σας και πρέπει να φυλάσσεται ασφαλές. Τώρα μπορείτε να ανοίξετε το ssh_keys.pub, το οποίο περιέχει το δημόσιο κλειδί.

Συνδεθείτε στον πίνακα ελέγχου ιστού Vultr και κάντε κλικ στο Deploy New Server.

Επιλέξτε μια περιοχή, Τύπος διακομιστή (Ubuntu 16.04), Μέγεθος διακομιστή και, στη συνέχεια, στο μέρος 6 ( SSH keys), κάντε κλικ στο Add New. Στην επόμενη σελίδα επικολλήστε το δημόσιο κλειδί σας και δώστε του ένα όνομα και κάντε κλικ στο Add SSH key. Τέλος, βεβαιωθείτε ότι το κλειδί είναι επιλεγμένο και κάντε κλικ στο Deploy now.
Μόλις ο διακομιστής ολοκληρώσει την ανάπτυξη, θα εμφανιστεί η διεύθυνση IP του. Θα χρειαστεί να συνδεθείτε στον διακομιστή DNS του ονόματος τομέα σας και να τον υποδείξετε σε αυτήν τη διεύθυνση.

Βήμα 3 - Δημιουργήστε μια βασική διαμόρφωση Ansible

Τα αρχεία αυτοματισμού του Ansible ονομάζονται roles. Πρώτα θα ρυθμίσουμε τη δομή του καταλόγου (μέσα στον ansibleκατάλογο που μόλις δημιουργήσατε στο βήμα 1) και τα βασικά αρχεία.

mkdir -p group_vars roles/common/tasks/ roles/common/handlers
touch hosts group_vars/all deploy.yml roles/common/handlers/main.yml

Επεξεργαστείτε το hostsαρχείο ώστε να περιέχει τα ακόλουθα, αντικαθιστώντας το ip addressγια τον διακομιστή που μόλις δημιουργήσατε. Το Ansible χρησιμοποιεί python 2, το οποίο το Ubuntu 16.04 δεν έχει εγκαταστήσει από προεπιλογή. Στο hostsαρχείο λέμε στον Ansible να χρησιμοποιήσει python 3.

[common]  
192.0.2.1 ansible_python_interpreter=/usr/bin/python3

Επεξεργαστείτε το deploy.ymlαρχείο ώστε να περιέχει τα ακόλουθα. Θα χρησιμοποιήσουμε τον rootχρήστη.

- name: apply common configuration to server
  hosts: all
  user: root
  roles:
    - common

Επεξεργαστείτε το /group_vars/allαρχείο ώστε να περιέχει τα ακόλουθα. Αυτές οι μεταβλητές λένε στην Ansible τη θέση των κλειδιών SSH, τις παραμέτρους του αρχείου swap, το πλήρως πιστοποιημένο όνομα τομέα σας και τον κωδικό πρόσβασης root. Θυμηθείτε να μην συμπεριλάβετε το αρχείο στον έλεγχο προέλευσης καθώς περιέχει τον κωδικό πρόσβασής σας σε καθαρό κείμενο.

ssh_dir: ./ssh_keys
swap_file_path: /swapfile
swap_file_size: 1G
swappiness: 1
hostname: example.com
new_password: YOUR_PASSWORD_HERE

Επεξεργαστείτε το common/handlers/main.ymlαρχείο ώστε να περιέχει τα ακόλουθα.

- name: restart sshd
  service: name=ssh state=restarted

Βήμα 4 - Δημιουργήστε εργασίες Ansible για βασική ρύθμιση διακομιστή

Ο Ansible αυτοματισμός είναι πιο κατανοητός εάν τον αναλύσουμε σε εργασίες. Ας δημιουργήσουμε αρχεία για κάθε εργασία μας στη διαδικασία.

cd roles/common/tasks
touch hosts main.yml setup.yml users.yml ufw.yml swap.yml virtualmin.yml

main.yml πρέπει να δείχνει σε κάθε αρχείο που περιέχει τις εντολές Ansible, επομένως επεξεργαστείτε το ώστε να περιέχει τα ακόλουθα.

- include: setup.yml
- include: users.yml
- include: ufw.yml
- include: swap.yml
- include: virtualmin.yml

Το πρώτο βήμα για τη ρύθμιση ενός νέου διακομιστή είναι να ενημερώσετε την προσωρινή μνήμη repo και να ορίσετε τη ζώνη ώρας. Επεξεργαστείτε το common/handlers/setup.ymlαρχείο ώστε να περιέχει τα ακόλουθα.

- apt: update_cache=yes
  sudo: yes

- name: set timezone to Europe/London
  timezone:
    name: Europe/London

Τώρα, θα δώσουμε στον χρήστη root έναν κωδικό πρόσβασης (τον οποίο θα χρειαστούμε για πρόσβαση στη διεπαφή ιστού virtualmin), αλλά θα απενεργοποιήσουμε τις συνδέσεις με κωδικό πρόσβασης μέσω SSH (καθώς χρησιμοποιούμε τη μέθοδο ελέγχου ταυτότητας με πιο ασφαλή κλειδιά). Επεξεργαστείτε users.ymlγια να περιέχει τα ακόλουθα.

- name: Change passwd
  user: name=root password={{ new_password | password_hash('sha512') }} update_password=always

- name: Disable SSH password login
  lineinfile: dest=/etc/ssh/sshd_config regexp="^#?PasswordAuthentication" line="PasswordAuthentication no"
  notify: restart sshd

Για ασφάλεια, χρειαζόμαστε ένα τείχος προστασίας. Θα χρησιμοποιήσουμε το Uncomplicated Firewall για να επιτρέψουμε την πρόσβαση SSH στη θύρα 22, την πρόσβαση στον ιστό στη θύρα 80και την ασφαλή πρόσβαση στον ιστό στη θύρα 443. Επεξεργαστείτε το ufw.ymlαρχείο ώστε να περιέχει τα ακόλουθα.

- name: Set default firewall policy to deny all
  become: True
  ufw: state=enabled direction=incoming policy=deny
  tags: firewall

- name: enable SSH in firewall
  ufw: rule=allow port=22
  sudo: yes

- name: enable HTTP connections for web server
  ufw: rule=allow port=80
  sudo: yes

- name: enable HTTPS connections for web server
  ufw: rule=allow port=443
  sudo: yes

- name: enable firewall
  ufw: state=enabled
  sudo: yes

Προαιρετικά, μπορείτε να συμπεριλάβετε ένα αρχείο ανταλλαγής. Αυτό είναι απαραίτητο εάν ο διακομιστής σας έχει λιγότερη από 2 GB μνήμης RAM για να αποφύγετε τις διακοπές λειτουργίας της μνήμης. Επεξεργαστείτε swap.ymlγια να περιέχει τα ακόλουθα.

- name: Set swap_file variable
  set_fact:
    swap_file: "{{swap_file_path}}"
  tags:
    - swap.set.file.path

- name: Check if swap file exists
  stat:
    path: "{{swap_file}}"
  register: swap_file_check
  tags:
    - swap.file.check

- name: Create swap file
  command: fallocate -l {{swap_file_size}} {{swap_file}}
  when: not swap_file_check.stat.exists
  tags:
    - swap.file.create

- name: Change swap file permissions
  file: path="{{swap_file}}"
        owner=root
        group=root
        mode=0600
  tags:
    - swap.file.permissions

- name: Format swap file
  sudo: yes
  command: "mkswap {{swap_file}}"
  when: not swap_file_check.stat.exists
  tags:
    - swap.file.mkswap

- name: Write swap entry in fstab
  mount: name=none
         src={{swap_file}}
         fstype=swap
         opts=sw
         passno=0
         dump=0
         state=present
  tags:
    - swap.fstab

- name: Turn on swap
  sudo: yes
  command: swapon -a
  when: not swap_file_check.stat.exists
  tags:
    - swap.turn.on

- name: Set swappiness
  sudo: yes
  sysctl:
    name: vm.swappiness
    value: "{{swappiness}}"
  tags:
    - swap.set.swappiness

Βήμα 5 - Προσθήκη εργασίας Ansible για ρύθμιση virtualmin

Το Virtualmin έχει το δικό του αρχείο εγκατάστασης το οποίο μπορεί να ληφθεί και να εκτελεστεί από την Ansible. Εδώ χρησιμοποιούμε την ελάχιστη εγκατάσταση ( LINK). Τα πρόσθετα στοιχεία είναι να ρυθμίσετε τον κωδικό πρόσβασης διακομιστή MySQL που δεν έχει οριστεί κατά την εγκατάσταση από το Virtualmin. Πρέπει να σταματήσουμε προσωρινά τη MySQL και να προσθέσουμε τον κατάλογο ελέγχου ταυτότητας πριν αλλάξουμε τον κωδικό πρόσβασης. Επεξεργαστείτε virtualmin.ymlγια να περιέχει τα ακόλουθα.

- name: download virtualmin install script
  get_url: >
    url=http://software.virtualmin.com/gpl/scripts/install.sh
    dest=/root/install.sh
    mode=0755

- name: virtualmin install (takes around 10 mins) you can see progress using $ sudo tail -f /root/virtualmin-install.log
  tags: non-idem
  shell: ~/install.sh --force --hostname {{ hostname }} --minimal --yes
  args:
    chdir: /root

- name: temp stop mysql
  service:
    name: mysql
    state: stopped

- name: change owner (and group) of mysqld dir
  file:
    path: "/var/run/mysqld"
    state: directory
    owner: mysql
    group: mysql

- name: virtualmin set mysql password
  shell: virtualmin set-mysql-pass --user root --pass {{ new_password }}

- name: restart mysql
  service:
    name: mysql
    state: started

Ο ρόλος του Ansible έχει πλέον ολοκληρωθεί και είμαστε έτοιμοι να αναπτύξουμε.

Βήμα 6 - Εκτελέστε εγκατάσταση με το Ansible

Από τον φάκελο ansible, μπορούμε τώρα απλά να εκτελέσουμε την ακόλουθη εντολή και το Ansible θα εκτελέσει όλες τις εργασίες που έχουμε δημιουργήσει αυτόματα. Την πρώτη φορά που θα συνδεθείτε θα λάβετε μια προειδοποίηση κλειδιού SSH, απλώς πληκτρολογήστε " yes" στο μήνυμα.

ansible-playbook deploy.yml --private-key=ssh_keys/ssh_keys -i hosts

Εάν θέλουμε να χρησιμοποιήσουμε άλλο διακομιστή, μπορούμε απλώς να αλλάξουμε τη διεύθυνση IP στο αρχείο hosts και να εκτελέσουμε ξανά αυτήν την εντολή για να ολοκληρώσουμε ακριβώς την ίδια ρύθμιση.

Βήμα 7 - Οδηγός μετά την εγκατάσταση του Virtualmin

Η εγκατάσταση ολοκληρώθηκε και τώρα μπορούμε να μεταβούμε στο https://192.0.2.1:10000(χρησιμοποιήστε τη διεύθυνση IP του διακομιστή σας). Το πρόγραμμα περιήγησής σας θα εκδώσει μια προειδοποίηση ασφαλείας επειδή το πιστοποιητικό είναι αυτο-υπογεγραμμένο, επομένως κάντε κλικ advancedκαι προσθέστε μια εξαίρεση. Θα εμφανιστεί μια σελίδα σύνδεσης. Το όνομα χρήστη είναι rootκαι ο κωδικός πρόσβασης είναι αυτός που εισαγάγατε στο group_vars/allαρχείο στο βήμα 3. Την πρώτη φορά που θα εισέλθετε στο Virtualmin θα εμφανιστεί ο οδηγός μετά την εγκατάσταση. Μπορείτε είτε να περάσετε από αυτές τις ρυθμίσεις με μη αυτόματο τρόπο είτε να κάνετε κλικ cancelγια να αποδεχτείτε τις προεπιλογές.

Βήμα 8 - Δημιουργήστε έναν διακομιστή και εγκαταστήστε το WordPress

Για να θέσετε τον πρώτο σας διακομιστή Wordpress σε λειτουργία, από τον πίνακα ελέγχου του Virtualmin κάντε κλικ στο Create Virtual Server. Θα χρειαστεί να εισαγάγετε όνομα τομέα, περιγραφή και κωδικό πρόσβασης διαχειριστή. Το όνομα τομέα θα πρέπει να είναι διαφορετικό από το πλήρως πιστοποιημένο όνομα τομέα Virtualmin και θα πρέπει να υποδείξετε την εγγραφή DNS στη διεύθυνση IP του διακομιστή σας.

Κάντε κλικ στο Create Server. Μόλις το Virtualmin ολοκληρώσει τη δημιουργία του διακομιστή σας, κάντε κλικ Install Scriptsστο αριστερό μενού. Επιλέξτε Wordpress, κάντε κλικ Show install optionsκαι στην επόμενη σελίδα επιλέξτε τη θέση της εγκατάστασης του Wordpress. Απλώς επιλέξτε At top levelκαι κάντε κλικ στο Install Now.

Αυτό είναι το μόνο που χρειάζεται να κάνετε - μπορείτε να ολοκληρώσετε την εγκατάσταση του Wordpress μεταβαίνοντας στο δικό σας http://example.net/wp-admin/install.php(πού example.netβρίσκεται αυτό το όνομα τομέα εικονικών διακομιστών). Εάν οι εγγραφές σας DNS δεν έχουν διαδοθεί ακόμα, μπορείτε να μεταβείτε Services > Preview Websiteαπό το μενού Virtualmin.

Μπορείτε να επαναλάβετε αυτό το βήμα πολλές φορές για να δημιουργήσετε πολλές τοποθεσίες Wordpress, όλες στον ίδιο διακομιστή Vultr.

Αφήστε ένα σχόλιο

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Η Τεχνητή Νοημοσύνη δεν είναι στο μέλλον, είναι εδώ ακριβώς στο παρόν Σε αυτό το blog Διαβάστε πώς οι εφαρμογές Τεχνητής Νοημοσύνης έχουν επηρεάσει διάφορους τομείς.

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Είστε επίσης θύμα των επιθέσεων DDOS και έχετε μπερδευτεί σχετικά με τις μεθόδους πρόληψης; Διαβάστε αυτό το άρθρο για να λύσετε τις απορίες σας.

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Μπορεί να έχετε ακούσει ότι οι χάκερ κερδίζουν πολλά χρήματα, αλλά έχετε αναρωτηθεί ποτέ πώς κερδίζουν τέτοια χρήματα; ας συζητήσουμε.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Θέλετε να δείτε επαναστατικές εφευρέσεις της Google και πώς αυτές οι εφευρέσεις άλλαξαν τη ζωή κάθε ανθρώπου σήμερα; Στη συνέχεια, διαβάστε στο blog για να δείτε τις εφευρέσεις της Google.

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Η ιδέα των αυτοκινούμενων αυτοκινήτων να βγαίνουν στους δρόμους με τη βοήθεια της τεχνητής νοημοσύνης είναι ένα όνειρο που έχουμε εδώ και καιρό. Όμως, παρά τις πολλές υποσχέσεις, δεν φαίνονται πουθενά. Διαβάστε αυτό το blog για να μάθετε περισσότερα…

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Καθώς η Επιστήμη εξελίσσεται με γρήγορους ρυθμούς, αναλαμβάνοντας πολλές από τις προσπάθειές μας, αυξάνονται και οι κίνδυνοι να υποβάλλουμε τον εαυτό μας σε μια ανεξήγητη Ιδιότητα. Διαβάστε τι σημαίνει η μοναδικότητα για εμάς.

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Διαβάστε το ιστολόγιο για να μάθετε διαφορετικά επίπεδα στην Αρχιτεκτονική Μεγάλων Δεδομένων και τις λειτουργίες τους με τον απλούστερο τρόπο.

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Οι μέθοδοι αποθήκευσης των δεδομένων εξελίσσονται μπορεί να είναι από τη γέννηση των Δεδομένων. Αυτό το ιστολόγιο καλύπτει την εξέλιξη της αποθήκευσης δεδομένων με βάση ένα infographic.

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

Σε αυτόν τον ψηφιακό κόσμο, οι έξυπνες οικιακές συσκευές έχουν γίνει κρίσιμο μέρος της ζωής. Ακολουθούν μερικά εκπληκτικά οφέλη των έξυπνων οικιακών συσκευών σχετικά με το πώς κάνουν τη ζωή μας να αξίζει και να απλοποιείται.

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Πρόσφατα, η Apple κυκλοφόρησε το macOS Catalina 10.15.4 μια συμπληρωματική ενημέρωση για την επιδιόρθωση προβλημάτων, αλλά φαίνεται ότι η ενημέρωση προκαλεί περισσότερα προβλήματα που οδηγούν σε bricking των μηχανών mac. Διαβάστε αυτό το άρθρο για να μάθετε περισσότερα