ВОЙТИ
    opened image

    Одним из самых востребованных языков у программистов, используемых для разработки приложений, является язык Python. Его популярность объясняется легкостью в освоении, богатой экосистемой и множеством доступных фреймворков, среди которых можно выделить Flask и Django. Однако перед разработчиком стоит задача — как правильно развернуть и запустить Python проект на виртуальном хостинге. Эта статья поможет вам пошагово пройти все этапы настройки виртуального хостинга для вашего Python проекта.

     

    Подготовка к развертыванию

     

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

    • Активный аккаунт виртуального хостинга (например, VPS).
    • SSH-доступ к серверу.
    • Наличие структуры проекта и наличие его сайта
    • Инсталляция Python, а также зависимостей

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

     

    Проводим проверку инсталлированной версии Python

     

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

    python3 --version

    Если Python уже установлен, отобразится его версия. Если Python не установлен, следуйте дальнейшим инструкциям по инсталляции.

    ]

    Инсталляция

    Если на вашем устройстве не установлен Python или его версия не актуальна, вы можете установить его через менеджер пакетов (например, используя apt в системе Ubuntu):

    sudo apt update

    sudo apt install python3 python3-pip


     

    Инсталляция требуемых библиотек и пакетов

     

    Для функционирования множества проектов на Python нужно установить определенные зависимости. Как правило, перечень всего, что требуется установить сохраняется в файле requirements.txt:

    pip install -r requirements.txt

     

    Виртуальное окружение: конфигурация

    Для изоляции между различными проектами зависимостей следует обращаться к помощи виртуальной среды (virtual environment).

    Виртуальная среда служит для изоляции зависимостей между различными проектами. Для создания виртуальной среды и начала ее использования, совершите дальнейшие действия:

    Инсталлируйте virtualenv:

    pip install virtualenv


    Формирование виртуальной среды:

    virtualenv venv

    Этой командой будет создан каталог venv, содержащий виртуальное окружение.

    После создания каталога необходимо активировать окружение:

    source venv/bin/activate

    После выполнения этой команды среда будет активирована и появится возможность устанавливать все пакеты через pip непосредственно в локальную среду проекта.

     

    Виртуальный хостинг: конфигурация

     

    Когда установка Python завершена и виртуальная среда подготовлена, перейдем к настройке виртуального хостинга.

    Доступ к серверу через SSH

    Подключение к вашему серверу через SSH — это первый шаг при настройке хостинга. Для получения защищенного доступа к серверу нужно воспользоваться клиентом SSH. Например:

    ssh username@hostname

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

     

    Как инсталлировать Python на хостинг?

     

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

     

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

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

     

    Как загрузить на сервер файлы?

    Воспользовавшись утилитой scp или же чем-то инструментом наподобие FileZilla (также подойдет любой другой FTP-клиент) вы сможете загрузить на сервер проектные файлы. Чтобы передать их с использованием scp необходимо ввести такую команду:

    scp -r /path/to/your/project username@hostname:/path/to/destination

     

    Apache и Nginx: конфигурация веб-сервера

    Правильная настройка веб-сервера требуется вам для того, чтобы Python проект успешно функционировал на вашем сервере. Для осуществления работы с приложениями посредством WGSI (Web Server Gateway Interface) вам понадобится обратиться к http-серверам. Как пример возьмём Nginx и Apache. Теперь рассмотрим конфигурацию Nginx:

    Инсталляция Nginx:

    sudo apt install nginx


     

    Сформируйте для вашего веб-ресурса в директории /etc/nginx/sites-available/ файл настроек и внесите в него следующую информацию:

    server {

    listen 80;

    server_name yourdomain.com;

    location / {

    proxy_pass http://127.0.0.1:8000;

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    }

    }

     

    Активация конфигурации:

    После проведенных манипуляций вам нужно создать ссылку на файл настроек в папке /etc/nginx/sites-enabled/:

    sudo ln -s /etc/nginx/sites-available/yourconfig /etc/nginx/sites-enabled/

    Теперь, для того, чтобы изменения вступили в силу сделайте рестарт Nginx:

    sudo systemctl restart nginx


    Чтобы запустить проект на Python через http-сервер, требуется конфигурация WSGI. Uwsgi и Gunicorn являются двумя распространенными решениями. Давайте разберемся, как настроить Gunicorn.

    Инсталляция:

    pip install gunicorn


    Запуск Gunicorn:

    В директории вашего проекта выполните:

    gunicorn --workers 3 yourproject.wsgi:application

    С помощью http-сервера Gunicorn получает возможность будет управлять запросами к вашему приложению.

     

    Установка Apache

    Давайте также обратим внимание на процесс инсталляции Apache. Сперва в конфигурации веб-сервера необходимо его инсталлировать. Метод, исходя из используемой платформы, будет варьироваться. Рассмотрим, как инсталлировать его на популярных дистрибутивах Linux.

     

    Инсталляция на платформах Ubuntu/Debian

    Инсталлируйте Apache после обновления репозитории:

    sudo apt update

    sudo apt install apache2


    Apache самостоятельно запустится по завершении установки. Чтобы проверить его текущее состояние необходимо руководствоваться командой:

    sudo systemctl status apache2


    В случае успешного завершения процесса, сервер Apache начнёт свою работу. Вы сможете убедиться в его функционировании, введя в адресной строке браузера URL вашего сервера или хоста (http://localhost или IP-адрес).

     

    Инсталляция на платформах CentOS/Fedora

    Инсталлируйте Apache (httpd на платформе CentOS) после обновления репозитории:

    sudo yum update

    sudo yum install httpd

    Далее активируйте Apache, перейдите в настройки и установите автозагрузку при старте системы:

    sudo systemctl start httpd

    sudo systemctl enable httpd

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

     

    Руководство по работе с Apache: ключевые команды

    Для администрирования Apache после его инсталляции вам необходимы определенные команды. 

    Запуск:

    Ubuntu и Debian: sudo systemctl start apache2   


    Fedora и CentOS: sudo systemctl start httpd     

    Остановка:

    Ubuntu и Debian: sudo systemctl stop apache2

     

    Fedora и CentOS: sudo systemctl stop httpd    

    Перезапуск (в случаях изменения настроек и т.д.):

    Ubuntu и Debian: sudo systemctl restart apache2   

    Fedora и CentOS: sudo systemctl restart httpd    

    Команда "перезагрузка без остановки" (reload) позволяет обновить файлы настроек, при этом не нарушая действующие соединения:

    Ubuntu и Debian: sudo systemctl reload apache2

    Fedora и CentOS: sudo systemctl reload httpd

    Мониторинг состояния:

    Ubuntu и Debian: sudo systemctl status apache2

    Fedora и CentOS: sudo systemctl status httpd

     

    Работа с базой данных

    Если ваше приложение использует хранилище информации, в таком случае вам потребуется наладить серверное подключение к ней.

     

    Базы данных: подключение

     

    Настроить подключение к базе (если такая используется), например MySQL или PostgreSQL возможно следующим способом. 

    Пример настройки PostgreSQL:

    Установка PostgreSQL:

    sudo apt install postgresql postgresql-contrib

     

     

    Базы данных: конфигурация

     

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

    sudo -u postgres psql


    CREATE DATABASE yourdb;

    CREATE USER youruser WITH PASSWORD 'yourpassword';

    GRANT ALL PRIVILEGES ON DATABASE yourdb TO youruser;

     

    Подключение из приложения:

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

    DATABASES = {

    'default': {

    'ENGINE': 'django.db.backends.postgresql',

    'NAME': 'yourdb',

    'USER': 'youruser',

    'PASSWORD': 'yourpassword',

    'HOST': 'localhost',

    'PORT': '5432',

    }

    }


     

     

    Оптимизация и безопасность

    ​​​​​​​

    Когда ваш проект развернут, важно настроить безопасность и производительность.

    Настройка SSL

    Для обеспечения безопасности важно использовать SSL-сертификат. Самый простой способ — настроить автоматическое получение сертификатов через Let's Encrypt:

    Установка certbot:

    sudo apt install certbot python3-certbot-nginx


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

    Выполните команду для автоматической настройки сертификата:

    sudo certbot --nginx -d yourdomain.com


     

     

    Мониторинг проекта

    После запуска важно следить за состоянием вашего приложения. Используйте инструменты мониторинга, такие как Prometheus, для отслеживания метрик производительности.

     

     

    Заключение

    Развертывание Python проекта на виртуальном хостинге может показаться сложным, но пошаговое выполнение всех этапов позволяет упростить этот процесс. Настройка окружения, веб-сервера и баз данных, а также обеспечение безопасности проекта с использованием SSL — все это важные составляющие успешного развертывания.