You are here

Playbook: install Nginx + PHP-FPM. Lesson 4

Linux: 

Изучаем Ansible: playbook install Nginx + PHP-FPM. Урок 4

В этой статье поставим "Nginx" + "PHP-FPM" используя playbook Ansible. В статье ранее мы уже ставили простенькую программу "MC". Теперь усложним задачу.

1. Установка Nginx

Всегда используйте первоисточник, в нашем случае, это оф.сайт Nginx с документацией, расположенный по адресу:

  1. docs.nginx.com
  2. раздел "NGINX Plus -> Admin Guide -> Installing NGINX and NGINX Plus -> Installing NGINX Open Source"
  3. для Debian выбираем в меню подраздел "Installing Prebuilt Debian Packages"

Есть два варианта установки: по молчанию (старее) и используя репозиторий разработчика Nginx (новее). Проделаем оба.

Установка по умолчанию выглядит примерно так:

  1. sudo apt-get update
  2. sudo apt-get install nginx
  3. # Проверка установленной версии
  4. sudo nginx -v

Так как мы используем Ansible, то установка будет немного другой. Заходим в директорию где распологается каталог playbook и создаем под него файл:

  1. cd /etc/ansible/playbooks
  2. sudo nano 1_nginx.yml

Внутри прописываем следующее:

  1. ---
  2. - name: Install Nginx
  3. hosts: all
  4. become: yes
  5.  
  6. tasks:
  7. - name: Install Nginx of Debian 10
  8. apt: name=nginx update_cache=yes state=latest
  9.  
  10. - name: Start Nginx and boot
  11. service: name=nginx state=started enabled=yes

Подробнее:

  • "- name:" - произвольное имя
  • "apt" - команда установки на Debian
  • "name=nginx" - название пакета который ставим
  • "update_cache=yes" - аналог apt update
  • "state=latest" - установить
  • "service:" - модуль используется для старта nginx
  • "state=started" - стартовать
  • "enabled=yes" - стартовать при перезагрузке

Запускаем:

  1. ansible-playbook 1_nginx.yml
  2.  
  3. PLAY [Install Nginx] ******************
  4.  
  5. TASK [Gathering Facts] ***************
  6. ok: [debi]
  7.  
  8. TASK [Install Nginx of Debian 10] *******
  9. changed: [debi]
  10.  
  11. TASK [Start Nginx and boot] ***********
  12. changed: [debi]
  13.  
  14. PLAY RECAP ************************
  15. debi : ok=3 changed=2 unreachable=0 failed=0

Все установилось! При этом, версия встала: "nginx version: nginx/1.14.2".

2. Удаление Nginx

Немного изменяем код выше:

  1. ---
  2. - name: Install Nginx
  3. hosts: all
  4. become: yes
  5.  
  6. tasks:
  7. - name: Stop Nginx
  8. service: name=nginx state=stopped enabled=no
  9.  
  10. - name: Del Nginx
  11. apt: name=nginx state=absent
  12.  
  13. - name: Del Nginx-common
  14. apt: name=nginx-common state=absent

Что изменили:

  • state=stopped
  • enabled=no
  • state=absent
  • основная разница: добавили значение nginx-common. Оно описано на оф. сайте.

3. Установка Nginx с официальным репозиторием

Процедура стандартной установки выглядит так:

  • Скачивание и установка ключа
  • Добавление repositories
  • Удаление nginx-common
  • Обновление регистра пакетов update
  • Установка nginx

Перед созданием playbook, разберем два важных момента. Первый: надо скачать файл ключа и активировать.

  1. $ sudo wget https://nginx.org/keys/nginx_signing.key
  2. $ sudo apt-key add nginx_signing.key

Второе. Надо добавить данные с репозиториями:

  1. deb https://nginx.org/packages/mainline/debian/ <CODENAME> nginx
  2. deb-src https://nginx.org/packages/mainline/debian/ <CODENAME> nginx

Для этого будем использовать: "get_url", "apt_key" и "apt_repository" при формировании playbook. Все данные можно взять с оф. сайта docs.ansible.com, в разделе "Playbooks".

Начнем. Создадим новый файл и заполним его:

  1. sudo nano 3_nginx.yml

Заполняем файл:

  1. ---
  2. - name: Install Nginx + repositories
  3. hosts: all
  4. become: yes
  5.  
  6. tasks:
  7. - name: download PGP-key
  8. get_url:
  9. url: http://nginx.org/keys/nginx_signing.key
  10. dest: /etc/nginx_signing.key
  11.  
  12. - name: install PGP-key
  13. apt_key:
  14. file: /etc/nginx_signing.key
  15. state: present
  16.  
  17. - name: Add Nginx Repo deb
  18. apt_repository:
  19. repo: deb https://nginx.org/packages/mainline/debian/ buster nginx
  20.  
  21. - name: Add Nginx Repo deb-src
  22. apt_repository:
  23. repo: deb-src https://nginx.org/packages/mainline/debian/ buster nginx
  24.  
  25. - name: Del Nginx-common
  26. apt: name=nginx-common state=absent
  27.  
  28. - name: Install Nginx of Debian 10
  29. apt: name=nginx update_cache=yes state=latest
  30.  
  31. - name: Start Nginx and Enable it on the every boot
  32. service: name=nginx state=started enabled=yes

Разберем более подробно каждый блок:

get_url

  • "url:" - откуда
  • "dest:" - куда

apt_key

  • "file:" - расположение ключа
  • "state:" - гарантия проверки ключа

apt_repository:

  • "repo:" - добавить репозиторий, путь будет в каталог sources.list.d

Далее запускам:

  1. ansible-playbook 3_nginx.yml
  2.  
  3. PLAY [Install Nginx + repositories] ***********
  4.  
  5. TASK [Gathering Facts] ********************
  6. ok: [debi]
  7.  
  8. TASK [download PGP-key] *****************
  9. changed: [debi]
  10.  
  11. TASK [install PGP-key] *********************
  12. changed: [debi]
  13.  
  14. TASK [Add Nginx Repo deb] *****************
  15. changed: [debi]
  16.  
  17. TASK [Add Nginx Repo deb-src] **************
  18. changed: [debi]
  19.  
  20. TASK [Del Nginx-common] ******************
  21. changed: [debi]
  22.  
  23. TASK [Install Nginx of Debian 10] ************
  24. changed: [debi]
  25.  
  26. TASK [Start Nginx and Enable it on the every boot] ***
  27. changed: [debi]
  28.  
  29. PLAY RECAP ******************************
  30. debi : ok=8 changed=7 unreachable=0 failed=0

Проверяем версию:

  • Была при первом варианте установки: nginx version: nginx/1.14.2
  • Стала: nginx version: nginx/1.17.4

4. Установка PHP-FPM

Чтобы установить PHP-FPM, просто в код выше добавим несколько строк. Открываем файл:

  1. sudo nano 3_nginx.yml

И в самый конец через пропуск строки, добавляем такой фрагмент:

  1. # INSTALL PHP-FPM
  2.  
  3. - name: Install PHP-FPM of Debian 10
  4. apt: name=php-fpm update_cache=yes state=latest

Все, можно запускать!

Есть несколько моментов:

  • Код выше можно оптимизировать до меньшего размера, но это мы сделаем в следующих уроках
  • Пакет PHP-FPM ставится вместе с доп.пакетами, об этом мы напишем, когда дойдем до циклов.

Всем спасибо, кто читал!

Источник: http://linuxsql.ru