Composer 없이 완성 배포본으로 시작하기
GNUCMS의 설치·운영과 기존 라이브러리를 사용하는 테마·확장 개발에는 Composer 설치가 필요하지 않습니다. 실행에 필요한 vendor와 정적 자산이 들어 있는 완성 배포 ZIP으로 시작합니다. Git이나 Node.js, npm도 기본 준비 항목이 아닙니다.
- GitHub의 kagla/gnucms 저장소에서 Releases를 열고 해당 릴리스의 Assets에 첨부된 gnucms-X.Y.Z.zip을 내려받습니다. X.Y.Z는 사용할 릴리스 버전입니다.
- ZIP을 작업용 폴더에 풀고 vendor/autoload.php가 포함되어 있는지 확인합니다. GitHub의 Source code (zip)·main.zip이나 git clone으로 받은 소스에는 vendor가 없으므로 완성 배포본을 사용합니다.
- PHP 8.2 이상과 필수 PHP 확장을 사용할 수 있는 로컬 웹서버 또는 별도 개발용 호스팅을 준비합니다. PHP 8.4를 권장하며 필수 확장과 폴더 배치는 새로 설치하기 문서를 따릅니다.
- MySQL/MariaDB에 개발 전용 DB와 계정을 만듭니다. 운영 DB를 연결하지 않으며 SQLite로 대체하지 않습니다.
- 웹 문서 루트를 www로 지정하고 config와 storage에 PHP 실행 계정의 쓰기 권한을 줍니다. vendor를 포함한 나머지 폴더는 웹 문서 루트보다 한 단계 위에 둡니다.
- 브라우저에서 개발 사이트의 /install.php를 열고 개발 DB·사이트 주소·관리자 정보를 입력해 설치합니다. config/config.php는 웹 설치가 생성하므로 미리 만들 필요가 없습니다.
- 설치한 작업용 복사본에서 templates·www의 테마 파일이나 modules·plugins의 확장 파일을 수정합니다. 기존 라이브러리를 그대로 사용하는 수정에는 의존성을 다시 설치할 필요가 없습니다.
코어 의존성 변경·자동 테스트가 필요한 경우
코어에 새 외부 라이브러리를 추가하거나 자동 테스트를 개발하는 작업에는 별도의 소스 작업 환경이 필요합니다. 이 경우에만 저장소 소스를 준비하고 개발 PC 또는 CI에서 Composer로 composer.lock에 맞는 의존성을 준비합니다. 사이트 설치와 테마·확장 수정의 필수 절차는 아닙니다.
정식 배포 ZIP은 운영용 vendor를 포함하며 tests 디렉터리와 PHPUnit 등 개발 의존성을 제외합니다. 따라서 배포본만으로 아래 PHPUnit 명령을 실행할 수 없습니다. 자동 테스트는 tests와 개발 의존성이 준비된 소스 작업 환경에서 명시적으로 요청받았을 때 실행합니다.
의존성이 바뀐 소스는 해당 소스와 함께 준비한 vendor로 실행해야 합니다. 다른 버전의 vendor를 임의로 섞지 않습니다. 완성 배포본·릴리스·운영 반영 문서에 따라 개발 PC 또는 CI에서 배포 파일을 완성하고 운영 서버에는 완성본을 업로드합니다.
검사 실행 규칙
이 저장소는 사용자에게 명시적으로 요청받은 경우에만 자동 테스트·PHP 문법 검사 등 실행 검증을 수행합니다. 커밋·릴리스 요청만으로 검사 승인을 추정하지 않습니다. 코드 변경 시에는 요청 범위와 지침을 먼저 확인합니다.
검사를 실행할 때 전용 MySQL DB의 TEST_MYSQL_DSN, TEST_MYSQL_USER, TEST_MYSQL_PASS를 지정합니다. 운영 DB·실제 회원·PG 운영 키·문자 수신자를 테스트 fixture에 사용하지 않습니다.
./vendor/bin/phpunit tests/관련테스트.php
./vendor/bin/phpunit
php -l 수정파일.php외부 서비스 격리
자동 검사는 transport·connection provider 등 제공되는 대체 경로를 사용합니다. 실제 알리고 수신이나 PG 승인 검사는 별도 명시 범위에서 최소 건수로 수행합니다. 테스트 모드·실제 모드, 접수·전달 완료를 기록하고 불명확한 결과에 자동 재요청하지 않습니다.
커밋 대상
config/config.php, storage의 실제 데이터, vendor와 비밀 환경 파일은 커밋하지 않습니다. 소스·샘플 설정·문서와 필요한 정적 자산을 커밋합니다. 사용자가 변경한 파일이 있는 작업 트리에서는 관련 없는 변경을 덮어쓰지 않습니다.
개발자 참고 소스
문서 파일 갱신 26-10-07 08:34:40