Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/business-sixtick/fastapi_sqlite
파이썬 fastapi 서버에 sqlite를 구동한다.
https://github.com/business-sixtick/fastapi_sqlite
Last synced: 23 days ago
JSON representation
파이썬 fastapi 서버에 sqlite를 구동한다.
- Host: GitHub
- URL: https://github.com/business-sixtick/fastapi_sqlite
- Owner: business-sixtick
- License: mit
- Created: 2024-12-21T03:49:33.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2024-12-21T04:06:05.000Z (about 1 month ago)
- Last Synced: 2024-12-21T05:17:35.020Z (about 1 month ago)
- Size: 1.95 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# fastapi_sqlite
파이썬 fastapi 서버에 sqlite를 구동한다.## 오라클 클라우드 (sqlite 데이터베이스)
- https://cloud.oracle.com/
- 가용성 도메인: AD-1 항상 무료 적격
- Ubuntu 24.04
- VM.Standard.E2.1.Micro 가상 머신, 1 core OCPU, 1 GB memory, 0.48 Gbps network bandwidth, Processor: 2.0 GHz AMD EPYC™ 7551 (Naples)
- ㅋㅋ 거의뭐 쓰레기급이네
- ssh [email protected]
- ssh -i C:\Users\sixtick3\.ssh\ssh-key-2024-12-21.key [email protected]
- ssh -i C:\Users\hungh\.ssh\ssh-key-2024-12-21.key [email protected]
- sudo apt update## 우분투 파이썬 가상환경
- sudo apt install python3-venv python3-pip
- cd ~
- python3 -m venv venv
- source ~/venv/bin/activate## remote ssh config 구성 (유저폴더에 .ssh\config 파일)
```
Host sqlite
HostName 144.24.78.242
User ubuntu
IdentityFile ~/.ssh/ssh-key-2024-12-21.key
IdentitiesOnly yes
```## fastapi sqlite 구성 https://fastapi.tiangolo.com/ko/
- pip install fastapi[all]
- main.py 작성
```
from fastapi import FastAPIapp = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
```- uvicorn main:app --reload
- uvicorn main:app --host 0.0.0.0 --port 80 --reload## 루트 계정
- sudo passwd root
- su -
- sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
- sudo iptables-save | sudo tee /etc/iptables/rules.v4
- sudo ip6tables-save | sudo tee /etc/iptables/rules.v6
- 저장이 안되면 sudo apt install iptables-persistent 설치
- cd /home/ubuntu/fastapi_sqlite/
- source /home/ubuntu/venv/bin/activate
- uvicorn main:app --host 0.0.0.0 --port 80 --reload
- 80 포트로 쓰려면 루트 권한으로 실행해야함
- nohup uvicorn main:app --host 0.0.0.0 --port 80 --reload > /home/ubuntu/uvicorn.log 2>&1 &## 깃허브
- git config --global user.name "sixtick_sqlite"
- git config --global user.name "sixtick_lenovno"
- git config --global user.email "[email protected]"
- git config --list
- pip install -r requirements.txt## 윈도우즈 가상환경
- python -m venv venv
- .\venv\Scripts\activate // 보안오류시 ttps://blog.naver.com/hungh4/223701757449 참조
- python.exe -m pip install --upgrade pip
- pip install fastapi[all]
- pip install pandas
- pip install beautifulsoup4
- pip install sqlalchemy
- pip install requests
- uvicorn main:app --reload
- http://127.0.0.1:8000/lotto?length=10## 우분투 로그파일 관리
/home/ubuntu/uvicorn.log {
daily
rotate 7
missingok
create 666 root adm
}
sudo nano /etc/logrotate.d/uvicorn
sudo logrotate -f /etc/logrotate.d/uvicorn # 강제 실행/var/log/syslog {
daily # 로그 회전 주기 (매일)
rotate 7 # 7일치 로그 보관
compress # 압축 (gzip 사용)
delaycompress # 바로 압축하지 않고 하루 뒤에 압축
missingok # 로그 파일 없어도 에러 무시
notifempty # 비어 있으면 회전 생략
create 640 root adm # 새 로그 파일 권한 설정
}## SSL/TLS 인증서 발급 http://lottoapi.duckdns.org http://144.24.78.242/
- sudo apt update
- sudo apt install certbot python3-certbot-nginx nginx
- sudo nano /etc/nginx/sites-available/fastapi (nginx 설정정)
```
server {
listen 80;
server_name 144.24.78.242 lottoapi.duckdns.org; # 도메인 설정 (IP 주소도 가능)location / {
proxy_pass http://127.0.0.1:8000; # FastAPI 서버 주소
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}# 정적 파일 제공 (옵션)
location /static/ {
alias /var/www/fastapi/static/;
}
}
```
- nohup uvicorn main:app --host 0.0.0.0 --port 8000 --reload > /home/ubuntu/uvicorn.log 2>&1 &
- nohup uvicorn main:app --host 0.0.0.0 --port 80 --reload > /home/ubuntu/uvicorn.log 2>&1 &- sudo ln -s /etc/nginx/sites-available/fastapi /etc/nginx/sites-enabled/
- sudo nginx -t # 설정 파일 테스트
- sudo systemctl reload nginx (또는 start)- sudo iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT
- sudo iptables-save | sudo tee /etc/iptables/rules.v4
- sudo ip6tables-save | sudo tee /etc/iptables/rules.v6- sudo certbot (duckdns.org lottoapi.duckdns.org) [email protected]
- 자동갱신 설정 (나중에 다시 확인 해보자자)
- sudo certbot renew --dry-run
- sudo crontab -e
- 0 2 * * * certbot renew --quiet- 인증서 확인 sudo certbot certificates