GCP + Nginx + Django 배포
Section 1. GCP 및 Django 설정
1. GCP 및 Django 환경 구축
- Django 배포 설정 참조 (Setting.py Host 및 Static 부분)
- GCP 환경 구축 참조 (uwsgi 설치까지만 동일하게 수행)
① 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가 존재하기 때문에 권한에 예민해서 접근할 수가 없음
Author And Source
이 문제에 관하여(GCP + Nginx + Django 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@codren/GCP-Nginx-Django-배포저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)