sudo apt update
sudo apt upgrade
sudo apt install python3-pip python3-dev python3-venv
sudo apt-get install libmysqlclient-dev #mysql-client를 사용하는경우
를 먼저 해줍니다 그다음에 서버에 배포할 django파일을 ssh키를 저장하고 git clone을 해서 가지고옵니다
ALLOWED_HOSTS = [
'아이피 또는 도메인',
]
CSRF_TRUSTED_ORIGINS = [
'아이피 또는 도메인',
]
CORS_ALLOWED_ORIGINS = [
'아이피 또는 도메인',
]
DEBUG = False
settings에 위와 같은 코드를 설정해줘서 배포 가능한 도메인 csrf cors 오류가 뜨지않게해줘야합니다
gunicorn 설치
pip install gunicorn
sudo vim /etc/systemd/system/gunicorn.service
를 해준다음에
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/{루트폴더이름}
ExecStart=/home/ubuntu/{루트폴더이름}/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/ubuntu/{루트폴더이름}/{프로젝트이름}.sock {프로젝트이름}.wsgi:application
Environment="DJANGO_SETTINGS_MODULE={프로젝트이름}.settings"
RuntimeDirectory=gunicorn
ForwardedAllowIPS=*
[Install]
WantedBy=multi-user.target
위와같이 설정을 해줍니다
// 인스턴스 시작시 자동시작
sudo systemctl enable gunicorn
// 지금 시작
sudo systemctl start gunicorn
// 상태
sudo systemctl status gunicorn
nginx 설치
sudo apt install nginx
sudo vim /etc/nginx/sites-available/{프로젝트 이름}
로 설치를 하고 파일을
server {
listen 80;
server_name your_domain_or_ip;
location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/{루트폴더이름}/{프로젝트이름}.sock;
proxy_set_header Referer $http_referer;
}
location /static {
root /home/ubuntu/{루트폴더이름}/;
}
location /media {
root /home/ubuntu/{루트폴더이름}/;
}
}
- listen 80;: Nginx가 80번 포트에서 HTTP 요청을 수신합니다.
- server_name your_domain_or_ip;: 실제 도메인 이름이나 IP 주소로 **your_domain_or_ip**을 대체하세요.
- location / 블록은 Django 애플리케이션에 대한 요청을 처리합니다.
- **include proxy_params;**는 필요한 프록시 매개변수를 포함합니다.
- **proxy_pass <http://unix>:/path/to/your/django/project/myproject.sock;**는 요청을 지정된 Unix 소켓이나 TCP 주소로 전달합니다. 여기서 Django 애플리케이션이 실행 중인 위치를 지정하세요.
- location /static 블록은 정적 파일에 대한 요청을 처리합니다.
- **root /home/ubuntu/{루트폴더이름}/;**는 정적 파일이 위치한 루트 디렉토리를 지정합니다. **{루트폴더이름}**을 실제 루트 폴더 이름으로 대체하세요.
- 이러한 location 블록을 구성함으로써 Nginx는 다른 URL 경로에 대한 요청을 처리하고 적절한 내용을 제공합니다. 루트 URL ("/")에 대한 요청은 Django 애플리케이션으로 전달되며, "/static" 및 "/media"에 대한 요청은 지정된 디렉토리에서 제공됩니다.
sudo ln -s /etc/nginx/sites-available/{프로젝트이름} /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl status nginx
namei -nom /home/ubuntu/{루트폴더이름}/{프로젝트이름}.sock
chmod 755 ~/{루트폴더이름}/
chmod 755 ~
chmod 명령은 숫자 모드 또는 기호 모드를 사용하여 권한을 설정합니다.
숫자 모드: 숫자 모드는 퍼미션을 3비트 단위로 표현하며, 각 비트는 읽기(4), 쓰기(2) 및 실행(1) 권한을 나타냅니다. 이러한 권한의 조합으로 3비트 숫자를 생성하여 퍼미션을 설정합니다.
- 사용법: chmod [퍼미션 숫자] [파일 또는 디렉토리]
예를 들어, **chmod 755 filename**은 파일 **filename**에 대해 소유자에게 읽기, 쓰기, 실행 권한(7), 그룹 및 기타 사용자에게 읽기 및 실행 권한(5)을 부여합니다.
python manage.py collectstatic
까지 해주고 db가 migrate가 안이루어져있는상태라면
python manage.py makemigrations
python manage.py migrate
로 설정까지 해주시면됩니다
그리고 서버 파일을 수정하게되면
sudo service gunicorn restart
sudo service nginx restart
로 재시작을 해줘서 서버에 적용을 합시다 춍춍
'내일배움 캠프 > TIL' 카테고리의 다른 글
내가 보고 베끼려고 저장해둔 리눅스 명령어 (1) | 2023.05.31 |
---|---|
인천 주막 KPT 회고 (0) | 2023.05.29 |
javascript 호이스팅 (0) | 2023.05.29 |
회원가입이나 로그인할때 데이터 가져오는방법 개선... (0) | 2023.05.25 |
Django 테스트 코드 작성하기 (1) | 2023.05.24 |