Jak wdrożyć wiele witryn Wordpress za pomocą Virtualmin i Ansible na Ubuntu 16.04

Typowym zastosowaniem wirtualnego serwera Vultr jest hostowanie stron internetowych Wordpress. Ten przewodnik pokazuje, jak zautomatyzować konfigurację serwera wirtualnego od zera (przy użyciu Ansible) i wdrożyć wiele niezależnych witryn Wordpress (przy użyciu Webmin / Virtualmin). Virtualmin / Webmin to graficzny interfejs użytkownika, który pozwala zarządzać wdrażaniem wielu kont serwerów wirtualnych na tym samym komputerze (wraz ze stosem LAMP / LEMP). Virtualmin jest bardzo podobny do cPanel i Plesk, aw tym samouczku będziemy korzystać z bezpłatnej wersji GPL. Po wstępnej konfiguracji serwera Vultr i instalacji Virtualmin, możesz bardzo szybko skonfigurować wiele serwerów wirtualnych z poziomu interfejsu Virtualmin i bezpośrednio zainstalować Wordpress na tym serwerze wirtualnym wraz z własną nazwą domeny.

W tym samouczku zamiast ręcznie wprowadzać długą listę poleceń, zamiast tego użyjemy Ansible. Ansible to narzędzie do automatyzacji oparte na pythonie, które pozwala niezawodnie i wielokrotnie automatyzować zadania serwera. Oznacza to, że po wykonaniu tego samouczka będziesz mógł wdrożyć inny serwer w ten sam sposób za pomocą kilku poleceń.

Wymagania wstępne

  • Co najmniej jedna w pełni kwalifikowana nazwa domeny i dostęp do rekordów DNS
  • Konto Vultr

Krok 1 - Instalacja Ansible na lokalnym komputerze

Zainstaluj Ansible na swoim komputerze lokalnym lub innym serwerze.

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

Krok 2 - Wygeneruj klucze SSH i wdróż serwer

Ansible działa, logując się do serwera za pośrednictwem SSH. Dostęp SSH jest najbezpieczniejszy, jeśli używamy kluczy zamiast hasła. Najpierw wygenerujmy parę kluczy publiczny i prywatny.

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

W ssh_keyskatalogu będą teraz dwa pliki ssh_keysi ssh_keys.pub. ssh_keysto plik klucza prywatnego i należy go przechowywać w bezpiecznym miejscu. Możesz teraz otworzyć ssh_keys.pub, który zawiera klucz publiczny.

Zaloguj się do internetowego pulpitu nawigacyjnego Vultr i kliknij Deploy New Server.

Wybierz region, typ serwera (Ubuntu 16.04), rozmiar serwera, a następnie w części 6 ( SSH keys) kliknij Add New. Na następnej stronie wklej swój klucz publiczny i nadaj mu nazwę, a następnie kliknij Add SSH key. Na koniec upewnij się, że klucz jest wybrany i kliknij Deploy now.
Po zakończeniu wdrażania serwera zostanie wyświetlony jego adres IP. Musisz zalogować się na serwerze DNS swojej domeny i skierować go na ten adres.

Krok 3 - Utwórz podstawową konfigurację Ansible

Pliki automatyzacji Ansible są nazywane roles. Najpierw skonfigurujemy strukturę katalogu (w ansiblekatalogu, który właśnie utworzyłeś w kroku 1) i podstawowe pliki.

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

Edytuj hostsplik, aby zawierał następujące elementy, zastępując ip addresswłaśnie utworzony serwer. Ansible używa Pythona 2, którego Ubuntu 16.04 nie instaluje domyślnie. W hostspliku mówimy Ansible, aby używał Pythona 3.

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

Edytuj deploy.ymlplik, aby zawierał następujące elementy. Będziemy używać rootużytkownika.

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

