Project/실시간 채팅 서비스 개발

Socket.io를 이용한 실시간 채팅 구현 - 3. 서버에 올리자

둉이 2021. 5. 3. 16:33
 

Socket.io를 이용한 실시간 채팅 구현 - 1. 환경설정

회사 업무를 하면서 실시간 채팅 기능을 구현할 기회가 생겼다. 이사님이 솔루션 사서 개발하라고 하셨지만 예전부터 소켓 통신 관련하여 공부도 해보고 싶었던 참이고, 회삿돈이 아깝기도 해

guiyomi.tistory.com

 

 

Socket.io를 이용한 실시간 채팅 구현 - 2. 기능 구현

2021.04.28 - [Project/실시간 채팅 서비스 개발] - Socket.io를 이용한 실시간 채팅 구현 - 1. 환경설정 Socket.io를 이용한 실시간 채팅 구현 - 1. 환경설정 회사 업무를 하면서 실시간 채팅 기능을 구현할 기

guiyomi.tistory.com

 

이제 대망의 마지막 단계이다.

 

순서

1. 서버 접속 후, 적당한 위치에 node.js 폴더를 복사한다.

 

2. node.js와 forever 라이브러리를 설치한다. forever는 백그라운드에서 node 서버를 실행하기 위해 필요하다.

(이상하게 nohup으로 node가 실행이 안된다! 이유는 잘 모르겠다.)

yum install epel-release
yum -y install nodejs
node -v // 버전 확인

npm install forever -g
forever start 파일명 // Node.js 서버 실행
forever stop 파일명 // Node.js 서버 중지

 

문제 해결

1. https -> http로의 통신이 안되는 문제 발생

대충 구글링 해보니 내가 만든 소켓 서버도 HTTPS 통신이 가능해야 할 것 같아서 SSL 인증서를 만들어서 넣어주기로 했다.

 

2. letsencrypt를 이용하여 SSL 인증서 생성 후 HTTPS 접근 시도

: 무료로 SSL 인증서를 발급해 주는 서비스이다. 3개월에 한 번씩 갱신을 해주어야 한다. 까먹을 수도 있으니 자동 갱신을 만들어서 설정하자.

const opt = {
    ca: fs.readFileSync('/etc/letsencrypt/live/' + domain+ '/fullchain.pem'),
    key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain+ '/privkey.pem'), 'utf8').toString(),
    cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain+ '/cert.pem'), 'utf8').toString()
}
const server = https.Server(opt, app)

server.listen(443)

 

3. crontab을 이용한 인증서 자동 갱신

crontab을 이용하여 잡 스케줄링을 진행할 수 있다. 인증서가 자동갱신 될 수 있게 설정해두자.

crontab -e

 

 

4. SSL 인증서 적용 확인

위 이미지처럼 아주 잘 적용된 모습을 볼 수 있다.

오류도 다 해결됐다!

 

 

이제 다른 메뉴 구현을 빨리 끝내고 다시 검색엔진쪽 공부를 해야겠다!

전체 코드는 아래에서 볼 수 있다.

 

 

GitHub - sap03110/socket-io-chatting: socket.io chatting server using node.js

socket.io chatting server using node.js. Contribute to sap03110/socket-io-chatting development by creating an account on GitHub.

github.com