Cách cài đặt nhiều phiên bản PHP với Nginx trên Ubuntu

3 tuần trước, Cài đặt VPS, Ubuntu, 108 Lượt xem

Đăng ký cập nhập video từ netweb.vn

Hướng dẫn này giúp bạn cài đặt và cấu hình hai VirtualHost trên máy chủ web Nginx với các phiên bản PHP khác nhau. VirtualHost đầu tiên sẽ hoạt động với PHP 5.6 và một VirtualHost khác sẽ chạy với PHP 7.2. Vì vậy, chỉ cần xem qua hướng dẫn này. Bạn cũng có thể sử dụng nhiều hơn hai phiên bản PHP với Nginx theo yêu cầu nhưng hướng dẫn này chỉ bao gồm hai phiên bản.

Cài đặt PHP

Để cài đặt các phiên bản PHP, chúng tôi sử dụng PPA được duy trì tại đây. Sử dụng một số lệnh dưới đây để thêm PPA vào hệ thống của bạn.

sudo apt install python-software-properties
sudo add-apt-repository ppa:ondrej/php

Đối với hướng dẫn này, tôi đã sử dụng PHP 5.6 và PHP 7.2 để định cấu hình nó với máy chủ web Nginx. Để sử dụng nhiều phiên bản PHP, chúng tôi sẽ sử dụng PHP FPM và FastCGI. Hãy cài đặt các gói sau trên hệ thống của bạn.

apt update
sudo apt install php5.6 php5.6-fpm
sudo apt install php7.2 php7.2-fpm

Bạn cũng có thể cần cài đặt các mô-đun PHP bổ sung. Đối với hướng dẫn, chỉ các gói trên là bắt buộc.

Sau khi cài đặt, các dịch vụ php-fpm sẽ được khởi động tự động. Sử dụng các lệnh sau để đảm bảo cả hai dịch vụ đều đang chạy.

sudo systemctl status php5.6-fpm
sudo systemctl status php7.2-fpm

Cài đặt Nginx

Máy chủ web Nginx là các gói có sẵn trong kho lưu trữ chính thức của Ubuntu. Khởi chạy thiết bị đầu cuối trên hệ thống của bạn hoặc đăng nhập bằng ssh cho các hệ thống từ xa. Thực hiện các lệnh sau để cài đặt phiên bản mới nhất có sẵn của máy chủ web Nginx.

sudo apt update 
sudo apt install nginx

Cấu hình Nginx

Chuẩn bị sẵn sàng cho việc cấu hình các trang web trong máy chủ Nginx. Với mục đích thử nghiệm, tôi đang định cấu hình hai trang web để hoạt động với hai phiên bản PHP-2 khác nhau. Đầu tiên, tạo hai thư mục trên máy chủ của bạn.

sudo mkdir /var/www/php56
sudo mkdir /var/www/php72

Bây giờ, tạo và index.php chứa hàm phpinfo () .

echo "<?php phpinfo(); ?>" > /var/www/php56/index.php
echo "<?php phpinfo(); ?>" > /var/www/php72/index.php

Sau đó, tạo khối máy chủ cho cả hai trang web trên Nginx. Phiên bản mới nhất của Nginx giữ các tệp cấu hình khối máy chủ trong thư mục /etc/nginx/sites-available. Tạo tệp cho máy chủ ảo đầu tiên và chỉnh sửa trong trình soạn thảo văn bản yêu thích của bạn.

sudo nano /etc/nginx/sites-available/php56.example.com

Thêm nội dung sau. Đảm bảo sử dụng Tên máy chủ và đường dẫn thư mục chính xác theo thiết lập của bạn. Trang web này được cấu hình để hoạt động với PHP 5.6.

# Application with PHP 5.6
#
server {
	listen 80;

	root /var/www/php56;
	index index.php;
	server_name php56.example.com;

	location ~* \.php$ {
		# With php-fpm unix sockets
		fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
		include         fastcgi_params;
		fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
		fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
	}
}

Tương tự, tạo tệp cấu hình VirtualHost thứ hai để hoạt động với PHP 7.2. Chỉnh sửa tệp cấu hình trong trình soạn thảo văn bản:

sudo nano /etc/nginx/sites-available/php72.example.com

Thêm nội dung sau vào tệp với ServerName và DocumentRoot thích hợp.

# Application with PHP 7.2
#
server {
	listen 80;

	root /var/www/php72;
	index index.php;
	server_name php72.example.com;

	location ~* \.php$ {
		# With php-fpm unix sockets
		fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
		include         fastcgi_params;
		fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
		fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
	}
}

Được rồi, Bạn đã tạo cả hai trang web trong Nginx của mình. Nhưng họ vẫn không hoạt động. Nginx giữ các trang đang hoạt động trong thư mục /etc/nginx/sites-enable. Bạn có thể chỉ cần tạo một liên kết tượng trưng cho cả hai tệp cấu hình đến thư mục này hoặc sử dụng lệnh dưới đây để thực hiện tương tự.

sudo ln -s /etc/nginx/sites-available/php56.example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/php72.example.com /etc/nginx/sites-enabled/

Sau khi thực hiện tất cả các thay đổi, hãy khởi động lại Nginx để tải lại các thay đổi cài đặt mới.

sudo systemctl restart nginx.service

Thiết lập của bạn đã được hoàn tất bây giờ. Chuyển sang bước tiếp theo để kiểm tra thiết lập của bạn.

Thiết lập thử nghiệm

Tất cả đã được làm xong. Bạn có thể truy cập cả hai trang web trong trình duyệt web favirote của mình. Bạn sẽ thấy rằng php56.example.com hiển thị phiên bản PHP 5.6 và php72.example.com đang hiển thị cấu hình PHP 7.2 .

Xin chúc mừng, Hệ thống của bạn đã sẵn sàng để lưu trữ các trang web với các phiên bản PHP khác nhau. Chúc bạn lưu trữ vui vẻ.

Bình luận trên facebook netweb.vn