Хостинг сайтов без панели управления: для энтузиастов

Полное руководство по хостингу без панели управления: настройка веб‑сервера с нуля, ручное управление сайтами и обеспечение их безопасности.

Не указано
Алексей Кузнецов
Алексей Кузнецов
Системный администратор8 мая 2026 г.

Введение в хостинг без панелей управления

Хостинг без традиционных панелей управления (cPanel, ISPConfig, Plesk) предоставляет полный контроль над инфраструктурой, но требует глубоких знаний системного администрирования.

# Преимущества:
- Полный контроль над инфраструктурой
- Повышенная производительность
- Улучшенная безопасность
- Гибкость в настройке
- Углубленное обучение системному администрированию

# Недостатки:
- Требует времени на освоение
- Требует ручного выполнения операций
- Полная ответственность за безопасность
- Больше времени на начальную настройку

Настройка веб-сервера

Выбор и установка веб-сервера (Nginx или Apache) с последующей настройкой виртуальных хостов и SSL-сертификатов.

# Установка Nginx на Ubuntu/Debian
sudo apt update
sudo apt install nginx
sudo systemctl start nginx
sudo systemctl enable nginx

# Установка Apache на Ubuntu/Debian
sudo apt update
sudo apt install apache2
sudo systemctl start apache2
sudo systemctl enable apache2

Конфигурация виртуальных хостов

Настройка нескольких сайтов на одном сервере через конфигурационные файлы веб-сервера.

# Конфигурация Nginx
sudo nano /etc/nginx/sites-available/example.com

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com/html;
    index index.html index.htm;
    
    location / {
        try_files $uri $uri/ =404;
    }
}

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Управление SSL-сертификатами

Установка и настройка SSL/TLS-сертификатов с помощью Certbot для шифрования соединений.

# Установка Certbot
sudo apt install certbot python3-certbot-nginx

# Получение сертификата
sudo certbot --nginx -d example.com -d www.example.com

# Проверка автоматического обновления
sudo certbot renew --dry-run

Использование Docker для развертывания

Контейнеризация приложений для обеспечения изоляции и переносимости.

# Установка Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER

# Пример Dockerfile для Node.js приложения
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

Автоматизация рутинных задач

Создание скриптов для автоматизации часто выполняемых операций, таких как создание новых сайтов.

# Скрипт для создания нового сайта
#!/bin/bash
DOMAIN=$1
WEB_ROOT="/var/www/$DOMAIN/html"

# Создание структуры каталогов
sudo mkdir -p $WEB_ROOT
sudo chown -R $USER:$USER $WEB_ROOT

# Создание конфигурационного файла Nginx
sudo tee /etc/nginx/sites-available/$DOMAIN > /dev/null <<EOF
server {
    listen 80;
    server_name $DOMAIN www.$DOMAIN;
    root $WEB_ROOT;
    index index.html;
    
    location / {
        try_files \$uri \$uri/ =404;
    }
}
EOF

Мониторинг и логирование

Настройка систем мониторинга (Prometheus, Grafana) и логирования (ELK Stack) для отслеживания состояния сервера.

# Установка Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.34.0/prometheus-2.34.0.linux-amd64.tar.gz
tar -xvzf prometheus-2.34.0.linux-amd64.tar.gz
cd prometheus-2.34.0.linux-amd64
./prometheus

# Установка Grafana
wget https://dl.grafana.com/oss/release/grafana_8.3.4_amd64.deb
sudo apt install -y adduser, libfontconfig1
sudo dpkg -i grafana_8.3.4_amd64.deb
sudo systemctl start grafana-server

Базовые настройки безопасности

Настройка файрвола, обновление системы, безопасная настройка SSH и защита от брутфорса с помощью Fail2ban.

# Настройка файрвола UFW
sudo apt install ufw
sudo ufw allow ssh
sudo ufw allow 'Nginx Full'
sudo ufw enable

# Безопасная настройка SSH
sudo nano /etc/ssh/sshd_config
# Добавить:
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

sudo systemctl restart sshd

Резервное копирование и восстановление

Настройка автоматического резервного копирования сайтов и баз данных с возможностью восстановления.

# Скрипт резервного копирования
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup"
WEB_ROOT="/var/www"

# Создание директорий
mkdir -p $BACKUP_DIR/web

# Резервное копирование сайтов
for site in $(ls $WEB_ROOT); do
    if [ -d "$WEB_ROOT/$site" ]; then
        tar -czf $BACKUP_DIR/web/site_$site_$DATE.tar.gz -C $WEB_ROOT $site
    fi
