Server & OS

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

페이지 정보

본문

 

 


// Django 설치에 대한 제언 

 

Android에서 SL4A와 Python을 이용해 강력한 웹프레임워크의 하나인 Django를 설치하는 과정을 진행하면서 느낀 것은 생각보다 많은 시간과 노력이 필요하다는 것이었다. 

 

요 즘 웬만한 자료는 구글을 통해 검색할 수 있고, 이를 통해 얻은 지식으로 문제를 해결해나갈 수 있는데 Android에 Django를 설치하는 내용에 관해서는 자료가 거의 없었기 때문에 모든 내용을 하나씩 확인하면서 앞으로 나아가야 했기 때문에 진척속도가 더뎠다. 

 

특별한 목적이나 사명의식을 가진 사람이 아니라면 Django말고 “Web2PY”, “cherrypy”과 같은 웹프레임워크를 사용하는 것이 훨씬 더 정신 건강에 좋을 것이라 생각된다. 

 

“Web2Py”는 Android에서 잘 동작하는 것을 확인했고 또한 프레임워크자체도 훌륭하기 때문에 일반적인 웹서비스를 만드는데 손색이 없을 것이다. 

 

#DB에 대한 고찰, Mysql은 설치 가능할까? 

 

Django를 비롯한 많은 웹 프레임워크들은 DB와 연동을 한다. 가장 많이 사용되는 DB가 바로 MySQL인데 이 MySQL을 안드로이드에서 설치하여 사용할 수 있는 가에 대한 내용을 간단히 조사해 보았다. 

 

MySQL 설치에 관한 내용을 찾아 보았지만 자료를 찾을 수 없었고 대부분의 찾은 자료중에는 안된다는 의견이 많이 발견되었다. 안드로이드에서 사용할 수 있으려면 안드로이드앱 파일로 사용할 수 있어야 하는데 현재까지 MySQL을 안드로이드앱으로 개발해놓은 자료는 열심히 찾아보이지만 실패했다. 

 

아 니 어쩌면 안드로이드에서 MySQL을 설치하여 운영한다는 것 자체가 정상적인 발상이 아닐 수도 있다. 그래서 잠시 생각을 정리하여 MySQL과 같은 일반적으로 많이 사용하는 트랜잭션을 지원하고 다중 사용자 환경에서 동작하는 DB들의 특성을 생각해보면 이는 기존의 코드를 그대로 활용할 수는 없을 것이라 생각하였다. 

 

“샌 드박스(Sandbox)”와 SDCard가 주요한 원인이 될 것이다. 샌드박스는 일반적으로 실행중인 프로그램을 분리하기 위한 보안 매커니즘을 의미하는 것으로 검증되지 않은 코드를 실행하거나, 신뢰할 수 없는 어플리케이션등을 실행할 때 많이 쓰이는 기법중의 하나이다. 

 

“Sandbox”는 실행하려는 어플리케이션에서 디스크, 메모리, 네트워크등의 리소스에 액세스하는 것을 세심하게 제어할 수 있도록 구성하며 이는 일종의 특별한 목적의 가상화(Virtualization)라고도 볼 수 있다. 

 

안드로이드에서는 어플리케이션을 바로 그 샌드박스에서 실행을 시킨다. 따라서 어플리케이션의 영역이 OS와는 격리되고 허가받지 않은 리소스에는 액세스가 불가능하다. 

 

샌드박스로 인하여 데이터베이스에서 필요한 파일들을 SDCard에 설치하게 될텐데 이는 SDCard의 Writing 문제로 인하여 디스크 액세스가 굉장히 빈번한 DB에서 많은 문제들을 가져올 것이라 예상된다. 

 

// SQLite 추천 

 

