분류 전체보기 검색 결과

178개 발견
  1. 미리보기
    2019.02.21 - mr.november11

    [node.js] node.js 로 REST API 구축하기 위해 필요한 모듈 리스트

  2. 미리보기
    2019.02.21 - mr.november11

    [Linux] CentOS7 서버 전원 버튼 클릭 시 Poweroff 안 되도록 비활성화 하기

  3. 미리보기
    2019.02.13 - mr.november11

    [node.js] docker 를 활용한 mongodb 실행 및 node.js 로 mongodb 연동하기

  4. 미리보기
    2019.02.07 - mr.november11

    [Linux] Linux 서버 VNC 서버 환경 설정

  5. 미리보기
    2019.01.14 - mr.november11

    [Linux] 기존 구성된 CentOS7 서버 내 Swap 추가하기

  6. 미리보기
    2019.01.13 - mr.november11

    [Linux] CentOS7 에서 LLDP 설정 및 동작 확인

  7. 미리보기
    2019.01.05 - mr.november11

    [vue.js] vue-router 설치 및 구성

  8. 미리보기
    2019.01.03 - mr.november11

    [Linux] HP 서버 iLO 포트 MAC Address 확인 방법

[node.js] node.js 로 express 서버 구축 시 필요한 모듈 리스트

1. express

  • express 는 node.js 에서 web 서버 구축을 위해 꼭 필요한 모듈이다.

설치법

$ npm install express --save

사용법

const express = require('express')
const app = express()

app.get('/', (req, res) => {
  res.send("Hello World")
})

app.listen(3000, () => console.log("Listening on port 3000"))

2. nodemon

  • nodemon 은 node.js 코드가 변경될 때마다 web 서버를 자동으로 재시작 해준다.

  • 개발 편의성을 위해 꼭 필요하다.

설치법

$ npm install nodemon --save

사용법

  • node 대신에 nodemon 프로세스로 코드를 실행한다.

