WSGI, foreign DB

2014. 2. 19. 18:15 from 카테고리 없음


그 동안 Django의 내부 server를 돌려서 웹으로 접속 했었는데,

좀더 안정적인 서비스를 위해서는 아파치와 같이 오픈 소스를 통해서 수년간 진화해온 웹서버를 쓰는것이 필요하다고 한다.


그리고 웹서버와 서버에서 동작하는 언어 사이의 인터페이스인 sgi 에 대한 이해도 필요해 best practice를 가지고 따라해보면서 이해해 보았다.


아파치의 config 파일을 세팅하면서 txt 파일에 암호처럼 쓰여 있던 세팅 값들이 이제는 읽히는 수준이 되었고 아파치로 3가지 웹서버를 80포트와 다른 3000번 이상의 2개 포트로 어싸인 해서 동작 시키는데 성공했다. 처음에는 error 로그 조차 볼 줄 몰라서 시간을 해맸음은 물론이다. 


그리고 Python과 WSGI를 통해서 json 방식으로 웹서버에 변수 값을 돌리고 WSGI로 연결된 서버 내부 코딩들을 동작시키고 다시 WSGI를 통해서 필요한 변수를 json으로 돌려 받는 방식도 구현해보았다. 


이젠 DB의 구조화가 시급하다는 생각이 들어,

역시 기존의 best practice에서 DB의 구조를 참조하며 익혔다.


id와 기본 table 설계와 그 밑으로 파생되는 table의 연계를 어떻게 처리하는지를 이제는 어렴풋이 남아 이해 할 수 있었다.


이제는 앞서 어설프게만든 서비스를 좀더 안정적으로 실전 설계 구현을 해볼 차례이다. 

Posted by cjlook :


이제 튜토리얼이 아닌 내가 구상한 서비스를 초보적이지만 만들기 시작했다.


꼭 selenium이 아니어도


requests, urllib으로 웹 소스를 받아와서 beautiful soup로 특정 부분을 가져와서,

python의 강력한 string 편집 기능으로 원하는 부분만 오려내서,

mysql에 저장하고

Django로 보여주는...


장족의 발전이 아닐 수 없다. 

머리로 생각한걸 실제로 구현 하다니....


물론 아직 슥삭 하고 만들 수준은 아니고, 

사실 며칠동안 삽질에 삽질과 노가다를 거치며 하나씩 구현해내고 있다.


늙은 나이에 기초 없이 무작정 튜토리얼 파면서 배우다 보니 개념적으로 이해가 안가는 부분이 있어 내가 광팬인 생활코딩(opentutorials.org) 사이트에서 40시간에 웹서비스 만들기 실전 강의를 들었다.


이제서야 


아파치가하는 역할인 webserver가 뭐고 포트 개념은 뭐고 왜 80port가 많고 나는 3000번 이상 port를 사용하고 있는지 이해가 가기 시작했다.


그리고 그 옆에 붙는 서버언어들, PHP, Python 의 역활과 

브라우저와 클라이언트 언어들 이 이해가 갔다.


그리고 linux 를 쓰는 이유와 OS의 정확한 개념도 알게 되었고,


복잡하기만 했던 cafe24의 웹호스팅, 가상서버 무섭기만 했던 Amazon E2C 서비스 까지.....


그리고 실제 구현하는 서비스를 만들다 보니 클라이언트 부분 특히 script들 JAVA Script와 JQuery를 알아야 겠다는 생각이 들어서 이 두개의 강의도 생활코딩에서 들었다. 


DOM 개념까지 파악하고 나니 왠만한건 긁을 수 있겠다는 자신감이 생겼다.


이제 개발자 흉내는 낼 수 있겠는데 사실 알고나니 너 큰 장벽이 보인다.


DB 설계 경험이 없다보니 실제 많은 유저가 엄청난 트래픽을 일으키면 DB 관리나 서버 관리, 보안 관리는 어떻게 해야할지 감이 안온다...


뭐 유저 모은다음 해야할  괜한 걱정을 하고 있는건가? ㅋㅋ 

아무튼 이쪽도 더 파면서 위에것들 depth도 만들어볼 생각이다..   

Posted by cjlook :


Django 예제도 훑어 봤고 python 예제도 돌려봤으니 이제 DB 쪽을 파볼 차례다.


그동안 DB를 다룰줄 몰라 excel에 넣다 뺏다 하기도 했고 Django에서 기본으로 제공하는 sqlite를 사용했었다.


얼핏 줏어들은 얘기로는 mysql을 db로 다들 사용하는것 같아 python에 Mysql을 붙여서 예전  excel에 저장하도록 만들었던것을 mysql DB로 바꾸어 해보기로 했다.


일단 mysql 설치 시도.


mysql을 돌릴려면 뭔가 서버가 돌고 있어야 하며 mysql> 이런 커맨드창까지 띄울 필요가 있었다.


삽질을 여러번 한 후 Mysql server를 mysql installer를 사용해서 깔아서 실행해서 서버를 동작 시키고 최근에 나온것으로 보이는 mysql command line을 실행시켜 mysql> <-- 이런 커맨드를 띄웠다.


그럼 이제 여기에 뭔가 DB를 쌓으면 되는구나 라는 느낌이 왔다.


mysql tutorial을 몇개 돌려봤다. 


create database xxxl

show databases

use xxxl

select * from table.

....


Database, table 이런 개념도 몰랐고 select 따위의 명령어도 처음에는 헷갈렸지만 몇 번 삽질 하고 나니 이해가 된다.


mysql workbench로 내가 만든 db랑 table이 잘 쌓이고 있는지도 볼 수 있었다. (나중에 안거지만 workbench에서 data 속성이나 이름 등등 마음대로 고칠 수 있었다.)


그럼 이제 python에서 mysql을 불러오고 저장하는것을 시도해보았다.


python mysql connector 라는 모듈을 통해 서로 인터페이스가 연결되는것 같았다.


http://dev.mysql.com/doc/refman/5.5/en/connector-python.html


위 링크에 설며이 잘되어 있고 따라해볼 수 있는 tutorial들이 많다.


요약하면 connector 모듈로 연결하고. cusor를 붙이고 명령어들을 excute 하고 나온 결과를 python 변수들과 연결함으로써 두개가 맞물려 돌아가는것 같다.


아직은 cursor의 매소드들을 모르기 때문에 그냥 insert나 query는 위에 tutorial에 있던 문법을 사용해서 몇시간의 노가다를 통해 excel이나 txt 파일을 사용했던 저장 공간을 mysql을 활용해서 구현하는데 성공했다.


그럼 이제 Django를 활용할 차례다.


일단 Django의 기본 예제에서 SQL lite 대신에 mysql을 연결하고 해봤다. 어찌어찌 연결되서 내 서버의 mysql db에 있는 값들을 web에서 띄워주는데 성공...


이제 내가 만들고 싶은 App을 만들고 db 설계하고 Django로 web에 표현하는 것을 시도해볼려고 한다. 


이쯤하니 당연한 수순으로 흰종이에 page 위에 뭘 보여줄까를 그릴 수 밖에 없게 되었다. 자연스럽게 이렇게 되는거구만 ㅎㅎ


다음에는 그런 사이트를 구성하는 포스팅이 아마 될것이다.








Posted by cjlook :