Cài đặt server Apache có thể chạy đồng thời nhiều phiên bản PHP khác nhau. Cách này sẽ giúp bạn tránh khỏi những bất tiện chẳng hạn khi muốn chuyển đổi về hệ thống cũ để kiểm tra chức năng.
xcode-select –install
Để cài HomeBrew, hãy bật Terminal và sử dụng câu lệnh sau:
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
Sau khi câu lệnh được thực thi tức là bạn đã cài đặt thành công HomeBrew:
1. Cài đặt Apache
Với Mac OS X thì Apache đã được cài sẵn và việc của chúng ta chính là bật lên và sử dụng. Khởi động Apache trong Mac OS X bằng cách sử dụng câu lệnh dưới đây:
$ sudo apachectl start
Nếu bạn muốn ngừng Apache thì sử dụng lệnh:
$ sudo apachectl stop
Để restart Apache thì sử dụng lệnh:
$ sudo apachectl -k restart
hoặc sử dụng câu lệnh cho Ubuntu như sau:
sudo apt-get update
sudo apt-get install apache2
2. Cấu hình Apache
Để sử dụng multi-version PHP thì bạn cần bật một số extension cho Apache như sau:
- mod_rewrite
- mod_alias
- mod_vhost_alias
- mod_fcgid
Để bật các extension cho Apache bạn làm theo cách dưới đây:
- Mở và sửa file /etc/apache2/httpd.conf với quyền sudo.
- Tìm đến module cần bật. Xem ví dụ dưới đây:
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
- Xóa # để kích hoạt extension
- Khởi động lại Apache
3. Cài đặt PHP
Để sử dụng nhiều phiên bản PHP trên cùng 1 server Apache đồng nghĩa với việc bạn phải cài nhiều phiên bản PHP. Và để cài php trên MacOSX khá dễ dàng với HomeBrew (trên Linux Ubuntu cũng rất dễ với apt-get )
Cách cài đặt như sau:
- Bật Terminal.
- Sử dụng lệnh dưới đây để cài PHP:
*
- $ brew tap homebrew/dupes
- $ brew tap homebrew/versions
- $ brew tap homebrew/homebrew-php
- $ brew install php54
- $ brew unlink php54
- $ brew install php55
- $ brew unlink php55
- $ brew install php56
- $ brew unlink php56
- $ brew install php70
Sau khi dùng các lệnh trên bạn đã có trong tay PHP 5.4, 5.4, 5.6, 7.0. Và cũng sẽ có các file cấu hình php.ini tương ứng cho từng version PHP tại:
- /usr/local/etc/php/5.4/php.ini
- /usr/local/etc/php/5.5/php.ini
- /usr/local/etc/php/5.6/php.ini
- /usr/local/etc/php/7.0/php.ini
Và bạn cũng sẽ có các folder chứa PHP tương ứng như sau:
- /usr/local/Cellar/php54/…
- /usr/local/Cellar/php55/…
- /usr/local/Cellar/php56/…
- /usr/local/Cellar/php70/…
Với Linux thì cách cài đặt và đường dẫn sẽ khác 1 chút.
Cài đặt Apache để chạy đa phiên bản PHP
Cài đặt mod-fcgid
Sử dụng câu lệnh sau để cài đặt:
$ brew install mod_fcgid
Sau khi cài đặt thành công bạn sẽ có mod_fcgid tại thư mục /usr/local/Cellar/mod_fcgid.
3. Kích hoạt mod_fcgid trong Apache
Để kích hoạt mod_fcgid bạn cần làm theo các bước sau:
- Mở file /etc/apache2/httpd.conf
- Thêm các dòng sau vào cuối file:
LoadModule fcgid_module /usr/local/Cellar/mod_fcgid/2.3.9/libexec/mod_fcgid.so
<IfModule fcgid_module>
AddHandler fcgid-script .fcgi .fpl
FcgidConnectTimeout 20
FcgidMaxRequestLen 268435456
FcgidMaxProcessesPerClass 10
FcgidIOTimeout 300
</IfModule>
- Khởi động lại Apache
4.Tạo PHP Launcher với code fcgi
Tạo folder chứa PHP Laucher
Mình sẽ tạo 1 folder cgi-bin để chứa launcher. Bật Terminal gõ lệnh:
$ mkdir /usr/local/bin/cgi-bin
– Set owner và phân quyền (permission) cho folder cgi-bin
- $ sudo sudo chown -R _www:_www /usr/local/bin/cgi-bin
- $ sudo chmod -R 775 /usr/local/bin/cgi-bin
5. Tạo script laucher
Để chạy được nhiều phiên bản PHP khác nhau, bạn cần phải tạo các script cho từng phiên bản php khác nhau.
Chẳng hạn tạo laucher cho PHP 5.4 bằng cách:
- Tạo file php54.fcgi tại /usr/local/bin/cgi-bin
- Nhập nội dung:
#!/bin/bash
exec /usr/local/Cellar/php54/5.4.xxxx/bin/php-cgi
- Phân quyền cho file bằng lệnh sau:
$ sudo sudo chown _www:_www /usr/local/bin/cgi-bin/php54.fcgi
$ sudo chmod 775 /usr/local/bin/cgi-bin/php54.fcgi
Làm tương tự cho các version khác bằng cách thay đổi nội dung script bằng đường dẫn đến folder chứa PHP tương ứng:
Khi đó ta sẽ có các script laucher như sau:
- /usr/local/bin/cgi-bin/php54.fcgi
- /usr/local/bin/cgi-bin/php55.fcgi
- /usr/local/bin/cgi-bin/php56.fcgi
- /usr/local/bin/cgi-bin/php70.fcgi
6. Cài đặt vhost cho Apache
Dưới đây là cách cài đặt kèm với phiên bản PHP cho từng dự án:
<VirtualHost *:80>
ServerAdmin webmaster@testphp54
DocumentRoot “/Users/tpro/Framgia/testphp54”
ServerName testphp54
CustomLog “/private/var/log/apache2/testphp54-access_log” common
ErrorLog “/private/var/log/apache2/testphp54-error_log”
<Directory “/Users/tpro/Framgia/testphp54”>
Options Indexes FollowSymLinks Multiviews
MultiviewsMatch Any
AllowOverride All
Require all granted
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Config cho việc gọi launcher PHP bằng cách thêm dòng FcgidWrapper /usr/local/bin/cgi-bin/php54.fcgi .php và SetHandler cho các file php bằng cách thêm đoạn sau:
<FilesMatch \.php$>
SetHandler fcgid-script
</FilesMatch>
Và bật thực thi ExecCGI vào Options trong Directory
Kết quả sẽ nhận được như sau:
<VirtualHost *:80>
ServerAdmin webmaster@testphp54
DocumentRoot “/Users/tpro/Framgia/testphp54”
ServerName testphp54
CustomLog “/private/var/log/apache2/testphp54-access_log” common
ErrorLog “/private/var/log/apache2/testphp54-error_log”
FcgidWrapper /usr/local/bin/cgi-bin/php53.fcgi .php
<Directory “/Users/tpro/Framgia/testphp54”>
<FilesMatch \.php$>
SetHandler fcgid-script
</FilesMatch>
Options Indexes FollowSymLinks Multiviews ExecCGI
MultiviewsMatch Any
AllowOverride All
Require all granted
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Vậy là hoàn thành việc cài đặt php theo từng project (vhost) Để thay đổi phiên bản khác bạn chỉ cần đổi tên laucher /usr/local/bin/cgi-bin/php53.fcgi thành /usr/local/bin/cgi-bin/php70.fcgi
Để hệ thống tự nhận file index.php bạn cần phải thêm index.php vào sau DirectoryIndex index.html trong file httpd.conf của Apache như sau:
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
…
Sau khi thực hiện các bước trên bạn đã có 1 server Apache chạy đa phiên bản PHP.
Chúc bạn cài đặt thành công!