+7 (495) 107-75-45 Подключение
+7 (495) 107-75-47 Тех. поддержка 24/7
Пример
23.11.2024

Как создать облачный сервер с нуля: Пошаговое руководство по настройке VPS с Ubuntu

Создание облачного сервера (VPS, Virtual Private Server) позволяет получить контроль над своим серверным окружением для хостинга приложений, веб-сайтов или баз данных. В этом руководстве мы рассмотрим процесс настройки VPS с Ubuntu, включая установку, базовую настройку и обеспечение безопасности.

Выбор провайдера VPS и операционной системы

  1. Выбор провайдера VPS:
    Популярные провайдеры:

    Я не буду предлагать определенных провайдеров. Их можно найти в интернете например по запросу: Топ-10 лучших провайдеров VPS/VDS хостинга в 2024 году

  2. Выбор конфигурации сервера:
    Минимальные рекомендации:

    • CPU: 1 ядро
    • RAM: 1 ГБ
    • Хранилище: 25 ГБ SSD
  3. Операционная система:
    Выберите Ubuntu LTS (например, Ubuntu 22.04 LTS).

 

Подключение к серверу через SSH

После создания VPS вы получите IP-адрес, имя пользователя (обычно root) и пароль. Настройте соединение через SSH.

Подключение к серверу:
В терминале выполните команду:

ssh root@<IP-адрес вашего сервера>
  • При первом подключении подтвердите ключ, введя yes.
  • Изменение пароля root:
passwd

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

  1. Обновление системы:
apt update && apt upgrade -y

Создание нового пользователя:
Для безопасности рекомендуется использовать непользователя root.

adduser <имя_пользователя>

Добавьте пользователя в группу sudo:

usermod -aG sudo <имя_пользователя>

Генерация SSH-ключа

Генерация SSH-ключа

Чтобы настроить безопасный доступ к вашему серверу без использования пароля, рекомендуется использовать SSH-ключи. Вот пошаговая инструкция по их созданию и настройке:

  1. Генерация 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. Установка приложений для хостинга

  1. Установка веб-сервера 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. Настройка безопасности

  1. Настройка брандмауэра 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. Деплой приложения

  1. Клонирование репозитория:
    Убедитесь, что установлен 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;
    }
}

Поддержка и мониторинг

  1. Обновление системы:
    Регулярно обновляйте пакеты:
apt update && apt upgrade -y

Мониторинг ресурсов:
Установите htop:

apt install htop -y

Резервное копирование:
Используйте rsync или облачные решения для резервного копирования.

Теперь ваш сервер готов для использования! Вы можете хостить веб-сайты, приложения или базы данных с высокой степенью контроля и безопасности.