Найти в Дзене
IPredator.blog

Рабочая инструкция по поднятию стека LEMP + WordPress (Linux, Nginx, MySQL, PHP)

Перед новым годом решил написать данную статью. В интернете очень много статей на данную тему, но большинство из них не рабочие, авторы их не обновляют, тем самым они являются не актуальными на сегодняшний день. Все действия в этой статье проверены лично мной и стек заработает 100%. Внимательно читайте и все будет гут. Погнали. Для начала нам нужен сервер с операционной системой, что же выбрать? Для нашего веб-сервера мы будем устанавливать Linux Ubuntu Server 22.04 LTS. Графическая оболочка ни к чему. Устанавливать будем на VirtualBox, для теста пойдет за глаза, но если планируется выпустить сайт на релиз, то лучше использовать отдельную машину. Про установку гипервизора VirtualBox рассказывать не буду в этой статье. Начнем с установки Linux Ubuntu 22.04 LTS. Для начала скачиваем дистрибутив с официального сайта https://ubuntu.com/download/desktop В первом окне система попросит выбрать язык, оставляем English, чтобы далее не было проблем с путями. Нажимаем Enter Далее установщик спр

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

Все действия в этой статье проверены лично мной и стек заработает 100%. Внимательно читайте и все будет гут.

Погнали.

Для начала нам нужен сервер с операционной системой, что же выбрать? Для нашего веб-сервера мы будем устанавливать Linux Ubuntu Server 22.04 LTS. Графическая оболочка ни к чему. Устанавливать будем на VirtualBox, для теста пойдет за глаза, но если планируется выпустить сайт на релиз, то лучше использовать отдельную машину.

Про установку гипервизора VirtualBox рассказывать не буду в этой статье. Начнем с установки Linux Ubuntu 22.04 LTS.

Для начала скачиваем дистрибутив с официального сайта https://ubuntu.com/download/desktop

В первом окне система попросит выбрать язык, оставляем English, чтобы далее не было проблем с путями. Нажимаем Enter

-2

Далее установщик спросит "Продолжить без обновления" Либо "Обновить до нового установщика". Выбираем первый пункт (Update to the new installer), жмем Enter.

-3

Начнется обновление. Ждем завершения.

-4

После этого установщик спросит про изменение конфигурации (раскладки) клавиатуры, оставляем по дефолту английскую раскладку. Выбираем Done, жмем Enter.

-5

Далее попросит выбрать тип установки, оставляем как есть. Выбираем Done, жмем Enter.

-6

После этого будет окно с настройками сетевого соединения (Network connections). Здесь тоже оставляем без изменений, но если вам нужен определенный ip для виртуальной машины, измените на такой, какой нужен.

p.s. Чтобы вы видели в своей локальной сети вашу виртуальную машину, в настройках сети VirtualBox необходимо поставить соединение "Сетевой мост". По дефолту там стоит NAT.

Выбираем Done, жмем Enter.

-7
-8

Далее установщик просит ввести конфигурацию прокси сервера, его адрес. В данном случае он нам не нужен. Ничего не меняя выбираем Done, жмем Enter.

-9

В следующем окне конфигурацию зеркала оставляем без изменений. Done --> Enter.

-10

Далее также без изменений. Выбираем Done --> Enter.

-11

Разметку диска оставляем по дефолту. Done --> Enter.

-12

После того как нажмете Done, появится окно с предупреждением, жмем Continue.

-13

В следующем окне пишите свое имя, имя сервера, имя пользователя и пароль. После этого выбираем Done.

-14

Далее установку OpenSSH сервера можете пропустить. Если нужен будет, можно доустановить в уже готовой системе. Жмем Done --> Enter.

-15

Далее нас попросят выбрать так называемые Server Snaps или снимки серверов... Они нам абсолютно не потребуются, ничего не выбираем, жмем Done.

-16

Началась установка, ждем завершения, пока не появится строчка Reboot Now. Перезагружаем

После того, как вошли в систему обновляемся командой

sudo apt update && sudo apt upgrade

Вводим пароль и ждем

При запросе Do you want to continue? вводим y и жмем Enter

-17

Далее нас спросят, какие сервисы нужно перезапустить, ничего не меняя выбираем Ок. Готово.

-18

C ОС закончили. Теперь начинается самое интересное, ради чего мы и установили серверную систему. Непосредственно настройка LEMP.

Начнем с NGINX. Не буду лить воду, что это такое и его историю появления на замену апача, скажу лишь то, что данная система является полностью бесплатной и с открытым исходным кодом. Он позволяет создать веб-сервер (для чего чаще всего и применяется),а так же на нем можно создать почтовый сервер и обратный прокси.

