Open Journal Systems (OJS) 프로젝트 구조 및 설정 안내

Open Journal Systems(OJS)는 학술 저널 발행 및 관리 프로세스를 지원하기 위해 설계된 오픈 소스 소프트웨어입니다. 이 문서에서는 OJS 프로젝트의 핵심 구조와 주요 설정 파일에 대해 자세히 살펴보겠습니다.

1. OJS 프로젝트 디렉토리 구조 분석

OJS 프로젝트의 디렉토리 구조는 여러 기능 영역으로 명확하게 구분되어 있습니다. 각 디렉토리와 파일은 특정 목적을 가지며, 시스템의 전반적인 기능을 구성합니다.

  • ./api/: OJS 애플리케이션의 RESTful API 인터페이스를 정의하는 파일들을 포함합니다.
  • ./cache/: 애플리케이션 성능 향상을 위한 캐시 데이터를 저장하는 공간입니다.
  • ./classes/: OJS의 핵심 비즈니스 로직과 데이터 모델을 포함하는 클래스 파일들이 위치합니다.
  • ./controllers/: 사용자의 HTTP 요청을 처리하고 적절한 응답을 생성하는 컨트롤러 로직을 담당합니다.
  • ./cypress/: 프론트엔드 자동화 테스트를 위한 Cypress 관련 파일들을 보관합니다.
  • ./dbscripts/xml/: 데이터베이스 스키마 정의 스크립트와 XML 형태의 관련 파일들을 포함합니다.
  • ./docs/: 프로젝트의 문서화 자료를 제공합니다.
  • ./jobs/: 백그라운드에서 실행되는 작업 및 태스크 큐 관련 파일들을 관리합니다.
  • ./js/: 프론트엔드 사용자 인터페이스의 동적 기능을 구현하는 JavaScript 파일들입니다.
  • ./lib/: OJS에서 사용하는 외부 라이브러리 및 확장 모듈이 저장됩니다.
  • ./locale/: 다국어 지원을 위한 언어 팩 및 지역화 파일들이 위치합니다.
  • ./pages/: 사용자에게 보이는 웹 페이지를 구성하는 주요 파일들입니다.
  • ./plugins/: OJS의 기능을 확장하고 사용자 정의할 수 있는 다양한 플러그인 모듈들이 포함됩니다.
  • ./public/: 정적 자원(이미지, CSS 등) 및 애플리케이션의 웹 진입점이 되는 파일들을 담고 있습니다.
  • ./registry/: 시스템에 등록된 플러그인 및 컴포넌트 정보를 관리합니다.
  • ./schemas/: 데이터베이스 스키마 정의 파일들이 위치합니다.
  • ./styles/: OJS 사용자 인터페이스의 시각적 스타일을 정의하는 CSS 파일들입니다.
  • ./templates/: 페이지 렌더링에 사용되는 HTML 템플릿 파일들을 포함합니다.
  • ./tests/: 프로젝트의 자동화된 테스트 코드들이 저장됩니다.
  • ./tools/: 프로젝트 빌드, 배포 및 기타 유틸리티 스크립트들이 포함됩니다.
  • ./.github/: GitHub Actions 워크플로 및 설정 파일들을 관리합니다.
  • ./.husky/: Git 훅 관련 스크립트들을 포함합니다.
  • ./.editorconfig: 다양한 편집기에서 일관된 코딩 스타일을 유지하기 위한 설정 파일입니다.
  • ./.eslintrc.cjs: JavaScript 코드 품질 검사를 위한 ESLint 설정 파일입니다.
  • ./.gitignore: Git 버전 관리에서 제외할 파일 및 디렉토리를 정의합니다.
  • ./.gitmodules: Git 서브모듈 설정 파일입니다.
  • ./.php-cs-fixer.php: PHP 코드 스타일 자동 수정을 위한 설정 파일입니다.
  • ./.prettierignore: Prettier 코드 포매터에서 무시할 파일들을 정의합니다.
  • ./.scrutinizer.yml: 코드 품질 분석 도구 Scrutinizer의 설정 파일입니다.
  • ./LICENSE: 프로젝트의 라이선스 정보를 명시합니다.
  • ./README.md: 프로젝트에 대한 개요, 설치 및 사용 방법 등 기본 정보를 제공합니다.
  • ./SECURITY.md: 프로젝트의 보안 정책 및 취약점 보고 절차를 설명합니다.
  • ./babel.config.js: JavaScript 코드 트랜스파일링을 위한 Babel 설정 파일입니다.
  • ./config.TEMPLATE.inc.php: OJS의 기본 설정 템플릿 파일입니다. 실제 사용 시 config.inc.php로 복사하여 수정합니다.
  • ./cypress.config.js: Cypress 테스트 러너의 설정 파일입니다.
  • ./cypress.travis.env.json: Travis CI 환경에서 Cypress 테스트를 위한 환경 변수 설정 파일입니다.
  • ./favicon.ico: 웹사이트의 파비콘 아이콘 파일입니다.
  • ./index.php: OJS 애플리케이션의 메인 진입점 파일입니다.
  • ./jsconfig.json: JavaScript 개발 환경 설정을 위한 파일입니다.
  • ./package-lock.json: npm 패키지 종속성 잠금 파일입니다.
  • ./package.json: Node.js 프로젝트의 메타데이터 및 스크립트, 종속성 정보를 정의합니다.
  • ./phpdoc.dist.xml: PHPDoc 문서 생성 도구의 설정 파일입니다.
  • ./robots.txt: 웹 크롤러의 접근을 제어하는 로봇 배제 표준 파일입니다.
  • ./schemaspy.properties: 데이터베이스 문서화 도구 SchemaSpy의 설정 파일입니다.
  • ./vite.config.js: 프론트엔드 개발 서버 및 빌드 도구 Vite의 설정 파일입니다.

