У каждого DevOps-инженера повседневной задачей является развертывание web-сервера для размещения веб-сайтов или приложений. Одним из самых популярных стеков для разворачивания веб-серверов является LEMP (Linux, Nginx, MySQL, PHP). В этой статье мы рассмотрим, как установить и настроить LEMP стек на Ubuntu 22.04, а также приведем примеры конфигурации.
В данной статье мы рассмотрим, как установить LEMP стек на Ubuntu, настроить его и приведем примеры конфигураций для различных целей. Научившись устанавливать и настраивать LEMP стек, вы сможете создавать и размещать веб-сайты или приложения, которые будут быстрыми, надежными и безопасными.
Обновление Ubuntu
Перед установкой LEMP стека рекомендуется выполнить обновление пакетов Ubuntu. Для этого нужно открыть терминал и выполнить команды:
sudo apt update sudo apt upgrade
Установка Nginx
Nginx является веб-сервером, который позволяет обслуживать статический и динамический контент. Для установки Nginx выполните следующие команды:
sudo apt install nginx sudo systemctl start nginx sudo systemctl enable nginx
После установки Nginx можно проверить работу веб-сервера, открыв веб-браузер и вводя в адресной строке IP-адрес сервера Ubuntu. Вы должны увидеть страницу приветствия Nginx.
Установка MySQL
MySQL является реляционной базой данных, которая используется для хранения данных веб-приложений. Для установки MySQL выполните следующие команды:
sudo apt install mysql-server sudo systemctl start mysql sudo systemctl enable mysql
После установки MySQL нужно настроить базу данных и пользователя. Это можно сделать, выполнив команду:
sudo mysql_secure_installation
Установка PHP 7.4
PHP является скриптовым языком, который используется для создания динамических веб-страниц. В нашем случае, мы установим PHP для работы в режиме FastCGI. Для этого выполните следующие команды:
sudo apt install php-fpm php-mysql sudo systemctl start php7.4-fpm sudo systemctl enable php7.4-fpm
Настройка Nginx
После установки всех компонентов LEMP стека нужно настроить Nginx для работы с PHP. Для этого нужно открыть файл конфигурации Nginx:
sudo nano /etc/nginx/sites-available/default
В этом файле нужно найти блок server и добавить следующие строки внутри блока:
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; }
После внесения изменений нужно перезапустить Nginx:
sudo systemctl restart nginx
Проверка LEMP стека
После завершения всех шагов нужно проверить, что LEMP стек правильно установлен и настроен. Для этого можно создать простой PHP-скрипт и проверить его работу через веб-браузер.
- Создайте файл index.php в директории /var/www/html/ с помощью команды:
sudo nano /var/www/html/index.php
- Вставьте следующий код в файл index.php:
<?php phpinfo(); ?>
- Сохраните и закройте файл.
- Откройте веб-браузер и введите в адресной строке IP-адрес сервера Ubuntu: http://ваш_ip/index.php. Вы должны увидеть страницу с информацией о версии PHP, его настройках и предустановленных расширениях.
Примеры конфигурации
- Конфигурация Nginx для использования SSL:
Для использования SSL необходимо сгенерировать самоподписанный сертификат и добавить его в конфигурацию Nginx. Вот пример конфигурации для сайта, работающего на SSL:
server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { root /var/www/html; index index.html index.htm index.php; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; } }
- Конфигурация Nginx для использования кэша:
Для увеличения скорости работы сайта можно использовать кэш Nginx. Вот пример конфигурации для сайта с использованием кэша:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache_zone:10m inactive=60m; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_cache_valid 200 60m; proxy_cache_valid 404 1m; server { listen 80; server_name example.com; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_cache_bypass $http_cache_control; add_header X-Cache-Status $upstream_cache_status; } }
Эта конфигурация позволяет кэшировать ответы сервера на 60 минут для кода ответа 200 и на 1 минуту для кода ответа 404.
3. Конфигурация MySQL для оптимизации RAM:
Конфигурация MySQL для оптимизации использования RAM – это одна из важных задач при настройке базы данных на сервере. Правильная конфигурация позволит использовать ресурсы сервера эффективно и сократить время ответа базы данных.
Вот пример конфигурации MySQL, который можно использовать для оптимизации использования RAM:
[mysqld] key_buffer_size = 16M max_allowed_packet = 64M thread_stack = 192K thread_cache_size = 8 query_cache_limit = 1M query_cache_size = 16M innodb_buffer_pool_size = 256M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 2
Давайте разберем каждую строку в этой конфигурации:
- key_buffer_size = 16M: Это размер буфера индексов для таблиц MyISAM. Увеличение этого значения может улучшить производительность при использовании таблиц MyISAM.
- max_allowed_packet = 64M: Это максимальный размер пакета, который может быть отправлен или получен через соединение MySQL. Установка более высокого значения может позволить передавать большие объемы данных, таких как крупные запросы или файлы.
- thread_stack = 192K: Это размер стека потока. Он определяет, сколько оперативной памяти выделяется каждому потоку MySQL. Установка этого значения может помочь управлять использованием памяти.
- thread_cache_size = 8: Это количество потоков, которые будут сохранены в кэше для повторного использования. Это может уменьшить нагрузку на сервер, поскольку MySQL не будет создавать новые потоки при каждом запросе.
- query_cache_limit = 1M: Это максимальный размер кэша запросов. Он определяет максимальный размер запроса, который будет сохранен в кэше. Установка низкого значения может помочь избежать переполнения кэша запросов.
- query_cache_size = 16M: Это размер кэша запросов. Этот параметр определяет, сколько памяти будет выделено для хранения результатов запросов в кэше.
- innodb_buffer_pool_size = 256M: Это размер буфера пула памяти для InnoDB. Увеличение этого значения может улучшить производительность при использовании InnoDB.
- innodb_log_buffer_size = 8M: Это размер буфера журнала для InnoDB. Он определяет, сколько оперативной памяти выделяется для буфера журнала. Установка более высокого значения может улучшить производительность при использовании InnoDB.
- innodb_flush_log_at_trx_commit = 2: Это параметр определяет как часто InnoDB должен записывать данные в журнал при транзакции. Значение “2” означает, что данные будут записываться каждую секунду, что может помочь улучшить производительность.
Это пример конфигурации, который можно использовать для оптимизации использования RAM на сервере MySQL. Однако, перед тем как применять эту конфигурацию, нужно учитывать особенности вашего приложения и тестировать ее на производительности. Также, следует помнить, что эффективная конфигурация зависит от многих факторов, таких как размер базы данных, количество запросов и т.д.
Использование LEMP стека предназначено для продвинутых пользователей. Для более удобной и комфортной работы с сайтами, учитывая что их может быть размещено на сервере несколько, для большинства пользователей будет оптимальным установить панели управления сервером, например, FastPanel.
Заключение
В заключение, установка LEMP стека на Ubuntu может показаться сложной задачей, но при правильном выполнении всех шагов, вы сможете быстро и легко развернуть веб-сервер и базу данных для своих проектов. Более того, настройка конфигурации Nginx позволяет увеличить скорость и безопасность работы вашего сайта.