Port already in use, what to do?

This (port conflict) was handled in the script a while ago. Needing to proxy is a whole other deal there are howto topics on that.

This is the guide that the script links to but I don’t want to tear down my production website just to install discourse.

This guide assumes you already have Discourse working - if you don't, it may be hard to tell whether or not the configuration is working.

이 주제가 도움이 되어서, 3년 전 글이긴 하지만 몇 가지 추가할게요. 오늘 포트 사용 중 오류를 겪었는데, 무슨 일이 있었는지 좀 당황스럽네요. 혹시 다른 분들도 같은 문제를 겪을 수 있으니까 순서대로 정리해서 올려봅니다.

배경: Ubuntu 16.04.3 LTS를 사용 중입니다(18.04로 업그레이드할까 봐 너무 두렵네요). 그리고 Discourse 2.3.x를 쓰고 있는데, 정확히 어떤 버전인지는 잘 모르겠어요(이유는 나중에 :)).

app.yml에 변경 사항(관련 없는 내용)을 넣고 앱을 다시 빌드했습니다.

그리고 Ubuntu가 재부팅을 원한다는 알림이 떴는데(이유는 확인 안 함), Ubuntu도 재부팅했습니다.

그 결과 포트 오류 문제가 발생했죠.

Apache2가 갑자기 실행 중이라는 걸 알아차렸고, 이를 비활성화했습니다:
root@Discourse:~# sudo update-rc.d apache2 disable
insserv: warning: current start runlevel(s) (empty) of script apache2' overrides LSB defaults (2 3 4 5). insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script apache2’ overrides LSB defaults (0 1 6).

결국 포트가 비어 있었기 때문에 포럼을 다시 띄울 수 있었습니다.

하지만 이게 왜 일어났는지는 도저히 모르겠네요. Apache2는 어디서 온 건가요?

재부팅 직후 바로 포럼을 테스트해 봤어야 했는데, 실수였네요. 이제 이게 Discourse 업그레이드 때문인지 Ubuntu 재부팅 때문인지 알 수 없어요(로그에서 찾을 수 있겠지만, 요즘은 Linux에 익숙하지 않아서요). Discourse 2.5가 요즘 Apache2를 설치하는지 포럼에서 찾아보기도 했습니다.

다행인 점은, Discourse 업그레이드가 원래 오래전부터 필요했던 거라는 겁니다. 지난 5년간 거의 두 번에 한 번씩 이런 문제를 겪어서 요즘은 업그레이드를 정말 꺼리게 됩니다. 그래도 Discourse는 여전히 좋아합니다…

설명에 따르면, 다른 업그레이드가 문제를 일으킬지 확인하는 가장 좋은 방법은 3일 연속으로 업그레이드하는 것입니다. 실제로 그렇게 해야 할 만큼 충분히 쉬워야 합니다!

일반적으로, 마지막 Discourse 업그레이드 이후 1년 이상이 지났다면 ./launcher rebuild app이 필요할 것입니다. 물론 /admin/upgrade를 더 자주 방문하는 것을 권장합니다 :slight_smile:

app.yml 파일의 이름이 다른 경우 다음을 실행해야 합니다.

  ./launcher stop irrelevant 

또는 파일 이름을 변경하고 해당 파일을 다시 빌드하세요.

Discourse는 설치 전제 조건인 docker를 제외하고는 컨테이너 외부에 아무것도 설치하지 않습니다.

아마도 마지막 재부팅 이후에 Apache2가 설치되어, 기기를 재부팅하기 전까지는 포트를 가져오지 못했을 가능성이 큽니다. 수동으로 어떤 패키지가 설치되었는지 확인하려면 bash 히스토리를 grep 해보세요.

모두 아이디어 감사합니다.

rebuild app을 사용했습니다. 그리고 Discourse가 추가적인 것을 설치하지 않는다면 (새로운 기능 때문에 nginx와 Apache2가 기본적으로 설치되는 건가 싶어서)… 음. Apache2는 제가 직접 설치한 적이 분명 없습니다.

아. 수년 동안 이 DigitalOcean Ubuntu를 Discourse 전용으로 사용해 오다가, 1월에 Subversion을 설치했더군요. 그때 재부팅을 하지 않은 것 같습니다. 그 설치 과정에서 Apache가 추가되었는데, 비활성화해도 제가 필요한 기능은 그대로 유지됩니다.

설치 과정에서 불필요한 프로그램이 추가되는 것에 익숙하지 않나 봅니다. (Apache가 뭔가에 꼭 필요한 건 확실합니다.) 이런 일은 보통 Windows나 Android에서 더 자주 일어나는 것 같습니다 :D.

불편을 끼쳐 죄송합니다. 그래도 이건 실제 사용 사례이니까, 개발자로서 이런 글을 읽는 건 항상 좋은 것 같습니다.