Edytuj /group_vars/allplik, aby zawierał następujące elementy. Zmienne te informują Ansible o lokalizacji kluczy SSH, parametrach pliku wymiany, w pełni kwalifikowanej nazwie domeny i haśle root. Pamiętaj, aby nie włączać pliku do kontroli źródła, ponieważ zawiera on hasło w postaci zwykłego tekstu.

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

Edytuj common/handlers/main.ymlplik, aby zawierał następujące elementy.

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

Krok 4 - Utwórz Ansible zadania dla podstawowej konfiguracji serwera

Odpowiedzialna automatyzacja jest łatwiejsza do zrozumienia, jeśli podzielimy ją na zadania. Stwórzmy pliki dla każdego z naszych zadań w tym procesie.

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

main.yml powinien wskazywać każdy plik zawierający polecenia Ansible, więc edytuj go, aby zawierał następujące elementy.

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

Pierwszym krokiem w konfiguracji nowego serwera jest aktualizacja pamięci podręcznej repozytoriów i ustawienie strefy czasowej. Edytuj common/handlers/setup.ymlplik, aby zawierał następujące elementy.

- apt: update_cache=yes
  sudo: yes

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

Teraz podamy użytkownikowi root hasło (które będzie potrzebne, aby uzyskać dostęp do interfejsu sieciowego virtualmin), ale wyłączymy logowanie do haseł przez SSH (ponieważ korzystamy z bezpieczniejszej metody uwierzytelniania kluczy). Edytuj, users.ymlaby zawierał następujące elementy.

- 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

Dla bezpieczeństwa potrzebujemy zapory ogniowej. Użyjemy nieskomplikowanej zapory sieciowej, aby umożliwić dostęp SSH na porcie 22, dostęp do sieci na porcie 80i bezpieczny dostęp do sieci na porcie 443. Edytuj ufw.ymlplik, aby zawierał następujące elementy.

- 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

Opcjonalnie możesz dołączyć plik wymiany. Jest to niezbędne, jeśli serwer ma mniej niż 2 GB pamięci RAM, aby uniknąć awarii pamięci. Edytuj, swap.ymlaby zawierał następujące elementy.

- 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

Krok 5 - Dodaj zadanie Ansible do konfiguracji virtualmin

Virtualmin ma własny plik instalatora, który można pobrać i uruchomić przez Ansible. Tutaj używamy minimalnej instalacji ( LINK). Dodatkowe elementy to konfiguracja hasła do serwera MySQL, które nie jest ustawiane podczas instalacji przez Virtualmin. Musimy tymczasowo zatrzymać MySQL i dodać katalog uwierzytelniania przed zmianą hasła. Edytuj, virtualmin.ymlaby zawierał następujące elementy.

- 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

Rola Ansible została zakończona i jesteśmy gotowi do wdrożenia.

Krok 6 - Wykonaj instalację za pomocą Ansible

Z folderu ansible możemy teraz po prostu uruchomić następującą komendę, a Ansible wykona wszystkie zadania, które utworzyliśmy automatycznie. Przy pierwszym połączeniu pojawi się ostrzeżenie o kluczu SSH, po prostu wpisz „ yes” w wierszu polecenia.

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

Jeśli chcemy użyć innego serwera, możemy po prostu zmienić adres IP w pliku hosts i ponownie uruchomić to polecenie, aby dokończyć dokładnie tę samą konfigurację.

Krok 7 - Kreator poinstalacyjny Virtualmin

Instalacja jest zakończona i możemy teraz przejść do https://192.0.2.1:10000(użyj adresu IP swojego serwera). Twoja przeglądarka wyświetli ostrzeżenie dotyczące bezpieczeństwa, ponieważ certyfikat jest samopodpisany, więc kliknij advancedi dodaj wyjątek. Zostanie wyświetlona strona logowania. Nazwa użytkownika to root, a hasło to hasło wprowadzone do group_vars/allpliku w kroku 3. Przy pierwszym wejściu do Virtualmin pojawi się kreator poinstalacyjny. Możesz przejść przez te ustawienia ręcznie lub kliknąć, cancelaby zaakceptować wartości domyślne.

