===== POS ===== . 1. На старом сервере сделать backup проекта и базы cd /var/www/html tar -czf test2_backup_$(date +%Y-%m-%d_%H-%M).tar.gz test2 DB backup: mysqldump -u test2_user -p test2 > /var/www/html/test2_db_$(date +%Y-%m-%d_%H-%M).sql Проверить файлы: ls -lh /var/www/html/test2_backup_*.tar.gz ls -lh /var/www/html/test2_db_*.sql 2. Новый Ubuntu сервер: базовая установка apt update apt upgrade -y apt install -y software-properties-common curl wget unzip zip git nano htop \ apache2 mysql-server redis-server supervisor 3. Установить PHP 7.4 На Ubuntu 22.04 PHP 7.4 обычно ставится через PPA: add-apt-repository ppa:ondrej/php -y apt update Установить PHP 7.4 и нужные модули: apt install -y php7.4 php7.4-cli php7.4-common php7.4-mysql php7.4-mbstring \ php7.4-xml php7.4-curl php7.4-zip php7.4-gd php7.4-bcmath php7.4-intl \ php7.4-soap php7.4-opcache libapache2-mod-php7.4 Проверка: php7.4 -v php -v Если php показывает не 7.4, сделать так: update-alternatives --set php /usr/bin/php7.4 php -v 4. Apache модули a2enmod rewrite a2enmod headers a2enmod expires a2enmod deflate a2enmod ssl systemctl restart apache2 5. Создать папку проекта mkdir -p /var/www/html/test2 Загрузить архив проекта и SQL на новый сервер, например в: /var/www/html/test2_backup_xxx.tar.gz /var/www/html/test2_db_xxx.sql Распаковать: cd /var/www/html tar -xzf test2_backup_*.tar.gz Проверка: ls -lah /var/www/html/test2 6. Создать базу MySQL и пользователя Зайти в MySQL: mysql Внутри MySQL: CREATE DATABASE test2 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'test2_user'@'localhost' IDENTIFIED BY 'YOUR_STRONG_PASSWORD_HERE'; GRANT ALL PRIVILEGES ON test2.* TO 'test2_user'@'localhost'; FLUSH PRIVILEGES; EXIT; Импорт базы: mysql -u test2_user -p test2 < /var/www/html/test2_db_*.sql 7. Проверить .env cd /var/www/html/test2 nano .env Основное должно быть примерно так: APP_NAME=PapaPOS APP_ENV=production APP_DEBUG=false APP_URL=https://test2.papapos.lv DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=test2 DB_USERNAME=test2_user DB_PASSWORD=YOUR_STRONG_PASSWORD_HERE CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=database MAIL_DRIVER=sendmail TELESCOPE_ENABLED=false DEBUGBAR_ENABLED=false WS_SERVER= Если проект использует старые названия подключений, оставить их тоже: PGSQL_MELNALAPA_DB_CONNECTION=pgsql_melnalapa PGSQL_MELNALAPA_DB_HOST=127.0.0.1 PGSQL_MELNALAPA_DB_PORT=3306 PGSQL_MELNALAPA_DB_DATABASE=test2 PGSQL_MELNALAPA_DB_USERNAME=test2_user PGSQL_MELNALAPA_DB_PASSWORD=YOUR_STRONG_PASSWORD_HERE MYSQL_MELNALAPA_DB_HOST=127.0.0.1 MYSQL_MELNALAPA_DB_PORT=3306 MYSQL_MELNALAPA_DB_DATABASE=test2 MYSQL_MELNALAPA_DB_USERNAME=test2_user MYSQL_MELNALAPA_DB_PASSWORD=YOUR_STRONG_PASSWORD_HERE 8. Права Laravel cd /var/www/html/test2 chown -R www-data:www-data storage bootstrap/cache chmod -R ug+rw storage bootstrap/cache Если нужно временно для теста: chmod -R 775 storage bootstrap/cache 9. Apache VirtualHost Создать конфиг: nano /etc/apache2/sites-available/test2.papapos.lv.conf Вставить: ServerName test2.papapos.lv DocumentRoot /var/www/html/test2/public AllowOverride All Require all granted ErrorLog ${APACHE_LOG_DIR}/test2_error.log CustomLog ${APACHE_LOG_DIR}/test2_access.log combined Включить сайт: a2ensite test2.papapos.lv.conf a2dissite 000-default.conf apache2ctl configtest systemctl reload apache2 Проверка: curl -I http://test2.papapos.lv 10. SSL сертификат apt install -y certbot python3-certbot-apache Получить SSL: certbot --apache -d test2.papapos.lv Проверка: curl -I https://test2.papapos.lv 11. Laravel cache clear после переноса cd /var/www/html/test2 php7.4 artisan view:clear php7.4 artisan cache:clear php7.4 artisan config:clear chown -R www-data:www-data storage bootstrap/cache systemctl restart apache2 curl -I https://test2.papapos.lv tail -50 storage/logs/laravel.log Когда всё работает стабильно: php7.4 artisan config:cache php7.4 artisan view:cache chown -R www-data:www-data storage bootstrap/cache systemctl restart apache2 route:cache пока не делать. 12. Проверить OPcache php7.4 -i | grep -i opcache.enable Должно быть: opcache.enable => On Если нужно настроить: nano /etc/php/7.4/apache2/conf.d/10-opcache.ini Минимально: opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=10000 opcache.validate_timestamps=1 opcache.revalidate_freq=2 Перезапуск: systemctl restart apache2 13. Проверить cron / queue Посмотреть Laravel scheduler: crontab -l Если нужен Laravel scheduler: crontab -e Добавить: * * * * * cd /var/www/html/test2 && php7.4 artisan schedule:run >> /dev/null 2>&1 Если queues используются через database queue, позже можно настроить supervisor. Но если сейчас queue worker не нужен, не трогаем. 14. Проверить print test переменную Файл: cd /var/www/html/test2 grep -RIn "SKIP_PRINT_ON_LOCAL_TEST" public/js/apps/cash_register/api/Order.js Для Windows-теста: const SKIP_PRINT_ON_LOCAL_TEST = true Для реального планшета / кассы: const SKIP_PRINT_ON_LOCAL_TEST = false После изменения поднять версию: grep -RIn "app.js?v=" resources/Views nano resources/Views/cash_register/app.blade.php 15. Финальная проверка нового сервера cd /var/www/html/test2 curl -I https://test2.papapos.lv tail -50 storage/logs/laravel.log tail -100 /var/log/apache2/test2_error.log mysqladmin processlist top free -h df -h Добавь в серверный checklist только этот блок: apt update apt install -y postfix mailutils Во время установки Postfix выбрать: Internet Site System mail name: papapos.lv Проверка: systemctl enable postfix systemctl restart postfix systemctl status postfix --no-pager Проверить, что sendmail есть: which sendmail Обычно будет: /usr/sbin/sendmail apt update apt install -y imagemagick php7.4-imagick