Поиск:

Поиск по:

Результаты поиска по запросу «»
Найдено совпадений
По вашему запросу ничего не найдено
.
Показать еще

Облачный хостинг - как работает Python

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

1. Запуск Python
2. Смена версий
3. Работа с MySQL
4. Работа с Redis
5. Работа с Memcached
6. Перезапуск сервиса после изменения кода

1. Запуск Python

Python запускается через WSGI. Для работы сайта предоставляется 4 процесса (processes), на каждый процесс 2 потока (threads).

1.1 При создании сайта необходимо выбрать, что сайт работает на Python:

Настройки

1.2 Загрузить файлы сайта можно подключившись по SFTP.

Файлы вашего приложения можно расположить в каталоге sitename/app , а статические файлы (.css, .jpg, .png и другие) - в каталоге sitename/static.

1.3 Далее нужно указать файл для запуска вашего приложения. Этот файл может называться wsgi.py (если вы используете Django), или любым другим образом (main.py, projectname.py и т.д.).

Настройки


Установка пакетов и отладка сайта

Управлять проектом можно подключившись по SSH.

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

Для каждого сайта уже создано индивидуальное виртуальное окружение. Свое собственное виртуальное окружение создавать не требуется.

При установке пакетов через pip install сначала перейдите в каталог с сайтом и виртуальное окружение активируется автоматически:

c566@h2:~$
c566@h2:~$ cd mydomain.ru/
direnv: loading ../.envrc
Activating (mydomain.ru/env:python3.5)
direnv: export +ENV +VIRTUAL_ENV ~PATH
(mydomain.ru/env:python3.5)c566@h2:~/mydomain.ru$

Далее можно установить нужные расширения:

(mydomain.ru/env:python3.5)c566@h2:~/mydomain.ru$ pip install Flask

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

c566@h2:~$ cd mydomain.ru/
direnv: loading ../.envrc
Activating (mydomain.ru/env:python3.5)
direnv: export +ENV +VIRTUAL_ENV ~PATH
(mydomain.ru/env:python3.5)c566@h2:~/mydomain.ru$

Далее запустим скрипт:

(mydomain.ru/env:python3.5)c566@h2:~/mydomain.ru$ python app/somescript.py

По умолчанию в app/wsgi.py уже загружен файл, который при обращении через браузер выводит "Hello world!".

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello world!\n"]

2. Смена версий Python

При необходимости можно задать нужную версию Python в панели управления

Изменение версии Python сбрасывает виртуальное окружение. Таким образом, установленные через pip install пакеты при смене версии удаляются.

3. Работа с MySQL

MySQL доступен только через сокет /run/mysqld/mysqld.sock и недоступен по сети.

Перейдем в каталог с сайтом, чтобы устанавить пакет для определенного сайта

cd ~/mydomain.ru

Установим Flask и драйвер для работы с MySQL.

pip install SQLAlchemy Flask

Сохраним этот код в файл app/wsgi.py и разместим в каталоге с сайтом.

import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

# Create Flask application
db = SQLAlchemy()
application = Flask(__name__)
application.config.from_mapping(SQLALCHEMY_DATABASE_URI='mysql://c566_0:YoPjiDewfogul23@localhost/c566_0')
db.init_app(application)


# Flask views
@application.route('/')
def index():
    return '{}\n'.format(db.session.query("1").from_statement("SELECT 1").all())



if __name__ == '__main__':
    # Start app
    application.run(host='0.0.0.0', debug=os.getenv('DEBUG_MODE', True))

Если после открытия этого сайта в браузере появляется сообщение [(1,)], то подключение к MySQL прошло успешно.

4. Работа с Redis

На облачном хостинге в redis данные хранятся только в оперативной памяти и на диск не сохраняются. Из оперативной памяти данные очищаются при перезапуске сервиса, либо пока вы специально не удалите данные.

Перейдем в каталог с сайтом, чтобы устанавить пакет для определенного сайта

cd ~/mydomain.ru

Установим драйвер для работы с redis

pip install redis
#!/usr/bin/env python

import redis

r = redis.StrictRedis(host='localhost', port=6379, db=0)

r.set('ProtossAirUnits', 'Observer,Shuttle,Scout,Carrier,Carrier\'sInterceptor,Arbiter,Corsair')

print(r.get('ProtossAirUnits'))

Сохраним этот код в файл app/sc1units2redis.py и разместим в каталоге с сайтом.

После подключения по SSH можно вручную запустить app/sc1units2redis.py.

Перейдем в каталог с сайтом, чтобы запускать app/sc1units2redis.py в окружении для определенного сайта

cd ~/mydomain.ru
(mydomain.ru/env:python3.5)c566@h2:~/mydomain.ru$ python app/sc1units2redis.py
b"Observer,Shuttle,Scout,Carrier,Carrier'sInterceptor,Arbiter,Corsair"

В данном случае мы получили значение ключа ProtossAirUnits.

5. Работа с Memcached

Пример подключения к Memcached и сохранения данных на 15 секунд.

#!/usr/bin/env python

import memcache
client = memcache.Client([('127.0.0.1', 11211)])
sample_obj = {"name": "Soliman",
"lang": "Python"}
client.set("sample_user", sample_obj, time=15)
print("Stored to memcached, will auto-expire after 15 seconds")
print(client.get("sample_user"))

Сохраним этот код в файл app/mem.py и разместим в каталоге с сайтом.

После подключения по SSH можно вручную запустить app/mem.py.

Перейдем в каталог с сайтом, чтобы запускать app/mem.py в окружении для определенного сайта

cd ~/mydomain.ru
(mydomain.ru/env:python3.5)c566@h2:~/mydomain.ru$ python app/mem.py
Stored to memcached, will auto-expire after 15 seconds
{'name': 'Soliman', 'lang': 'Python'}

В данном случае мы получили значение ключа sample_user.

6. Перезапуск сервиса после изменения кода сайта

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

touch reload

Например

c566@h2:~/mydomain.ru$ touch reload

Регистрация доменов

в зонах .RU .РФ

от 200 рублей Зарегистрировать домен

SSL сертификаты

Подтверждение сайта и надежная защита

передаваемых данных

Купить сертификат

Облачные VDS

дешевле чашки кофе

Процессорных ядер: 4, Память: 4 Гб, Диск: 20 Гб SSD, Резервное копирование

от 35 р/день Заказать VDS

Все, что нужно от хостинга

Простое решение для вашего сайта

Подробнее

Хранилище данных

Храни что хочешь по смешным ценам

Почасовая оплата за размещенные данные.

Заказать хранилище