Skip to content

systemd 는 리눅스 운영 체제의 시스템 프로세스 및 서비스의 시작과 제어를 관리하는 init 시스템 및 서비스 관리자입니다.


systemd 를 사용하여 Bun 애플리케이션을 데몬으로 실행하려면 /lib/systemd/system/서비스 파일 을 생성해야 합니다.

sh
cd /lib/systemd/system
touch my-app.service

다음은 시스템 시작 시 애플리케이션을 실행하는 일반적인 서비스 파일입니다. 이를 템플릿으로 사용할 수 있습니다. YOUR_USER 를 애플리케이션을 실행할 사용자 이름으로 바꾸세요. root 로 실행하려면 YOUR_USERroot 로 바꾸세요. 하지만 보안상의 이유로 이는 일반적으로 권장되지 않습니다.

각 설정에 대한 자세한 내용은 systemd 문서 를 참조하세요.

ini
[Unit]
# 앱 설명
Description=My App
# 네트워크 사용 가능 후 앱 시작
After=network.target

[Service]
# 일반적으로 'simple' 사용
# https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type= 중 하나
Type=simple
# 앱 시작 시 사용할 사용자
User=YOUR_USER
# 애플리케이션 루트 디렉터리 경로
WorkingDirectory=/home/YOUR_USER/path/to/my-app
# 앱 시작 명령
# 절대 경로 필요
ExecStart=/home/YOUR_USER/.bun/bin/bun run index.ts
# 재시작 정책
# {no|on-success|on-failure|on-abnormal|on-watchdog|on-abort|always} 중 하나
Restart=always

[Install]
# 앱 자동 시작
WantedBy=multi-user.target

애플리케이션이 웹 서버를 시작하는 경우, 비 root 사용자는 기본적으로 포트 80 또는 443 에서 수신할 수 없습니다. 비 root 사용자가 실행할 때 Bun 이 이 포트에서 수신할 수 있도록 영구적으로 허용하려면 다음 명령을 사용하세요. 이 단계는 root 로 실행할 때는 필요하지 않습니다.

bash
setcap CAP_NET_BIND_SERVICE=+eip ~/.bun/bin/bun

서비스 파일이 구성되면 서비스를 활성화 할 수 있습니다. 활성화되면 재부팅 시 자동으로 시작됩니다. 이는 sudo 권한이 필요합니다.

bash
systemctl enable my-app

재부팅 없이 서비스를 시작하려면 수동으로 시작 할 수 있습니다.

bash
systemctl start my-app

systemctl status 로 애플리케이션 상태를 확인하세요. 앱을 성공적으로 시작했다면 다음과 같은 내용이 표시되어야 합니다.

bash
systemctl status my-app
txt
● my-app.service - My App
     Loaded: loaded (/lib/systemd/system/my-app.service; enabled; preset: enabled)
     Active: active (running) since Thu 2023-10-12 11:34:08 UTC; 1h 8min ago
   Main PID: 309641 (bun)
      Tasks: 3 (limit: 503)
     Memory: 40.9M
        CPU: 1.093s
     CGroup: /system.slice/my-app.service
             └─309641 /home/YOUR_USER/.bun/bin/bun run /home/YOUR_USER/application/index.ts

서비스를 업데이트하려면 서비스 파일 내용을 편집한 후 데몬을 다시 로드하세요.

bash
systemctl daemon-reload

서비스 유닛 구성에 대한 완전한 가이드는 이 페이지 를 확인하세요. 또는 일반적인 명령어 치트시트를 참조하세요.

bash
systemctl daemon-reload # 파일이 변경되었음을 systemd 에 알림
systemctl enable my-app # 앱 활성화 (자동 시작 허용)
systemctl disable my-app # 앱 비활성화 (자동 시작 해제)
systemctl start my-app # 중지된 앱 시작
systemctl stop my-app # 앱 중지
systemctl restart my-app # 앱 재시작

Bun by www.bunjs.com.cn 편집