본문 바로가기
개인 프로젝트/개인서버에서 도커로 웹서버 제작하기

1. 웹서버로 올릴 언어 선정 그리고 공부하기

by 우동이 2022. 10. 7.
300x250

웹 서버 홈페이지는 시놀로지 NAS에서 호스팅 할 생각입니다.

 

NAS - Docker Linux - Flask WebServer

 

나스에서 바로 웹서버를 띄우는 방법은 여러 가지 있습니다(WordPress, Docker, php) 등등

근데 Flask를 배우려고 계속해봤으나 여태껏 제대로 배워두지를 않아서 하는 김에 확실하게 해 보려고요

nas

현재 NAS에서는 도커로 리눅스 서버를 띄워둔 상태입니다.

 

리눅스에서 flask를 설치하기만 하면 바로 웹서버를 띄울 수 있으니 flask 코드에 대해 잠깐 배워봤습니다.

 


2022-10-07

더보기

공부 끝난 코드

from flask import Flask, url_for, request, render_template, redirect
from flask import Markup


app = Flask(__name__)

#redirect - url 리다이렉션
@app.route("/")
def index():
    return redirect(url_for('login'))


#/login head가 POST방식일 경우에만 작동
@app.route('/login', methods=['POST', 'GET'])
def login():
    error = None
    if request.method == 'POST':
        if valid_login(request.form['username'],
                       request.form['password']):
            return log_the_user_in(request.form['username'])
        else:
            error = 'Invalid username/password'
    # 아래의 코드는 요청이 GET 이거나, 인증정보가 잘못됐을때 실행된다.
    return render_template('login.html', error=error)


#Jinja 언어 사용법
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
    return render_template('hello.html', name=name)

#flask 공식 문서에 나와있던 예제 유저이름 출력
@app.route("/user/<username>/")
def profile(username):
    return 'user : {}'.format(username)

#flask 공식 문서에 나와있던 게시글 번호 출력 예제
@app.route("/post/<int:post_id>/")
def show_post(post_id):
    return 'post : {}'.format(post_id)

#url 받아와서 출력 index,login,index,profile 에 해당되는 url이 반환된다
with app.test_request_context():
    print(url_for('index'))
    print(url_for('login'))
    print(url_for('index', next='/'))
    print(url_for('profile', username='John Doe'))

with app.test_request_context('/hello', method='POST'):
    # now you can do something with the request until the
    # end of the with block, such as basic assertions:
    assert request.path == '/hello'
    assert request.method == 'POST'


with app.request_context(pass): # pass = environ
    assert request.method == 'POST'


if __name__ == "__main__" :
    app.run(debug=True)
 
 
 
 

빠르게 시작하기 — Flask 0.11-dev documentation

웹 어플리케이션에 있어서 클라이언트에서 서버로 보내는 데이타를 처리하는 것은 중요한 일이다. Flask에서 이 정보는 글로벌한 request 객체에 의해 제공된다. 여러분이 파이썬 경험이 있다면,

flask-docs-kr.readthedocs.io

공부는 flask(0.11) 공식문서를 참조했습니다.

 

아무래도 django에 비해 손을 대야 하는 부분이 많습니다.

스레드나 url 등등,,

 

오늘은 [빠르게 시작하기] 부분을 통해 플라스크의 기초적인 내용에 대해 익혔으니

 

2022-10-10까지 플라스크로 대충 기초적인 틀의 웹서버를 만들고 

그에 맞는 기초적인 html을 짜겠습니다.

아마 부트스트랩으로 외형을 꾸미게 될 것 같습니다.

UI까지 하려면 좀 힘들듯

 

DB는 아마 mongoDB를 사용하거나 mariaDB를 사용할 것 같습니다.

 

이후 웹서버가 어느정도 개발되면 깃허브에도 올려봐야겠습니다.

 

이 프로젝트의 목적은 웹서버 구축에 대한 경험과 웹의 전반적인 지식 습득에 있습니다.

 

 

 

300x250

댓글