Node.js 로 작성한 서버 프로그램을 Linux 에 daemon 으로 실행하기

myservice 라는 daemon 을 만드는 예제

/etc/systemd/system/myservice.service 이름으로 아래의 내용을 넣는다.

[Unit]
Description=myservice-daemon
After=network.target

[Service]
ExecStart=/usr/bin/node app.js
Restart=on-failure
User=myservice-user
Group=myservice-group
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/some/nodejs/myservice

[Install]
WantedBy=multi-user.target

아래 명령으로 방금 작성한 파일을 systemd 에게 읽도록 한다.
daemon 을 실행한다.
시스템이 부팅될 때 자동으로 실행되도록 활성화 시킨다.

systemctl daemon-reload
systemctl start myservice
systemctl enable myservice

Ubuntu + 노트북 사용시 화면을 덮어도 절전모드 되지 않게 하기

BS가 사용하던 노트북의 해체하여 SSD는 외장 하드로 사용하고, Main 작업 PC는 아내의 iMac에 기생하고 있습니다.

노트북을 버리기에는 아깝고, 중고로 팔기에는 너무 오래 되었고 해서 Ubuntu를 설치하고 이것 저것 공부할 때에나 써보자 해서 Ubuntu를 설치했는데…
공간의 문제로 뚜껑을 덮어놔야 하는 상황입니다.

그런데 기본 Ubuntu의 동작은 역시나 뚜껑을 덮으면 절전 모드가 됩니다.

이를 방지하는 방법을 소개합니다.

  1. 터미널을 열고 /etc/systemd/logind.conf 파일을 엽니다. 당연히 root 권한으로(sudo 사용)
  2. 아래 두 설정을 입력합니다.
    HandleLidSwitch=ignore
    HandleLidSwitchDocked=ignore
  3. 저장하고 나서 아래 명령으로 서비스를 재시작 합니다.
    service systemd-logind restart
  4. 이제 뚜껑을 덮어도 절전 모드로 들어가지 않게 되었습니다.
  5. 해당 설정에 사용할 수 있는 옵션은 아래와 같습니다.
    poweroff
    hibernate
    suspend
    ignore

Linux 의 Run Level

Run Level 은 Unix System V 스타일의 초기화를 구현하는 OS의 작동 모드를 말한다.

작동 모드는 각 OS 마다 조금씩 차이가 있지만 대체로

  • 0(Shutdown)
    OS를 종료
  • 1(Single User Mode)
    네트워크와 대다수의 대몬을 실행하지 않는 단일 사용자 모드
    마치 Windows의 안전모드 명령프롬프트와 유사한 형태
  • 6(Reboot)
    OS를 재시작

그리고 Linux의 일반적인 모드는 위의 모드에 추가로 아래와 같은 것들이 있다.

  • 2(Multi User Mode)
    네트워크 안되는 다중 사용자 모드
  • 3(Multi User Mode with Networking)
    CLI 기반의 대부분의 동작을 모두 수행하는 다중 사용자 모드
    보통 서버 환경에서 사용하는 모드
  • 5(with Display manager)
    Runlevel 3에다가 GUI를 위한 display manager를 추가한 모드
    보통 display manager는 X11 을 많이 사용한다.

