Dev Blog

스크립트 & 소스코드 공유

실무에서 유용하게 쓰는 스크립트와 코드 조각을 블로그 게시판으로 저장하고 공유합니다.

108건의 글

Node.js PM2 설치와 활용 - 자동 실행·모니터링·로그

Node.js 프로세스 매니저 PM2의 설치와 활용법을 정리한 글이다. npm install pm2 -g로 설치하고, pm2 start main.js --watch로 파일 변경 시 자동 재시작, --no-daemon 옵션, pm2 list·monit·log로 상태와 로그를 확인하고 pm2 stop·kill로 종료하는 방법을 설명한다. PowerShell에서 실행 차단 오류가 날 때 해결 방법도 포함한다.

제공해주신 PM2(Node.js 프로세스 관리 도구) 사용법과 트러블슈팅 내용을 마크다운 형식으로 깔끔하게 정리해 드립니다.

PM2: Node.js 프로세스 관리 및 자동 실행 가이드

PM2는 Node.js 애플리케이션을 24시간 중단 없이 실행할 수 있도록 도와주는 프로세스 매니저입니다. 서버가 예기치 않게 종료되어도 자동으로 재시작해주는 강력한 기능을 제공합니다.


1. 설치 방법 및 오류 해결

기본 설치

터미널(콘솔)에서 아래 명령어를 입력하여 전역(-g)으로 설치합니다.

npm install pm2 -g

트러블슈팅: uuid 관련 경고 발생 시

설치 중 [email protected] 관련 업데이트 경고가 발생한다면, 최신 버전으로 업데이트하여 해결할 수 있습니다.

npm install uuid@latest -g

트러블슈팅: Windows 스크립트 실행 권한 오류

Windows 환경에서 "이 시스템에서 스크립트를 실행할 수 없으므로..."라는 오류가 발생한다면, PowerShell을 관리자 권한으로 실행한 뒤 아래 명령어를 입력하세요.

set-ExecutionPolicy RemoteSigned

2. 주요 실행 명령어

명령어 설명
pm2 start main.js --watch 파일을 상시 실행하며, 파일 수정 시 자동으로 재시작함
pm2 start main.js --watch --no-daemon 백그라운드가 아닌 상태로 실행 (실시간 로그 확인 가능)
pm2 start main.js --watch --ignore-watch="data/* sessions/*" 특정 디렉토리(data, sessions)의 변경사항은 무시하고 실행 유지

3. 관리 및 모니터링 명령어

  • 실행 리스트 확인

    pm2 list

    현재 실행 중인 프로세스의 이름(Name), ID, 상태 등을 확인할 수 있습니다.

  • 실시간 모니터링

    pm2 monit

    프로세스의 리소스 사용량(CPU, Memory)을 실시간으로 확인합니다.

  • 로그 확인

    pm2 log

    애플리케이션에서 출력되는 로그 기록을 실시간으로 확인합니다.


4. 중지 및 삭제

  • 특정 프로세스 중지

    pm2 stop [Name]
    # 예: pm2 stop main

    pm2 list에서 확인한 프로세스 이름을 입력하여 중지합니다.

  • 모든 프로세스 종료

    pm2 kill

    실행 중인 모든 PM2 프로세스를 완전히 종료합니다.


우분투 20.04에 Node.js 설치 및 npm 환경 구축하기 (apt·PPA·nvm)

우분투 20.04에서 Node.js와 npm을 설치하는 3가지 방법을 정리한 글이다. apt 패키지 매니저로 저장소 기본 버전을 설치하는 방법, PPA를 추가해 최신 버전을 설치하는 방법, nvm으로 여러 Node 버전을 설치·관리하는 방법을 각각 명령어와 함께 설명하고 build-essential 설치 등 주의사항도 정리했다.

우분투 20.04에 Node.js 를 설치하는 방법을 알아본다. Node.js 는 서버 측 프로그래밍을위한 JavaScript 런타임이다. 개발자는 서버측 언어로 JavaScript 를 사용하여 확장 가능한 백엔드 기능을 만들 수 있다.

CURL 설치

노드를 설치하기에 앞서 설치에 필요한 커맨드라인툴을 설치해야 한다.

CURL은 서버와 통신할 수 있는 커맨드 명령어 툴이자 웹개발에 매우 많이 사용되고 있는 무료 오픈소스다. 우분투에 CURL 을 설치한다.

<pre class="brush: jscript">$ sudo apt-get install -y curl

1. Apt 패키지 매니저 이용

apt 패키지 매니저를 사용해 우분투 패키지 저장소에 기본으로 들어가 있는 Node.js 를 다운받는다.

<pre class="brush: jscript">$ sudo apt update

노드js 다운로드

<pre class="brush: jscript">$ sudo apt install nodejs

설치가 완료되었는지 확인

<pre class="brush: jscript">$ nodejs -v