Krok 8 - Utwórz serwer i zainstaluj WordPress

Aby uruchomić pierwszy serwer Wordpress, kliknij pulpit nawigacyjny Virtualmin Create Virtual Server. Musisz podać nazwę domeny, opis i hasło administratora. Nazwa domeny powinna różnić się od w pełni kwalifikowanej nazwy domeny Virtualmin i musisz wskazać rekord DNS adresowi IP twojego serwera.

Kliknij Create Server. Po zakończeniu tworzenia serwera przez Virtualmin kliknij Install Scriptsmenu po lewej stronie. Wybierz Wordpress, kliknij Show install options, a na następnej stronie wybierz lokalizację instalacji Wordpress. Po prostu wybierz At top leveli kliknij Install Now.

To wszystko, co musisz zrobić - możesz dokończyć instalację Wordpress, odwiedzając swoją http://example.net/wp-admin/install.php(gdzie example.netjest ta nazwa domeny serwerów wirtualnych). Jeśli Twoje rekordy DNS nie zostały jeszcze rozpowszechnione, możesz przejść do Services > Preview Websitez menu Virtualmin.

Możesz powtórzyć ten krok wiele razy, aby utworzyć wiele witryn Wordpress na tym samym serwerze Vultr.



Leave a Comment

Jak zainstalować Neos CMS na CentOS 7

Jak zainstalować Neos CMS na CentOS 7

Neos to innowacyjny system zarządzania treścią typu open source, który doskonale nadaje się do tworzenia i edytowania treści online. Z myślą o autorach i redaktorach, Neo

Zainstaluj WordPress na OpenBSD 6.2

Zainstaluj WordPress na OpenBSD 6.2

Wprowadzenie WordPress to dominujący system zarządzania treścią w Internecie. Obsługuje wszystko, od blogów po złożone witryny z dynamiczną treścią

Jak zainstalować rewolucję MODX na Debianie 9 LAMP VPS

Jak zainstalować rewolucję MODX na Debianie 9 LAMP VPS

Używasz innego systemu? MODX Revolution to szybki, elastyczny, skalowalny, darmowy i open source, system zarządzania treścią dla przedsiębiorstw (CMS) napisany w

Jak wdrożyć Ghosta na Debianie 8.7

Jak wdrożyć Ghosta na Debianie 8.7

Używasz innego systemu? Ghost to platforma blogowa typu open source, która zyskuje popularność wśród programistów i zwykłych użytkowników od czasu wydania z 2013 roku. ja

Jak zainstalować Dotclear na Debian 9 (Stretch)

Jak zainstalować Dotclear na Debian 9 (Stretch)

Używasz innego systemu? Dotclear to bardzo prosty silnik do blogowania. Jest open source i łatwy w użyciu. W tym samouczku zostanie przeprowadzona instalacja

Instalowanie Fork CMS na CentOS 7

Instalowanie Fork CMS na CentOS 7

Używasz innego systemu? Fork to open source CMS napisany w PHP. Kod źródłowy Forks jest hostowany na GitHub. Ten przewodnik pokaże Ci, jak zainstalować Fork CM

Jak zainstalować CMS składu na CentOS 7

Jak zainstalować CMS składu na CentOS 7

Typesetter to CMS o otwartym kodzie źródłowym napisany w języku PHP, który koncentruje się na łatwości obsługi dzięki edycji True WYSIWYG i przechowywaniu plików płaskich. W tym artykule będziemy instalować

Konfigurowanie platformy Ghost Professional Publishing w OpenBSD 6

Konfigurowanie platformy Ghost Professional Publishing w OpenBSD 6

Ghost to najnowszy i najlepszy start w rywalizacji z WordPress. Tworzenie motywów jest szybkie i łatwe do nauczenia się, ponieważ twórcy Ghost zdecydowali się użyć obu

Jak wdrożyć Ghost v0.11 LTS na Fedorze 25

Jak wdrożyć Ghost v0.11 LTS na Fedorze 25

