Проблема заключается в том, что не получается разместить Django проект на хостинге Timeweb, а если более конкретно то не понимаю какая должна быть иерархия у файлов на сервере.
Подключаюсь к серверу через SSH протокол, создаю виртуалку, файлы index.wsgi и .htaccess согласно этой инструкции, клонирую git репозиторий туда, потом через панель на Timeweb "создаю сайт" и указываю папку с клоном. При переходе по доменному имени ничего не происходит.
Так же пробовал создавать через выбор CSM в панели Timeweb, но так же безрезультатно.
И такой еще вопрос, как поступить с БД? Разрабатывал на SQLite
Заранее благодарю!
Ответы (6)
Вы можете произвести установку виртуального окружения в Вашу домашнюю директорию, после чего можно использовать 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()
Путь в index.wsgi прописал точно до проекта
Нет никаких идей как это все отлаживать(
А у вас в итоге получилось запустить проект?
Где должна лежать папка public_html и что в ней должно находиться кроме index.wsgi и .htaccess?
Попробуйте проверить доступ к сайту через консоль, к примеру тем же пингом, должен отдаваться ip сервера, если отдается нужный, то попробовать другой браузер или режим инкогнито, если отдается другой ip, то стоит проверить настройки компа(hosts) или настройки домена, может задан ip другого сервера
Почему -же? все ставится прекрасно из коробки. Я по началу был в восторге!
Другое дело если вам будут нужны сторонние зависимости, например 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 по аналогии.
Установка происходит, а вот с запуском косяки.
Создаем сайт с поддержкой 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
Дальше темный лес