Поделиться:
Поделиться:

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()

Александр
02.07.2016 01:09

Именно этой инструкцией я и пользовался, но все равно ничего не выходит, переход по домену дает ровным счетом ничего, а именно "Не удается получить доступ к сайту"
Путь в index.wsgi прописал точно до проекта
Нет никаких идей как это все отлаживать(

А у вас в итоге получилось запустить проект?
Где должна лежать папка public_html и что в ней должно находиться кроме index.wsgi и .htaccess?

Teylon
05.07.2016 15:09

Обычно ошибка "Не удается получить доступ к сайту" отдается браузером, когда нет доступа к ресурсу, обычно это не проблемы проекта или кода.

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

"Так же пробовал создавать через выбор 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 по аналогии.

Павел Кононов
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

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