Używasz innego systemu? Ghost jest platformą blogową typu open source, która zyskuje popularność wśród programistów i zwykłych użytkowników od 201 lat

Jak zainstalować MODX Revolution na FreeBSD 11 FAMP VPS

Jak zainstalować MODX Revolution na FreeBSD 11 FAMP VPS

Używasz innego systemu? MODX Revolution to szybki, elastyczny, skalowalny, open source, system zarządzania treścią klasy korporacyjnej (CMS) napisany w języku PHP. To ja

Jak zainstalować MODX Revolution na CentOS 7 LAMP VPS

Jak zainstalować MODX Revolution na CentOS 7 LAMP VPS

Używasz innego systemu? MODX Revolution to szybki, elastyczny, skalowalny, darmowy i open source, system zarządzania treścią dla przedsiębiorstw (CMS) napisany w

Jak wdrożyć Ghost v0.11 LTS na Ubuntu 16.04

Jak wdrożyć Ghost v0.11 LTS na Ubuntu 16.04

Używasz innego systemu? Ghost jest platformą blogową typu open source, która zyskuje popularność wśród programistów i zwykłych użytkowników od 201 lat

Tworzenie bloga Jekyll na CentOS 7

Tworzenie bloga Jekyll na CentOS 7

Używasz innego systemu? Jekyll jest dobrą alternatywą dla WordPress. Nie wymaga żadnych baz danych i działa w języku znanym wielu osobom

Jak wdrożyć Ghost v0.11 LTS na CentOS 7.3

Jak wdrożyć Ghost v0.11 LTS na CentOS 7.3

Używasz innego systemu? Ghost jest platformą blogową typu open source, która zyskuje popularność wśród programistów i zwykłych użytkowników od 201 lat

Uruchamianie WordPress na OpenBSD 6.5 z OpenBSDs HTTPD

Uruchamianie WordPress na OpenBSD 6.5 z OpenBSDs HTTPD

Wprowadzenie Im bliżej domyślnej instalacji OpenBSD i bez tylu dodanych pakietów, tym bezpieczniejsze będzie. Chociaż tym bardziej przecinek

Jak wdrożyć Ghost v0.11 LTS na Debian 8

Jak wdrożyć Ghost v0.11 LTS na Debian 8

Używasz innego systemu? Ghost jest platformą blogową typu open source, która zyskuje popularność wśród programistów i zwykłych użytkowników od 201 lat

Instalacja Fork CMS na Debianie 9

Instalacja Fork CMS na Debianie 9

Używasz innego systemu? Fork to open source CMS napisany w PHP. Kod źródłowy Forks jest hostowany na GitHub. Ten przewodnik pokaże Ci, jak zainstalować Fork CM

Jak wdrożyć Ghost na Ubuntu 16.04

Jak wdrożyć Ghost na Ubuntu 16.04

Używasz innego systemu? Ghost to platforma blogowa typu open source, która zyskuje popularność wśród programistów i zwykłych użytkowników od czasu wydania z 2013 roku. ja

Jak zainstalować rewolucję MODX na Fedorze 26 LAMP VPS

Jak zainstalować rewolucję MODX na Fedorze 26 LAMP VPS

Używasz innego systemu? MODX Revolution to szybki, elastyczny, skalowalny, darmowy i open source, system zarządzania treścią dla przedsiębiorstw (CMS) napisany w

Instalowanie Fork CMS na Fedorze 28

Instalowanie Fork CMS na Fedorze 28

Używasz innego systemu? Fork to open source CMS napisany w PHP. Kod źródłowy Forks jest hostowany na GitHub. Ten przewodnik pokaże Ci, jak zainstalować Fork CM

Funkcjonalności warstw architektury referencyjnej Big Data

Funkcjonalności warstw architektury referencyjnej Big Data

Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.

Wgląd w 26 technik analizy Big Data: część 2

Wgląd w 26 technik analizy Big Data: część 2

Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.

Ataki DDOS: krótki przegląd

Ataki DDOS: krótki przegląd

Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.