14878

Публикация Django-проекта на хостинге Timeweb

6 ответов

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

Подключаюсь к серверу через SSH протокол, создаю виртуалку, файлы  index.wsgi и .htaccess согласно этой инструкции, клонирую git репозиторий туда, потом через панель на Timeweb "создаю сайт" и указываю папку с клоном. При переходе по доменному имени ничего не происходит. 

Так же пробовал создавать через выбор CSM  в панели Timeweb, но так же безрезультатно. 

И такой еще вопрос, как поступить с БД? Разрабатывал на SQLite 

Заранее благодарю!

 

Ответы (6)

Матвей +5
01.07.2016 11:26
С полгода назад ставил на Django проект на Timeweb. Сам не справился, в поддержке получил следующую инструкцию (она вроде бы несколько отличается от той, что по ссылке, надеюсь поместится). Попробуйте ей проследовать, а если на каком-то этапе будет ошибка, пишите на каком и домен вашего сайта, посмотрим что еще можно предпринять:

Вы можете произвести установку виртуального окружения в Вашу домашнюю директорию, после чего можно использовать pip для установки библиотек Python. Подробно о том, что представляет из себя виртуальное окружение Python, Вы можете прочитать в документации, которая доступна по адресу https://virtualenv.pypa.io/en/latest/

Установить виртуальное окружение можно следующими командами:

curl -O https://pypi .python .org/packages/source/v/virtualenv/virtualenv-X.X.tar.gz
tar xvfz virtualenv-X.X.tar.gz
cd virtualenv-X.X/
python virtualenv.py ~/myenv
где Х.Х - необходимая версия virtualenv

Для активации локального виртуального окружения используется source:

source ~/myenv/bin/activate

После того как Вы произведете установку и активацию виртуального окружения, Вы сможете установить django с помощью pip:

pip install django

Далее, чтобы развернуть проект, необходимо создать файл .htaccess в папке public_html сайта со следующим содержанием:

Options +ExecCGI
AddHandler wsgi-script .wsgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.wsgi/$1 [QSA,PT,L]

Также необходимо создать файл index.wsgi. Для версии django меньше 1.7 c содержанием:

import os
import sys

sys.path.append('/home/u/user/app/') #путь до проекта django
sys.path.append('/home/u/user/myenv/lib/python2.7/site-packages/') # путь до django
os.environ['DJANGO_SETTINGS_MODULE'] = 'app.settings' #app - название проекта django.

from django.core.handlers import wsgi
application = wsgi.WSGIHandler()

Для версии django 1.7 и выше c содержанием:

import os
import sys

sys.path.append('/home/u/user/app/') #путь до проекта django
sys.path.append('/home/u/user/myenv/lib/python2.7/site-packages/') # путь до django
os.environ['DJANGO_SETTINGS_MODULE'] = 'app.settings' #app - название проекта django.

import django
django.setup()

