NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
10/06/2023
Lượt xem

Hướng dẫn chạy nhiều phiên bản PHP với Apache và PHP-FPM trên CentOS 7

10/06/2023
15 phút đọc
Lượt xem

Đánh giá

5/5 - (56 bình chọn)

Apache và PHP-FPM có thể được kết hợp để lưu trữ nhiều ứng dụng web PHP sử dụng các phiên bản PHP khác nhau trên cùng một máy chủ để tiết kiệm chi phí. Khi sử dụng Apache với PHP-FPM, bạn có thể tùy chỉnh cấu hình để quản lý lưu trữ và triển khai ứng dụng. Để có thể vận hành nhiều phiên bản PHP trên một máy chủ bằng Apache và PHP-FPM trên CentOS 7, hãy cùng tìm hiểu bài viết dưới đây của Vietnix nhé.

Yêu cầu để có thể chạy nhiều phiên bản PHP với Apache và PHP-FPM trên CentOS 7

  • Một máy chủ CentOS 7 có ít nhất 1GB RAM, tài khoản user non-root có quyền sudo và tường lửa.
  • Apache web server được thiết lập và cấu hình trên CentOS 7. (Hướng dẫn chi tiết tại đây)
  • Một tên miền được cấu hình để trỏ đến máy chủ CentOS 7. Trong bài viết này sẽ sử dụng hai tên miền phụ, mỗi tên miền được chỉ định với một bản ghi A trong cài đặt DNS: site1.your_domainsite2.your_domain.

Nếu bạn đang tìm kiếm một nhà cung cấp VPS để chạy nhiều ứng dụng web, có thể tham khảo Vietnix. Vietnix hiện đang cung cấp các gói VPS có độ tin cậy cao, đa dạng hệ điều hành, khả năng mở rộng linh hoạt,…. phù hợp với nhu cầu của người dùng gồm: VPS Giá Rẻ, Cloud Server, VPS Cao Cấp, VPS GPU và VPS NVMe.

Đặc biệt, hạ tầng máy chủ ở Vietnix được bảo vệ bởi hệ thống chống tấn công DDoS chuyên nghiệp do chính Vietnix độc quyền phát triển, giúp nâng cao tính ổn định và bảo mật. Liên hệ ngay với Vietnix để được tư vấn chi tiết.

Bước 1: Cài đặt phiên bản PHP 7.0 và PHP 7.2 với PHP-FPM

Tiến hành cài đặt PHP với phiên bản 7.0 và 7.2. Kho lưu trữ SCL (Software Collections) duy trì nhiều phiên bản của PHP trên hệ thống CentOS 7. Nếu bạn muốn phiên bản PHP mới nhất nhưng không có sẵn trên SCL, hãy kiểm tra remi PPA (gói lưu trữ cá nhân).

Cài đặt kho lưu trữ SCL vào hệ thống của bạn với lệnh:

sudo yum install centos-release-scl -y

Xem những phiên bản PHP 7 nào có sẵn trên SCL bằng lệnh:

sudo yum list rh-php7[0-9].x86_64

Bạn sẽ thấy output như sau:

Output
Available Packages
rh-php70.x86_64                                 2.3-1.el7                                 centos-sclo-rh
rh-php71.x86_64                                 1-1.el7                                   centos-sclo-rh
rh-php72.x86_64                                 1-2.el7                                   centos-sclo-rh
rh-php73.x86_64                                 1-1.el7                                   centos-sclo-rh

Thiết lập phiên bản PHP 7.0 bằng cách cài đặt rh-php70rh-php70-php-fpm:

sudo yum install rh-php70 rh-php70-php-fpm -y
  • rh-php70 là một metapackage chạy các ứng dụng PHP.
  • rh-php70-php-fpm cung cấp trình thông dịch Fast Process Manager chạy dưới dạng daemon và nhận các yêu cầu Fast / CGI.

Tiếp theo đến phiên bản PHP 7.2. Hãy cài đặt rh-php72rh-php72-php-fpm.

sudo yum install rh-php72 rh-php72-php-fpm -y

Kế tiếp, tiến hành chạy các lệnh sau để bắt đầu sử dụng cả hai phiên bản:

sudo scl enable rh-php70 bash
sudo scl enable rh-php72 bash

Theo mặc định, cả hai phiên bản PHP đều listening trên port 9000. Nhưng trong hướng dẫn này sẽ thực hiện chạy hai phiên bản cùng một lúc. Do đó sẽ chỉ định hai port mới:

Để thực hiện thao tác này, bạn có thể mở /etc/opt/rh/rh-php70/php-fpm.d/www.conf trong trình soạn thảo của bạn và thay đổi toàn bộ port từ 9000 thành 9002. Sau đó lưu và đóng file.

Lặp lại thao tác trên cho /etc/opt/rh/rh-php72/php-fpm.d/www.conf, tuy nhiên ở file này bạn sẽ đổi toàn bộ port từ 9000 thành 9003. Ngoài ra, bạn cũng có thể sử dụng hai lệnh sed này để thay thế 2 thao tác trên:

sudo sed -i 's/:9000/:9002/' /etc/opt/rh/rh-php70/php-fpm.d/www.conf
sudo sed -i 's/:9000/:9003/' /etc/opt/rh/rh-php72/php-fpm.d/www.conf

Đến đây, bạn đã chỉ định một port riêng cho mỗi phiên bản PHP của mình. Tuy nhiên, trước khi áp dụng các thay đổi trên, bạn phải thêm các port vào cấu hình SELinux của mình.

SELinux là từ viết tắt của Security Enhanced Linux và nó được kích hoạt theo mặc định trên CentOS 7. Bạn phải thêm các port 90029003 vào database SELinux và gán vào httpd, nếu không các ứng dụng của bạn sẽ không thể hoạt động. Sử dụng lệnh semanage để thực hiện tác vụ này:

sudo semanage port -a -t http_port_t -p tcp 9002
sudo semanage port -a -t http_port_t -p tcp 9003

-a cho biết rằng bạn đang thêm một đối tượng vào database. -t chỉ định loại đối tượng, trong trường hợp này là http_port_t. Và -p chỉ định giao thức tcp.

Tới đây, bạn có thể bắt đầu và kích hoạt PHP. Bắt đầu với rh-php70-php-fpm và cho phép nó bắt đầu khi khởi động:

sudo systemctl start rh-php70-php-fpm
sudo systemctl enable rh-php70-php-fpm

Tiếp theo, xác định trạng thái của rh-php70-php-fpm:

sudo systemctl status rh-php70-php-fpm

Bạn sẽ nhận được output như sau:

Output
● rh-php70-php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/rh-php70-php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-04-18 04:49:59 UTC; 1min 6s ago
 Main PID: 1852 (php-fpm)
   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
   CGroup: /system.slice/rh-php70-php-fpm.service
           ├─1852 php-fpm: master process (/etc/opt/rh/rh-php70/php-fpm.conf)
           ├─1853 php-fpm: pool www
           ├─1854 php-fpm: pool www
           ├─1855 php-fpm: pool www
           ├─1856 php-fpm: pool www
           └─1857 php-fpm: pool www

Apr 18 04:49:59 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Starting The PHP FastCGI Process Manager...
Apr 18 04:49:59 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Started The PHP FastCGI Process Manager.

Thực hiện lại quá trình này đối với phiên bản PHP 7.2, khởi động rh-php72-php-fpm và cho phép nó bắt đầu khi khởi động:

sudo systemctl start rh-php72-php-fpm
sudo systemctl enable rh-php72-php-fpm

Tiếp theo, xác định trạng thái của rh-php72-php-fpm:

sudo systemctl status rh-php72-php-fpm

Bạn cũng sẽ nhận được một output khác:

Output
● rh-php72-php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/rh-php72-php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-04-18 04:50:04 UTC; 1min 59s ago
 Main PID: 1876 (php-fpm)
   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
   CGroup: /system.slice/rh-php72-php-fpm.service
           ├─1876 php-fpm: master process (/etc/opt/rh/rh-php72/php-fpm.conf)
           ├─1877 php-fpm: pool www
           ├─1878 php-fpm: pool www
           ├─1879 php-fpm: pool www
           ├─1880 php-fpm: pool www
           └─1881 php-fpm: pool www

