-본 포스팅은 개인적으로 공부하면서 작성하는 내용입니다-


Nodejs 관련된 개발을 진행하면서 가장 낯설었던 것은 바로 초기 설정입니다.


Nodejs의 각 모듈(C로 보자면 라이브러리같은 개념입니다.)들은 package.json 형식으로 관리가 됩니다.

따라서 nodejs를 개발하기 위해서는 해당 package.json을 만들어야합니다.



그렇다면 이 파일은 어떻게 만들까요?


바로 "npm"이라는 패지키 관리자를 사용합니다.

npm은 Linux의 "yum"이라던가 "apt-get"과 동일한 기능을 수행하는 놈입니다.


윈도우 환경에서 개발을 하신다면 nodejs를 설치하게 되면 자연스럽게 npm도 같이 설치가 되고,

Linux 환경에서 개발을 진행하신다면 nodejs, npm을 따로 설치하거나, 

아래 내용을 참고하여 설치하면 nodejs와 npm을 같이 설치하게 됩니다. 


nodejs, npm 한 번에 설치하는 명령어


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

$ sudo apt-get install -y nodejs


이렇게 설치를 마치게 되면 폴더를 하나 생성하고 해당 폴더 내에서 터미널을 한 번 켜보도록 하죠.

윈도우 10 기본 터미널인 powershell을 켜도 되고, Git Bash가 설치되어 있을 경우 해당 터미널을 실행시켜도 됩니다.


참고로 원하는 폴더에서 터미널을 실행시키고자 할 때는 "[shift] + [마우스 오른쪽 버튼]"을 클릭하면 됩니다.




$ node -v

$ npm -v

nodejs와 npm이 잘 설치되어있다면 해당 명령어를 실행할 경우 버전을 각각 확인할 수 있습니다.



자 그럼, 본격적으로 처음에 어떻게 해야 하는지 접근을 해보도록 하죠.


$ npm init


명령어를 프로젝트를 생성할 폴더에서 실행하게 되면 아래와 같이 몇 가지 정보를 입력하라고 물어봅니다.

코드를 구현하는데 영향은 미치지 않으므로 아무렇게나 작성해도 무방합니다.

대신 작성을 하지 않게 되면 프로그램을 실행하였을 때 warning이 뜨게 됩니다. 그게 상당히 거슬....ㅎ


무튼 저렇게 설정은 완료하고 나면 package.json이라는 파일이 생깁니다.

안에 내용을 확인해보면... 뭐 별거 없습니다..ㅋㅋ



자 그럼 여기서 모듈을 설치해보겠습니다.


$ npm install http


http라는 아주 기본적인 모듈을 설치해보겠습니다. 아 물론 이 모듈은 따로 설치하지 않아도 nodejs를 설치할 때 global로 설치가 되어 사용할 수 있는 stdio.h 같은 놈이지만 지금은 테스트를 위해 한 번 local에도 설치를 해보겠습니다.


설치를 하고 package.json 파일을 확인해보면



요롷게 dependencies라고 해서 버전과 함께 무언가가 설치되어 있는 것을 확인할 수 있습니다.

그리고 package-lock.json 파일과 node_modules폴더가 생성된 것을 확인할 수 있는데요.


package-lock.json파일 내부에는 dependencies에 대한 세세한 내용이 들어가있고, node_modules 폴더 내에는 모듈(라이브러리라고 생각해도 되용)이 직접 설치가 됩니다.


만약 직접 확인해 보실 경우 http 폴더 안에 package.json 없을거에요. 아까 이야기했다시피 http는 global로  설치가 되어있기 때문에 별다른 것이 설치가 안되어있지만, 만약 global로 설치되있지 않은 모듈을 설치할 경우 .js를 비롯한 다양한 데이터들이 node-modules 폴더 안에 들어가게 됩니다.




자 이제 모든 준비가 끝났고, .js 확장자의 파일을 만들어서 마음에 드는 에디터(atom, vscode, sublime 등등)를 이용하여 개발을 수행하면 됩니다.



<짧은 요약>


$ npm init

$ npm install [설치할 모듈명]



+a

$ npm remove [삭제할 모듈명]
















'Nodejs' 카테고리의 다른 글

[Nodejs] replace 함수 사용하기  (0) 2018.09.23

해당 포스팅은 EC2의 Ubuntu 16.04 버전에서 수행하였습니다.

