Форум сайта python.su
0
Привет 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#
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#
Офлайн
49
Пропишите в settings.py STATIC_URL
http://stackoverflow.com/questions/6261823/static-url-not-working
Офлайн
0
Спасибоза рекомендацию, помогло частично.
Прописал 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#
Офлайн
-1
Всё настраивать нужно примерно по такому алгоритму:
1) Поставить питон, установить виртуальное окружение, установить в виртуальное окружение нужный сервер(гуникорн или подобное), установить в виртуальное окружение нужную версию джанго - желательно это делать с сохранением названия путей из предыдущей версии.
Дальше, не уверен, но из того, что я знаю про Джанго, можно попробовать два пути:
а) После этого, тупо скопировать проект на новый сервер. Если пути не сохранились или изменились какие-то библиотеки, нужно настроить джанговский файл settings.py
б) Активировав виртуальное окружение, создать новый проект Джанго, создать новое приложение джанго, заменить новое приложение старым, указать это приложение в settings.py, подключить базу данных, настроить отдачу статических файлов и запустить.
Поправьте, если я где-то ошибся.
Офлайн
0
Сложно сказать правильно ли Вы советуете или нет. На старом сервере насколько я успел разобораться не используется виртуальное окружение. Есть ВПС на линуксе, в нем установлены модули и все работает. На новом сервере пути сохранил, разница толко в версии питона на старом 2.6 на новом 2.7 но это вроде как не принципиально.
Тут сейчас как по мне вся сложность разобраться какие модули нужны в системе для питона и какие модули питона и джанго нужно для корректного запуска проекта на джанго.
Офлайн
-1
Виртуальное окружение, конечно, не является обязательным. Но я не сисадмин, в отличии от некоторых
и у меня были проблемы с сервером без него. В любом случае виртуальное окружение поможет не путаться, если экспериментов будет несколько, например, с разными версиями джанго.
И, мне сложно понять где источник ваших проблем.
Осложнений с переносом никогда не было, вроде всё так удобно сделано… Скопировал, добавил название в настройку подключил базу, и все дела.
Может несовместимость версий, не прописаны пути, не подключена база, не хватает питоновских модулей.
Отредактировано MiK (Дек. 31, 2014 18:52:34)
Офлайн
0
Да вот вроде как запустился джанго, добил таки основные момены, сейчас прикручиваю его к nginx. Последняя ошибка была связана таки с версией - обновил с версии 123 до 1.4.16, доставил еще пару модулей на которые ругалось и запусил. Сейчас разбираюсь дальше как его прикрутить. Странно что на старом сервере джанго 123 а тут пришлось обновлять, вероятно какой то из модулей стал более новый чем на старом сервере. Ну и как по мне такие сильные привязки к версии фреймворка это капец при переносе кода, хотя все в опыте и документировании проекта (мне дали без докуентации)
Переносил до этого часто на пхп проекты, там уже знаю что да как, да и сам на пхп писал когда надо было. Ну теперь надеюсь что все запустится и можно скзаать немного прокачал скилл по питону, за одно можно будет подучить 
Офлайн
0
Шел хрен знает какой день переезда, джанга завелась, модули поставвились, к 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"
root@debian:/etc/nginx/conf.d# pip freeze|grep django-registration
django-registration==1.0
Офлайн
0
Блин, всему виной версии модулей… нужно ставить не просто так, а еще и нужные версии :'( это какой то звиздец….
Офлайн
-1
Та не, так быть не должно. У тебя на тестовом сервере всё нормально работает?
$ python manage.py runserver
Офлайн