MacBook-Pro:express-demo server$ nodemon index.js
[nodemon] 1.18.9
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node index.js`
Listening on port 3000                         <====== 소스코드 수정 후 저장 시점에 web 서버가 재실행
[nodemon] restarting due to changes...
[nodemon] starting `node index.js`
Listening on port 3000

3. joi

  • POST API 등으로 신규 값을 추가할 시 전달된 값의 유효성을 사전에 검사해야한다.

    ex> email 의 경우 @ 가 입력되어야 한다.

  • joi 는 입력된 값의 scheme 를 사전에 정의하여 값의 유효성을 검사 한다.

설치법

$ npm install joi --save

사용법

  1. 코드 상단에 joi 모듈 import

    const Joi = require('joi')
  2. post 함수 내 joi schema 및 validation 체크 함수를 입력한다.

    • 예시에서 전달될 값은 name 이라는 key 를 입력받으며, 3글자 이상 되어야 한다.

    • result 값으로 error 가 존재할 경우 res.status(400) 으로 400 Error 를 발생 시킨다.

    app.post('/api/courses', (req,res) => {
      const schema = {
          name : Joi.string().min(3).required()
      }

      result = Joi.validate(req.body, schema)
      console.log(result)

      if(result.error ){
          res.status(400).send(result.error)
          return
      }

      const course = {
          id : courses.length + 1,
          name : req.body.name
      }
      courses.push(course)
      res.send(course)
    })
  3. 유효하지 않은(3글자 미만) 값이 전달됐을 경우 result.error 에 의해 아래와 같이 출력된다.

    {
      "isJoi": true,
      "name": "ValidationError",
      "details": [
          {
              "message": "\"name\" length must be at least 3 characters long",
              "path": [
                  "name"
              ],
              "type": "string.min",
              "context": {
                  "limit": 3,
                  "value": "ch",
                  "key": "name",
                  "label": "name"
              }
          }
      ],
      "_object": {
          "name": "ch"
      }
    }

4. helmet

  • helmet 은 http header 의 보안 취약점을 보완해주는 middle ware 이다.

    • cspContent-Security-Policy 헤더를 설정하여 XSS(Cross-site scripting) 공격 및 기타 교차 사이트 인젝션을 예방합니다.

    • hidePoweredByX-Powered-By 헤더를 제거합니다.

    • hpkpPublic Key Pinning 헤더를 추가하여, 위조된 인증서를 이용한 중간자 공격을 방지합니다.

    • hsts는 서버에 대한 안전한(SSL/TLS를 통한 HTTP) 연결을 적용하는 Strict-Transport-Security 헤더를 설정합니다.

    • ieNoOpen은 IE8 이상에 대해 X-Download-Options를 설정합니다.

    • noCacheCache-Control 및 Pragma 헤더를 설정하여 클라이언트 측에서 캐싱을 사용하지 않도록 합니다.

    • noSniffX-Content-Type-Options 를 설정하여, 선언된 콘텐츠 유형으로부터 벗어난 응답에 대한 브라우저의 MIME 가로채기를 방지합니다.

    • frameguardX-Frame-Options 헤더를 설정하여 clickjacking에 대한 보호를 제공합니다.

    • xssFilterX-XSS-Protection을 설정하여 대부분의 최신 웹 브라우저에서 XSS(Cross-site scripting) 필터를 사용하도록 합니다.

설치법

$ npm install --save helmet

사용법

const Helmet = require('helmet')

app.use(Helmet)

5. morgan

  • morgan 은 express 내에서 로그 기록을 남겨주는 middleware 이다.

설치법

$ npm install --save morgan

사용법

const morgan = require('morgan')

app.use(morgan('short'))

실행 결과

Listening on port 3000
::1 - GET /api/courses/ HTTP/1.1 200 79 - 4.581 ms
::1 - GET /api/courses/ HTTP/1.1 200 79 - 0.564 ms
::1 - GET /api/courses/ HTTP/1.1 200 79 - 1.390 ms
::1 - GET /api/courses/ HTTP/1.1 200 79 - 0.227 ms

6. config

  • config 모듈은 application 에서 사용하는 설정 값을 공통된 파일을 통해 관리할 수 있도록 한다.

  • 시스템 환경 설정에 따라 default, development, production 등의 모드로 실행 가능하다.

설치법

$ npm install config --save

사용법

  • config 폴더 생성 후 default.json 파일 생성

    $ cat ./config/default.json
    {
      "name" : "My APP Configuration name"
    }
  • node.js 코드 내 아래와 같이 사용

    const config = require('config')

    console.log(config.get('name'))

실행 결과

My Gluster APP

7. winston

  • winston 은 node.js 의 대표적인 Logging 모듈이다.

  • winston 2.0 기준으로 정리 되어있다.

설치법

$ npm install winston --save

사용법

  • transports 설정을 통해 Console 및 File 에 로그 결과를 기록할 수 있다.

  • winston.log('로그 등급', '로그 metadata', '메시지') 형식으로 로그를 저장하면 된다.

var winston = require('winston');
winston.add(winston.transports.File, { filename: 'somefile.log' });
winston.log('info', 'Hello distributed log files!');
winston.info('Hello again distributed logs');

winston.level = 'debug';
winston.log('debug', 'Now my debug messages are written to console!');

winston.log('info', 'Test Log Message', { anything: 'This is metadata' });

실행 결과

  • somefile.log 내 아래와 같이 기록된다.

{"level":"info","message":"Hello distributed log files!","timestamp":"2019-02-21T02:53:30.870Z"}
{"level":"info","message":"Hello again distributed logs","timestamp":"2019-02-21T02:53:30.871Z"}
{"level":"debug","message":"Now my debug messages are written to console!","timestamp":"2019-02-21T02:53:30.871Z"}
{"level":"info","message":"Hello distributed log files!","timestamp":"2019-02-21T02:54:28.246Z"}
{"level":"info","message":"Hello again distributed logs","timestamp":"2019-02-21T02:54:28.247Z"}
{"level":"debug","message":"Now my debug messages are written to console!","timestamp":"2019-02-21T02:54:28.247Z"}
{"anything":"This is metadata","level":"info","message":"Test Log Message","timestamp":"2019-02-21T02:54:28.247Z"}


다른 카테고리의 글 목록

node.js 카테고리의 포스트를 톺아봅니다

[Linux] CentOS7 서버 전원 버튼 클릭 시 Poweroff 안 되도록 비활성화 하기

참고 사이트 : https://wiki.archlinux.org/index.php/Power_management#Power_management_with_systemd

설명

  • ACPI 이벤트

    • power 버튼 관련된 이벤트는 ACPI(Advanced Configuration and Power Interface)에서 관리한다.

    • 관련 설정은 /etc/systemd/logind.conf 에서 조정한다.

  • /etc/systemd/logind.conf 기본 설정값

    • 일반적으로 HandlePowerKey 만 참고하면 될 것 같다.

    Event HandlerDescriptionDefault Value
    HandlePowerKeyTriggered when the power key/button is pressed.poweroff
    HandleSuspendKeyTriggered when the suspend key/button is pressed.suspend
    HandleHibernateKeyTriggered when the hibernate key/button is pressed.hibernate
    HandleLidSwitchTriggered when the lid is closed, except in the cases below.suspend
    HandleLidSwitchDockedTriggered when the lid is closed if the system is inserted in a docking station, or more than one display is connected.ignore
    HandleLidSwitchExternalPowerTriggered when the lid is closed if the system is connected to external power.action set for HandleLidSwitch
  • /etc/systemd/logind.conf 설정 변경 후에는 systemd-logind.service 재기동(restart)이 필요함

설정방법

echo "HandlePowerKey=ignore" >> /etc/systemd/logind.conf
systemctl restart systemd-logind

다른 카테고리의 글 목록

Linux 카테고리의 포스트를 톺아봅니다

[node.js] docker 를 활용한 mongodb 실행 및 node.js 로 mongodb 연동하기

1. Docker 로 mongodb 실행

1) docker-compose.yml 파일 생성

  • volumes 영역에는 외부에 별도로 저장한 db 데이터 경로를 지정한다.

version: '2'

services:
mongodb:
  image: 'bitnami/mongodb:3.6'
  ports:
    - "27017:27017"
  volumes:
    - /Users/db/data:/data/db

2) docker-compose 실행

  • 명령어 : docker-compose up

    $ docker-compose up
    Starting db_mongodb_1_ea510d3ef245 ... done
    Attaching to db_mongodb_1_ea510d3ef245

2. nodes.js 에서 mongodb 연동 후 CRUD(생성, 읽기, 수정, 삭제) 하기

1) mongoose 모듈 설치

  • node.js 에서 mongodb 를 활용하려면 mongoose 모듈 설치가 필요하다.

    npm install mongoose --save

2) mongoose 모듈 로드 및 연결

const mongoose = require('mongoose')

mongoose.connect('mongodb://localhost:27017/playgroud')
.then( () => console.log('Connected to MongoDB ... '))
.catch( err => console.error('Could not connect to MongoDB ... '))

3) Schema 및 Class, Obejct 정의 후 저장

  • node.js 에서 사용할 mongodb 데이터의 schema(형식) 을 정의한다.

    const courseSchema = new mongoose.Schema({
      name : String,
      author : String,
      tags : [ String ],
      date : { type: Date, default: Date.now },
      isPublished : Boolean
    })

    const Course = mongoose.model('Course', courseSchema)
    const course = new Course({
      name : "Node.js Course",
      author : "Mosh",
      tags : ['node', 'backend'],
      isPublished : true
    })
    const result = await course.save();


다른 카테고리의 글 목록

node.js 카테고리의 포스트를 톺아봅니다

[Linux] Linux 서버 VNC 서버 환경 설정

2019. 2. 7. 16:05 - mr.november11

[Linux] Linux 서버 VNC 서버 환경 설정

1. VNC 서버 프로그램인 tigervnc-server 설치

  • yum install 로 tigervnc-server 설치

[root@server host0]# yum install -y tigervnc-server

2. vncserver 실행 후 계정 및 패스워드 설정

  • root 계정에서 vncserver 실행 시 vnc 접속에서 사용하는 패스워드를 지정한다.

  • SecurityTypes는 None 으로 설정하여 별도의 인증 과정을 생략한다.

[root@server ~]# vncserver --SecurityTypes=None

New 'server:1 (root)' desktop is server:1

3. (Client) VNC Client 로 접속

  • 대상 서버 측에서는 5901 포트로 vnc가 실행중

  • Client에서는 5901 포트로 접속 후 패스워드를 지정하면 된다.

    [root@server host0]# netstat -nap | grep vnc
    tcp       0     0 0.0.0.0:5901           0.0.0.0:*               LISTEN     14164/Xvnc
    tcp       0     0 0.0.0.0:6001           0.0.0.0:*               LISTEN     14164/Xvnc
    tcp6       0     0 :::5901                 :::*                   LISTEN     14164/Xvnc
    tcp6       0     0 :::6001                 :::*                   LISTEN     14164/Xvnc
    unix 2     [ ACC ]     STREAM     LISTENING     56819   14164/Xvnc           @/tmp/.X11-unix/X1
    unix 2     [ ACC ]     STREAM     LISTENING     56820   14164/Xvnc           /tmp/.X11-unix/X1
    unix 3     [ ]         STREAM     CONNECTED     76864   14164/Xvnc           @/tmp/.X11-unix/X1
    unix 3     [ ]         STREAM     CONNECTED     57919   14164/Xvnc           @/tmp/.X11-unix/X1
    unix 3     [ ]         STREAM     CONNECTED     76859   14164/Xvnc           @/tmp/.X11-unix/X1
    unix 3     [ ]         STREAM     CONNECTED     57916   14164/Xvnc           @/tmp/.X11-unix/X1


다른 카테고리의 글 목록

Linux 카테고리의 포스트를 톺아봅니다

[Linux] 기존 구성된 CentOS7 서버 내 Swap 추가하기

1. 기존

  • 기존에는 swap 영역이 8G로 설정되어 있다.

[root@SERVER /]# free -h
            total       used       free     shared buff/cache   available
Mem:           30G       1.9G         25G         84M       3.8G         28G
Swap:         8.0G         0B       8.0G

2. Swap 추가 방법

1) dd 로 swap용 공간 할당

  • 명령어 : dd if=/dev/zero of=/app/swap bs=1M count=8192

    chmod 0600 /app/swap

[root@SERVER app]# dd if=/dev/zero of=/app/swap bs=1M count=8192
8192+0 records in
8192+0 records out
8589934592 bytes (8.6 GB) copied, 6.43528 s, 1.3 GB/s

[root@SERVER app]# chmod 0600 /app/swap

[root@SERVER app]# ls -alh /app/swap
-rw------- 1 root root 8.0G Jan 14 14:02 /app/swap
[root@SERVER app]#


2) mkswap 으로 swap file 생성

  • 명령어 : mkswap /app/swap

[root@SERVER app]# mkswap /app/swap
Setting up swapspace version 1, size = 8388604 KiB
no label, UUID=3f74f71d-5a12-41e7-8feb-95ea43cd28fa

3) /etc/fstab 에 swap 추가

  • 명령어 : /etc/fstab 파일 내 /app/swap swap swap defaults 0 0 추가

    [root@SERVER app]# cat /etc/fstab
    
    #
    # /etc/fstab
    # Created by anaconda on Thu Dec 27 02:42:32 2018
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    UUID=a687aa6e-56f4-4346-849f-09b36da5d3d6 /                       xfs        defaults,noatime	1 1
    UUID=2c4b772c-d84c-4feb-8661-6577146561e5 /app                     xfs       defaults,noatime	1 2
    UUID=316307c4-e36e-4097-a900-46e95e105531 /home                   xfs       defaults,noatime	1 2
    UUID=2f53cbaf-bd64-4c84-8c2a-ddc71119972e swap                    swap    defaults        0 0
    /app/swap				  swap			  swap	  defaults        0 0
    [root@SERVER app]#
    
    
    

4) swapon -s 로 추가 확인

  • 명령어 : swapon -s

    [root@SERVER app]# swapon -s
    Filename				Type		Size	Used	Priority
    /dev/sda2                              	partition	8388604	0	-1
    /app/swap                              	file	8388604	0	-2
    [root@SERVER app]#
    
    


다른 카테고리의 글 목록

Linux 카테고리의 포스트를 톺아봅니다

[Linux] CentOS7 에서 LLDP 설정 및 동작 확인

2019. 1. 13. 22:35 - mr.november11

[Linux] CentOS7 에서 LLDP 설정 및 동작 확인

연동 스위치의 포트에서 LLDP Enable 설정 필요

1. LLDP 설치 및 실행

  • lldpad package 설치

    yum install -y lldpad
  • lldpad daemon 실행

    systemctl start lldpad 

2. Link 에 LLDP 설정 및 설정 값 확인

  • lldptool 명령어로 설정

    • lldptool set-lldp -i ens1f0 adminStatus=rxtx ;

    • lldptool -T -i ens1f0 -V sysName enableTx=yes;

    • lldptool -T -i ens1f0 -V portDesc enableTx=yes ;

    • lldptool -T -i ens1f0 -V sysDesc enableTx=yes;

    • lldptool -T -i ens1f0 -V sysCap enableTx=yes;

    • lldptool -T -i ens1f0 -V mngAddr enableTx=yes;

    [root@server ~]# lldptool get-lldp -i ens1f0 adminStatus
    adminStatus=rxtx
    [root@server ~]# lldptool set-lldp -i ens1f0 adminStatus=rxtx ;
    adminStatus = rxtx
    [root@server ~]# lldptool -T -i ens1f0 -V sysName enableTx=yes;
    enableTx = yes
    [root@server ~]# lldptool -T -i ens1f0 -V portDesc enableTx=yes ;
    enableTx = yes
    [root@server ~]# lldptool -T -i ens1f0 -V sysDesc enableTx=yes;
    enableTx = yes
    [root@server ~]# lldptool -T -i ens1f0 -V sysCap enableTx=yes;
    enableTx = yes
    [root@server ~]# lldptool -T -i ens1f0 -V mngAddr enableTx=yes;
    enableTx = yes
    [root@server ~]#
    
  • lldptool 명령어로 설정 값 확인

    • lldptool get-lldp -i ens1f0 adminStatus

    [root@server ~]# lldptool get-lldp -i ens1f0 adminStatus
    adminStatus=rxtx
    

3. LLDP 확인

  • LLDP 링크 연동 정보 확인

    • lldptool -i ens1f0 -t -n

    [root@server ~]# lldptool -i ens1f0 -t -n
    Chassis ID TLV
    MAC: <MAC ADDRESS>
    Port ID TLV
    Local: Eth1/15
    Time to Live TLV
    120
    Port Description TLV
    topology/pod-1/paths-312/pathep-[eth1/15]
    System Name TLV
    <NAME >
    System Description TLV
    topology/pod-1/node-312
    System Capabilities TLV
    System capabilities: Bridge, Router
    Enabled capabilities: Bridge, Router
    Management Address TLV
    IPv4: <IP ADDRESS>
    Ifindex: 83886080
    Cisco 4-wire Power-via-MDI TLV
    4-Pair PoE not supported
    Spare pair Detection/Classification not required
    PD Spare pair Desired State: Disabled
    PSE Spare pair Operational State: Disabled
    Unidentified Org Specific TLV
    OUI: 0x000142, Subtype: 216, Info: 0000
    Unidentified Org Specific TLV
    OUI: 0x000142, Subtype: 201, Info: 01
    Unidentified Org Specific TLV
    OUI: 0x000142, Subtype: 212, Info: 53414c323031334e315457
    Unidentified Org Specific TLV
    OUI: 0x000142, Subtype: 214, Info: 4e394b2d433933373254582d45
    Unidentified Org Specific TLV
    OUI: 0x000142, Subtype: 210, Info: 6e393030302d31322e3228337329
    Unidentified Org Specific TLV
    OUI: 0x000142, Subtype: 202, Info: 01
    Unidentified Org Specific TLV
    OUI: 0x000142, Subtype: 211, Info: 0f7f
    Unidentified Org Specific TLV
    OUI: 0x000142, Subtype: 215, Info: 4130395f4c6561665f333132
    Unidentified Org Specific TLV
    OUI: 0x000142, Subtype: 206, Info: 546944435f414349
    Unidentified Org Specific TLV
    OUI: 0x000142, Subtype: 208, Info: 0a006057
    Unidentified Org Specific TLV
    OUI: 0x000142, Subtype: 203, Info: 00000138
    Unidentified Org Specific TLV
    OUI: 0x000142, Subtype: 205, Info: 0001
    Unidentified Org Specific TLV
    OUI: 0x000142, Subtype: 207, Info: 040a00000466333132323566302d386435392d313165372d393532652d633561353939663765646430050a00000537306335633865632d313766342d313165382d393063622d653566633334303530373633030a00000333316164313532612d343365362d313165382d623062642d323365666164313639656339020a00000235333164613731632d343365392d313165382d626538642d666631363438363937333462010a00000131626239633462632d343366652d313165382d393463382d383761393662623566356436
    End of LLDPDU TLV
  • LLDP 링크 연동 통계 확인

    • lldptool -i ens1f0 -S

    lldptool -i ens1f0 -S

4. LLDP 설정 해제

  • lldptool set-lldp 로 adminStatus 변경

    • lldptool set-lldp -i eno5 adminStatus=disabled

      lldptool set-lldp -i eno5 adminStatus=disabled

    [root@P-TVIEW-NAS11 ~]# lldptool set-lldp -i eno5 adminStatus=disabled
    adminStatus = disabled
    [root@P-TVIEW-NAS11 ~]# lldptool set-lldp -i ens1f0 adminStatus=disabled
    adminStatus = disabled
    [root@P-TVIEW-NAS11 ~]#


다른 카테고리의 글 목록

Linux 카테고리의 포스트를 톺아봅니다

[vue.js] vue-router 설치 및 구성

2019. 1. 5. 18:59 - mr.november11

[vue.js] vue-router 설치

  • vue-router 는 url 주소에 대한 navigator 역할을 하는 중요 라이브러리이다.

참고 사이트 : https://router.vuejs.org/kr/installation.html

1. npm 을 사용한 vue-router 설치

  • 명령어

npm install vue-router --save

2. router 관련 vue 파일 생성

  • src 폴더 내 router 폴더를 생성

  • router 폴더 내 index.js 파일을 생성

  • 아래 코드를 통해 router 를 추가한다.

    import Vue from 'vue'
    import VueRouter from 'vue-router'

    Vue.use(VueRouter)

    const router = new VueRouter({
    mode: 'history',
    routes: [
      {
        path: '/',
        component: Home,
        beforeEnter: requireAuth
      },
      {
        path: '*',
        component: NotFound
      }
    ]
    })

    export default router

3. main.js 내 vue-router 관련 코드 추가

  • main.js 파일 내

    • import router from './router'

    • Vue 클래스 내 router 추가

  • 예제

    import Vue from 'vue'
    import './plugins/vuetify'
    import './plugins/vuetify'
    import App from './App.vue'
    import 'roboto-fontface/css/roboto/roboto-fontface.css'
    import 'material-design-icons-iconfont/dist/material-design-icons.css'
    import router from './router'

    Vue.config.productionTip = false

    new Vue({
    render: h => h(App),
    router
    }).$mount('#app')

4. App.vue 내 router

  • App.vue 코드에서 주소별 다르게 나와야 하는 위치에 아래 코드 추가

    • <router-view></router-view>


'Vue.js' 카테고리의 다른 글

[Vue.js] Vuetify 설치 및 튜토리얼 학습  (0) 2018.12.13

다른 카테고리의 글 목록

Vue.js 카테고리의 포스트를 톺아봅니다

[Linux] HP 서버 iLO 포트 MAC Address 확인 방법

2019. 1. 3. 10:20 - mr.november11

[Linux] HP 서버 iLO 포트 MAC Address 확인 방법

  • ipmitool 로 확인

[root@server  ~]# ipmitool lan print | grep MAC
MAC Address             : d0:67:26:34:22:55

다른 카테고리의 글 목록

Linux 카테고리의 포스트를 톺아봅니다