===== 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