A. Điều kiện
- Server đã cài Apache theo gói LAMP. Các bạn có thể chưa cần cài PHP theo hướng dẫn trong bài này. Hướng dẫn cài đặt LAMP (Linux, Apache, MySQL, PHP) trên CentOS 7
- Có 2 domain đã cấu hình Virtual Host theo bài: Thiết lập Virtual Host trên Apache trong CentOS 7
- Domain vnexpress.tech sẽ chạy PHP 7.0
- Domain greatlink.tech sẽ chạy PHP 7.2
B. Cài đặt
Bước 1: Cài đặt SCL repository
sudo yum install centos-release-scl -y
Bước 2: Xem tên các gói của các phiên bản PHP7 bằng lệnh
sudo yum list rh-php7[0-9].x86_64
- Lưu ý các mã gói/Folder tương ứng với các phiên bản PHP
- php70 – PHP 7.0
- php71 – PHP 7.1
- php72 – PHP 7.2
- php73 – PHP 7.3
Bước 3: Tiến hành cài đặt PHP phiên bản phù hợp vào hệ thống
- Lưu ý Trong bài này sẽ hướng dẫn thiết lập 2 site cho PHP 7.0 và PHP 7.2. Còn các bạn sẽ tự tuỳ chỉnh theo nhu cầu của các bạn
- Cài PHP 7.0:
sudo yum install rh-php70 rh-php70-php-fpm -y
- Cài PHP 7.1
sudo yum install rh-php71 rh-php71-php-fpm -y
- Cài PHP 7.2:
sudo yum install rh-php72 rh-php72-php-fpm -y
- Cài PHP 7.3
sudo yum install rh-php73 rh-php73-php-fpm -y
Bước 4: Tiến hành kích hoạt PHP
- PHP 7.0
sudo scl enable rh-php70 bash
- PHP 7,1
sudo scl enable rh-php71 bash
- PHP 7,2
sudo scl enable rh-php72 bash
- PHP 7.3
sudo scl enable rh-php73 bash
Bước 5: Đổi cổng cho PHP
- Bình thường PHP sẽ chạy trên cổng 9000. Tuy nhiên ở đây tôi muốn 2 phiên bản chạy cùng lúc do vậy tôi sẽ cho PHP 7.0 chạy ở cổng 9002 và PHP 7.2 chạy ở cổng 9003
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
- Cấp quyền trong SELinux
sudo semanage port -a -t http_port_t -p tcp 9002 sudo semanage port -a -t http_port_t -p tcp 9003
Bước 6: Kích hoạt PHP 7.0 và PHP 7.2
- Đối với PHP 7.0
sudo systemctl start rh-php70-php-fpm sudo systemctl enable rh-php70-php-fpm
- Đối với PHP 7.2
sudo systemctl start rh-php72-php-fpm sudo systemctl enable rh-php72-php-fpm
Bước 6: Cấu hình Folder lưu mã nguồn
- Ở bài Thiết lập Virtual Host trên Apache trong CentOS 7 đường dẫn 2 folder mã nguồn của 2 site lần lượt là
- /var/www/vnexpress.tech/html
- /var/www/greatlink.tech/html
- Cấp quyền cho apache
sudo chown -R apache:apache /var/www/vnexpress.tech/html sudo chown -R apache:apache /var/www/greatlink.tech/html
- Cấp quyền 755
sudo chmod -R 755 /var/www/vnexpress.tech/html sudo chmod -R 755 /var/www/greatlink.tech/html
- Tạo file info.php để test
sudo nano /var/www/vnexpress.tech/html/info.php
Nhập nội dung Files
<?php phpinfo(); ?>
copy sang folder còn lại
sudo cp /var/www/vnexpress.tech/html/info.php /var/www/greatlink.tech/html/info.php
Bước 7
Sửa file cấu hình Apache.
Ở bài Thiết lập Virtual Host trên Apache trong CentOS 7 chúng ta đã có 2 file cấu hình được lưu tại /etc/httpd/sites-available
Giờ chúng ta sẽ sửa chúng để chúng hoạt động với PHP
Ví dụ site chạy PHP 7.0 ở cổng 9002 (đã cấu hình ở trên) thì chúng ta sẽ thêm những dòng sau vào giữa block <Virutal Host>
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
Tương tự với site chạy PHP 7.2 ở cổng 9003
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
Với các bạn đã cài Let’s Encrypt thì có thêm 2 file -le dành cho SSL thì các bạn sửa hết nhé
Bước 8: Kiểm tra cấu hình xem bị sai đâu không
sudo apachectl configtest
Thấy báo Syntax OK là được
Bước 9: Khởi chạy lại Apache
sudo systemctl restart httpd
Bước 10: Truy cập vào đường dẫn domain/info.php để kiểm tra PHP đang chạy