Hexo deploy시 github.com 인증 오류

에러

hexo deploy를 실행하니 다음과 같이 에러 발생.

1
fatal: Authentication failed for ~~

SSH Key 생성

1
ssh-keygen -t rsa -C "Github 계정 e-mail"

file 물어보는데 그냥 엔터 입력 (이 디렉토리를 바꾸면 동작하지 않으니 주의할 것!)
passphrase는 GitHub의 패스워드 아님 (그냥 엔터 눌러도 됨)

생성 예제

1
2
3
4
5
6
7
8
9
# ssh-keygen -t rsa -C "계정 e-mail"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256: ~~~

GitHub.com 로그인

  • Settings로 이동
  • SSH & GPG Keys 선택
  • New SSH Key 버튼 클릭
  • Title에는 식별할 수 있는 이름 입력하고, Key에 아까 엔터친 파일명 뒤에 .pub를 붙인 파일의 내용 복붙
    1
    cat /root/.ssh/id_rsa.pub
  • Add SSH Key 버튼 클릭

등록 확인

1
2
# ssh -T git@github.com
Hi (GitHub ID)! You've successfully authenticated, but GitHub does not provide shell

Hexo Config 파일 변경

  • _config.yml 파일 변경
  • Before
    1
    2
    3
    4
    5
    6
    # Deployment
    ## Docs: https://hexo.io/docs/one-command-deployment
    deploy:
    type: git
    repo: https://github.com/(GitHub ID)/(GitHub ID).github.io.git
    branch: master
  • After
    1
    2
    3
    4
    5
    6
    # Deployment
    ## Docs: https://hexo.io/docs/one-command-deployment
    deploy:
    type: git
    repo: git@github.com:(GitHub ID)/(GitHub ID).github.io.git
    branch: master

Flask MySQL JSON 한글

Flask에서 MySQL 접속시 발생한 에러

  • TypeError: Object of type Decimal is not JSON serializable
  • MySQL에서 utf8을 사용하도록 처리했지만 한글 출력 문제 발생
  • jsonify() 및 json.dumps() 문제들
  • JSON에서 객체 대신 배열로 값들이 들어가는 문제
  • DB의 애트리뷰트 순서와 다르게 JSON에서 정렬되는 문제

해결 방법

  • simplejson 설치

    apt-get install libmysqlclient-dev
    pip install simplejson flask-mysqldb

    • simplejson 설치해 두면 자동으로 jsonify에서 사용함
  • 커서로 DictCursor를 사용하도록 지정

    app.config[‘MYSQL_CURSORCLASS’] = ‘DictCursor’

  • JSON에서 sort하지 않도록 지정

    app.config[‘JSON_SORT_KEYS’] = False

  • Header 사용
    • jsonify()는 자체 헤더 포함
    • json.dumps()는 헤더 포함하지 않음
1
2
3
4
5
6
7
8
@app.route("/", methods=["GET"])
def index():
query = 'select * from 테이블 이름'
cur = db.connection.cursor()
cur.execute(query)
r = Response(response=json.dumps(cur.fetchall()))
r.headers["Content-Type"] = "application/json; charset=utf-8"
return r

소스 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from flask import Flask, jsonify
from flask_mysqldb import MySQL
# mysqlclient, flask-mysqldb, simplejson 설치 필요함
# apt-get install libmysqlclient-dev
# pip install simplejson flask-mysqldb
# simplejson은 설치만 해두면 jsonify에서 사용함

app = Flask(__name__)

app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = '패스워드'
app.config['MYSQL_DB'] = '데이터베이스 이름'
app.config['MYSQL_CURSORCLASS'] = 'DictCursor'
app.config['JSON_SORT_KEYS'] = False
db = MySQL(app)


@app.route("/", methods=["GET"])
def index():
query = 'select * from 테이블 이름'
cur = db.connection.cursor()
cur.execute(query)
return jsonify(cur.fetchall())


# @app.route("/", methods=["GET"])
# def index():
# query = 'select * from 테이블 이름'
# cur = db.connection.cursor()
# cur.execute(query)
# r = Response(response=json.dumps(cur.fetchall()))
# r.headers["Content-Type"] = "application/json; charset=utf-8"
# return r


if __name__ == "__main__":
app.run(host='0.0.0.0', port=80, debug=True)

관련 강의

https://colab.research.google.com/drive/1BAbJdJ8O5LH9EIFf9qjf2brTpaPn5iv-
https://bit.ly/2Y5xH7P

https://bwoh.github.io/2021/01/10/dbex/Chap-13-Flask/

Hexo 블로그 세팅 방법

Hexo 카테고리 생성 방법

카테고리를 어떻게 만드는지 몰라서 한참 헤멨다.

따로 카테고리를 미리 구성해 놓고 그걸 글에서 지정하는 것이 아니고, hexo new로 새 포스트를 작성하고 그 글(.md 파일)에 categories를 써주면 그것들을 모아서 카테고리를 구성해 주는 방식이었다.

이 글에 지정된 태그와 카테고리는 다음과 같다.

1
2
3
tags: [hexo, category]
categories:
- [Web Programming, Hexo]

Hexo 사용 방법

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment