Hur man distribuerar flera Wordpress-webbplatser med Virtualmin och Ansible på Ubuntu 16.04

En vanlig användning av en Vultr virtuell server är att vara värd för Wordpress-webbplatser. Den här guiden visar hur du automatiserar konfigurationen av en virtuell server från början (med Ansible) och distribuerar flera oberoende Wordpress-webbplatser (med Webmin/Virtualmin). Virtualmin/Webmin är ett grafiskt användargränssnitt som låter dig hantera distributionen av flera virtuella serverkonton på samma maskin (komplett med LAMP/LEMP-stack). Virtualmin är väldigt likt cPanel och Plesk, och i den här handledningen kommer vi att använda den kostnadsfria GPL-utgåvan. Efter initial installation av Vultr-servern och installation av Virtualmin kan du mycket snabbt konfigurera flera virtuella servrar från Virtualmin-gränssnittet och direkt installera Wordpress på den virtuella servern komplett med sitt eget domännamn.

I den här handledningen, istället för att manuellt ange en lång lista med kommandon, kommer vi istället att använda Ansible. Ansible är ett pythonbaserat automationsverktyg som låter dig på ett tillförlitligt och upprepat sätt automatisera serveruppgifter. Det betyder att när du har följt den här handledningen kommer du att kunna distribuera en annan server på samma sätt med bara ett par kommandon.

Förutsättningar

  • Minst ett fullt kvalificerat domännamn och tillgång till DNS-posterna
  • Ett Vultr-konto

Steg 1 - Installera Ansible på din lokala dator

Installera Ansible på din lokala dator eller annan server.

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

Steg 2 - Generera SSH-nycklar och distribuera servern

Ansible fungerar genom att logga in på din server via SSH. SSH-åtkomst är säkrast om vi använder nycklar snarare än ett lösenord. Låt oss först skapa ett offentligt och privat nyckelpar.

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

I ssh_keyskatalogen kommer det nu att finnas två filer, ssh_keysoch ssh_keys.pub. ssh_keysär din privata nyckelfil och bör förvaras säkert. Du kan nu öppna ssh_keys.pub, som innehåller den publika nyckeln.

Logga in på Vultrs webbinstrumentpanel och klicka på Deploy New Server.

Välj en region, Servertyp (Ubuntu 16.04), Serverstorlek och sedan i del 6 ( SSH keys), klicka på Add New. På nästa sida klistra in din publika nyckel och ge den ett namn och klicka på Add SSH key. Se till slutligen att nyckeln är vald och klicka på Deploy now.
När servern har installerats färdigt visas dess ip-adress. Du måste logga in på ditt domännamns DNS-server och peka den till den här adressen.

Steg 3 - Skapa en grundläggande Ansible-konfiguration

Ansibles automatiseringsfiler kallas roles. Vi kommer först att ställa in katalogstrukturen (inuti ansiblekatalogen du just skapade i steg 1) och de grundläggande filerna.

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

Redigera hostsfilen så att den innehåller följande, ersätt ip addressservern du just skapade. Ansible använder python 2, som Ubuntu 16.04 inte har installerat som standard. I hostsfilen säger vi till Ansible att använda python 3.

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

Redigera deploy.ymlfilen så att den innehåller följande. Vi kommer att använda rootanvändaren.

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

Redigera /group_vars/allfilen så att den innehåller följande. Dessa variabler talar om för Ansible platsen för dina SSH-nycklar, växlingsfilparametrar, ditt fullt kvalificerade domännamn och root-lösenordet. Kom ihåg att inte inkludera filen i källkontrollen eftersom den innehåller ditt lösenord i klartext.

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

Redigera common/handlers/main.ymlfilen så att den innehåller följande.

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

Steg 4 - Skapa Ansible uppgifter för grundläggande serverinstallation

Ansible automation är lättare att förstå om vi delar upp det i uppgifter. Låt oss skapa filer för var och en av våra uppgifter i processen.

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

main.yml bör peka på varje fil som innehåller Ansible-kommandona, så redigera den så att den innehåller följande.

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

Det första steget i att sätta upp en ny server är att uppdatera repo-cachen och ställa in tidszonen. Redigera common/handlers/setup.ymlfilen så att den innehåller följande.

- apt: update_cache=yes
  sudo: yes

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

Nu kommer vi att ge rotanvändaren ett lösenord (som vi kommer att behöva för att komma åt virtualmins webbgränssnitt), men inaktivera lösenordsinloggningar över SSH (eftersom vi använder den säkrare nycklarmetoden för autentisering). Redigera för users.ymlatt innehålla följande.

- 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

För säkerheten behöver vi en brandvägg. Vi kommer att använda den okomplicerade brandväggen för att tillåta SSH-åtkomst på port 22, webbåtkomst på port 80och säker webbåtkomst på port 443. Redigera ufw.ymlfilen så att den innehåller följande.

