RoundCube - Plugins 「Composer」 PHP 의존성 관리 도구 사용 방법

    ◆ Plugins 「Composer」

    플러그인「Plugin」은 프로그램 또는 소프트웨어등 기존에 없는 기능을 더욱 확장하고 사용자 편의성을 높이기 위한 환경을 제공합니다. Roundcube용 Plugins 저장소는 Composer를 기반으로 하여 관리, 설치 및 업데이트를 진행합니다. 사실 이걸 먼저 포스팅했었어야 했는데 반대가 되었네요.

     

    컴포저「Composer」PHP의 의존성 관리 도구「A Dependency Manager for PHP」로 프로젝트에서 필요한 라이브러리 및 패키지를 쉽게 설치하고 관리할 수 있게 도와줍니다. 컴포저를 사용하면 프로젝트의 「Composer.json」 파일에 필요한 라이브러리를 정의하고, 해당 라이브러리 및 그 의존성을 자동으로 설치할 수 있습니다.

     

    Composer 공식 사이트 : https://getcomposer.org/

    「~/roundcube/composer.json」 설치 경로에는 이미 정의된 파일이 있습니다.

    ■ 설치환경 및 준비물

    메일서버 구축[참고] : https://foxydog.tistory.com/104

    리즈 업데이트 및 설치 테스트 : 「2024-05 ~ 2024-06」

     

    개인적으로 사용하고 있는 클라우드서버에 이전에 블로그에 남긴 구축 방식으로 업데이트「update」를 진행하여 일부 프로그램 및 솔루션이 업데이트가 된 상태에서 진행했습니다. 「Rocky Linux release 8.9 (Green Obsidian)」, 「Apache/2.4.37 (Rocky Linux)」, 「PHP 7.4.33」, 「10.6.18-MariaDB」, 대체로 마이너버전만 업데이트되었으며, 라운드큐브는 최신 버전인 「Version 1.6.7」으로 변경하였습니다. 필자가 구축한 방식으로 진행하셨다면 기본 설치된 플러그인은 「Filesystem_attachments」, 「jqueryui」, 「virtuser_query」 3개가 기본으로 적용되어 있습니다.

     

    「~/roundcube/plugins」 경로에 이미 현재 버전에서 안정적으로 사용할 수 있는 플러그인들이 설치가 되어 있습니다. 그 외 플러그인 설치를 하실 경우는 아래 공식 홈페이지 Plugins 설치 방법 참고

    URL : https://plugins.roundcube.net/#/


    ① Composer 설치

    [root@mail ~]# cd /root    [경로 이동]

    ※ RoundCube는 <roundcube-project-root> 설치 경로에 이동하라고 적혀 있는데 아무 경로에 다운로드하여도 상관없습니다.

     

    [root@mail ~]# curl -s https://getcomposer.org/installer | php    [컴포저 다운]

    ※ 아래 메시지 참고, 외부에서 다운로드하는 부분으로 웹[80,443] 방화벽 오픈되어 있어야 합니다.

    All settings correct for using Composer

    Downloading...

     

    Composer (version 2.7.7 ※ 2024-06-12 기준 최신 버전) successfully installed to:

    /root/composer.phar

    Use it: php composer.phar

    [root@mail ~]# mv composer.phar /usr/local/bin/composer    [PATH 경로(글로벌)에 설치]

    ※ 꼭 RoundCube가 아니더라도 어떤 경로에서도 명령어를 사용할 수 있도록 PATH 경로에 설치하면 편하게 이용할 수 있습니다.

     

    [root@mail ~]# ll /usr/local/bin/composer    [파일 확인]

    -rwxr-xr-x 1 root root 2989019 Jun  1 15:56 /usr/local/bin/composer


    ② 사용 예시

     

    먼저 공식 홈페이지 검색에서 사용할 Plugins을 검색합니다. 입력하면 자동완성으로 하단에 나옵니다. 지금 버전 스킨에서는 적용이 되지 않지만, 설치 방법 예시를 위해 「quota」 플러그인 설치를 진행해 보도록 하겠습니다. Vendor(공급자=개발자)/Plugin(패키지 이름)」이라고 생각하시면 됩니다. 클릭하면 개발자가 패키지를 제공해 주는 사이트로 연결해 주므로 Composer 설치 방법을 그대로 따라가면 됩니다.

     

     

    [root@mail roundcube]# cd /var/www/html/roundcube    [경로 이동]

     

    [root@mail roundcube]# composer require jfcherng-roundcube/quota    [1차 시도]

     

    Your requirements could not be resolved to an installable set of packages.


      Problem 1
        - pear/net_ldap2 v2.3.0 requires ext-ldap * → it is missing from your system. Install or enable PHP's ldap extension.

        - kolab/net_ldap3 v1.1.5 requires pear/net_ldap2 >=2.0.12 → satisfiable by pear/net_ldap2[v2.3.0].

        - kolab/net_ldap3 is locked to version v1.1.5 and an update of this package was not requested.

     

    ※ 위와 같이 의존성을 검사하여 필요한 패키지가 무엇인지 알려줍니다. 필자는 「Install or enable PHP's ldap extension.」 PHP의 LDAP 확장 설치 또는 활성화가 필요하다고 나오네요. 아래와 같이 없다면 필요한 패키지를 설치합니다.

     

    [root@mail roundcube]# dnf(또는 yum) install php-ldap    [PHP 모듈 추가 설치]

     

    [root@mail roundcube]# vim /etc/php.ini    [PHP 환경변수 파일 및 모듈 활성화]

     

    PHP 설정 중

    758 ; Directory in which the loadable extensions (modules) reside.

    759 ; http://php.net/extension-dir

    760 ;extension_dir = "./"

    761 ; On windows:

    762 ;extension_dir = "ext"

    763 extension=ldap    [자동으로 들어가나 없다면 추가]

     

    [root@mail roundcube]# systemctl restart httpd    [아파치 재시작]

     

    [root@mail roundcube]# composer require jfcherng-roundcube/quota    [2차 시도]

     

    Package operations: 1 install, 0 updates, 0 removals

        Failed to download jfcherng-

    roundcube/quota from dist: The zip extension and unzip/7z commands are both missing, skipping.

    Your command-line PHP is using multiple ini files. Run `php --ini` to show them.

        Now trying to download from source

     

    ※ 이번에는 PHP의 「ZIP 및 unzip/7z」 명령어를 할 수 없어서 오류가 발생했습니다. 똑같이 없다면 필요한 패키지를 설치합니다.

     

    [root@mail roundcube]# dnf(또는 yum) install php-zip    [PHP 모듈 추가 설치]

     

    [root@mail roundcube]# composer require jfcherng-roundcube/quota    [3차 시도]

     

      - Installing jfcherng-roundcube/quota (0.0.21): Extracting archive [0.0.21 (2022-06-07) 마지막 버전]

    Do you want to activate the plugin quota? [Y|n] n    [플러그인 바로 활성화할 건지, 일단 NO]

    Creating package config file

    Generating autoload files

    5 packages you are using are looking for funding.

    Use the `composer fund` command to find out more!

    No security vulnerability advisories found.

     


    ③ 플러그인 적용 하기


    설치가 되면 자동으로 「~roundcube/plugins/」 경로에 「quota」 폴더가 생성이 되어 있습니다. 웹 접근을 위해 편의상 아파치 실행 권한에 맞게 수정합니다.

     

    [root@mail plugins]# cd m/var/www/html/roundcube/plugins    [플러그인 설치 경로]

    [root@mail plugins]# ll | grep quota    [설치 확인]
    drwxr-xr-x 5 root  root   4096 Jun 13 17:59 quota

     

    ※ 아파치 권한에 맞게 수정 [보안 환경에 따라 조정]

    [root@mail plugins]# chmod 755 -R quota/
    [root@mail plugins]# chown apache:apache -R quota/

     

    [root@mail config]# vim /var/www/html/roundcube/config/config.inc.php    [플러그인 추가]

     

    이후 라운드큐브 웹메일 [설정]에서 「quota」 메뉴가 나오는지 확인해 보시면 됩니다. ※ 이전 포스팅에서도 언급을 하였지만, 해당 스킨 및 버전에서는 메뉴는 나오지만 용량 체크 및 UI가 제대로 나오지 않습니다. 「Composer」 사용법을 알기 위해 테스트를 진행한 부분으로 참고하시기 바랍니다.


    이렇게 컴포저 사용방법에 대해서 알아보았습니다. 이후 이미 설치된 플러그인에서 사용해도 괜찮을 것 같은 기능을 하나씩 적용 테스트를 해볼 예정입니다.

     

    ※ 모든 내용은 직접 테스트 및 확인한 내용만 업로드합니다. 오타나 잘못된 정보가 포함되어 있다면 지적 및 정보 공유 감사합니다.

    Designed by JB FACTORY