Apr 18 04:50:04 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Starting The PHP FastCGI Process Manager...
Apr 18 04:50:04 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Started The PHP FastCGI Process Manager.

Bước 2: Tạo cấu trúc thư mục cho cả hai trang web

Bạn tạo một document root và một trang index cho mỗi trang web trong số hai trang web của bạn.

Đầu tiên, tạo document root cho cả site1.your_domain và site2.your_domain:

sudo mkdir /var/www/site1.your_domain
sudo mkdir /var/www/site2.your_domain

Theo mặc định, Apache web server hoạt động như một apache user và một apache group. Vì vậy, / var / www/ và tất cả các file và thư mục con của nó cũng phải thuộc sở hữu của chúng. Thực thi các lệnh sau để xác minh quyền sở hữu và quyền truy cập ở mỗi thư mục root của từng trang web của bạn:

sudo chown -R apache:apache /var/www/site1.your_domain
sudo chown -R apache:apache /var/www/site2.your_domain
sudo chmod -R 755 /var/www/site1.your_domain
sudo chmod -R 755 /var/www/site2.your_domain

Lệnh chown thay đổi quyền sở hữu hai thư mục thành apache user và apache group. Lệnh chmod thay đổi các quyền truy cập được liên kết với user và group.

Bạn tạo file info.php bên trong mỗi thư mục root của trang web. Việc này sẽ hiển thị thông tin phiên bản PHP của mỗi trang web. Thực hiện với site1:

sudo vi /var/www/site1.your_domain/info.php

Thêm dòng lệnh sau:

<?php phpinfo(); ?>

Lưu và đóng file. Sau đó copy file info.php vào site2:

sudo cp /var/www/site1.your_domain/info.php /var/www/site2.your_domain/info.php

Như vậy web server của bạn đã có các thư mục root để cung cấp data cho khách truy cập.

Bước 3: Cấu hình Apache cho cả hai trang web

Tạo file config cho máy ảo trong thư mục /etc/httpd/conf.d/. Điều này sẽ cho phép hai trang web của bạn hoạt động đồng thời với hai phiên bản PHP khác nhau.

Đầu tiên hãy tạo một file config máy chủ ảo mới cho site1.your_domain. Ở đây bạn sẽ sử dụng phiên bản PHP 7.0 để thực hiện việc cài đặt cấu hình:

sudo vi /etc/httpd/conf.d/site1.your_domain.conf

Thực hiện thêm nội dung như hướng dẫn dưới đây. Đảm bảo đường dẫn thư mục trang web, tên máy chủ, port và phiên bản PHP khớp với các thiết lập của bạn:

<VirtualHost *:80>
     ServerAdmin admin@site1.your_domain
     ServerName site1.your_domain
     DocumentRoot /var/www/site1.your_domain
     DirectoryIndex info.php
     SetHandler "proxy:fcgi://127.0.0.1:9002
     ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
     AddHandler php70-fcgi .php
     Action php70-fcgi /cgi-bin/php70.fcgi
     ErrorLog /var/log/httpd/site1.your_domain_error.log
     CustomLog /var/log/httpd/site1.your_domain_access.log combined
</VirtualHost>

Đối với DocumentRoot, bạn đang chỉ định đường dẫn của thư mục root của trang web. Ở mục ServerAdmin, bạn đang thêm một email mà admin trang web your_domain có thể truy cập. Đối với ServerName, bạn đang thêm url cho subdomain đầu tiên. Ở mục SetHandler, bạn chỉ định port 9002. Các cài đặt còn lại cũng cấu hình dịch vụ của bạn để triển khai PHP 7.0.

Sau đó hãy lưu và đóng file.

Tiếp theo, tạo một file config máy chủ ảo mới cho site2.your_domain. Thực hiện thao thác tương tự đối với phiên bản PHP 7.2 :

sudo vi /etc/httpd/conf.d/site2.your_domain.conf

Thêm các nội dung như hướng dẫn dưới đây. Đảm bảo đường dẫn thư mục trang web, tên máy chủ, cổng và phiên bản PHP khớp với thông tin của bạn:

<VirtualHost *:80>
     ServerAdmin admin@site2.your_domain
     ServerName site2.your_domain
     DocumentRoot /var/www/site2.your_domain
     DirectoryIndex info.php
     SetHandler "proxy:fcgi://127.0.0.1:9003
     ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
     AddHandler php72-fcgi .php
     Action php72-fcgi /cgi-bin/php72.fcgi
     ErrorLog /var/log/httpd/site2.your_domain_error.log
     CustomLog /var/log/httpd/site2.your_domain_access.log combined
</VirtualHost>

Lưu và đóng file sau khi bạn hoàn tất. Kiểm tra file config Apache có lỗi cú pháp không bằng cách thực hiện lệnh dưới đây:

sudo apachectl configtest

Nếu thực hiện đúng, bạn sẽ nhận được output:

Output
Syntax OK

Cuối cùng, khởi động lại Apache để áp dụng các thay đổi của bạn:

sudo systemctl restart httpd

Bước 4: Kiểm tra cả hai trang web

Đến đây bạn đã config hai trang web để chạy hai phiên bản khác nhau của PHP. Bây giờ, hãy kiểm tra kết quả.

Mở trình duyệt web của bạn và truy cập cả hai trang web http://site1.your_domainhttp://site2.your_domain. Bạn sẽ thấy hai giao diện như thế này:

Giao diện của PHP Ver 7.0.27
Giao diện của PHP Ver 7.0.27
Giao diện của PHP Ver 7.2.24
Giao diện của PHP Ver 7.2.24

Hãy chú ý phần tiêu đề, site1.your_domain triển khai PHP phiên bản 7.0, còn site2.your_domain triển khai phiên bản PHP 7.2.

Bây giờ bạn đã hoàn thành việc kiểm tra các trang web của mình, hãy xóa các file info.php. Vì nó chứa thông tin quan trọng về máy chủ của bạn và có thể bị rò rỉ và gây ra lỗ hổng bảo mật. Thực hiện việc xóa các file như sau:

sudo rm -rf /var/www/site1.your_domain/info.php
sudo rm -rf /var/www/site2.your_domain/info.php

Bây giờ bạn có CentOS 7 server xử lý hai trang web với hai phiên bản PHP khác nhau. Tuy nhiên, PHP-FPM không giới hạn trong một ứng dụng này.

Với 11 năm kinh nghiệm, VPS Vietnix được đông đảo người dùng lựa chọn bởi độ ổn định cao, tốc độ load web nhanh chóng, có hạ tầng Anti DDoS chuyên biệt và đội ngũ support kỹ thuật luôn túc trực sẵn sàng hỗ trợ 24/7.

Vietnix luôn chú trọng đầu tư vào hạ tầng và nhân sự chất lượng nhằm mang đến cho khách hàng một dịch vụ ổn định nhất. Tính đến thời điểm hiện tại Vietnix tự hào vì đã đạt được những con số ấn tượng như sau:

  • 50.000 khách hàng.
  • 97% khách hàng đánh giá 5* và giới thiệu dịch vụ sau khi sử dụng.
  • 89% khách hàng duy trì dịch vụ đến thời điểm hiện tại.
  • 100.000 dịch vụ được kích hoạt.

Nhanh tay đăng ký VPS tốc độ cao Vietnix để trải nghiệm dịch vụ ổn định, tốc độ cao, hỗ trợ nhanh chóng với nhiều ưu đãi hấp dẫn.

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Hotline: 1800 1093.
  • Email: sales@vietnix.com.vn

Lời kết

Như vậy bạn đã kết hợp được virtual hosts và PHP-FPM để phục vụ cho nhiều trang web và nhiều phiên bản PHP trên một máy chủ duy nhất. Nếu máy chủ của bạn có đủ khả năng xử lý thì số lượng trang web PHP và phiên bản PHP mà dịch vụ Apache có thể xử lý là không giới hạn. Cảm ơn các bạn đọc bài hướng dẫn về cách chạy nhiều phiên bản PHP với Apache và PHP-FPM trên CentOS 7, nếu có góp ý hay thắc mắc nào hãy để lại bình luận bên dưới nhé.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Black Friday Hosting & VPS

Chương trình kết thúc sau

Giảm giá 40% hosting VPS

50 coupon mỗi ngày

Gia hạn giá không đổi

NHẬN DEAL NGAY
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG