Рет қаралды 3,103
그누보드6 파이썬 버전을 실제 운영할 수 있는 방법에 대해
아래와 같은 순서대로 설명합니다.
1. Ubuntu 22.04 버전을 준비합니다.
2. git 으로 그누보드6 복제
3. 가상환경 설치 및 실행
4. uvicorn 실행
5. iptables 에 8000번 포트 허용
6. 브라우저에서 http 접속 확인
7. uvicorn.service 생성 및 실행
8. Nginx에 도메인 연결
9. certbot 으로 보안인증서 발급
10. https 연결 확인
=끝=
명령어 순서
cd /home/ubuntu
git clone github.com/gnu...
cd g6
sudo apt update
sudo apt install python3.10-venv
python -m venv venv
source venv/bin/activate
uvicorn main:app --reload --host 0.0.0.0 --port 8000
sudo iptables -I INPUT -p tcp --dport 8000 -j ACCEPT
sudo netfilter-persistent save
(브라우저에서 서버아이피:8000 으로 접속 확인)
cd /home/ubuntu/g6
mkdir log
vi log_config.ini (맨아래 코드 참고)
sudo vi /etc/systemd/system/uvicorn.service (맨아래 코드 참고)
sudo systemctl restart uvicorn.service
sudo systemctl status uvicorn.service
sudo systemctl enable uvicorn.service
sudo cd /etc/nginx/sites-enabled
sudo cp default mydomain
(default 파일은 삭제해도 되며 삭제 안할시 listen 80 default_server; 반드시 주석 처리)
vi mydomain (맨아래 코드 참고)
systemctl restart nginx
systemctl enable nginx
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d 내도메인1 -d 내도메인2
sudo crontab -e (certbot renew 명령 등록)
=====================================================
log_config.ini 파일 내용
=====================================================
[loggers]
keys=root
[handlers]
keys=console,timedFile
[formatters]
keys=generic
[logger_root]
level=INFO
handlers=console,timedFile
[handler_console]
class=StreamHandler
level=INFO
formatter=generic
args=(sys.stderr,)
[handler_timedFile]
class=logging.handlers.TimedRotatingFileHandler
level=INFO
formatter=generic
args=('log/uvicorn.log', 'midnight', 1, 365, 'utf-8')
[formatter_generic]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
=====================================================
=====================================================
uvicorn.service 파일 내용
=====================================================
[Unit]
Description=Uvicorn server with virtual environment
After=network.target
[Service]
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu/g6
Environment="PATH=/home/ubuntu/g6/venv/bin"
ExecStart=/home/ubuntu/g6/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8000 --log-config log_config.ini
[Install]
WantedBy=multi-user.target
=====================================================
=====================================================
mydomain 파일 내용 (Nginx 설정 파일)
=====================================================
server {
listen 80;
server_name mydomain.com www.mydomain.com;
location / {
proxy_pass 127.0.0.1:8000;
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;
}
}
=====================================================
=====================================================
crontab 파일 내용 아래 코드를 추가하세요.
=====================================================
매주 일요일 자정에 실행
0 0 * * 0 certbot renew
=====================================================
sir.kr