flask mariadb 활용 홈페이지 만들기(1)

flask 와 mariadb 활용하여 홈페이지 만들기 프로젝트를 시작합니다! Let’s Gil-it입니다.

flask mariadb 두개를 활용하여 서버 개발을 진행한 기록을 남기고자 포스팅 합니다. 램을 추가한 시놀로지 나스에 탑재하는 프로젝트였으며 레퍼런스가 많이 없어서 찾기 힘들었습니다. 고생이란 고생은 다했기에.. 도움이 되고자 작성하며 개인적으로는 삽질 방지용 입니다.

DB구축(mariadb) – 회원 가입 – 로그인 – 데이터 수집 – 도메인 매칭 – 서버 배포 순으로 진행하였습니다.

이번 포스팅은 flask 홈페이지 프로토 타입 + DB 구축에 대하여 작성하겠습니다.

먼저, flask 패키지는 Micro web framework로 개발자들이 자신이 필요한 기능을 구현하여 웹을 개발할 수 있도록 기능을 제공하는 패키지 입니다. 여기서! Micro의 의미는 핵심 기능을 간결하게 유지하고 유연한 확장이 가능하다는 의미입니다.

또한, flask 패키지는 데이터 베이스를 선택해 주지 않기에 개발자가 자신이 익숙하거나 개발 환경에 맞는 DB를 선택해야 합니다.

파이썬을 활용하여 웹을 개발할 때 Django, flask 를 주로 사용하는데 이에 관한 비교 글은 많은데 제가 추천하는 글은 여기를 참고하시면 됩니다. 깔끔하게 정리가 잘 되어 있었습니다.

먼저 폴더를 하나 만들어 주세요. 간단하게 보여드리겠습니다.

mkdir gilit # 작업 folder 만들기
cd gilit # 작업환경을 gilit 폴더로 이동
dir # 폴더 안에 있는 파일 등 확인, 아무 것도 없어야 정상입니다. 리눅스는 ls 명렁어

자 그러면, flask 모듈을 활용하여 간단하게 웹 페이지를 만들어 보겠습니다. flask 설치가 되었다고 가정합니다. 작업은 visual studio code, jupyter notebook 등 자신이 잘 맞는 환경에서 진행하시면 됩니다. 필자의 경우 비쥬얼 스튜디오 코드로 진행했습니다.

#app.py
from flask import Flask
from flask import render_template
from flask import request

app = Flask(__name__) # 모듈 이름 저장
@app.route('/')
def hompage():
    return render_template('main.html')

if __name__ == "__main__":
    app.run(host='0.0.0.0', port = 5000, debug = True)
#host 0.0.0.0 은 어떠한 아이피에서도 접속 가능, flask 기본 포트는 5000, 다른 포트를 쓰고 싶다면 포트 포워딩을 완료한 후 사용, debug 모드는 True -> 오류 확인 가능

자 여기까지 따라오셨으면 이번에는 간단하게 html 템플릿을 만들어서 진행하도록 하겠습니다.

html 코드를 작성한 후 아래와 같은 코드를 실행하시면 아래 그림과 같이 html이 반영되어 나옵니다!

#main.html
<!DOCTYPE html>
<html>
    <head>
        <title>Let's Gil-it</title>
    </head>
    <body>
        <p>Let's Gil-IT</p>
    </body>
</html>
flask + flask_gilit
html 예시

app.py로 저장한 후 터미널에서 python app.py 실행시키면 아래의 그림과 같이 나옵니다. 127.0.0.1 은 local pc(ip) 접속을 의미하고 : 5000 은 접속한 포트를 의미합니다.

지금부터는 DB 구축을 진행하도록 하겠습니다. DB 구축은 Mariadb를 활용하였으며 Mysql과 구문이 매우 비슷합니다.

설치는 Mairadb 공식 홈페이지에서 진행하시면 됩니다. 이에 관련한 자료는 구글에 많습니다!

Mairadb 설치가 되었다면 이제 DB를 구축해보도록 하겠습니다.

윈도우 기준으로 작성되었으며 DB 구축은 두 가지 버전으로 진행하겠습니다. 1. Heidisql 외부 프로그램 2. 터미널 활용 이렇게 2가지 버전으로 진행하는 이유는!!

