여러 삽질을 했다.. 그냥 그대로 따라오면 할 수 있도록 써놓겠음.
nginx로 배포하고, uwsgi와 소켓으로 통신하게 될 것이다.
Flask
~$ pip install flask
파이프로 플라스크 다운로드.
만약 파이프가 없다면 없으면 apt-get install pip를 하도록하자.
마땅한 작업 디렉토리로 가자. (예를 들면 ~/flask/)
그리고 app.py 생성.
#app.py
from flask import Flask
application = Flask(__name__)
@application.route("/")
def hello():
return "Hello! Miracle!"
if __name__ == "__main__":
application.run(host='0.0.0.0')
자 이제 한번 테스트 해보자.
잘 되었을까?
~$ python app.py
그러면 default port인 5000이 열렸을 거다. 포트 확인해보고 localhost 혹은 public ip가 있다면 브라우저에 public ip:5000을 쳐보자. (또는 curl)15.122.199.55라면 http://15.122.199.55:5000으로 쳐보면 된다.
Hello가 잘 뜬다면 다음을 진행하자.
uWsgi
~$ pip install uwsgi
uWsgi 설치. 혹시 몰라 말해주느데, apt-get으로 말고 pip로 설치해주어야 이 강의를 그대로 따라오는데 원활할 것이다.
#wsgi.py
from app import application
if __name__ == "__main__":
application.run()
그리고 wsgi.py에 위와 같이 적어준다.
그리고 이 쯤 되면 다시 테스트해보자.
~$ uwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi
이번에도 브라우저나 curl을 통해서 테스트해보고 Hello!가 뜬다면 성공!
uWsgi에 ini 설정이 필요하다.
위의 --socket / --protocol / -w 등 옵션들이 많이 보이지? 쉽게 말하면 ini에 초기값을 넣어두고 앞으로 저런 긴 커맨드 없이 편하게 불러오는거라고 보면 된다.
아래와 같이 uwsgi.py를 작성해주자.
[uwsgi]
module = wsgi
socket = /tmp/uwsgi.sock <- 소켓 경로(추후 nginx가 이 소켓과 소통을 할 것이다.)
chmod-socket = 666
vacuum = true
daemonize = /home/ubuntu/flask/uwsgi.log <- 에러 로그를 남길 부분
die-on-term = true
혹시 모르는 복붙러분들을 위해서 "<- " 부분은 지워주자.
그리고 다음과 같이 ini를 적용시켜주자.
~$ uwsgi --ini uwsgi.ini
~$ ls -l /tmp | grep uwsgi.sock 을 쳐봐서 .sock파일이 잘 생성 되었다면 잘 된거다.
Nginx
~$ sudo apt-get install nginx
nginx 설치.
설치가 완료되면 바로 실행될 것이다.
잘 설치 되었는지 확인해보자.
~$ sudo service nginx start
브라우저 혹은 curl로 접속함으로써 테스팅이 가능하다.
~$ cd /etc/nginx;ls;
위와 같은 화면이 나올 것이다.
여기서 sites-available과 sites-enabled이 없다면 ~$sudo mkdir sites-available;sudo mkdir sites-enabled;로 생성해주자.
~$ vi /etc/nginx/sites-available/[파일명]
[파일명]에는 마음대로 적어도 된다.
server {
listen 5000; <- 하고싶은 포트로 정해주자. http 기본 포트는 80이다.
server_name localhost;
location / {
include uwsgi_params;
uwsgi_pass unix:/tmp/uwsgi.sock;
}
}
요대로 적어주자.
~$ sudo ln -s /etc/nginx/sites-available/[파일명] /etc/nginx/sites-enabled
링크 하나 만들어주면 된다.
아, 그리고 혹시 sites-available과 sites-enabled가 없어서 mkdir로 새로 생성한 사람은 다음과 같이 따라하자.
~$ vi /etc/nginx/nginx.conf
http 제일 하단에 include /etc/nginx/sites-enabled/*;를 추가해주도록 하자.
다음과 같은 화면이 될 것이다.
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
밑에서 2번째 부분이 내가 말한 부분이다.
자 이제 테스트를 해보자.
~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
이렇게 나온다면 잘 따라온 것이다.
~$ sudo service nginx restart
nginx를 다시 시작해주면 된다.
음하하
'개발 > 연구' 카테고리의 다른 글
VS CODE로 클라우드 서버 연결하기 (0) | 2021.02.25 |
---|---|
[Blazor, Server] Blazor&nginx 서버를 배포해보자. (3) | 2020.11.23 |
[네이버 클라우드 플랫폼]Naver Cloud Platform를 통해 무료로 서버를 만들어보자. (0) | 2020.10.30 |
VPN/VPS/VPC (0) | 2020.10.30 |
[git fork]Git의 오픈소스를 활용하여 나의 레파지토리에서 개발해보자. (0) | 2020.10.26 |