Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 29, 2014 14:42:02

dimitrez
Зарегистрирован: 2014-12-29
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Перенос проекта на питоне

Привет All.
Заранее извиняюсь если спрашиваю глупости, что то не то и подобное.
Сам админ много лет, с питоном толкнулся впервые на прошлой неделе. Клиент с которым давно работаю купил проект (сайтик) на питоне. Задача перенести с хостинга продавца на сво сервер. С наскока не получилось (поставил все дефолтное), но полезли ошибки при старте - выяснил что проблема в версии django,проект написан на вроде как джанго 123, а в систему стал 1.7 и вроде как они между собой не совместимы.
Решил пойти более правильным путем, перетащил сайт на виртуальную машину, начал настраивать, поставил джанго 123, под него нужные подули и либы, теперь при тестировании выдает:

root@debian:/home/tmp/djang0byte# python manage.py testserver
Creating test database 'default'...
Got an error creating the test database: (1007, "Can't create database 'test_welinux'; database exists")
Type 'yes' if you would like to try deleting the test database 'test_welinux', or 'no' to cancel: yes
Destroying old test database...
Creating test database...
Traceback (most recent call last):
  File "manage.py", line 29, in <module>
    execute_manager(settings)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 220, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/testserver.py", line 24, in handle
    db_name = connection.creation.create_test_db(verbosity=verbosity)
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/creation.py", line 353, in create_test_db
    call_command('syncdb', verbosity=verbosity, interactive=False, database=self.connection.alias)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 166, in call_command
    return klass.execute(*args, **defaults)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 219, in execute
    self.validate()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 249, in validate
    num_errors = get_validation_errors(s, app)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/validation.py", line 28, in get_validation_errors
    for (app_name, error) in get_app_errors().items():
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 146, in get_app_errors
    self._populate()
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 61, in _populate
    self.load_app(app_name, True)
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 78, in load_app
    models = import_module('.models', app_name)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/usr/local/lib/python2.7/dist-packages/django_compressor-1.4-py2.7.egg/compressor/models.py", line 1, in <module>
    from compressor.conf import CompressorConf  # noqa
  File "/usr/local/lib/python2.7/dist-packages/django_compressor-1.4-py2.7.egg/compressor/conf.py", line 9, in <module>
    class CompressorConf(AppConf):
  File "/usr/local/lib/python2.7/dist-packages/django_appconf-0.6-py2.7.egg/appconf/base.py", line 72, in __new__
    new_class._configure()
  File "/usr/local/lib/python2.7/dist-packages/django_appconf-0.6-py2.7.egg/appconf/base.py", line 101, in _configure
    value = callback(value)
  File "/usr/local/lib/python2.7/dist-packages/django_compressor-1.4-py2.7.egg/compressor/conf.py", line 112, in configure_template_filter_context
    value = {'STATIC_URL': settings.STATIC_URL}
  File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 277, in __getattr__
    return getattr(self._wrapped, name)
AttributeError: 'Settings' object has no attribute 'STATIC_URL'
root@debianhome/tmp/djang0byte# 

Чесно не понимаю куда копать, а времени изучать питон как положено сейчас просто нет. Хостинг оплачен до 3 января и нужно срочно перетягивать так что бы работало. Прощу помощи у знатоков.

Продавец сказал что он ничего сам не настраивал. Сказал только что сайт писался с использованием djang0byte. Нашел файлик со списком модулей для сайта - проде как все поставил под питон2.7 и джанго 123. На хостинге питон2.6

Так же нашел в корне сайта bash скриптик для старта как я понимаю django, при его запуске выдает:
root@debian:/home/tmp/djang0byte# ./run.sh start
Traceback (most recent call last):
  File "./manage.py", line 29, in <module>
    execute_manager(settings)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 219, in execute
    self.validate()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 249, in validate
    num_errors = get_validation_errors(s, app)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/validation.py", line 28, in get_validation_errors
    for (app_name, error) in get_app_errors().items():
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 146, in get_app_errors
    self._populate()
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 61, in _populate
    self.load_app(app_name, True)
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 78, in load_app
    models = import_module('.models', app_name)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/usr/local/lib/python2.7/dist-packages/django_compressor-1.4-py2.7.egg/compressor/models.py", line 1, in <module>
    from compressor.conf import CompressorConf  # noqa
  File "/usr/local/lib/python2.7/dist-packages/django_compressor-1.4-py2.7.egg/compressor/conf.py", line 9, in <module>
    class CompressorConf(AppConf):
  File "/usr/local/lib/python2.7/dist-packages/django_appconf-0.6-py2.7.egg/appconf/base.py", line 72, in __new__
    new_class._configure()
  File "/usr/local/lib/python2.7/dist-packages/django_appconf-0.6-py2.7.egg/appconf/base.py", line 101, in _configure
    value = callback(value)
  File "/usr/local/lib/python2.7/dist-packages/django_compressor-1.4-py2.7.egg/compressor/conf.py", line 112, in configure_template_filter_context
    value = {'STATIC_URL': settings.STATIC_URL}
  File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 277, in __getattr__
    return getattr(self._wrapped, name)
