Как развернуть несколько сайтов 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, параметров файла подкачки, вашего полного доменного имени и пароля 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

Первым шагом в настройке нового сервера является обновление кэша репо и установка часового пояса. Отредактируйте 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

Для безопасности нам нужен брандмауэр. Мы будем использовать несложный брандмауэр, чтобы разрешить 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 ГБ ОЗУ, чтобы избежать сбоев памяти. Изменить, 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.



Leave a Comment

Установите WordPress на OpenBSD 6.2

Установите WordPress на OpenBSD 6.2

Введение WordPress является доминирующей системой управления контентом в Интернете. Он поддерживает все, от блогов до сложных сайтов с динамическим контентом

Как установить MODX Revolution на FreeBSD 11 FAMP VPS

Как установить MODX Revolution на FreeBSD 11 FAMP VPS

Используете другую систему? MODX Revolution - это быстрая, гибкая, масштабируемая система управления контентом (CMS) корпоративного уровня с открытым исходным кодом, написанная на PHP. Это я

Как установить MODX Revolution на Debian 9 LAMP VPS

Как установить MODX Revolution на Debian 9 LAMP VPS

Используете другую систему? MODX Revolution - это быстрая, гибкая, масштабируемая, бесплатная и с открытым исходным кодом корпоративная система управления контентом (CMS), написанная i

Как развернуть Ghost на Debian 8.7

Как развернуть Ghost на Debian 8.7

Используете другую систему? Ghost - это платформа для блогов с открытым исходным кодом, которая завоевывает популярность среди разработчиков и обычных пользователей с момента ее выпуска в 2013 году. я

Как установить Dotclear на Debian 9 (Stretch)

Как установить Dotclear на Debian 9 (Stretch)

Используете другую систему? Dotclear - очень простой движок для блогов. Это с открытым исходным кодом и прост в использовании. Этот учебник будет проходить установку на

Установка Fork CMS на CentOS 7

Установка Fork CMS на CentOS 7

Используете другую систему? Fork - это CMS с открытым исходным кодом, написанная на PHP. Исходный код Forks размещен на GitHub. Это руководство покажет вам, как установить Fork CM

Как установить Typesetter CMS на CentOS 7

Как установить Typesetter CMS на CentOS 7

Typesetter - это CMS с открытым исходным кодом, написанная на PHP, ориентированная на простоту использования с редактированием True WYSIWYG и хранением плоских файлов. В этой статье мы будем устанавливать

Настройка Ghost Professional Publishing Platform на OpenBSD 6

Настройка Ghost Professional Publishing Platform на OpenBSD 6

Ghost - новейшая и самая лучшая выскочка для конкурента WordPress. Разработка тем быстро и легко изучается, потому что разработчики Ghost решили использовать оба

Как развернуть Ghost v0.11 LTS на Fedora 25

Как развернуть Ghost v0.11 LTS на Fedora 25

Используете другую систему? Ghost - это блог-платформа с открытым исходным кодом, которая завоевывает популярность среди разработчиков и обычных пользователей с 201 года.

Как установить MODX Revolution на CentOS 7 LAMP VPS

Как установить MODX Revolution на CentOS 7 LAMP VPS

Используете другую систему? MODX Revolution - это быстрая, гибкая, масштабируемая, бесплатная и с открытым исходным кодом корпоративная система управления контентом (CMS), написанная i

Установка Fork CMS на Debian 9

Установка Fork CMS на Debian 9

Используете другую систему? Fork - это CMS с открытым исходным кодом, написанная на PHP. Исходный код Forks размещен на GitHub. Это руководство покажет вам, как установить Fork CM

Как развернуть Ghost v0.11 LTS в Ubuntu 16.04

Как развернуть Ghost v0.11 LTS в Ubuntu 16.04

Используете другую систему? Ghost - это блог-платформа с открытым исходным кодом, которая завоевывает популярность среди разработчиков и обычных пользователей с 201 года.

Как развернуть Ghost на Ubuntu 16.04

Как развернуть Ghost на Ubuntu 16.04

Используете другую систему? Ghost - это платформа для блогов с открытым исходным кодом, которая завоевывает популярность среди разработчиков и обычных пользователей с момента ее выпуска в 2013 году. я

Создание блога Jekyll на CentOS 7

Создание блога Jekyll на CentOS 7

Используете другую систему? Jekyll - хорошая альтернатива WordPress. Он не требует каких-либо баз данных и работает с языком, знакомым многим

Как развернуть Ghost v0.11 LTS на CentOS 7.3

Как развернуть Ghost v0.11 LTS на CentOS 7.3

Используете другую систему? Ghost - это блог-платформа с открытым исходным кодом, которая завоевывает популярность среди разработчиков и обычных пользователей с 201 года.

Запуск WordPress на OpenBSD 6.5 с использованием OpenBSDs HTTPD

Запуск WordPress на OpenBSD 6.5 с использованием OpenBSDs HTTPD

Введение Чем ближе вы устанавливаете вашу OpenBSD к установке по умолчанию и без того, чтобы было добавлено столько пакетов, тем безопаснее она будет. Пока более комм

Как установить MODX Revolution на Fedora 26 LAMP VPS

Как установить MODX Revolution на Fedora 26 LAMP VPS

Используете другую систему? MODX Revolution - это быстрая, гибкая, масштабируемая, бесплатная и с открытым исходным кодом корпоративная система управления контентом (CMS), написанная i

Установка Fork CMS на Fedora 28

Установка Fork CMS на Fedora 28

Используете другую систему? Fork - это CMS с открытым исходным кодом, написанная на PHP. Исходный код Forks размещен на GitHub. Это руководство покажет вам, как установить Fork CM

Как установить Dotclear на Ubuntu 16.04

Как установить Dotclear на Ubuntu 16.04

Используете другую систему? Dotclear - это очень простой движок для блогов, который построен на основе PHP. В этом уроке мы установим Dotclear на Ubunt

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше