JJoriping / KKuTu

글자로 놀자! 끄투 온라인
http://jjo.kr/kkutu
GNU General Public License v3.0
328 stars 267 forks source link

웹서버 오류 질문 합니다. #1022

Closed Gt5588 closed 2 years ago

Gt5588 commented 2 years ago

웹 서버를 열면 오류가 뜹니다... events.js:291 throw er; // Unhandled 'error' event ^

Error: bind EACCES null:80 at listenOnMasterHandle (net.js:1383:18) at rr (internal/cluster/child.js:132:12) at Worker. (internal/cluster/child.js:99:7) at process.onInternalMessage (internal/cluster/utils.js:47:8) at process.emit (events.js:326:22) at emit (internal/child_process.js:877:12) at processTicksAndRejections (internal/process/task_queues.js:85:21) Emitted 'error' event on Server instance at: at listenOnMasterHandle (net.js:1384:21) at rr (internal/cluster/child.js:132:12) [... lines matching original stack trace ...] at processTicksAndRejections (internal/process/task_queues.js:85:21) { errno: 'EACCES', code: 'EACCES', syscall: 'bind', address: null, port: 80 } Worker 1371 died

관리자 권한으로 웹 서버를 열면

/home/ubuntu/KKuTu/Server/lib/node_modules/ws/lib/WebSocket.js:344 else throw new Error('not opened'); ^

Error: not opened at WebSocket.send (/home/ubuntu/KKuTu/Server/lib/node_modules/ws/lib/WebSocket.js:344:18) at /home/ubuntu/KKuTu/Server/lib/Web/main.js:129:26 at Array.forEach () at Timeout._onTimeout (/home/ubuntu/KKuTu/Server/lib/Web/main.js:128:15) at listOnTimeout (internal/timers.js:554:17) at processTimers (internal/timers.js:497:7) Worker 1874 died

이러고 뜨고

검색을해서 하라는 방법대로 했는데 안되더라구요.. ㅜㅜ 해결 방법이 있을까요?? 뭐가 문제인가요??

lshqqytiger commented 2 years ago

게임 서버가 닫혀있는 것 같습니다.

Gt5588 commented 2 years ago

게임 서버가 닫혀있는 것 같습니다.

게임 서버를 키면 [2022-05-26 11:05:46] << KKuTu Server:8496 >> [2022-05-26 11:05:46] DB is ready. [2022-05-26 11:05:46] Master DB is ready. 이런식으로 뜨는데? 정상적으로 켜진거 아닌가요?

IAMIHAH commented 2 years ago
  1. sudo를 사용하여 root 권한으로 실행하거나
  2. root로 로그인하여 실행해주세요.
lshqqytiger commented 2 years ago

첫번째 오류에서는 권한 문제가 맞는 것 같아보이나 두번째 오류(sudo로 실행한 것으로 보임)는 권한 문제 같지는 않습니다. 호출 스택을 추적해보면 게임 서버 웹소켓에 데이터를 전송할 때 게임 서버 웹소켓이 열려있지 않아 발생한 오류로 확인됩니다. main.js 129번째 줄을 다음과 같이 수정해보세요.

if (v.socket && v.connected) v.socket.send(`{"type":"seek"}`);
Gt5588 commented 2 years ago
if (v.socket && v.connected) v.socket.send(`{"type":"seek"}`);

감사합니다 문제 없이 서버가 켰습니다 또 다른 문제 해결해야 되지만 위 문제는 해결이 되었습니다! 게임 시작 버튼을 눌러도 아무 반응이 없는거 빼고는 정상적으로 켜졌습니다!

Gt5588 commented 2 years ago

첫번째 오류에서는 권한 문제가 맞는 것 같아보이나 두번째 오류(sudo로 실행한 것으로 보임)는 권한 문제 같지는 않습니다. 호출 스택을 추적해보면 게임 서버 웹소켓에 데이터를 전송할 때 게임 서버 웹소켓이 열려있지 않아 발생한 오류로 확인됩니다. main.js 129번째 줄을 다음과 같이 수정해보세요.

if (v.socket && v.connected) v.socket.send(`{"type":"seek"}`);

질문 하나만 더 해도 될까요? 웹 서버가 문제 없이 열렸지만.. 게임 시작 버튼이 눌러도 아무 반응이 없습니다.. 주소 창에 http://ip/?server=0 으로 접속했을때 아무 문제 없이 접속이 되는데 게임 시작 버튼만 작동이 되질 않습니다! 어딜 건드려야 되는지 알 수 있를까요?? 이슈를 찾아봐도 저랑 같은 이슈는 안 보이더라구요ㅠㅠ

lshqqytiger commented 2 years ago

여전히 웹서버와 게임서버는 연결되지 않은 상태입니다. (게임서버).socket은 존재하지만 (게임서버).connectedfalse이기 때문에 (게임서버).seekundefined가 되어 in_portal.js에서는 게임 서버가 닫힌 것으로 판단합니다. 화면 캡처 2022-05-27 011418 화면 캡처 2022-05-27 011508 해결책으로는 웹서버가 게임서버와 연결에 실패하는 원인을 알아내는 것과 그냥 게임 시작 버튼 클릭 시 /?server=0로 이동시키도록 수정하는 방법도 있습니다만 후자의 경우 근본적인 해결책은 아닙니다. (게임서버 상태와 접속자 수 조회 불가, 서버 증설 시 문제 발생)

Gt5588 commented 2 years ago

친절히 알려주셨어 감사합니다. 무슨 문제였는지 모르겠지만! 알려주신 .js와 사진에 나와있는 위치를 찾아서 보고 또 보고 재부팅도 몇번 해보고 진짜 뭐가 문제일까 하고 파일도 수정해보고 다시 복원해보고 하면서 하니까 해결이 되었습니다 원인 모를 오류가 갑자기 해결이 되었네요! 정말로 감사합니다!!! 감사합니다!!