본문 바로가기

Programming

라즈베리파이로 집에서 서버 구축하기 3. nginx 설치. 포트포워딩 1. nginx 설치 예전엔 LAMP란 말이 유명했습니다. Linux + Apache + MySQL + Php를 이렇게 불렀는데, 지금은 이 조합도 많이 변한 것 같습니다. 웹 서버에서는 Apache가 진리인 것처럼 사용되곤 했었는데, 요즘엔 nginx를 쓰는 곳도 많아서 사실상 양강 구도입니다. 저도 aws에서는 nginx를 써서 웹 서버를 돌렸습니다. 사실 apache를 제대로 써본 적도 없으니 이렇게 다 아는 듯이 설명하는 것도 웃기네요. nginx도 아직 매뉴얼도 안 읽어본 상태입니다. 각설하고, 라즈비안에서 nginx를 설치해보겠습니다. $ sudo apt-get update $ sudo apt-get install nginx 이 두 명령어면 해결됩니다. 시연영상에서는 재설치라서 물어보진 않았지..
라즈베리파이로 집에서 서버 구축하기 2. 라즈비안 설치 1. 라즈비안 다운로드 라즈비안은 Noobs라는 소프트웨어를 이용해서 설치하는 방법도 있고, 해당 이미지를 직접 받아서 sd카드에 작성해서 직접 부팅시켜 설치하는 방법도 있습니다. 이 포스트에선 후자의 방법대로 진행할 것입니다. 일단 https://www.raspberrypi.org/downloads/raspbian/에서 라즈비안 이미지를 받습니다. 글을 쓰고 있는 18/12/15 기준에선 Raspbian Stretch가 최신 OS입니다. 전 서버로 구동하는 것이 목적이므로 desktop 기능이 빠진 Lite를 받을 것입니다. 다운로드 받은 라즈비안 이미지는 잘 보관해 두시면 됩니다. 2. 이미지 sd카드에 쓰기 이제 sd카드에 라즈비안 이미지를 쓰면 됩니다. 윈도우에서는 보통 Win32DiskImage..
라즈베리파이로 집에서 서버 구축하기 1. 준비단계 0. 서론 원래 저는 aws의 프리티어로 웹 서버를 하나 가지고 있었습니다. 포트폴리오 용도로 활용할 개인 홈페이지도 운영하고 프로젝트 개발할 때 테스트 서버로도 쓰기 위해서 만들어 뒀는데, 정작 개인 홈페이지는 손도 못 대봤고 대신 학기 중에 과제할 때 서버로선 종종 썼습니다. 없을 떈 필요성을 별로 못 느꼈는데, 한번 써보고 나서부턴 "없으면 아쉽다"라는 느낌을 많이 받게 되었습니다. 문제는 그 프리티어 기간이 지난달로 만료가 되어서, 이번 달부터 과금이 되기 시작한 것입니다. 가격이 싸다면야 그냥 쓰겠는데 24시간 풀가동을 전제하면 월에 약 8000원.. 1년이면 9만원이 넘는다는 계산이 나왔습니다. 예전에 웹 호스팅을 받아서 쓸 시절엔 1년에 5천원을 냈었는데.. 차이가 너무 크게 다가왔죠. (물..
파이썬 소켓 프로그래밍 - 2. 간단한 채팅 프로그램 구현(2) 지난번에 설명한게 많아서 이번엔 설명할 게 별로 없을 듯합니다. 지난 포스트에서는 소켓 통신을 이용해서 서버와 클라이언트가 각각 한번씩 메시지를 주고 받게 만들었습니다. 그렇다면 이걸로 채팅을 하려면 어떻게 해야할까요? 메시지를 한 번만 주고 받는게 아니라, 계속해서 주고 받게 만들고 보내는 메시지도 사용자가 직접 입력하게 만들면 되겠죠 이번 포스트에서는 반복적으로 주고 받는 채팅을 구현해보겠습니다. 서버 측 코드입니다. 클라이언트 측 코드입니다. 지난번과 다르게 while True문이 추가되었습니다. 즉, 프로그램을 강제종료하지 않으면 계속해서 실행된다는 이야기죠. while문 안을 보면 서버와 클라이언트가 미묘하게 다르단 걸 알 수 있습니다. 서버측 코드는 보낸 후에 상대방으로부터 수신을 기다리고 클..
파이썬 소켓 프로그래밍 - 1. 간단한 채팅 프로그램 구현(1) 작년에 컴퓨터 네트워크 강의시간에 파이썬 소켓 프로그래밍 강의를 받은 적이 있습니다. 간단한 웹 서버 구축과 채팅 프로그램 구축 둘 중 하나를 택하는 거였는데, 네트워크 개념을 다시 복습하는 겸해서 한번 글을 써보기로 했습니다. 정확히 아는 것은 아니라 틀린 정보가 있을 수도 있으니 감안해 주시고, 혹시라도 제가 잘못 알고 있는 사실이 있다면 지적해주세요. 이 포스트에선 소켓에 대한 간단한 설명만 하고 넘어가도록 하겠습니다. 1. 소켓(Socket) OSI 7계층, 혹은 5계층에 대해서 들어보신 적이 있을 겁니다. 제가 배울 때에는 7계층까지 언급은 했지만 결국 강의는 5계층에 맞춰서 진행했으므로 여기서도 5계층에 맞춰서 이야기 하겠습니다. 우리가 흔히 "인터넷"을 언급할 때에는 주로 트랜스포트 계층을 ..
Python 가상환경 venv 간단한 사용법 + 주의사항 최근에 Python 사용할 일이 늘었습니다. 아직은 학생이라서 PyCharm 학생 계정으로 1년간 프로버전을 무료로 사용 중인데, 이건 프로젝트를 생성할 때 가상환경 venv를 자동으로 생성해주더군요. 사실 가상환경을 왜 쓰는지 처음에는 이해가 안 갔는데, 요즘 docker도 써보고 node.js도 써보니 이해가 갑니다. 어떤 프로그램을 만들 때, 보통은 독자적으로 파이썬의 순수한 고유 라이브러리만 써서 만들기도 하지만, 다른 사람이 개발한 라이브러리도 같이 포함해서 만들게 됩니다. 즉, 의존성이 생기게 됩니다. 이 의존성 문제 때문에, 자기 컴퓨터에서 정상적으로 돌아가던 프로그램이라 할 지라도, 다른 컴퓨터에 설치하였을 때 그것이 정상적으로 작동하리란 보장이 없습니다. 파이썬 인터프리터도 버전에 따라 ..
파이썬을 이용해서 유튜브 플레이리스트 동영상을 받아보기 2 - Playlist 클래스와 웹 크롤링 들어가기 전에 YouTube에 공유되는 영상들은 모두 저작권을 가지고 있는 영상입니다. 이를 다운로드 받아 무단으로 배포하거나, 저작권자의 허락 없이 임의로 수정하여 사용할 경우 법적 책임을 물을 수 있습니다. 이 포스트에서 YouTube 영상을 다운로드 받는 방법을 설명하고는 있으나, 이에 대해 발생하는 문제에 대해서는 저는 책임지지 않습니다. Playlist 사용해보기 사실 처음에 이 포스트를 작성할 때는 PyTube에 Playlist 다운로드 기능까지 구현되어 있는 줄은 몰랐습니다. 그래서 웹 크롤링으로 뻘짓을 했었는데, 굳이 그럴 필요가 없더군요. Playlist 객체는 Youtube 객체와 사용 방법이 비슷합니다. >>> from pytube import Playlist >>> pl = Play..
파이썬을 이용해서 유튜브 플레이리스트 동영상을 받아보기 1 - PyTube 사용해보기 들어가기 전에 YouTube에 공유되는 영상들은 모두 저작권을 가지고 있는 영상입니다. 이를 다운로드 받아 무단으로 배포하거나, 저작권자의 허락 없이 임의로 수정하여 사용할 경우 법적 책임을 물을 수 있습니다. 이 포스트에서 YouTube 영상을 다운로드 받는 방법을 설명하고는 있으나, 이에 대해 발생하는 문제에 대해서는 저는 책임지지 않습니다. PyTube 불러오기 지난 포스팅에선 PyTube를 설치해보고, 간단하게 사용해 봤었습니다. PyTube로 유튜브 영상을 받기 위해선, PyTube 안에서 YouTube 클래스를 불러올 필요가 있습니다. from pytube import YouTube yt = YouTube('https://www.youtube.com/watch?v=846cjX0ZTrk') Yo..