Django Nginx Gunicorn Centos 7 환경 배치, 프로젝트 출시

5201 단어 백 엔 드 개발
서문: 많은 사람들 이 이런 문제 에 부 딪 혔 다 고 믿 습 니 다. 자신의 django 프로젝트 를 완성 한 후에 리 눅 스에 배치 하려 고 합 니 다. 많은 번 거 로 움 을 겪 었 습 니 다. 인터넷 의 튜 토리 얼 은 대부분 python 2 의 django 프로젝트 를 사용 합 니 다. python 3 에 사용 하면 많은 bug 가 발생 합 니 다.이 튜 토리 얼 은 python 3 Django 1.11 프로젝트 가 출시 되 는 상세 한 과정 을 상세 하 게 설명 합 니 다.
가상 환경 만 들 기
# cd /home/
# mkdir djangoproject
# cd ./djangoproject/
# python -m venv djangoprojectenv


그 중에서 python - m venv xxx 는 python 3 자체 가 가지 고 있 는 xxx 가상 환경 을 만 드 는 방식 입 니 다. 여기 서 저 는 djangoprocject env 가상 환경 을 만 들 었 습 니 다.
가상 환경 에 진입 하 다
# source djangoprojectenv/bin/activate


가상 환경 에 들 어 갔 음 을 발견 할 수 있 습 니 다. 명령 줄 앞 에 (djangoprocject env) 표지 가 있 습 니 다. 예 를 들 어:
# (djangoprojectenv) [root@iz2zeb45dolegxb5nfuexez djangoproject]# 


설치 도 구 는 pip 를 사용 할 때 두 판 원 을 사용 하 는 것 을 추천 합 니 다. 설치 속도 가 빠 릅 니 다. 예 를 들 어:
# pip install -i https://pypi.douban.com/simple django

제 가 사용 하 는 것 은 아 리 클 라 우 드 서버 이기 때문에 pip 로 응용 프로그램 을 설치 할 때 자동 으로 가속 화 되 기 때문에 기본 적 인 방식 을 사용 합 니 다. 여러분 이 다운로드 속도 가 느리다 고 생각 되면 두 판 원 을 사용 할 수 있 습 니 다.
# pip install django
# yum install mysql-devel 
# pip install mysqlclient
# pip install gunicorn

django 프로젝트 만 들 기
# django-admin.py startproject djangoproject .
# ls

디 렉 터 리 구 조 를 볼 수 있 습 니 다.
# djangoproject  djangoprojectenv  manage.py


메모: djangoproject 를 만 듭 니 다. 뒤에 있 는... 절대 없 애 지 마 세 요.
항목 의 settings 수정
# vim djangoproject/settings.py 


settings. py 의 데이터베이스 매개 변 수 를 수정 합 니 다.
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'djangoproject',
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"
        }
    }
}


데이터베이스 이름, 계 정, 비밀번호 수정 에 주의 하 세 요.
settings. py 에 정적 파일 경로 파 라미 터 를 추가 합 니 다
STATIC_ROOT = os.path.join(BASE_DIR, "static/")

settings. py 에서 ip 권한 을 수정 하여 모든 ip 접근 을 허용 합 니 다.
ALLOWED_HOSTS = ["*"]

그리고 파일 을 저장 하고 esc: wq 를 누 르 십시오.
데이터베이스 에 데이터 시트 생 성
# ./manage.py makemigrations
# ./manage.py migrate

슈퍼 유저 만 들 기
# ./manage.py createsuperuser

정적 파일 수집
# ./manage.py collectstatic

이 단 계 는 매우 중요 합 니 다. 그렇지 않 으 면 페이지 가 Django 프로젝트 를 함부로 열 수 있 습 니 다.
# ./manage.py runserver 0.0.0.0:8000

브 라 우 저 에서 서버 를 방문 하여 ip 와 port 를 입력 할 수 있 습 니 다. 형식 은 다음 과 같 습 니 다.
http://server_domain_or_IP:8000

데이터베이스 에 도 접근 할 수 있 습 니 다.
http://server_domain_or_IP:8000/admin

자신 이 설정 한 슈퍼 유저 에 로그 인하 여 데이터 베 이 스 를 봅 니 다.
Gunicorn 이 프로젝트 서 비 스 를 시작 할 수 있 는 지 테스트 합 니 다.
# gunicorn --bind 0.0.0.0:8000 djangoproject.wsgi:application


IP 주 소 를 방문 하여 브 라 우 저가 정상적으로 내용 을 볼 수 있 는 지 확인 합 니 다 (이 때 가상 환경 을 종료 하지 않 았 음). 테스트 를 마 친 후 CTRL - C 를 누 르 면 Gunicorn 실행 을 중지 합 니 다.
가상 환경 종료
# deactivate

Gunicon Systemd Service 파일 만 들 기
# vim /etc/systemd/system/gunicorn.service

수정 내용 은 다음 과 같 습 니 다.
[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=root
Group=nginx
WorkingDirectory=/home/djangoproject
ExecStart=/home/djangoproject/djangoprojectenv/bin/gunicorn --workers 3 --bind unix:/home/djangoproject/djangoproject.sock djangoproject.wsgi:application

[Install]
WantedBy=multi-user.target


반드시 자신의 프로젝트 경로 와 가상 환경 경 로 를 사용 해 야 합 니 다. WorkingDirectory 와 ExecStart 는 자신의 경로 로 수정 해 야 합 니 다.
Gunicorn 서 비 스 를 시작 하고 자동 으로 켜 기
# systemctl start gunicorn
# systemctl enable gunicorn

Gunicorn 을 통한 nginx 에이전트 설정
# vim /etc/nginx/nginx.conf

추가 내용 은 다음 과 같 습 니 다.
server {
 	listen       80;
	server_name  server_domain_or_IP;

        location = /favicon.ico { access_log off; log_not_found off; }
        location /static/ {
        root /home/djangoproject;
        }

        location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://unix:/home/djangoproject/djangoproject.sock;
        }

	}

자신의 IP 주소 나 도 메 인 이름 을 수정 하고 파일 경로 serverdomain_or_IP 는 IP 주소 나 도 메 인 이름 을 대표 합 니 다.
nginx 권한 수정
# usermod -a -G root nginx
# chmod 710 /home/
# nginx -t

만약 잘못 보고 하지 않 았 다 면 다음 조작 을 할 수 있 었 을 것 이다.
nginx 서 비 스 를 시작 하고 자동 으로 시작 합 니 다.
# systemctl start nginx
# systemctl enable nginx

이제 ip 에 접근 할 수 있 습 니 다.
주의: 본문 은 루트 사용자 가 로그 인 한 것 입 니 다.

좋은 웹페이지 즐겨찾기