jm_p_op
aws Django 서버 배포하기 -2(서버에서 http포트로 Django 실행하기) 본문
1.인스턴스 열기
1-1.EC2인터페이스
1-2.CMD에서 연결하기
2.기본 베이스
- 명령어는 리눅스를 사용한다.
- python3 버전은 3.10.6이다.(버전에 의한 충돌 생각하기)
- tab키는 신이다!
- ls으로 디렉토리 보기 (ls -al 자세히보기)
- cd 로 열기
- vim으로 보기,생성,수정 가능
- rm -rf 삭제
- sudo 강제로 하기(시스템 디렉토리 같은경우)
- ~ 홈 (/home/ubuntu/ 와 동일)
- /etc/ 서버프로그램
- Ctrl + C 취소 ("exit()", ":q" , "esc" 등등 사용 프로그램마다 종료방법이 다르다)
3. 서버 세팅
sudo apt update #서버 최신화 확인
sudo apt upgrade #서버 업그레이드
#진행중 y/n에서 y눌르기
#엔터키
#방향키로 user쪽에 맞춘후 엔터
sudo apt install python3-pip python3-dev python3-venv #사용할 파이썬기능 다운로드
#위와 똑같이 하기(보라창)
4.프로젝트 다운받기
git clone 주소
#git clone https://github.com/jmpop97/pet_care.git
5.루트폴더(manage.py를 가지고 있는 폴더)에서 프로젝트 하듯이 venv 설치 ,실행, requirements.txt 설치, 시크릿키 생성
- venv 설치 실행
python3 -m venv venv #venv설치
source venv/bin/activate #venv실행
pip install -r requirement #필요 인스톨하기
vim my_settings.py #시크릿키
vim pet_care/settings.py #setting.py 열기
- 연결 포트열기
- settings.py에 allowed_host=['서버의 주소']추가
python3 manage makemigration #DB설정
python3 manage migrate #DB만들기
python manage runserver 0:8000 #8000포트로 서버 열기
- http://서버의 주소:8000
- 8000포트로 연결되었는지 서버에서 확인
- 안되었다면 security그룹에서 8000포트 확인, setting.py 확인하기
- 작업하는 창(cmd혹은 ec2 터미널창)을 닫을시 꺼진다.
6.Gunicorn (서버에서 계속 실행)
#venv에서 할것
pip install gunicorn #구니콘 인스톨
sudo vim /etc/systemd/system/gunicorn.service #gunicorn실행 앱 설정
gunicorn.service
#필자는 프로젝트 이름이 pet_care이다.(settings.py 있는 폴더 이름, 혹은 startproject의 이름)
WorkingDirectory
- #가상환경의 activate와 같은 위치에 있는 gunicorn까지의 위치
ExecStart
- #manage.py와 같은 위치에 있는 {프로젝트 이름}.sock
- #{프로젝트 이름}.wsgi:application
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/pet_care
ExecStart=/home/ubuntu/pet_care/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/ubuntu/pet_care/pet_care.sock pet_care.wsgi:application
[Install]
WantedBy=multi-user.target
구니콘 설정,실행,상태
// 인스턴스 시작시 자동시작
sudo systemctl enable gunicorn
// 지금 시작
sudo systemctl start gunicorn
// 상태
sudo systemctl status gunicorn
정상상태:
에러상태: 주소문제 혹은 주소에 해당파일이 없는경우 에러
7.Nginx (url경로 처리)
sudo apt install nginx #nginx설치
#뭔가 뜰시 맨첫번째것으로 엔터
sudo vim /etc/nginx/sites-available/{프로젝트명} #서버 설정, 원하는 이름으로 만들어도 된다.
{프로젝트명}
server {
listen 80;
server_name 13.125.219.16;
location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/pet_care/pet_care.sock;
}
location /static {
root /home/ubuntu/pet_care/;
}
location /media {
root /home/ubuntu/pet_care/;
}
}
listen
- 받는 포트번호
server_name
- 서버 접속하는 ip주소
location /
- preoxy_pass {프로젝트 이름.sock까지의 경로}
- 해당 파일 링크들
nginx 설정,실행,상태
#enabled에 방금 만든것을 바로가기 만들기
sudo ln -s /etc/nginx/sites-available/pet_care /etc/nginx/sites-enabled/
#코드 테스트하기
sudo nginx -t
#아래 2가지 뜨면 성공, 에러시 바로가기와 설정을 확인하기
#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 #상태보기
running 확인하기
권한 설정하기
chmod 755 ~/{nginx설정파일명}/
#위의 예시 chmod 755 ~/pet_care/
chmod 755 ~
8. 위와 같이하면 http:// 에서 8000포트 없이 서버가 항시 돌아간다.
admin 깨진것을 추가적으로 정돈해보자
python manage.py collectstatic
python manage.py migrate
#슈퍼유저 만들어서 로그인하기
python manage.py createsuperuser
'서버 > aws' 카테고리의 다른 글
LoadBalancer - Security Groups (0) | 2023.06.02 |
---|---|
aws Django 서버 배포하기 -4 admin csrf 토큰 넣기 (0) | 2023.06.02 |
aws Django 서버 배포하기 -3(http=>https 업그레이드 (0) | 2023.05.28 |
SSH에서 서버 연결 (0) | 2023.05.19 |
aws Django 서버 배포하기 -1(서버 설정) (0) | 2023.05.19 |