Drag & Drop
에 프론트 파일 넣기Drag & Drop
을 통해 변경된 파일을 올리면 된다.cloud9
을 활용해 배포를 진행하도록 하겠다. cost-saving setting
을 하루로 변경해주었다. 해당 세팅이 되어 있지 않으면 과금이 될 수도 있다.보안그룹
으로 이동해 인바운드 규칙을 수정해준다.pyenv
를 클론하도록 하겠다. 또한 아래의 명령어들을 전부 입력해주면 된다. $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ sed -Ei -e '/^([^#]|$)/ {a \
export PYENV_ROOT="$HOME/.pyenv"
a \
export PATH="$PYENV_ROOT/bin:$PATH"
a \
' -e ':a' -e '$!{n;ba};}' ~/.profile
echo 'eval "$(pyenv init --path)"' >>~/.profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
터미널을 한 번 꺼주고
아래의 명령어를 입력해준다. $ pyenv -v
# 출력 확인 => pyenv 2.3.2-1-g207f33fc
10. 내가 백앤드를 만들 때 사용했던 버전의 python을 깔아준다.
$ pyenv install 3.9.10
11. python의 버전을 확인하고, 우리의 버전으로 변경해주는 작업을 진행한다.
$ python -v
$ python global 3.9.10
$ python -v
$ cd ~ <<<< 홈으로 이동
$ git clone https://github.com/nikevapormax/turtle_drf_backend.git
$ ssh-keygen -t rsa -C "wjdeorms27@naver.com"
14. 저장된 ssh키를 불러와 깃헙에 세팅해준다.
$ cat /home/ubuntu/.ssh/id_rsa.pub
>>>> 저장된 경로는 위의 사진에서 볼 수 있다!
settings -> SSH and GPG keys -> New SSH key -> 이름 설정 및 키 복붙
SSH
메뉴에 있는 주소를 복사해서 클론을 진행해야 된다.우클릭 - 삭제
로 지울 수 있고, rm -rf {폴더명}
을 입력해 지울 수도 있다.$ ls
$ cd turtle_drf_backend
$ python -m venv venv
$ source venv/bin/activate
$ pip install -r requirements.txt
$ python manage.py loaddata {파일명}
staticfiles
가 생겨야 한다.$ python manage.py collectstatic
$ pip install gunicorn
$ gunicorn --bind 0.0.0.0:8000 turtle_drf.wsgi:application
.env
가 문제였다.시크릿키 = 시크릿키
로 세팅해주어야 잘 돌아간다.turtle_drf_backend.wsgi:application
가 되질 않았었다. 해당 부분은 wsgi가 있는 그 폴더의 이름을 입력해주어야 한다.http://3.34.2.245:8000/
를 입력해보면 아래의 창이 나온다. 비록 에러지만 장고에 접근해 있는 것을 볼 수 있다.settings.py
에서 가서 ALLOWED_HOSTS
에 우리의 주소를 넣어주도록 하자. 그리고 서버를 재시작하여 결과를 살펴보자.$ gunicorn --bind 0.0.0.0:8000 turtle_drf.wsgi:application
$ sudo vim /etc/systemd/system/gunicorn.service
i
를 입력해 insert 모드로 변경해 작업하도록 하겠다.[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/{루트폴더}
ExecStart=/home/ubuntu/{루트폴더}/venv/bin/gunicorn \
--workers 3 \
--bind 127.0.0.1:8000 \
{프로젝트폴더}.wsgi:application
[Install]
WantedBy=multi-user.target
esc 키
를 누르고 :
를 입력한 다음, 저장하고 끄겠다는 뜻의 wq
를 입력해준다. q
는 그냥 끄는 것이므로 주의!$ sudo systemctl daemon-reload
$ sudo systemctl start gunicorn
$ sudo systemctl enable gunicorn
$ sudo systemctl status gunicorn <<< 상태 확인
24. 이제 브라우저에서 새로고침을 눌러 결과를 확인해보면 아래와 같이 되지 않는다. 하지만 이게 정상이다. 이제 nginx와 연결해주어야 한다.
$ sudo apt-get update
26. nginx를 설치해준다.
$ sudo apt-get install -y nginx
27. nginx에 대한 설정을 진행해준다.
$ sudo vim /etc/nginx/sites-available/{프로젝트이름}
i
를 눌러 insert창으로 들어간다. 그리고 설정값을 넣어주면 된다. esc 키
를 누르고 :
를 입력한다. 그리고 wq
를 입력한 뒤 엔터를 치면 된다.server {
listen 80;
server_name {나의 서버주소(3.34.2.245)};
location /static {
root /home/ubuntu/{프로젝트 폴더이름}/;
}
location /media {
root /home/ubuntu/{프로젝트 폴더이름}/;
}
location / {
include proxy_params;
proxy_pass http://0:8000;
}
}
$ sudo ln -s /etc/nginx/sites-available/turtle_drf_backend /etc/nginx/sites-enabled/
$ sudo systemctl restart nginx
$ sudo systemctl status nginx.service
현재 나는 아래의 에러가 나고 있다.
그래서 2 가지의 해결책을 사용해 보았다.
아파치 서버 죽이기(포트를 사용중일 수 있음)
$ sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill
nginx 문법 검사
$ sudo nginx -t
일단 해당 부분은 넘어가도록 하며, 아까 낮에 하다가 끊기고 밤에 다시 해서 그런 것일수도 있을 거같다.
백앤드는 http
이고 프론트앤드는 https
이다.CORS_ALLOWED_ORIGINS
에 우리의 프론트 주소를 넣어주어야 한다.http와 https
의 차이이다.