Trong bài viết này, bạn sẽ học cách khởi tạo và quản lý một máy chủ PHP đơn giản mà không cần sử dụng Apache hoặc Nginx. Chúng ta sẽ đi từ những khái niệm cơ bản, sử dụng lệnh php -S, cho đến các phương pháp nâng cao như nohup, screen, tmux, và đặc biệt là quản lý máy chủ với Supervisor để máy chủ PHP có thể hoạt động liên tục, kể cả khi bạn tắt terminal.

Khởi Tạo Máy Chủ PHP Nội Bộ

Một trong những tính năng thú vị của PHP là bạn có thể sử dụng chính nó để tạo một máy chủ HTTP đơn giản mà không cần phải cấu hình thêm Apache hoặc Nginx. Đây là cách lý tưởng để thử nghiệm các ứng dụng PHP cục bộ trên môi trường phát triển.

Chúng ta sẽ sử dụng lệnh sau để khởi tạo máy chủ PHP:

php -S localhost:8000 -t /path/to/your/project

Trong đó:

  • -S localhost:8000: Tạo một máy chủ HTTP trên localhost tại cổng 8000.
  • -t /path/to/your/project: Chỉ định thư mục gốc của dự án.

Chạy Máy Chủ Trên Địa Chỉ IP VPS

Khi bạn làm việc trên VPS, thay vì sử dụng localhost, bạn có thể thay thế bằng địa chỉ IP công cộng của VPS. Ví dụ:

php -S 123.123.123.123:8000 -t /path/to/your/project

Lệnh trên sẽ khởi chạy một máy chủ HTTP trên địa chỉ IP của VPS và cổng 8000. Bạn có thể truy cập vào ứng dụng từ bất kỳ máy tính nào với địa chỉ http://123.123.123.123:8000.

Tuy nhiên, vấn đề là khi bạn tắt terminal, quá trình này sẽ bị dừng. Để giải quyết vấn đề này, chúng ta sẽ sử dụng một số công cụ để quản lý quá trình chạy máy chủ PHP.

Quản Lý Máy Chủ PHP Khi Tắt Terminal

Khi bạn khởi chạy máy chủ PHP qua lệnh php -S, nó sẽ hoạt động cho đến khi bạn tắt terminal hoặc thoát khỏi phiên SSH. Điều này là do tiến trình máy chủ PHP phụ thuộc vào terminal mà nó được khởi chạy.

Để giữ máy chủ PHP hoạt động ngay cả khi bạn tắt terminal, bạn có thể sử dụng một trong các giải pháp sau đây:

Sử dụng nohup

Lệnh nohup (no hangup) cho phép bạn chạy một lệnh trong nền và giữ cho nó hoạt động kể cả khi bạn thoát khỏi terminal.

Ví dụ:

nohup php -S 123.123.123.123:8000 -t /path/to/your/project > output.log 2>&1 &
  • nohup: Chạy lệnh mà không bị gián đoạn khi phiên terminal bị đóng.
  • > output.log: Chuyển hướng đầu ra của tiến trình vào file output.log.
  • 2>&1: Gộp cả lỗi và đầu ra chuẩn thành một file.
  • &: Chạy tiến trình ở chế độ nền (background).

Khi sử dụng nohup, tiến trình sẽ tiếp tục chạy ngay cả khi bạn thoát khỏi terminal hoặc phiên SSH. Bạn có thể kiểm tra log của máy chủ PHP trong file output.log để xem các lỗi hoặc thông tin kết nối.

Sử dụng screen

screen là một trình quản lý phiên terminal, cho phép bạn tạo ra nhiều phiên ảo mà có thể tách ra và tái kết nối lại khi cần.

  1. Khởi tạo một phiên screen mới:
screen
  1. Sau đó, khởi chạy máy chủ PHP bên trong phiên screen:
php -S 123.123.123.123:8000 -t /path/to/your/project
  1. Để tách khỏi phiên screen mà không làm gián đoạn tiến trình, nhấn tổ hợp phím Ctrl + A sau đó nhấn D.
  2. Khi bạn muốn quay lại phiên screen, bạn chỉ cần chạy lệnh:
screen -r

screen giúp bạn quản lý phiên máy chủ PHP một cách linh hoạt và dễ dàng tái kết nối lại sau khi đã tắt terminal.

Sử dụng tmux

tmux là một trình quản lý terminal khác, tương tự như screen, cho phép bạn quản lý các phiên terminal và giữ cho tiến trình hoạt động ngay cả khi terminal bị tắt.

  1. Khởi tạo một phiên tmux mới:
tmux
  1. Khởi chạy máy chủ PHP bên trong tmux:
php -S 123.123.123.123:8000 -t /path/to/your/project
  1. Để tách khỏi phiên tmux mà không làm gián đoạn tiến trình, nhấn Ctrl + B sau đó nhấn D.
  2. Quay lại phiên tmux bằng lệnh:
tmux attach

Sử Dụng Supervisor Để Quản Lý Máy Chủ PHP

Supervisor là một công cụ mạnh mẽ cho phép bạn quản lý các tiến trình trên hệ thống một cách tự động và dễ dàng. Nó có thể tự động khởi động lại các tiến trình nếu chúng bị dừng hoặc khi VPS được khởi động lại.

Cài Đặt Supervisor

Nếu Supervisor chưa được cài đặt trên hệ thống của bạn, hãy cài đặt nó bằng cách:

  • Trên Ubuntu/Debian:
sudo apt update
sudo apt install supervisor
  • Trên CentOS/RHEL:
sudo yum install epel-release
sudo yum install supervisor

Cấu Hình Supervisor Để Chạy Máy Chủ PHP

Để Supervisor quản lý máy chủ PHP của bạn, bạn cần tạo một file cấu hình riêng cho nó.

Tạo file cấu hình tại /etc/supervisor/conf.d/php-server.conf:

sudo nano /etc/supervisor/conf.d/php-server.conf

Thêm nội dung sau vào file:

[program:php-server]
command=php -S 123.123.123.123:8000 -t /path/to/your/project
directory=/path/to/your/project
autostart=true
autorestart=true
stderr_logfile=/var/log/php-server.err.log
stdout_logfile=/var/log/php-server.out.log
user=www-data
  • command: Lệnh để khởi động máy chủ PHP.
  • directory: Thư mục gốc của dự án.
  • autostart=true: Tự động khởi động khi Supervisor được khởi động.
  • autorestart=true: Tự động khởi động lại nếu tiến trình gặp lỗi.
  • stderr_logfilestdout_logfile: Ghi log lỗi và thông tin vào file.
  • user=www-data: Chạy tiến trình dưới tài khoản người dùng www-data.

Quản Lý Tiến Trình Với Supervisor

Sau khi tạo cấu hình, bạn cần tải lại Supervisor để nhận cấu hình mới:

sudo supervisorctl reread
sudo supervisorctl update

Bạn có thể khởi động hoặc kiểm tra trạng thái của máy chủ PHP qua lệnh:

sudo supervisorctl start php-server
sudo supervisorctl status php-server

Supervisor là một giải pháp mạnh mẽ và linh hoạt để quản lý các tiến trình trên hệ thống, đảm bảo máy chủ PHP luôn hoạt động mà không cần phải lo lắng về việc khởi động lại thủ công khi gặp sự cố hoặc tắt VPS.

Tùy vào nhu cầu của bạn, việc lựa chọn giữa các công cụ như nohup, screen, tmux, hoặc Supervisor sẽ giúp máy chủ PHP của bạn hoạt động liên tục và ổn định.