Server & OS

[Android] 약정 끝난 스마트폰으로 서버 만들기 1

컨텐츠 정보

본문

[Android] 약정 끝난 스마트폰으로 서버 만들기

[출처] [Android] 약정 끝난 스마트폰으로 서버 만들기|작성자 스불

 

 

#안드로이드폰으로 그럴듯한 웹서버 운영하기 

 

먼 저 해보고 싶었던 일은 과연 순정 안드로이드폰의 상태 그대로 어디까지 가능할까라는 점이었다. 소위 ‘루팅’을 하여 폰을 해방시키면 사실상 무슨 일이든 가능한 것이 컴퓨터로서의 스마트폰이겠으나, 이 루팅이라는 절차, IT를 잘 모르는 자영업자가 손쉽게 할 수 있는 것이라 보기는 힘들다. 또 행여 벽돌이라도 되는 날에는 약정도 A/S 기간도 끝났을 터이니 난감하고 우울해지기 쉽다. 

 

다행히 안드로이드 바닥에서는 흥미로운 프로젝트들이 이미 진행중이었다. 

 

// SL4A (Scripting Layer for Android)라는 복음 

 

SL4A 는 안드로이드 디바이스상에서, 기존에 동작하는 다양한 언어로 쓰여진 스크립트들을 실행하고 생성하는 것을 허용하는 라이브러리(Library)다. 웹기술에서는 빼놓을 수 없는 스크립트를 안드로이드 디바이스로 그대로 가져와 동일 서비스 구현을 쉽게 가능하도록 하기 위해서 SL4A가 등장한 것이다. (이전에는 Android Scripting Environment 또는 줄여서 ASE 라고 불리기도 하였다.) 

 


위 그림에서 보는 바와 같이 SL4A는 Python 등의 스크립트를 실행하여 “Android Remote Procedure Call Module”에서, 스크립트의 각 코드의 실행 동작에 해당하는 “Java Android API”를 호출함으로써, “Dalvik VM”이 스크립트의 요청 동작을 동일하게 처리할 수 있게 한다. C와 Java로 구현되었고, Apache License 2.0을 따르고 있으며, SL4A가 지원하는 스크립트 언어로는 Python, Perl, Ruby, Lua, BeanShell, JavaScript, Tcl 등이 있고, PHP는 http://phpforandroid.net/ 에서 정보를 얻을 수 있다. 

 

즉 SL4A란 안드로이드에서 Python과 같은 언어들을 사용할 수 있는 환경을 만들어주는 앱으로 본 진행절차에 있어서 제일 중요한 첫번째 걸음이다. 이를 설치해서 스크립트 언어를 사용할 수 있는 환경이 되면 그 위에 Python을 설치하면 된다. 

 

아무래도 본 필진들의 상당수가 파이썬과 장고에 대한 애착이 큰 만큼, 파이썬부터 시도해 보자. 

 

먼저 메뉴에서 설정 - 응용 프로그램으로 가셔서 '알 수 없는 소스(Unknown sources)'에 체크해서 자유롭게 사용할 수 있도록 해 둔다.

 

- SL4A 설치 

 

