Деплой

Обновлено: 17.08.2026

🛠 Пошаговая установка

📄 📋 Требования к серверу

title: "Деплой" category: "developers" order: 4

Деплой CRM "Леотехно"

Требования к серверу

Компонент Минимальная версия Рекомендуемая версия
PHP 7.4 8.1+
MySQL/MariaDB 5.7 10.6+
Веб-сервер Apache 2.4 / Nginx 1.18+ Nginx 1.24+
Расширения PHP PDO, MySQLi, JSON, Session, OpenSSL + bcmath, mbstring, zip

Проверка PHP-расширений


php -m | grep -E "pdo|mysql|json|session|openssl"
📄 1. Клонирование репозитория

bash

cd /var/www/
git clone https://github.com/your-repo/crm-invoices.git
cd crm-invoices/
📄 2. Настройка прав

bash

# Назначаем владельца
sudo chown -R www-data:www-data /var/www/crm-invoices/

# Права на запись (для кеша и логов)
sudo chmod -R 775 /var/www/crm-invoices/tmp/
sudo chmod -R 775 /var/www/crm-invoices/logs/
📄 3. Установка зависимостей

bash

composer install --no-dev
📄 4. Импорт базы данных

bash

# Создаём БД
mysql -u root -p -e "CREATE DATABASE crm_invoices CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# Импортируем структуру
mysql -u root -p crm_invoices < /var/www/crm-invoices/dump.sql
📄 5. Настройка конфигурации

Скопируй и отредактируй файлы в config/:

bash

cd /var/www/crm-invoices/config/
cp app.example.php app.php
cp database.example.php database.php
cp mail.example.php mail.php

Пример database.php:

php

<?php
return [
    'host' => 'localhost',
    'dbname' => 'crm_invoices',
    'user' => 'crm_user',
    'password' => 'secure_password',
    'charset' => 'utf8mb4'
];
📄 6. Настройка веб-сервера

Nginx

Создай конфиг /etc/nginx/sites-available/crm-invoices:

nginx

server {
    listen 80;
    server_name your-domain.by;
    root /var/www/crm-invoices/public;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

Активируй конфиг и перезапусти Nginx:

bash

sudo ln -s /etc/nginx/sites-available/crm-invoices /etc/nginx/sites-enabled/
sudo systemctl restart nginx

Apache (с mod_rewrite)

Создай .htaccess в папке public/:

apache

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
📄 7. Настройка почты

Отредактируй config/mail.php:

php

<?php
return [
    'host' => 'smtp.yandex.ru',
    'port' => 465,
    'secure' => 'ssl',
    'user' => '[email protected]',
    'password' => 'your_password',
    'from' => '[email protected]',
    'from_name' => 'CRM "Леотехно"'
];
📄 8. Настройка крона (опционально)

Для отправки уведомлений и очистки корзин:

bash

crontab -e

Добавь:

text

# Очистка корзин каждую ночь
0 3 * * * php /var/www/crm-invoices/scripts/clean-carts.php

# Отправка отложенных уведомлений каждые 5 минут
*/5 * * * * php /var/www/crm-invoices/scripts/send-notifications.php
📄 🔐 Настройка безопасности

. Сгенерируй ключ шифрования

bash

php -r "echo bin2hex(random_bytes(32));"

Добавь в config/app.php:

php

'encryption_key' => 'сгенерированный_ключ_64_символа',

2. Настройка прав на файлы

bash

# Запрет доступа к config/
echo "Deny from all" > config/.htaccess

# Запрет доступа к src/
echo "Deny from all" > src/.htaccess

3. Включи HTTPS (Let's Encrypt)

bash

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.by
📄 ✅ Проверка установки
  1. Открой сайт: https://your-domain.by/

  2. Авторизуйся под admin

  3. Проверь:

    • Дашборд загружается
    • Список клиентов отображается
    • Создание заказа работает
    • Отправка email работает

Тест отправки почты

bash

php /var/www/crm-invoices/scripts/test-mail.php

Тест БД

bash

php /var/www/crm-invoices/scripts/test-db.php
📄 🔧 Обновление системы

1. Получить изменения

bash

cd /var/www/crm-invoices/
git pull origin main

2. Обновить зависимости

bash

composer install --no-dev

3. Применить миграции (если есть)

bash

php scripts/migrate.php

4. Очистить кеш

bash

php scripts/clear-cache.php

5. Перезапустить сервисы

bash

sudo systemctl restart nginx php8.1-fpm
📄 📊 Мониторинг

Логи

Лог Путь Описание
Системный /var/log/nginx/error.log Ошибки Nginx
PHP /var/log/php8.1-fpm.log Ошибки PHP
Приложения /var/www/crm-invoices/logs/app.log Логи CRM

Профилирование

bash

# Проверка нагрузки
htop

# Просмотр логов в реальном времени
tail -f /var/www/crm-invoices/logs/app.log
📄 🆘 Частые проблемы

1. Ошибка 500 (Internal Server Error)

Решение:

bash

# Проверить права на файлы
sudo chown -R www-data:www-data /var/www/crm-invoices/

# Проверить ошибки PHP
tail -f /var/log/php8.1-fpm.log

2. Не подключается база данных

Решение:

bash

# Проверить настройки в config/database.php
# Проверить, запущен ли MySQL
sudo systemctl status mysql

3. Не отправляется почта

Решение:

bash

# Проверить настройки SMTP
# Проверить логи
tail -f /var/www/crm-invoices/logs/mail.log

4. Сессии не работают

Решение:

bash

# Проверить права на папку sessions
sudo chmod 777 /var/lib/php/sessions/