본문 바로가기
vita_Linux

[Linux] Ubuntu 서버 내의 특정 PHP 파일을 서비스로 실행하기

by lemonvita 2024. 11. 21.
728x90
반응형

 

 

 

 

[Linux] Ubuntu 서버 내의 특정 PHP 파일을 서비스로 실행하기

 

 

 

728x90

 

 

 

Ubuntu 서버의 기본적인 설치와 세팅, 그리고 php를 이용한 기본 웹서비스도 되도록 마쳤다.

이번에는 특정 폴더에 있는 php파일을 계속 실행하도록 하는 서비스를 구축해야 한다.

이 서비스가 하는 일은 mariadb의 특정 테이블에 신규 row가 생기면 그에 따른 업무를 진행시키기 위함이다.

마치 db가 하는 trigger와 유사한 기능을 한다.

 

이번 글에서는 PHP CLI를 이용한 서비스 등록 방법에 대해 깔끔하게 기술하고자 한다.

 

 

 

 
 

1. PHP CLI 설치 확인 및 설치

 

PHP CLI(Command Line Interface)가 설치되어 있는지 확인이 필요하다.

 

만약 PHP CLI가 설치되어 있지 않으면 다음의 명령어로 직접 설치해 주어야 한다.

sudo apt update
sudo apt install php-cli

 

 

 

 

 

 
 

2. 서비스로 돌릴 PHP 파일 준비하기

 

서비스로 실행할 PHP 파일이 준비되어 있어야 하다.

예를 들어, 파일 경로가 /var/www/html/my_script.php라고 가정한다면 해당 PHP 파일에 실행 권한을 부여해 주어야 한다.

chmod +x /var/www/html/my_script.php

 

 

 

 

 
 

3. Systemd 서비스 파일 생성하기

 

Systemd 서비스 파일을 생성해 주자.

일반적으로는  /etc/systemd/system/ 디렉토리에 서비스 파일을 만든다.

예: my_php_service.service라는 이름으로 서비스 파일을 생성하고

sudo nano /etc/systemd/system/my_php_service.service

 

아래의 코드를 파일에 추가해 준다.

[Unit]
Description=PHP Script Service
After=network.target

[Service]
ExecStart=/usr/bin/php /var/www/html/my_script.php
Restart=always
User=www-data
Group=www-data

[Install]
WantedBy=multi-user.target

 

위 내용을 다시 뜯어보면 다음과 같다.

  • ExecStart: PHP 스크립트를 실행하는 명령어
  • Restart: 스크립트가 종료될 경우 다시 시작
  • User와 Group: 실행 사용자 및 그룹 (웹 서버에서 사용하는 www-data로 설정)
  • WantedBy: 시스템의 기본 실행 레벨에서 활성화

 

 

 



 

4. 서비스 파일 저장 및 권한 설정하기

 

파일을 저장하고 닫은 후, Systemd를 다시 로드한다.

 

sudo systemctl daemon-reload

 

 

 

 




 

5. 서비스 활성화 및 시작하기

 

서비스를 활성화하고 시작해 준다.

 

# 서비스 활성화 (부팅 시 자동 시작)
sudo systemctl enable my_php_service

# 서비스 시작
sudo systemctl start my_php_service

 

 

 

 





 

6. 서비스 상태 확인하기

 

비스가 제대로 실행 중인지 확인하려면 다음 명령어를 실행한다.

 

sudo systemctl status my_php_service

 

 

 

 






 

7. 로그 확인하기

 

PHP 파일에서 문제가 발생하거나 디버깅이 필요할 경우 Systemd 로그를 확인해 준다.

 

journalctl -u my_php_service -f

 

 

 

이상의 과정을 따라하면 특정 PHP 파일을 Ubuntu 서버에서 서비스로 실행할 수 있다.

추가로 PHP 파일 내에서 로그를 작성하거나 에러를 처리하는 로직을 추가해 주면 더욱 좋다는 건 안비밀이다.

728x90
반응형