Введение
Разработка PHP-приложения — это только половина дела. Вторая, не менее важная часть — это деплой, то есть развёртывание готового кода на боевом сервере. Многие начинающие разработчики сталкиваются с трудностями при переносе проекта с локальной машины на VPS (Virtual Private Server). Настройка окружения, работа с веб-сервером, базами данных и безопасностью могут показаться сложными, но на самом деле это последовательный и понятный процесс.
В этой статье мы шаг за шагом разберём, как правильно выполнить деплой PHP приложения на VPS. Вы узнаете, как подготовить сервер, настроить Nginx и PHP-FPM, подключить базу данных MySQL и автоматизировать выкладку обновлений через Git. Материал рассчитан на тех, кто уже имеет базовые навыки работы с Linux и Git, но хочет систематизировать знания.
1. Подготовка сервера и установка LEMP-стека
Первым делом необходимо подключиться к вашему VPS по SSH и установить базовый набор программ, известный как LEMP (Linux, Nginx, MySQL, PHP).
Подключитесь к серверу:
ssh root@ваш-ip-адресОбновите пакеты и установите Nginx, MySQL и PHP с необходимыми расширениями:
sudo apt update && sudo apt upgrade -ysudo apt install nginx mysql-server php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip -yПосле установки запустите службы и добавьте их в автозагрузку:
sudo systemctl start nginxsudo systemctl enable nginxsudo systemctl start php8.1-fpm # версия может отличатьсяsudo systemctl enable php8.1-fpmНа этом этапе базовая инфраструктура готова. Теперь перейдём к настройке базы данных и конфигурации веб-сервера.
2. Настройка MySQL и создание базы данных
Для работы большинства PHP-приложений (например, WordPress, Laravel или самописных проектов) требуется база данных. Выполните первичную настройку MySQL:
sudo mysql_secure_installationСледуйте инструкциям: установите пароль для root, удалите анонимных пользователей, запретите удалённый вход root'ом и удалите тестовую базу.
Теперь создайте базу данных и пользователя для вашего приложения. Зайдите в консоль MySQL:
sudo mysql -u root -pВыполните SQL-запросы (замените myapp, myuser и mypassword на свои значения):
CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';GRANT ALL PRIVILEGES ON myapp.* TO 'myuser'@'localhost';FLUSH PRIVILEGES;EXIT;База готова. Запишите имя базы, пользователя и пароль — они понадобятся при настройке приложения.
3. Размещение кода и настройка виртуального хоста Nginx
Теперь самое время перенести код вашего PHP-приложения на сервер. Самый удобный способ — использовать Git. Допустим, ваш проект хранится на GitHub или GitLab.
Создайте директорию для проекта и склонируйте репозиторий:
sudo mkdir -p /var/www/myappsudo chown -R $USER:$USER /var/www/myappgit clone https://github.com/ваш-username/ваш-репозиторий.git /var/www/myappЕсли проект использует Composer (например, Laravel или Symfony), выполните установку зависимостей:
cd /var/www/myappcomposer install --no-dev --optimize-autoloaderНастройте права доступа. Обычно веб-сервер должен иметь доступ на запись к некоторым папкам (например, storage и bootstrap/cache в Laravel):
sudo chown -R www-data:www-data /var/www/myapp/storagesudo chown -R www-data:www-data /var/www/myapp/bootstrap/cacheТеперь создадим конфигурацию виртуального хоста для Nginx. Создайте файл:
sudo nano /etc/nginx/sites-available/myappВставьте следующую конфигурацию (адаптир