- 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

Alternativt kan du inkludera en växlingsfil. Detta är viktigt om din server har mindre än 2 GB RAM för att undvika att minnet kraschar. Redigera för swap.ymlatt innehålla följande.

- 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

Steg 5 - Lägg till Ansible-uppgift för virtualmin-installation

Virtualmin har en egen installationsfil som kan laddas ner och köras av Ansible. Här använder vi minimal installation ( LINK). De ytterligare objekten är att konfigurera MySQL-serverlösenordet som inte ställs in när det installeras av Virtualmin. Vi måste tillfälligt stoppa MySQL och lägga till autentiseringskatalogen innan vi ändrar lösenordet. Redigera för virtualmin.ymlatt innehålla följande.

- 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-rollen är nu klar och vi är redo att distribuera.

Steg 6 - Utför installationen med Ansible

Från ansible-mappen kan vi nu helt enkelt köra följande kommando, och Ansible kommer att utföra alla uppgifter vi har skapat automatiskt. Första gången du ansluter får du en SSH-nyckelvarning, skriv bara " yes" vid prompten.

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

Om vi ​​vill använda en annan server kan vi helt enkelt ändra ip-adressen i hosts-filen och köra det kommandot igen för att slutföra exakt samma installation.

Steg 7 - Virtualmin efterinstallationsguide

Installationen är klar och vi kan nu gå till https://192.0.2.1:10000(använd din servers ip-adress). Din webbläsare kommer att utfärda en säkerhetsvarning eftersom certifikatet är självsignerat, så klicka advancedoch lägg till ett undantag. Du kommer att presenteras med en inloggningssida. Användarnamnet är root, och lösenordet är det du skrev in i group_vars/allfilen i steg 3. Första gången du går in i Virtualmin kommer du att presenteras med efterinstallationsguiden. Du kan antingen gå igenom dessa inställningar manuellt eller klicka för cancelatt acceptera standardinställningarna.

Steg 8 - Skapa en server och installera WordPress

För att få igång din första Wordpress-server, klicka på från Virtualmin-instrumentpanelen Create Virtual Server. Du måste ange ett domännamn, en beskrivning och ett administratörslösenord. Domännamnet bör skilja sig från det fullständiga Virtualmin-domännamnet och du måste peka DNS-posten till din servers ip-adress.

Klicka på Create Server. När Virtualmin har skapat din server, klicka Install Scriptspå menyn till vänster. Välj Wordpress, klicka på Show install optionsoch på följande sida välj platsen för Wordpress-installationen. Välj bara At top leveloch klicka Install Now.

Det är allt du behöver göra - du kan slutföra Wordpress-installationen genom att besöka ditt domännamn http://example.net/wp-admin/install.php(var example.netär det här virtuella serverns domännamn). Om dina DNS-poster inte har spridits ännu kan du gå till Services > Preview Websitefrån Virtualmin-menyn.

Du kan upprepa detta steg flera gånger för att skapa flera Wordpress-webbplatser på samma Vultr-server.


Skapa en Jekyll-blogg på Ubuntu 16.04

Skapa en Jekyll-blogg på Ubuntu 16.04

Använder du ett annat system? Jekyll är ett bra alternativ till WordPress för att blogga eller dela innehåll. Det kräver inga databaser och det är väldigt enkelt i

Hur man installerar MODX Revolution på en Ubuntu 16.04 LAMP VPS

Hur man installerar MODX Revolution på en Ubuntu 16.04 LAMP VPS

Använder du ett annat system? MODX Revolution är ett snabbt, flexibelt, skalbart, gratis och öppen källkod, företagsklassat Content Management System (CMS) skrivet i

Skapa en Jekyll-blogg på CentOS 7

Skapa en Jekyll-blogg på CentOS 7

Använder du ett annat system? Jekyll är ett bra alternativ till WordPress. Det kräver inga databaser och det fungerar med ett språk många är bekanta med

Hur man installerar MODX Revolution på en CentOS 7 LAMP VPS

Hur man installerar MODX Revolution på en CentOS 7 LAMP VPS

Använder du ett annat system? MODX Revolution är ett snabbt, flexibelt, skalbart, gratis och öppen källkod, företagsklassat Content Management System (CMS) skrivet i

Installera Fork CMS på CentOS 7

Installera Fork CMS på CentOS 7

Använder du ett annat system? Fork är ett CMS med öppen källkod skrivet i PHP. Forks källkod finns på GitHub. Den här guiden visar hur du installerar Fork CM

Hur man installerar Neos CMS på CentOS 7

Hur man installerar Neos CMS på CentOS 7

Neos är ett innovativt innehållshanteringssystem med öppen källkod som är utmärkt för att skapa och redigera onlineinnehåll. Med författare och redaktörer i åtanke, Neo

Hur man distribuerar Ghost v0.11 LTS på CentOS 7.3