그리고 라즈베리파이 3에서도 설치 및 동작 확인을 완료하였습니다.


본인도 학생으로서 공부하면서 하고있다보니 미흡한 부분이 많아요... 잘못된 내용이 있으면 댓글 부탁드립니다~





      



우분투에 NodeJS를 설치하는 아주 간단한 작업을 한 번 수행해 볼 예정입니다.


설치하기 전에 NodeJS가 뭔지를 한 번 간단히 확인해 볼까요 ㅎㅎ



Node.js는 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.


내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.

출처 : 위키피디아

즉.... 자바스크립트를 서버 쪽에서 개발할 수 있게 만든건데, 단일 스레드 형식으로 하드웨어 비용 부담을 절감하면서도 비동기식 IO 처리로 인해 높은 성능을 유지할 수 있는 완소 언어이고 많이 사용하는 언어죠 ㅎㅎ


한번에 동시다발적인 요청을 처리할 때 좋은 언어입니다. 


대신 단일 스레드라 만약 어떠한 작업을 처리하는데 있어서 시간이 오래 걸리는 작업일 경우 문제가 발생할 수 있어요.

즉, 해당 요청에 대한 응답이 무거운 기능을 돌리는 거라면, 성능 저하가 발생할 요지가 엄청 높다는 뜻이죠 ㅎㅎ

(아 그리고 비동기식으로 코드를 구현하다 보니깐 가독성이 떨어진다는 단점도 있다고 하네요 ㅎㅎ)




출처 : Stack Overflow's developer survey for 2017


하지만 요즘 이렇게 많이 사용하는 언어..ㅎㅎ


Nodejs는 npm이라는 이름의 패키지 관리자를 사용해요. Ubuntu의 apt-get과 같은 역할을 하고, 다양한 모듈들을 npm을 이용해서 아주! 쉽게! 다운로드 받고 사용할 수 있답니다! ( 개 꿀 )


그리고 하나 더 Nodejs를 이용하여 제대로 개발을 하기 위한 또 하나의 필수 아이템.

바로 express라는 프레임워크인데요.

프레임 워크란 네트워크 어플리케이션 개발을 함에 있어서 개발을 조금 더 쉽게 해주는 프레임워크! 즉, 틀을 제공해주는 건데요.

express를 명령어를 통해 생성하기만 하면! 아주 쉽게 서버를 개발할 수 있습니다.



일단 NodeJS 먼저 설치해볼께요.



명령어 단 3줄이면 됩니다. ㅎㅎㅎ



NodeJS & NPM 설치 및 설치 확인



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


가장 먼저 어떤 버전을 설치할지를 결정해줍니다. 여기서는 8.x버전을 설치해줄 거에요. 만약 다른 버전을 설치하고 싶다면 저 숫자만 바꿔주면 됩니다.

오늘(2018.8.1) 기준으로 LTS(Long Term Support)는 8.11.3버전까지 나와있고 최신 버전은 10.7.0까지 나와있네요.

최신 중에서도 지원을 길~게 해주는 LTS 버전을 설치하는 게 낫겠죠?ㅎㅎ


$ sudo apt-get update


그 다음 update를 한 번 수행해줍니다.


$ sudo apt-get install -y nodejs


그 후 nodejs를 apt-get 명령어를 통해 설치해주면 끗!

nodejs를 설치하게 되면 npm 역시 자동으로 설치해주니 당황하지 않습니다 ㅎㅎ



자 이제 nodejs가 제대로 설치가 되었는지 한 번 확인해보겠습니다.

$ node -v

$ npm -v



요로코롬 버전이 확인된다면 깔끔하게 깔린겁니다.


자. 이제 NodeJS를 설치했으니 개발에 앞서 가장 유명한! 프레임워크인 express 프레임워크를 한 번 설치해볼까요 ㅎㅎ


Express framework는 NodeJS와 관련된 것이므로 npm을 이용해 설치를 진행해볼 꺼에요 ㅎㅎ



Express Framework 설치하기


Express도 정말 설치가 느무느무 간단합니다..... 하.... 이렇게 간단해도 되는거니..ㅠㅜ


단 2줄이면 끗!



$ sudo npm install -g express 


npm 패키지 관리자를 이용하여 express를 설치해주는데! global(어디서든 express를 사용하겠다!) 옵션을 두고 설치를 진행합니다.



$ sudo npm install -g express-generator@4


