GCP + Nginx + Django 배포

Codren·2021년 5월 19일
0

Django 실전

목록 보기
12/12

Section 1. GCP 및 Django 설정

1. GCP 및 Django 환경 구축

    ① GCP 프로젝트 생성
    ② GCP 서버 구성
    ③ GCP 네트워크 설정
    ④ uwsgi 설치



2. GCP Root 계정 진입

  • deactivate 명령어로 가상환경을 벗어난 후 작업
sudo passwd		# root 계정 비밀번호 설정
su - 			# root 계정으로 접근



3. uWSGI 설정


    ① uWSGi Config 디렉토리 생성

mkdir -p /etc/uwsgi/sites

    ② uWSGI 로그 디렉토리 생성

mkdir -p /var/log/uwsgi

    ③ uWSGI Config 파일 생성

vi /etc/uwsgi/sites/django.ini
--------------------------------
[uwsgi]
project = django_practice			# 프로젝트명
username = root
base = /home/codren/django_practice		# 프로젝트 경로
chdir = /home/codren/django_practice		# 프로젝트 경로
home = /home/codren/virtualenv			# 가상환경 경로
virtualenv = /home/codren/virtualenv		# 가상환경 경로
module = django_practice.wsgi:application	# 프로젝트 경로.wsgi
master = true
processes = 5
uid = root
socket = /run/uwsgi/django.sock			# 소켓 경로
chown-socket = root:nginx
chmod-socket = 666
vacuum = true
logto = /var/log/uwsgi/django.log		# 로그 파일 경로


    ④ uWSGI 데몬 서비스 생성 및 등록

vi /etc/systemd/system/uwsgi.service
-----------------------------------
[Unit]
Description=uWSGI service
[Service]
ExecStartPre=/bin/mkdir -p /run/uwsgi
ExecStartPre=/bin/chown root:nginx /run/uwsgi
ExecStart=/home/codren/virtualenv/bin/uwsgi --emperor /etc/uwsgi/sites	# 가상환경 경로 (uwsgi 명령 프로그램)
Restart=always
Type=notify
NotifyAccess=all
[Install]
WantedBy=multi-user.target



4. Nginx 설정


    ① Nginx 설치

yum install -y nginx

    ② Django 사이트용 Nginx Config 파일 생성 및 설정

vi /etc/nginx/conf.d/django.conf
-----------------------------------
server{
        listen 80;
        server_name 34.64.249.76;				# GCP 외부 IP
        location / {
                include uwsgi_params;
                uwsgi_pass unix:/run/uwsgi/django.sock;		# socket 경로
        }
        location /static/ {
             alias /home/codren/django_practice/static/;	# static 파일 경로
        }
}



5. SElinux 설정

  • SElinux - 전체적인 보안성을 향상시키기 위해 머신에 적용하는 보안 정책/모듈의 집합체



6. nginx 및 uwsgi 실행

systemctl start nginx
systemctl start uwsgi



7. 접속 결과 화면

  • 80번 포트로 접속 가능



error


1. 502 Gate error

  • tail -f var/log/nginx/error.log 명령어로 nginx log 확인
  • django.sock (13 : Permission denied)
  • SElinux Permissive 설정하면 접근 가능




2. Static 파일 접근 error

  • tail -30 /var/log/nginx/error.log 명령어로 nginx log 확인
  • /static/bootstrap.min.css (13 : Permission denied)
chmod 755 codren		# home/ 에서 수행
chmod 755 django_practice	# home/codren 에서 수행




3. GCP SSH 접속 error

  • chmod 777 home/codren 수행 시 인스턴스 ssh 접속이 되지 않음
  • user 폴더 내에는 ssh key가 존재하기 때문에 권한에 예민해서 접근할 수가 없음

0개의 댓글