Hur man distribuerar Ghost v0.11 LTS på CentOS 7.3

Använder du ett annat system? Ghost är en bloggplattform med öppen källkod som har vunnit popularitet bland utvecklare och vanliga användare sedan 201

Hur man distribuerar Ghost v0.11 LTS på Fedora 25

Hur man distribuerar Ghost v0.11 LTS på Fedora 25

Använder du ett annat system? Ghost är en bloggplattform med öppen källkod som har vunnit popularitet bland utvecklare och vanliga användare sedan 201

Hur man distribuerar flera Wordpress-webbplatser med Virtualmin och Ansible på Ubuntu 16.04

Hur man distribuerar flera Wordpress-webbplatser med Virtualmin och Ansible på Ubuntu 16.04

En vanlig användning av en Vultr virtuell server är att vara värd för Wordpress-webbplatser. Den här guiden visar hur du automatiserar konfigurationen av en virtuell server från början

Konfigurera Ghost Professional Publishing Platform på OpenBSD 6

Konfigurera Ghost Professional Publishing Platform på OpenBSD 6

Ghost är den senaste och bästa uppkomlingen att konkurrera med WordPress. Temautveckling är snabb och enkel att lära sig eftersom Ghost-utvecklarna bestämde sig för att använda både th

Installera och konfigurera en Ghost v1.0.0-blogg på Ubuntu 16.04

Installera och konfigurera en Ghost v1.0.0-blogg på Ubuntu 16.04

Ghost är en modern publiceringsplattform med öppen källkod byggd på Node.js med en Ember.js-adminklient, ett JSON-API och ett tema-API som drivs av Handlebars.js. Ghos

Hur man installerar MODX Revolution på en Fedora 26 LAMP VPS

Hur man installerar MODX Revolution på en Fedora 26 LAMP VPS

Använder du ett annat system? MODX Revolution är ett snabbt, flexibelt, skalbart, gratis och öppen källkod, företagsklassat Content Management System (CMS) skrivet i

Hur man installerar Dotclear på Debian 9 (Stretch)

Hur man installerar Dotclear på Debian 9 (Stretch)

Använder du ett annat system? Dotclear är en väldigt enkel bloggmotor. Det är öppen källkod och lätt att använda. Denna handledning kommer att gå igenom installationen på

Installera Fork CMS på Ubuntu 16.04 LTS

Installera Fork CMS på Ubuntu 16.04 LTS

Använder du ett annat system? Fork är ett CMS med öppen källkod skrivet i PHP. Forks källkod finns på GitHub. Den här guiden visar hur du installerar Fork CM

Hur man distribuerar Ghost på Debian 8.7

Hur man distribuerar Ghost på Debian 8.7

Använder du ett annat system? Ghost är en bloggplattform med öppen källkod som vinner popularitet bland utvecklare och vanliga användare sedan lanseringen 2013. jag

Installera Fork CMS på Debian 9

Installera Fork CMS på Debian 9

Använder du ett annat system? Fork är ett CMS med öppen källkod skrivet i PHP. Forks källkod finns på GitHub. Den här guiden visar hur du installerar Fork CM

Hur man installerar Typesetter CMS på CentOS 7

Hur man installerar Typesetter CMS på CentOS 7

Typesetter är ett CMS med öppen källkod skrivet i PHP fokuserat på användarvänlighet med True WYSIWYG-redigering och platt-fillagring. I den här artikeln kommer vi att installera

Konfigurera WordPress med WooCommerce på CentOS 6

Konfigurera WordPress med WooCommerce på CentOS 6

Vultr-instanser är ett bra sätt att köra din WordPress-blogg, men en mer anmärkningsvärd tillägg till WordPress är WooCommerce, ett e-handelsplugin som utökar

Installera Fork CMS på Fedora 28

Installera Fork CMS på Fedora 28

Använder du ett annat system? Fork är ett CMS med öppen källkod skrivet i PHP. Forks källkod finns på GitHub. Den här guiden visar hur du installerar Fork CM

Hur man installerar MODX Revolution på en Debian 9 LAMP VPS

Hur man installerar MODX Revolution på en Debian 9 LAMP VPS

Använder du ett annat system? MODX Revolution är ett snabbt, flexibelt, skalbart, gratis och öppen källkod, företagsklassat Content Management System (CMS) skrivet i

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.

DDOS-attacker: En kort översikt

DDOS-attacker: En kort översikt

Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.

Har du någonsin undrat hur hackare tjänar pengar?

Har du någonsin undrat hur hackare tjänar pengar?

Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...

Technological Singularity: A Distant Future of Human Civilization?

Technological Singularity: A Distant Future of Human Civilization?

När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.

Utveckling av datalagring – Infographic

Utveckling av datalagring – Infographic

Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.

Funktioner för Big Data Reference Architecture Layers

Funktioner för Big Data Reference Architecture Layers

Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer