uwsgi+Django 배치 전후단 웹 프로젝트 분리하지 않음

4221 단어 djangouwsgi웹 배포
전면 및 후면 무분리 배포 방식:
정적 파일 서버 없이 정적 파일을 따로 제공합니다. 백엔드 인터페이스 서버만 설정된 루트를 통해 정적 파일에 접근합니다.
개발 단계:django가 제공하는 개발 웹 서버.python manage.py runserverip: 포트 배치: uwsgi-> wsgi 프로토콜 웹 서버를 따릅니다.
Django 프로젝트에서 템플릿 상속에 적용하면 앞뒤 분리 모드로 상속 모드를 배치하면 계속 사용할 수 없습니다
디렉토리 구조
├── demo │ ├── db.sqlite3 │ ├── demo │ │ ├── init.py │ │ ├── pycache │ │ ├── settings.py │ │ ├── urls.py │ │ └── wsgi.py │ ├── ftest │ │ ├── admin.py │ │ ├── apps.py │ │ ├── init.py │ │ ├── migrations │ │ ├── models.py │ │ ├── pycache │ │ ├── tests.py │ │ ├── urls.py │ │ └── views.py │ ├── manage.py │ ├── uwsgi.ini │ ├── uwsgi.log │ └── uwsgi.pid └── front ├── children.html ├── css │ └── children.css ├── ftest.html ├── js │ ├── children.js │ └── jQuery2.0.js └── static ├── admin ├── css └── js
1. uwsgi 설치pip install uwsgi
2. 프로젝트 디렉터리/demo에서 uwsgi 프로필 uwsgi를 만듭니다.ini
[uwsgi]
#  nginx     ,Django         
;socket=127.0.0.1:8001
#   web     ,Django         
http=127.0.0.1:8001
#    (manage.py    )
chdir=/home/python/Desktop/django/demo
#     /       ,    uWSGI
touch-reload = DJANGO_DIR
#   wsgi.py     ,       (     chdir     )
wsgi-file=demo/wsgi.py
#    
processes=4
#    
threads=2
# uwsgi      
master=True
#          
pidfile=uwsgi.pid
#     ,  uwsgi           ,     。     runserver      (     uwsgi.ini     )
daemonize=uwsgi.log
#          
virtualenv=/home/python/.virtualenvs/ETL

3. django 프로필 수정
# debug        False
DEBUG = False

# Django  django.contrib.staticfiles       ,    django.contrib.staticfiles     INSTALLED_APPS。
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',  #    
    'ftest.apps.FtestConfig',
]

#         
STATIC_URL = '/static/'  #     WEB   static URL  

#              
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'front/static')  #       ,             ,                    。 collectstatic       STATICFILES_DIRS              ,                        。

#                      , front/css, front/js
STATICFILES_DIRS = (
    ('css',os.path.join(os.path.dirname(STATIC_ROOT),'css').replace('\\','/') ),
    ('css',os.path.join(os.path.dirname(STATIC_ROOT),'js').replace('\\','/') ),
)

#                         ,        

4. 라우팅 데모/urls를 추가합니다.py
urls.py 파일 내용은 다음과 같습니다.
from django.views import static
from demo import settings  
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^ftest/', include('ftest.urls')),
    url(r'^static/(?P.*)$', static.serve, {'document_root': settings.STATIC_ROOT}, name='static'),  #   
]

존재할 수 있는 버그: from demo import settings 때, 처음에from demo로 쓰기demo import settings(BASE DIR에서 쓰기 시작), 오류 메시지가 실행되고 demo를 찾을 수 없습니다.demo, from demo import settings로 변경한 후 settings 단어에 빨간색 줄 긋기 프롬프트가 표시되므로 가장 바깥쪽 demo 파일을 Sources Root(pyCharm에서 작업)으로 설정하여 자원 파일을 설정할 수 없음
5. 템플릿 파일.html에서 css/js 경로 수정 인용
액세스 경로http://127.0.0.1:8001/ftest/ch/
#           ,            front/css, front/js   



#          


'''
  /static   static   
href="/static/css/children.css"   url:http://127.0.0.1:8001/static/css/children.css   
href="static/css/children.css"   url:http://127.0.0.1:8001/ftest/ch/static/css/children.css                
'''

6. 정적 파일 수집
django는 생산 환경에서 정적 파일을 직접 대외적으로 제공하지 않지만, 예를 들어admin,restfranework의 css, js 및 기타 등이기 때문에 정적 파일 수집 명령을 실행하여 수집python manage.py collectstatic7.uwsgi 서버 사용 및 정지
#   
uwsgi --ini uwsgi.ini
(      )
#        
uwsgi.log      
uwsgi.pid     
#       
tail -f uwsgi.log 
(          )
#   
uwsgi --stop uwsgi.pid
(uwsgi.pid    )

좋은 웹페이지 즐겨찾기