2. OJS 애플리케이션 시작 파일

OJS 애플리케이션은 index.php 파일을 통해 초기화되고 실행됩니다. 이 파일은 모든 웹 요청을 처리하는 프론트 컨트롤러 역할을 수행하며, 시스템의 핵심 구성 요소를 로드하고 요청 라우팅을 시작합니다.

<?php

// OJS 핵심 애플리케이션 클래스를 포함합니다.
// PKP 라이브러리 경로에 따라 'classes/core/PKPApplication.php' 대신 다른 경로일 수 있습니다.
require_once('classes/core/PKPApplication.php');

// 새로운 OJS 애플리케이션 인스턴스를 생성합니다.
$ojsAppInstance = new PKPApplication();

// 애플리케이션을 실행하여 사용자 요청을 처리합니다.
$ojsAppInstance->run();

위 코드는 PKPApplication.php 파일을 불러와 PKPApplication 클래스의 인스턴스를 생성한 다음, run() 메서드를 호출하여 애플리케이션의 생명 주기를 시작하는 과정을 보여줍니다. 사용자가 OJS 설치 URL에 접속하면 이 index.php 파일이 가장 먼저 실행됩니다.

3. OJS 시스템 설정 파일

OJS의 동작을 제어하는 주요 설정은 config.TEMPLATE.inc.php 파일에 정의되어 있습니다. 이 파일은 데이터베이스 연결 정보, 파일 경로, 보안 설정 등 시스템 전반에 걸친 중요한 파라미터들을 담고 있습니다. 실제 운영 환경에서는 이 파일을 config.inc.php로 복사하고, 환경에 맞게 수정해야 합니다.

<?php

// 데이터베이스 연결 설정
define('OJS_DB_NAME', 'your_journal_db');    // 저널 데이터베이스 이름
define('OJS_DB_USER', 'db_user_account');    // 데이터베이스 사용자 이름
define('OJS_DB_PASS', 'secure_password');    // 데이터베이스 사용자 비밀번호
define('OJS_DB_HOST', 'localhost');          // 데이터베이스 서버 호스트 (예: localhost, 127.0.0.1)

// OJS 설치 경로 설정
define('OJS_BASE_URL', 'http://your-ojs-domain.com'); // OJS가 설치된 기본 URL

// 기타 시스템 설정 (예시)
// define('OJS_FILE_DIR', '/path/to/ojs_files'); // 업로드 파일 저장 경로 (실제 파일 경로로 변경)

?>

위에 제시된 코드 예시는 데이터베이스 연결과 OJS 기본 URL을 설정하는 방법을 보여줍니다. OJS_DB_NAME, OJS_DB_USER, OJS_DB_PASS, OJS_BASE_URL 등의 상수는 반드시 실제 환경에 맞춰 올바른 값으로 변경해야 합니다.

태그: OpenJournalSystems OJS PHP ProjectStructure configuration

7월 27일 10:37에 게시됨