Cách chạy nhiều phiên bản PHP với apache trên linux CentOS 7

23.03.2020

5.0/5 (1 Reviews)

Hướng dẫn cài multi php, apache trên centos 7. Mỗi Version php chạy cho 1 website nhất định, Có phải bạn đang cần cài riêng php cho một vài web?

    Cách chạy nhiều phiên bản PHP với apache trên linux CentOS 7

    Trong hướng dẫn hôm nay, chúng tôi muốn trình bày cách chạy nhiều phiên bản PHP với apache trên CentOS 7 linux. Nó rất thực tế và phổ biến để có nhiều phiên bản php và chạy nó đồng thời với apache trên một máy chủ. có thể bạn có một tập lệnh php và muốn kiểm tra nó với nhiều phiên bản php. trong trường hợp như vậy bài viết này là dành cho bạn.

    Nếu bạn đang Thiết kế website chạy bằng PHP hay đang học lập trình, học DevOps thì đây sẽ là vấn đề bạn sẽ  gặp phải trong tương lai nhé.

    Làm thế nào nó có thể chạy nhiều phiên bản.

    Khi chúng tôi yêu cầu một trang .php từ apache, nó sẽ tham khảo ứng dụng của SetHandler application/x-httpd-php. Để biết mô-đun nào sẽ được tải để xử lý tập lệnh php. vấn đề là ở đây, php nằm dưới sự kiểm soát của apache.

    Trong kịch bản của chúng tôi, mọi thứ đi khác nhau. ở đây chúng tôi sử dụng quy trình php độc lập được gọi là php-fpm. php-fpm là một trình nền php được cấu hình để đáp ứng các yêu cầu FCGI. vì vậy chúng tôi bắt đầu và dừng php-fpm và apache một cách độc lập.

    Đây là môi trường của tôi trong ví dụ này:

    OS: CentOS 7 linux on VMWare
    Firewall: enabled
    SELinux: enforcing
    PHP versions: 5.6 and 7.2

    Cài đặt thư viện

    Trước khi cài đặt và chạy hai phiên bản php, chúng ta cần cài đặt apache và một số kho lưu trữ. để thực hiện các lệnh sau:

    # yum install httpd
    # yum install epel-release
    # yum install yum-utils

    Cài đặt nhiều phiên bản php:

    php-fpm có sẵn trong kho remi. Vì vậy, chúng tôi cài đặt repo này và sau đó sau nhiều phiên bản php.

    # yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    # yum install php56 
    # yum install php72
    # yum install php56-php-fpm
    # yum install php72-php-fpm

    Cài những Module cần thiết để chạy website nhé.

    # For PHP 7.2
    yum install php72 php72-php-fpm php72-php-mysqlnd php72-php-opcache php72-php-xml php72-php-xmlrpc php72-php-gd php72-php-mbstring php72-php-json
    # For PHP 5.6 
    yum install php56 php56-php-fpm php56-php-mysqlnd php56-php-opcache php56-php-xml php56-php-xmlrpc php56-php-gd php56-php-mbstring php56-php-json
    # Copyright by: https://lptech.asia

    sau đó phải đảm bảo cả hai service php đều stop nhé.

    # systemctl stop php56-php-fpm
    # systemctl stop php72-php-fpm

    Cấu hình SELinux

    Linux được tăng cường bảo mật nâng cao an toàn được gọi là SELinux. SELinux là một kiến ​​trúc bảo mật cho các hệ thống Linux®, cho phép các quản trị viên có quyền kiểm soát nhiều hơn đối với những người có thể truy cập hệ thống. Ban đầu nó được Cơ quan An ninh Quốc gia Hoa Kỳ (NSA) phát triển thành một loạt các bản vá cho nhân Linux bằng Mô-đun Bảo mật Linux (LSM).

    RedHat bật Selinux theo mặc định vì an toàn hơn. Gần như mọi nhà cung cấp sử dụng các sản phẩm có nguồn gốc Redhat đều tắt Selinux vì họ không muốn phải đặt thời gian (và do đó là tiền) để tìm hiểu lý do tại sao thứ đó không hoạt động. Người Redhat / Fedora đã bỏ ra rất nhiều thời gian và công sức để biến Selinux trở thành một lựa chọn khả thi trong Doanh nghiệp, nhưng không có nhiều tổ chức khác thực sự quan tâm đến bảo mật của bạn. (Họ quan tâm đến bảo mật của họ và danh tiếng bảo mật của sản phẩm, đó là một điều hoàn toàn khác.)

    để cho phép selinux chạy các tập lệnh php-fpms, hãy chạy các lệnh sau:

    # semanage port -a -t http_port_t -p tcp 9072
    # semanage port -a -t http_port_t -p tcp 9056

    Cấu hình php-fpm:

    Mặc định, mỗi phiên bản php-fpm đang nghe trên cổng 9000. vì chúng tôi muốn chạy nhiều phiên bản php, chúng tôi cần thay đổi cổng mặc định:

    # sed -i 's/:9000/:9056/' /etc/opt/remi/php56/php-fpm.d/www.conf
    # sed -i 's/:9000/:9072/' /etc/opt/remi/php72/php-fpm.d/www.conf

    bây giờ chạy hai service php-fpm lên.

    # systemctl start php72-php-fpm
    # systemctl start php56-php-fpm

    bây giờ chúng ta cần tạo trình thực thi tập lệnh php để gọi php56-cgi và php72-cgi:

    cat > /var/www/cgi-bin/php56.fcgi << EOF
    #!/bin/bash
    exec /bin/php56-cgi
    EOF
    
    cat > /var/www/cgi-bin/php72.fcgi << EOF
    #!/bin/bash
    exec /bin/php72-cgi
    EOF

    Đây là tôi dùng lệnh command-line để chèn nội dung vào file thôi. Bạn có thể sửa file trực tiếp trên server bằng VIM, SFTP hoặc bằng các công cụ như Winscp ...

    Tạo 2 file mới tại đường dẫn: 

    /var/www/cgi-bin/php72.fcgi 

    với nội dung: 

    #!/bin/bash
    exec /bin/php72-cgi

    Sau đó chúng ta thiết lập bit thực thi trên cả hai tập lệnh:

    # sudo chmod 755 /var/www/cgi-bin/php56.fcgi
    # sudo chmod 755 /var/www/cgi-bin/php72.fcgi

    Cấu hình apache:

    Ở đây LPTech tạo ra hai đường dẫ đến source php để chạy 2 phiên bản php khác sau ở 2 thư mục khác nhau. Một cho php-fpm56 và một cho php-fpm72. bạn có thể thay đổi những đường dẫn này bằng cách riêng của mình, không được thì gửi mail cho LPTech nhé:

    cat > /etc/httpd/conf.d/php.conf << EOF
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    AddHandler php56-fcgi .php
    Action php56-fcgi /cgi-bin/php56.fcgi
    Action php72-fcgi /cgi-bin/php72.fcgi
    
    <Directory /home/lptech/php56>
        DirectoryIndex index.php
        AllowOverride all
        Require all granted
    </Directory>
        <Directory /home/lptech/php72>
        DirectoryIndex index.php
        AllowOverride all
        Require all granted
    </Directory>
    EOF

    sau đó chúng tôi đặt hai tập lệnh phpinfo() trên hai đường dẫn này để kiểm tra:

    mkdir -p /home/lptech/php56
    mkdir -p /home/lptech/php72
    echo "<?php phpinfo(); ?>" > /home/lptech/php56/index.php
    echo "<?php phpinfo(); ?>" > /home/lptech/php72/index.php
    echo "AddHandler php72-fcgi .php" > /home/lptech/php72/.htaccess
    echo "AddHandler php56-fcgi .php" > /home/lptech/php56/.htaccess

    Start services

    systemctl enable httpd
    systemctl enable php56-php-fpm
    systemctl enable php72-php-fpm
    systemctl start httpd
    systemctl start php56-php-fpm
    systemctl start php72-php-fpm

    Cấu hình tường lửa

    firewall-cmd --permanent --add-service=http
    firewall-cmd --reload

    Bây giờ hãy tham khảo các địa chỉ này và bạn phải xem trang php_info với hai phiên bản khác nhau:

    http://127.0.0.1/php56
    http://127.0.0.1/php72

     
    CÓ THỂ BẠN QUAN TÂM

    Bài Viết Cùng Chuyên Mục

    XEM THÊM
    thumbnail

    LPStack Server: Giải pháp thay thế XAMPP và MAMP năm 2026

    10.03.2026

    Bạn đã chán ngấy XAMPP hay MAMP chậm chạp? Khám phá LPStack Server – Môi trường Local Development siêu nhẹ của người Việt với Auto Vhost, Public Tunnel, chuyển đổi PHP 1-click và quản lý Database Native chuyên nghiệp

    thumbnail

    Hướng Dẫn Tạo Trò Chơi Cờ Caro Nâng Cao bằng HTML

    19.03.2025

    Chào các bạn! Trong bài viết này, chúng ta sẽ cùng nhau xây dựng một trò chơi Cờ Caro đơn giản nhưng có nhiều tính năng thú vị như giới hạn nước đi, pháo hoa khi chiến thắng, chọn chế độ chơi và đếm thời gian.

    thumbnail

    Grok AI: Giới thiệu chi tiết về chatbot của Elon Musk

    04.03.2025

    Grok là một chatbot AI tiên tiến, được phát triển bởi xAI, công ty do Elon Musk sáng lập. Ra mắt lần đầu vào tháng 11/2023, Grok được thiết kế để cạnh tranh với các mô hình AI nổi tiếng như ChatGPT

    thumbnail

    Hướng dẫn tạo Livechat trả lời bằng AI Grok của X

    04.03.2025

    Hướng dẫn kỹ thuật tạo Livechat AI bằng HTML, CSS, JavaScript và PHP Dưới đây là hướng dẫn từng bước để xây dựng một ứng dụng livechat AI đơn giản. Chúng ta sẽ có giao diện frontend (HTML, CSS, JS) và backend (PHP) xử lý tin nhắn.

    thumbnail

    CSS4 Variables và Sass bạn có biết ?

    27.09.2022

    CSS4 Variables và Sass bạn có biết ? Cùng tôi đọc qua bài viết này để biết thêm một số kiến thức thú vụ từ SASS , CSS4 bạn nhé.