1번으로 진행하면 편하지만 유연한 프로그래밍이 어려우며 2번으로만 진행할 경우 유연성 있는 프로그래밍은 가능하지만 초보자 입장에서 어렵기 때문입니다.

1. Heidisql <- db를 다루는 툴은 많습니다. 제가 사용하는 Heidisql 기준으로 설명 드립니다. 호스트명은 로컬PC로 접속하기에 127.0.0.1이며 사용자와 암호는 Mariadb 설치 시 설정했던 id, password 입니다.

flask + heidisql
heidisql_접속화면

접속 후 빨간색 박스(물개) 우클릭 후 데이터 베이스 생성 후 생성된 데이터 베이스 더블 클릭하면 데이터 베이스로 접근합니다.

flask + mariadb 데이터 베이스 생성
데이터 베이스 생성
flask + data base
데이터 베이스 생성

저는 gilit이라는 데이터 베이스를 만들었고 안에는 테이블이 현재 없기에 당연히 데이터 베이스는 비어 있습니다. 여기서 테이블을 추가해주시면 됩니다. 테이블 추가 후 설정 및 속성 등을 추가 설정 해주시면 됩니다. 그러면 데이터 베이스 설정은 끝납니다.

flask + table 생성
테이블 생성
flask + flask, mariadb 테이블 속성 설정
테이블 설정
flask + flask, mariadb 테이블 속성 설정
테이블 속성 설정

2. mariadb 설치 시 동시에 설치되는 mysql_client 실행

flask + mysql_client
시작프로그램_mysql_client

접속 후 비밀번호를 입력해줍니다. 그러면 아래 그림과 같이 현재 사용중인(Mariadb) DB가 나옵니다. 이후에 아래와 같은 명령어로 Mariadb 접속 가능한 User와 Pwd를 설정해줍니다.

보통 root 계정을 많이 쓰는데, 보안 상 하나 만든 후 그 계정으로 접속 추천합니다.

#@ 뒤에 %를 붙임으로써 모든 IP에서 접근 가능, 예를 들어, 192.168.0.0 이렇게 적으면 192.168.0.0 IP에서만 접근가능
create user '자신이 사용하고 싶은 User ID'@'%' identified by '자신이 사용하고 싶은 패스워드';
flask + mariadb_cmd_접속화면
mariadb_cmd_접속화면
flask + user_create
User 생성

User 생성 후 아래와 같은 명령어로 권한을 확인합니다. *.* 의미는 user test는 모든 데이터베이스 모든 테이블에 접근이 가능하다는 의미입니다. 이후 DB 생성을 합니다.

#db, table 
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' with grant option;
CREATE DATABASE 'DB이름을 적어주세요';
#user 변경
use test;
user_권한
user_권한
 create_db_gilit_cmd
DB 생성

DB 생성 전과 후의 차이가 보이시나요?

#DB 확인
show databases;
#Table 확인
show tables;
 flask DB 생성 전
DB 생성 전
created_db_gilit_cmd
DB 생성 후

DB를 처음 생성했기에 당연히 table은 없습니다. 따라서 table을 생성하시고 table에 적재될 데이터 형태를 세팅해주면 끝! 모든 과정이 끝나면 이제 프로젝트에서 사용하실 DB 구축이 완료되었습니다.

#table 확인, 당연히 empty
#create table
create table test(name varchar(10));
show tables;
#desc 명령어로 table안에 데이터 속성확인
desc test;
 table 만들기

오늘은 flask 로 간단한 웹 만들기 + Mariadb 를 활용한 데이터베이스 구축을 알아보았습니다. 제 경험상 flask는 처음에 어렵지만 매우 유연한 프레임워크였습니다. Mariadb는 Mysql 개발자가 개발한 DB로 Mysql을 사용해보신 분들은 매우 익숙한 환경입니다.

이렇게 간단하게 구현하였습니다. 하지만, 실제 개발은 통신, 적재, 보안 등이 어우러지는 매우 복잡한 환경입니다. 천천히 따라하시면 아주 작은 미니 프로젝트를 진행하실 정도의 수준까지는 될 수 있으니 천천히 따라오시면 됩니다!

다음 포스팅은 회원 가입 홈페이지 + 회원 가입 기능 구현 + DB 연결 등에 대한 포스팅입니다. 다음 포스팅에서 뵙겠습니다.

Let’s Gil-IT!