본문 바로가기

SBC관련

ubuntu webdav nginx 500 error (해결할 수 없는 에러)

집앞 분리수거장에서 주운 컴퓨터

 

요 며칠 조카가 버렸던 컴퓨터, 집앞 분리수거장에서 주웠던 컴퓨터, 아버지가 안쓰시던 컴퓨터 3대를 짜집기해서 와이프와 내 아이폰 사진 자동 백업용 ubuntu 서버를 조립하고 가게에 설치(가게인터넷 속도 500m 집인터넷 속도 100m라 가게에 설치)하느라 정신이 없었다. 시스템을 간단히 설명하자면 아이폰 사진, 영상들을 PhotoSync라는 유료앱(7,000원)을 이용해서 매일 새벽2시마다 webdav를 통해 ubuntu의 nginx 서버로 전송, 저장하는 시스템이다. 하드용량이 1TB라 우리가족 사진, 영상만 저장하는데에 큰 모자람은 없었다. PhotoSync 앱이 좋은게 새로 추가된 사진,영상만을 새벽에 자동 업로드해 줄 수 있어서 설정만 한번 잘해놓으면 더 이상 신경 쓸게 없다.

암튼 이런 시스템에서 빠질 수 없는게 2중, 3중 백업이다. 왜냐하면 우리 가족 사진은 소중하니깐... 일단 가게 ubuntu 서버에 집에 남는 1TB 하드를 하나 더 달았다. 새벽 2시에 아이폰 PhotoSync에서 사진, 영상이 자동 업로드되고 새벽 3시에 1TB하드에서 새로 추가된 1TB하드로 추가된 사진만큼 복사하도록 rsync 명령어를 crontab에 추가했다.

그리고 가게 컴퓨터가 해킹이나 랜섬웨어에 노출되는것을 대비해 짜집기한 컴퓨터 중 1대에도 ubuntu를 설치하고 생각날때마다 컴퓨터를 켜서 가게 서버의 사진을 백업하는 rsync 명령어 스크립트를 하나짰다. 다행히 1TB 하드하나가 더 남아 있었다. 한번 스크립트 실행하고 전원 Off.

이틀전에 우연히 200기가 무료 리눅스서버를 얻는 방법을 클리앙 나스당에서 보았다. Oracle Cloud 무료티어인데 이놈은 200기가용량 제한때문에 중요한 사진들만 매일 백업하도록 셋팅을 해놓아 3중 백업을 마무리지었다. 요 시스템을 구성하는데 들어간 돈은 7,000원이지만 결과는 너무 만족스러웠다.

 

그런데 갑자기 오늘 업로드가 안된다. nginx 500 error. 구글검색해보니 저 500 error는 어떤 특정한 문제가 아닌 서버쪽 포괄적인 문제라 해결하는게 쉬워보이지 않았다. 어제까지만 해도 아니 오늘 아침까지만 해도 PhotoSync에서 전송이 잘되었다는 알림을 봤는데... 왜 갑자기 안되는걸까? 기억을 되돌려보니 어제 가게 인터넷이 끊겨서 A/S 불러 해결하면서 가게 ubuntu 서버를 재부팅한적이 있었다. 그것때문에 무슨 문제가 발생했나? 어제 재부팅이후 오늘 아침까지도 사진 자동 업로드는 잘되었고 이후 아무런 작업을 하지 않았는데 오후부터 사진 업로드가 안된다.  그런데 신기한건 다운로드는 된다. 업로드만 안되는 것이다. 업로드, 쓰기가 안된다는 것은 거의 권한 문제인데.... 구글로 "nginx webdav 500 쓰기권한"으로 검색해봤지만 문제해결에 도움이 되는 내용은 찾지 못했다.

 

하는 수없이 nginx 권한셋팅을 다시 살펴보고 각 저장폴더의 소유권을 변경도 해보고 쓰기 권한도 줘보고 해봤지만 증상은 여전히 같았다. 이것 저것 해보면서 이상한걸 발견했는데 몇몇 디렉토리 소유권이 root였다. 사진폴더 소유권은 다른걸로 설정했는데 왜 root지? 새벽에 rsync 작업을 하면서 소유권이 변경되었나? 검색을 해봐도 관련 정도가 없었다. 재미있는것은 sftp로 접속해서 파일을 업로드해보면 업로드가 된다. 흠... 이말은 nginx가 이상하다는건데... 솔직히 nginx관련해서 검색내용을 읽어보면 도통 무슨소린지 모르겠고 알고 싶은 욕구도 없었다. 하지만 분명한건 소유권 관련된 문제인것이 확실하다고 느꼈기에 계속해서 디렉토리들을 조사했다. 그러면서 디렉토리 크기를 검색하다가 / 디렉토리의 사용률이 100%임을 발견했다. 엥? 프로그램은 거의 설치도 안했고 사진은 따로 분리된 하드에만 저장하는데 왜 / 디렉토리 사용률이 100%지? 내 ubuntu 시스템들은 125GB ssd에 운영체제를 설치하고 1tb 하드는 /mnt/data 라는 디렉토리에 마운트한 뒤 거기에 아이폰 사진과 영상을 저장하는 식이라 / 디렉토리가 꽉찰 이유가 없는데 왜 다 찼지?

 

그 이유는 내가 가게 ubuntu에 처음 1TB 하드를 설치한 뒤 /etc/fstab에서 자동 마운트되도록 설정을 해놓고 백업을 위해 다른 1TB 하드를 추가 했을때 그냥 명령어로만 마운트 해놓고 /etc/fstab에서는 추가된 하드를 자동 마운트 되도록 설정을 해놓지 않았던 것이다. 그래서 어제 a/s 받으면서 가게 ubuntu를 재부팅했을때 두개의 1TB 하드 중 /etc/fstab에 설정된 하드만 마운트 되었고 두번째 1TB 하드는 마운트가 안되었던 것이다. 사진은 새벽 2시에 업로드되기로 되어 있어 마운트된 하드에 정상적으로 업로드되었던 것이고 아침 9시에 1TB 하드에서 다른 1TB 하드로 복사하는 crontab 작업이 이루어 졌는데 당연히 두번째 1TB 하드가 마운트가 되어 있지 못해서 125GB ssd의 /mnt/data에 자료가 복사되었고 용량이 꽉차게 된것이였다. nginx 설정을 보면 홈디렉토리가 /mnt/data로 alias 되어 있는데(내 생각은 한번 /로 갔다가 /mnt/data로 옮기는것같다.) / 디렉토리가 꽉차있어서 업로드가 안되는 상황이였던 것이다.

바로 /mnt/data 밑의 내용을 모두 지우고 두번째 1TB 하드를 /mnt/data에 자동 마운트되도록 /etc/fstab을 수정한 뒤 재부팅하니 다시 정상적으로 업로드가 잘된다.

 

내 필요에 의해 구글 검색으로 하나하나 따라해 만든 시스템이라 이런 실수가 나왔지만 스스로 문제를 해결해서 정말 기분이 좋다. 해결하는 중간 중간 도저히 갈피를 못잡아 평소(?)처럼 ubuntu를 다시 설치할까라는 생각이 여러번 있었지만 그 귀찮은 설정을 다시 해야하는게 너무 싫어서 끝까지 붙잡은게 이런 해결책을 찾는 기쁨을 준것 같다.

 

그런데 과연 나와 같은 이유로 nginx 500 error를 접한 사람들이 과연 몇이나 있을까? a/s 받는 시간에 ubuntu 재부팅 하여 2번째 1TB 하드 마운드 풀림. 다음날 새벽 2시에 PhotoSync로 첫번째 1TB하드에 사진 업로드되고 아침 8시에 업로드되었다는 알림확인. 1시간 후 아침 9시에 crontab으로 첫번째 1TB에서 두번째 1TB로 자동 복사해야하는데 두번째 하드 마운트가 풀려서 /mnt/data에 복사되고 / 디렉토리 스토리지 꽉참. 이후 PhotoSync 업로드 안됨. 이런 상황에서 발생한 저 에러를 어떻게 잡냐고... ㅎㅎㅎ