SL4A 설치를 위해 안드로이드에서 웹브라우져를 실행하고 주소(http://code.google.com/p/android-scripting/)를 입력한다. 

 

여기서 “Download” 섹션에서 “sl4a_r5.apk” 선택하여 실행한다. (더 높은 버전이 등장하면 물론 그 것을 선택하자) 

 

- Python 설치 

 

SL4A와 마찬가지로 파이썬을 안드로이드에 설치하는 것 또한 매우 쉽다. 이 또한 누군가의 거룩한 희생과 노력이 있었기 때문이니 이들 보이지 않는 손들의 노고에 감사를 표한다. 

 

안 드로이드 마켓(구글 플레이)에서 “Python Android”이라는 검색어를 치고 나온 결과 중에서 “Python For Android”를 선택하여 설치한다. 설치가 종료되면 아래그림과 같이 “Python For Android” 아이콘을 볼 수 있을 것이다. 

 

설치한 앱을 실행하고 “install”버튼을 클릭한다. 

 

잠시 기다리면 앱에서 필요한 파일들을 다운받아 Python을 설치할 것이다. 자 이제 Python의 안드로이드 설치가 끝났다. 이상의 설치방법은 유튜브 영상(http://youtu.be/1O39oALC83w)을 참고하여도 좋다. 

 


// 안드로이드에서 돌리는 나만의 블로그 

 

안드로이드 플랫폼에서 별도의 변경 및 시스템 개조 없이 자신만의 블로그 시스템, 즉 CMS(Content Management System)를 설치할 수 있게 되었다. 

 

설치하고자 하는 CMS는 “Instant Press”로서, 이 단순한 CMS는 Python 스크립트로 구현된 오픈소스 CMS다. 여기에 우리가 의존하게 될 것은 web2py라는 웹프레임워크다. 

 

- web2py 설치 

 

PC에서 web2py를 다운로드를 받아서 SL4A와 Python for SL4A가 설치된 안드로이드 디바이스에 복사를 해야 한다. 사이트(http://www.web2py.com/examples/default/download) 를 찾아가자. PC에서 위의 홈페이지에서 web2py Source Code를 선택해 임의의 경로에 다운로드 받은 파일의 압축을 풀어 준다. PC에서 압축을 풀어준 web2py폴더를 안드로이드 디바이스의 /sdcard/sl4a/scripts 폴더 안에 복사한다. 

 



- SL4A 실행 

 

안드로이드폰에서 SL4A 어플리케이션을 실행 시킨다. 

 

- web2py.py 실행 

 

아래 그림 왼쪽처럼 scripts폴더에서 설치한 web2py폴더로 이동을 하여 web2py.py를 실행 한다. 

 

가운데 그림처럼 관리자 패스워드를 입력하여 준다. 여기서는 “123456”을 입력하였다. 

 

- Web2py 동작 화면 확인 

 

오른쪽 그림처럼 안드로이드폰에서 인터넷을 실행 시켜 “127.0.0.1:8000” 으로 접속해서 동작을 하는지 확인 한다. 

 



자, 이제 기본적 웹프레임워크가 “약정이 끝난 안드로이드폰”에 완성되었다. 이 위에 본격적인 블로그를 설치해 보자. 단순하지만 무난한 제품을 하나 골라 보았다. 

 

- InstantPress 설치 

 

http://code.google.com/p/instant-press/ 

 

위 의 홈페이지에서 “instantpress_beta6.zip” 파일을 선택해 다운로드 받은 다음 임의의 폴더에 해당 파일의 압축을 풀어 준 후, 안드로이드 디바이스로 복사한다. 설치할 안드로이드폰을 PC에 연결하여 USB저장장치로서 인식한다. 이후, 압축을 풀어준 “instantpress”폴더를 /sdcard/sl4a/scripts/web2py/applications 폴더 안에 복사한다. (아래 그림 왼쪽)

 


- web2py 실행 

 

SL4A 어플리케이션을 실행 시키고 web2py.py를 실행 시킨다.(기존 스크립트 종료 후 다시 실행) 

 

- 실행 확인 

 

안드로이드폰에서 인터넷을 실행 시켜 “127.0.0.1:8000/instantpress” 로 접속해서 동작을 하는지 확인 한다.(위 그림 오른쪽) 

 

- 현재 연결된 IP 주소 확인하기 

 

현재 안드로이드 폰의 와이파이 설정 화면에서 현재 연결된 와이파이 네트워크 항목을 선택하면 현재 사용하고 있는 와이파이 네트워크의 IP 주소를 알 수 있다. 

 

3G/4G 데이터 통신의 경우에는 별도의 네트워크 Tool을 이용하여 현재 연결된 IP 주소를 알 수 있다. 예를 들어“network info II”등의 안드로이드 앱을 마켓에서 다운 받아 사용하여 현재 네트워크에 연결되어 있는 IP 주소를 알 수 있다. 그러나 현실적으로 3G/4G로 웹서버를 운용하는 것은 무리수이므로, 와이파이로 한정하자. 

 

안 드로이드에 설치된 “/sdcard/sl4a/scripts/web2py/gluon/widget.py” 파일을 에디터 프로그램으로 오픈 한다. USB 저장장치로 인식한 후 PC의 에디터 프로그램을 사용하여 편집한다. 편집이 용이하지는 않겠지만, 아래와 같이 SL4A가 제공하는 편집기를 사용할 수 있다. 

 

818 라인의 start 함수에 들어있는 “server = main.HttpServer” 항목 안의 ip 변수를 위의 방법으로 확인한 IP 주소를 아래와 같이 수정한다. 

 


이제 SL4A 어플리케이션을 실행 시키고 web2py.py를 실행 시킨다. 만약 기존 web2py가 실행 중 이었다면, 기존 스크립트 프로세스를 종료 후 다시 실행해야 한다. 

 

실행을 확인해 보자. 인터넷이 가능한 PC 혹은 다른 안드로이드폰에서 인터넷을 실행시켜 “[instant press가 설치된 안드로이드 아이피]:8000/instantpress” 으로 접속하여 동작을 하는지 확인 한다. 

 


Instant Press는 예제로서 설치과정을 보이기 위하여 선택하였으며, 자세한 사용법은 http://code.google.com/p/instant-press/ 을 참고하기 바란다. 

 

이 상의 설치과정을 통하여 안드로이드 디바이스에서, SL4A 상의 Python을 이용하여, web2py 또는 다른 파이썬 프레임워크를 지원하는 Instant press 와 같은 본인의 목적이나 취향에 맞는 CMS (Contents Management System)을 선택하여 설치 사용할 수 있다. 

 

* Python용 블로그들 http://wiki.python.org/moin/PythonBlogSoftware 
* 데이터베이스 없이 쓸 수 있는 PHP 블로그들 http://www.instantfundas.com/2009/09/blogging-without-database-7-database.html 

 

#장고(Django)는 가능할까? 

 

안 드로이드에 Python과 단순한 웹프레임워크인 web2py를 성공적으로 설치했으니 개인 웹서버, 블로그등등을 본격 운영할 수 있는 장고(Django)에 도전할 차례다. Django는 커뮤니티가 잘 발달되어 있는 웹 프레임워크이기 때문에 이를 활용할 수 있는 다양한 자료들과 관련 오픈 소스 프로젝트들이 많기 때문에 프로그래밍에 대한 약간의 지식만 있으면 손쉽게 원하는 바를 이룰 수 있다. 

 

하지만 안타깝게도, 결론을 먼저 이야기 하면 Python을 안드로이드에 설치하는 것과는 달리 문제가 있었다. 그럼 Django를 안드로이드에 설치하는 과정에서 얻은 실패에 대한 경험을 공유하고, 대안을 모색해 보자. 

 

- Django 다운로드 

 

PC에서 브라우저를 열고 Django Site(https://www.djangoproject.com/download/)에서 Django source를 받는다. 

 


- Django 파일 복사 

 

다운받은 파일의 압축을 풀고 이 파일들을 USB를 이용해 안드로이트폰의 “sl4a/scripts/”폴더에 복사한다. 

 

- Python 실행환경 작성 

 

복사한 Django를 설치하기 위해서는 Python을 단독으로 실행할 수 있어야 하므로 이를 위해 아래와 같은 스크립트를 작성하여 사용한다. 

 

PW=`pwd` 
export EXTERNAL_STORAGE=/mnt/sdcard 
export LANG=en 
PYTHONPATH=/mnt/sdcard/com.googlecode.pythonforandroid/extras/python 
PYTHONPATH=$:/data/data/com.googlecode.pythonforandroid/files/python/lib/python2.6/lib-dynload 
export PYTHONPATH 
export TEMP=/mnt/storage/com.googlecode.pythonforandroid/extras/python/tmp 
export PYTHON_EGG_CACHE=$TEMP 
export PYTHONHOME=/data/data/com.googlecode.pythonforandroid/files/python 
export LD_LIBRARY_PATH=/data/data/com.googlecode.pythonforandroid/files/python/lib 
cd $PW 
/data/data/com.googlecode.pythonforandroid/files/python/bin/python "$@" 

 

위의 내용을 편의상 “py.sh”로 저장하고 이를 Django의 “setup.py”가 위치한 폴더에 복사한다. 
* 자세한 내용은 여기서 참조한다. http://code.google.com/p/python-for-android/wiki/RunPythonFromShell 

 

- 터미널 에뮬레이터 설치 

 

복사한 Django를 설치하기 위해서는 다음과 같은 명령을 실행해야 한다. 

 

“python setup.py install” 

 

SL4A 에서는 스크립트를 실행시킬 때 파라메터를 줄 수 없기 때문에 “터미널 에뮬레이터”를 이용해야 한다. 

 

구글 마켓에 접속해서 “Terminal Emulator”라는 검색어를 치고 해당 앱을 설치한다. 설치한 앱을 실행하면 다음과 같은 화면을 볼 수 있다. 

 


* 터미널 에뮬레이터를 통해 명령어들을 자유롭게 직접 실행하기 위해서는 “루팅”이 필요하다. 

 

- “setup.py” 실행 

 

드디어 Django를 설치하기 위한 모든 준비가 끝났다. 떨리는 마음을 진정시키고 하나씩 차근차근 실행해보도록 하자. 

 

a. 터미널 에뮬레이터 실행 
터미널에뮬레이터를 실행한다. 

 

b. Django를 복사한 파일로 이동한다. 
“cd”명령을 이용해 설치한 경로로 이동한다. 정상적인 경우라면 폴더의 전체경로는 다음과 같을 것이다. 

 

“/mnt/sdcard/sl4a/scripts/django복사경로” 

 

c. “sh py.sh setup.py install”입력후 실행 
Django는 설치를 위해“sh py.sh setup.py install”을 실행한다. 잠시후 바로 아래와 같은 화면을 보게 될 것이다. 

 



결론적으로 이야기하면 Django설치를 하기 위해 필요한 모듈을 찾지못해 에러가 발생한다. 

 

현 재 사용하고 있는 “Python for Android”에서 Django설치를 위해 필요한 모듈을 제공하지 않기 때문에 이러한 에러가 발생하는 것이다. 이 문제를 해결하기 위해서는 필요한 모듈들을 “Python for Android”에서 필요한 형태로 패키징해서 사용해야 한다. 

 

Django 는 많은 기능을 가지고 있는 무거운 프레임워크기 때문에 필요한 모듈들이 무엇이 있을지 또 각각의 모듈들이 안드로이드에서 원하는 대로 동작할지에 대한 보장이 없기 때문에 나름 생업이 있는 사람의 하나로서 더 이상 진행하는 것이 무리라고 판단되어 일단 중지하였다. 혹 이상의 과정을 통해 필자가 실수를 하거나 다른 방법을 통해 Django를 성공적으로 설치하여 사용한 독자분이 있다면 관련자료를 공유해주시면 감사하겠다. 

 

// Django 설치에 대한 제언

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
가을에 피는 국화는 첫 봄의 상징으로 사랑받는 개나리를 시샘하지 않는다. 역시 봄에 피는 복숭아꽃이나 벚꽃을 부러워하지 않는다. 한여름 붉은 장미가 필 때, 나는 왜 이렇게 다른 꽃보다 늦게 피나 한탄하지도 않는다. 그저 묵묵히 준비하며 내공을 쌓고 있을 뿐이다. 그러다가 매미소리 그치고 하늘이 높아지는 가을, 드디어 자기 차례가 돌아온 지금, 국화는 오랫동안 준비해온 그 은은한 향기와 자태를 마음껏 뽐내는 것이다. (한비야)