Cài đặt Tool, thư viên cho PHP 7.2
# yum install autoconf libtool re2c bison libxml2-devel bzip2-devel libcurl-devel libpng-devel libicu-devel gcc-c++ libmcrypt-devel libwebp-devel libjpeg-devel openssl-devel -y
Trên đây có các thư viên dùng tích hợp vào PHP khi biên dịch PHP ví dụ như: hỗ trợ file jpeg
, png
của GD
Tải Source PHP 7.2
Kiểm tra tại php-src
, tải về phiên bản Release mới. Bí dụ bản 7.2.12
với link tải https://github.com/php/php-src/archive/php-7.2.12.tar.gz
# curl -O -L https://github.com/php/php-src/archive/php-7.2.12.tar.gz
Giải nén
# tar -zxvf php-7.2.12.tar.gz # cd php-src-php-7.2.12
Build PHP 7.2
Lưu ý: Nếu có sử dụng Apache thì thì phải cài đặt hoặc build Apache trước (nếu muốn tự build từ source xem Build Apache)
Giờ thực hiện với PHP, đầu tiên chạy
# ./buildconf --force
Tiếp theo chạy
# ./configure --prefix=/usr/local/php --exec-prefix=/usr/local/php --bindir=/usr/local/php/bin --sbindir=/usr/local/php/sbin --includedir=/usr/local/php/include --libdir=/usr/local/php/lib/php --mandir=/usr/local/php/php/man --with-apxs2=/usr/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql-sock=/var/run/mysql/mysql.sock --with-mhash --with-openssl --with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --with-pgsql=/usr/local/pgsql --with-pdo-pgsql=/usr/local/pgsql --with-gd --with-iconv --with-zlib --enable-zip --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-ftp --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir=/usr/lib64 --with-png-dir=/usr/lib64 --with-freetype-dir --enable-opcache --enable-fpm --with-fpm-user=apache --with-fpm-group=apache --without-gdbm --disable-fileinfo
Có thể nhập và chạy lệnh ./configure
trên nhiều dòng, mỗi dòng cách nhau bằng /
, cách này bạn lưu lệnh trên một file rồi paste vào terminal cho thuận tiện
# ./configure \
--prefix=/usr/local/php \
--exec-prefix=/usr/local/php \
--bindir=/usr/local/php/bin \
--sbindir=/usr/local/php/sbin \
--includedir=/usr/local/php/include \
--libdir=/usr/local/php/lib/php \
--mandir=/usr/local/php/php/man \
--with-apxs2=/usr/bin/apxs \
--with-config-file-path=/usr/local/php/etc \
--with-mysql-sock=/var/run/mysql/mysql.sock \
--with-mhash \
--with-openssl \
--with-mysqli=shared,mysqlnd \
--with-pdo-mysql=shared,mysqlnd \
--with-pgsql=/usr/local/pgsql \
--with-pdo-pgsql=/usr/local/pgsql \
--with-gd \
--with-iconv \
--with-zlib \
--enable-zip \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-curl \
--with-jpeg-dir=/usr/lib64 \
--with-png-dir=/usr/lib64
--with-freetype-dir \
--enable-opcache \
--enable-fpm \
--with-fpm-user=apache \
--with-fpm-group=apache \
--without-gdbm \
--disable-fileinfo
Nếu muốn biết thêm các thiết lập chạy script ./configure --help
Trong các thiết lập trên thì có một số thiết lập cần chỉ ra đường dẫn, thực tế trên máy của bạn có thể ở vị trí khác, nên bạn phải xác định nó nằm chính xác ở đâu như:
--with-apxs2=/usr/bin/apxs
yêu cầu sinh ra filelibphp7.so
để tạo Handler gọi PHP từ Apache. Bạn phải xem Apache đểapxs
ở đâu rồi thay vào/usr/bin/apxs
- Tìm bằng lệnhfind / "apxs"
--with-jpeg-dir=/usr/lib64
cho phépGD
chỉnh sửa đượcjpeg
. Tìm xemlibjpeg.so
nằm ở thư mục nào thì điền thư mục đó vàofind / -name "libjpeg.so"
--with-png-dir=/usr/lib64
tương tự như trên (tìm từfind / -name "libpng.so"
)--prefix=/usr/local/php
thiết lập thư mục cài đặt PHP
Tiếp theo chạy lệnh
# make clean # make
Cài đặt
# make install
Copy file php.ini
vào vị trí (do thiết lập khi build ở trên nạp config từ /usr/local/php/etc/
nên bạn copy vào đúng vị trí đó:
# cp php.ini-development /usr/local/php/etc/php.ini
Thiết lập biến môi trường để trỏ đến đường dẫn gọi PHP
# vi /etc/profile
Thêm vào cuối file đó các dòng:
#PHP PATH export PHP_HOME=/usr/local/php export PATH=$PHP_HOME/bin:$PATH
Lưu lại và chạy lệnh sau để nạp lại biến môi trường
# source /etc/profile
Giờ có thể kiểm tra PHP
# php -v
Có PHP rồi, muốn Webserver Apache gọi nó theo cách nào thì thêm Handler cho phù hợp trong Apache, xem tại để biết các Handler trước tại PHP APACHE HANDLER
Thiết lập Handler mặc định
Nếu sử dụng Handler mặc định Apache 2.0 Handler
với module libphp7.so
mới build được:
#TÌM libphp7.so # find / -name "libphp7.so" /usr/lib/apache/libphp7.so
Mở apache.conf
thêm vào:
LoadModule php7_module /usr/lib/apache/libphp7.so <FilesMatch \.(php|phar)> SetHandler application/x-httpd-php </FilesMatch>
Lưu lại và khởi động lại Apache bằng lệnh service httpd restart
Giờ Apache đã chạy file .php khi truy cập đến
Thiết lập trên cũng đã tích hợp thư viện để truy cập MySQL
là thư viện MySqli
, PDO_MYSQL
. Nếu cần MySQL Server trên Server này luôn thì cài vào theo Cài đặt MySQL
SỬ DỤNG PHP-FPM
Trong cấu hình cài đặt ở trên có tham số kích hoạt build hỗ trợ PHP-FPM
với tham số --enable-fpm
, đây là loại Handler rất nhanh, có thể khởi chạy nhiều thread PHP, giúp cho các trang có lượng truy cập lớn chạy nhanh hơn. Nếu muốn dùng nó thay cho Handler mặc định ở trên (Apache 2.0 Handler) thì cần một số thiết lập như sau, di chuyển vào thư mục mã nguồn PHP ở trên (bằng lệnh CD):
#TÌM init.d.php-fpm # find / -name "init.d.php-fpm" ./sapi/fpm/init.d.php-fpm # cp ./sapi/fpm/init.d.php-fpm /usr/local/bin/php-fpm # chmod +x /usr/local/bin/php-fpm #TÌM find / -name "php-fpm.conf.default" # find / -name "php-fpm.conf.default" /usr/local/php/etc/php-fpm.conf.default # /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
Mở file /usr/local/php/etc/php-fpm.conf
và cập nhật nội dung thành
;;;;;;;;;;;;;;;;;; ; Global Options ; ;;;;;;;;;;;;;;;;;; [global] ; Pid file ; Note: the default prefix is /usr/local/php/var pid = run/php-fpm.pid ; Error log file ; Note: the default prefix is /usr/local/php/var error_log = log/php-fpm.log ;;;;;;;;;;;;;;;;;;;; ; Pool Definitions ; ;;;;;;;;;;;;;;;;;;;; include=/usr/local/php/etc/php-fpm.d/*.conf
Cập nhật file thiết lập /usr/local/php/etc/php-fpm.d/www.conf
# cat <<EOF >/usr/local/php7/etc/php-fpm.d/www.conf
[www]
;listen = /usr/local/php/var/run/www-php-fpm.sock
listen = 127.0.0.1:9000
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = apache
listen.group = apache
listen.mode = 0660
user = apache
group = apache
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 6
pm.status_path = /status
ping.path = /ping
ping.response = pong
request_terminate_timeout = 100
request_slowlog_timeout = 10s
slowlog = /usr/local/php/var/log/www.log.slow
EOF
#Với CENTOS 7 #TÌM php-fpm.service # find -name "php-fpm.service" ./sapi/fpm/php-fpm.service # cp ./sapi/fpm/php-fpm.service /etc/systemd/system/ # chmod +x /etc/systemd/system/php-fpm.service # systemctl enable php-fpm.service # systemctl start php-fpm.service
Mở apache.conf
hủy Handler PHP cũ đi và thêm vào Handler PHP-FPM gọi PHP qua Proxy:
#LoadModule php7_module /usr/lib/apache/libphp7.so #<FilesMatch \.(php|phar)> # SetHandler application/x-httpd-php #</FilesMatch> #Handler all file SetHandler "proxy:fcgi://127.0.0.1:9000" #Hoặc (.php) AddHandler "proxy:fcgi://127.0.0.1:9000" .php
Lưu lại và khởi động lại Apache
# service httpd restart
Giờ PHP đã được Apache gọi thông qua PHP-FPM