이제 설치한 express를 자동으로 생성시켜주는 express-generator를 설치하는데 4.x버전을 설치합니다.



현재(2018.8.1) express 최신버전이 4.16.0버전이네요. ㅎㅎㅎ


express Framework 설치 끗!


설치를 완료했으니 간단히 사용법을 알아볼께요.



Express Framework 사용해보기

http://cinema4dr12.tistory.com/741의 글을 참고하였습니다 ㅎㅎ

Express Framework를 생성하게 되면 막 파일이랑 폴더가 생깁니다.


따라서 Express Framework를 만들고, 작업할 폴더를 하나 만든뒤 들어가줍니다.


$ sudo mkdir express_test

$ cd express_test



그 다음 express 생성!!

$ sudo express -e

하면 



위와 같이 파일들이 생성되고 안내 메세지가 나오는 것을 확인할 수 있습니다.


파일의 구조는 

이런 식으로 구성이 되어있습니다. ㅎㅎ


가장 기본적으로 http 서버를 하나 동작시키기 위해서는 app.js 파일을 열어 내용을 조금 추가해주면 됩니다.


저는 vs code의 ftp-simple이라는 확장 프로그램을 이용하여 파일을 열었습니다.

ftp-simple 사용 방법도 후에 업로드 진행할께요 ㅎㅎ


vi editor를 이용하여 app.js 파일을 열어 수정하셔도 무방합니다~


파일을 열어 내용 2가지를 추가해줍니다.

빨간색 네모친 부분이 추가해준 내용입니다.


// port setup

app.set('port', process.env.PORT || 3000);


//////////////////////////////////////////////////////

// ------- creates Server -------

module.exports = app;


var server = app.listen(app.get('port'), function() {

console.log('Express server listening on port ' + server.address().port);

});


첫번째는 몇 번 포트로 접근할지를 결정해주는 부분이고

두번째는 해당 포트에 서버를 개설하는 부분입니다.

저장!



그리고 package.json 파일을 약간 수정해줄겁니다.


이렇게 node ./bin/www로 되어있는 부분을 위와같이 수정해줍니다.


이제 거의 다 끝났습니다~


아까 sudo express -e 명령어를  친 폴더에서

$ sudo npm install

를 입력해줍니다.


해당 명령어는 package.json 파일에 입력되어있는 모듈들을 설치해주는 명령어입니다.

만약 추가적으로 module을 다운로드 받아 사용하였다면 위의 명령어를 꼭 실행시켜 주셔야겠죠? ㅎㅎ


자 이제 다 끝났습니다.

$ sudo npm start

을 입력해주면!


Express Server가 3000번 포트에서 동작하고 있다고 뜨네요.


그럼 이제 3000번 포트로 들어가볼까요.


아! 들어가기 전에 localhost라면 상관이 없지만 저같은 경우는 AWS 서버에다가 express 서버를 실행시켰기 때문에 해당 포트로 접속하기 위해서는 방화벽을 해제해줘야 해요.


AWS같은 경우는 해당 인스턴스의 보안그룹으로 들어가 인바운드 -> 편집을 누르게 되면 인바운드 규칙 편집이라는 창이 뜹니다. 거기서 규칙 추가를 누르고 


유형 : 사용자 지정 TCP규칙

포트 번호 : 3000 (아까 우리가 설정한 포트 번호)

소스 : 위치 무관

설명 : 아무거나(대신 한글 입력 하면 오류나요 ㅎㅎ)



추가해주면 해당 포트로 접속이 가능합니다.


