Как стать автором
Обновить
1726.62
Timeweb Cloud
То самое облако

Как настроить свой VPS-сервер

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров2.2K

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

❯ Что такое VPS-сервер и зачем он нужен

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

VPS нужен, если вам требуется больше контроля, мощности и гибкости, чем на обычном хостинге. Он подходит для таких задач как:

  • Хостинг сайтов: VPS идеально подходит для размещения сайтов. Это особенно актуально для сайтов с высокой нагрузкой или требующих определенной настройки.

  • Разработка и тестирование: VPS можно использовать как среду для разработки и тестирования приложений, а также для создания тестовых сред.

  • Сервер для приложений и игр: на VPS можно развернуть сервер для игр, мессенджеров, CRM-систем или других приложений.

  • Хранение данных: VPS можно использовать как облачное хранилище или файловый сервер для резервных копий или хранения важных данных.

  • Почтовый сервер: VPS можно использовать для организации собственного почтового сервера.

  • Обучение: VPS предоставляет возможность изучать администрирование серверов, работать с различными дистрибутивами Linux и сетевыми технологиями.

Преимущества использования своего VPS-сервера

Использование собственного VPS-сервера имеет ряд преимуществ включая следующие:

  • Полный контроль над сервером

При аренде VPS пользователь получает root-доступ, что позволяет настраивать сервер под свои нужды, устанавливать любое программное обеспечение и изменять его конфигурацию.

  • Производительность и стабильность

Ресурсы VPS, включая CPU, RAM и дисковое пространство, выделены исключительно для вас, что обеспечивает стабильную производительность даже при высоких нагрузках. Это отличает VPS от shared-хостингов, у которых из собственных ресурсов есть только место на диске, в то время как все остальные ресурсы распределяются между сторонними пользователями.

  • Масштабируемость

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

  • Безопасность

VPS-сервер можно изолировать путем создания его в частной сети без доступа в сеть интернет.

  • Выделенный публичный IP-адрес

Обычно для VPS дополнительно можно арендовать публичный выделенный IP-адрес, что позволяет развернуть свой веб-сайт, почтовый сервер и т.д.

  • Резервное копирование и восстановление данных

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

  • Гибкость в управлении

На VPS-сервере вы можете переустанавливать ОС, менять конфигурацию и управлять сервером через панель управления или командную строку. Доступ к серверу возможен в любой момент времени из любой точки мира.

Выбор хостинг-провайдера для VPS

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

  • Производительность. Необходимо обращать внимание на используемое оборудование: CPU, RAM, SSD/NVMe, а также проверять доступную пропускную способность.

  • Физическое расположение дата-центров. Чем ближе дата-центр располагается к пользователю, тем меньше будет сетевая задержка.

  • Стоимость. У всех хостинг-провайдеров разная ценовая политика. Необходимо соблюдать баланс между стоимостью и характеристиками.

  • Поддержка. Доступность поддержки 24/7 и возможность создания тикетов.

  • Uptime. Гарантия доступности (как правило, не ниже 99.9%).

  • Безопасность. Защита от DDoS, бэкапы, firewall.

  • Наличие сетевых ограничений. Лимиты на трафик, IPv4/IPv6, скорость сети.

❯ Как создать свой VPS-сервер

Рассмотрим создание своего собственного VPS-сервера на примере Timeweb Cloud.

1) Переходим на страницу авторизации и входим в аккаунт при помощи логина или адреса электронной почты и пароля или при помощи Passkey, ВКонтакте, GitHub, Google.

2) После успешной авторизации отобразится панель управления текущего проекта. Переходим в раздел «Облачные серверы» и нажимаем «Создать» или «Добавить».

3) Выбираем операционную систему, которая будет установлена на сервер. Помимо дистрибутивов Linux, также доступна ОС Windows Server в нескольких редакциях:

Image16

4) Выбираем регион, в котором будет находиться наш сервер. Выбирать рекомендуется тот регион, который ближе всего находится к вам физически. У каждого доступного региона справа вверху отображается ping, т.е. время, необходимое для передачи данных с вашего компьютера на сервер. Чем меньше указанное время, тем быстрее будет осуществляться передача данных.

Image9

5) Далее выбираем конфигурацию для сервера, которая будет удовлетворять вашим потребностям при выполнении задач. Можно выбрать готовую конфигурацию, которая включает линейки Premium NVMe, Standard и High CPU, или произвольную, где вы можете самостоятельно указать нужное количество ресурсов. Выбираем соответствующий тариф:

Image2

6) Далее необходимо решить, будет ли сервер доступен из внешний сети или же только из приватной (частной) сети. Если не уверены в настройках, оставьте эти параметры без изменений.

7) По желанию можно оформить дополнительные услуги, включая резервные копии и защиту от DDoS-атак (последняя доступна только в Санкт-Петербурге и в Москве).

8) На следующем шаге можно загрузить SSH-ключ, чтобы не входить на север при помощи пароля. В этом случае доступ по паролю можно запретить:

Image19

9) При необходимости можно воспользоваться инструментом cloud-init, который автоматизирует процесс настройки сервера (например, можно установить нужные пакеты, создать пользователей и т.д.). Подробнее о cloud-init — в документации

Image22

10) Можно задать необходимое имя для сервера которое будет отображаться в панели управления, а также выбрать проект.

11) Для создания сервера необходимо нажать на кнопку «Заказать»:

Image23

Если на вашем аккаунте недостаточно средств, то будет выведено предупреждение о необходимости пополнить баланс. После оплаты и создания сервера откроется Дашборд сервера, где можно будет найти IP-адрес, логин и пароль для подключения.

Настройки VPS-сервера в панели

Рассмотрим настройку параметров сервера через панель управления Timeweb Cloud.

В разделе «Доступ» можно изменить root-пароль, причем его можно как сгенерировать автоматически, так и задать самому. 

Image11

При помощи параметра «Режим загрузки ОС» можно поменять режим загрузки, например, загрузившись с диска восстановления. Данная функция будет полезна при устранении различных проблем, связанных с системой:

Image37

Также можно управлять SSH-ключами (например, можно добавить новый ключ) и открыть доступ для технической поддержки при необходимости.

В разделе «Сеть» можно добавить сервер в приватную (частную) сеть:

Image39

А также настроить правила маршрутизации трафика (NAT):

Image27

Раздел «Бэкапы» позволяет создавать резервные копии и управлять ими, а также создавать снапшоты — мгновенные снимки текущего состояния сервера:

Image20

Чтобы изменить конфигурацию сервера необходимо, перейти во вкладку «Конфигурация» и нажать на кнопку «Выбрать конфигурацию»:

Image40

В открывшемся меню можно выбрать как фиксированную (уже готовую) конфигурацию, так и настроить свою собственную (вкладка «Произвольная»):

Image35

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

После того как VPS-сервер был запущен, необходимо произвести его базовую настройку. Все примеры, рассматриваемые ниже, применимы для дистрибутива Ubuntu.

  1. Для начала необходимо обновить все пакеты в системе до последних версий с помощью команд:

apt update && apt -y upgrade

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

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

Использование root-аккаунта на Linux-сервере считается небезопасным, так как root — это суперпользователь с полным доступом ко всем файлам, процессам и настройкам системы. Для минимизации рисков, связанных с использованием root, создадим нового пользователя с именем usr1:

adduser usr1
Image38

Задаем пароль и вводим его повторно. При необходимости заполняем дополнительные поля или оставляем их пустыми.

  1. После того как пользователь был создан, добавляем его в группу sudo:

usermod -aG sudo usr1
  1. Проверяем, сможет ли пользователь выполнять операции, требующие повышенного доступа, например, устанавливать пакеты. Для этого переключаемся на пользователя usr1:

su - usr1
Image25
  1. Установим пакеты tree и net-tools, используя sudo:

sudo apt -y install tree net-tools

В процессе вводим пароль пользователя:

Image24

Пакеты были успешно установлены.

Настройка безопасности VPS

Как правило, по умолчанию доступ до VPS-сервера осуществляется при помощи пароля. Данный способ не является безопасным. Предпочтительный вариант — аутентификация по SSH-ключам. Если вы не добавили ключ и не отключили доступ по паролю на этапе создания сервера, это можно сделать сейчас вручную.

Генерируем пару ключей на локальном компьютере, с которого будет осуществляться подключение по SSH к VPS-серверу.

  1. Генерируем пару ключей при помощи команды:

ssh-keygen
Image15

По умолчанию система предлагает сохранить ключи в домашней директории пользователя в скрытой папке .ssh (в нашем примере используется macOS и директория /Users/admin/.ssh). У вас также есть опция задать собственный путь. Также утилита предложит задать парольную фразу для ключа, однако ее придется вводить каждый раз при подключении. При желании парольную фразу можно оставить пустой.

Мы сохраним ключи в стандартной директории и не будем использовать парольную фразу.

  1. После генерации ключей необходимо отправить открытый ключ на VPS-сервер. Для этой цели существует утилита отдельная утилита ssh-copy-id. Необходимо указать имя пользователя, а также адрес сервера:

ssh-copy-id usr1@212.193.24.152
Image18

Вводим пароль пользователя. Если ключ был успешно скопирован на сервер, то отобразится фраза «Number of key(s) added». Попробуем подключиться к серверу без ввода пароля:

Image8

Если при подключении не отобразилось приглашение для ввода пароля, то ключи были успешно добавлены.

  1. Далее открываем на редактирование файл /etc/ssh/sshd_config при помощи любого текстового редактора:

sudo nano /etc/ssh/sshd_config

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

  • PermitRootLogin — запрещает или разрешает вход под root.

Image30
  • PasswordAuthentication — отключает или включает вход по паролю (используется после настройки входа по ключам).

97039dc1 7c0d 4db4 9ddf 76d9544b0795

Сохраняем изменения и выходим из файла.

  1. Перезапускаем демон sshd:

sudo systemctl restart sshd

После перезапуска пробуем войти еще раз. При нормальном функционировании доступ по паролю будет запрещен – вместо него будут использоваться только ключи.

  1. Дополнительно необходимо настроить firewall. В дистрибутиве Ubuntu используется UFW — утилита для настройки межсетевого экрана Netfilter. По умолчанию UFW выключен:

sudo ufw status
Image32

Добавим правило для протокола SSH, а именно разрешим подключение по 22 порту. Можно как указать номер порта, так и указать протокол:

sudo ufw allow 22

Или:

sudo ufw allow openssh
Image6

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

sudo ufw allow 80
sudo ufw allow 5000
Image44
  1. Включаем UFW:

sudo ufw enable
Image34

При появлении фразы «Command may disrupt existing ssh connections. Proceed with operation (y|n)?» вводим y

Для проверки всех активных правил можно использовать команду:

sudo ufw status
Image5

❯ Пример использования VPS: развертывание веб-приложения

После того как VPS-сервер был настроен, можно перейти к практическому использованию. Для примера мы развернем тестовое веб-приложение, созданное при помощи фреймворка Flask на Python, которое будет использовать базу данных PostgreSQL.

Установка и настройка PostgreSQL

Для установки СУБД PostgreSQL и пакета libpq-dev (содержит заголовочные файлы и библиотеки для работы с PostgreSQL) достаточно выполнить команду:

sudo apt -y install postgresql libpq-dev

Далее перейдем к процессу настройки.

  1. Переключаемся на пользователя postgres:

sudo -i -u postgres
Image7
  1. Запускаем оболочку psql:

psql
Image12
  1. Создаем новую базу данных с именем myapp1:

CREATE DATABASE myapp1;
Image43
  1. Далее создаем нового пользователя с именем newusr1 с зашифрованным паролем:

CREATE USER newusr1 WITH ENCRYPTED PASSWORD 'StrongPassword46464473';
Image4
  1. Предоставляем ранее созданному пользователю newusr1 все права на базу данных myapp1:

GRANT ALL PRIVILEGES ON DATABASE myapp1 TO newusr1;
Image41

Для выхода из оболочки psql необходимо ввести exit:

exit

Далее вводим exit еще раз, чтобы выйти из-под пользователя postgres:

exit
Image29

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

Переходим к созданию тестового веб-приложения.

  1. Обновляем индекс репозиториев и устанавливаем дополнительные пакеты для Python:

sudo apt update && sudo apt -y install python3-pip python3-venv
  1. Создаем директорию для проекта и переходим в нее:

mkdir flask-app && cd flask-app
  1. Создаем виртуальное окружение Python:

python3 -m venv venv

И активируем его:

source venv/bin/activate
Image17

Перед приглашением к вводу будет отображаться (venv), что говорит о том, что виртуальное окружение было успешно активировано.

  1. При помощи менеджера пакетов pip устанавливаем необходимые пакеты:

pip3 install flask flask-sqlalchemy psycopg2 gunicorn
Image26
  1. Создаем файл app.py:

nano app.py

Используем следующее содержимое, где вместо имени пользователя newusr1, пароля StrongPassword46464473 и базы данных myapp1 вам необходимо подставить свои данные для подключения к базе данных:

from flask import Flask, render_template, request, redirect
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://newusr1:StrongPassword46464473@localhost:5432/myapp1'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

class Item(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)

with app.app_context():
  db.create_all()

@app.route('/')
def index():
    items = Item.query.all()
    return render_template('index.html', items=items)

@app.route('/add', methods=['POST'])
def add_item():
    name = request.form.get('name')
    if name:
        new_item = Item(name=name)
        db.session.add(new_item)
        db.session.commit()
    return redirect('/')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

  1. Далее создаем директорию templates и в ней файл index.html:

mkdir templates && nano ./templates/index.html

Файл index.html наполняем следующим содержимым:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flask PostgreSQL App</title>
</head>
<body>
    <h1>Item List</h1>
    <ul>
        {% for item in items %}
            <li>{{ item.name }}</li>
        {% endfor %}
    </ul>
    <form action="/add" method="post">
        <input type="text" name="name" required>
        <button type="submit">Add Item</button>
    </form>
</body>
</html>

Сохраняем изменения и выходим из файла.

  1. Запускаем веб-приложение, чтобы проверить работоспособность:

python3 app.py
Image36

Далее в браузере переходим по IP-адресу сервера и порту приложения (5000):

Image13

Проверим работоспособность базы данных. Для этого добавим значение «TestItem» и нажимаем на кнопку «Add Item»:

Image10

Значение было успешно добавлено.

Также можно подключиться к базе данных и выполнить SQL-запрос, чтобы убедиться, что запись была успешно сохранена:

Image31
  1. Также создадим systemd-файл для запуска приложения в фоновом режиме:

sudo nano /etc/systemd/system/flask-app.service

Содержимое файла будет следующим:

[Unit]
Description=Flask App
After=network.target

[Service]
User=root
WorkingDirectory=/home/usr1/flask-app
ExecStart=/home/usr1/flask-app/venv/bin/gunicorn --workers 1 --bind 0.0.0.0:5000 app:app
Restart=always

[Install]
WantedBy=multi-user.target

В параметре WorkingDirectory необходимо указать полный путь до директории с файлами веб-проекта, в параметре ExecStart — полный путь до исполняемого (бинарного) файла Gunicorn. Так как мы установили Gunicorn внутри виртуального окружения, для определения пути необходимо выполнить команду which gunicorn, находясь в виртуальном окружении:

which gunicorn
Image42

В данном примере полный путь до gunicorn — /home/usr1/flask-app/venv/bin/gunicorn.

Сохраняем изменения и выходим из файла.

  1. Перезапускаем systemd:

sudo systemctl daemon-reload
  1. Перезапускаем наше веб-приложение:

sudo systemctl restart flask-app.service

И проверяем его статус:

systemctl status flask-app.service
Image21

Веб-приложение успешно запущено. 

Установка и настройка веб-сервера Nginx

  1. Устанавливаем пакет nginx из стандартного репозитория дистрибутива:

sudo apt -y install nginx
  1. Делаем резервную копию стандартного файла шаблона default:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.backup
  1. Открываем на редактирование при помощи любого текстового редактора файл default

sudo nano /etc/nginx/sites-available/default

Приводим файл к следующей конфигурации, где вместо IP-адреса 212.193.24.152 вам необходимо указать публичный IP-адрес вашего сервера:

server {
    listen 80;
    server_name 212.193.24.152;

    location / {
        proxy_pass http://127.0.0.1:5000;
        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. Проверяем синтаксис конфигурационных файлов Nginx на наличие ошибок:

sudo nginx -t
Image28

Если команда вернет строки, содержащие «syntax is ok» и «test is successful», то ошибок в синтаксисе конфигурационных файлах нет. 

  1. Перезапускаем сервис nginx:

sudo systemctl restart nginx

Проверяем, что веб-приложение открывается: 

Image33

Пробуем добавлять записи:

Image14

На этом развертывание тестового веб-приложения на VPS завершено.

❯ Частые вопросы о виртуальных серверах

Чем VPS отличается от shared-хостинга?

VPS (Virtual Private Server) и shared-хостинг (общий хостинг) — это два разных подхода к размещению сайтов, и их отличия заключаются в уровне контроля, ресурсов и изоляции. VPS отличается от shared-хостинга тем, что предоставляет выделенные ресурсы, полный контроль, изоляцию и лучшую производительность. Shared-хостинг — это общие ресурсы, простота и низкая цена, но с ограничениями и зависимостью от «соседей».

Как выбрать тариф для VPS?

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

Основные критерии выбора тарифа для VPS заключаются в используемом трафике и нагрузке. Так, при низком трафике (до 1 000 посетителей в день) достаточно выбрать небольшие конфигурации, включающие в себя 1-2 ГБ RAM и 1-2 CPU. Для средней и высокой нагрузки (начиная от 10 000 посетителей и выше) необходимо выбирать конфигурации с минимум 4-8 ГБ RAM и 2-4 CPU. Также необходимо обращать внимание на стоимость конфигурации для VPS-сервера, его уровень доступности (должен быть не ниже 99%) и наличие технической поддержки.

Как управлять VPS-сервером?

VPS-сервером можно управлять разными способами. Как правило, они сводятся к следующим методам:

  • Протокол SSH. Данный способ применяется для VPS под управлением Linux. После создания сервера пользователь получает логин (как правило, это root-пользователь) и пароль. 

  • Протокол RDP. Данный способ используется при работе с VPS-серверами на Windows. Пользователю предоставляется учетная запись администратора и пароль.

  • Консоль. Некоторые хостинг-провайдеры предоставляют встроенную в панель управления консоль, которая позволяет подключаться к серверу и управлять им, не используя сторонние клиентские программы.

  • Панель управления. Существуют различные панели управления сервером (ispmanager, Faspanel, Hestia и др.), которые позволяют администрировать сервер через графический интерфейс.

Заключение

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

Автор текста: Александр Бархатов


Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале 

Перейти ↩

Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.

📚 Читайте также:

Теги:
Хабы:
+8
Комментарии3

Публикации

Информация

Сайт
timeweb.cloud
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Timeweb Cloud

Истории