NGINX

-19

Для установки Nginx пропишем в консоли следующую команду:

sudo apt install nginx

Вот и все :) Ничего сложного.

Для проверки нам понадобится ip адрес сервера.

Если не запомнили ip , можно проверить его введя команду ifconfig,

но для начала нужно установить net-tools , так как в lts версии он изначально отсутствует

-20

Установим его, прописав: sudo apt install net-tools

После этого вводим ifconfig и он покажет наш ip адрес

-21

Проверим, запущен ли у нас nginx

Введем в консоли: sudo systemctl status nginx

Так же проверим его, вбив ip-адрес ubuntu сервера в браузере.

Если у вас отобразилось сообщение, как на скриншоте, значит все окей, nginx запущен и работает.

Для выхода нажмите Ctrl+C
Для выхода нажмите Ctrl+C
-23

Установка MySQL

-24

Далее нам необходимо установить MySQL сервер.

Вводим в консоли команду: sudo apt install mysql-server

После установки проверим работает ли mysql

Вводим в консоли: sudo systemctl status mysql

Должно быть как на скрине у меня, значит все хорошо

-25

Далее нам нужно создать базу данных и пользователя, с которыми будет работать wordpress.

Подключаемся к нашему mysql серверу набрав в консоли: sudo mysql

-26

Теперь консоль будет принимать команды только основанные на синтаксисе языка SQL.

Создаем базу данных. Вводим в консоли скрипт:

CREATE DATABASE name_database;

Где CREATE DATABASE - создать БД, name_database - ее имя, вместо name_database укажите любое свое имя для базы и запишите куда-нибудь в блокнот, чтобы постоянно не лазить в mysql и не смотреть какие БД там имеются.

Я для наглядности назову свою БД - my_test

-27

Создали? Теперь проверим, что БД создана, введем в консоли:

SHOW DATABASES;

-28

Отлично. Базу данных создали. Теперь создадим пользователя с привилегированными правами для неё. Введем в консоли:

CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'password';

Где CREATE USER - создать пользователя

my_user - имя пользователя, я для наглядности создам - cyber

и password - соответственно пароль пользователя

-29

Хотя mysql нам не выдал ошибок, мы все равно проверим, что пользователь создался, введем

SELECT User FROM mysql.user;

-30

Отлично БД и пользователь есть. Теперь предоставим пользователю права ко всем таблицам в базе данных:

GRANT ALL ON name_database.*TO 'my_user'@'localhost';

-31

Готово. Запомните или запишите данные о БД и пользователе и пароле. В дальнейшем они нам понадобятся. Скоро мы вернемся еще сюда.

Выйдем из mysql командой exit

-32

PHP

-33

Ну что, настало время установить php и все зависимости и репозитории для его корректной работы.

Погнали.

Установка php8.1-fpm

В консоли пропишем следующие команды по порядку:

sudo apt install software-properties-common

-34

Готово. Далее:

sudo add-apt-repository ppa:ondrej/php

Начнется установка, консоль выведет что-то вроде "Нажмите Enter , чтобы продолжить, жмем и ждем завершения.

После чего обновимся.

sudo apt update

Система обновит около 3-х пакетов.

И наконец установим php8.1-fpm

sudo apt install php8.1-fpm

Проверим статус этой службы командой:

sudo systemctl status php8.1-fpm

Служба должна быть запущена. Если у вас все как на скрине ниже, то все окей. Нажимаем Ctrl+C. Идем дальше

-35

Настройка конфигурации default:

Здесь мы будем настраивать стандартный файл default, на основании его потом сможете писать конфигурации для других сайтов.

Откроем файл, он находится по пути /etc/nginx/sites-available/default

Открывать будем редактором nano.

Пропишем в консоли:

sudo nano /etc/nginx/sites-available/default

После чего откроется этот файл, удаляем все, что там есть и приведем к следующему виду:

-36

Готово. Выходим из редактора Ctrl+X --> Yes--> Enter.

Проверяем конфигурацию командой:

sudo nginx -t

Если есть ошибки, консоль покажет их и укажет в какой строке, если как на скрине, то все ок.

-37

Теперь проверим, что наш nginx дружит с php. Создадим тестовый файл, который выведет в браузере информацию о нашем сервере.

Создавать файл будем разумеется в корне нашего сайта. Данная команда создаст и автоматически откроет файл для его редактирования, пропишем:

sudo nano /var/www/html/info.php

И пропишем туда следующий скрипт:

<?php

phpinfo();

-38

Готово. Сохраняем Ctrl+X -->Yes-->Enter.

После этого перезапустите сервер командой reboot, после перезагрузки введите в адресной строке браузера:

http://Ваш_ip/info.php

Должна появиться данная страница:

-39

Отлично. C php-fpm готово. Теперь нам нужно подружить между собой PHP и MySQL.

Установка модуля php для работы с MySQL:

Помните мы создавали базу данных, пользователя и пароль для musql?

Самое время их вспомнить.

Пропишем в консоли:

sudo apt install php8.1-mysql

Ждем пока установится.

Теперь нам необходимо проверить, что mysql коннектится с php, для этого создадим тестовую таблицу в mysql.

Коннектимся к mysql под вашим пользователем , которого создавали, для этого пропишем в консоли:

mysql -u my_user -p

Вводите свой пароль и готово, вы в mysql под своим пользователем.

-40

Добавим таблицу в БД для теста. Здесь есть нюанс, консоль linux не даст вам использовать Enter для отступа на другую строку, а скрипт должен быть выполнен по синтаксису SQL , то есть строки должны быть разделены между собой, нельзя написать все в одну строку, тогда mysql выдаст ошибку, может и отругает про себя нехорошими словами. Для этого просто используйте пробел, пока не перейдете на новую строку.

Вот так должен выглядеть скрипт, пропишите его у себя. Где my_test - ваша БД, test_table - название таблицы.

-41

Теперь вставим в эту таблицу, какую-нибудь строчку:

INSERT INTO my_test.test_table(test_text) VALUES ("Privet, kak dela?");

-42

Теперь проверим нашу таблицу.

SELECT * FROM my_test.test_table;

-43

Отлично. Все работает. Выходим с mysql командой exit.

Теперь необходимо сделать вывод данных из таблицы через PHP. Для этого нужно подключиться к БД через скрипт, сейчас мы его напишем.

Создадим в корне нашего сайта новый файлик php

sudo nano /var/www/html/connect.php

И пропишем следующий скрипт:

Вместо cyber пишите свою учетку от mysql, где 123321 - ваш пароль, и где my_test - имя вашей БД

-44

Сохраним Ctrl+X -->Yes --> Enter.

Далее, в этом же разделе создаем еще один файл для вывода данных из таблицы

sudo nano /var/www/html/select_from_table_test.php

Пропишем в нем следующий скрипт:

-45

Аналогично предыдущему сохраняем Ctrl+X --> Yes --> Enter.

Готово. Проверим.

Если вывело как на скрине все работает и запросы от PHP в MySQL проходят успешно.

-46

Далее установим остальные модули , являющиеся важными для корректной работы сайта. По порядку выполняем команды:

sudo apt install php8.1-curl

sudo apt install php8.1-dom

sudo apt install php8.1-imagick

sudo apt install php8.1-mbstring

sudo apt install php8.1-zip

sudo apt install php8.1-intl

Готово. Можно приступать к следующему шагу.

-47

Теперь можно приступать к установке WordPress на сервер.

Перейдем в корень нашего сайта

cd /var/www/html

И скачаем WordPress

sudo wget https://wordpress.org/latest.tar.gz

-48

Распакуем скачанный архив:

sudo tar -xzvf latest.tar.gz

Затем удалим архив:

sudo rm latest.tar.gz

Затем переместим содержимое папки wordpress в родительскую для ее директорию:

sudo mv wordpress/* .

И удалим папку wordpress:

sudo rm -R wordpress

Ок. Отлично. Теперь нужно сделать, чтобы wordpress обращался к нашем базе данных.

Проверим, что мы в корне сайта командой pwd

-49

Хорошо. Необходимо переименовать файл wp-config-sample.php в wp-config.php

Для этого напишем в консоли следующую команду:

sudo mv wp-config-sample.php wp-config.php

Переименовали. Далее откроем его для редактирования

sudo nano wp-config.php

Немного пролистав вниз увидите эти строки

-50

database_name_here - меняете на имя вашей базы данных, которую создавали в mysql

username_here - меняете на пользователя БД

password_here - пароль пользователя.

И добавим сюда строку define('WPLANG', 'ru_RU'); для того, чтобы наша консоль WordPress имела русский язык.

Плюс добавим строку в конец файла define( 'WP_MEMORY_LIMIT', '100M'); для того, чтобы повысить лимит загружаемых файлов на через wordpress, по умолчанию там всего 2мб, этим скриптом повысили до 100 мб.

Должно получится что-то вроде того:

-51
-52

Устанавливаем необходимые права

sudo chown -R www-data:www-data /var/www/html

sudo chmod -R 755 /var/www/html

Теперь пробуем открыть наш сайтец.

Прописываем в браузере на ip адрес

-53

Все готово. Поздравляю с личным сайтом, на личном сервере =)