자 이제 웹브라우저(크롬, internet explorer 등등) 본인의 Public IP주소를 입력해주고 땡땡을 입력한 다음 3000(포트 번호를 입력해주면 


Express Framework로 만든 창이 뜨는 것을 확인할 수 있답니드아아앗

본인의 IP 주소:3000


만약 내 컴퓨터가 Ubuntu다! 또는 Virtual Box(or VMWare)에서 만들었다! 그러면 localhost:3000 치면 될거에요 ㅎㅎ


그리고 이렇게 접속을 하고 다시 리눅스 창으로 가보면 

이렇게 GET 요청이 들어왔다는 걸 확인할 수 있답니다. ㅎㅎㅎ

(favicon.ico get 요청은 404 error가 떳네요..하핳 무슨 일일까..ㅎ)



이렇게 NodeJS 설치부터 Express Framework를 이용한 아주 초기의 서버 개설까지 마쳤습니다!!!


개발을 어떻게 진행할지는.... 차차 프로젝트 진행해보면서 하나씩 해볼게요 ㅎㅎㅎ(저도 공부하고 있는 입장이라..ㅋ)














라즈베리파이에 코드를 짜서 실행시키고 싶은데...... 검은색은 바탕이요. 흰색은 글씨라.....

어떻게 하면 라즈베리파이를 이용하여 쉽게 개발 할 수 있을까?! 라고 많은 사람들이 고민했더랬죠.

그 덕분에 다양한 방법들이 있고 그 방법들을 한 번 소개해 보려고 해요.


한 번 개발을 위해 어떤 방법들이 있나 알아보죠


개발 방법들!!!


  1. WinSCP 프로그램을 이용하기
    이 친구는 설치 방법이 아주 간단하답니다. 사용법도 간단하고. 무엇보다!! Putty와 연동이 되서 접속하는 것도 개꿀 ㅋ
    근데 사실상 개발 목적이라기 보다는 리눅스와 윈도우 간의 파일 전송 목적이 큰 프로그램이라 코딩 목적에는 약간 벗어난 프로그램이죠 ㅎ
  2. Samba 서버 이용하기
    요 놈은 라즈베리파이에 삼바라는 서버를 개설해서 윈도우에서 폴더 공유 형태로 파일을 확인할 수 있는 놈입니다.
    따라서! 윈도우에 깔려있는 editor들(vs Code, Atom ....)을 이용하여 손쉽게 코드를 작성하고, 수정할 수 있는 놈이죠.
  3. Visual Studio(vs) Code의 ftp-simple 이용하기
    vs Code를 사용해 보신적이 있으신가요? 요놈은 프로그래밍을 배울 때 보통 가장 먼저 사용하는 툴인 Visual Studio에서 경량화해서 나온 개발도구인데, 다양한 확장 도구들을 지원합니다. (C, C++, Java, JavaScript, Python 등등등) 뿐만 아니라 원격 제어를 통한 개발 관련 툴들도 지원을 해주고 있어 한 번쯤 사용해볼만한 개꿀템!


크게 위에 있는 3가지 방법을 하나씩 소개해볼까 합니다.


그렇다면 가장 먼저 WinSCP라는 프로그램을 활용해보죠.



WinSCP 설치하기


1. 해당 홈페이지로 접속합니다.

https://winscp.net/eng/download.php


2018.7.22 기준으로 5.13버전이 최신이네요. 전 상남자이므로 최신버전을 설치해줍니다.


2. 다운로드를 누르면 창이 바뀌고 2초후에 다운이 진행됩니다.


3. 실행파일을 이용하여 다운로드 하면 끗~!



WinSCP 설정 및 실행하기



1. 설치한 WinSCP를 실행하면 아래와 같이 나옵니다.

처음 설치할 경우 새 사이트 하나만 있을거에요. ㅎㅎㅎ 당황하지 말고 계속 진행!


2. 도구 -> 가져오기 클릭!


3. PuTTY에서 설정한 "라즈베리파이_핫스팟" 클릭


4. 혹시 PuTTY에서 설정한게 없어 가져올 것이 없다면 새사이트르 누르고,
파일프로토콜, 호스트 이름, 포트 번호를 아래와 같이 설정한 후 저장을 눌러주면 됩니다 ㅎㅎ

PuTTY에서 가져올 것이 있다면 패쓰~


5. 로그인을 누르면 아래와 같이 아이디 비밀번호를 입력하는 창이 순서대로 나와요.


6. 라즈베리파이에 접속을 할 경우 defalut ID, password(pi, raspberry)를 입력하고  확인을 누르면


7. 오른쪽에 라즈베리파이 내의 파일 정보들이 있는 것을 확인할 수 있습니다.




이렇게 설치된 WinSCP를 통하여 라즈베리파이 내의 파일들을 컴퓨터로 가져오거나, 내 컴퓨터에 있는 파일을 손쉽게 라즈베리파이로 복사할 수 있습니다.


물론 Editor를 통해 편집도 가능하구요.

하지만 위에도 말했다시피 WinSCP는 데이터 송수신 목적이 강한 UI를 가지고 있습니다...ㅎㅎ


다음에는 Samba 서버를 이용하여 개발을 진행할 수 있는 방법을 알아보겠습니다!



















+ Recent posts