Перед новым годом решил написать данную статью. В интернете очень много статей на данную тему, но большинство из них не рабочие, авторы их не обновляют, тем самым они являются не актуальными на сегодняшний день.
Все действия в этой статье проверены лично мной и стек заработает 100%. Внимательно читайте и все будет гут.
Погнали.
Для начала нам нужен сервер с операционной системой, что же выбрать? Для нашего веб-сервера мы будем устанавливать Linux Ubuntu Server 22.04 LTS. Графическая оболочка ни к чему. Устанавливать будем на VirtualBox, для теста пойдет за глаза, но если планируется выпустить сайт на релиз, то лучше использовать отдельную машину.
Про установку гипервизора VirtualBox рассказывать не буду в этой статье. Начнем с установки Linux Ubuntu 22.04 LTS.
Для начала скачиваем дистрибутив с официального сайта https://ubuntu.com/download/desktop
В первом окне система попросит выбрать язык, оставляем English, чтобы далее не было проблем с путями. Нажимаем Enter
Далее установщик спросит "Продолжить без обновления" Либо "Обновить до нового установщика". Выбираем первый пункт (Update to the new installer), жмем Enter.
Начнется обновление. Ждем завершения.
После этого установщик спросит про изменение конфигурации (раскладки) клавиатуры, оставляем по дефолту английскую раскладку. Выбираем Done, жмем Enter.
Далее попросит выбрать тип установки, оставляем как есть. Выбираем Done, жмем Enter.
После этого будет окно с настройками сетевого соединения (Network connections). Здесь тоже оставляем без изменений, но если вам нужен определенный ip для виртуальной машины, измените на такой, какой нужен.
p.s. Чтобы вы видели в своей локальной сети вашу виртуальную машину, в настройках сети VirtualBox необходимо поставить соединение "Сетевой мост". По дефолту там стоит NAT.
Выбираем Done, жмем Enter.
Далее установщик просит ввести конфигурацию прокси сервера, его адрес. В данном случае он нам не нужен. Ничего не меняя выбираем Done, жмем Enter.
В следующем окне конфигурацию зеркала оставляем без изменений. Done --> Enter.
Далее также без изменений. Выбираем Done --> Enter.
Разметку диска оставляем по дефолту. Done --> Enter.
После того как нажмете Done, появится окно с предупреждением, жмем Continue.
В следующем окне пишите свое имя, имя сервера, имя пользователя и пароль. После этого выбираем Done.
Далее установку OpenSSH сервера можете пропустить. Если нужен будет, можно доустановить в уже готовой системе. Жмем Done --> Enter.
Далее нас попросят выбрать так называемые Server Snaps или снимки серверов... Они нам абсолютно не потребуются, ничего не выбираем, жмем Done.
Началась установка, ждем завершения, пока не появится строчка Reboot Now. Перезагружаем
После того, как вошли в систему обновляемся командой
sudo apt update && sudo apt upgrade
Вводим пароль и ждем
При запросе Do you want to continue? вводим y и жмем Enter
Далее нас спросят, какие сервисы нужно перезапустить, ничего не меняя выбираем Ок. Готово.
C ОС закончили. Теперь начинается самое интересное, ради чего мы и установили серверную систему. Непосредственно настройка LEMP.
Начнем с NGINX. Не буду лить воду, что это такое и его историю появления на замену апача, скажу лишь то, что данная система является полностью бесплатной и с открытым исходным кодом. Он позволяет создать веб-сервер (для чего чаще всего и применяется),а так же на нем можно создать почтовый сервер и обратный прокси.
NGINX
Для установки Nginx пропишем в консоли следующую команду:
sudo apt install nginx
Вот и все :) Ничего сложного.
Для проверки нам понадобится ip адрес сервера.
Если не запомнили ip , можно проверить его введя команду ifconfig,
но для начала нужно установить net-tools , так как в lts версии он изначально отсутствует
Установим его, прописав: sudo apt install net-tools
После этого вводим ifconfig и он покажет наш ip адрес
Проверим, запущен ли у нас nginx
Введем в консоли: sudo systemctl status nginx
Так же проверим его, вбив ip-адрес ubuntu сервера в браузере.
Если у вас отобразилось сообщение, как на скриншоте, значит все окей, nginx запущен и работает.
Установка MySQL
Далее нам необходимо установить MySQL сервер.
Вводим в консоли команду: sudo apt install mysql-server
После установки проверим работает ли mysql
Вводим в консоли: sudo systemctl status mysql
Должно быть как на скрине у меня, значит все хорошо
Далее нам нужно создать базу данных и пользователя, с которыми будет работать wordpress.
Подключаемся к нашему mysql серверу набрав в консоли: sudo mysql
Теперь консоль будет принимать команды только основанные на синтаксисе языка SQL.
Создаем базу данных. Вводим в консоли скрипт:
CREATE DATABASE name_database;
Где CREATE DATABASE - создать БД, name_database - ее имя, вместо name_database укажите любое свое имя для базы и запишите куда-нибудь в блокнот, чтобы постоянно не лазить в mysql и не смотреть какие БД там имеются.
Я для наглядности назову свою БД - my_test
Создали? Теперь проверим, что БД создана, введем в консоли:
SHOW DATABASES;
Отлично. Базу данных создали. Теперь создадим пользователя с привилегированными правами для неё. Введем в консоли:
CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'password';
Где CREATE USER - создать пользователя
my_user - имя пользователя, я для наглядности создам - cyber
и password - соответственно пароль пользователя
Хотя mysql нам не выдал ошибок, мы все равно проверим, что пользователь создался, введем
SELECT User FROM mysql.user;
Отлично БД и пользователь есть. Теперь предоставим пользователю права ко всем таблицам в базе данных:
GRANT ALL ON name_database.*TO 'my_user'@'localhost';
Готово. Запомните или запишите данные о БД и пользователе и пароле. В дальнейшем они нам понадобятся. Скоро мы вернемся еще сюда.
Выйдем из mysql командой exit
PHP
Ну что, настало время установить php и все зависимости и репозитории для его корректной работы.
Погнали.
Установка php8.1-fpm
В консоли пропишем следующие команды по порядку:
sudo apt install software-properties-common
Готово. Далее:
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. Идем дальше
Настройка конфигурации default:
Здесь мы будем настраивать стандартный файл default, на основании его потом сможете писать конфигурации для других сайтов.
Откроем файл, он находится по пути /etc/nginx/sites-available/default
Открывать будем редактором nano.
Пропишем в консоли:
sudo nano /etc/nginx/sites-available/default
После чего откроется этот файл, удаляем все, что там есть и приведем к следующему виду:
Готово. Выходим из редактора Ctrl+X --> Yes--> Enter.
Проверяем конфигурацию командой:
sudo nginx -t
Если есть ошибки, консоль покажет их и укажет в какой строке, если как на скрине, то все ок.
Теперь проверим, что наш nginx дружит с php. Создадим тестовый файл, который выведет в браузере информацию о нашем сервере.
Создавать файл будем разумеется в корне нашего сайта. Данная команда создаст и автоматически откроет файл для его редактирования, пропишем:
sudo nano /var/www/html/info.php
И пропишем туда следующий скрипт:
<?php
phpinfo();
Готово. Сохраняем Ctrl+X -->Yes-->Enter.
После этого перезапустите сервер командой reboot, после перезагрузки введите в адресной строке браузера:
http://Ваш_ip/info.php
Должна появиться данная страница:
Отлично. C php-fpm готово. Теперь нам нужно подружить между собой PHP и MySQL.
Установка модуля php для работы с MySQL:
Помните мы создавали базу данных, пользователя и пароль для musql?
Самое время их вспомнить.
Пропишем в консоли:
sudo apt install php8.1-mysql
Ждем пока установится.
Теперь нам необходимо проверить, что mysql коннектится с php, для этого создадим тестовую таблицу в mysql.
Коннектимся к mysql под вашим пользователем , которого создавали, для этого пропишем в консоли:
mysql -u my_user -p
Вводите свой пароль и готово, вы в mysql под своим пользователем.
Добавим таблицу в БД для теста. Здесь есть нюанс, консоль linux не даст вам использовать Enter для отступа на другую строку, а скрипт должен быть выполнен по синтаксису SQL , то есть строки должны быть разделены между собой, нельзя написать все в одну строку, тогда mysql выдаст ошибку, может и отругает про себя нехорошими словами. Для этого просто используйте пробел, пока не перейдете на новую строку.
Вот так должен выглядеть скрипт, пропишите его у себя. Где my_test - ваша БД, test_table - название таблицы.
Теперь вставим в эту таблицу, какую-нибудь строчку:
INSERT INTO my_test.test_table(test_text) VALUES ("Privet, kak dela?");
Теперь проверим нашу таблицу.
SELECT * FROM my_test.test_table;
Отлично. Все работает. Выходим с mysql командой exit.
Теперь необходимо сделать вывод данных из таблицы через PHP. Для этого нужно подключиться к БД через скрипт, сейчас мы его напишем.
Создадим в корне нашего сайта новый файлик php
sudo nano /var/www/html/connect.php
И пропишем следующий скрипт:
Вместо cyber пишите свою учетку от mysql, где 123321 - ваш пароль, и где my_test - имя вашей БД
Сохраним Ctrl+X -->Yes --> Enter.
Далее, в этом же разделе создаем еще один файл для вывода данных из таблицы
sudo nano /var/www/html/select_from_table_test.php
Пропишем в нем следующий скрипт:
Аналогично предыдущему сохраняем Ctrl+X --> Yes --> Enter.
Готово. Проверим.
Если вывело как на скрине все работает и запросы от PHP в MySQL проходят успешно.
Далее установим остальные модули , являющиеся важными для корректной работы сайта. По порядку выполняем команды:
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
Готово. Можно приступать к следующему шагу.
Теперь можно приступать к установке WordPress на сервер.
Перейдем в корень нашего сайта
cd /var/www/html
И скачаем WordPress
sudo wget https://wordpress.org/latest.tar.gz
Распакуем скачанный архив:
sudo tar -xzvf latest.tar.gz
Затем удалим архив:
sudo rm latest.tar.gz
Затем переместим содержимое папки wordpress в родительскую для ее директорию:
sudo mv wordpress/* .
И удалим папку wordpress:
sudo rm -R wordpress
Ок. Отлично. Теперь нужно сделать, чтобы wordpress обращался к нашем базе данных.
Проверим, что мы в корне сайта командой pwd
Хорошо. Необходимо переименовать файл wp-config-sample.php в wp-config.php
Для этого напишем в консоли следующую команду:
sudo mv wp-config-sample.php wp-config.php
Переименовали. Далее откроем его для редактирования
sudo nano wp-config.php
Немного пролистав вниз увидите эти строки
database_name_here - меняете на имя вашей базы данных, которую создавали в mysql
username_here - меняете на пользователя БД
password_here - пароль пользователя.
И добавим сюда строку define('WPLANG', 'ru_RU'); для того, чтобы наша консоль WordPress имела русский язык.
Плюс добавим строку в конец файла define( 'WP_MEMORY_LIMIT', '100M'); для того, чтобы повысить лимит загружаемых файлов на через wordpress, по умолчанию там всего 2мб, этим скриптом повысили до 100 мб.
Должно получится что-то вроде того:
Устанавливаем необходимые права
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
Теперь пробуем открыть наш сайтец.
Прописываем в браузере на ip адрес
Все готово. Поздравляю с личным сайтом, на личном сервере =)