Хостинг сайтов без панели управления: для энтузиастов
Полное руководство по хостингу без панели управления: настройка веб‑сервера с нуля, ручное управление сайтами и обеспечение их безопасности.
Введение в хостинг без панелей управления
Хостинг без традиционных панелей управления (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. Обзор различных подходов к управлению без панелей
Существует несколько основных подходов к управлению серверами без панелей:
- Чистая командная строка: Полный контроль через конфигурационные файлы и команды.
- Конфигурационные инструменты: Использование инструментов вроде Ansible, Puppet, Chef для автоматизации управления.
- Облегченные панели: ISPConfig, Webmin и аналоги, которые предоставляют функциональность, но без избыточности.
- Контейнеризация: Использование Docker для изоляции приложений и управления ими.
- Скрипты автоматизации: Написание собственных скриптов для рутинных операций.
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
- Установите 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
- Установите 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
- Установите 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)
- Установите 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
- Запустите 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-хука для деплоя
- Создайте Git-репозиторий для сайта:
cd /var/www/example.com
git init --bare
- Создайте 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
- Настройте свой локальный репозиторий:
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. Распределенная система хостинга
Конфигурация с несколькими серверами
- Веб-серверы: Обслуживают контент, могут использовать Nginx или Apache.
- Сервер приложений: Запускает приложения (Node.js, Python и т.д.).
- База данных: Отдельный сервер для MySQL/PostgreSQL.
- Кеш-сервер: Redis или Memcached.
- Файловое хранилище: Для статических файлов.
Настройка кластера с помощью Keepalived
- Установка:
sudo apt install keepalived
- Конфигурация на основном сервере:
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
}
}
- Конфигурация на резервном сервере (измените состояние на BACKEND и приоритет на 100).
Настройка распределенной файловой системы с GlusterFS
- Установка на всех серверах:
sudo apt install glusterfs-server
- Создание кластера:
# На первом сервере
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. Заключение и дополнительные ресурсы
Хостинг сайтов без панели управления предоставляет администратору полный контроль над инфраструктурой, но требует глубоких знаний в области системного администрирования и веб-технологий. Этот подход особенно подходит для проектов со специфическими требованиями к производительности или безопасности, а также для тех, кто хочет детально понимать, как работает их инфраструктура.
Дополнительные ресурсы
-
Официальная документация:
- Nginx: https://nginx.org/en/docs/
- Apache: https://httpd.apache.org/docs/
- Docker: https://docs.docker.com/
- Let's Encrypt: https://letsencrypt.org/docs/
-
Книги:
- "nginx HTTP Server - Fourth Edition" by Clement Nedelcu
- "Apache Server Administration Handbook" by Gregor N. Purdy, Danil Klyuchnikov
- "Linux System Administration Handbook" by Evi Nemeth, Garth Snyder, Trent R. Hein, Ben Whaley
-
Сообщества:
- Reddit: r/sysadmin, r/linuxadmin, r/nginx
- Хабр: разделы "Администрирование серверов" и "Веб-разработка"
- DevChats: чаты по администрированию в Telegram
-
Инструменты:
- Ansible: https://www.ansible.com/
- Prometheus: https://prometheus.io/
- Grafana: https://grafana.com/
- ELK Stack: https://www.elastic.co/elastic-stack