###### 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_адресу сервера в браузере: 
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: 
Укажите всю неоюходимую информацию и завершите установку.

В отчете опишите все шаги установки.
## Контрольные вопросы
1. **Опишите из чего состоит стек LEMP?**
2. **Что такое CMS система?**
3. **Какой функционал дает WordPress?**