기록 목록공지사항

G7 운영 환경에 따라 Fresh 설치 결과도 달라질 수 있다는 점을 다시 확인했습니다.

humanpchumanpc ·
07-0149
운영 중 관리자의 환경설정 → 보안 화면을 확인하던 중 예상하지 못한 HTTP 500 오류를 발견했습니다. 문제가 발생한 API는 /api/admin/settings/system-info였으며, 다른 관리자 설정 API들은 모두 정상적으로 응답하는 반면 시스템 정보를 조회하는 API만 HTTP 500을 반환했습니다. 브라우저에서는 단순히 "오류가 발생했습니다."라는 메시지만 표시되어 처음에는 프로젝트 자체의 문제인지 운영 환경의 문제인지 판단하기 어려웠습니다. 원인을 확인하기 위해 호출 경로를 따라가며 SettingsController, SettingsService, buildSystemInfo()까지 순차적으로 확인했고, 시스템 정보 수집 과정에서 CPU, 메모리, 디스크, 데이터베이스 등의 정보를 조회하는 부분을 하나씩 검토했습니다. 초기에는 Fresh 설치 직후 발생한 문제였기 때문에 프로젝트 자체의 문제인지 운영 환경의 차이인지 판단하기 어려웠습니다. 하지만 이후 운영 환경을 함께 확인하는 과정에서 원인은 코드가 아니라 PHP의 open_basedir 설정이라는 것을 확인했습니다. 현재 Synology NAS에서는 open_basedir에 /proc/meminfo는 포함되어 있었지만 /proc/cpuinfo는 포함되어 있지 않았습니다. 이 때문에 CPU 정보를 읽는 과정에서 실패했고, 결과적으로 system-info API 전체가 HTTP 500을 반환하고 있었습니다. open_basedir에 /proc/cpuinfo를 추가한 뒤에는 관리자 보안 화면이 정상적으로 동작하는 것을 확인했습니다. 이번 사례를 통해 다시 느낀 점은 Fresh 설치가 반드시 동일한 실행 환경을 의미하지는 않는다는 것입니다. 같은 소스코드라도 PHP 설정, 운영체제 정책, 파일 접근 제한, NAS 환경 등에 따라 서로 다른 결과가 나타날 수 있습니다. 또한 문제를 발견했을 때 바로 프로젝트의 버그라고 단정하기보다, 재현 절차를 정리하고 호출 흐름과 구현을 확인한 뒤 운영 환경까지 함께 검증하는 과정이 중요하다는 점도 다시 확인했습니다. 이번 사례는 최종적으로 제 운영 환경의 open_basedir 설정을 수정하여 해결되었습니다. 이번 경험을 통해 운영 환경에 따라 Fresh 설치 결과가 달라질 수 있으며, 프로젝트 문제와 환경 문제를 구분하기 위해서는 재현 절차와 원인 분석을 함께 진행하는 과정이 중요하다는 점을 다시 확인할 수 있었습니다. 운영 과정에서 얻은 하나의 검증 사례로 남겨 두고, 앞으로 비슷한 증상이 발생했을 때 참고 자료로 활용할 예정입니다.

댓글과 작업 영역을 나중에 불러옵니다

필요할 때 댓글과 작업 영역을 불러옵니다. 댓글 0개