Yona

Naver에서 오픈소스프로젝트로 개발된 SW 협업 개발 플랫폼. Yobi의 fork version. (Yobi 개발과정 : <http://www.slideshare.net/deview/131-deview-2013-yobi>) 코드 저장소 + 이슈 트래커 + 협업 코드 교환 + 코드 리뷰 Apache 2.0 license. (<https://repo.yona.io/yona-projects/yona/post/3> 참고) 설치형으로 제공. - 필요한만큼의 보안수준을 가질 수 있음. - 외부 환경에 영향을 받지 않을 수 있음. Java 8 이상에서 동작. Windows / linux / mac 지원. 모바일 페이지 지원. Yobi에 비해 개선된 기능은 <https://repo.yona.io/yona-projects/yona/post/8> 참조.
#### MariaDB 사용 전신인 Yobi에서는 H2DB를 Embedded Mode로 사용. 사용자와 프로젝트가 천 단위 이상으로 늘어나는 과정에서 여러가지 문제 발생. - (H2 DB의 대규모 사용자 기반 시스템에서의 안정성, 성능 부족) MySQL로 DB를 변경하면서 안정성과 성능이 대폭 향상되었으나, 라이선스 문제가 있음. 2차 배포시 문제가 없도록 MariaDB를 선정하고 이전. - InnoDB 대신 XtraDB 사용. - MySQL Connector 대신 MariaDB Connector 사용. (<https://repo.yona.io/yona-projects/yona/post/4> 참고)
### 설치 - MariaDB 설치 - Yona 설치
#### MariaDB 설치 MariaDB 10.1.10 이상 설치 필요 1. Linux * [Setting up MariaDB Repositories](https://downloads.mariadb.org/mariadb/repositories/) 2. Mac * brew install 을 이용해서 설치를 권장합니다. * <https://mariadb.com/blog/installing-mariadb-10010-mac-os-x-homebrew> 3. Windows * <https://downloads.mariadb.org/mariadb/10.1.11/#os_group=windows>
##### DB 설치 후 유저 및 Database 생성 MariaDB root 유저로 접속 ``` mysql -uroot ``` yona 유저 생성. ``` create user 'yona'@'localhost' IDENTIFIED BY '사용할 패스워드'; ``` UTF8 확장 문자열을 저장할수 있는 포맷을 지정하여 DB 생성 ``` set global innodb_file_format = BARRACUDA; set global innodb_large_prefix = ON; create database yona DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_bin ; ``` yona 유저에게 yona 데이터베이스 권한 부여 ``` GRANT ALL ON yona.* to 'yona'@'localhost'; ``` yona 유저로 접속 확인 ``` mysql -uyona -p'사용할 패스워드' ``` yona DB가 사용 가능한지 확인 ``` use yona ``` /etc/my.cnf 파일에 아래 내용 추가. (mac os의 경우 ~/.my.cnf) ``` [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] collation-server=utf8mb4_unicode_ci init-connect='SET NAMES utf8mb4' character-set-server=utf8mb4 lower_case_table_names=1 innodb_file_format=barracuda innodb_large_prefix=on ```
#### Yona 설치 <https://github.com/yona-projects/yona/releases>에서 다운로드후 압축 해제. wget으로도 가능. ``` wget https://github.com/yona-projects/yona/releases/download/v1.0.0/yona.zip unzip yona.zip ```
##### conf 파일 생성 압축이 풀린 곳(yona 설치 폴더) 에서 `bin/yona` 실행. (Java 8 이상 필요) ``` cd yona bin/yona ``` 실행하면 패스워드가 틀렸다는 에러와 함께 실행 종료. 이후 conf 디렉토리 확인 가능.
##### DB 설정 수정 conf 폴더 아래의 application.conf 파일에서 password를 MariaDB의 yona 사용자의 비밀번호로 수정. ``` ... db.default.driver=org.mariadb.jdbc.Driver db.default.url="jdbc:mariadb://127.0.0.1:3306/yona?useServerPrepStmts=true" db.default.user=yona db.default.password="yona user 비밀번호" ... ```
##### 실행 다시 압축이 풀린 곳(yona 설치 폴더) 에서 `bin/yona` 실행. ``` cd yona bin/yona ```
웹브라우저를 통해 <http://127.0.0.1:9000>으로 접속. admin 설정. 쉘 다시 시작.
기타 설정, 직접 소스코드 빌드 실행은 <https://repo.yona.io/yona-projects/yona> 참고. DB Error, 백업의 경우도 위 페이지 참고. AWS에 설치시에 <https://okdevtv.com/mib/yona> 참고.
### 기능 그룹 - 개요 - 이슈 - 게시판 프로젝트 - 개요 - 코드 주고받기 - 이슈 - 마일스톤 - 코드리뷰 - 게시판 그룹, 프로젝트 관리 기능 제공. markdown 지원. 두가지의 코드 저장소 지원 (git, Subversion). project watch 기능. (메일 알림 지원) 코드 주고받기(병합) 기능. 병합 요청된 코드 리뷰 기능. 이슈에 담당자, 마일스톤 지정. 프로젝트 라벨 지원.
##### 기타 이슈 기본적으로 Yobi의 사용법과 동일. 당연하지만, 멤버가 아닌 프로젝트에 대해 pull, fork는 가능하지만 push는 안됨. 이 때는 Pull request를 통해 기여 가능함. 코드 주고받기 / 리뷰는 브랜치를 따서 master가 아닌 브랜치에 push해야 사용 가능. (branch 생성과 push는 git 사용 방법 참조 요망.) 마일스톤 진행중 / 종료 구분은 기한이 종료되었느냐로 나뉨. State와 관계 없음. 커밋메시지에 이슈번호를 언급하면 해당 이슈에 관련 커밋이 표시됨. 코드저장소를 svn으로 할 경우에는 커밋번호 Quick Link 없음. '@사용자' 또는 '@프로젝트명' 링크만 적용됨.(git 사용 권장) 파일첨부 기능은 첨부된 파일을 hash값 계산해서 downloads 디렉토리에 저장. 동일 파일이 계속 업로드 되어도 하나의 파일만 유지. 파일은 2기가까지 업로드 가능. 그룹 멤버이기만 하면 누구나 그룹내에서 프로젝트 생성 가능. 권한은 오직 관리자 / 참여자 로만 나뉨. 그룹 관리자인 경우 그룹 내 해당 프로젝트 멤버가 아니더라도 프로젝트 수정/삭제/멤버추가/멤버삭제의 권한을 가짐.