티스토리 뷰
ec2 탄력적 ip 생성 -> ec2 instance에 연결
- 이걸 먼저 해놔야 ssh 연결 설정 바꾸지 않아도 됨...
- 재부팅 시 ip바뀌는데, 이걸로 고정
ec2 서버는 그냥 ubuntu로 생성, 만들고 연결에 ssh 명령어 복사
pem키는 처음이라 새로 생성
생성된 pem키 사용하기 위해서 permission 수정, 아래 링크 참조
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
보안 그룹에 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 구매하고 했던것들 다 옮기는데 도커 왜 쓰는지 이제야 이해가 간다...
'Others' 카테고리의 다른 글
iptime ddns let's encrypt(certbot) 등록 실패, duckdns로 대체 (0) | 2023.11.30 |
---|---|
MSSQL 암호화 백업, 복구 (0) | 2023.11.09 |
크롬 익스텐션 개발 테스트(마나토끼 히스토리) (0) | 2023.10.14 |
도미노피자 배달 시스템... (0) | 2021.09.18 |
모두의 SQL 정리중 (0) | 2019.09.10 |
티스토리 방명록
- Total
- Today
- Yesterday
Contact: j0n9m1n1@gmail.com