Настройка деплоя сайта на VDS/VPS

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка деплоя сайта на VDS/VPS
Средняя
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Настройка деплоя сайта на VDS/VPS

VDS/VPS — виртуальный выделенный сервер с корневым доступом. Даёт полный контроль над окружением при доступной цене. Подходит для большинства коммерческих проектов: Laravel, Django, Node.js, WordPress.

Первичная настройка сервера

# Подключение
ssh root@YOUR_SERVER_IP

# Создать deploy-пользователя (не работать от root)
useradd -m -s /bin/bash deploy
usermod -aG sudo deploy
mkdir -p /home/deploy/.ssh
cp ~/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh && chmod 600 /home/deploy/.ssh/authorized_keys

# Запретить root-логин по SSH
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd

# Базовые пакеты
apt update && apt upgrade -y
apt install -y git curl wget nginx ufw fail2ban unzip

PHP + Laravel стек

# PHP 8.3
add-apt-repository ppa:ondrej/php
apt install -y php8.3-fpm php8.3-cli php8.3-{pgsql,mysql,redis,xml,mbstring,curl,zip,gd}

# Composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

# Node.js 20
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs

# PostgreSQL 16
apt install -y postgresql-16
sudo -u postgres createuser --superuser myapp_user
sudo -u postgres createdb myapp_prod -O myapp_user

Nginx конфигурация для Laravel

# /etc/nginx/sites-available/myapp
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/myapp/current/public;

    index index.php;
    charset utf-8;

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

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }

    # Кеш статики
    location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|woff2?)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }

    # Gzip
    gzip on;
    gzip_types text/plain text/css application/json application/javascript;
    gzip_min_length 1024;
}

Let's Encrypt SSL

apt install -y certbot python3-certbot-nginx
certbot --nginx -d example.com -d www.example.com \
    --non-interactive --agree-tos -m [email protected]

# Автообновление
systemctl enable --now certbot.timer

Структура деплоя (Deployer или ручной)

# /var/www/myapp/
# ├── current -> releases/20241115143022
# ├── releases/
# │   └── 20241115143022/
# ├── shared/
# │   ├── .env
# │   └── storage/

# deploy.sh
DEPLOY_PATH=/var/www/myapp
RELEASE=$DEPLOY_PATH/releases/$(date +%Y%m%d%H%M%S)

git clone --depth=1 -b main https://github.com/user/repo.git $RELEASE
cd $RELEASE

composer install --no-dev --optimize-autoloader
npm ci && npm run build

ln -s $DEPLOY_PATH/shared/.env $RELEASE/.env
ln -s $DEPLOY_PATH/shared/storage $RELEASE/storage

php artisan migrate --force
php artisan optimize

ln -sfn $RELEASE $DEPLOY_PATH/current

sudo systemctl reload php8.3-fpm nginx
php artisan queue:restart

# Удалить старые релизы
ls -dt $DEPLOY_PATH/releases/* | tail -n +6 | xargs rm -rf

Фаервол и безопасность

ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable
ufw status

# Fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
systemctl enable --now fail2ban

Мониторинг (минимальный)

# Netdata — простой мониторинг
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
# Доступен на :19999

# Или установить Prometheus Node Exporter
apt install -y prometheus-node-exporter

Срок реализации

  • Первичная настройка VPS + Nginx + PHP + деплой: 1–2 дня
  • SSL + фаервол + fail2ban: несколько часов
  • Настройка мониторинга: +1 день