이번강좌(#4)는에는 공유 서버를  웹디스크로 만들기 입니다. 


지난번 강좌까지 공유(폴더)서버를 만들고, 자동백업을 설정하고, 도메인네임을 부여했는데요. 이제는 외부에서도 공유파일에 보다 안전하게 접근하고 사용할 수 있는 웹디스크 서버를 만드는 방법입니다.




   웹디스크를 만들기 위해 사용할 솔루션 패키지 프로그램은  AjaxPlorer   입니다.   해당 프로그램 이름에  Ajax 라는 Prefix처럼 웹화면에서도  동적인 UI 를 적용하여 편리하게 파일관리를 가능하게 해줍니다.


   마치 네이버의 N드라이브나  다음클라우드, 드롭박스 같은 웹기반 디스크 UI를 개인적으로 구축할 수 있다고 이해 하면 쉽습니다.



AjaxPlorer 의 현재시점(3월2일기준)의 최종 버전은 4.3.1 개발(Dev)버전과  4.2.3 안정(Release)버전 까지 나와 있습니다. 


 여기서는 4.2.3 안정화된 버전으로 설치하는것으로 합니다.


일단 공식적인 다운로드 및 설치 방법은 http://ajaxplorer.info/download/  에서 확인 가능합니다.



설치 환경 OS우분트  12.04 LTS  입니다. (현재 우분투 파일 서버 강좌시리즈 이므로)



설치하기


프로그램 설치를 위해서는 먼저 apt-get 설치환경에  Ajaxplorer  패키지의 소스정보를 추가해야 합니다.


방법은 적당한 에디터로 패키지 소스리스트 파일을 열고


$ sudo nano /etc/apt/sources.list


아래의 내용을 맨 하단에 추가합니다.


deb http://dl.ajaxplorer.info/repos/apt squeeze main

deb-src http://dl.ajaxplorer.info/repos/apt squeeze main


그리고 ajaxplorer 관련 public key 를 설치합니다.


$ sudo wget -O - http://dl.ajaxplorer.info/repos/charles@ajaxplorer.info.gpg.key | sudo apt-key add - 


  그리고 Ajaxplorer패키지를 설치합니다.  ajaxplorer 은 기본적으로 Apache2 와 php5를 사용합니다. 따라서 해당 패키지들이 사전에 설치되어있어야 하지만 설치가 안되어있더라도  ajaxplorer 설치과정에서 자동적(필요한 apache2, php5 등을)으로 설치하게 됩니다.


$ sudo apt-get update

$ sudo apt-get install ajaxplorer 


설치 실행시 보여지는 관련설치되는 패키지들입니다.

자동으로 필요한 패키지들이 설치되는 예


apt-get 을 이용한 설치가 끝났으면 Apache2  의 SSL을 활성화 시켜 줍니다. 


$ sudo a2enmod ssl            #ssl 모듈활성화 명령

$ sudo a2ensite default-ssl    #ssl 사이트 설정  활성화


  여기서 설치하는 SSL  웹기반 데이터 전송에 있어서 암호화를 지원하기 위한 도구 입니다.  Ajaxplorer 에서는 파일전송을 하는 경우에도 안전한 보안 통신을 권장하고 있기때문에 기본적인 수준에서 SSL 사용을 활성화 합니다.


그리고 다음은  사용 문자 인코딩을  한국어에 맞게 해줍니다.

envvars 파일을 환경설정을 위한정보를 저장하게 되는데 여기에서  LANG 이라는 환경변수를 설정해주면 됩니다.


방법은 envvars 파일을 열고  

 

$ sudo nano /etc/apache2/envvars


LANG="ko_KR.UTF-8"  을 설정해주면 되는데,  우분투에  /etc/default/local 파일에는 기본적인 인코딩설정이 있습니다. 이를 그대로 사용하기위해 아래 처럼  LANG 변수설정들을 모두  comment처리하고,  

. /etc/default/locale  부분에 있는 # 을 없애줍니다. ( uncomment )


## The locale used by some modules like mod_dav

#export LANG=C

## Uncomment the following line to use the system default locale instead:

. /etc/default/locale


#export LANG


그리고  /ajaxplorer 경로 설정을 Apache2에  (활성화)추가합니다.  


$ sudo cp /usr/share/doc/ajaxplorer/apache2.sample.conf /etc/apache2/sites-enabled/ajaxplorer.conf


그리고 나면 마지막으로  apache2를 재시작 해줍니다.


$ sudo service apache2 restart


이렇게 하여   http://도메인네임/ajaxplorer  접속시  ajaxplorer 로 연결 되게 됩니다.


처음 접속하고 나면 아래 그림처럼  Diagnostic Tool이 보여 현재 설치된 상태를 보여 줍니다. 

SSL Encryption Warning은 현재 SSL 접속이 아니다 보니 메시지를 보게 되는데. https://로  접속하면 해결되고, 


또는  아래 파일을 열어


$ nano /etc/ajaxplorer/bootstrap_conf.php


// 로 comment처리되어있던 부분을 제거해  AJXP_FORCE_SSL_REDIRECT 를 활성화 해줍니다.  


/*

 * If you want to force the https, uncomment the line below. This will automatically

 * redirect all calls to ajaxplorer via http to the same URL with https

 */

define("AJXP_FORCE_SSL_REDIRECT", true);


그럼, 이후 http://...     로 ajaxplorer경로에 접속하더라도 강제로 https://... 로 바뀌어 접속하게  됩니다.


그럼 이제 웹브라우저로   http://ip/ajaxplorer  접속해봅니다.




설정하기  - 리파지토리(Repository) 추가 



접속이 정상적으로 이루어 지면 아래 그림처럼 로그인 화면이 나옵니다.



최초 로그인은 admin/admin  관리자 계정으로 로그인 합니다. 


그리고 가장 먼저 해줄일은 password변경입니다.

화면 우측에 Logged as admin 이라는 버튼을 클릭하면 Change Password 메뉴로 변경이 가능합니다.





그렇게 해서 원하는 password로 변경했다면  다음 할일은 리파지토리(Repository)추가 입니다.


   Ajaxplorer에서 리파지토리는 사용자에게 접속가능한 저장공간을 의미하게 되는데, 그 저장공간의 실체가 파일시스템(파일경로) 일수도 있지만,  다른 서버의 FTP나, SFTP, SAMBA 또는 메일함 같은 논리적 개념의 저장공간도 접근 가능하게합니다.  그래서 단순히 Storage나 Directory(File Path)라는  말이 아닌 리파지토리(Repository)라는 가상 저장공간의 개념을 사용하고 있습니다.

  

   각각의 리파지토리는 원격지 또는 로컬영역에 상관없이 관리자가 원하는 가상의 경로에 매핑을 하게 됩니다.  이를 잘 활용하면  Ajaxplorer은  여러 서버로 흩어져 있는 저장소를 하나의 웹UI로 묶어 접근을 할 수 있게 해줍니다.


그럼 가장 기본적인 파일시스템 공간을 리파지토리로 추가해보겠습니다.


아래 그림을 참고하세요


좌측 상단 선택에서 아래 순서대로 메뉴을 선택합니다.

 

   Settings  -->  Repositories & Users  --> New --> Repository 


선택합니다.


그러면 아래 그림과 같은 생성창이 나옵니다.  






먼저 /first 경로로 Repository를 만들어 보겠습니다.  


   가장 기본적인 파일시스템[File System (Standard) ]을 선택합니다. 파일 시스템은 현재 Ajaxplorer이 설치된 서버에서 원하는 임의 디렉토리를 매핑할 수 있습니다.


   예를 들어  리눅스 /home/user1/first  디렉토리를 생성해서 http://myip/ajaxplorer/first 에 매핑 해주는 경우입니다. 


  

   그런데 여기서 먼저 확인이 필요한 부분이 있습니다.  Main Options에서 매핑할 디렉토리경로를 생성까지 하려는 경우에는 생성하려는 상위디렉토리가  www-data 유저에 권한이 있어야 합니다. 그렇지 않은 경우에는 실패합니다.   따라서 해당 사용자에 권한이 있는 상위디렉토리 이하에만 만들거나 또는  이미 권한(0777)있는 디렉토리를 매핑 해주면 됩니다.



우선 여기서는 우선 최소한의 옵션만 다루겠습니다.


Path : 매핑 디렉토리

Create : No  (이미 있는디렉토리 매핑)

File Creation Mask: 0777  (해당 리파지토리에서 파일생성시 부여할 권한 )

Purge Days : 해당일단위로 제거합니다.(Action Tasks Scheduler 설정필요)

Data template : 디렉토리 첫 접근시  복사할 내용이 있는 경로,  일종의 디렉토리 템플릿




 이렇게 하고 체크(확인)버튼을 누르면 

메타플러그인 설정이 나옵니다.



메타플러그인은 여러가지 부가정보 (검색정보, 버전관리)를 관리할 수 있는 플러그인입니다.  우선 별선택없이 바로 체크(확인) 합니다.


그러면 리파지토리가 정상적으로 생긴것을 확인 할 수 있습니다.



   이제 해당 first 리파지토리로 이동해서 파일을 올리거나 내려 받기가 가능합니다.  해당 경로를 기존의 사용중인 공유 디렉토리에 매핑해주면 일종의 웹디스크가 되는 것입니다.



가족이나 같은 사무실직원들간에 공유를 하고 싶은경우에는 사용자들 추가 시켜줄 수 도 있습니다.




Settings --> Users --> New User  


메뉴에서 사용자를  추가해 줍니다.


간단히 ID와 패스워드만 입력해주면 되고,  리눅스의 계정과는 별개로  Ajaxplorer 전용 유저 입니다.

 



접근 가능한 경로와 접근 권한을 부여합니다. 


앞서 만들 first 리파지토리에 읽고 쓰기 권하는 부여합니다.  그러면 바로 friend 라는 유저로 접근이 가능해집니다.  





사용하기 



아래는 friend 로 로그인한 이후 보게 되는 화면입니다.  



웹 UI의 기본 사용언어도 변경이 가능합니다. 


화면에서 마우스 우측버튼을 클릭하면  [language] 선택 후 한글로 전환이 가능합니다.




간단한 텍스트 파일은 웹화면에서 바로 만들고 작성/수정도 가능합니다.


텍스트파일을 더블 클릭하거나 마우스 우측버튼 클릭 후 [New File]을 클릭하면 됩니다.




Ajaxplorer은 PC/리눅스/Mac 에서 웹브라우저 환경뿐 아니라 스마트폰에서도 사용이 가능합니다.


 안드로이드폰에서 접근한 화면입니다.  


  처음 접속시 [보안인증서를 신뢰할 수 없습니다.]는 SSL설치에 사용된 인증서가 테스트인증서이기 때문에 나오는 화면입니다.  


로그인화면에 나타납니다. 여기에 새로 추가한 사용자를 이용해서 로그인합니다.


안드로이드에서는 전용 앱(유료)을 이용해서 사용할 수 도 있습니다.





   여기까지 Ajaxplorer 을 이용한 웹디스크 만들기를 마칩니다.  Ajaxplorer 은 최근 Version 5 를 발표를 앞두고 있는것으로 보입니다.   현재 4.x 에서도 방대하다 싶을 정도의 많은 기능 들을 제공하고있습니다.


  Ajaxplorer을 활용하면 가정이나 소규모 사무실에서 원격지에서도 웹을 이용해 공유서버로의 접근및 사용을 하는데 많은 편리함(사진서버,  대용량 첨부파일 보내기 기능 등...)을 제공해 줄 것 입니다.  







이글은  Apache2 설치 후  기본적인 설정파일에 대한 설명을 합니다. 


  (리눅스 환경은 우분투를 기준으로하지만 다른 배포본들도 설치경로에 차이가 좀 있을 수 있고 아파치2 설정방식은 동일 합니다.)





1. 설치하기


우분투에서 아파치 설치는 간단합니다.


아래처럼 apt-get 을 이용해서 설치명령을 주면 주르륵 설치는 끝납니다.


$sudo apt-get install apache2

패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다

상태 정보를 읽는 중입니다... 완료

다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다:

  linux-headers-3.2.0-29 linux-headers-3.2.0-29-generic-pae

이들을 지우려면 'apt-get autoremove'를 사용하십시오.

다음 패키지를 더 설치할 것입니다:

  apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1

  libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap

제안하는 패키지:

  apache2-doc apache2-suexec apache2-suexec-custom

다음 새 패키지를 설치할 것입니다:

  apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common

  libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap

0개 업그레이드, 9개 새로 설치, 0개 제거 및 88개 업그레이드 안 함.

1,833 k바이트 아카이브를 받아야 합니다.

이 작업 후 5,220 k바이트의 디스크 공간을 더 사용하게 됩니다.

계속 하시겠습니까 [Y/n]?y

.....  


디렉토리설치까지는 끝나고 이후 실제 Apache2를 원하는데로 구동하기 위한 설정이 필요합니다.


설치 후  /etc/apache2  디렉토리를 살펴보면 아래와 같은 파일들을 볼 수 있습니다.


총 5개의 디렉토리와 5개의 설정파일이 보입니다.



2. 설정파일 설명


구동시적용 되는 순서대로 파일을 설명합니다.


envvars : 환경변수 설정파일  

기본적으로 아파치는 구동이 될때  /etc/init.d/apache2  스크립트를 통해 데몬으로 띄워지게 됩니다.

이 스크립트에서 envars 파일을 환경 변수 적용파일로 사용하게 됩니다.  apache2에 적용이 필요한 환경변수 값이 있다면 envvars 파일에 적용하면됩니다.


apache2.conf : Apache2 설정 파일

아파치2가 실행될때 가장먼저 읽어드리게 되는 파일이며 여기에서 다른 설정파일들을 Include 명령으로 (아래예 처럼)포함하고 있습니다.


# ------------------ 다른 설정 파일들을  Include 명령으로 포함하고 있음 ----

# Include module configuration:

Include mods-enabled/*.load

Include mods-enabled/*.conf


# Include all the user configurations:

Include httpd.conf


# Include ports listing

Include ports.conf

#...


# Include generic snippets of statements

Include conf.d/


# Include the virtual host configurations:

Include sites-enabled/


 즉, 모든 설정은 apache2.conf 파일을 통해서 이루어지게 되나. 설정관리를 좀더 편리하게 하기위해 각각 별도의 파일이나 디렉토리에 나누어 저장하고 이를 실행시점에 Include 로 하나의 파일로 포함되게 하는 것입니다.  그래서 보통은 apache2.conf 파일을 직접수정하기 보다 각각의 설정 내용에 맞는 파일을 찾아 수정하게 됩니다.


mods-enabled/ :  이 서브디렉토리 경로는 Apache2 가 구동될때 사용할 추가 모듈에 대한 정의를 저장하게 되는 곳입니다.   *.load 파일에서는 모듈을 읽어드리는 LoadModule 명령을 포함하고 있게 되고 *.conf 파일에서는 해당 모듈에 대한 설정 정보를 포함하고 있습니다.


mods-available/ : 이 서브디렉토리는  Apahce2를 처음 설치를 하게 되면 기본적으로 사용가능한 모듈들을 포함하고 있습니다.  여기한 포함된 모듈중 실제사용할 모듈은 mods-enabled/ 경로에서 링크를 하고 있게 됩니다.



  관리자는 사용을 원하는 모듈에 대해서는 a2enmod 명령을 이용해서 mods-enabled/ 경로에 링크를 만들어주면 됩니다.


$a2enmod <모듈명>



아래의 예는  alias 모듈을 활성화 하는 예입니다.

아래 처럼 ln 명령으로 심볼릭 링크를 만들어 주어도 결과는 같습니다.


$ln -s /etc/apache2/mods-available/alias.load /etc/apache2/mods-enabled/

$ln -s /etc/apache2/mods-available/alias.conf /etc/apache2/mods-enabled/


특정 모듈을 비활성화 하려면  a2dismod  명령을 사용합니다.

$a2dismod <모듈명>




httpd.conf : 아파치 사용자 임의 설정들을 넣는 용도로 사용합니다.

  Apache2처음 설치시 이파일에는 아무내용도 없습니다. 0바이트 이죠.   모듈설정이나 가상도메인들은 별개의 디렉토리에 별도 파일로 작성하게 되기때문에,  이런용도외에  특별히 추가할 사항들에 대해서만 httpd.conf에 추가하면 적절할것 같습니다.


ports.conf : 리스닝 포트를 설정합니다.

처음에는 아래내용이 채워져 있습니다.


#도메인 네임기반 가상호스트를 설정하는데 80포트에 대해서 한다는 의미

NameVirtualHost *:80


#80 포트로 리스닝을 합니다.

Listen 80


#mod_ssl.c 모듈이 있을때는 443 포트로 리스닝을 합니다.

<IfModule mod_ssl.c>

    # If you add NameVirtualHost *:443 here, you will also have to change

    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl

    # to <VirtualHost *:443>

    # Server Name Indication for SSL named virtual hosts is currently not

    # supported by MSIE on Windows XP.

    Listen 443

</IfModule>


#  mod_gnutls 가 있을때는 443포트로 리스닝을 합니다.

<IfModule mod_gnutls.c>

    Listen 443

</IfModule>




sites-available/: 하나의 Apache2 서버에 여러 (가상)사이트를 운영하는 경우 여기에 해당 사이트 별로 추가를 합니다.  사이트는 도메인네임기반(Name Based)일수도, 포트기반, 또는 IP기반으로도 할 수 있습니다.


sites-enabled/: 실제활성화할 사이트파일에 대한 링크를 생성하는경로 입니다. sites-available/ 디렉토리에서 대상사이트 파일을 생성한뒤 a2ensite  명령을 이용해서 활성화(심볼릭링크 생성)합니다.  반대로 비활성화를 하려면 a2dissite 명령을 사용합니다. 


예를 들어  www.funnylog.com  이란 사이트를 운영하고자 한다면 다음과 같이 됩니다.



먼저 default 라는 이미 있는 파일을 템플릿으로 하여 www.funnylog.kr이라는 사이트용 파일을 만듭니다.


/etc/apache2/sites-available$ cp default www.funnylog.kr


그리고 아래 파일처럼 수정합니다.  앞서 ports.conf 파일에서 NameVirtualHost *:80 으로 도메인네임기반 가상호스팅이 설정된 상태이므로  각 사이트 설정파일에  ServerName 에 따라서 홈페이지 경로가 적용되게 됩니다.


<VirtualHost *:80>

        ServerAdmin webmaster@funnylog.kr

#가상 호스트 도메인명 

        ServerName www.funnylog.kr

        ServerAlias *.funnylog.kr


#홈페이지 경로 index.html 파일이 저장된곳 

        DocumentRoot /var/sites/funnylog.kr

        <Directory />

                Options FollowSymLinks

                AllowOverride None

        </Directory>

        <Directory /var/sites/funnylog.kr/>

                Options Indexes FollowSymLinks MultiViews

                AllowOverride None

                Order allow,deny

                allow from all

        </Directory>


        ErrorLog ${APACHE_LOG_DIR}/error_weheo.log


        # Possible values include: debug, info, notice, warn, error, crit,

        # alert, emerg.

        LogLevel warn


        CustomLog ${APACHE_LOG_DIR}/access_weheo.log combined


</VirtualHost>


만들어진 사이트를 a2ensite 명령어로 활성화합니다. (앞서 모듈과 같은 방식입니다.)


/etc/apache2/sites-available$ a2ensite  www.funnylog.kr


비활성화를 할때는 a2dissite 명령어를 사용합니다. 


/etc/apache2/sites-available$ a2dissite  www.funnylog.kr


Apache2 서비스에 설정파일을 리로드 하도록 합니다.


/etc/apache2/sites-available$ sudo service apache2 reload



   다끝났으면  해당 사이트 경로(/var/sites/funnylog.kr)에 보여질 웹페이지를 만들고 적용이 끝났으면 웹브라우저로 해당 사이트에 접속하여 원하는 페이지가 보이는지 확인합니다.


마치겠습니다.




+ Recent posts