done

# Удаление старых бекапов (более 30 дней)
find $BACKUP_DIR -type f -mtime +30 -delete

Балансировка нагрузки

Настройка Nginx в качестве балансировщика нагрузки с поддержкой health-чеков для обеспечения отказоустойчивости.

# Конфигурация Nginx как балансировщика нагрузки
upstream backend {
    server 192.168.1.10:8000 max_fails=3 fail_timeout=30s;
    server 192.168.1.11:8000 max_fails=3 fail_timeout=30s;
    server 192.168.1.12:8000 max_fails=3 fail_timeout=30s;
    
    keepalive 32;
    keepalive_timeout 60s;
    keepalive_requests 1000;
}

server {
    listen 80;
    server_name example.com;
    
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Хостинг сайтов без панели управления (но с возможностью управления)

1. Введение в хостинг без панелей управления

1.1. Преимущества и недостатки подхода

Хостинг сайтов без использования традиционных панелей управления, таких как cPanel, ISPConfig или Plesk, открывает перед администратором возможность глубокой настройки и контроля над инфраструктурой. Этот подход, часто называемый "ручным" или "bare-metal" хостингом, подходит для тех, кто ценит гибкость и понимает, как работает веб-инфраструктура "изнутри".

Преимущества:

  • Полный контроль: Вы можете настроить всё так, как нужно именно вашему проекту, без ограничений, накладываемых панелями управления.
  • Производительность: Отсутствие лишних сервисов и инструментов панели управления снижает нагрузку на сервер.
  • Безопасность: Меньше компонентов означает меньшую площадь для атак; вы можете установить только необходимое.
  • Гибкость: Возможность использования любых современных инструментов и технологий, которые поддерживаются в вашей системе.
  • Обучение: Работа без панели заставляет изучать основы администрирования, что в долгосрочной перспективе делает вас более компетентным специалистом.

Недостатки:

  • Кривая обучения: Требуется больше времени и усилий для освоения.
  • Ручной труд: Многие операции, автоматизированные в панелях, приходится выполнять вручную.
  • Отвественность: Полная ответственность за безопасность, обновления и резервное копирование ложится на вас.
  • Время: На начальной настройку и решение проблем уходит больше времени.

1.2. Для кого подходит этот метод

Этот подход особенно подходит для:

  • Разработчиков, которые понимают, как работает веб-инфраструктура и хотят полного контроля над средой.
  • Системных администраторов, которым нужна кастомизация, недоступная в стандартных панелях.
  • Хоббистов, готовых потратить время на изучение и настройку своей инфраструктуры.
  • Проектов с специфическими требованиями к производительности или безопасности.

Не рекомендуется для новичков в администрировании или для тех, кому нужно быстро развернуть множество сайтов без глубокого понимания процессов.

1.3. Обзор различных подходов к управлению без панелей

Существует несколько основных подходов к управлению серверами без панелей:

  1. Чистая командная строка: Полный контроль через конфигурационные файлы и команды.
  2. Конфигурационные инструменты: Использование инструментов вроде Ansible, Puppet, Chef для автоматизации управления.
  3. Облегченные панели: ISPConfig, Webmin и аналоги, которые предоставляют функциональность, но без избыточности.
  4. Контейнеризация: Использование Docker для изоляции приложений и управления ими.
  5. Скрипты автоматизации: Написание собственных скриптов для рутинных операций.

2. Настройка веб-сервера с нуля

2.1. Выбор и установка веб-сервера (Nginx, Apache)

Для начала необходимо выбрать веб-сервер. Два самых популярных варианта - Nginx и Apache.

Nginx

Nginx известен своей высокой производительностью, особенно при работе с большим количеством одновременных соединений.

Установка на Ubuntu/Debian:

sudo apt update
sudo apt install nginx

Запуск и автоматический запуск при загрузке:

sudo systemctl start nginx
sudo systemctl enable nginx

Проверка статуса:

sudo systemctl status nginx

Apache

Apache - классический веб-сервер с широкими возможностями конфигурации.

Установка на Ubuntu/Debian:

sudo apt update
sudo apt install apache2

Запуск и автоматический запуск при загрузке:

sudo systemctl start apache2
sudo systemctl enable apache2

Проверка статуса:

sudo systemctl status apache2

2.2. Конфигурация виртуальных хостов

Виртуальные хосты позволяют обслуживать несколько сайтов на одном IP-адресе.

Конфигурация Nginx

Создайте конфигурационный файл для нового сайта:

sudo nano /etc/nginx/sites-available/example.com

Пример содержимого:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location /api {
        proxy_pass http://localhost:3000;
    }
}

