node.js에서 버젼 변경 하기

오늘 특정 프로젝트를 받아서 빌드를 진행하는데 오류가 발생하였다.

$> npm install
.... 모듈 오류 발생 ...

원인은 node 버젼이 내 PC에 설치된 것은 11.x 이고 해당 모듈은 8.x 에서만 동작하였다.

버젼 변경을 어찌 해야하는지 고민하는 차에 함께 일하시는 분이 n 이라는 모듈을 이용하면 된다고 알려 주셨다.

# 설치 
$>sudo  npm install -g n

# Node 버전 중 설치된 버전 확인
$> n ls  

# Node 버전 설치  
$> n <version>  
# ex> n 8.13

# 최신 LTS Node 버전 설치
$> n latest  

# 제거할 Node 설정
$ n rm <version ...>  
#ex> n rm 8.9.1 8.9.2

# 현재 버전을 제외한 모든 버전 제거
$ n prune  

참고 주소


Posted by lahuman

Nginx private 인증서 적용하기

  • OPENSSL 기반으로 인증서요청서 생성하기
$> openssl req -new -newkey rsa:2048 -nodes -keyout <개인키이름>.key -out <인증요청서이름>.csr
... 정보 입력 or 걍 엔터
  • 인증서 생성 하기
$> openssl x509 -req -days 365 -in <인증요청서이름>.csr -signkey <개인키이름>.key -out <생성할인증서이름>.crt
... 결과로 인증서( 인증서이름.crt )가 생성된다.
  • 비밀번호 제거작업 필수는 아니지만, Nginx를 재기동 할 경우 비밀번호를 요청 받는다. 따라서 다음과 같이 개인키를 재생성 한다.
    $> cp <생성된개인키이름>.key <생성할개인키복사본이름>.key.secure
    $> openssl rsa -in <생성된개인키복사본이름>.key.secure -out <재생성할개인키이름>.key
    
  • Nginx SSL 적용
$> vi /etc/nginx/conf.d/<서비스명>.conf
... 추가
server {
        listen 443;
        server_name localhost;
        charset utf-8;
        access_log /etc/nginx/log/access.log;
        error_log /etc/nginx/log/error.log;
        ssl     on;                                               #ssl사용
        ssl_certificate /etc/nginx/ssl/인증서이름.crt;               #생성된 인증서경로
        ssl_certificate_key /etc/nginx/ssl/<재생성할개인키이름>.key;    #생성된 개인키
        location / {
                proxy_redirect  off;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Scheme $scheme;
                proxy_pass http://target-server;
        }
}

끝!

참고 주소에 가면 더 많은 정보가 있다.

참고 주소


Posted by lahuman

NODEJS]client, server 기본 틀 만들어 보기

Nodejs를 이용해서 개발을 시작한지 1주일이 되었다.

지금까지는 누군가 만들어 놓은 화면을 수정하는 작업이 주로 이루어 졌다.

기본적으로 node.js가 설치되어 있는 환경에서 진행 된다. node 서버쪽 설정을 해보자 node 서버는 express-generator 를 이용한다.

# express-generator 설치
$> npm install express-generator -g

# express 기본 디렉터리 생성
$> express <디렉터리 명>

생성된 디렉토리는 다음과 같은 구조를 가진다.

|-bin           # express 실행 관련 
|-node_modules  # node modules 설치되는 위치
|-public        # 정적 파일의 위치 (client source 외 정적 파일)
|-views         # view 관련 위치(.ejs, .html 등)
|-routes        # route 설정된 js 모음

실행을 하기 전에 먼저 모듈을 설치 한다.

$> npm install

이후 express 서버를 기동한다.

$> npm run start

vue.js를 사용하기 위해서 vue-cli를 이용하여 client 화면의 구성을 생성한다.

# vue-cli install
$> npm install -g @vue/cli
# client project create
# $> vue create <생성 프로젝트 명>
$> vue create client

생성을 할때 여러 옵션이 있지만 기본으로 생성한다.

생성된 프로젝트 디렉토리로 들어가면, 다음의 구조로 되어 있다.

|-node_modules   # node modules 설치되는 위치
|-public         # 정적 파일(html)
|-src            # 실제 소스 위치
  |-components   # vue components
  |-assets       # 정적 파일(image, js, css ETC)

생성된 프로젝트를 기동하는 방법은 다음과 같다.

# client server running command
$> npm run serve
# build client source
$> npm run build

빌드를 할때, server 소스 쪽으로 빌드를 하면 clinet 서버를 띄우지 않고 server 쪽의 서버로 함께 기동하도록 할 수 있다. 위치는 일반적으로 server 의 public(정적 위치)으로 build 되도록 수정한다. client 쪽에 vue.config.js 파일을 추가하여 다음과 같은 내용을 작성하자 중요 한 것은 outputDir을 서버의 public으로 설정 하는 것이다.

$> vi vue.config.js

###
module.exports = {
  outputDir: '../server/public',   # build 시 소스 저장 위치
  devServer: {
    proxy: 'http://localhost:3000' # server 의 접속 주소
  }
}
###

$> npm run build

client의 소스를 빌드 하고 server를 실행하면 server에서 client의 소스를 확인 할 수 있다.

참고 주소


Posted by lahuman