본문 바로가기

Sparta/Today I Learned

TIL 54) 2022.07.05 (화) | 유화제작 팀 프로젝트 5일차

# TODO

- 카카오톡 공유 확인

- 페이스북 공유 확인

- url 경로 고치기 + 저장된 gif 파일 불러오기

- save image 고치기

 

# TODO :: after 배포

- 배포 후에 복사하는 링크 수정

- 카카오톡 개발자페이지에서 도메인 넣어서 플랫폼 추가해주기

 

프로젝트 마감일이 내일인데, 배포가 아직까지 이뤄지지 않아서 우리팀 배포 담당자와 함께 서로 배포를 해보았다.

배포는 어차피 배포담당자가 하는 걸로 이뤄질거라 백엔드만 배포해보고 끝냈고, 프론트엔드와 백엔드를 연결하는 방법을 팀원 전체가 같이 찾아보기로 했다.

 

배포해보기

인스턴스 만들기

cloud9 에서 create environment

ec2에서 cloud9 으로 만들어진 인스턴스 볼륨 30으로 늘려주기 (해당 인스턴스 중지하고 다시시작해줘야함)

보안설정 인바운드 규칙 편집 80번포트, 8000번 포트 열어주기

cloud9 에서 Open IDE 로 환경설정해주기

 

깃 클론하기

- 클론은 root 폴더에 하기

- 프로젝트 이름 = 깃허브에서 클론해온 폴더 이름 (같게 만들어주기)

ssh-keygen -t rsa -C "{깃 메일주소}"

cat /home/ubuntu/.ssh/id_rsa.pub   # cat {저장경로}/id_rsa.pub

git clone git@github.com:{깃 리포지토리 주소}

클론 후에 폴더이름 변경 후 → venv 만들기

 

python 사용할꺼면 pyenv 깃 클론해서 다운로드 후 pyenv설정

conda 사용할꺼면 conda 다운로드

 

미니콘다 다운로드

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

chmod -R 755 Miniconda3-latest-Linux-x86_64.sh

./Miniconda3-latest-Linux-x86_64.sh

conda create -n {가상환경 이름} python=3.7

conda activate {가상환경 이름}

 

가상환경 안에 패키지 설치

requirements.txt 설치

 

마이그레이션

python manage.py makemigrations

python manage.py migrate

python manage.py loaddate (만약 더미데이터를 넣으려면)

 

만약 마이그레이션이 안되고 아래와 같은 오류가 나면

sudo apt-get install libgl1-mesa-glx 를 해주고 다시 마이그레이션 해준다

 

collectstatic 설정해주기

(곳곳에 있는 static 파일을 한군데에 모아줌)

# 프로젝트폴더/settings.py

STATIC_ROOT = BASE_DIR / 'static'
STATIC_URL = '/static/'

MEDIA_ROOT = BASE_DIR / 'media'
MEDIA_URL = '/media/'

ALLOWED_HOSTS = [
	'{주소 추가}'
]

python manage.py collectstatic - static 폴더 생기는지 확인

 

gunicorn 설정하기

pip install gunicorn
gunicorn --bind 0.0.0.0:8000 {프로젝트폴더이름}.wsgi:application  # 서버실행

setting.py 에 추가하라고 뜨는 주소 부분 복사해서 붙여넣기 해주기

ALLOWED_HOSTS = [
	'{주소추가}'
]

sudo vim /etc/systemd/system/gunicorn.service

# python 가상환경

[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
# 미니콘다 가상환경

which pip  # gunicorn 위치 찾아주기
/home/ubuntu/miniconda3/envs/ok200/bin/gunicorn

sudo systemctl daemon-reload

 

sudo systemctl start gunicorn
sudo systemctl enable gunicorn 
sudo systemctl status gunicorn.service 
sudo systemctl restart gunicorn

 

nginx 설정하기

sudo apt-get update
sudo apt-get install -y nginx

 

sudo vim /etc/nginx/sites-available/ok200

server {
        listen 80;
        server_name {서버주소};

        location /static {
                root /home/ubuntu/{프로젝트 폴더이름}/;
        }

        location /media {
                root /home/ubuntu/{프로젝트 폴더이름}/;
        }

        location / {
                include proxy_params;
                proxy_pass http://0:8000;
        }
}

sudo nginx -t (nginx 문법검사)

sudo ln -s /etc/nginx/sites-available/{프로젝트이름} /etc/nginx/sites-enabled/  (enabled 폴더로 합치기)

sudo systemctl restart nginx
sudo systemctl status nginx.service

 

위와 같은 에러가 나면서 활성화가 안된다면 80번 포트를 쓰고 있을 수도 있으므로 서버 죽이기 해야함

sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill  (80번 포트(아파치 서버) 죽이기)

sudo systemctl restart nginx
systemctl status nginx.service

 

브라우저를 열었을 때 502 bad gateway 가 뜬다면

tail -f /var/log/nginx/error.log (nginx log보기)