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.
- Khởi tạo một phiên
screen
mới:
- 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
- Để 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
.
- Khi bạn muốn quay lại phiên
screen
, bạn chỉ cần chạy lệnh:
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.
- Khởi tạo một phiên
tmux
mới:
- Khởi chạy máy chủ PHP bên trong
tmux
:
php -S 123.123.123.123:8000 -t /path/to/your/project
- Để 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
.
- Quay lại phiên
tmux
bằng lệnh:
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:
sudo apt update
sudo apt install supervisor
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_logfile
và stdout_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.