diff --git a/장헌 레거시 리눅스전환 검토/장헌 B안 실제 착수 체크리스트.md b/장헌 레거시 리눅스전환 검토/장헌 B안 실제 착수 체크리스트.md new file mode 100644 index 0000000..cdfa0fc --- /dev/null +++ b/장헌 레거시 리눅스전환 검토/장헌 B안 실제 착수 체크리스트.md @@ -0,0 +1,198 @@ +# 장헌 B안 실제 착수 체크리스트 + +## 목적 + +이 문서는 장헌 레거시 서비스의 `B안 = PHP 8 전환 + 리눅스 이관 + Smarty 업그레이드 검토`를 실제 작업 단계로 풀어낸 착수 체크리스트다. + +이번 문서의 목적은 아래 두 가지다. + +- 조사/검토 메모를 실제 실행 순서로 전환 +- 큰 범위의 레거시 전환 작업에서 선행조건, 우선순위, 검증 단계를 고정 + +## B안의 전제 + +| 항목 | 현재 기준 | +| --- | --- | +| 현재 운영 PHP | 5.2.12 | +| 현재 운영 DB | MySQL 5.1.41 계열 | +| 현재 템플릿 엔진 | Smarty 2.6 | +| B안 목표 | PHP 8 계열 + Linux + Docker 기준으로 재구성 | +| Smarty 방향 | `Smarty 2.6 유지`가 아니라 `상위 버전 업그레이드`를 함께 검토 | + +## 핵심 판단 + +| 항목 | 판단 | +| --- | --- | +| PHP 8 전환만 단독 진행 | 불충분 | +| Smarty 업그레이드 필요성 | 높음 | +| 권장 Smarty 목표 버전 | 1차는 `Smarty 4.x` | +| DB도 함께 영향 받는가 | 예 | +| 리눅스 이관과 원인 분리 가능성 | 낮음, 단계 분리가 필요 | + +## 착수 전 확보물 + +아래 항목이 확보되어야 B안의 실제 작업이 가능하다. + +| 구분 | 확보 상태 | 비고 | +| --- | --- | --- | +| 운영 DB dump | 확보 | `hanmacerp` 확보됨 | +| 운영 원본 압축 | 확보 | `app/APM_Setup.zip` 반입됨 | +| 주요 설정 파일 | 확보 | `SmartyConfig.php`, `php222.ini`, `httpd.conf` 등 | +| DB 연결 파일 | 일부 확보 | `dbcon*.inc` 추가 확인 필요 | +| 실제 운영 템플릿 | 확보 | 압축본 내부에 대량 존재 | + +## 0단계: 범위 고정 + +### 해야 할 일 + +| 항목 | 내용 | +| --- | --- | +| 운영본 선별 | `old`, `new`, `test`, 날짜 백업 폴더를 운영본과 분리 | +| 서비스 범위 고정 | `intranet`, `factory_mng`, `person_mng`, `projt_mng`, `account` 우선 | +| 공통 의존성 고정 | `Smarty`, `Smarty2.6`, `apiLibrary` | +| 저장소 고정 | `*_file`, `erpphoto`, `log`, `temp` | + +### 완료 기준 + +- B안 분석 및 수정 대상이 되는 실제 운영본 경로가 확정됨 + +## 1단계: PHP 8 치명 이슈 전수 스캔 + +### 우선 스캔 대상 + +| 구분 | 대표 이슈 | +| --- | --- | +| DB API | `mysql_*` | +| 문자열/정규식 | `split`, `ereg` | +| 구형 설정 의존 | `short_open_tag`, `magic_quotes_gpc`, `register_globals` | +| 구형 문법 | PHP 8에서 경고/오류가 되는 호출 방식 | +| 파일 경로 | Windows 절대경로, 상대경로 의존 | + +### 완료 기준 + +- 치명 오류 우선순위 목록 작성 +- “무조건 먼저 고쳐야 하는 항목”과 “후순위 항목” 분리 + +## 2단계: DB 계층 전환 설계 + +### 해야 할 일 + +| 항목 | 내용 | +| --- | --- | +| 기본 DB 연결 구조 파악 | `DB_*`, `SECURITY_DB_*`, `SPATIAL_DB_*`, `HM_DB_*` 분리 | +| `mysql_*` 제거 계획 | `mysqli` 또는 `PDO` 기준 결정 | +| 뷰/루틴/권한 문제 파악 | 덤프 및 실제 운영 뷰 오류 이슈 정리 | +| MySQL 상향 영향도 파악 | 예약어, strict mode, 문자셋, 구문 차이 확인 | + +### 완료 기준 + +- DB 연결 계층 전환 원칙 확정 +- 공통 DB 래퍼/헬퍼 작성 방향 결정 + +## 3단계: Smarty 업그레이드 설계 + +### 권장 원칙 + +| 항목 | 권장안 | +| --- | --- | +| 목표 버전 | `Smarty 4.x` | +| 이유 | PHP 8 대응 현실성이 높고, v5보다 변화량이 상대적으로 작음 | +| 기존 `templates_c` | 폐기 후 재생성 | +| 기존 `cache` | 폐기 후 재생성 | +| 백업/파생 템플릿 | 운영본과 분리 후 제외 | + +### 조사할 항목 + +| 항목 | 이유 | +| --- | --- | +| 실제 사용 템플릿 범위 | 수천 개 템플릿 전체를 다 건드리지 않기 위해 | +| 커스텀 플러그인 사용 여부 | Smarty 상향 시 장애 지점이 되기 쉬움 | +| `assign`, `display`, `fetch` 흐름 | PHP 쪽 엔진 연동부 재구성 필요 | +| 금지/제거 태그 사용 여부 | `{php}`, `{include_php}`, `{insert}` 등 | + +### 완료 기준 + +- Smarty 2.6 → 4.x 전환 위험 목록 작성 +- 실제 변환 대상 템플릿 범위 축소 + +## 4단계: Linux/Docker 기준 구조 재설계 + +### 해야 할 일 + +| 항목 | 내용 | +| --- | --- | +| 웹루트 재구성 | `/var/www/html` 기준 배치 | +| 업로드/로그/캐시 분리 | 볼륨 구조 설계 | +| PHP 8 컨테이너 구조 | Apache 유지 또는 별도 구조 검토 | +| DB 컨테이너 구조 | 운영 dump 기반 기동 | +| 환경변수화 | 경로/호스트/계정/저장소 경로 치환 | + +### 완료 기준 + +- Linux + Docker 기준의 B안 최종 구조도 작성 + +## 5단계: 코드 전환 착수 + +### 우선순위 + +| 우선순위 | 작업 영역 | +| --- | --- | +| 1 | 공통 DB 연결 계층 | +| 2 | 로그인 진입부 | +| 3 | 공통 함수/공통 include | +| 4 | Smarty 초기화부 | +| 5 | 서비스별 대표 기능 | + +### 원칙 + +- 한 번에 전 서비스 전체를 다 바꾸지 않는다. +- 공통부 → 진입부 → 서비스별 핵심 기능 순으로 간다. +- 한 서비스에서 성공한 패턴을 다른 서비스로 확장한다. + +## 6단계: 서비스별 회귀 테스트 + +### 최소 확인 항목 + +| 서비스 | 최소 확인 항목 | +| --- | --- | +| intranet | 로그인, 메인, 결재/조직/기본 게시물 진입 | +| factory_mng | 로그인, 메인, 업로드/현황 화면 | +| person_mng | 로그인, 메인, 인사/연차 관련 대표 화면 | +| projt_mng | 로그인, 대표 조회/출력 화면 | +| account | 로그인, 메인, 월별 로그/조회 화면 | + +### 공통 확인 항목 + +| 항목 | 내용 | +| --- | --- | +| 템플릿 렌더링 | 화면 깨짐, 변수 미할당, 경고 출력 여부 | +| 저장소 | 첨부/사진/다운로드/로그 기록 여부 | +| 한글/인코딩 | 데이터 깨짐 여부 | +| 세션/쿠키 | 로그인 유지 여부 | +| 공통 수정 영향 | 한 서비스 수정이 다른 서비스에 영향 주는지 | + +## 7단계: 안정화 + +### 해야 할 일 + +| 항목 | 내용 | +| --- | --- | +| 오류 반복 수정 | 서비스별 반복 장애 처리 | +| 공통 코드 정리 | 임시 패치 제거, 재사용 패턴 정리 | +| 문서화 | 실제 변경점, 우회사항, 미해결 이슈 기록 | +| 재배포 검증 | 컨테이너 재기동 후 동일 동작 확인 | + +## B안 착수 우선순위 한줄 요약 + +1. 운영본 범위 고정 +2. PHP 8 치명 이슈 스캔 +3. DB 계층 전환 설계 +4. Smarty 4.x 업그레이드 설계 +5. Docker/Linux 구조 재설계 +6. 공통부부터 순차 수정 +7. 서비스별 회귀 테스트와 안정화 + +## 현재 기준 권장 메모 + +`B안`은 가능하지만, 실제로는 `PHP 8 전환 프로젝트 + Smarty 업그레이드 프로젝트 + Linux 이관 프로젝트`가 합쳐진 성격이다. +따라서 착수 전 체크리스트와 작업 규칙을 먼저 고정하는 것이 필수다. \ No newline at end of file