안녕하세요. 도정진입니다.
예전에 ANMPP 를 안드로이드에 설치하여 웹서버를 구동하는 게시글을 작성하였습니다만 그 방법으로는 완벽하게 구동이 어렵고 설치하는데에 어려움이 있어서 새로운 방법을 소개하려고 합니다.
이 방법은 안드로이드 시스템 내부에 CHROOT 로 컨테이너화 하여 데비안 8.0 을 설치하여 웹서버를 구동하는 방법입니다.
안드로이드 커널을 기반으로 하고 chroot 환경이기 때문에 몇 가지 구동이 되지 않는 문제가 있기는 하지만 웹서버는 문제없이 설치가 가능합니다.
한편, 안드로이드에 왜 웹서버를 구성하냐고 의문이 생길수도 있습니다. 2년마다 한번씩 핸드폰을 바꾸는 입장에서 구형 안드로이드 스마트폰이 집에 적어도 1대 있을것입니다. 이것의 활용도에는 CCTV 나 서버의 용도가 있습니다.
더불어 일반적으로 ARM 으로 서버를 구축할 때, 라즈베리파이나 포고플러그를 사용하는데 갤럭시S 만 해도 라즈베리파이1이나 포고플러그보다 성능이 좋습니다. 만약에 OTG 기능이 있는 안드로이드 폰이면 외장하드를 연결하여 운영을 할 수도 있습니다.
그럼 시작해 보도록 하겠습니다.
0 . 필요한 것 준비하기
구형 안드로이드 폰
루팅상태
비지박스 설치하기
https://play.google.com/store/apps/details?id=com.jrummy.busybox.installer&hl=ko
리눅스 디플로이 설치하기
https://play.google.com/store/apps/details?id=ru.meefik.linuxdeploy&hl=ko
(저는 넥서스5를 기반으로 작업해 보겠습니다. 비공식 안드로이드 7.0 이 설치되어 있습니다.)
윈도우 SSH 클라이언트 (둘 중에 하나 쓰시면 됩니다.)
Xshell5
http://www.netsarang.co.kr/xshell_download.html
Putty
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
WinSCP
https://winscp.net/eng/download.php
(WinSCP 의 경우 SFTP 를 사용하기 위해서 사용합니다. FTP 서버를 구축해 보려고 했으나 계속 소켓 에러가 발생하여 성공하지 못했습니다.)
1 . 안드로이드에서 작업하기
먼저 비지박스 앱을 엽니다. 루트 권한을 물어보면 승인을 눌러주고 오른쪽 아래의 인스톨 버튼을 누릅니다.
그리고 확인을 눌러 창을 닫아주시면 됩니다.
다음으로 Linux Deploy 앱을 엽니다.
오른쪽 아래에 다운로드 모양을 누릅니다.
위 처럼 container 방식을 chroot 로 선택하고 debian 을 선택합니다. 그 다음 버전의 경우 8.0인 jessie 를 선택합니다. installation type 의 경우 파일이나 파티션 램 등에 설치할 수 있으나 공간활용을 위해 Directory 로 설정합니다.
인스톨 위치의 경우 기본으로 설정이 되어 있는데 이는 정확히 아래의 경로에 설치됩니다.
/data/data/ru.meefix.linuxdeploy/env/rootfs/linux
만약 너무 구형 제품이라 MTP 연결 방식이 아닌 이동식 디스크 방식, 즉 파티션을 나누어 system / data / sdcard 를 나누는 갤럭시S / 갤럭시S2 등은 Installation path 를 SD카드 위치로 옮겨 주시길 바랍니다.
반면에, 한 파티션으로 data 영역을 사용하는 갤럭시넥서스 이후 제품은 그대로 두셔도 됩니다.
다음으로 내리면 아래와 같은 설정들이 있습니다.
기본으로 생성되는 유저를 설정하는 부분으로 마음에 드는 것으로 하시면 됩니다. 저는 android / djj9405 로 설정을 하였습니다. 그 다음 한글 깨짐 관련한 문제가 생기지 않기 위해서 꼭 Locale 을 en_US.UTF-8 로 설정합니다.
INIT 설정도 활성화 하고 sysv 를 사용하도록 합니다.
(그러나 CHROOT 환경에서는 systemctl 명령어를 사용할 수 없습니다.)
마지막으로 SSH 서버 Enable 체크를 해 주고 창을 닫으시면 됩니다.
다음 메뉴 버튼을 눌러 INSTALL 을 누릅니다.
그러면 설치 작업이 진행되고 폰 성능에 따라 다르지만 넥서스5 기준으로 10분 가량 걸립니다.
이때 수퍼유저 권한을 물어보게 되는데 승인 해 주시면 됩니다.
그리고 끝이나면 아래 사진처럼 <<<deploy 가 뜹니다.
바로 스타트 버튼을 눌러 실행해 보겠습니다.
위 사진처럼 되면 실행이 정상적으로 된 것입니다. 앱 상단에 보면 아이피가 나오는데 그 아이피로 내부에 동일한 망에 있는 컴퓨터에서 SSH 로 접속해 보겠습니다.
2 . 데비안 초기 설정하기
원하는 프로그램을 이용하여 SSH 로 해당 아이피로 접속합니다. 저는 192.168.0.20 이였습니다.
위 처럼 설치전에 설정한 아이디 비밀번호를 넣습니다.
그럼 아래처럼 정상적으로 안드로이드 폰 SSH 서버에 연결이 됩니다.
먼저 root 계정 패스워드를 바꾸겠습니다.
sudo passwd root |
바꾸셨으면 openssh 서버 설정을 root 로그인이 패스워드를 통해 가능하도록 설정을 바꿔 주어야 합니다.
(루트 계정으로 설정을 진행하는 이유는 sudo 라는 명령어와 기타 잡다 권한 문제를 피할 수 있기 때문입니다.)
일단 밑에서 이루어 지는 작업을 root 권한으로 하기 위해서 터미널에 su 를 입력하고 root 계정 비밀번호를 (방금 설정한) 입력합니다.
그럼 터미널 모양이 ~$ 모양에서 ~# 으로 바뀝니다.
이어서 openssh 서버 설정을 진행하겠습니다. 아래처럼 설정파일을 열어 수정해 줍니다.
nano /etc/ssh/sshd_config |
내리다 보면 PermitRootLogin 이라는 부분이 있습니다. 이 부분을 보면 without-password 라고 되어 있는데 지우고 위 처럼 yes 로 바꿉니다.
그 다음 컨트롤 + O 를 누르고 엔터를 통해 저장을 하고 컨트롤 + X 를 통해 nano 편집기에서 쉘로 나옵니다.
설정을 변경하였으니 서비스를 재시작합니다.
service ssh restart |
이 이후로는 초기에 설정한 계정이 아닌 방금 설정한 root 계정과 암호로 로그인이 가능합니다.
먼저 시스템 리소스 사용량을 보는 htop 패키지를 설치해 보겠습니다.
apt-get install htop |
그리고 htop 이라고 터미널에 입력하면 아래의 작업관리자 같은 창이 뜹니다. 종료하려면 컨트롤 + C 를 누르면 됩니다.
3 . Apache , php5 , mysql 설치하기
설치를 한타에 끝내기 위해서 phpmyadmin 으로 해결을 볼 생각입니다. 그러나 phpmyadmin 을 설치하기 전에 이미 mysql 이 설정이 되어 있는 상태여야 정상적으로 설치가 진행됩니다.
아래의 명령어로 mysql 서버를 설치해 보겠습니다. mysql-client 의 경우 설치를 하지 않아도 되나 커맨드 라인에서 관리하기 위한 클라이언트 프로그램입니다.
apt-get install mysql-server mysql-client |
y 를 입력하여 진행하거나 그냥 엔터키를 누르면 진행이 됩니다.
중간에 mysql-server 의 root 계정에 대한 암호를 입력하는 창이 나옵니다. 마음에 드는 암호로 설정해 줍니다.
한번 더 입력해 줍니다.
중간 설치과정에서 아래처럼 mysql 서버를 시작하는데에 에러가 발생합니다.
그래서 전체적으로 에러가 발생합니다.
이 문제의 경우 mysqld 의 기본설정값이 bind_address 값이 127.0.0.1 로 되어 있는데 지금 상태가 Chroot 상태라 사용을 할 수가 없는 상황입니다. 이 부분은 /etc/mysql/my.cnf 파일을 수정하면 해결이 가능합니다.
nano /etc/mysql/my.cnf |
기본값은 아래와 같이 되어 있습니다.
bind-address 부분을 # 코멘트 처리하여 설정이 안먹도록 하고 밑에 skip-networking 이라고 추가해 줍니다.
이렇게 설정하고 저장하고 다시 설치를 시도해 봅니다.
(이렇게 설정하면 mysql 서버에 연결할 때 127.0.0.1 이 아닌 localhost 로 입력해야 연결이 됩니다.)
apt-get install mysql-server mysql-client |
정상적으로 설치가 됩니다.
다음으로 apache 와 php5 를 한방에 설치하겠습니다.
apt-get install phpmyadmin |
실제로 패키지를 통해 설치한 phpmyadmin 을 사용하지는 않습니다.
이 명령어를 통해 필요한 패키지들이 의존성으로 설치가 다 되기 때문에 사용합니다.
중간에 창이 뜹니다. apache2 를 선택합니다.
아래 창이 뜨면 YES 를 선택합니다.
다음으로 mysql 설치시 설정했던 root 비밀번호를 입력합니다.
또 입력합니다.
한번 더 입력합니다.
설치가 정상적으로 끝났으면 apache 서버를 재시작 해 줍니다.
service apache2 restart |
ServerName 값이 설정 되지 않아서 에러가 발생하지만 운영간에는 큰 문제가 없습니다.
그럼 일단 웹서버가 동작하는지 체크를 해 보겠습니다.
저는 아이피가 192.168.0.20 임으로 주소창에 아래처럼 입력해 보았습니다.
정상적으로 페이지가 열립니다.
여기까지 정상적으로 설치가 완료 되었습니다.
4 . phpmyadmin 설치하기
아래의 사이트로 가서 phpmyadmin 파일을 받습니다.
다음으로 WinSCP 를 켜서 SFTP 연결 설정을 합니다.
로그인 하고 /var/www/html 로 이동합니다.
이 위치가 apache 의 디렉터리 루트 입니다.
(물론 설정을 통해 마음데로 바꾸실 수 있습니다.)
여기에 phpmyadmin 파일을 넣습니다. 저는 myadmin 이라고 이름을 바꾸어 넣었습니다.
그 다음 폴더에 대해 권한을 설정합니다. 755 가 권장이나 777로 줘도 되고 문제는 없습니다.
그룹 설정 시, 소유자 및 권한 변경에 체크하셔야 하위 폴더까지 모두 바뀝니다.
다음으로 웹으로 접속을 시도해 보겠습니다.
저는 192.168.0.20 이기 때문에 http://192.168.0.20/myadmin 으로 접속하면 phpmyadmin 이 열려야 정상입니다.
창이 정상적으로 뜹니다.
mysql 서버 설치할 때 설정했던 root / 설정한 비번 으로 로그인 해 봅니다.
정상적으로 작동합니다.
차후에 XpressEngine 과 Wordpress 를 설치해 볼 것입니다. 그래서 db 를 생성해 보겠습니다.
이름을 지정하고 만들기를 누르면 해당 DB가 만들어 집니다. 물론 해당 DB 이용권한에 대해서 설정을 해야하나 일단 되게 하는 것이 목표이기 때문에 웹사이트 설치할 때에도 root 계정으로 설정해서 진행하겠습니다.
결과적으로 wordpress 와 xe 를 만들었습니다.
5 . wordpress 설치해 보기
블로그나 혹은 포털 사이트로도 꾸밀 수 있는 워드프레스를 설치해 보겠습니다.
아래의 위치에서 설치파일을 받습니다.
마찬가지로 압축을 풀어서 /var/www/html/wordpress 형식으로 복사합니다.
마찬가지로 권한 설정을 합니다.
다음으로 http://192.168.0.20/wordpress 로 접속해 봅니다.
(범용 http://my-ip-address/wordpress)
그럼 위 처럼 설치창이 뜨고 설치를 진행하시면 됩니다.
위 처럼 설정을 진행하고 워드프레스 설치하기를 누릅니다.
폰 사양에 따라 다르나 쪼금 오래걸립니다.
설치가 성공하면 성공하였다고 나옵니다.
처음 로그인을 하게 되면 관리자 페이지로 들어가집니다.
테스트로 글을 작성해 보겠습니다.
글 작성 정상적으로 됩니다.
6 . php 를 통한 파일 업로드 용량 제한 풀기
그런데 글을 작성해 보시면 알겠지만 첨부용량 제한이 2MB 로 설정이 되어 있습니다.
이 부분을 해결하기 위해서 php5.ini 파일을 수정해야합니다.
WinSCP 를 통해 아래의 경로로 이동해서 파일을 엽니다.
/etc/php5/apache2/php.ini
660번째 줄에 post_max_size 를 2047 로 수정합니다.
다음으로 809번줄에 upload_max_filesize 를 2047 로 수정합니다.
그리고 저장을 한 다음 쉘에서 apache 서버를 재시작 합니다.
그럼 파일 업로드 용량이 2047 MB 로 늘어났음을 알 수 있습니다.
7 . XpressEngine 제로보드 설치해보기
예전에 ANMPP 를 통해 웹서버 기능을 사용할 때에는 php5-mcrypt 모듈에 있어서 첨부파일이 올라가기는하나 다운로드를 시도하면 에러가 발생하는 문제가 있었습니다. 그 기능을 차후 anmpp 에서 패치가 이루어질 줄 알았으나 아직 해결이 되지 않았습니다.
워드프레스 설치와 마찬가지로 설치파일을 아래 주소에서 받습니다.
역시 /var/www/html 폴더로 복사합니다.
권한 설정도 합니다.
http://my-ip-adress/xe 로 이동해 봅니다.
mysqli 를 선택합니다.
db 설정을 아래와 같이 합니다.
그런데 중요한게 있습니다. DB호스트네임이라고 되어 있는 부분에 127.0.0.1 이라고 되어 있습니다.
분명 에러가 날것입니다.
역시 에러가 발생합니다.
DB호스트네임 부분을 localhost 로 수정하고 다음을 누릅니다.
시간 설정도 해 줍니다. 보니까 GMT -9 로 되어 있는데 서버 시간이 맞지 않은것 같습니다.
강제로 맞춰 줍니다.
여기서 서버시간을 맞춰 보겠습니다.
쉘에서 아래처럼 입력합니다.
dpkg-reconfigure tzdata |
아시아 선택합니다.
서울 선택합니다.
시간이 맞는지 확인합니다.
이제 다시 본론으로 들어와서 XE 설치를 이어가보겠습니다.
필수 정보를 입력합니다.
그럼 설치가 완료됩니다.
쉬운설치의 경우 FTP 서버가 있어야되는것으로 알고 있는데 ㅠㅠ
아마도 SFTP 를 통해 사용하면 되지 않을까 합니다 ㅎㅎ
대망의 게시판에 파일 첨부를 해보겠습니다.
첨부가 잘 됩니다.
이어서 대용량 파일을 올려보겠습니다.
716메가 파일입니다.
(와이파이 상태이다 보니 업로드도 쬐끔 느립니다 ㅎㅎ)
정상적으로 잘 다운로드 됩니다 ㅎㅎ
8 . 기타 참고해볼만한 링크
chroot 리눅스 환경에서 해본것들로는 아래와 같습니다.
transmission-daemon (토렌트 클라이언트 입니다.)
samba / cifs (윈도우 공유 서버 입니다.)
subsonic (자바기반 음악 스트리밍 서버 입니다.
http://blog.djjproject.com/155
위 3가지는 직접 해 보았고 구동이 가능합니다.
다음으로 아파치 설정관련 참고해볼만한 링크 입니다.
가상호스트 설정
http://blog.djjproject.com/118
프록시 패스 설정
http://blog.djjproject.com/123
SSL 적용
http://blog.djjproject.com/182
마지막으로 이렇게 작업한 내용이 안드로이드에는 어떻게 들어 있을까 하는 것입니다.
게시글 처음에 말씀드린대로 아래 위치로 이동해 보겠습니다.
/data/data/ru.meefix.linuxdeploy/env/rootfs/linux
요런식으로 리눅스에서 작업하던 폴더 구조가 그대로 있습니다. 즉, 핸드폰에서도 모든 작업이 가능하다는 말입니다.
터미널 클라이언트를 하나 깔아서 로컬로 연결해서 휴대폰으로도 설정이 가능합니다.
감사합니다.
'안드로이드' 카테고리의 다른 글
구글 위치공유 사용하기 (Google Plus -> Google Maps) (4810) | 2017.06.25 |
---|---|
넥서스 전 기종 adb fastboot 바이너리 받기 (platform-tools) (411) | 2017.03.11 |
넥서스5 안드로이드 7.0 Nougat 설치하기 & Viper4Android 2.5.0.5 (454) | 2016.09.28 |
갤럭시S2 해외젤리빈 펌웨어 설치 (4.1.2 - I9100XXLSJ) (68) | 2016.05.15 |
안드로이드에서 리눅스 구동하기 (13) | 2015.12.01 |
댓글