0. vscode로 배포할 깃허브 준비. 수정사항 있으면 git으로 언제든지 push
1. 우선 aws 회원가입하고 인스턴스 만들어야함
- 키 발급하고, 키는 desktop으로 옮김
- 보안 그룹도 잘 생성해야함 (8000포트도 열어주기)
2. 인스턴스 생성하고 터미널로 이동해서 키 관리~
- 키 생성한거 복사
$ /Users/<내컴퓨터사용자이름>/Desktop/
$ ls -al <아까만든키이름>.pem
$ cp <아까만든키이름>.pem ~/
$ cd
$ ls -al <아까만든키이름>.pem
- 권한주기
$ chmod 400 <아까받은키이름>.pem
3. 인스턴스와 연결 (터미널로 접속)
- 인스턴스 연결 누르면 명령어 그대로 복붙하면 됨
$ ssh -i "<아까받은키이름>.pem" <접속할계정이름>@<도메인또는외부IP>
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
$ sudo apt-get update
$ sudo apt-get dist-upgrade
$ sudo apt-get install python3-pip
4 git clone 받기
- git log 이용해서 최근 커밋까지 왔는지 확인
5. 여기는 장고 세팅 전까지 똑같음
$ sudo apt install python3
$ sudo apt install python3.10-venv
$ python3 -m venv venv
$ source venv/bin/activate (가상환경 켜기)
$ pip3 install -r requirements.txt (장고 포함)
$ python3 server/manage.py runserver 또는
$ python3 server/manage.py runserver 0.0.0.0:8000 (인스턴스 8000번 열어놓기)
8000번 열어놓는거는 보안그룹에서 추가해주면됨
그 후 다시 url에 public IPv4 address+:8000해주면 열려야함
(나는 계속 로딩만 뜨고 안열려서 몇시간동안 헤맸지만 보안그룹에 추가를 안해줘서 그런거였,, )
만약 desalloewdHost at이 뜬다면 아래 확인 포트가 열린다면 아마 css는 깨질거임
settings.py
DEBUG = False
ALLOWED_HOSTS = ["*"]
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
STATIC_URL = "/static/"
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
gunicorn 하기 전에 server/config/wsgi.py 확인
import os
import site #추가된거
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
site.addsitedir(os.path.abspath(os.path.join(os.path.dirname(__file__), "../.."))) #추가된거 각 위치경로마다 다름
application = get_wsgi_application()
6.gunicorn
pip install Django gunicorn
- 그 다음에 gunicorn 파일 설정,, 경로 잘 설정하고 잘봐야함,, 아래 명령어 쳐서 들어가기
sudo vim /etc/systemd/system/gunicorn.service
아래에서 1st-test는 gitgub 레포 이름 (루트폴더 이름)
config는 프로젝트 이름 (startproject 할 때 지어준거)
"gunicorn.service"
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/1st-test/server
ExecStart=/home/ubuntu/1st-test/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/ubuntu/1st-test/server/gunicorn.sock config.wsgi:application
[Install]
WantedBy=multi-user.target
이걸 적고 실행시켜보기
sudo systemctl start gunicorn
sudo systemctl enable gunicorn # 자동실행 등록
sudo systemctl status gunicorn # 상태보기
갑자기 캡쳐하려니 warning이 뜨지만 active 잘 뜨면 다음 단계로 넘어가도 된다
warning 이 뜨면 아래 명령어 입력하고 다시 상태보면 warning이 없음
sudo systemctl daemon-reload
7. 드디어 nginx!
sudo apt-get install nginx
sudo vim /etc/nginx/sites-available/config
환경설정을 해줌
"/etc/nginx/sites-available/config"
server {
listen 80;
server_name ####; #내 ip
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/ubuntu/1st-test/server/;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/1st-test/server/gunicorn.sock;
}
}
연결 및 문법검사
$ sudo ln -s /etc/nginx/sites-available/<만든파일이름> /etc/nginx/sites-enabled
$ sudo nginx -t
연결 확인
$ sudo systemctl restart nginx
$ sudo systemctl status nginx.service
아주 잘 된걸 확인,,
이제 url에 들어와서 ip를 쳤지만 연결이 안된다? 그럼 에러확인.
sudo tail -f /var/log/nginx/error.log
아래처럼 떴던 것 같은데 그럼 ls/server를 해서 server 아래 gunicorn.sock이 잘 만들어졌는지 확인!!!
잘 만들어졌으면 권한문제 일수도
2023/08/13 19:39:30 [crit] 2531#2531: *2 connect() to unix:/home/ubuntu/1st-test/server/gunicorn.sock failed (13: Permission denied) while connecting to upstream, client: 58.237.227.96, server: 3.38.94.207, request: "GET / HTTP/1.1", upstream: "http://unix:/home/ubuntu/1st-test/server/gunicorn.sock:/", host: "3.38.94.207"
권한을 확인하기
namei -nom /home/ubuntu/1st-test/server/gunicorn.sock
이렇게 root권한이랑 파일 권한까지 주면 서버는 잘 동작할거임!
chmod 755 ~
chmod 755 ~/1st-test
하지만 css 적용이 안된다? 그럼 아래 명령어 해보기
python3 server/manage.py collectstatic
아래 유튜브가 아주도움이 되었다.
테스트용으로 해본거라..
탄력적 ip, 그리고 git에 key도 나중에 설정하면 좋겠다
이제 RDS 연결을 찾아... 찾자..
- 도메인 연결
- https 적용
- 데베 연결
sudo systemctl restart gunicorn
'개발 노트 > AWS' 카테고리의 다른 글
[Django] 장고 db를 mysql로 바꾸기, ec2를 장고와 연결하기 (0) | 2023.08.20 |
---|---|
[Django] 장고 도메인 연결 (Route 53이용) ec2-가비아 연결 (0) | 2023.08.20 |