diff --git a/장헌 레거시 리눅스전환 검토/0010.장헌 레거시 리눅스 전환 실행 정책 문서.md b/장헌 레거시 리눅스전환 검토/0010.장헌 레거시 리눅스 전환 실행 정책 문서.md new file mode 100644 index 0000000..59bb2a5 --- /dev/null +++ b/장헌 레거시 리눅스전환 검토/0010.장헌 레거시 리눅스 전환 실행 정책 문서.md @@ -0,0 +1,141 @@ +# 장헌 레거시 리눅스 전환 실행 정책 문서 + +## 문서 목적 + +이 문서는 장헌 레거시 서비스의 리눅스 전환 작업을 실제로 수행할 때의 기준 문서다. + +앞으로의 작업은 본 문서의 `단계별 타임테이블`을 기준으로 진행한다. + +또한 작업 중 새로운 단계가 추가되거나, 기존 단계의 범위/순서/소요가 변경되면: + +1. 먼저 이 문서의 타임테이블을 갱신하고 +2. 그 다음 실제 작업을 진행한다 + +즉, 이 문서는 단순 보고용이 아니라 `실행 기준표`다. + +## 프로젝트 배경 + +장헌 레거시 서비스는 현재 Windows 기반 APMSETUP 환경에서 운영되고 있다. + +현재까지 확인된 운영 기준: + +| 항목 | 현재 운영 기준 | +| --- | --- | +| 웹서버 | Apache 2.2.14 | +| PHP | PHP 5.2.12 | +| DB | MySQL 5.1.41 계열 | +| 템플릿 엔진 | Smarty 2.6 | +| 운영 루트 | `D:\APM_Setup\htdocs` | +| 운영 성격 | 통합 웹루트 안에서 여러 서비스 동시 운영 | + +이번 전환은 단일 서비스 1개를 옮기는 작업이 아니라, 여러 서비스가 같은 레거시 웹루트와 공통 자산을 공유하는 구조를 리눅스로 옮기는 작업이다. + +## 현재 레거시 상황 + +| 구분 | 내용 | +| --- | --- | +| 핵심 서비스 | `intranet`, `factory_mng`, `person_mng`, `projt_mng`, `account` | +| 공통 의존성 | `Smarty`, `Smarty2.6`, `apiLibrary` | +| 공통 저장소 | `factory_file`, `intranet_file`, `person_file`, `proj_file`, `projt_file`, `erpphoto` | +| 코드 특성 | `mysql_*`, short open tag, Windows 절대경로, 구형 PHP 관행 | +| 템플릿 특성 | Smarty 2.6 기반, 다수 템플릿/백업/컴파일 산출물 혼재 | +| DB 특성 | `hanmacerp` 중심, 일부 보조 DB/보안 DB/뷰 문제 존재 | + +## 전환 목표 + +현재 기준으로는 아래 두 흐름을 모두 인지하고 작업한다. + +| 구분 | 의미 | +| --- | --- | +| 단기 목표 | 리눅스 기준으로 실제 운영 구조를 재현 가능한 상태까지 정리 | +| 중기 목표 | 필요 시 PHP 8 + Smarty 상향까지 포함한 구조 전환 검토 | + +다만 실제 실행은 `단계별 타임테이블` 기준으로 움직이며, 각 단계의 상태에 따라 다음 단계로 넘어간다. + +## 변경될 사항 + +| 구분 | 현재 | 전환 후 방향 | +| --- | --- | --- | +| OS | Windows | Linux | +| 실행 방식 | APMSETUP 수동 운영 | Docker 기반 구성 | +| 웹루트 | `D:\APM_Setup\htdocs` | 예: `/var/www/html` | +| DB 연결 | `localhost`/외부 호스트 혼재 | 환경변수 기반 연결 | +| 업로드/로그/캐시 | 웹루트 인접 상대경로/Windows 경로 | Linux 디렉터리/볼륨 매핑 | +| 템플릿 엔진 | Smarty 2.6 | 유지 또는 상향 검토 | +| 운영 구조 | 단일 Windows 통합 운영 | Linux/Docker 기준 재구성 | + +## 작업 진행 원칙 + +| 번호 | 원칙 | +| --- | --- | +| 1 | 실제 작업은 아래 `단계별 타임테이블` 기준으로 진행한다. | +| 2 | 한 단계가 시작되기 전에, 해당 단계의 입력물/완료조건을 확인한다. | +| 3 | 단계가 추가/변경되면 먼저 타임테이블을 수정하고 난 뒤 실제 작업을 진행한다. | +| 4 | 다중 서비스 전환이므로 공통 수정의 영향 범위를 항상 같이 점검한다. | +| 5 | 운영 사실은 문서/실파일/실제 캡처 기준으로만 기록한다. | + +## 단계별 타임테이블 + +| 단계 ID | 단계명 | 목표 | 주요 작업 | 산출물 | 예상 소요 | 완료 기준 | 상태 | +| --- | --- | --- | --- | --- | --- | --- | --- | +| P0 | 기준 확보 | 운영 기준 사실과 범위를 고정 | 운영 버전, 루트 경로, 주요 서비스, DB, 저장소 구조 확인 | 운영 기준 메모, 인벤토리 문서 | 완료 | 기준 문서와 핵심 근거 확보 | 완료 | +| P1 | 원본 반입 | 실제 운영본과 DB dump를 작업 저장소에 반입 | `APM_Setup.zip`, `hanmacerp.sql`, 설정 파일 반입 | 압축본, dump, 반입 기록 | 완료 | 원본 소스/DB/설정 확보 | 완료 | +| P2 | 실행 기준 정리 | 작업 규칙, 보고 문서, 체크리스트 고정 | 보고 문서, 규칙 문서, B안 체크리스트 작성 | 규칙 문서, 전략 문서 | 완료 | 상위 기준 문서 정리 | 완료 | +| P3 | 운영 재현 준비 | 리눅스 재현을 위한 Docker 골격과 DB 적재 절차 준비 | compose, Dockerfile, entrypoint, DB init 절차 정리 | Docker 초안, import 절차 | 진행 중 | 웹/DB 골격과 import 절차 준비 | 진행 중 | +| P4 | 운영본 선별 및 구조화 | 실제 사용 서비스와 공통 자산을 선별 배치 | `app/htdocs` 기준 운영본/보류본/저장소 분리 | 선별 반입 구조 | 미착수 | 실제 운영본 구조가 고정됨 | 미착수 | +| P5 | A안 리눅스 재현 검증 | 현재 운영과 최대한 비슷하게 Linux/Docker에서 기동 확인 | 경로 치환, DB 연결, 업로드/로그/캐시 검증 | 1차 재현 결과, 오류 목록 | 미착수 | 로그인/대표 화면/대표 기능 구동 | 미착수 | +| P6 | B안 영향도 심화 분석 | PHP 8, DB 상향, Smarty 상향 범위를 실제 코드 기준으로 확정 | PHP 치명 이슈 스캔, Smarty 자산 분류, DB 호환성 분석 | B안 심화 메모, 착수 체크리스트 | 진행 중 | B안 실제 범위와 리스크 확정 | 진행 중 | +| P7 | B안 설계 확정 | PHP 8 + Smarty 상향 + Linux 이관의 실제 전환 순서를 확정 | 목표 버전, 공통부 전환, 서비스 우선순위 설계 | B안 설계 문서 | 미착수 | B안 실행 설계 승인 가능 수준 | 미착수 | +| P8 | B안 코드 전환 | 공통부부터 PHP 8/Smarty 상향 적용 | DB 계층, 공통 함수, Smarty 초기화부, 진입부 수정 | 코드 변경본, 변경 로그 | 미착수 | 대표 서비스의 PHP 8/Smarty 상향 기동 | 미착수 | +| P9 | 서비스별 회귀 테스트 | 다중 서비스 동작과 저장소 기능 확인 | 로그인, 메인, 첨부, 이미지, 로그, 인코딩, 세션 확인 | 테스트 결과표, 오류 목록 | 미착수 | 핵심 서비스별 대표 기능 확인 | 미착수 | +| P10 | 안정화 및 운영 전환 판단 | 반복 오류 보정과 최종 전환 판단 | 버그 수정, 재기동 검증, 문서 갱신 | 안정화 기록, 전환 판단 메모 | 미착수 | 운영 적용 여부 판단 가능 상태 | 미착수 | + +## 현재 기준 우선 작업 경로 + +현재 문서 작성 시점(`2026-07-22`) 기준 우선 경로는 아래와 같다. + +1. `P3 운영 재현 준비` 마무리 +2. `P4 운영본 선별 및 구조화` +3. `P6 B안 영향도 심화 분석` 보강 +4. 이후 `P5`와 `P7` 중 실제 의사결정에 따라 진행 + +즉, 현재는 `A안 재현 준비`와 `B안 심화 분석`이 병행 구간에 있다. + +## 단계 변경 반영 규칙 + +작업 중 아래와 같은 상황이 발생하면 반드시 타임테이블을 먼저 수정한다. + +| 상황 | 조치 | +| --- | --- | +| 새 단계가 필요해짐 | 단계 ID, 단계명, 목표, 산출물, 소요를 추가 | +| 단계 순서가 바뀜 | 순서와 우선 경로를 수정 | +| 예상 소요가 크게 달라짐 | 소요와 상태 설명 보정 | +| 단계 목표가 달라짐 | 목표/완료 기준을 수정 | +| A안에서 B안으로 우선순위가 이동 | 우선 경로와 상태를 갱신 | + +## 상태값 정의 + +| 상태 | 의미 | +| --- | --- | +| 미착수 | 아직 시작하지 않음 | +| 진행 중 | 현재 수행 중 | +| 보류 | 외부 입력/승인/결정 대기 | +| 완료 | 완료 기준 충족 | + +## 문서 운영 규칙 + +| 항목 | 규칙 | +| --- | --- | +| 기준 문서 | 본 문서를 상위 실행 기준으로 본다 | +| 상세 규칙 문서 | 작업 규칙 문서와 체크리스트는 본 문서의 하위 실무 문서로 본다 | +| 단계 착수 전 | 이 문서의 해당 단계 목적/완료 기준을 먼저 확인 | +| 단계 변경 시 | 먼저 본 문서를 수정 후 실제 작업 진행 | + +## 현재 시점 요약 + +현재까지는 운영 기준, DB dump, 원본 압축, Docker 초안, B안 심화 검토 문서가 준비되어 있다. +다음 실제 작업은 `P3`, `P4`, `P6`의 정밀화에 집중하게 된다. + +## 한줄 결론 + +앞으로의 작업은 본 문서의 타임테이블을 기준으로 진행하며, 중간에 단계가 추가되거나 수정되면 반드시 먼저 이 문서를 갱신한 뒤 다음 작업을 수행한다. \ No newline at end of file