[참고 자료: 위키의 설명: https://en.wikipedia.org/wiki/Runlevel]

현재 runlevel을 확인하는 방법은

runlevel
who -r

Ubuntu 홈 하위 디렉토리 이름을 원하는 언어로 변경

Ubuntu 를 한글로 설치하면 계정의 홈 디렉토리 하위 디렉토리 이름들이 “다운로드” 와 같이 표시되어
일부 Application 에서 인식을 하지 못하는 서러움을 겪는다.
이때 아래와 같이 하면 서럽지만 영문으로 사용할 수 있다.

echo 'en_US' > ~/.config/user-dirs.locale

그리고 xdg-user-dirs-update 나 xdg-user-dirs-gtk-update 으로 업데이트를…

Linux Desktop 에 폰트 설치

Ubuntu + D2Coding 폰트를 기준으로 설명하자면

압축 해제 프로그램 설치
폰트 받기
압축 풀기
D2Coding/*.ttf 를 복사
폰트 캐싱하기

apt-get install unzip
wget https://github.com/naver/d2codingfont/releases/download/VER1.3.2/D2Coding-Ver1.3.2-20180524.zip
unzip D2Coding-Ver1.3.2-20180524.zip
mkdir /usr/share/fonts/truetype/D2Coding
cp ./D2Coding/*.ttf /usr/share/fonts/truetype/D2Coding/
fc-cache -v

wubi – Windows Ubuntu Installer

Windows 의 파일 시스템 아래에 Ubuntu를 설치해서 멀티부팅을 할 수 있게 하는 소프트웨어이다.
이제는 정식 버전은 discontinued 되었다.
정식 버전이 끊어지게 된 이유는 Windows 의 새로운 기능들과 충돌했기 때문이다.

이런 충돌문제를 우회하거나 조금 해소한 버전이 아직 진행 중이긴 하다.

[wubiuefi: https://github.com/hakuna-m/wubiuefi/]

장점

파티션을 나누지 않고 Ubuntu를 Windows와 같이 설치할 수 있다.
원하면 disk의 크기를 늘릴 수도 있다.
Hyper-V 에 설치한 것과 달리 PC의 H/W를 모두 사용할 수 있다.

단점

NTFS의 단점을 모두 가지고 있다.
느리다.
많이 느리다.

용도

주된 사용이 아니라 어쩌다가 가끔 잠깐 필요할 경우 사용하는 것은 좋다.
자주 사용하려면 파티션을 나누어 설치하는 것이 좋다.
어쩌다가 가끔 간단하게 사용한다면 Live USB 를 만들어 사용하는 것도 나쁘지 않다.

Linux 소개

Linus Benedict Torvalds에 의해 시작된 Linux Kernel 을 사용하는 OS를 묶어서 부르는 용어.
Unix 비슷한 시스템이지만 Unix는 아니다.
우리가 사용하는 Windows와 macOS를 제외한 나머지 컴퓨터들이 많이 사용한다.
예를 들면, 가정에서 사용하는 유무선 공유기, IPTV 셋탑박스, 이동통신 장비들, 안드로이드 휴대폰, …
2017년 11월 기준으로 세계 500위 안에 들어가는 슈퍼 컴퓨터는 모두 리눅스를 사용하고 있다고 한다.
1991년에 학부생이 자신의 PC에서 시작한 프로젝트가 이제는 전세계를 움직이고 있다.

리눅스 배포판

Linux 라는 것은 Kernel의 이름이다.
이 Kernel을 이용해서 다양한 OS가 만들어졌는데, 이들을 리눅스 배포판이라 부른다.

Desktop용 리눅스 배포판

BS가 처음 리눅스를 접하던 당시에는 정말 다양한 배포판들이 경쟁하고 있었다.
Red Hat, Gentoo, 심지어 한컴까지도…
시간이 흘러 데스크탑 PC를 위한 리눅스는 거의 시장에서 사라지고,
Ubuntu 정도가 쓸만하지 않을까 생각된다.

Server용 리눅스 배포판

서버용 배포판은 아직도 전쟁 중이다.
대표적인 배포판은
Ubuntu, Red Hat, SUSE 정도이다. (이 기준은 상용 클라우딩 컴퓨터 환경에서 지원하는가에 맞췄다.)
그 중 자유로운 것은 Ubuntu 뿐…
Red Hat 자유 버전정도로 생각할 수 있는 CentOS도 있긴하다…

그 외 배포판…

알 수 없다… 삼성 갤럭시 S7을 사용 중이지만 삼성이 핸드폰에 어떤 리눅스 배포판을 사용했는지 알려주지 않으니까…
마찬가지로 공유기를 사용하지만 어떤 배포판을 사용했는지 알려주지 않는다.
알 수 없도록 엄청 커스터마이징을 한 이유도 있다.
알아내고 싶은 생각도 없다.