노드 패키지 매니저 npm 다운로드

<pre class="brush: jscript">$ sudo apt install npm

2. PPA 를 이용한 설치

PPA 를 이용해 설치하면 우분투 패키지 저장소에 들어있는 Node.js 보다 더 많은 버전을 이용할 수 있다. 최신 버전을 설치할 경우 이 방법을 이용하자.

먼저 PPA 패키지에 엑세스하기 위해 PPA를 설치한다. 홈 디렉토리 ~ 로 진입해14.x 버전을 설치해보자. 버전을 바꾸고 싶은 경우 해당 버전을 입력한다.

<code class=" language-null"><pre class="brush: jscript">$ cd ~
$ curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_setup.sh

sudo 권한으로 PPA 를 추가하고 업데이트한다.

<pre class="brush: jscript">$ sudo bash nodesource_setup.sh
$ sudo apt-get install nodejs

PPA 를 통해 Node.js 를 설치하면 npm 까지 같이 설치된다. npm이 제대로 동작하기 위해 build-essential 패키지를 설치해야 한다.

<pre class="brush: jscript">$ sudo apt-get install build-essential

3.NVM을 이용한 설치

Node.js version managernvm 을 이용해 설치할수도 있다. nvm 을 이용하면 Node.js 의 여러 버전 설치 및 환경 관리가 용이하다.

깃허브 프로젝트 페이지 에 들어가 메인에 있는 Readme 에서 curl 명령어를 복사한다. 이 명령어를 입력하면 최신버전 nvm 설치 스크립트를 얻을 수 있다.

복사한 명령을 bash 에 전달하기 전에 스크립트를 검사해 원하지 않는 항목이 있는지 검사할 수 있다. |bash 를 제외한 앞부분 명령을 입력하면 체크할 수 있다.

<pre class="brush: jscript">$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh

아래 명령을 입력해 현재 계정에 nvm 스크립트를 설치한다.

<pre class="brush: jscript">$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

nvm 스크립트를 사용하려면 아래 source 명령어를 입력해 .bashrc 파일을 수정한 값을 바로 적용되도록 한다.

<pre class="brush: jscript">$ source ~/.bashrc

source 명령어
리눅스에서 source 명령어는 스크립트 파일을 수정한 후에 수정된 값을 바로 적용하기 위해 사용하는 명령어다. 위에서 수정한 /etc/bashrc 파일은 유저가 로그인할 때 읽어들이는 파일이기 때문에 로그아웃 후 로그인하거나 리눅스를 재시작해야 적용된다.

아래 명령어를 입력해 설치 가능한 노드 버전을 볼 수 있다.

<pre class="brush: jscript">$ nvm list-remote
<code class=" language-null">Output
. . .
v14.13.1
v14.14.0
v14.15.0   (LTS: Fermium)
v14.15.1   (LTS: Fermium)
v14.15.2   (LTS: Fermium)
v14.15.3   (LTS: Fermium)
v14.15.4   (Latest LTS: Fermium)
v15.0.0
v15.0.1
v15.1.0
v15.2.0
v15.2.1
v15.3.0
v15.4.0
v15.5.0
v15.5.1
. . .</code>

위 버전중 원하는 버전을 골라 설치 가능하다.

<pre class="brush: jscript">$ nvm install v13.6.0

설치되어 있는 nvm 버전들을 확인할 수 있다.

<code class=" language-null">$ nvm list</code>
<pre class="brush: jscript">Output
->      v13.6.0
default -> v13.6.0
node -> stable (-> v13.6.0) (default)
stable -> 13.6 (-> v13.6.0) (default)
. . .

현재 활성화되어 있는 버전은 -> v13.6.0 와 같이 표시된다.

latest long-term support version 을 사용하고 싶다면 아래를 입력한다.

<pre class="brush: jscript">$ nvm install lts/erbium

nvm 방식을 사용하면 nvm use 를 이용해 아래와 같이 활성화중인 노드버전을 변경할 수 있다.

<pre class="brush: jscript">$ nvm use v13.6.0
Now using node v13.6.0 (npm v6.13.4)

npm 업데이트

npm은 Node.js에 포함되어 있어 Node.js 설치 시 자동 설치된다. 따라서 별도의 설치가 필요없다. npm 은 Node.js보다 자주 업데이트되므로 최신 버전이 아닐 가능성이 있기 때문에 최신 버전으로 npm을 업데이트할 수 있다.

<pre class="brush: jscript">$ npm install -g npm@latest
$ npm -v

Node.js REPL

REPL(Read Eval Print Loop)은 Node.js는 물론 대부분의 언어(Java, Python 등)가 제공하는 가상환경으로 간단한 코드를 직접 실행해 결과를 확인해 볼 수 있다.

아래 명령어를 입력해 프롬프트가 >로 변경되면 자바스크립트 코드를 실행해 볼 수 있다.

