2016-06-21 2 views
1

Я пытаюсь развернуть свое приложение django на субдомене, скажем, example.djangoapp.com, все работает отлично, за исключением моего сайта администратора django, когда я нажимаю ссылку, которая идет на админ-сайт, он перенаправляет другой URL-адрес. Это происходит, когда я использую тег шаблона url admin, т. Е. Он перенаправляется на djangoapp.com/index вместо example.djangoapp.index.fcgi/login (который является сайтом администратора).Django не служит для администрирования статических файлов с помощью fastcgi

После удаления тега шаблона шаблона admin я устанавливаю абсолютный URL-адрес для перенаправления на сайт администратора, эта работа прекрасна, и появляется сайт администратора, но его статические файлы не подаются. Так что я стоп между ними.

Я развертывание на сервере, который работает FastCGI на хостинг

Моих вопросов:

1) Вариант 1 (с помощью администратора шаблона URL тега):

Как я получить Джанго перенаправлять меня на правильный сайт администратора (www.example.djangoapp.index.fcgi/login) вместо перенаправления меня на (www.djangoapp.com/index).

2) При использовании абсолютного URL: Теперь я жестко закодировал ссылку администратора на моей домашней странице индекса шаблона, это прекрасно работает, но статические файлы admin django не обслуживаются. Как их можно обслуживать?

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

Ниже приведены мои settings.py, urls.py и index.html (где я жестко закодировал URL-адрес админ-сайта). Этот код является встроенным с опцией 2 выше, которая имеет URL-адрес жесткого кода администратора.

settings.py

WSGI_APPLICATION = 'cconnect_web.wsgi.application' 


# Database 
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases 


DATABASES = { 

'default': { 
    'ENGINE': 'django.db.backends.mysql', 
    'NAME': '', 
    'USER': '', 
    'PASSWORD': '', 
    'HOST': '', 
    'PORT': '', 
    'CONN_MAX_AGE': 3600, 
} 
} 




# Internationalization 
# https://docs.djangoproject.com/en/1.8/topics/i18n/ 

LANGUAGE_CODE = 'en-us' 

TIME_ZONE = 'Africa/Cairo' 

USE_I18N = True 

USE_L10N = True 

USE_TZ = True 


# Static files (CSS, JavaScript, Images) 
# https://docs.djangoproject.com/en/1.8/howto/static-files/ 
STATIC_URL = '/cconnect/static/' 
STATIC_ROOT = '/home4/techaven/public_html/cconnect/static' 
FORCE_SCRIPT_NAME="/index.fcgi/" 

Urls.py

from django.conf.urls import * 
from django.conf.urls import include, url 
from django.contrib import admin 
from cconnect_frontEnd import views 
from . import settings 
#app_name = 'cconnect_frontEnd 

urlpatterns = [ 
url(r'^$', views.index, name ='index'), 
url(r'^backend/', include('Back_End.urls')), 
url(r'^admin/', include(admin.site.urls)), 
url(r'^static/(?P<path>.*)$', 'django.views.static.serve',    {'document_root':settings.STATIC_ROOT}), 
] 

urlpatterns += patterns('Back_End.views', 
(r'^login/$', 'login_view'), 
) 

admin.site.site_header = 'Cconnect Administration.' 

index.html

<body> 

<div class="header-wrapper"> 

<nav> 
<div class=nav-wrapper"> 
    {% load staticfiles %} 
    <img src="{% static "cconnect_frontEnd/images/slide/logo.png" %}" alt="Conference Connect"/> 
    <ul class="right hide-on-med-and-down"> 
    {% load admin_urls %} 
     <li><a href="http://cconnect.techavenue137.rw/index.fcgi/admin">Sign In</a></li> 
     <li><a href="#feature-title">Features</a></li> 
     <li><a href="#demo-video">Videos</a></li> 
    </ul> 

index.fcgi

import os 
import sys 

from flup.server.fcgi import WSGIServer 
from django.core.wsgi import get_wsgi_application 

sys.path.insert(0, "/home4/techaven/public_html/cconnect/cconnect_web/") 
os.chdir("/home4/techaven/public_html/cconnect/cconnect_web") 
os.environ['DJANGO_SETTINGS_MODULE'] = "cconnect_web.settings" 

WSGIServer(get_wsgi_application()).run() 

.htaccess

AddHandler fcgid-script .fcgi 
DirectoryIndex index.fcgi 

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^cconnect\.techavenue137\.rw$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.cconnect\.techavenue137\.rw$ 
RewriteRule ^/?$ "http\:\/\/www\.techavenue137\.rw\/cconnect\/index\.fcgi" [R=301,L] 

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /cconnect/ 
RewriteRule ^index\.fcgi$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
#RewriteCond %{REQUEST_URI} !^/static/ 
RewriteRule ^(.*)$ /cconnect/index.fcgi/$1 [L] 
</IfModule> 

Спасибо за вашу помощь и еще раз простите мои глупые вопросы.

+0

Ваши вопросы не глупы. Во-первых, я предполагаю, что вы собрали статические файлы ('python manage.py collectstatic'). Во-вторых, ваш веб-сервер настроен на обслуживание файлов? (например, Nginx должен иметь «location/cconect/static /», а «alias» - ваш статический корень). Что произойдет, если вы попробуете его с помощью dev-сервера? ('python manage.py runningerver') Если он не отображается, проверьте сообщение об ошибке. –

+0

спасибо keenan, да, мой сервер настроен на обслуживание статических файлов, на dev-сервере все работает отлично, обслуживаются сайты-администраторы. на производственном сервере обслуживаются только другие статические файлы, а статические файлы административного сайта не обслуживаются. Я думаю, что ошибка в маршрутизации URL. И я не знаю, как это сделать. – Arnold

+0

А, ладно. Да, проблема связана с маршрутизацией URL. Что такое код ошибки при проверке отсутствующих элементов? Это 404, 403, 500? Кроме того, можете ли вы опубликовать конфигурацию своего веб-сервера для приложения? –

ответ

1

Вам нужно будет добавить правило перезаписи, чтобы перенаправить запрос браузера на фактические статические файлы для страницы администратора. Ниже последнее правило перезаписи, добавьте следующие строки:

RewriteCond "%{REQUEST_URI}" ".*/static/admin/.*" 
RewriteRule "(.*)/cconect/(.*)" "$1/index.fcgi/$2" [R, L] 

Здесь условие переписывает говорит, что если запрашиваемый URI содержит /static/admin затем заменить cconnect с index.fcgi и держать все остальное то же самое. Пометить его как перенаправление [R] и обработать правило остановки, если найдено [L]. Надеюсь, это решит вашу проблему.

Отказ от ответственности: Я не очень разбираюсь в шаблонах регулярных выражений, и у меня есть базовое понимание Apache, поэтому это решение, возможно, потребуется изменить.Посмотрите here, если вам нужно его отрегулировать.

+0

Эй, Кинан, спасибо за поддержку, но, похоже, не работает, ничего не меняется. по-прежнему действует по-прежнему – Arnold

+0

Эй Арнольд. Извините, я не мог помочь вам заставить его работать. У вас все еще такая же ошибка? –

+0

Эй, Кинэн, я все еще сталкиваюсь с такой же ошибкой, похоже, не заменяет соединение с index.fcgi – Arnold

Смежные вопросы