Власний VPS сервер дає вам повний контроль над середовищем хостингу OpenCart. У цьому гайді ми налаштуємо сервер з нуля, використовуючи Ubuntu 22.04, Nginx, PHP 8.2 та MySQL 8.
Вибір VPS хостингу
Для OpenCart рекомендую наступні мінімальні характеристики:
- RAM: 2 GB (4 GB для магазинів з 1000+ товарів)
- CPU: 2 vCPU
- SSD: 40 GB
- Трафік: 2 TB/місяць
Не економте на сервері. Повільний хостинг = втрачені клієнти. Різниця між $5 і $20/місяць може означати тисячі доларів у продажах.
— Досвід з 50+ проектів на OpenCart
Початкове налаштування сервера
Після підключення до сервера через SSH:
# Оновлення системи
sudo apt update && sudo apt upgrade -y
# Встановлення базових утиліт
sudo apt install -y curl wget git unzip htop
# Створення користувача для деплою
sudo adduser deployer
sudo usermod -aG sudo deployer
# Налаштування SSH ключів
sudo mkdir -p /home/deployer/.ssh
sudo cp ~/.ssh/authorized_keys /home/deployer/.ssh/
sudo chown -R deployer:deployer /home/deployer/.ssh
Встановлення Nginx
# Встановлення Nginx
sudo apt install -y nginx
# Запуск та автозапуск
sudo systemctl start nginx
sudo systemctl enable nginx
Конфігурація Nginx для OpenCart
# /etc/nginx/sites-available/opencart
server {
listen 80;
server_name example.com www.example.com;
root /var/www/opencart;
index index.php;
# Логи
access_log /var/log/nginx/opencart_access.log;
error_log /var/log/nginx/opencart_error.log;
# Gzip стиснення
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
# Кешування статики
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
# Заборона доступу до системних файлів
location ~* (\.twig|\.tpl|\.ini|\.log|(?<!robots)\.txt)$ {
deny all;
}
# SEO URLs
location / {
try_files $uri $uri/ @opencart;
}
location @opencart {
rewrite ^/(.+)$ /index.php?_route_=$1 last;
}
# PHP обробка
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
}
}
sudo nginx -t
Встановлення PHP 8.2
# Додаємо репозиторій
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
# Встановлення PHP та модулів
sudo apt install -y php8.2-fpm php8.2-mysql php8.2-curl \
php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip \
php8.2-opcache php8.2-intl php8.2-bcmath
Оптимізація PHP для OpenCart
; /etc/php/8.2/fpm/conf.d/opencart.ini
memory_limit = 256M
upload_max_filesize = 50M
post_max_size = 50M
max_execution_time = 300
max_input_vars = 5000
; OPcache
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 60
Встановлення MySQL 8
# Встановлення
sudo apt install -y mysql-server
# Безпечне налаштування
sudo mysql_secure_installation
# Створення бази та користувача
sudo mysql -e "CREATE DATABASE opencart CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER 'opencart'@'localhost' IDENTIFIED BY 'strong_password_here';"
sudo mysql -e "GRANT ALL PRIVILEGES ON opencart.* TO 'opencart'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"
SSL сертифікат (Let's Encrypt)
# Встановлення Certbot
sudo apt install -y certbot python3-certbot-nginx
# Отримання сертифіката
sudo certbot --nginx -d example.com -d www.example.com
# Автоматичне оновлення (вже налаштовано)
Налаштування Firewall
# Базові правила
sudo ufw allow ssh
sudo ufw allow 'Nginx Full'
sudo ufw enable
# Перевірка
sudo ufw status
Автоматичні бекапи
#!/bin/bash
# /home/deployer/backup.sh
DATE=$(date +%Y%m%d)
BACKUP_DIR="/home/deployer/backups"
# Бекап бази даних
mysqldump -u opencart -p'password' opencart | gzip > $BACKUP_DIR/db_$DATE.sql.gz
# Бекап файлів
tar -czf $BACKUP_DIR/files_$DATE.tar.gz /var/www/opencart
# Видалення старих бекапів (старше 7 днів)
find $BACKUP_DIR -type f -mtime +7 -delete
# Додаємо в cron (щодня о 3:00)
crontab -e
0 3 * * * /home/deployer/backup.sh
Висновок
Тепер у вас є повністю налаштований VPS сервер для OpenCart. Не забувайте регулярно оновлювати систему та моніторити ресурси сервера.