PHP로 제작된 웹기반 오픈소스 프로젝트 관리툴 qdPM
오픈소스(Open Source)로 공개된 웹 기반의 프로젝트 관리툴들이 꽤 많은데 대부분이 Java나 Ruby로 제작되어 있다. 항상 사용하고 있는 미니서버에 최대한 부담을 주지 않으면서 가장 익숙한 언어인 PHP로 개발된 프로젝트 관리툴은 생각외로 찾기가 힘들었다. 구글링 중에 우연히 찾아낸 qdPM 오픈소스는 가뭄의 단비와도 같았다. 최근 PHP 진영에서 꽤 각광받고 있는 Sympony 1.4 프레임워크가 사용되었고, YUI Library, JQuery 가 사용되었다.
번역기를 돌린 것 같은 허술한 느낌이지만 한글번역도 기본으로 존재하고 있다. PHP7을 지원하고 실사용을 위해 몇일 사용해봤더니 기본적인 프로젝트 관리를 위한 도구들은 충실하게 준비가 되어 있다. 감이 잡히지 않으시는 분들은 데모페이지를 먼저 방문하시는 것이 좋을 것 같다.
홈 페이지 : http://qdpm.net/
데모 페이지 : http://qdpm.net/qdpm-demo-free-project-management
데모페이지에 각 등급별 로그인 아이디와 패스워드가 기록되어 있으며 상단의 You can see demo version here http://qdpm.net/demo/v9/index.php 를 클릭하면 데모페이지로 접속된다.
Extended Version 이 있는데 유료버전이다. (당연하겠지만 유료인 만큼 더 확장된 기능을 가지고 있을 것이다.)
자 사용해보고 이녀석 정도면 프로젝트를 관리하는데 큰 문제가 없겠다 싶으신 분들은 직접 설치를 해보자.
Database는 mysql을 사용한다. MariaDB도 가능하며, 필자는 MariaDB를 사용중이다.
CREATE DATABASE qdpm; CREATE USER "qdpm"@"localhost"; SET password FOR "qdpm"@"localhost" = password('[PASSWORD]'); GRANT ALL PRIVILEGES ON pdpm.* TO "nextcloud"@"localhost" IDENTIFIED BY "[PASSWORD]"; FLUSH PRIVILEGES; // [PASSWORD] 에는 실제 입력할 패스워드를 넣어주세요.
설치 환경 부터 정확히 체크해보자.
PHP version >= 5.4
MySQL: 5.0 or newer, InnoDB storage engine
PDO drivers: mysql
설치된 PHP의 버전이 5.4 이상이어야 한다. 우분투를 기준으로 최근 업데이트 정식 배포판이 5.5.9 버전인 것으로 알고 있다. 해당 버전이 없다면 설치하거나 업데이트를 해줘야 한다. 또한 phpinfo() 를 통해서 PDO 드라이버가 설치되어 있는지 확인하고 PDO 드라이버를 설치해주셔야 합니다.
다운로드는 소스포지를 통해서 다운 받을 수 있음. 다음 링크로 가셔서 다운로드 받으세요.
https://sourceforge.net/projects/qdpm/
Zip 파일을 풀어서 FTP 등으로 설치할 곳에 올려도 되고, Zip 파일채로 올려서 시스템 내에서 압축을 풀어도 됩니다.
이부분은 워낙 쉬운 내용이라 굳이 설명하지 않겠습니다.
projectmanagement 라는 디렉토리를 생성해서 qdPM을 설치해줬는데 퍼미션 조정을 해주었음.
[peg-image src=”https://lh3.googleusercontent.com/-WXCQzpWNjJs/WrXGMgbKNvI/AAAAAAAAFhk/-qUmXbj_l1wF0tq0Q9G2FqEuCGIXwoO-ACCoYBhgL/s144-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580%2B006.png” href=”https://picasaweb.google.com/115330693669285320800/6536327407758695329#6536348352362723058″ caption=”이미지 006.png” type=”image” alt=”이미지 006.png” image_size=”518×21″ ]
nginX 에서는 www-data를 소유권으로 사용하기 때문에 이에 맞는 소유권을 설정
sudo chown www-data.www-data projectmanagement -R
이 과정은 생략해도 가능합니다. 단, 호스트 명을 이용해서 쉽게 접근이 가능한 주소를 만들고 싶다면 아래와 같은 과정을 거치면 됩니다.
vi 편집기로 /etc/nginx/sites-available 에 설정 파일을 만들어 줍니다.
/etc/nginx/sites-available $ sudo vi project.도메인.co.kr // 파일명을 꼭 project.도메인.co.kr 로 하지 않으셔도 됩니다. // 저는 각 지정 도메인마다 설정을 편하게 찾기 위해서 도메인명 그대로 사용합니다.
server { listen 80; server_name project.도메인.co.kr; client_max_body_size 20M; charset utf-8; root /home/계정명/www/projectmanagement; // www는 리눅스 배포본이나 개인설정에 따라 다를수 있습니다. location / { index index.php index.html index.htm; if (!-e $request_filename) { rewrite ^/(.+)?$ /index.php?qa-rewrite=$1 last; } } error_page 404 /404.html; location ~ \.(php|html|htm)$ { fastcgi_pass unix:/var/run/php/php7.1-fpm.sock; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
이제 nginX를 재시작 해줍니다.
$ sudo service nginx restart
DNS 서버를 직접 운영하신다면 해당 호스트명을 등록하고 갱신해주셔야 하고, DNS 서비스를 받고 계시다면 서비스를 받는 곳에서 호스트명을 갱신해주세요.
저는 dnszi.com 에서 무료로 DNS 를 사용하고 있기 때문에 해당 서비스를 이용해서 호스트 IP를 할당해주고 갱신하였습니다. (갱신은 때에 따라서 오래 걸리기도 합니다. 따라서 바로바로 주소가 작동하지 않을수도 있으니 최대 12~24시간을 기다려 보세요.)
[peg-image src=”https://lh3.googleusercontent.com/-dhRcPDvlyLI/WrYZxCmo3cI/AAAAAAAAFjg/kkSMHcLbBcgJS-VYFwY_S7RjpH9yozKGwCCoYBhgL/s144-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580%2B005.jpg” href=”https://picasaweb.google.com/115330693669285320800/6536327407758695329#6536440239478070722″ caption=”이미지 005.jpg” type=”image” alt=”이미지 005.jpg” image_size=”1116×415″ ] 설정한 도메인으로 접속하면 아래와 같이 인스톨을 위한 화면으로 전환된다. DB 설정 버튼을 눌러준다.
[peg-image src=”https://lh3.googleusercontent.com/-s9F_GOXMRiE/WrYZxM23BLI/AAAAAAAAFjg/WrUL0fGW4ociMxjQZpX2rrOxDKFntY0ogCCoYBhgL/s144-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580%2B006.jpg” href=”https://picasaweb.google.com/115330693669285320800/6536327407758695329#6536440242230461618″ caption=”이미지 006.jpg” type=”image” alt=”이미지 006.jpg” image_size=”1015×424″ ] mysql을 설정할때 지정한 user 와 password 를 입력한다.
[peg-image src=”https://lh3.googleusercontent.com/-ygZYCuEt3QU/WrYZxJadScI/AAAAAAAAFjg/64d8ZU-ApgwAxaB_O1Wk_Ztf_c_kY-WjQCCoYBhgL/s144-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580%2B007.jpg” href=”https://picasaweb.google.com/115330693669285320800/6536327407758695329#6536440241306028482″ caption=”이미지 007.jpg” type=”image” alt=”이미지 007.jpg” image_size=”919×468″ ] 관리자 아이디를 위한 패스워드를 설정해주고 나머지는 추후 프로그램 내에서도 변경 할 수 있다. admin@loclhost.com 으로 접속한 화면은 프로젝트 생성등에는 관여할수 없고, 일반적인 구성이나 사용자 추가 시에만 사용할 수 있다.
[peg-image src=”https://lh3.googleusercontent.com/-ALP_LC7Kh_Q/WrYZxNaSDaI/AAAAAAAAFjg/wZOwazoZ81ggNehzIHD7D7q8t2V4ZLJ4wCCoYBhgL/s144-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580%2B008.jpg” href=”https://picasaweb.google.com/115330693669285320800/6536327407758695329#6536440242379034018″ caption=”이미지 008.jpg” type=”image” alt=”이미지 008.jpg” image_size=”770×356″ ] 모든 설정이 완료되었다. 버튼을 누르면 로그인 페이지로 이동한다.
[peg-image src=”https://lh3.googleusercontent.com/-KK_HMy8fcDQ/WrYZxLUjYyI/AAAAAAAAFjg/gi6hZmZvUGM7l6phOxVq83v6n2qDylTTQCCoYBhgL/s144-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580%2B009.jpg” href=”https://picasaweb.google.com/115330693669285320800/6536327407758695329#6536440241818133282″ caption=”이미지 009.jpg” type=”image” alt=”이미지 009.jpg” image_size=”695×536″ ] 로그인 페이지가 뜨면 성공 !!!
[peg-image src=”https://lh3.googleusercontent.com/-DkiaoYFk4AU/WrYYrmTXgRI/AAAAAAAAFi4/_B8LQrtoUn4eh_c3v1neqnKlqBliFJx7wCCoYBhgL/s144-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580%2B001.jpg” href=”https://picasaweb.google.com/115330693669285320800/6536327407758695329#6536439046470074642″ caption=”이미지 001.jpg” type=”image” alt=”이미지 001.jpg” image_size=”879×580″ ] 관리자 화면에서 일반구성을 사용해 적절하게 바꾼 로그인 화면
[peg-image src=”https://lh3.googleusercontent.com/-uAMYYMgPyKs/WrlOUsme_KI/AAAAAAAAFk8/SdFOeBqvkjQkGe7tno-ddMtr5Hdh4sl6gCCoYBhgL/s144-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580%2B004.jpg” href=”https://picasaweb.google.com/115330693669285320800/6536327407758695329#6537342451581910178″ caption=”이미지 004.jpg” type=”image” alt=”이미지 004.jpg” image_size=”1912×858″ ] admin@localhost.com 으로 접속 했을때의 화면. 사용자와 구성에만 관여할 수 있다.
[peg-image src=”https://lh3.googleusercontent.com/-oBzjvhUSl5k/WrYYrlzEB4I/AAAAAAAAFi4/fzrM1kvqjoIuk0pMnOchJeQoe8-H8ohngCCoYBhgL/s144-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580%2B002.jpg” href=”https://picasaweb.google.com/115330693669285320800/6536327407758695329#6536439046334580610″ caption=”이미지 002.jpg” type=”image” alt=”이미지 002.jpg” image_size=”1919×860″ ] 관리자급 사용자로 접속했을때의 화면구성. 특별한 화면 구성은 없고 단촐하다.
[peg-image src=”https://lh3.googleusercontent.com/-BdtZZZ6QeHo/WrYYrn9mr1I/AAAAAAAAFi4/ucJM5Z5jPiwFXc5pmjiOHiuHNeewr4AQwCCoYBhgL/s144-o/%25EC%259D%25B4%25EB%25AF%25B8%25EC%25A7%2580%2B003.jpg” href=”https://picasaweb.google.com/115330693669285320800/6536327407758695329#6536439046915665746″ caption=”이미지 003.jpg” type=”image” alt=”이미지 003.jpg” image_size=”1920×859″ ] 프로젝트 생성 화면. 프로젝트에 대한 구성, 입력필드 추가 등 사용자 지정에 의해서 얼마든지 입맛에 맞게 바꿀수 있다. 아쉬운 점은 마지막 필드 현장사진이 이미지로 출력되지 않는다. (T-T) 우리 사무실에서 사용할때 가장 아쉬운 점이다. 해당 사이트에 아쉬운 점에 이부분을 어필해 봤는데 9.0에서 9.1로 업그레이드 되는데 1년 가까이 걸린것 같은데 언제 수정될지 알수가 없다.
이미지를 사용할 이유가 거의 없는 프로젝트를 관리하려면 좋은 선택일것 같다.
ㄱ. 기본에 충실한 기능들 (프로젝트, 작업-task, 티켓-ticket, 토론-Discussions, 일정관리)
ㄴ. 다국어 지원
ㄷ. 손쉬운 설치와 사용
ㄹ. PHP7 및 PDO 지원
ㅁ. 각종 필드를 추가하거나 편집해서 업무에 맞게 구성 할 수 있다.
ㅂ. Responsible을 지원해서 모바일에서도 원할한 사용이 가능하다.
ㄱ. 첨부파일이 이미지 파일일 경우 화면에서 바로 보여주지 못한다. 항상 링크된 주소만을 제공할 뿐이고 다운로드를 받아야 하는 불편함이 있다.
ㄴ. 조금 허술한 한글 번역
ㄷ. 신규개발 폐지를 선언한 야후의 YUI Library가 사용됐다.
ㄹ. PHP이지만 Sympony 프레임워크를 모르면 소스수정이 꽤 어렵다.
장점보다 단점이 더 많음에도 불구하고 qdPM은 상당히 쓸만한 가치가 있다. 기본기능이 충실하고 초급자나 중급자가 직접 설치하고 사용하기 쉬운 난이도를 가지고 있어 접근성이 좋고, 다국어 지원으로 조금 엉성하나마 한글 인터페이스를 제공하고 있다는 극강의 장점을 가지고 있다. PHP5 보다 두배 이상 빠른 PHP7 을 지원하고 있는 점도 마음에 든다. 필드의 추가, 편집만 잘해줘도 해당업무에 밀착된 프로젝트 관리툴로 변모 시킬 수 있다.
초보자나 중급자의 경우 설치형 프로젝트 관리툴로 강추하고 싶으며, 소호 비지니스를 운영하고 계시는 분들께도 추천하고 싶은 어플리케이션이다.
안녕하세요, qdpm 설치해봤는데 티켓은 무슨기능인가요?
이슈트래킹으로 이해하시는 것이 가장 좋을 것 같습니다. 프로젝트에 대한 각 이슈들을 정리 분류하고 진행할수 있도록 해주는 기능 이라고 생각하시면 되겠네요.