AttributeError: 'Settings' object has no attribute 'STATIC_URL'
root@debianhome/tmp/djang0byte# 

Я так понимаю что нехватает каких то настроек только не понятно каких. На старый сервер где сейчас висит сайт - есть root доступ но хотелось бы понимать с какой стороны к чему тут подходить.

Офлайн

#2 Дек. 29, 2014 21:52:19

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Перенос проекта на питоне

Пропишите в settings.py STATIC_URL
http://stackoverflow.com/questions/6261823/static-url-not-working

Офлайн

#3 Дек. 31, 2014 16:29:08

dimitrez
Зарегистрирован: 2014-12-29
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Перенос проекта на питоне

Спасибоза рекомендацию, помогло частично.
Прописал STATIC_URL, следом за ним выругалось на STATIC_ROOT - то же поправил. Далее идет куча ошибок которые решаются доустановкой моделей для джанго или питона. Сейас опять запнулся на ошибка. Буду признателен если направите:

root@debian:/var/djang0byte/djang0byte# ./run.sh start
Traceback (most recent call last):
  File "./manage.py", line 29, in <module>
    execute_manager(settings)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 219, in execute
    self.validate()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 249, in validate
    num_errors = get_validation_errors(s, app)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/validation.py", line 28, in get_validation_errors
    for (app_name, error) in get_app_errors().items():
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 146, in get_app_errors
    self._populate()
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 64, in _populate
    self.load_app(app_name)
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 78, in load_app
    models = import_module('.models', app_name)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/usr/local/lib/python2.7/dist-packages/tagging/models.py", line 6, in <module>
    from django.utils.encoding import smart_text
ImportError: cannot import name smart_text
root@debianvar/djang0byte/djang0byte#

Офлайн

#4 Дек. 31, 2014 17:05:57

MiK
Зарегистрирован: 2014-10-30
Сообщения: 191
Репутация: +  -1  -
Профиль   Отправить e-mail  

Перенос проекта на питоне

Всё настраивать нужно примерно по такому алгоритму:

1) Поставить питон, установить виртуальное окружение, установить в виртуальное окружение нужный сервер(гуникорн или подобное), установить в виртуальное окружение нужную версию джанго - желательно это делать с сохранением названия путей из предыдущей версии.

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

а) После этого, тупо скопировать проект на новый сервер. Если пути не сохранились или изменились какие-то библиотеки, нужно настроить джанговский файл settings.py
б) Активировав виртуальное окружение, создать новый проект Джанго, создать новое приложение джанго, заменить новое приложение старым, указать это приложение в settings.py, подключить базу данных, настроить отдачу статических файлов и запустить.

Поправьте, если я где-то ошибся.

Офлайн

#5 Дек. 31, 2014 17:45:41

dimitrez
Зарегистрирован: 2014-12-29
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Перенос проекта на питоне

Сложно сказать правильно ли Вы советуете или нет. На старом сервере насколько я успел разобораться не используется виртуальное окружение. Есть ВПС на линуксе, в нем установлены модули и все работает. На новом сервере пути сохранил, разница толко в версии питона на старом 2.6 на новом 2.7 но это вроде как не принципиально.
Тут сейчас как по мне вся сложность разобраться какие модули нужны в системе для питона и какие модули питона и джанго нужно для корректного запуска проекта на джанго.

Офлайн

#6 Дек. 31, 2014 18:51:47

MiK
Зарегистрирован: 2014-10-30
Сообщения: 191
Репутация: +  -1  -
Профиль   Отправить e-mail  

Перенос проекта на питоне

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