<pre class="brush: jscript">$ node

자바스크립트 파일을 실행하려면 node 명령어 뒤에 파일명을 입력한다. 파일 확장자 .js는 생략할 수 있다.

<pre class="brush: jscript">$ node index.js

CTRL + C 키를 두번 입력하면 Node.js REPL을 종료시킨다.

Node.js 윈도우에 설치하기 - LTS 다운로드 및 설치 과정

Windows에 Node.js를 설치하는 과정을 스크린샷과 함께 단계별로 정리한 글이다. nodejs.org에서 LTS 버전(16.14.1) 설치 파일을 내려받아 실행하고, 설치 마법사의 옵션(Node.js runtime, corepack, npm, PATH 등록)을 설명한 뒤 명령 프롬프트에서 node -v로 설치가 완료되었는지 확인한다.

Node.js는 Javascript로 작성된 프로그램을 운영체제상에서 일반 애플리케이션 프로그램처럼 실행시켜주는 런타임입니다. 특히, 서버 프로그램을 작성하는데 많이 사용되고 있는것 같습니다. React를 사용해보기 위해서 설치해 봅니다.

Node.js 한글 사이트는 https://nodejs.org/ko/ 입니다. 설치 파일을 다운로드 받습니다. 현재 최신 버전은 17.7.1이네요. 저는 16.14.1 LTS 버전은 다운받아 설치합니다(LTS는 Long Term Support의 약자로 오랫동안 지원하는 버전을 말합니다). 다운로드 받은 파일은 node-v16.14.1-x64.msi 이고, 크기는 27.1MB 정도 입니다.

Node.js 다운로드 페이지

다운받은 파일을 더블클릭하여 설치합니다.

설치 마법사 시작화면

라이센스에 동의합니다.

라이센스 동의 화면

설치 위치를 지정합니다. 기본 설치 위치는 C:\Program Files\nodejs\ 입니다.

설치위치 지정

사용자 설정화면 입니다. 모두 기본값을 사용하겠습니다.

- Node.js runtime : Node.js 런타임 본체가 되겠습니다.
- corepack manager : 패키지 관리자입니다. npm, yarn등의 패키지 관리자의 여러 버전을 설치하고, 시용여부를 지정하는 것이 가능합니다. 서로 다른 개발 또는 배포 환경에서 상호간의 설치 호환성을 유지하기 위해서 사용되어질 수 있다고 합니다.
- npm package manager : 패키지 관리자 입니다.
- Online documentation shortcuts : 온라인 문서에 대한 바로가기 입니다.
- Add to PATH : PATH 환경변수에 등록합니다.

사용자 설정

Native 모듈들을 위한 툴을 설치할지 선택합니다. 선택하지 않겠습니다. npm 모듈중에 컴파일이 필요한 것이 있을때 필요한 도구(Python, Visual Studio Build Toos)를 자동으로 설치할지 물어 보는 것입니다.

선택적 툴 설치여부 선택

반응형

<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <script>(adsbygoogle = window.adsbygoogle || []).push({}); </script>

설치할 준비가 되었습니다. "Install"을 눌러 설치합니다.

설치준비 완료

설치중입니다.

설치중

설치가 완료되었습니다.

설치완료

설치확인을 위해서 명령창을 열고 "node -v" 명령으로 버전정보를 확인해 봅니다.

버전정보 확인

설치가 정상적으로 완료 되었습니다.

CSS ::after·::before의 content 속성에서 줄바꿈 처리하기

CSS 가상 요소 ::after와 ::before의 content 속성 값에 줄바꿈을 넣는 방법이다. content 속성에 줄바꿈 문자 \A 또는 \a를 사용하고, 반드시 white-space: pre 속성을 함께 지정해야 줄바꿈이 정상적으로 표시된다. 적용 예제 코드를 함께 포함한다.

换行符为“\A”或者“\a”都可以。

不要缺少white-space: pre

:before {
content: "本站不支持IE内核浏览器。\A请使用其他浏览器访问本站。";
white-space: pre;
}

PHP simplexml로 XML 파일 파싱하기

PHP의 simplexml_load_file 함수로 XML 파일을 읽어 특정 노드 값을 가져오는 방법이다. 그누보드 환경에서 cd_catalog.xml 파일을 로드하고, $xml->CD[1]->TITLE처럼 객체 경로로 접근해 원하는 요소의 데이터를 출력하는 예제를 보여준다. XML 파싱 결과를 확인하는 print_r2 활용법도 포함한다.

<?
include_once('./_common.php');

$xmlfile = "./cd_catalog.xml";
$xml = simplexml_load_file($xmlfile);

$data = $xml->CD[1]->TITLE;
echo $data;
print_r2($xml);
?>


Let's create something great together.

프로젝트 문의 및 견적 요청은 언제든 환영합니다.