티스토리 뷰

반응형


ec2 탄력적 ip 생성 -> ec2 instance에 연결

- 이걸 먼저 해놔야 ssh 연결 설정 바꾸지 않아도 됨...

- 재부팅 시 ip바뀌는데, 이걸로 고정

 

ec2 서버는 그냥 ubuntu로 생성, 만들고 연결에 ssh 명령어 복사

pem키는 처음이라 새로 생성

생성된 pem키 사용하기 위해서 permission 수정, 아래 링크 참조

- https://velog.io/@rockwellvinca/AWS-SSH-%EC%A0%91%EC%86%8D-%EC%8B%9C-WARNING-UNPROTECTED-PRIVATE-KEY-FILE-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0

 

instance <-> 탄력적ip 할당, instance에서 ip 할당함

 

vscode extension에서 remote - ssh 설치

ctrl + shift + p > remote ssh 검색 > remote-ssh connec to Host > 명령어 붙여넣기 > user/.ssh 선택 > .ssh 디렉터리에서 config 파일의 identifyfile 경로 절대 경로로 수정

- 이거 안하니까 나는 연결이 안 됐음

 

remote로 연결 후 fastapi 설치하려고 pip 치니까 pip를 못 찾음...

 

sudo apt-get update

sudo apt-get install python3-pip

uvicorn 실행 시 앞에 python3 -m 필요

python3 -m uvicorn main:app --host 0.0.0.0 --port 8080 --reload

 

fastapi docs off

app = FastAPI(docs_url=None, redoc_url=None)

 

보안 그룹에 8080추가

- 필요없을듯? 어차피 nginx proxy로 443으로 들어올 예정이라

-> 443, 22 빼고 다 지워버림

 

monggodb free tier 쓸까, ec2에 설치할까 등 mssql free tier로 생성

- 시간당 0.004달러로 봤음

 

 

nginx설치 및 proxy

sudo apt-get install nginx

- site-available에 fastapi 만들고 거기 설정하니까 뭔가 꼬임

- 그래서 nginx 밀고 nginx.conf에 넣었음

완료 시 수정 예정
nginx.conf 파일에 직접 해버림

 

route53에서 개발용 도메인 구매(for ssl)

- freenom인가 여긴 지금 막혀 있고, 다른 곳 알아보기도 귀찮아서 그냥 사버림 .net 11$ -> 16,000원

-verify mail 오니 중간에 눌러주고

-기본 등록된 호스팅 영역에 A레코드 추가, ip는 elasticIP, 별칭X

 

ssl 적용 gpt

Certbot 설치
sudo apt update
sudo apt install certbot

SSL 인증서 발급(내 경우 sudo certbot --nginx -d jmlee4dev.net)
sudo certbot --nginx -d your_domain.com

Certbot은 Nginx 설정을 자동으로 업데이트하고 SSL을 활성화합니다.

Nginx 설정 확인:
Certbot은 SSL 설정을 자동으로 Nginx 구성 파일에 추가합니다. 
Nginx 설정 파일이 올바른지 확인하세요.

sudo nano /etc/nginx/sites-available/your_config_file
SSL 구성이 추가되어 있어야 합니다.

Nginx 재시작:
변경 사항을 적용하기 위해 Nginx를 다시 시작합니다.
sudo systemctl restart nginx

이제 Nginx는 SSL을 사용하여 연결을 수락합니다.

자동 갱신 설정 (선택 사항):
Certbot은 발급받은 인증서를 자동으로 갱신할 수 있습니다. 이를 위해 다음과 같은 cron 작업을 추가합니다:

bash
Copy code
sudo certbot renew --dry-run
이 명령어를 실행하여 인증서 갱신이 제대로 작동하는지 테스트할 수 있습니다.

 

 

ssh가 너무 끊겨서 돌아버릴 것 같음

- 뭔가 문제가 있었음

- 중지 하고 시작 해도 종종 끊김

- 아래 모니터링 보니까 코드 없이 서버만 열어 놨는데도 뭔가 많이 들어옴

- cloudflare free버전 귀찮고, aws거는 기업용이라 fail2ban 설치

- 근데 설치하고 설정 추가 하긴 했는데, 더 알아봐야할듯

- 일단 /로 들어오는건 내 블로그로 리디렉션 걸어 버림

gpt 제공
fail2ban 설치
sudo apt-get install fail2ban

fail2ban 설정 파일 수정
sudo nano /etc/fail2ban/jail.conf

[nginx]
enabled = true
port = http,https
filter = nginx
logpath = /var/log/nginx/access.log
maxretry = 3
bantime = 3600

fail2ban 필터 추가:
sudo nano /etc/fail2ban/filter.d/nginx.conf

[Definition]
failregex = ^<HOST> -.*"(GET|POST).*HTTP.*" 444
추가로 500도 추가함
failregex = ^<HOST> .*" (400|500) .*
ignoreregex =

fail2ban 재시작
sudo service fail2ban restart

- swap까지 넣어 줘도...

 

extension에서 post 보내니까 cors 어쩌구...

- nginx는 설정 그대로 두고 fastapi쪽만 수정

- fetch로 보낼때 mode: no-cors 추가함

-> 결국 mode: cors로 변경함

 

extension register에서 post 보내니까 422 나옴

- 돌겠음, js console에는 제대로 된 json인데, request.body() decode 해서 봐도 똑같은데, pydantic은 써보고 싶어서 찾는중

- docs에서는 또 제대로 잘 됨, docs는 127이라 아래 curl 얻어서 https domain으로 바꿔서 해도 잘 받음

- js에서 fetch에 header도 json 잘 들어 가 있는데 안 됨

- cors로 보내려고 nginx랑 fastapi쪽 수정 해도 안되길래 ec2까지 끄고 잤음

- 노트북으로는 됨, 근데 또 데탑으로는 안 됨ㅋㅋ

-> 추가된 extension 삭제하고 다시 로드하니까 됨!!!!!!

- cors는 좀 겪어 보니까 content.js에서 fetch를 하거나, post시에 pydantic 422 발생하면 나는 듯?

 

model 폴더 만들고 테이블 만들었음

-orm 거의 처음 써보는데 아직은 반반임, 아직은 쿼리 치는게 더 편한것 같기도 하고

 

컬럼 바뀌어서 alembic으로 rivision도 해보고

지금 insert 몇 개 해보니까 한글이 다 깨진다...

- database_url 맨 뒤에 ?charset=utf8 추가 해도 그럼, 근데 a테이블이랑 b테이블이랑 똑같이 String인데 a 테이블만 깨짐

 

짜증나서 rds 삭제함, 생각보다 비싸기도 해서 ec2에 maria 설치 도전중

- 설치, root비번 변경, create db, alembic과models 다시 설정, 이제 한글 잘 됨...

 

개발 테스트용으로 미니 서버PC 구매하고 했던것들 다 옮기는데 도커 왜 쓰는지 이제야 이해가 간다...

댓글

티스토리 방명록

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday