본문 바로가기
안드로이드

[Native]안드로이드 웹서버 구동하기 (Nginx, PHP, MySQL)

by ㅋㅋ잠자 2014. 7. 24.
반응형

안녕하세요. 도정진입니다.

   

이와 관련된 게시글을 전에 적은 적이 있습니다. 그러나 너무 개발이 빠르다 보니 예전 게시글로는 충당할 수 없는 상황이 되었네요.

   

이번에 설명드리는 웹서버 구동 앱은 anmpp 입니다.

   

공식 웹사이트는 -> http://anmpp.net/ 입니다.

   

   

중국 개발자 분이신데 정말 잘 개발하시는 것 같습니다.

   

일단 중국 개발자이다 보니 메뉴가 중국어로 되어 있고 , 그 다음 웹서버 설치까지는 쉽지만 활용은 어렵다는 점.

   

그 때문에 제가 직접 정리해 보았습니다.

   

   

   

0. 왜 꼭 이것을 고집하는가?

   

물론 플레이 스토어에 보시면 많은 웬만한 기능을 모두 하는 웹서버 앱들이 많이 있습니다.

   

각각 링크 걸어 드리겠습니다.

   

[무료]

   

Androphp - Lighttpd, PHP, MySQL (이유 모를 웹서버 프로세스 죽음 발생)

https://play.google.com/store/apps/details?id=com.ayansoft.androphp

   

Palapa WebServer - Lighttpd, PHP, MySQL (사용해 보지 않음)

https://play.google.com/store/apps/details?id=com.alfanla.android.pws

   

[유료]

   

BitWebServer - 상기와 같음 (PHP 모듈 포팅이 제일 빠르긴 하나 이유 모를 재부팅 발생)

https://play.google.com/store/apps/details?id=com.andi.serverweb

   

KSWEB - 상기와 같음 (사용해 보지 않음)

https://play.google.com/store/apps/details?id=ru.kslabs.ksweb

   

UltiServer - 상기와 같음 (사용해 보지 않음)

https://play.google.com/store/apps/details?id=com.icecoldapps.ultiserver

   

NampServer - 웹서버로 Nginx 사용 (사용해 보지 않음)

https://play.google.com/store/apps/details?id=ru.nampltd.namp

   

ServersUltimate - 거의 모든 서버의 기능을 총망라 한 앱, 그런데 전문성이 떨어지고 안전성이 떨어짐

https://play.google.com/store/apps/details?id=com.icecoldapps.serversultimate

   

상기 앱들은 정말 잘 만들어진 앱들입니다. 그러나 매우 안정적이지 못하다는 단점이 있었습니다.

   

그리고 리눅스에서 웹서버를 설치한 것처럼 파일 구조가 되어 있지 않아서 커스텀화가 힘들어서

   

제일 리눅스와 비슷하게 설치가 되는 Anmpp 를 선택하게 되었습니다.

   

한편, http://djj.iptime.org/ 는 한동안 옵티머스 빅에 Anmpp 를 설치하여 구동을 하였습니다. 상당히 안정적이였고 되지않는 기능들이 거의 없었습니다.

   

물론 지금 제 개인 홈페이지는 오드로이드 U2 로 구동중입니다.

   

Anmpp 의 경우 아래의 기능이 한타에 설치됩니다.

   

1. Nginx

2. PHP-FPM

3. MySQL

4. POSTGRESQL

5. BFTPD

   

   

   

   

   

   

1. 사전에 준비해야 할 것들

   

처음으로 Anmpp 를 구동하기 위해서는 아래의 두 가지를 충족 시켜야 합니다.

   

1. 루팅이 되어 있다.

   

2. BusyBox 가 설치되어 있다.

   

설치는 아래의 앱을 통해서 설치합니다.

   

https://play.google.com/store/apps/details?id=me.timos.busyboxonrails

   

   

   

위 의 두 가지가 충족되면 설치가 가능합니다.

   

그런데 진저브레드나 프로요에 대해서 (심각히 커널버전이 낮은) 상태의 기기로 구동이 되는지는 잘 모르겠습니다.

   

위 테스트 환경은 Galaxy Nexus , Android 4.4.4 에서 테스트 되었습니다.

   

   

   

   

   

   

2. 설치하기

   

설치과정이 딱히 어렵지 않습니다.

   

일단 아래의 앱을 다운로드 합니다.

   

http://sourceforge.net/projects/anmpp/files/anmpp.apk/download

   

다운로드 하시고 설치합니다. 앱 이름은 Super Server 라고 되어 있습니다.

   

(실제로 anmpp 공식 홈페이지에 가면 포럼도 있고 , 상당히 개발속도가 빠른 거 같습니다.)

   

   

후.. 처음 메뉴를 보자 마자정말 난감합니다. ..

   

일단 짧은 중국어 실력으로 메뉴를 하나하나 보면

   

1. 서버 상태 보기

2. 서버 시작하기

3. 서버 재시작하기

4. 서버 중지하기

그 밑은 잘 모르겠고

   

밑에서 두번째 부분은 관련된 스크립트를 실행하는 부분입니다.

   

그럼 밑에서 두번째 부분을 눌러서 확인을 누르고 스크립트 파일을 anmpp 사이트에서 가져오게 체크를 합니다.

   

그럼 아래와 같이 실행할 수 있는 스크립트 목록이 나오게 됩니다.

   

   

위의 화면에서 anmpp-install 을 누릅니다. 그럼 아래와 같이 진행이 됩니다.

   

   

   

진행이 되고 위와 같이 메시지가 뜬다면 설치가 정상적으로 된것입니다.

   

그리고 메인 메뉴로 가셔서 1. 상태보기를 눌러봅니다.

   

   

동작중이 아니라고 나옵니다.

   

그 다음 2. 서버 시작을 눌러봅니다.

   

   

위와 같이 정상적으로 구동 중이다 라는 메시지가 표시 되며 IP 주소가 표시 됩니다.

   

(여담으로 공유기 설정에서 포트포워딩을 통해 외부 접속을 가능하게 할 수 있습니다. 아래에서 자세히 다루겠습니다.)

   

   

그럼 정상적으로 되는지 확인을 해 보기 위해서

   

웹 브라우저를 키고 127.0.0.1 을 입력해 봅니다.

   

   

   

PC에서는 아래와 같이 뜹니다. 방금 전 확인한 제 기기의 아이피는 192.168.0.11 입니다.

   

   

네 정상적으로 구동중임을 알 수 있습니다.

   

   

   

   

   

   

3. bftpd 세부 설정하기

   

bftpd 는 ftp 서버 기능을 합니다.

   

흔히 사용되는 vsftpd 나 proftpd 와 약간 다른 설정을 가지고 있었습니다.

   

일단 bftpd 가 설치된 경로로 이동해 보았습니다.

   

   

사진과 같이 /data/data/android.bftpd/etc

   

로 이동하시면 bftpd.conf , password.conf 가 있습니다. 물론 실제 리눅스라면 password.conf 가 꼭 필요하진 않고 사용자 추가로만 해결이 되었겠지요..

   

혹시나 포트변경이나 passive 포트 설정을 하실분은 아래를 참고해 주세요.

   

   

   

일단 bftpd.conf 에는 따로 만질 부분이 없는 것 같아서 바로 password.conf 를 보겠습니다.

   

   

   

필드 형식은 아이디 / 비밀번호 / 그룹 / 홈디렉터리 로 되어 있는거 같습니다.

   

실제로 bftpd 로 /system 이나 /data 에 접근이 불가능하였습니다.

   

그래서 웹 루트를 내장 메모리나 SD 카드에 하나 만드시고 경로를 맞춰 주세요.

   

저는 /sdcard/htdocs 로 하였습니다.

   

(실제로 폴더가 존재해야 합니다.)

   

   

그럼 웹 루트에 파일을 올릴 때 FTP 로 접속하면 저 위치로 접속 될 껏 입니다.

   

( 참고로 루트 익스플로러 앱으로 Power File Manager 를 사용하였습니다. )

   

값을 변경한 후에는 꼭 3. 서버 재시작 버튼을 눌러주세요.

   

(실제로 써보니 bftpd 는 별로 좋지 않네요.. 다른 FTP 프로그램 사용하시는 걸 추천드립니다.)

   

   

   

   

   

4. Nginx 세부 설정하기

   

Nginx 는 웹서버 부분입니다.

   

포트 변경이나 웹 루트 변경을 위해서 설정을 변경해야 합니다.

   

   

/data/data/android.nginx/conf

   

로 이동하시어 nignx.conf 파일을 열어봅니다.

   

   

위 항목에서 listen 항목을 수정하면 포트 변경이 가능하고 기본 포트는 80 입니다.

   

그리고 root 항목을 변경하면 웹 서버 루트 디렉터리가 바뀝니다.

   

물론 리눅스 상에서는 심링크로 해결하겠지만 여기서는 직접 옮기는 것이 편하기 때문에 그렇게 하겠습니다.

   

   

다음 php 스크립트 실행 위치를 위 웹루트와 같게 맞춰 주어야 합니다.

   

   

SCRIPT_FILENAME 부분을 웹 루트로 바꿔 주세요!

   

그 다음 저장하시면 됩니다.

   

값을 변경하셨으면 꼭 3. 서버 재시작을 통해 재시작 해 주시길 바랍니다.

   

   

   

   

   

   

5. PHP 세부 설정하기

   

php 세부 설정은 업로드 용량이나 로케일 설정과 관련되어 있습니다.

   

한편 php 를 통한 업로드 속도를 최적화 하기 위해서 임시 디렉터리를 꼭 웹 루트와 같은 파티션에 위치 시켜 두는게 좋습니다.

   

일단 PHP 세부 설정하실 떄 너무 파일이 크기 때문에 수정하기가 어려우신 분들은 파일을 꺼내어 수정하신 다음 다시 넣어주시길 바랍니다.

   

저도 직접 빼서 할 예정입니다.

   

   

/data/data/android.php-fpm/etc

   

폴더로 이동하셔서 php-fpm.ini 파일을 꺼내서 SD 카드로 옮깁니다.

   

그 파일을 지금 NotePad ++ 로 수정하겠습니다.

   

NotePad++ 는 아래의 링크에서 다운받으실 수 있습니다.

   

http://www.notepad-plus-plus.org/

   

   

파일을 열어서 672번줄의 post_max_size = 2047M 으로 수정합니다.

   

(특정한 목적이 있으시면 저같이 최대 업로드 양으로 잡지 않으셔도 됩니다.)

   

   

다음

   

   

   

800번 줄에 upload_tmp_dir = "/sdcard/tmp"

   

이 부분은 php 를 통해서 업로드 된 파일이 임시적으로 저장되는 공간을 결정하는 것인데

   

웹 루트와 같은 파티션이 아니면 파일의 이동이 발생함으로 파일 업로드 부분에서 속도 저하가 발생합니다.

   

그래서 이렇게 루트를 맞춰주면 잘라내기 방식으로 단순간에 파일이 옮겨지는 효과이기 때문에 꼭 설정해 주셔야 합니다.

   

그 다음 804 번줄에 upload_max_filesize = 2047M 으로 설정해 주시면 됩니다.

   

(현재 제가 설정하고 있는 것은 최대 업로드 용량으로 설정하는 것입니다. 목적에 맞게 설정을 해 주세요!)

   

이 정도 편집하시면 쓰는데는 지장이 없을꺼 같습니다.

   

   

이제 원래 위치에 .ini 파일을 복사해 주세요. 원래 퍼미션은 0644 입니다.

   

이제 설정을 모두 마쳤으니 마지막으로 재시작 해 주시길 바랍니다.

   

   

   

   

   

   

   

6. MySQL 설정하기

   

실제로 MySQL 에 연결하여 계정 관리가 가능한지 잘 몰라서 phpmyadmin 으로 해결을 보려고 합니다.

   

   

아래의 파일을 다운받아 압축을 풀고 웹 루트에 넣습니다.

   

(가상 호스트 관리로 하실 수 도 있지만 귀찮은 작업임으로 하지 않습니다!)

   

http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.0.9/phpMyAdmin-4.0.9-all-languages.zip/download

   

   

참고로 리눅스 시스템은 대소문자를 구분하기 때문에 꼭 소문자로 해주셔야 착오가 안생깁니다!

   

넣은 후 http://자신의아이피/phpmyadmin 으로 이동해 봅니다!

   

   

   

   

그럼 위와 같이 아름다운 페이지가 열립니다.

   

기본 아이디 비밀번호는 root / 빈칸 입니다.

   

그런데 AllowNologin 에러가 날것입니다.

   

FTP 로 phpmyadmin 폴더로 이동하여 config.sample.inc.php 파일을 열고

   

아래의 부분에서 false 를 true 로 바꿉니다.

   

   

   

그 다음 config.inc.php 로 이름을 바꿉니다.

   

그럼 로그인이 가능할 껍니다!

   

그리고 사용자 탭을 눌러서 root 계정에 대해서 비밀번호를 설정해 줍니다.

   

   

root 계정 2가지 모두 권한 수정을 누르고 아래와 같이 비밀번호를 설정합니다.

   

   

그럼 MySQL 사용 준비는 다 되었습니다.

   

계정을 원하는 대로 추가하셔도 되고

   

데이터 베이스는 아래처럼 만드시면 됩니다.

   

   

테스트로 Wordpress 를 설치해 보기 위해 wordpress 데이터 베이스를 생성하였습니다.

   

   

   

   

   

   

   

   

7. WordPress 설치해보기

   

워드프레스는 아래의 주소에서 다운로드 합니다.

   

http://ko.wordpress.org/

   

압축을 풀어서 적절한 웹 루트에 둡니다. 저는 /wordpress 에 두었습니다.

   

그럼 주소로 이동해 보겠습니다.

   

   

위와 같이 정상적으로 화면이 뜨고 아래와 같이 간단한 설정을 해 주시면 사용이 가능합니다.

   

   

데이터 베이스 설정을 마치시고 물론 계정은 자신이 설정한 대로 하셔야 되고 DB 명도 같아야 합니다.

   

그 후 간단히 아이디 비밀번호를 설정하고 나면 사용이 가능합니다.

   

   

   

위와 같이 정상적으로 구동이 가능함을 알 수 있습니다.

   

한편 워드프레스의 경우 정말 무겁기 때문에 싱글코어 스마트폰에 대해서는 추천드리지 않습니다.

   

혹여나 사용하신다면 꼭 WP Cache 를 적용해 주세요!

   

   

   

   

   

   

8. Encode Explorer 설치해보기

   

Encode Explorer 는 간단한 PHP 방식의 웹 파일 관리자로써 폴더 생성, 삭제, 파일업로드 기능을 가지고 있고

   

index.php 파일을 수정을 하면 업로드가 가능해지며 암호로 보호도 할 수 있는 기능을 가지고 있습니다.

   

간단히 index.php 파일을 수정하고 적절한 웹루트에 두셔도 되고 수정하지 않으셔도 동작은 합니다.

   

파일은 아래의 주소에서 다운받습니다.

   

http://encode-explorer.siineiolekala.net/

   

제가 생각하기에 파일업로드가 가능한 제일 빠른 웹하드 시스템인거 같습니다. 물론 그 만큼 기능이 부족하긴 하지만 필요한 기능은 모두 가지고 있네요.

   

웹루트/encode 폴더 안에 index.php 파일을 넣고 그 폴더 안에 예제 파일들을 넣어 보았습니다. 그럼 아래와 같이 뜹니다.

   

   

실제로 index.php 파일을 수정하면 위의 파란색 글씨를 자신의 것으로 수정이 가능하고 계정 설정을 하면 아래에 로그인 기능이나 로그인을 하면 파일 리스트가 보이는 등등의 기능을 가지고 있습니다.

   

파일업로드 기능을 위해서는 계정을 생성하는 것이 필수 입니다.

   

   

   

   

   

   

   

9. h5ai 설치해보기

   

h5ai 란 디렉터리 리스팅을 예쁘게 만들어 주는것을 의미합니다. 현재 디렉터리 리스팅 화면은 아래와 같습니다.

   

   

정말 볼품이 없습니다. ㅠ

   

이 문제를 해결하기 위해서 아래의 파일을 다운받고 압축을 풀어서 웹루트 최상위에 둡니다.

   

http://larsjung.de/h5ai/ 꼭 웹루트 최상위에 두셔야 합니다.

   

   

이런식으로 웹루트 최상위에 두셔야 합니다. 그 다음 웹서버 설정 파일 nginx.conf 를 엽니다. (자세한 것은 Nginx 설정하기 편을 봐주세요!)

   

   

index 부분에 위처럼 구문을 추가해 주시면 됩니다.

   

index index.html index.php /_h5ai/server/php/index.php;

   

위와 같이 입력해 주시면 됩니다. 이렇게 한 후에 웹서버를 재시작해 주시고 디렉터리 리스팅을 하면 ..

   

   

이렇게 좋은 디자인으로 디렉터리 리스팅이 됩니다. 이 리스팅은 해상도와 관계없이 잘 보이기 때문에 모바일 환경에서도 문제가 없습니다.

   

그리고 체크를 하여 zip 으로 묶어 받는 기능도 있는데 이것은 되는지는 잘 모르겠습니다. php 에 zip 기능이 있어야 되는데 있는지는 잘 모르겠네요.

   

   

   

   

   

10. OwnCloud 설치해보기

   

OwnCloud 는 개인 저장 공간입니다. 이는 다른 기능이 필요없고 APM 환경만 제대로 구축이 된다면 문제가 없게 구동이 됩니다. 특히 PHP 에서는 mcrypt 기능이 작동해야 정상적으로 구동이 됩니다.

   

예전 Anmpp 에서는 구동이 되지 않았었는데 이번에 mcrypt 기능이 추가 되었다고 해서 구동이 가능할 꺼 같습니다.

   

파일은 아래의 주소에서 받고 압축을 풀어서 원하는 웹루트 디렉터리에 넣습니다.

   

https://owncloud.org/

https://download.owncloud.org/community/owncloud-7.0.0.zip

   

음.. 오늘 OwnCloud 다운로드 속도가 느려서 리뷰는 패스합니다.

   

밑에 KimsQ나 XE 가 정상적으로 구동이 가능하다면 OwnCloud 도 정상적으로 구동이 될것입니다.!

   

   

   

   

   

   

12. KimsQ 설치해보기

   

간단히 테스트를 해 보기 위해서 KimsQ 를 설치해 보기로 했습니다.

   

만약 KimsQ 가 정상적으로 구동이 된다면 OwnCloud 도 정상적으로 될것이고 그 외 다른 XpressEngine 이나 GnuBoard 도 문제없이 구동될 것입니다.

   

http://www.kimsq.co.kr/c/download

   

킴스큐는 위의 주소에서 다운로드 하시고 압축을 풀어서 원하는 위치에 두시면 됩니다.

   

   

   

   

게시판을 추가할 당시에 에러가 나긴 하는데 위의 에러는 PHP 버전이 올라감에 따라서 모듈을 mysqli 로 작성해주라는 말입니다. 이 에러는 딱히 문제가 아니며 PHP 설정에 에러를 보이지 않게 설정하면 문제가 없을 꺼 같습니다.

   

예전에는 파일첨부에 관해서 PHP-Mcrypt 모듈이 작동하지 않아 문제가 있었는데 이번에 확인을 해 보겠습니다.

   

   

파일 첨부가 정상적으로 동작됩니다.

   

   

그러나 안타깝게도 다운로드 시에 오류가 발생합니다.

   

이렇게 된다면 OwnCloud 도 못쓰는 경우가 되네요..

   

다음에 꼭 업데이트가 있길 바라며 이 글을 마칩니다.

   

   

감사합니다.

반응형

댓글