서버는 상당히 중요한 부분으로 작용합니다. 온라인으로 구동되는 프로그램의 경우, 필수적으로 서버를 활용해야하기 때문이죠. 웹사이트, 웹어플리케이션, 스마트폰 app을 비롯한 여러 방면에서 서버는 중요합니다. 다만, 앞에서 언급한 활용을 제외하고도 서버는 여러모로 좋은 점이 있습니다.
개인적으로 가장 많이 활용하는 것은 24시간 구동되어 데이터를 수집 및 계산하는 과정에서 활용하는 방법입니다. 물론, 개인이 가지고 있는 컴퓨터를 활용하도 좋지만 경우에 따라서는 결과를 도출하는데 오랜시간이 걸릴 수도 있기에 우분투 서버, 윈도우 서버 혹은 그밖의 환경을 활용하면 도움이 될 수 있습니다.
서버의 종류에는 크게 두가지로 구분할 수 있습니다. 가상서버와 물리서버입니다. 세분화되면 보다 다양하게 구분되어 있지만 서비스하는 업체의 상품에 따라 구분되는 경우도 있기 때문에 기본적으로 가상서버와 물리서버로 구분하여 접근하면 도움이 될 수 있습니다.
개인이 자유롭게 서버를 조작, 서비스하거나 저와 같이 24시간 스크립트를 구동해야한다면 클라우드 호스팅이 아닌 vps 혹은 물리서버를 대여하는 것이 좋습니다. 가격면에서 vps를 이용하는 것이 좋으며, 처음에 접근하기 좋은 곳은 amazon의 라이트테일(litetail)을 추천합니다.
우분투 서버 준비
개인적으로 라이트테일을 선호하지만, 서버를 대여해주는 곳은 전세계에서 많이 있기 때문에 사용자의 목적에 맞는 곳을 선택하는 것이 좋을 것 같습니다. 업체에 따라서는 os가 한정되는 곳도 있으며, 사용자가 원하는 os를 올려 설치할 수 있는 곳도 있습니다.
후자의 경우 대표적으로 벌쳐(vultr)이 있습니다. 윈도우 os를 서버에 올려 사용할 수 있는데, 그러기 위해서는 어느정도의 램이 받쳐주는 서버를 구매하셔야 합니다. 최소 4GB는 되어야겠죠. 당연하지만 리소스가 증가하는 만큼 가격도 늘어나게 됩니다. 이용약관등을 꼼꼼하게 살펴보는 것이 좋습니다.
업체를 선정한 후, os를 선택하여 서버를 설치할 수 있습니다. 가볍게 이용하기 위해서는 리눅스기반으로 접근하는 것을 추천하며, ubuntu와 centos 중 택1을 하시면 됩니다.
우분투(ubuntu) 파이썬(python3) 설치 및 실행
우분투 서버가 준비되었다면 이제 실제 목적인 파이썬 스크립트를 실행할 준비를 합니다. ubuntu의 최신버전은 20으로 라이트테일의 경우 서버를 설치하면 파이썬도 같이 설치되어 있습니다. 파이썬 버전을 확인하면 설치유무로 확인할 수 있습니다.
파이썬3이 설치된 것을 확인했네요. 이제는 선택을 할 필요가 있습니다. 파이썬 가상환경으로 구동할지, 단순하게 그냥 사용할지의 부분입니다. 가상환경을 사용한다는 것은 각 스크립트별로 환경을 구분할 수 있기 때문에 도움이 될 수 있지만, 가볍게 사용할 때는 귀찮은 작업이 될 수 있습니다.
라이트테일의 경우 가장 저렴한 os서버의 경우 3.5$로 책정되어 있습니다. 낮은 성능이지만 가볍게 24시간이상을 구동해야하는 스크립트라면 충분히 도움이 될 수 있습니다. 또한, 길게 사용하지 않을 수 있기 때문에 여러 세팅을 한꺼번에 하는 것은 시간적으로 불이익일 수 있습니다.
우분투(ubuntu)서버에 파이썬 스크립트 올리기
우분투 서버에서 .py파일로 파이썬 스크립트 파일을 실제로 작성할 수 있습니다. vi, nano 등의 에디터를 이용해 작성한 후 실행하면 됩니다. 다만, 능숙하지 않다면 별도의 환경에서 코드를 작성한 후, 검토를 거쳐 py파일을 서버에서 실행하실 것을 추천드립니다.
여기서 주의할 부분은 개발환경과 서버환경에서 호환되지 않는 기능이 있을 수 있습니다. 이 부분은 체크해두는 것이 좋겠죠.
서버에 파일을 옮기는 방법은 다양합니다. 저는 개인적으로 '파일질라(Filezilla)'를 사용하고 있습니다. 로컬환경의 컴퓨터와 서버를 연결해 파일을 디렉토리를 생성 및 삭제, 파일의 이동등을 할 수 있습니다. 서버 연결을 위해서 몇가지 설정을 거치면 탐색기 화면을 통해 쉽게 조작할 수 있습니다.
파이썬 실행하기
우분투 서버에서 py파일을 실행하는 것은 그다지 어렵지 않습니다. 명령어를 사용해 손쉽게 실행할 수 있는 부분입니다. 다만, 터미널을 종료하게 되면 실행중인 스크립트도 중지가 됩니다. 터미널을 지속적으로 연결해둔다면 24시간 구동한다는 이점이 사라진다고 할 수 있겠죠.
해결방법은 nohup을 이용하는 것입니다. 서버의 백그라운드 실행이라고 생각하시면 됩니다. 터미널을 종료한 후에도 프로세스가 지속적으로 구동되게 되며, print와 같은 출력문은 해당 폴더의 nohup.out 파일로 기록되게 됩니다. 아래는 nohup 실행방법과 프로세스 확인 방법, 실행중인 출력문 확인하는 방법입니다.
# 일반적은 파이썬 nohup 실행
nohup python3 이름.py &
# nohup.out 보기
tail -f nohup.out
# 프로세스 구동 확인방법
ps -ef | grep 이름.py
위 명령어 중 상단에 위치한 '&'이 빠지면 안됩니다. &을 빼고 실행한 후, 터미널을 종료하면 프로세스도 종료되게 됩니다. 가끔 실수하는 부분일 수 있어, 언급합니다.
nohup.out 파일을 보기 위해 사용되는 명령어는 위와 같습니다. 다만, 100여개가 모여야 보여지기 때문에 기다림이 필요합니다. 실시간으로 출려문을 확인하고 싶다면 실행할 때 '-u'라는 명령어를 붙여야 합니다. 아래를 참고하세요.
# 실시간 nohup.out 파일 확인을 위한 명령어
nohup python3 -u 이름.py &
추가로 tail을 이용해 nohup.out 파일을 확인하는 과정에서 기본적으로 보여지는 양보다 더 많은 줄을 확인하고 싶을 때는 다음 명령어를 활용하면 도움이 될 수 있습니다.
# 원하는 만큼의 nohup.out 내용 확인하는 방법
# 숫자 100은 임의로 조작하여 양을 선정할 수 있습니다.
# 아래 명령어의 의미는 nohup.out 파일의 내용을 최근순으로 100줄 보여달라는 의미입니다.
tail -n 100 nohup.out
> 단순히 24시간 스크립트를 구동하는 것이라면 이정도만 알고 있어도 사용함에 큰 지장은 없으리라 생각되네요. db, 서비스 등을 구현하기 위해서는 블록을 쌓듯 하나씩 추가하면 가능할 것입니다.
+) 추가 사항
처음 서버를 설치하여 사용하게되면, 파이썬 라이브러리들을 설치해야합니다. 이 경우에 우리가 사용하는 것은 pip 명령인데, 이부분에 대해서 업그레이드 및 설치를 필요로 하게 됩니다. 물론, 아닌 경우도 있겠죠.
만약, pip을 설치해야한다는 표시가 나타나면 다음과 같은 순서로 진행하시면 도움이 될 수 있습니다.
1. apt update 패키지 목록을 업데이트하게 됩니다.
sudo apt update
2. python3 pip을 설치합니다.
sudo apt install python3-pip
3. 마지막으로 pip이 잘 설치되었는 지 확인합니다. 꼭 필요한 것은 아닙니다.
pip3 --version
> 위 과정을 거치며 python3 용 pip을 설치하여 필요한 파이썬 라이브러리를 설치할 수 있습니다.
댓글