from django.core.handlers import wsgi
application = wsgi.WSGIHandler()
Свернуть ответы
Александр 0
02.07.2016 01:09
Именно этой инструкцией я и пользовался, но все равно ничего не выходит, переход по домену дает ровным счетом ничего, а именно "Не удается получить доступ к сайту"
Путь в index.wsgi прописал точно до проекта
Нет никаких идей как это все отлаживать(

А у вас в итоге получилось запустить проект?
Где должна лежать папка public_html и что в ней должно находиться кроме index.wsgi и .htaccess?
Teylon +12
05.07.2016 15:09
Обычно ошибка "Не удается получить доступ к сайту" отдается браузером, когда нет доступа к ресурсу, обычно это не проблемы проекта или кода.

Попробуйте проверить доступ к сайту через консоль, к примеру тем же пингом, должен отдаваться ip сервера, если отдается нужный, то попробовать другой браузер или режим инкогнито, если отдается другой ip, то стоит проверить настройки компа(hosts) или настройки домена, может задан ip другого сервера
IvanMaslyakov 0
02.10.2020 23:40
Мб это глупый вопрос, но как собственно открыть эту консоль в которую надо писать команды? (или только через SSH?)
"Так же пробовал создавать через выбор CSM в панели Timeweb, но так же безрезультатно"

Почему -же? все ставится прекрасно из коробки. Я по началу был в восторге!
Другое дело если вам будут нужны сторонние зависимости, например Pillow для картинок, то поставить не получится, у вас не будет прав. Поэтому только virtualenv по инструкции выше..

Структуру своего проекта я сделал такую-же как и делает timeweb при установки django из панели. Там есть отличия от локального сервера: static и media вынесены в public_html. .htaccess и index.wsgi делаете как написано в инструкции выше. Все там должно работать. Единственное я не знаю что нужно сделать, чтобы не вываливалась 500 когда юзер пытается загрузить файл с русскими буквами. Пробовал прописывать utf-8, не получилось.

С MySQL работаете так-же как и SQLite. Создаете базу, в настройках settings.py указываете ее параметры. Не забываем в окружении поставить pip install MySQL-python >Миграции > суперюзер > Экран приветствия!

Если хотите использовать SQLite? Проблем не должно быть, разве что пароли указать и хост. Поддержка SQLite вроди как встроена в python изначально.

Совет, поставте django из коробки, посмотрите какой там settings.py .htaccess index.wsgi, пермишены на папки. И уже свой проект в virtualenv по аналогии.
Павел Кононов +4
23.01.2019 18:37
timeweb/django2.1.5/virtualenv-16.2.0/python3.5.2
Установка происходит, а вот с запуском косяки.

Создаем сайт с поддержкой python3.5
Заходим по ssh на хостинг

Установка окружения virtualenv
cd /home/u/user/
wget https://files. pythonhosted .org/packages/59/38/55dd25a965990bd93f77eb765b189e72cf581ce1c2de651cb7b1dea74ed1/virtualenv-16.2.0.tar.gz && tar xvfz virtualenv-16.2.0.tar.gz
python3.5 virtualenv-16.2.0/virtualenv.py ~/.pyenv

Активация окружения
source ~/.pyenv/bin/activate

Установка Django
pip install Django==2.1.5
можно без ==2.1.5
удаление если надо то pip uninstall Django

Установка прав Плохой совет, но без него ошибка прав доступа при инициализации проекта.
chmod -R 777 ~/.pyenv/bin/django-admin.py

Инициализация проекта, тут я не уверен :)
удалить каталог public_html
django-admin.py startproject каталогВашегоСайта

Создание символической ссылки на ваше приложение оно одноименно с именем каталога вашего сайта, поээтому такая странная ссылка получается.
ln -s ~/КаталогВашегоСайта/КаталогВашегоСайта public_html

Дальше темный лес

Похожие вопросы

Запрос к БД INSERT

Добрый вечер, столкнулся с проблемой. Flask. Использую mysqlconnector Вот такой кусок кода: cursor.execute("INSERT INTO `users`( `sUserLogin`, `sUserMail`, `sUserPassword`, `iUserStatus`, `sUserPhone`, `sFirstName`, `sLastName`) VALUES (%s,%s,%s,%s,%s,%s,%s)",(user["login"],...

Через Crontab не работает скрипт на питоне

Есть скрипт, проверяющий, онлайн ли человек в ВК. При сценарии Python в Crontab ничего не происходит, файл не записывается, на почту тоже 0 писем. Проблема не только в модулях, он банально в файл даже записать ничего не может  Код.py import...
Polite Cygnus
99

Блокировка добавления изображений через админ панель

Здравствуйте! Сталкнулся с проблемой того, что хостинг блокирует добавление картинки в папку сервера через админ панель сайта.  При попытке загрузить картинку, вылетает ошибка о блокировки, если работать через локальный сервер все отлично добавляется: Сайт...
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте
С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
С помощью соцсетей
У меня уже есть аккаунт Войти
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Войти в Комьюнити
Регистрация в Комьюнити
Восстановление пароля