This is an old revision of the document!
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
Вставить:
<VirtualHost *:80>
ServerName test2.papapos.lv DocumentRoot /var/www/html/test2/public
<Directory /var/www/html/test2/public>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/test2_error.log
CustomLog ${APACHE_LOG_DIR}/test2_access.log combined
</VirtualHost>
Включить сайт:
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
