Cài đặt PHP 7 Từ Source Code Trên CentOS

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 file libphp7.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ệnh find / "apxs"
  • --with-jpeg-dir=/usr/lib64 cho phép GD chỉnh sửa được jpeg. Tìm xem libjpeg.so nằm ở thư mục nào thì điền thư mục đó vào find / -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

ĐĂNG KÝ KÊNH, XEM CÁC VIDEO TRÊN XUANTHULAB Đăng ký nhận bài viết mới

Từ khóa » Cài đặt Php Trên Centos 7