Как создать облачный сервер с нуля: Пошаговое руководство по настройке VPS с Ubuntu
Создание облачного сервера (VPS, Virtual Private Server) позволяет получить контроль над своим серверным окружением для хостинга приложений, веб-сайтов или баз данных. В этом руководстве мы рассмотрим процесс настройки VPS с Ubuntu, включая установку, базовую настройку и обеспечение безопасности.
Выбор провайдера VPS и операционной системы
- Выбор провайдера VPS:
Популярные провайдеры:Я не буду предлагать определенных провайдеров. Их можно найти в интернете например по запросу: Топ-10 лучших провайдеров VPS/VDS хостинга в 2024 году
- Выбор конфигурации сервера:
Минимальные рекомендации:- CPU: 1 ядро
- RAM: 1 ГБ
- Хранилище: 25 ГБ SSD
- Операционная система:
Выберите Ubuntu LTS (например, Ubuntu 22.04 LTS).
После создания VPS вы получите IP-адрес, имя пользователя (обычно root
) и пароль. Настройте соединение через SSH.
Подключение к серверу:
В терминале выполните команду:
ssh root@<IP-адрес вашего сервера>
- При первом подключении подтвердите ключ, введя
yes
. - Изменение пароля root:
passwd
Базовая настройка сервера
- Обновление системы:
apt update && apt upgrade -y
Создание нового пользователя:
Для безопасности рекомендуется использовать непользователя root.
adduser <имя_пользователя>
Добавьте пользователя в группу sudo
:
usermod -aG sudo <имя_пользователя>
Генерация SSH-ключа
Чтобы настроить безопасный доступ к вашему серверу без использования пароля, рекомендуется использовать SSH-ключи. Вот пошаговая инструкция по их созданию и настройке:
- Генерация SSH-ключа на локальном компьютере:
Откройте терминал и выполните следующую команду:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- Где:
-t rsa
— тип ключа (RSA).-b 4096
— длина ключа (4096 бит для повышенной безопасности).-C "your_email@example.com"
— комментарий, который поможет идентифицировать ключ.
- Выбор местоположения для сохранения ключа:
После запуска команды вам будет предложено указать путь для сохранения ключа. Обычно это:
Enter file in which to save the key (/home/your_user/.ssh/id_rsa):
- Нажмите Enter, чтобы сохранить ключ по умолчанию, или укажите другой путь.
- Установка пароля (опционально):
Если хотите защитить ключ паролем, введите его. Если пароль не нужен, просто нажмите Enter. - Проверка сгенерированных ключей:
После завершения процесса в директории~/.ssh
должны появиться два файла:id_rsa
— приватный ключ (не передавайте его никому!).id_rsa.pub
— публичный ключ (этот файл вы будете использовать для настройки сервера).
- Копирование публичного ключа на сервер:
Используйте следующую команду для передачи публичного ключа на сервер:
ssh-copy-id <имя_пользователя>@<IP-адрес сервера>
Если команда недоступна, вручную добавьте ключ на сервер:
- Скопируйте содержимое файла
id_rsa.pub
:
cat ~/.ssh/id_rsa.pub
На сервере откройте файл для добавления ключа:
nano ~/.ssh/authorized_keys
- Вставьте содержимое файла
id_rsa.pub
, сохраните изменения и закройте файл.
- Вставьте содержимое файла
- Установка правильных прав для SSH:
Убедитесь, что директория.ssh
и файлauthorized_keys
имеют правильные права:
Если у вас еще нет файла и каталога, то выполните следующие шаги:
Создайте папку .ssh
mkdir -p /home/<имя_пользователя>/.ssh
Скопируйте свой публичный SSH-ключ:
nano /home/<имя_пользователя>/.ssh/authorized_keys
- Вставьте ключ, сохраните и закройте файл.
- Задайте права:
chown -R <имя_пользователя>:<имя_пользователя> /home/<имя_пользователя>/.ssh chmod 700 /home/<имя_пользователя>/.ssh chmod 600 /home/<имя_пользователя>/.ssh/authorized_keys
Отключение входа root через SSH:
Отредактируйте файл конфигурации SSH:
nano /etc/ssh/sshd_config
Измените строки:
PermitRootLogin no PasswordAuthentication no
Перезапустите SSH:
systemctl restart sshd
Шаг 4. Установка приложений для хостинга
- Установка веб-сервера Nginx:
apt install nginx -y systemctl enable nginx systemctl start nginx
Установка базы данных PostgreSQL:
apt install postgresql -y systemctl enable postgresql systemctl start postgresql
Установка интерпретатора Python и менеджера пакетов:
apt install python3 python3-pip -y
Шаг 5. Настройка безопасности
- Настройка брандмауэра UFW:
Разрешите только нужные порты:
ufw allow OpenSSH ufw allow 'Nginx Full' ufw enable
Установка Fail2Ban:
Fail2Ban защищает от брутфорс-атак:
apt install fail2ban -y
Активируйте:
systemctl enable fail2ban systemctl start fail2ban
SSL-сертификат:
Используйте Let’s Encrypt для бесплатного SSL. Установите certbot
:
apt install certbot python3-certbot-nginx -y
Сгенерируйте сертификат:
certbot --nginx
Шаг 6. Деплой приложения
- Клонирование репозитория:
Убедитесь, что установленgit
:
apt install git -y
Клонируйте приложение:
git clone <URL-репозитория>
Настройка виртуального окружения Python:
cd <путь_к_проекту> python3 -m venv venv source venv/bin/activate pip install -r requirements.txt
Настройка Nginx для вашего приложения:
Создайте конфигурацию:
nano /etc/nginx/sites-available/<имя_проекта>
Пример содержимого:
server { listen 80; server_name <ваш_домен>; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
Активируйте конфигурацию:
ln -s /etc/nginx/sites-available/<имя_проекта> /etc/nginx/sites-enabled/ nginx -t systemctl reload nginx
если вы сгенерировали сертификат, то конфигурация nginx будет такая:
# Перенаправление HTTP на HTTPS server { listen 80; server_name <ваш_домен>; # Перенаправление всех запросов на HTTPS return 301 https://$host$request_uri; } # HTTPS-сервер server { listen 443 ssl; server_name <ваш_домен>; # Путь к SSL-сертификатам ssl_certificate /etc/letsencrypt/live/<ваш_домен>/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/<ваш_домен>/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/<ваш_домен>/chain.pem; # Безопасные настройки SSL ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers HIGH:!aNULL:!MD5; # Настройки для улучшения производительности ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; # HTTP Strict Transport Security (HSTS) add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # Настройка прокси location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
Поддержка и мониторинг
- Обновление системы:
Регулярно обновляйте пакеты:
apt update && apt upgrade -y
Мониторинг ресурсов:
Установите htop
:
apt install htop -y
Резервное копирование:
Используйте rsync
или облачные решения для резервного копирования.
Теперь ваш сервер готов для использования! Вы можете хостить веб-сайты, приложения или базы данных с высокой степенью контроля и безопасности.