728x90

수성비전자방입니다. 저는 라즈베리파이3 B+를 보유 중입니다. 어쩌다 보니 서버 공부용으로 사용할 때가 있었는데요, 이때 문제가 있었습니다. 라즈베리파이를 거실 공유기에 유선으로 연결해야 하는데 모니터는 제 방에 있는 것이죠. 그래서 저는 제 노트북으로 라즈베리파이를 원격제어 하기로 했습니다. 방법은 여러 가지가 있겠지만 저는 라즈베리파이 OS(관련 글)에 기본 탑재되어 있는 Real VNC를 이용하겠습니다.

 

1. 우선 처음에는 정석적으로 마우스, 키보드, HDMI 모니터, USB-Micro B 전원선을 연결해 주었습니다. 만약 처음부터 모니터 없이 세팅하시는 경우 다른 블로거 분이 작성하신 글을 찾아 보시기 바랍니다.

 

2. 그러면 부팅이 되었을 것입니다. 왼쪽 위의 라즈베리파이 메뉴 아이콘을 클릭하시고, 기본 설정에 있는 Raspberry Pi Configuration을 클릭합니다.

 

3. Interfaces 탭에서 VNC를 Enable로 설정합니다.

 

4. 작업표시줄에 있는 VNC 아이콘을 클릭합니다. 그러면 VNC 창이 열립니다.

VNC 창 왼쪽 절반 Connectivity를 보시면 라즈베리파이의 IP 주소가 나옵니다. 이 IP 주소를 참고하셔도 되고, 아니면 터미널 창에 ifconfig를 입력하여 확인하셔도 됩니다. 인터넷을 연결하지 않고 VNC를 설정하시는 경우 고정 IP를 설정하시면 됩니다(8번 과정 참고).

 

5. VNC 창 오른쪽 위의 메뉴(三)를 클릭합니다.

6. Options로 들어갑니다.

 

7. Connections에서 포트를 설정하실 수 있습니다. VNC 포트 기본값은 5900입니다. 그냥 두셔도 좋고, 변경하셔도 좋습니다.(변경이 되는지는 확인 안 해봤는데...)

저는 그냥 5900으로 두고 진행하겠습니다.

 

8. (선택사항)라즈베리파이 IP를 고정 IP로 설정하시면 편리합니다. VNC를 먼저 설정한 뒤 인터넷을 연결하시는 경우 IP를 고정할 것을 권장합니다. 아래 글을 참고하시기 바랍니다.

