55일차
플라스크 또는 장고를 이용한 로그 분석 시스템 구축
로그 데이터: 192.168.0.118
센서 데이터: 192.168.0.98
CI4 > MVC(Model, View, Controller)
config > routes > 경로
Flask, Django > MTV(Model, Template, View)
-------------------------------------------------
sudo apt update
sudo apt -y install lrzsz
sudo apt -y install unzip
date
#sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
cd ~
mkdir venvs
cd venvs
python3 -m venv mysite
cd mysite
cd bin
. activate
pip install wheel
pip install flask
pip install Flask-Migrate
pip install Flask-WTF
pip install email_validator
pip install Flask-Markdown
pip install pymysql
pip install mysql-connector-python
pip install cryptography
---
cd /home/master/venvs
nano mysite.sh
#!/bin/bash
cd ~/projects/flask
export FLASK_APP=security
export FLASK_ENV=production
export APP_CONFIG_FILE=/home/master/projects/flask/config/production.py
. ~/venvs/mysite/bin/activate
---
cd ~
nano .profile
alias mysite='export FLASK_APP=security;export FLASK_ENV=production;export APP_CONFIG_FILE=/home/master/projects/flask/config/production.py; cd ~/projects/flask; . /home/master/venvs/mysite/bin/activate'
source .profile
mysite #cmd처럼 mysite만 쳐도 플라스크 접속 가능
---
cd /home/master/venvs
nano mysite.env
FLASK_APP=security
FLASK_ENV=production
APP_CONFIG_FILE=/home/master/projects/flask/config/production.py
---
sudo apt -y install nginx
sudo apt -y install apache + flask
---
cd /etc/nginx/sites-available
sudo nano mysite
server {
listen 80;
server_name 192.168.X.XXX;
location = /favicon.ico { access_log off; log_not_found off; }
location /static {
alias /home/master/projects/flask/security/static;
}
location / {
include proxy_params;
proxy_pass http://unix:/tmp/mysite.sock;
}
}
---
cd /etc/nginx/sites-enabled
sudo rm -rf default
sudo ln -s /etc/nginx/sites-available/mysite
sudo systemctl restart nginx
sudo nginx -t
sudo systemctl start nginx
---
pip install gunicorn
---
sudo nano /etc/systemd/system/mysite.service
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=master
Group=master
WorkingDirectory=/home/master/projects/flask
EnvironmentFile=/home/master/venvs/mysite.env
ExecStart=/home/master/venvs/mysite/bin/gunicorn \
--workers 2 \
--bind unix:/tmp/mysite.sock \
"security:create_app()"
[Install]
WantedBy=multi-user.target
---
sudo systemctl enable nginx
sudo systemctl enable mysite
mkdir projects
cd projects
mkdir flask
cd flask
unzip flask.zip
sudo reboot
sudo systemctl restart nginx
sudo systemctl restart mysite
-------------------------------------------------
#서버와 개발 환경을 위한 config 분리
config
__init__.py
default.py
production.py
development.py
default.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
development.py
from config.default import *
SQLALCHEMY_DATABASE_URI='sqlite:///{}'.format(os.path.join(BASE_DIR,'security.db'))
SQLALCHEMY_TRACK_MODIFICATIONS=False
SECRET_KEY="dev"
production.py
from config.default import *
SQLALCHEMY_DATABASE_URI='sqlite:///{}'.format(os.path.join(BASE_DIR,'security.db'))
SQLALCHEMY_TRACK_MODIFICATIONS=False
SECRET_KEY="dev"
__init__.py
app.config.from_envvar('APP_CONFIG_FILE')
mysite.cmd
@echo off
cd c:\projects/flask
set FLASK_APP=security
set FLASK_ENV=development
set APP_CONFIG_FILE=c:\projects\flask\config\development.py
c:\venvs\mysite\scripts\activate