Осложнений с переносом никогда не было, вроде всё так удобно сделано… Скопировал, добавил название в настройку подключил базу, и все дела.

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

Отредактировано MiK (Дек. 31, 2014 18:52:34)

Офлайн

#7 Дек. 31, 2014 19:11:50

dimitrez
Зарегистрирован: 2014-12-29
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Перенос проекта на питоне

Да вот вроде как запустился джанго, добил таки основные момены, сейчас прикручиваю его к nginx. Последняя ошибка была связана таки с версией - обновил с версии 123 до 1.4.16, доставил еще пару модулей на которые ругалось и запусил. Сейчас разбираюсь дальше как его прикрутить. Странно что на старом сервере джанго 123 а тут пришлось обновлять, вероятно какой то из модулей стал более новый чем на старом сервере. Ну и как по мне такие сильные привязки к версии фреймворка это капец при переносе кода, хотя все в опыте и документировании проекта (мне дали без докуентации)
Переносил до этого часто на пхп проекты, там уже знаю что да как, да и сам на пхп писал когда надо было. Ну теперь надеюсь что все запустится и можно скзаать немного прокачал скилл по питону, за одно можно будет подучить

Офлайн

#8 Янв. 1, 2015 11:32:50

dimitrez
Зарегистрирован: 2014-12-29
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Перенос проекта на питоне

Шел хрен знает какой день переезда, джанга завелась, модули поставвились, к nginx был прикручен python как cgi через порт 8881, обращении через броузер к домену в логи вывалило вот такое:

2015/01/01 04:10:25 [error] 11820#0: *1 FastCGI sent in stderr: "Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/flup/server/fcgi_base.py", line 558, in run
    protocolStatus, appStatus = self.server.handler(self)
  File "/usr/local/lib/python2.7/dist-packages/flup/server/fcgi_base.py", line 1118, in handler
    result = self.application(environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 241, in __call__
    response = self.get_response(request)
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 177, in get_response
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 222, in handle_uncaught_exception
    if resolver.urlconf_module is None:
  File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py", line 342, in urlconf_module
    self._urlconf_module = import_module(self.urlconf_name)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/home/tmp/djang0byte/urls.py", line 31, in <module>
    (r'^accounts/', include('register.urls')),
  File "/usr/local/lib/python2.7/dist-packages/django/conf/urls/__init__.py", line 24, in include
    urlconf_module = import_module(urlconf_module)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
File "/home/tmp/djang0byte/urls.py", line 31, in <module>
    (r'^accounts/', include('register.urls')),
  File "/usr/local/lib/python2.7/dist-packages/django/conf/urls/__init__.py", line 24, in include
    urlconf_module = import_module(urlconf_module)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/home/tmp/djang0byte/register/urls.py", line 3, in <module>
    from registration.views import register as int_register
ImportError: cannot import name register" while reading response header from upstream, client: 127.0.0.1, server: weeelinux.ru, request:
"GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:8881", host: "weeelinux.ru"

судя по посленим строкам:
 File "/home/tmp/djang0byte/register/urls.py", line 3, in <module>
    from registration.views import register as int_register
ImportError: cannot import name register" while reading response header from upstream, client: 127.0.0.1, server: weeelinux.ru, request:
"GET / HTTP/1.1", upstream: "fastcgi/127.0.0.1:8881", host: "weeelinux.ru"

Не удается импортировать метод “register”, я так понимаю опять ему чего то не хватает, вопрос чего. Если до этого при старте manage.py вываливало ошибки - то сейчас ума не приложу чего надо. Модуль django-registration установлен и подключен:
root@debian:/etc/nginx/conf.d# pip freeze|grep django-registration
django-registration==1.0

Может у кого какие мысли будут - буду премного благодарен.

Офлайн

#9 Янв. 1, 2015 11:49:49

dimitrez
Зарегистрирован: 2014-12-29
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Перенос проекта на питоне

Блин, всему виной версии модулей… нужно ставить не просто так, а еще и нужные версии :'( это какой то звиздец….

Офлайн

#10 Янв. 1, 2015 16:00:42

MiK
Зарегистрирован: 2014-10-30
Сообщения: 191
Репутация: +  -1  -
Профиль   Отправить e-mail  

Перенос проекта на питоне

Та не, так быть не должно. У тебя на тестовом сервере всё нормально работает?
$ python manage.py runserver

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version