Сегодня мы завершим наш курс по PHP важнейшим этапом, это деплоем вашего приложения в интернет. Вы научитесь готовить проект к продакшену, выбирать хостинг, настраивать сервер и автоматизировать процессы. Время превратить ваш код в реальный продукт.
Перед тем как выкладывать проект в сеть, его нужно оптимизировать и обезопасить. Вот ключевые шаги:
Убедитесь, что приложение работает в продакшен-режиме. В PHP это можно сделать через файл .env:
// .env APP_ENV=production APP_DEBUG=false
Практическая задача:
Создайте файл .env и добавьте переменные окружения для вашего проекта.
Используйте Composer для установки пакетов. Удалите ненужные зависимости из composer.json и выполните:
bash
composer install --no-dev --optimize-autoloader
Флаг --no-dev исключает пакеты для разработки (например, тесты).
mysqldump -u root -p my_database > database.sql
$db_host = getenv('DB_HOST'); $db_name = getenv('DB_NAME'); $db_user = getenv('DB_USER'); $db_password = getenv('DB_PASSWORD');
Создайте скрипт переноса БД на чистом SQL или используйте инструменты вроде Phinx.
phpinfo.php или test.php.chmod 755 public/ chmod 644 config.php
// Используйте password_hash() $secret_key = bin2hex(random_bytes(32));
php.ini:
iniopcache.enable=1 opcache.memory_consumption=128
Теперь выберем, куда загружать проект. Рассмотрим три варианта:
Подходит для небольших проектов.
Пример загрузки через FTP (FileZilla):
ftp.yourhosting.com, логин и пароль.public_html.Важно: Убедитесь, что версия PHP на хостинге совпадает с вашей локальной. Это можно проверить через панель управления (например, cPanel).
Для сложных проектов арендуйте виртуальный сервер (например, на Бегет или TimeWeb).
Настройка сервера:
sudo apt update sudo apt install apache2 mysql-server php libapache2-mod-php
<VirtualHost *:80>
ServerName yourdomain.com
DocumentRoot /var/www/html/public
<Directory /var/www/html/public>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Разверните тестовый проект на бесплатном тариме VPS (например, Oracle Cloud).
Используйте Timeweb Cloud или Yandex Cloud для масштабируемости.
Пример деплоя на Heroku:
heroku login heroku create my-php-app
Procfile:
procfileweb: vendor/bin/heroku-php-apache2 public/
git push heroku main
Настройте автоматическую сборку через GitHub Actions или GitLab CI.
Пример workflow для GitHub Actions:
yaml
name: Deploy PHP App on: push: branches: [ main ] jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Install dependencies run: composer install --no-dev --optimize-autoloader - name: Upload to server via SSH uses: appleboy/scp-action@master with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USER }} password: ${{ secrets.SSH_PASSWORD }} source: "." target: "/var/www/html"
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Поздравляю, теперь ваш PHP-проект доступен всему миру. Не забывайте делать бэкапы и мониторить логи сервера. Если что-то пошло не так, пишите в комментариях, помогу разобраться.
Если что то забыли на курсе по изучению PHP, то переходите по ссылке: https://sovet-seo.ru/kurs_php.html.