안드로이드에서 DB를 사용해야 한다면 sqlite(http://www.sqlite.org/)가 최선의 선택이 될 것이다. 위에서 설치한 python for android에서 이미 sqlite3를 지원하며 안드로이드 플랫폼에 sqlite가 기본 탑재된 데이터베이스이기 때문이다. 일반적인 RDBMS에 비해 대규모 작업에는 적합하지 않지만, 중소 규모라면 속도에 손색이 없다. 또 API는 단순히 라이브러리를 호출하는 것만 있으며, 데이터를 저장하는 데 하나의 파일만을 사용하는 것이 특징이다. 버전 3.3.8에서는 풀텍스트 검색 기능을 가진 FTS1 모듈이 지원된다. 컬럼을 삭제하거나 변경하는 것 등이 제한된다. 

 

다만 본격 트랜잭션이 필요하거나 데이터의 안정성등이 중요한 이슈라면 sqlite를 사용하는데 신중을 기해야 할 것이다. 

 

#본격적인 1인 1서버 - 안드로이드를 아예 우분투로 바꿔 보자 

 

안 드로이드는 폰을 위한 이상과 같이 다양한 제약이 있을 수 밖에 없다. 리눅스 등 범용 OS가 가지고 있는 보편성은 늘 부럽기 마련이다. 그렇다면 아예 폰에 우분투를 깔아 버리는 것도 방법이다. 그렇다면 기존에 PC와 서버에서 가능했던 모든 것, MySQL이니 Django니 쓸 수 있을 터이니 말이다. 

 

안 드로이드 폰에서 우분투를 사용하는 방법은 크게 두 가지가 있다. 한 가지는 안드로이드 폰에서 하드웨어만 사용 하고 안드로이드 없이 우분투 OS를 그대로 올리는 방법이 있고 다른 한가지는 안드로이드 OS는 그대로 둔 상태에서 우분투를 루프 디바이스(loop device) 형태로 하여 사용하는 방법이다. 우분투를 이미지 파일을 마운트하여 그 이미지 파일을 통으로 OS로 쓰는 것. 

 

전자의 경우 커널 빌드 및 드라이버를 모두 수동으로 잡아야 하기 때문에 작업의 난이도도 높고 시간이 많이 걸리는 반면 후자의 경우 쉽고 간단하게 안드로이드 폰에서 우분투를 구동시킬 수 있어 많이 이용되는 방법이라고 볼 수 있다. 

 

아 래에서는 후자의 방법에 대해서 설명을 진행할텐데, 각자 작업을 진행하기 위한 참고할 수 있는 다양한 사이트 및 방법을 제공해 주는 것을 목표로 하고 있다. 우분투 설치의 기본 진행 과정은 AndroLinux.com 사이트에서 상세 사항을 배울 수 있다. 

 

// 사전 작업 

 

(1) 안드로이드 폰 준비 
본 글에서는 Nexus S (GT-I9020 – Android ver 2.3.3)으로 진행하였다. 

 

(2) PC(Window OS)에 작업 환경 설정 

 

A. 각 모바일 폰 별 제조사에서 제공하는 Driver를 PC에 설치 한다. 
(Driver 참고: http://developer.android.com/sdk/oem-usb.html#InstallingDriver) 

 

폰의 Main Menu -> ‘Setting’ -> ‘Application’ -> ‘Development’에 진입하여 ‘USB debugging’을 체크한 후 USB로 PC와 연결하여 드라이버를 설정한다. 

 

완료 후 PC의 ‘내 컴퓨터’에서 마우스 오른쪽 선택 -> ‘관리’ -> ‘장치 관리자’ 진입 시 상기와 같은 항목이 정상적으로 나타나면 된다. (폰에 따라 조금 다르게 나타날 수 있다.) 

 

B. 안드로이드 폰에 쉘명령을 진행하기 위해 adb.exe 다운로드 
http://developer.android.com/sdk/index.html 에서 Android SDK를 다운 -> 압축 해제 혹은 실행 파일을 통해 SDK Manager를 실행하여 Android SDK tools와 Android SDK Platform-tools를 다운받는다.(adb는 platform-tools안에 있다.) 
* adb(Android Debug Bridge)는 안드로이드 폰을 다루기 위한 툴로 파일관리, 데이터베이스 관리 등을 할 수 있는 유틸리티다. 자세한 내용은 하기 링크를 참고 하면 된다. 
(ADB 참고: http://developer.android.com/guide/developing/tools/adb.html) 

 

C. A, B 동작 확인 
시 작 -> 보조프로그램 -> 명령프롬프트를 실행한 후 B에서 말한 adb가 있는 폴더로 경로를 변경한다. 이 상태에서 폰을 USB로 연결 하고 하기와 'adb shell'입력 시 # 이 나타나고 입력 받을 준비가 되면 정상적으로 인식이 된 것이다. (아래 그림 밑줄)

 


그 러나 위 그림 윗줄처럼 에러가 발생할 경우 정상적으로 인식되지 않은 것이다. A에서 정상적으로 드라이버가 설치 되었는지 확인을 해야 한다. 위 그림 아랫줄처럼 정상적으로 adb가 동작하게 된다면 안드로이드 폰에서 우분투를 사용하기 위한 준비가 된 것이다. 그럼 차례로 진행을 해보도록 하겠다. 

 

// 루팅(Rooting) 

 

안 드로이드 폰에서 우분투를 사용하기 위해서는 폰이 루팅 상태여야 한다. 루팅이란 리눅스를 기반으로 하는 안드로이드에서 최고 권한인 루트권한(super user)을 얻는 것을 말한다. 루팅은 잘못 할 경우 폰에 이상이 생겨 문제가 부팅이 되지 않는 등의 문제를 일으킬 수 있으며 이럴 경우 서비스센터를 통한 수리 시 불이익을 받을 수 있다.

 

루팅 진행 방법에 대해서는 본 글에서 커버 하는 부분이 아니므로 루팅 방법에 대해서는 명시하지 않도록 하겠다. 

 

// 우분투의 구동 

 

안드로이드 시스템에서 우분투의 구동은 RootStock을 이용하여 만든 우분투 이미지를 안드로이드의 파일시스템에 복사를 하고 chroot를 이용하여 해당 이미지를 오리지널 우분투 형태로 사용하게 된다. 작업에 필요한 파일은 http://downloadandroidrom.com에서 제공해 주고 있는 http://downloadandroidrom.com/file/AndroidUbuntu/ubuntu.zip를 사용할 수 있다. 

 

(1) 이미지 복사 
A. 상기 사이트에서 다운받은 Ubuntu.zip 파일의 압축을 푼다. 

 

B. 압축을 풀린 'ubuntu'폴더를 안드로이드 폰의 SD card에 복사 한다. 복사는 폰의 SD card의 루트에 복사가 되어야 한다. 즉 루트에 'ubuntu'폴더가 보이고 그 안에 바로 6개의 파일들이 존재하는 형태 이다. (복사는 USB Mass Storage를 사용하면 된다.) 

 

C. 상기 사이트에서 다운받은 ubuntu.img의 경우 작업을 해 본 결과 우분투로 부팅한 후에 그 상태에서 에서 사용할 수 있는 파일 시스템 공간이 제약적이어서 사용에 불편함이 있다. 더 큰 용량을 위해 rootstock을 이용하여 ubuntu.img를 만드는 방법은 우분투 구동에서 (4)를 참고 하시면 된다. 

 

(2) Busybox 설치 
A. Busybox는 adb 상에서 제한된 다양한 쉘 명령어를 사용할 수 있도록 하는 유틸리티이다. Busybox를 이용하면 유닉스에서 지원하는 많은 쉘명령어를 adb 쉘에서도 그대로 사용할 수 있다. Busybox는 안드로이드 apk를 통해 설치하는 방법, 바이너리를 받아 설치하는 방법, 코드를 컴파일 해서 사용하는 방법이 있으나 바이너리를 설치하는 방법으로 진행하였다. Busybox 파일은 하기 사이트에서 받고 설명대로 진행하면 된다. http://blog.naver.com/PostView.nhn?blogId=hsmnim&logNo=30112583717 

 

B. Busybox를 설치 후 PATH를 설정하고 나면 이후 동작하는 쉘 명령어는 하기와 같이 몇몇 의미 없는 캐릭터가 나오는 것을 확인할 수 있다.

 

▲ 윈도 터미널 이용 화면

이 는 ANSI color code로 색상을 나타내기 위한 코드이나 윈도우 터미널에서는 ANSI color code를 지원하지 않기 때문에 발생하는 현상이다. 기본 동작은 문제가 없으나 차후 MySQL등을 설치 시에 비밀번호 설정 등의 화면이 정상적으로 동작하지 않는다.

 

또한 보기에도 불편한 관계로 터미널에서 adb 쉘 명령어를 입력하는 대신에 adb를 지원하는 putty를 사용하면 정상적으로 화면이 나타나도록 사용할 수 있다. 

 

adb 활성화 된 putty 다운로드 (https://github.com/sztupy/adbputty/downloads) 

 

putty를 이용하여 adb 접근시 Host name: transport-usb , Connection type: Adb 로 지정한다.

 

<adb 활성화="" 된="" putty="" 이용="" 화면="" style="margin: 0px; padding: 0px; font-family: Dotum, AppleGothic, sans-serif; font-size: 14px; line-height: 22px; background-color: rgb(255, 255, 255); ">
▲ Adb 활성화 된 Putty 이용 화면

(3) 우분투 띄우기 
우 분투 이미지부팅은 처음 다운받은 우분투 이미지에 함께 포함되어 있는 스크립트를 이용하면 쉽게 부팅을 할 수 있다. 해당 스크립트는 downloadandroidrom에서 제공해주는 스크립트로 해당 이미지를 loop device로 사용하기 위한 명령 및 각종 폴더 생성, 안드로이드 파일시스템에서 우분투를 구분해 사용하기 위한 chroot 설정 등이 포함되어 있다. 

 

Putty 로 접속 후 (2)에서 Busybox설치, PATH까지 잡아준 상황이라면 바로 우분투를 사용할 수 있게 된다. 쉘에서 'ubuntu' 폴더를 복사 한 /sdcard/ubuntu폴더로 이동 후 ubuntu.sh을 실행한다. ubuntu.sh은 ubuntu.img를 사용하기 위한 폴더 생성 및 'system' 폴더에 대한 권한 설정 등을 진행하게 된다. 

 

▲ 우분투 PATH 설정 후 bootubuntu 명령을 실행해 쉘환경으로 진입한 결과

그 림 상단우측과 같이 PATH가 잡힌 상태에서 카피한 우분투폴더에 진입하여 Ubuntu.sh을 실행하게 되면 그림과 같이 안드로이드 OS에 손상을 가하지 않는 다는 메시지와 함께 다시 안드로이드 쉘화면으로 나타나게 된다. 여기서 bootubuntu 명령을 통해 우분투 쉘환경으로 진입할 수 있다. 

 

위와 같이 나타나면 안드로이드 폰에서 우분투를 정상적으로 실행 시킨 것이다. 이제 쉘을 통해서 우분투를 사용하면 된다. 안드로이드 폰에서 와이파이를 통해 네트워크와 연결을 하게 되면 우분투에서도 네트워크를 사용할 수 있는 환경이 된다. 

 

(4) ubuntu.img 생성 
ubuntu.img는 안드로이드 폰에서 우분투를 사용하기 위한 이미지 파일이다. 해당 파일은 위에서 설명한 바와 같이 http://downloadandroidrom.com/file/AndroidUbuntu/ubuntu.zip 에서 다운을 받을 수 있지만 사용해 본 결과 해당 파일로 사용을 할 경우 안드로이드상의 우분투에서 사용할 수 있는 파일 시스템 공간이 제한적이어서 다양한 패키지 설치에 제한이 있다. 따라서 필진은 우분투가 설치된 PC로부터 별도의 ubuntu.img를 만들어 사용하였다. ubuntu.img 생성은 rootstock명령을 이용하여 생성할 수 있다. 이미지 생성시 --seed option을 이용하여 다양한 패키지를 포함한 이미지를 만들 수 있지만 아무런 패키지없이 생성 후 아래 방법으로 우분투 상에서 다운로드 받는 것을 추천한다. 

 

생성 방법은 https://wiki.ubuntu.com/ARM/RootStock와 https://wiki.ubuntu.com/ARM/RootfsFromScratch를 참고 하면 된다. 간략하게 우분투가 설치된 PC에서 하기와 같이 rootstock을 실행한다. 

만 약 rootstock이 동작하지 않을 경우 apt-get install rootstock을 이용하여 설치하시면 된다. 대략 수십 분이 걸리며 완료 시 armel-rootfs-2012~~~.tgz라는 파일이 생성되는데 이를 ubuntu.img로 압축을 푸는 형태이다. 

 

root@ubuntu:~# dd if=/dev/zero of=ubuntu.img bs=1MB count=0 seek=4096 
root@ubuntu:~# mke2fs -F ubuntu.img 
root@ubuntu:~# mount -o loop ubuntu.img /mnt 
root@ubuntu:~# tar -C /mnt -zxf armel-rootfs-2012~~~.tgz 
root@ubuntu:~# umount /mnt 

 

dd명령 수행 시 seek값을 조절하여 이미지의 크리를 변경할 수 있다. 4096으로 할 경우 4기가 Ubuntu.img가 생성되며 1024는 1기가의 이미지가 생성된다. 

 

// 각종 패키지 및 어플리케이션 설치 

 

우분투가 구동이 되었으면 이제 각종 패키지 및 어플리케이션(wordpress)을 설치해 볼 것이다. 

 

(1) 각종 패키지설치 

 

A. 우분투로 실행 후 각종 패키지 설치 및 업그레이드시 기본 리파지토리로 사용시 동작이 잘 안되는 경우가 있다. /etc/apt/sources.list에 리파지토리를 하기 주소로 변경 후 사용하는 것이 좋다. 

 

deb http://old-releases.ubuntu.com/ubuntu/ karmic main universe 

 

B. 폰과 PC를 항상 연결해 두는 것이 아니기 때문에 필요시 다른 장치에서 접속할 수 있도록 openssh-server를 설치 하면 다른 장치에서 ssh를 통해 접속하여 사용할 수 있는 환경을 갖추게 된다. 아이디와 비밀번호를 사용하여 접속을 하기 원할 경우 루트계정에 대해 비밀번호를 설정하면 된다. 

 

root@localhost:/# apt-get update 
root@localhost:/# apt-get install openssh-server 

 

설치가 완료 되면 다른 장치에서 ssh 접속 유틸리티 등을 이용하여 루트 아이디와 비밀번호를 통해 접속을 할 수 있다. 안드로이드 폰에서 'connectBot'이라는 어플리케이션등을 사용할 수 있다. 

 

C. 다양한 패키지들도 우분투에서 사용하는 것과 동일한 방식으로 설치가 가능하다. 

 

(2) 워드프레스 설치 

 

기본 우분투 사용환경이 되었으니 오픈 소스기반의 설치용 블로그인 워드프레스를 설치해 보도록 하겠다.

 

A. 워드프레스를 위해서는 LAMP (Linux-Apache-MySQL-PHP)와 php-gd가 필요하다. 아래와 같이 먼저 설치를 해야 한다. 

 

root@localhost:/# sudo tasksel install lamp-server 
root@localhost:/# sudo aptitude install php5-gd phpmyadmin 

 

Lamp server설치 시 설치 실패를 하는 경우가 있는데 이는 MySQL에서 bind-address에 대해 네트워크 소켓을 사용하지 못해서 발생하는 것이다. /etc/mysql/my.conf에서 bind-address를 주석처리 하고 skip-networking을 추가하면 된다. 

 

# Instead of skip-networking the default is now to listen only on 
# localhost which is more compatible and is not less secure. 
#bind-address = 127.0.0.1 
skip-networking 

 

상 기와 같이 수정 후 다시 설치를 하면 정상적으로 설치가 된다. USB와 연결하여 작을 통해 작업을 할 경우 설치 중간에 비밀번호 설정하는 화면이 나오는데 이때 윈도우 터미널을 통해 작업을 할 경우 ANSI color code로 인하여 설정이 안되니 위에서 언급한 adb 활성화된 putty를 사용하여 작업해야 한다. SSH 서버에 접속해서 진행 할 경우에는 별 문제는 없다. 

 

B. 설치된 apache2, ssh, MySQL등의 패키지는 폰이 재부팅될 경우 자동으로 시작하지 않는다. 현재까지 확인 결과 이는 loop device로 하여 설정 시 runlevel이 설정되지 않으면서 각 runlevel별 init.rc가 수행되지 않으면서 발생하는 것으로 보인다. 폰 재부팅 시 우분투를 실행시키기 위해서는 bootubuntu라는 명령을 통해 루트계정으로 로그인 되면서 시작이 되기 때문에 다른 방법으로 /root/.bashrc file에 부팅 시 필요한 패키지를 시작하도록 하면 된다. 

 

필진은 /root/.bashrc에 하기와 같이 추가 하였다. 

 

/etc/init.d/ssh start 
/etc/init.d/mysql start 
/etc/init.d/apache2 start 

 

C. 워드프레스를 설치한다. 과정은 아래와 같다. 

 

1. 워드프레스 down → 압축 해제 → www하위에 위치 

 

상기와 같이 아래 명령을 순차적으로 사용하면 된다. 

 

root@localhost:~# wget http://wordpress.org/latest.tar.gz 
root@localhost:~# sudo mv latest.tar.gz /var/www 
root@localhost:/var/www# cd /var/www 
root@localhost:/var/www# tar -zxf latest.tar.gz 
root@localhost:/var/www# rm -f latest.tar.gz 

 

만약 두번째 wget명령을 찾을 수 없으면 apt-get install wget 을 통해 설치하면 됩니다. 

 



2. 워드프레스사용위한 MySQL 데이터 베이스 생성 

 

데 이터베이스 생성은 쉘 명령어를 이용할 수도 있고 웹 브라우저를 통해 phpadmin을 사용할 수도 있지만 여기서는 쉘을 사용하여 생성하도록 하겠다. 데이터 베이스 이름: wordpress, user 이름: worduser, 비밀번호: 1234로 가정하고 생성하겠다. 아래 볼드체로 된 이름 및 비밀번호는 그에 맞게 각각 설정해 주시면 된다. 

 

root@localhost:/var/www# mysql -u root -p 

 

상기 명령을 이용하여 데이터베이스 설정으로 진입한다. 비밀번호는 MySQL설치 시 설정한

비밀번호입니다. 

 


3. 워드프레스가 MySQL사용 위한 설정 

 

이제 폰에서 워드프레스를 MySQL과 연동시켜야 한다. 쉘 명령어 창에서 파일을 수정하여 사용할 수도 있지만 여기서는 웹 브라우져를 통해서 진행하도록 하겠다. 폰에서 브라우져를 띄워 주소창에 http://localhost/wordpress로 접속 한다. 

 

▲ 워드프레스 설정(왼쪽 위, 아래)과 설치과정(오른쪽)

최 초 접속 시 그림 왼쪽처럼 설정이 필요하다는 화면이 나타난다. 어렵지 않게 순차적으로 진행할 수 있다. 'Let’s Go'로 다음 화면으로 진입한다. 오른쪽과 같이 데이터 베이스 이름, 사용자이름, 비밀번호를 입력하는 창에 2번에서 설정한 데이터 베이스 이름, 사용자 이름, 비밀번호를 입력한 후 'Submit'을 선택한다. 

 

'Submit'을 선택했을 때 정상적으로 MySQL에 설정한 데이터 베이스와 일치한다면 왼쪽 화면과 같이 나타나지만 MySQL에 설정된 데이터 베이스가 없다거나 잘못 입력했을 경우에는 오른쪽과 같이 찾을 수 없다는 에러가 나타난다. 에러가 나타날 경우 다시 어느 부분에 문제가 생겼는지 위 경로를 따라서 수정해야 한다.(김국현 20) 

 

정상적으로 진행 시 'Run the install'을 선택 후 워드프레스에 사용자 이름, 비밀번호, 이메일 등을 설정 후 'Install Wordpress'를 선택하여 완료한다. 생성한 계정으로 로그인을 한다. 

 

정상적으로 워드프레스가 설정 되었다. 글을 하나 등록 해보겠다. 왼쪽에 홈 아이콘 아래 압정 모양의 아이콘에서 'Add New Post'를 선택해 제목과 글을 입력 후 오른쪽에 'Publish'를 선택한다. 아래 그림처럼http://localhost/wordpress를 입력할 경우 등록한 글이 정상적으로 보여지는 것을 확인할 수 있다.

 


// 제한 및 추가 논의 사항 

 

지 금까지 안드로이드 폰에 우분투를 올린 후 어플리케이션 구동까지 확인을 해보았다. 기본적으로 PC와 같이 동작은 가능한 것을 확인하였으나 몇 가지 한계점 및 추가적으로 고려가 필요한 부분은 여전히 남아 있다. 와이파이가 아무리 속도가 빨라졌다고 하지만 안정성 면에서는 유선 인터넷에 비해 아직 부족한 것이 사실 이다. 

 

추가적으로 저장공간에 대한 어려움도 있을 것이다. 현재 안드로이드에 우분투를 이미지 형태로 사용하기 때문에 처음 만든 우분투 이미지의 용량을 모두 사용했을 경우 확장에 어려움이 있다. 추가 디바이스를 쉽게 추가할 수 있는 분산 파일 시스템을 사용하는 경우라면 크게 문제가 안되겠지만 그렇지 않을 경우 확장 시 많은 작업이 수반 될 것으로 보인다. 

 

■집에서 영업장에서 직접 돌려 보자 

 

아 마 여러분의 인터넷은 공유기를 통해 다른 식구들과 혹은 동료들과 나누어 쓰고 있을 것이다. 그리고 여러분의 ‘약정 끝난 스마트폰’은 그 공유기에 와이파이 접속이 되어 있을 것이다. 이 스마트폰 안의 웹서버에 전세계인은 어떻게 접속할 수 있을까? 

 

먼저 외부에서 접근 가능하도록 네트워크를 설정해야 한다. 

 

보 통 하나의 세대 혹은 사무실에 하나의 공인 IP가 할당되고, 192.168.0.1로 보통 시작하는 사설 IP들이 할당이 되어 있을 텐데, 밖으로부터 들어 오는 요청을 이 홈서버로 배정시키기 위한 설정이 필요하다. 이 설정은 공유기마다 천차만별 설정이 다르기는 하지만 모든 공유기마다 존재한다. 가상 서버 혹은 포트 포워딩의 설정화면에서 조작할 수 있는데, 웹서버 용으로 80포트 등 대표적인 포트를 스마트폰 웹서버의 IP 주소로 매칭시키는 것이다. 

 

▲ 공유기의 포트 포워딩 설정 화면

그 다음으로는 도메인 주소를 할당할 필요가 있다. 매번 바뀌는 할당 IP를 입력하는 일은 사실상 불가능하기에 외우기 쉬운 도메인 주소를 연결해야 한다. 이를 DDNS, 즉 Dynamic DNS라 부른다. Dyndns.org 가 가장 유명한 서비스이지만, .com과 같은 일반 도메인명을 연결 가능한 DnsEver.com 혹은 Wowip.co.kr 등의 서비스를 활용할 수도 있다. 

 

▲ Dyndns.org는 대부분의 공유기가 지원해 IP가 변경될 때마다 공유기가 반영 해준다.


이제 외부에서 여러분의ID.dydns.org 만 입력해도 여러분의 퍼스널 클라우드로 연결이 가능해진다. 

 

관련자료

등록된 댓글이 없습니다.
Today's proverb
모든 일 가운데 가장 좋은 면만을 보는 습관은 천 파운드의 연봉보다 낫다. (사무엘 존슨)