Активируйте сайт, создав символическую ссылку:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Проверьте конфигурацию и перезапустите Nginx:

sudo nginx -t
sudo systemctl restart nginx

Конфигурация Apache

Создайте конфигурационный файл для нового сайта:

sudo nano /etc/apache2/sites-available/example.com.conf

Пример содержимого:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/html

    <Directory /var/www/example.com/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Активируйте сайт и необходимые модули:

sudo a2ensite example.com.conf
sudo a2enmod rewrite
sudo systemctl restart apache2

2.3. Управление SSL-сертификатами

Для защиты соединений используйте SSL/TLS-сертификаты. Certbot - популярный инструмент для получения и управления Let's Encrypt сертификатами.

Установка Certbot

Для Nginx:

sudo apt install certbot python3-certbot-nginx

Для Apache:

sudo apt install certbot python3-certbot-apache

Получение сертификата

sudo certbot --nginx -d example.com -d www.example.com

Или для Apache:

sudo certbot --apache -d example.com -d www.example.com

Certbot автоматически настроит HTTPS и перенаправление с HTTP на HTTPS.

Автоматическое обновление сертификатов

Certbot автоматически настрает cron-задачу для проверки и обновления сертификатов. Проверьте работу:

sudo certbot renew --dry-run

3. Управление сайтами без панели

3.1. Использование Docker для развертывания приложений

Docker позволяет упаковать приложения и их зависимости в контейнеры, обеспечивая изоляцию и переносимость.

Установка Docker

На Ubuntu/Debian:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER

После добавления в группу Docker выйдите и войдите снова.

Создание Dockerfile для веб-приложения

Пример простого Dockerfile для Node.js приложения:

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

Сборка и запуск контейнера

docker build -t myapp .
docker run -d -p 3000:3000 --name myapp-container myapp

Docker Compose для сложных приложений

Пример docker-compose.yml для сайта с базой данных:

version: '3'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: myapp
    volumes:
      - db_data:/var/lib/mysql
volumes:
  db_data:

Запуск:

docker-compose up -d

3.2. Скрипты для автоматизации рутинных задач

Создайте скрипты для часто выполняемых операций.

Пример скрипта для создания нового сайта

#!/bin/bash
# create_site.sh

if [ -z "$1" ]; then
    echo "Usage: $0 <domain>"
    exit 1
fi

DOMAIN=$1
WEB_ROOT="/var/www/$DOMAIN/html"

# Создание структуры каталогов
sudo mkdir -p $WEB_ROOT
sudo chown -R $USER:$USER $WEB_ROOT

# Создание базового файла index.html
cat <<EOF | sudo tee $WEB_ROOT/index.html
<!DOCTYPE html>
<html>
<head>
    <title>$DOMAIN</title>
</head>
<body>
    <h1>Welcome to $DOMAIN</h1>
</body>
</html>
EOF

# Создание конфигурационного файла Nginx
sudo tee /etc/nginx/sites-available/$DOMAIN > /dev/null <<EOF
server {
    listen 80;
    server_name $DOMAIN www.$DOMAIN;
    root $WEB_ROOT;
    index index.html;

    location / {
        try_files \$uri \$uri/ =404;
    }
}
EOF

# Активация сайта
sudo ln -s /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

echo "Site $DOMAIN created successfully"

Сохраните этот скрипт, сделайте его исполняемым:

chmod +x create_site.sh

Используйте:

./create_site.sh example.com

3.3. Мониторинг и логирование

Мониторинг с помощью Prometheus и Grafana

  1. Установите Prometheus:
wget https://github.com/prometheus/prometheus/releases/download/v2.34.0/prometheus-2.34.0.linux-amd64.tar.gz
tar -xvzf prometheus-2.34.0.linux-amd64.tar.gz
cd prometheus-2.34.0.linux-amd64
./prometheus
  1. Установите Node Exporter для сбора метрик системы:
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar -xvzf node_exporter-1.3.1.linux-amd64.tar.gz
cd node_exporter-1.3.1.linux-amd64
./node_exporter
  1. Установите Grafana:
wget https://dl.grafana.com/oss/release/grafana_8.3.4_amd64.deb
sudo apt install -y adduser, libfontconfig1
sudo dpkg -i grafana_8.3.4_amd64.deb
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

Логирование с помощью ELK Stack (Elasticsearch, Logstash, Kibana)

  1. Установите Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
  1. Запустите ELK с помощью Docker Compose:
version: '3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
    environment:
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ports:
      - "9200:9200"
    volumes:
      - esdata:/usr/share/elasticsearch/data
  logstash:
    image: docker.elastic.co/logstash/logstash:7.14.0
    ports:
      - "5044:5044"
    volumes:
      - ./logstash/config:/usr/share/logstash/pipeline
  kibana:
    image: docker.elastic.co/kibana/kibana:7.14.0
    ports:
      - "5601:5601"
volumes:
  esdata:

4. Альтернативы полным панелям управления

4.1. Облегченные панели управления (ISPConfig, Webmin)

ISPConfig

ISPConfig - это полнофункциональная панель управления серверами, которая поддерживает Apache/Nginx, Postfix, MySQL и другие сервисы.

Установка на Ubuntu/20.04:

sudo apt update
sudo apt install -y mc openssh-server
wget -O ispconfig.tar.gz https://download.ispconfig.org/ispconfig3_install/ispconfig3_install.sh
tar xvfz ispconfig.tar.gz
cd ispconfig3_install/install/
sudo bash ../install.sh

Следуйте инструкциям установщика.

Webmin

Webmin - это веб-интерфейс для администрирования Linux-систем, который позволяет управлять пользователями, пакетами, сервисами и многим другим.

Установка:

wget http://prdownloads.sourceforge.net/webadmin/webmin_2.016_all.deb
sudo apt install -y libnet-ssleay-perl libauthen-pam-perl libpam-runtime libio-pty-perl libmd5-perl
sudo dpkg -i webmin_2.016_all.deb

После установки Webmin будет доступен по адресу https://ваш-ip-адрес:10000

4.2. Инструменты командной строки для управления

Ansible

Ansible - инструмент автоматизации для управления конфигурациями, развертывания приложений и выполнения задач.

Установка:

sudo apt update
sudo apt install ansible

Пример playbook для настройки веб-сервера:

---
- hosts: webservers
  become: yes
  tasks:
    - name: Install Nginx
      apt:
        name: nginx
        state: present
    - name: Create website directory
      file:
        path: /var/www/example.com/html
        state: directory
        owner: www-data
        group: www-data
    - name: Deploy website
      copy:
        src: files/index.html
        dest: /var/www/example.com/html/index.html
    - name: Configure Nginx site
      template:
        src: templates/nginx.conf.j2
        dest: /etc/nginx/sites-available/example.com
    - name: Enable site
      file:
        src: /etc/nginx/sites-available/example.com
        dest: /etc/nginx/sites-enabled/example.com
        state: link
    - name: Restart Nginx
      service:
        name: nginx
        state: restarted

LFTP для загрузки файлов

LFTP - мощный клиент FTP/SFTP с поддержкой скриптов:

# Установка
sudo apt install lftp

# Пример скрипта для загрузки сайта
lftp -u username,password ftp.example.com -e "set ftp:ssl-allow yes; mirror -R /local/path /remote/path; quit"

4.3. Git-деплой для статических сайтов

Для статических сайтов можно настроить автоматическое развертывание из Git-репозитория.

Настройка git-хука для деплоя

  1. Создайте Git-репозиторий для сайта:
cd /var/www/example.com
git init --bare
  1. Создайте post-receive хук:
nano /var/www/example.com/hooks/post-receive

Содержимое хука:

#!/bin/bash
GIT_DIR="/var/www/example.com"
WEB_ROOT="/var/www/example.com/html"
cd $WEB_ROOT
git --git-dir=$GIT_DIR pull origin main
chown -R www-data:www-data $WEB_ROOT
find $WEB_ROOT -type f -exec chmod 644 {} \;
find $WEB_ROOT -type d -exec chmod 755 {} \;

Сделайте хук исполняемым:

chmod +x /var/www/example.com/hooks/post-receive
  1. Настройте свой локальный репозиторий:
git remote add deploy ssh://user@server/var/www/example.com
git push deploy main

5. Безопасность при ручном управлении

5.1. Базовые настройки безопасности

Файрwall с помощью UFW

# Установка
sudo apt install ufw

# Настройка правил
sudo ufw allow ssh
sudo ufw allow 'Nginx Full'
sudo ufw enable

Обновление системы

sudo apt update && sudo apt upgrade -y

Безопасная настройка SSH

Отредактируйте /etc/ssh/sshd_config:

Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Перезапустите SSH:

sudo systemctl restart sshd

Fail2ban для защиты от брутфорса

sudo apt install fail2ban

Создайте конфиг /etc/fail2ban/jail.local:

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600

