Ubuntu Python3 Django 환경셋팅

denver·2022년 9월 20일
1

Python3 Django

목록 보기
1/2

Python “mysqlclient” 설치 에러 관련(ubuntu20.xx.xx 서버 기준)

# apt 설치 패키지 관련 업데이트
$ sudo apt-get update

# 관련 패키지 설치
$ sudo apt-get install mysql-server
$ sudo apt-get install python3.9-dev libmysqlclient-dev gcc default-libmysqlclient-dev

# Python "mysqlclient" 라이브러리를 설치하기 위해 mysql 관련 파일들만 필요하므로
# Ubuntu 내에 mysql은 중지를 하자(시스템 메모리를 거의 40% 잡아먹음. t3.micro 기준)
$ sudo service mysql stop

Python 가상머신 설치하기

$ sudo apt install python3.9-venv
$ python3.9 -m venv [venv_name]

Python 가상환경 진입 및 패키지 일괄 설치

$ source venv/bin/activate
$(venv) pip3 install -r requirements.txt
// 목록 안에 "mysqlclient" 라이브러리는 따로 설치를 해야 충돌이 안 나는 이슈를 확인함

Gunicorn 프로토콜 통신 설정 관련

$ cd /etc/systemd/system
$ sudo vi gunicorn.service
[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu/WalkDoni_API
ExecStart=/home/ubuntu/WalkDoni_API/venv/bin/gunicorn \
        --workers 4 \
        --bind 0.0.0.0:8000 \
        core_repository.wsgi:application

[Install]
WantedBy=multi-user.target

$ sudo systemctl start gunicorn
$ sudo systemctl enable gunicorn // 서버 재부팅 시, 가동
$ sudo systemctl daemon-reload // gunicorn 파일 변경 시, 데몬 재시작 필요
$ sudo systemctl restart gunicorn // 변경된 gunicorn 재시작

Nginx 프록시 설정 관련

$ sudo apt-get install nginx
$ sudo vi /etc/nginx/sites-available/<프로젝트 이름>
server {
    listen 80;
    server_name <IP주소>; // ex) api.walkdoni.com;

    location / {
        include proxy_params;
        proxy_pass http://<IP주소>:8000;

    }
}
$ sudo ln -s /etc/nginx/sites-available/<프로젝트 이름> /etc/nginx/sites-enabled
$ sudo nginx -t // nginx 설정 확인
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
(위와 같이 나와야 성공)
$ sudo systemctl restart nginx
$ sudo systemctl status nginx.service // nginx 상태 확인

Nginx Log 관련

$ sudo vi /var/log/nginx/access.log
$ sudo vi /var/log/nginx/error.log

Nginx Conf 설정 파일 관련

$ sudo vi /etc/nginx/nginx.conf
* nginx 관련 고유 속성 값들을 컨트롤 하는 부분
profile
Python, AWS, Node, PHP, Git Developer

0개의 댓글