기본적으로 이 페이지는 Python과 Flask로 제작되었다.
기능을 차차 늘려갈 예정이라. 내가 가장 쉽게 쓸 수 있는게 뭘까 하다가 골랐다.
기본적인 틀을 잡고 나니, 그 다음으로 시급해진 일은 어디에서 포스팅을 할까?
처음 포스팅 방법으로 생각 한 것으로는,
- 터미널로 접속, vim으로 작성.
- 터미널로 접속, nano로 작성.
- github 이용
위의 세가지였다. 뭐… 3번이 가장 무난하긴 했지만 그래도 내 글을 저장할 공간을 public으로 두자니 애매했고…
1,2번의 경우에는… 사실 너무나 비정상적이고 비효율적인 방법이라고 생각했다.
그래서, 고민을 해보니. 나에게는 따로 운영중인 GitLab 서버가 있었다. 자, 그럼 GitLab에 Repository를 생성하고, 일단 첫번째 글을 Markdown으로 작성하였다.
그리고 서버에 접속해서 자동으로 업데이트를 해주는 스크립트를 작성하였다. 그리고 테스트. 그리고 굳!
GitLab서버에서 정상적으로 가져오는 것을 확인했다. 어렵지 않은 일이었다.
그리고 난 후 자동화를 하기 위해 여러 방법을 생각했다.
서버에서 주기적으로 pull, crond를 이용?
페이지에 접속시 pull해서 이용?
개인적으로 1의 경우 실시간 업데이트가 불가능하고 짧게는 1초(물론 부하는 높다고 생각한다.), 길게는 10분 정도 기다려야 업데이트 되는 페이지라… 딱히 내키지 않았다. 그래서 2번을 이용하기로 결정했다.
cd [POST DATA DIRECTORY];git pull
위의 코드를 이용하면 얼마나 쉬운가, 그냥 해당 디렉토리를 이동해서 git pull을 날려주는 것이다. 그럼 GitLab에 저장된 데이터를 쏙쏙 빼올 수 있겠지라고 쉽게 생각했다.
그리고 Flask 내부 코드에 subprocess를 열어서, 해당 명령을 실행하는 로직을 추가했다. 어려운 일이 아니었기에 바로 저장. 그리고 테스트를 위한 새로고침.
안된다. 왜? 를 외치면서 일단 에러는 아니었길래 코드에 문제가 있는 것은 아니라는 것을 파악한 후, 로그를 찍어보니… 권한이 없다고 나온다.
아… 가장 기본적인 실수를 한것이다. 기본적으로 Python, Flask를 이용하여 디버그 모드로 환경을 돌릴 때는 개발환경 계정을 이용한다. 물론 계발 환경 계정은 편리한 git 이용을 위해서 ssh-key가 등록된 상태였다. 그렇기 때문에 위에 테스트 스크립트가 아무 문제 없이 동작한 것이었다.
그런데, 실제 환경에 적용하면 웹서버 계정으로 동작하게 되면서 ssh키가 달라져야 하는 것이다. 그런데 해당 계정으로는 로그인 불가 계정이라 아래와 같은 방법을 사용하였다.
sudo -u [web-server account] ssh-keygen -t rsa
위의 명령어를 입력하고 또, 새로고침을 수행.
혹시 몰라 남겨둔 로그에 다른 오류가 나타났다.
Host Key verifyed failed.
아, 약간 멘탈이 터졌다. 뭐가 문제인지 모르겠다. 그래서 구글링을 했더니, 일반적으로 처음 접속할 때 키를 저장하는지 묻는 과정이 있는데 해당 과정을 진행하지 않았기 때문에 정상적으로 진행되지 못하고 뻗어버린 것이었다. 그래서 방법을 고민하다가. 기존 개발환경의 known_hosts 파일을 복사해서 넣었더니…정상적으로 동작한다.
참 생각지도 못한 곳에서 해매게 되었다. 그래도 뭐 해결했으니 다행이라 여긴다.
일단은… 성공적이었다. 생각보다 git pull 속도가 느리다는 걸 제외한다면. 앞으로는 어떻게 포스트를 업데이트 할지 고민해보아야겠다.