###### tags: `МДК02.05 Организация администрирования операционных систем Linux` `Linux` # Лабораторная работа №11. Развертывание CMS Wordpress на базе nginx. ### Тема: Развертывание CMS Wordpress на базе nginx. ##### Цель работы: Научиться настраивать php для web сервер Nginx на OC Linux. Развернуть CMS Wordpress на базе стека LEMP. ##### Необходимые материалы: Пк с доступом в интернет. Виртуальные машины с Linux Debian и Ubuntu. ## Теоретическая часть **Система управления контентом (Content management system)** — информационная система или компьютерная программа, используемая для обеспечения и организации совместного процесса создания, редактирования и управления контентом. CMS обычно состоит из двух основных компонентов: - Приложение для управления контентом (CMA) в качестве внешнего пользовательского интерфейса, позволяющего пользователю добавлять, изменять и удалять контент с веб-сайта без вмешательства веб-мастера. - Приложение доставки контента (CDA), которое компилирует контент и обновляет веб-сайт. Основные функции CMS: - Предоставление инструментов для создания содержимого, организация совместной работы над содержимым - Управление содержимым: хранение, контроль версий, соблюдение режима доступа, управление потоком документов - Публикация содержимого - Представление информации в виде, удобном для навигации, поиска **Преимущество CMS** Использование систем управления сайтом CMS (Content Management System) позволяет сделать изготовление сайтов максимально простым, сведя его к разработке веб-дизайна и настройке системы управления веб-контентом. Такой подход обеспечивает надежную и стабильную работу ресурса, поскольку самые популярные CMS тестировались на протяжении нескольких лет, а также в них были исправлены все ошибки. Кроме того, за изготовление сайтов на базе уже имеющихся движков говорит и то, что системы обеспечивают удобство в последующей работе с сайтом. Принцип работы с большинством CMS одинаков: изготовление сайтов производится путем расстановки информационных блоков, потом - прорисовка веб-дизайна и настройка интерфейса. Все популярные системы управления контентом имеют разграничение доступа к сайту, поэтому использовать их удобно и в том случае, когда необходимо предоставить различным пользователям разные возможности. ### WordPress WordPress – это одна из наиболее популярных CMS в мире. С ее помощью можно создавать сайты различного характера и управлять ими без знаний и навыков программирования. Сегодня в сети существует множество различных программ или систем управления, но WordPress является самой популярной. Более 30 % всех сайтов в интернете работают на данной платформе. А если говорить исключительно о площадках, работающих на CMS, то на WP приходится более 60 %, что делает ее однозначным лидером рынка. **Функционал WordPress:** 1. Позволяет создавать, удалять и редактировать статические страницы (например, «О компании», «Контакты», «Товар X» и т. д.). 2. Позволяет создавать, удалять и редактировать записи (публикации). 3. Широкие возможности по работе с комментариями (включить, отключить, древовидный формат, максимальное число на одной странице и т. д.). 4. Поддержка ЧПУ (человеко-понятный URL), написание собственных URL, большой выбор форматов. 5. Поддержка меток, рубрик, RSS, поиска. 6. Отличный текстовый редактор WYSIWYG (What You See Is What You Get – что ты видишь, то и получишь), работающий в двух режимах: визуальный и html. 7. Онлайн редактор фотографий и изображений, позволяющий обрезать, поворачивать, масштабировать и т. д. 8. Большой выбор готовых шаблонов, что значительно упрощает процесс создания сайта. 9. Большой набор различных плагинов и виджетов, позволяющих добавлять нестандартные функции. Wordpress работает на базе php и использует базу данных mysql. В качестве веб сервера мы можем выбрать либо Apache либо Nginx в первом случае такой стек будет называться LAMP что в переводе Linux + Apache + Mysql + PHP. Во втором случае LEMP, где E обозначает Nginx. ## Практическая часть 1. Как уже было сказанно WordPress использует стек LEMP. Давайте установим его вместо mysql мы будет использовать mariadb это почти одно и тоже: ```bash= apt update apt upgrade apt-get install nginx mariadb-server apt-get install php-fpm php-mysql php-gd php-curl php-mbstring ``` 3. Отредактируйте сайт по умолчанию в nginx `/etc/nginx/sites-available/default`: ```config server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; } location ~ /\.ht { deny all; } } ``` важно для параметра `fastcgi_pass` указать версию php-fpm ту которая у вас установлена. 4. Создайте файл `/var/www/html/index.php` с следующим кодом: ```php= <?php phpinfo();?> ``` 5. Перезагрузите nginx. 6. Откройте сайт по ip_адресу сервера в браузере: ![](https://i.imgur.com/shOuqGC.png) 7. Скачайте последнию версию WordPress в директорию /tmp: ``` cd /tmp wget https://wordpress.org/latest.tar.gz ``` 8. Разархивируйте архив. 9. Скопируйте WordPress сайт в директорию для сайтов: ``` cp -a /tmp/wordpress/. /var/www/html/ ``` 10. Создадим базу данных для WordPress: ```bash= mysql -u root -p ``` ```sql= CREATE DATABASE wordpress; CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost'; FLUSH PRIVILEGES; EXIT; ``` 11. Переименуйте файл конфигурации WP: ``` mv /var/www/html/wp-config-sample.php /var/www/html/wp-config.php ``` 12. Отредактируйте `/var/www/html/wp-config.php`, нужно изменить эти параметры под параметры созданной ранее БД: ```php= define( 'DB_NAME', 'database_name_here' ); define( 'DB_USER', 'username_here' ); define( 'DB_PASSWORD', 'password_here' ); define( 'DB_HOST', 'localhost' ); ``` 13. Сделайте владельцем директории с сайтом WordPress пользователя веб сервера nginx а также задайте права 755 для всего содержимого директории: ``` chown -R www-data:www-data /var/www/html/ chmod -R 755 /var/www/html/ ``` 14. Перезагрузите nginx и php-fpm. После перейдите по ip адресу сервера в браузере и завершите установку WordPress: ![](https://i.imgur.com/iIAP5o3.png) Укажите всю неоюходимую информацию и завершите установку. ![](https://i.imgur.com/CYn7vO6.png) В отчете опишите все шаги установки. ## Контрольные вопросы 1. **Опишите из чего состоит стек LEMP?** 2. **Что такое CMS система?** 3. **Какой функционал дает WordPress?**