라즈베리파이 OS 고정IP 설정하기(https://toopyo.tistory.com/entry/raspberrypi-os-ip)

 

9. 이제 라즈베리파이를 인터넷이 가능한 환경에 설치하시고, 인터넷도 연결해 주시기 바랍니다.

(저의 경우는 공유기가 있는 거실에 설치했습니다.)

8번 과정에서 라즈베리파이 IP를 고정 IP로 설정하신 경우 이번에는 마우스, 키보드, 모니터를 연결하지 않으셔도 됩니다.

 

10. 공유기를 사용하는 경우 각 장치에 사설 IP가 부여됩니다. 같은 네트워크 안에서는 사설 IP를 입력하여 서버에 접속할 수 있지만, 외부 네트워크에서 서버에 접속하려면 공인 IP를 입력해야 하므로 공유기에서 포트포워딩을 해 주어야 외부 접속이 가능합니다. 포트포워딩 하실 때에는 본문의 7번 과정에서 포트 번호를 바꾸신 경우 그 번호를 내부 포트로 설정하시고, 바꾸지 않으신 경우 5900을 내부 포트로 설정하시기 바랍니다.

 

KT 공유기(Giga Wifi Home) 포트포워딩

 

위에 본인의 공유기가 없을 경우 인터넷에 공유기 이름을 검색해 보면 포트포워딩 하는 방법이 나오므로 검색해 보시기 바랍니다.

 

 

이제 Windows PC에 Real VNC 프로그램을 설치하고 연결하겠습니다.

11. https://www.realvnc.com/ 로 접속합니다.

12. Products를 클릭합니다.

13. VNC® Connect를 클릭합니다.

 

14. Download를 클릭합니다.

15. VNC® Viewer를 클릭합니다.

 

11~15. 사실 그냥 https://www.realvnc.com/en/connect/download/viewer/ 로 접속하시면 됩니다.

16. 운영체제를 선택하시고, 펼침 메뉴에서 원하는 옵션을 선택하신 뒤, Download VNC Viewer를 눌러 내려받으시면 됩니다.

제목에서 보시는 바와 같이 이 글은 Windows 운영체제 기준입니다. 그리고 EXE를 기준으로 다음 과정 설명 드리겠습니다.

 

17. 내려받은 파일을 실행해서 설치를 시작합시다.

 

18. Next

 

19. 동의하시고 Next

 

20. 원하는 대로 설정하시고, Next!

(Desktop Shortcut은 필수는 아니니 취향대로 하세요.)

 

21. 설치를 시작하려면 Install을 클릭하세요. 설치 설정을 검토하거나 변경하시려면 Back을 클릭하세요.

 

22. Finish를 눌러 Setup Wizard를 종료하세요.

 

23. 처음으로 마주하는 화면이군요.

'Send anonymous usage data to help improve VNC Viewer'는 원하지 않으시면 체크 해제하시기 바랍니다.

그리고 GOT IT을 클릭합시다.

 

24. File→New connection으로 들어갑니다.

 

25-1. 외부 네트워크에서 접속하는 경우 VNC Server에는 라즈베리파이공인IP:외부포트를 입력합니다.

가령, 라즈베리파이가 연결된 공유기의 공인 IP 주소가 123.45.67.8이고, 외부 포트를 38080으로 포트포워딩 했으면, 123.45.67.8:38080을 입력하시면 됩니다.(10번 과정의 이미지 상황)

25-2. 같은 공유기에 연결된 PC에서 접속하는 경우 VNC Server에는 라즈베리파이사설IP:포트번호를 입력합니다.

가령, 라즈베리파이의 사설 IP 주소가 172.30.1.3이고, 7번 과정에서 포트 번호를 바꾸지 않아 포트가 5900인 상태이며, 같은 공유기에 연결된 PC에서 접속하는 경우 172.30.1.3:5900을 입력하시면 됩니다.

26~27. Name과 Labels는 마음대로 설정하세요.

28. 잘 설정하셨다면 OK를 눌러 주세요.

 

29. 그러면 목록에 방금 설정한(?) 서버가 나타납니다. 그 서버를 더블클릭해서 접속해 주세요.

 

30. 잠시 기다리면 위와 같은 창이 뜹니다. Continue를 눌러 주세요.

 

31. Username은 pi입니다.(따로 변경하지 않았다면.) Password는 라즈베리파이 OS 설치할 때 설정하신 비밀번호를 입력하시면 됩니다.

(위의 이미지는 제가 비밀번호 일부를 가렸습니다. 자릿수 유추를 방지하기 위함입니다.)

 

32. 이제 Windows PC에서 라즈베리파이의 화면을 보고, 원격제어할 수 있습니다. 라즈베리파이에 마우스, 키보드, 모니터를 연결하지 않아도 돼서 편리합니다.(컴퓨터 두 대를 동시에 켜 둔다는 점이 좀 그렇긴 하지만...)

 

이렇게 오늘은 Windows PC에서 Real VNC를 이용하여 라즈베리파이를 원격제어하는 방법을 알아보았습니다.

다음에 만나요!

 

댓글을 달아 주세요

  • ddddd 2021.09.18 15:24  댓글주소  수정/삭제  답글쓰기

    안녕하세요 라즈베리파이 입문자 대학생입니다. 위 과정대로 하는데
    팀 프로젝트라서 다른사람도 자신의 집에서 접속할려고하면 포트포워딩을 해야하나요?
    제가 집에서 켜놓고있는 상태라 저는 포트포워딩을 했습니다 포워딩IP주소는 라즈베리파이OS에서 VNC들어가서 뜨는 IP주소로 설정했습니다. 근데 이게 안되면 공인IP로 해야하는거 같은데 공인 IP를 보는 방법을 모르겠습니다. 뭐가 문젠지도 사실 잘 모르겠네요 팀원은 VNC뷰어만 깔아서 설정 똑같이해서 접속하면 되는거는 아닌가요?

    • ddddd 2021.09.18 15:39  댓글주소  수정/삭제

      그리고 그 고정IP로 하는것도 해봤는데 ㅠㅠㅠ 와이파이는 연결 되어있다고 뜨는데 실제로 라즈베리파이OS는 인터넷이 안되네요ㅠㅠ

    • 수성비 2021.09.18 15:41 신고  댓글주소  수정/삭제

      포트포워딩은 라즈베리파이(VNC 서버)만을 대상으로 하시면 됩니다. 다른 컴퓨터(VNC 클라이언트)는 포트포워딩을 할 필요가 없습니다. ddddd님께서 "포워딩IP주소는 라즈베리파이OS에서 VNC들어가서 뜨는 IP주소로 설정했습니다."라고 하신 것으로 보아 포트포워딩은 잘 하신 것 같습니다.

      ★★★
      공인IP는 라즈베리파이OS에서 웹브라우저 여시고 네이버나 다음 등 포털사이트에 '내 아이피'라고 검색하시면 쉽게 확인하실 수 있습니다.

    • 수성비 2021.09.18 15:53 신고  댓글주소  수정/삭제

      고정IP를 설정하실 때에는 IP를 잘 선택하셔야 합니다.. 사용할 수 있는 범위에서 IP를 선택하셔야 하고, 다른 기기에 IP가 겹치지 않도록 해 주셔야 할 겁니다.
      가령, IP 사용범위가 172.30.1.1~172.30.1.127이고, 그 중 DHCP IP 사용범위(동적IP에 할당되는 범위)가 172.30.1.1~172.30.1.60인 경우에는
      ①172.30.1.5→△(DHCP IP 범위이므로 다른 기기와 IP가 겹칠 위험이 있음.)
      ②172.30.1.70→○
      ③172.30.1.140→X(IP 사용범위가 아님.)
      ④192.168.0.1→X(해당 공유기의 IP 범위가 아님. 일단 첫 칸의 숫자가 달라지면 안 됩니다.)

      저는 배우고 알게 된 것을 글로 정리할 뿐이고, 제가 아는 정보 중에는 틀린 정보가 있을 수도 있습니다.
      ddddd님께서 더 깊이 알아보실 것을 추천드리고 싶습니다.
      고정 IP와 동적 IP, 공인 IP와 사설 IP, 포트포워딩 등에 대해서 검색해 보시는 것이 좋을 것 같습니다.

  • sd 2021.09.29 02:26  댓글주소  수정/삭제  답글쓰기

    28번 까지 잘 했는데 그후 클릭하니 컴퓨터에서 응답을 기다리는 동안 시간이 초과되었습니다 라고 뜨는데 해결 방안이 있을까요?

    • 수성비 2021.10.04 06:07 신고  댓글주소  수정/삭제

      무언가 잘못 설정하신 것이 있는 것 같네요. 다른 블로거 분들의 글도 찾아보시면서 무엇이 잘못되었는지 확인해 보시는 것이 좋을 것 같습니다. 여러 사람의 글들을 보면 더 다양한 방법을 알게 되니까 도움이 되지 않을까요?^^

728x90

수성비전자방입니다. 마인크래프트는 건축, 생존 등을 하는 게임입니다. 개인적인 생각으로는 친구와 함께하면 더 재밌는 것 같습니다. 다른 집에 사는 친구와 함께 멀티를 하려면 서버를 열어야 합니다. 마인크래프트 자바에디션에서 가장 기본적인 서버는 바닐라 서버입니다.(단, 바닐라 서버에서는 모드 설치가 불가능합니다.) 오늘은 마인크래프트 자바에디션 바닐라 서버 여는 법에 대해서 알려드리겠습니다.

 

우선 마인크래프트가 설치된 PC에서 서버 파일을 내려받으세요.

1. 우선 Minecraft Launcher에서 설치 설정을 클릭합니다.

2. 신규를 클릭합니다.

 

3. 버전을 확인하시고 버전 오른쪽에 작게 서버라고 쓰인 것을 누릅니다.

 

4. 웹브라우저가 열리는데 왼쪽 아래 보시면 server.jar 파일을 내려받으실 수 있습니다.

 

5. 차단되었다고 뜨는데 유지를 클릭합니다.

 

서버로 사용할 PC에 Java를 설치하세요.

(접은 글 안에 있는 내용은 Minecraft JE 1.16.x 이하의 내용에 해당되는 내용입니다.)

더보기

1. https://java.com 으로 접속합니다.

2. 무료 Java 다운로드를 클릭합니다.

 

3. 동의 및 무료 다운로드 시작을 클릭합니다. 설치 파일을 내려받으시고, 실행하시기 바랍니다.

마인크래프트 1.17 서버를 돌리기 위해서는 Java 16 (이상)이 필요합니다.(아래 내용 참고)

 

1. https://www.oracle.com/java 로 접속합니다.

한국어로 보시려면 https://www.oracle.com/kr/java/ 로 접속하시기 바랍니다.

2. 우측 상단의 Java 다운로드를 클릭합니다.

 

3. JDK Download를 클릭합니다.

 

4. 스크롤을 내리세요.

 

5. 본인 운영체제에 맞는 것을 내려받으세요.

64bit Windows를 사용하고 있다면 jdk-16.0.1_windows-x64_bin.exe를 내려받으면 되겠죠?

 

6. I reviewed and accept the Oracle Technology Network License Agreement for Oracle Java SE를 체크합니다.

7. 그 아래 Download 버튼을 클릭하여 내려받으시기 바랍니다.

 

8. 대상 폴더를 변경하실 분은 왼쪽 아래 체크 박스를 체크하시기 바랍니다.

9. 설치를 클릭합니다.

 

10. 설치가 다 되면 닫기를 눌러 종료합니다.

 

본격적으로 서버를 열어 봅시다.

서버로 사용할 PC가 제 PC가 아니다 보니 확장명 관련 설정을 바꾸지 못했습니다. 스크린샷에 확장명이 안 보이더라도 양해 부탁드립니다.

1. 마인크래프트 런처에서 내려받은 server.jar 파일을 서버 컴퓨터에 넣은 뒤(전송한 뒤) 실행합니다.

 

2. 그러면 아무 창도 안 열리고 파일들만 몇 개 생겼을텐데 elua.txt 파일을 실행합니다.

 

3. 셋째 줄에 eula=false 라고 되어 있을텐데, false를 true로 바꿔주고 저장합니다.

 

4. 서버 관련 설정을 바꾸기 위해서는 server.properties 파일을 수정해야 합니다. 소스 파일 편집기로 수정하시면 되는데 그런 거 없으시다면 메모장으로 편집하셔도 됩니다. 제가 서버로 사용할 PC에도 소스 파일 편집기가 없는 관계로 메모장을 실행했습니다. server.properties를 메모장에 드래그하시면 됩니다.(물론 파일 열기를 하셔도 되고... Ctrl+O를 하셔도 되고...)

 

5. 원하는 대로 수정하신 후 저장하세요. 이 파일에 대한 자세한 설명은 마인크래프트 전문 블로거 분들께서 정리해 두셨으리라 생각하고(아니면 나무위키를 참고하셔도 됩니다.) 저는 저에게 필요한 부분만 정리해 보겠습니다.

 

[필자의 server.properties 수정 요령]

*gamemode 변경하기(그런데 이건 맵을 새로 만들 때 적용되는 거라서 사실 기존에 제작하신 맵으로 플레이하실 분은 맵 자체 gamemode를 원하는 대로 설정해 두셔야 합니다.)

*difficulty=peaceful(물론 다른 난이도를 원하면 다르게 설정... 제가 좀비를 싫어해서 평화로움으로 설정했습니다.)

*enable-command-block=true(command block 사용을 허용하는 설정입니다.)

*max-players=20(최대 접속자 수: 20명. 최대 접속자 수를 변경하려면 숫자를 수정.)

 

6. 이제 서버를 본격적으로 열어 봅시다. 이번에는 배치 파일(*.bat)을 만들어야 합니다.

1
2
java -Xmx1G -Xms1G -jar server.jar
pause
cs

1행에 주목하시기 바랍니다. RAM 할당 관련 내용입니다. -Xmx1G는 최대 용량이 1GB임을 의미하며, -Xms1G는 최소 용량이 1GB임을 의미합니다. 이 경우 마크 서버에 1GB RAM을 할당하겠다는 뜻입니다. 사실 이것뿐만 아니라 서버 운영과 관련해서 RAM을 더 잡아먹기 때문에 서버 컴퓨터 사양의 RAM을 전부 다 지정하면 안 됩니다. RAM 할당은 본인 상황에 맞게 조절하시기 바랍니다.

저의 경우, 서버로 사용할 PC의 RAM이 8GB였는데 서버에 RAM을 2GB로 할당하고 싶었지만, 그렇게 하니 오류가 발생하더라구요..(서버 구동 자체가 안 됩니다.) 그래서 1GB밖에 할당을 못했습니다.

참고로, RAM 용량을 MB 단위로 할당하고 싶으신 분은 -Xmx ?M -Xms?M의 형식으로 작성하시기 바랍니다.

1행 마지막 부분의 -jar server.jar는 server.jar를 실행한다는 의미입니다. 혹시 파일명을 바꾸셨다면 바꾼 파일명을 입력하시기 바랍니다.

 

배치 파일은 편의상 start.bat라고 하겠습니다. 파일명은 다르게 하셔도 되지만, 확장명 .bat 는 지켜주셔야 합니다. 배치 파일은 소스코드 편집기로 작성하시면 되지만, 없는 경우 메모장을 사용하셔도 무방합니다. 저장할 때 파일 이름에 start.bat라고 쓰고, 파일 형식을 모든 파일로 해 주시면 됩니다.(요즘은 파일 형식 안 바꿔도 되긴 하던데...)

 

7. 방금 만든 start.bat를 실행합니다.

8. Microsoft Defender SmartScreen 관련 경고창이 뜨면 추가 정보를 클릭합니다.

 

9. 실행을 클릭합니다.

 

10. 액세스 허용을 해 줍니다.

 

11. 로딩이 다 될 때까지 기다리시기 바랍니다. 시간이 오래 걸립니다. 스폰 지점 준비가 다 끝나면 아래와 같은 문구가 뜰 겁니다.

Done (s)! For help, type "help"

 

서버 PC 고정 IP 설정하기

서버를 여러 번 열 것이라면 서버 컴퓨터의 IP는 고정되어 있는 것이 편합니다. 아래 글을 참고하셔서 고정 IP를 설정하시기 바랍니다.

https://toopyo.tistory.com/entry/Windows10PublicIP

 

포트포워딩

공유기를 사용하는 경우 각 장치에 사설 IP가 부여됩니다. 같은 네트워크 안에서는 사설 IP를 입력하여 서버에 접속할 수 있지만, 외부 네트워크에서 서버에 접속하려면 공인 IP를 입력해야 하므로 공유기에서 포트포워딩을 해 주어야 외부 접속이 가능합니다.

포트포워딩 하실 때 내부 포트는 server.properties 파일에 있는 포트 번호를 입력하시면 되는데 포트 관련 부분을 건드리지 않으셨다면 25565일 것입니다. 외부 포트는 내부 포트와 동일하게 하셔도 되고, 그 외에 쓰고 싶으신 포트 번호를 쓰셔도 됩니다.(위의 이미지는 외부 포트를 38080으로 설정한 예시입니다.)

 

KT 공유기(Giga Wifi Home) 포트포워딩

 

위에 본인의 공유기가 없을 경우 인터넷에 공유기 이름을 검색해 보면 포트포워딩 하는 방법이 나오므로 검색해 보시기 바랍니다.

 

서버에 접속할 친구에게 알려줘야 할 것

서버의 공인 IP 주소와 외부 포트 번호를 알려줘야 합니다. 공인 IP 주소는 공유기 설정 페이지에서 확인하실 수도 있고, 아니면 그냥 네이버나 다음 등에 '내 아이피'라고 검색하시면 나옵니다.

 

서버에 접속하는 방법

Multiplayer를 클릭합니다.

 

Proceed를 클릭합니다.

 

Add Server를 클릭합니다.

 

Server Address에 서버공인IP:외부포트를 입력합니다.

가령, 서버의 공인 IP 주소가 123.45.67.8이고, 외부 포트를 38080으로 설정했다면, 123.45.67.8:38080을 입력하시면 됩니다.(포트포워딩 단락의 이미지 상황)

그 다음 Done을 클릭합니다.

 

이제 저 서버를 클릭(더블 클릭)해서 접속하시면 됩니다.

이때, 방화벽 경고창이 뜰 수 있는데 액세스 허용을 눌러 주시기 바랍니다.

 

드디어 접속 성공!

 

기존에 만든 맵으로 멀티를 하고 싶다면?

잠시 서버를 끄고, 작업을 하도록 하겠습니다.

 

서버 폴더 안에 world 폴더가 있습니다. 그 안에 있는 파일들을 모두 삭제하시고, 맵 세이브파일 폴더 안에 있는 파일들을 모두 서버 폴더 안에 있는 world 폴더 안으로 복사하시면 됩니다.

 

알아두면 좋은 서버 관련 명령어

위 스크린샷에서 파란 동그라미 친 부분에 서버 관련 명령어를 쓸 수 있습니다.

 

op <플레이어>

<플레이어>에게 관리자(op) 권한을 부여합니다. 이 권한이 있는 사람은 게임 안에서 명령어를 사용할 수 있습니다.

가령, steve라는 플레이어에게 op 권한을 주려면 op steve라고 입력한 후 엔터 치시면 됩니다.

 

deop <플레이어>

<플레이어>에게 있는 관리자(op) 권한을 해지합니다.

 

save-all

서버 데이터를 저장합니다.

 

stop

서버를 종료합니다. 이 명령어를 입력하면 잠시 시간이 흐른 후 서버가 꺼지며, 창이 닫힙니다.

 

저의 글을 읽어 주셔서 감사합니다.

다음에 만나요!

 

댓글을 달아 주세요

728x90

수성비전자방입니다. 오늘은 라즈베리파이3 B+로 홈페이지 서버를 만들어 보겠습니다.

 

사전 준비

1. 우선 개인적으로 HTML, CSS(그 외에 필요하다면 Javascript까지)를 이용하여 홈페이지를 만들어 주세요. 저는 간단하게 테스트용으로 index.html, stylesheet.css, test.html 파일을 준비했습니다.

2. 라즈베리파이3 B+에 운영체제를 설치해 주세요. 저는 라즈베리파이 OS를 사용했습니다. 라즈베리파이 OS 설치 방법과 한국어 패치 방법이 궁금하시면 아래 링크를 클릭하세요.

라즈베리파이 OS 설치와 한국어 패치(라즈베리파이3 B+)(toopyo.tistory.com/entry/raspberrypi-os-32)

 

Node.js 설치

2021년 2월 5일 기준

1. https://nodejs.org 로 접속하세요. 그러면 두 개의 초록색 버튼이 보일 겁니다. 하나는 LTS이고, 다른 하나는 Current입니다.

*LTS: 많은 사용자에게 권장되는 버전. 즉, 안정적인 버전.

*Current: 최신버전

원하시는 버전을 생각해 보세요. 저는 LTS를 사용하겠습니다.

저 초록색 버튼은 클릭하지 마시고, 버전 번호만 기억해 두세요.

 

2. 터미널을 실행합니다.

3. 아래 명령어를 입력하여 실행합니다.

curl -sL https://deb.nodesource.com/setup_버전앞자리.x | sudo -E bash -

예를 들어 14.15.4 버전을 내려받으시려면,

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -

이렇게 입력하시면 됩니다.

 

4. sudo apt-get install -y nodejs 명령을 실행합니다.

5.

sudo apt-get install gcc g++ make

curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -

echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

sudo apt-get update && sudo apt-get install yarn

이 명령들은 필수인지는 모르겠는데 저는 했습니다. 모두 터미널 창에 나온 것들입니다. Windows 명령 프롬프트와 달리 라즈베리파이 OS의 터미널 창에서는 복사, 붙여넣기가 안 돼서 불편하군요...

 

6. 다 설치가 되었으면 버전이 맞게 설치되었는지 확인해 봅시다.

node -v

npm -v

이 명령들을 각각 실행해 주시면 됩니다.

 

Node.js로 서버 열기

1. 서버 설정과 관련한 *.js 파일(*은 임의의 파일명)을 만들어야 합니다. www.w3schools.com/nodejs/nodejs_url.asp를 참고했습니다.

제가 작성한 소스코드를 아래에 넣어드리겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var http = require('http');
var url = require('url');
var fs = require('fs');
 
http.createServer(function (req, res) {
  var q = url.parse(req.url, true);
  var filename = "." + q.pathname;
  fs.readFile(filename, function(err, data) {
    if (err) {
      res.writeHead(404, {'Content-Type''text/html'});
      return res.end("404 Not Found.");
    } 
    else{
    res.write(data);
    return res.end();
    }
  });
}).listen(38080);
cs

이제 각 줄이 무엇을 의미하는지 설명해 드리겠습니다.(제 지식의 한계로 모두 설명해 드리기는 어렵고, 일부만...) 색깔은 위와 조금 다른 점 양해 부탁드립니다.

 

[시작하기 전에 - 모듈을 포함시키는 방법]

var 변수이름 = require('모듈명')

이 글에서는 http, url, fs 모듈을 사용하겠습니다.

 

[1행]

var http = require('http');

http라는 변수를 정의하고, 그걸 통해서 http 모듈을 포함시키겠습니다.

 

[2행]

var url = require('url');

이 모듈은 URL을 분석하기 위해 필요합니다. HTML, CSS 등의 파일 수를 합쳐서 총합이 2개 이상인 경우 URL을 분석할 수 있어야 서버가 정상 작동합니다.

URL을 분석한다는 것은 가령, 주소가

http://123.45.6.78:38080/index.html?id=abc&page=1 이면

123.45.6.78은 host로,

38080은 port로,

index.html은 path로,

그 뒤로 있는 index.html?id=abc&page=1은 query string으로 분석하는 것입니다.

오늘 저는 path까지만 사용하겠습니다.

 

[3행]

var fs = require('fs');

File System 모듈입니다.

 

[5행]

http.createServer(function (reqres) {

 

[6행]

var q = url.parse(req.urltrue);

 

[7행]

var filename = "." + q.pathname;

예를 들어, path가 index.html이면, filename은 ./index.html이 됩니다.

 

[8행]

fs.readFile(filenamefunction(errdata) {

 

[9행]

if (err) {

만약 오류가 발생하면 10~11행의 소스코드를 실행합니다.

 

[10행]

res.writeHead(404, {'Content-Type': 'text/html'});

오류코드 404를 내보냅니다. 그리고 콘텐츠 타입을 HTML로 합니다.

 

[11~12행]

return res.end("404 Not Found.");

화면에 404 Not Found를 출력합니다.

 

[13~17행]

    else{

    res.write(data);

    return res.end();

    }

  });

오류가 발생하지 않으면 해당 파일을 실행합니다. 이번에 {'Content-Type': 'text/html'}이 없는 이유는 HTML 외에 다른 파일(ex. CSS)도 읽기 위해서입니다.

 

[18행]

}).listen(38080);

포트 번호를 38080으로 지정합니다. 보통 8080으로 많이 사용하시는데 제가 38080으로 바꾼 이유는 포트 번호 변경이 가능하다는 것을 보여드리기 위해서입니다. 사용하고 싶으신 포트 번호를 괄호 안에 넣어 주시면 됩니다.

 

2. 사전 준비하신 HTML, CSS 등의 파일과 1번 과정에서 준비한 *.js 파일을 라즈베리파이에 넣어 주세요. 저는 pi 폴더 안에 server 폴더를 만들고, 그 안에 파일들을 넣었습니다. 제가 작성한 *.js 소스코드 기준으로 *.js 파일은 다른 HTML, CSS 파일들과 동일한 폴더에 있어야 합니다.

3. 터미널 창에서 cd server를 입력해서 server 폴더로 이동하세요.

4. node *.js 명령을 실행하시면 *.js에 작성한 설정대로 서버가 열립니다.

아까 말씀드린 대로 *은 임의의 파일명입니다. 저 같은 경우에는 homepage.js 파일로 저장했으므로 node hompage.js 명령을 실행했습니다.

 

5. 이제 라즈베리파이의 웹브라우저에서 http://localhost:38080/index.html 로 접속하면 서버의 index.html 파일이 열립니다.

(물론 서버에 index.html 파일이 없으면 안 열립니다.)

CSS도 잘 적용되었습니다. 세부 항목을 눌러 보았습니다.

 

제가 테스트용으로 만든 페이지라서 별 내용 없습니다.^^

 

없는 파일명으로 path를 입력하거나 path를 입력하지 않으면 404 Not Found.가 출력됩니다.

 

서버를 끄시려면 터미널 창에서 Ctrl+C를 누릅니다. 복사 단축키가 아니라 서버 끄는 단축키입니다.

 

포트포워딩

공유기를 사용하는 경우 각 장치에 사설 IP가 부여됩니다. 같은 네트워크 안에서는 사설 IP를 입력하여 서버에 접속할 수 있지만, 외부 네트워크에서 서버에 접속하려면 공인 IP를 입력해야 하므로 공유기에서 포트포워딩을 해 주어야 외부 접속이 가능합니다. 인터넷에 공유기 이름을 검색해 보면 포트포워딩 하는 방법이 나오므로 검색해 보시기 바랍니다.

포트포워딩 하실 때 내부 포트는 *.js 파일 거의 마지막 줄에 작성하신 그 포트 번호를 입력하시면 됩니다.

포트포워딩이 완료되면 외부 네트워크에서는 웹브라우저 주소창에 http://공인IP:외부포트/path를 입력해서 접속하실 수 있습니다.

위의 이미지와 저의 소스코드로 예를 들자면, 포트포워딩을 할 때 내부 포트에는 38080을 입력하고, 만약 제가 외부 포트도 38080으로 설정했다면 http://123.45.67.8:38080/index.html을 입력해서 라즈베리파이 서버에 있는 index.html 파일로 접속할 수 있습니다.

 

저의 글을 읽어 주셔서 감사합니다.

다음에 만나요!

댓글을 달아 주세요