AWS 사용
OS : 우분투 18.0.4
python : 3.6.9 (기본 설치)
먼저 기본적인 구조이다.
파일 위치는 /home/ubuntu/www이며 tree -L 3을 실행하였을 때의 디스플레이
이건 파일 위치가 /etc/ningx이며 혹시나 첨부해둔다.
코드 중 대괄호 [ ]로 되어있는 건 파일 이름, 없는 건 터미널 명령어이다.
모두 가상 환경에서 진행해도 된다.
AWS에서 인스턴스를 막 시작했을 때부터 시작
1. FLASK, UWSGI, 가상환경 설치
- 가상 환경을 건너뛰는 분 있는데 가상환경을 꼭 설치하자.
sudo apt-get update
sudo apt-get upgrade
sudo apt install python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools
sudo apt-get install python-virtualenv
mkdir www
cd www
mkdir logs
virtualenv -p python3 env
source env/bin/activate
pip3 install flask
pip3 install uwsgi
[main.py]
from app import app
if __name__ == "__main__":
app.run(host='0.0.0.0')
[app.py]
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Parduck?"
2. flask.ini 작성
외부에서 패킷이 날아오면 nginx가 처리를 하는데 nginx는 파이썬을 모르기 때문에 uwsgi로 넘기면 uwsgi가 파이썬 코드를 호출한다. 한마디로 호환성을 위해
이외 자세한 내용은 https://uiandwe.tistory.com/1268
cd /home/ubuntu/www
touch flask.ini
[flask.ini]
[uwsgi]
module = main:app
master = true
processes = 5
vitualenv = /home/ubuntu/www/env
chdir = /home/ubuntu/www
socket = /home/ubuntu/flask.sock
chmod-socket = 666
vacuum = true
daemonize = /home/ubuntu/www/logs/uwsgi.log
die-on-term = true
uwsgi 실행
uwsgi --ini flask.ini
3. nginx 설치
nginx란 비동기 이벤트 구조 웹서버로 아파치 톰캣 같은 거라 생각하면 된다.
sudo apt-get install nginx
sudo rm /etc/nginx/sites-enabled/default
sudo rm /etc/nginx/sites-available/default
cd /etc/nginx/sites-available
sudo touch flask
본글은 아무것도 설치하지 않은 os에서 시작하기 때문에 80번 포트를 사용 중이지 않다.
특히 톰캣 같은 거 깔려있으면 에러 나니 80번 포트를 사용하고 있다면 포트를 바꾸거나 사용 중인 포트를 킬 하거나
[flask]
server {
listen 80;
location / {
include uwsgi_params;
uwsgi_pass unix:/home/ubuntu/www/flask.sock;
}
}
sudo ln -s /etc/nginx/sites-available/flask /etc/nginx/sites-enabled
flask.ini도 그렇고 아래도 그렇고 사실 개발하다 보면 에러를 분명히 마주치는데 로그를 여러 군데 두면 이동하기 귀찮아서 /home/ubuntu/www/logs에 모아둔다. (심볼릭을 걸어도 상관은 없지만)
로그를 default인 곳에 그대로 두고 싶다면 아래 코드들은 작성하지 않아도 된다.
cd /etc/nginx
sudo vim nginx.conf
http {
...
...
...
access_log /home/ubuntu/www/logs/access.log;
error_log /home/ubuntu/www/logs/error.log;
...
...
...
}
4. 실행
실행하기 전, 서비스를 재시작한다..... 보단 다시 시작이 최고다.
sudo reboot
cd /home/ubuntu/www
reboot 하면 uwsgi를 다시 시작해야 한다. (서비스 등록을 하자!)
source /home/ubuntu/www/env/bin/activate
uwsgi --ini flask.ini
그리고 페이지에 접속해본다.
귀차니즘이 없어지면 멋진 페이지가 있겠지...
'프로그래밍 > Linux' 카테고리의 다른 글
[Linux]ls: reading directory : Input/output error 해결 (0) | 2023.02.19 |
---|---|
[Linux] disk target is busy 에러 해결 (0) | 2023.02.19 |
[Ubuntu/Debian] apt 명령어 모음 (0) | 2022.11.24 |
[Linux] Ubuntu Timezone변경 (0) | 2022.07.17 |
[리눅스] NMAP 포트 범위 스캔 (0) | 2022.06.15 |
댓글