Перезапустите fail2ban:

sudo systemctl restart fail2ban

5.2. Резервное копирование и восстановление

Скрипт резервного копирования

#!/bin/bash
# backup.sh

DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup"
WEB_ROOT="/var/www"
DB_USER="backup_user"
DB_PASS="secure_password"
DB_NAME="wordpress"

# Создание директорий
mkdir -p $BACKUP_DIR/web
mkdir -p $BACKUP_DIR/db

# Резервное копирование сайтов
for site in $(ls $WEB_ROOT); do
    if [ -d "$WEB_ROOT/$site" ]; then
        tar -czf $BACKUP_DIR/web/site_$site_$DATE.tar.gz -C $WEB_ROOT $site
    fi
done

# Резервное копирование базы данных
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/db/db_$DATE.sql.gz

# Удаление старых бекапов (более 30 дней)
find $BACKUP_DIR -type f -mtime +30 -delete

echo "Backup completed: $DATE"

Сохраните скрипт, сделайте его исполняемым:

chmod +x backup.sh

Добавьте в crontab для ежедневного выполнения:

0 2 * * * /path/to/backup.sh

Восстановление из бекапа

# Восстановление сайта
tar -xzf /backup/web/site_example.com_20230101_120000.tar.gz -C /tmp
sudo cp -r /tmp/example.com /var/www/

# Восстановление базы данных
gunzip < /backup/db/db_20230101_120000.sql.gz | mysql -u backup_user -p wordpress

5.3. Обновление и патчи безопасности

Регулярное обновление пакетов

# Обновление списков пакетов
sudo apt update

# Обновление установленных пакетов
sudo apt upgrade -y

# Обновление системы
sudo apt dist-upgrade -y

# Очистка старых пакетов
sudo apt autoremove -y
sudo apt autoclean

Проверка уязвимостей

# Установка утилиты
sudo apt install lynis

# Запуск сканирования
sudo lynis audit system

Проверка целостности файлов

# Установка
sudo apt install tripwire

# Инициализация
sudo tripwire --init

# Проверка
sudo tripwire --check

6. Продвинутые сценарии

6.1. Балансировка нагрузки

Настройка Nginx как балансировщика нагрузки

upstream backend {
    server 192.168.1.10:8000;
    server 192.168.1.11:8000;
    server 192.168.1.12:8000;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Health-чеки

upstream backend {
    server 192.168.1.10:8000 max_fails=3 fail_timeout=30s;
    server 192.168.1.11:8000 max_fails=3 fail_timeout=30s;
    server 192.168.1.12:8000 max_fails=3 fail_timeout=30s;
    
    # Дополнительные параметры
    keepalive 32;
    keepalive_timeout 60s;
    keepalive_requests 1000;
}

6.2. Кеширование и оптимизация производительности

Кеширование в Nginx

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;

server {
    listen 80;
    server_name example.com;
    
    location / {
        proxy_pass http://backend;
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
        proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
        
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Статический кеш

server {
    listen 80;
    server_name static.example.com;
    
    location / {
        root /var/www/static;
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
}

Оптимизация Gzip

gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

6.3. Распределенная система хостинга

Конфигурация с несколькими серверами

  1. Веб-серверы: Обслуживают контент, могут использовать Nginx или Apache.
  2. Сервер приложений: Запускает приложения (Node.js, Python и т.д.).
  3. База данных: Отдельный сервер для MySQL/PostgreSQL.
  4. Кеш-сервер: Redis или Memcached.
  5. Файловое хранилище: Для статических файлов.

Настройка кластера с помощью Keepalived

  1. Установка:
sudo apt install keepalived
  1. Конфигурация на основном сервере:
sudo nano /etc/keepalived/keepalived.conf
vrrp_script check_nginx {
    script "systemctl is-active nginx"
    interval 2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.1.100/24
    }
    track_script {
        check_nginx
    }
}
  1. Конфигурация на резервном сервере (измените состояние на BACKEND и приоритет на 100).

Настройка распределенной файловой системы с GlusterFS

  1. Установка на всех серверах:
sudo apt install glusterfs-server
  1. Создание кластера:
# На первом сервере
sudo gluster peer probe second-server
sudo gluster peer probe third-server

# Создание тома
sudo gluster volume create data replica 3 \
    first-server:/data/brick \
    second-server:/data/brick \
    third-server:/data/brick

# Запуск тома
sudo gluster volume start data

7. Заключение и дополнительные ресурсы

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

Дополнительные ресурсы

Поделиться:TelegramX / TwitterVK