1.依賴包和編譯工具的yum安裝
對於 CentOS ,yum 向來是用作安裝大批量依賴的工具,所以,一股腦安裝這些依賴庫吧。
yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel pcre-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel readline-devel libxslt-devel expat-devel xmlrpc-c xmlrpc-c-devel
2.編譯安裝re2c/bison/limcrypt
之前我們已經安裝了 gcc 、 automake 、 autoconf 等,還需要 re2c 和 bison 這兩個。這兩個都是 PHP 的語法分析器,兩者的下載地址:
RE2C http://sourceforge.net/projects/re2c/files/0.15.3/re2c-0.15.3.tar.gz
BSION http://ftp.gnu.org/gnu/bison/bison-3.0.4.tar.gz (編譯mysql時裝了,可以跳過)
然后分別編譯安裝,這兩個編譯安裝不需要什么特別的配置參數,很直接 ./configure make && make install。
還有 libmcrypt 這個東西需要安裝,下載地址。
ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
3.下載最新版本php-7.1.3
wget http://cn2.php.net/get/php-7.1.3.tar.bz2/from/this/mirror
4.解壓 預編譯配置php
tar -jxvf php-7.1.3.tar.bz2 ./configure \ --prefix=/usr/local/php/7.0.0 \ --with-config-file-path=/usr/local/php/7.0.0/etc \ --with-config-file-scan-dir=/usr/local/php/7.0.0/etc/conf.d \ --enable-fpm \ --with-fpm-user=web \ --with-fpm-group=www \ --enable-soap \ --with-openssl \ --with-openssl-dir \ --with-mcrypt \ --with-pcre-regex \ --with-zlib \ --with-iconv \ --with-bz2 \ --enable-calendar \ --with-curl \ --with-cdb \ --enable-dom \ --enable-exif \ --with-pcre-dir \ --enable-ftp \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-gettext \ --with-gmp \ --with-mhash \ --enable-mbstring \ --with-libmbfl \ --with-onig \ --enable-pdo \ --with-pdo-mysql \ --with-zlib-dir \ --with-readline \ --enable-session \ --enable-shmop \ --enable-simplexml \ --enable-sockets \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --enable-wddx \ --with-libxml-dir \ --with-xsl \ --enable-zip \ --enable-mysqlnd \ --with-mysqli \ --without-pear
部分配置參數說明:http://php.net/manual/zh/configure.about.php
配置完成后 可見
5.配置執行完畢后,執行編譯安裝:
make clean && make && make install
6.創建php配置文件
php-7.1.3/> cp php.ini-production /usr/local/php7/etc/php.ini /usr/local/php7/etc/> cp php-fpm.conf.default php-fpm.conf /usr/local/php7/etc/php-fpm.d/> cp www.conf.default www.conf
//添加至服務 並設置權限
php-7.1.3/sapi/fpm/> cp init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
7.配置php.ini
# 設置PHP的opcache和memcache擴展庫 zend_extension=opcache.so extension=memcache.so # 設置PHP的擴展庫路徑 extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/" # 避免PHP信息暴露在http頭中 expose_php = Off # 避免暴露php調用mysql的錯誤信息 display_errors = Off # 開啟PHP錯誤日志(路徑在php-fpm.conf中配置) log_errors = On # 設置PHP的時區 date.timezone = PRC # 開啟opcache(1733行左右) opcache.enable=1 # 設置PHP腳本允許訪問的目錄 # open_basedir = /usr/share/nginx/html;
8.配置php-fpm
php-fpm.conf 進程服務主配置文件
# 設置錯誤日志的路徑 error_log = /var/log/php-fpm/error.log # 引入www.conf文件中的配置 include=/usr/local/php7/etc/php-fpm.d/*.conf # 設置主進程打開的最大文件數 rlimit_files = 102400 pid = run/php-fpm.pid
www.conf 進程服務擴展配置文件
# 創建相關用戶和用戶組並設置 user = www group = www # 設置php監聽方式 listen = 127.0.0.1:9000 # 注意這里要設置PHP套接字文件的權限,默認是root,Nginx無法訪問。 listen = /var/run/php-fpm/php-fpm.sock # 開啟慢日志 slowlog = /var/log/php-fpm/php-slow.log request_slowlog_timeout = 10s request_terminate_timeout = 30 # 設置工作進程數(根據實際情況設置) pm.max_children = 50 # 這里需要注意,pm.start_servers 不能小於 pm.min_spare_servers pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 10 pm.max_requests = 10240 # 設置php的session目錄(所屬用戶和用戶組都是www) php_value[session.save_handler] = files php_value[session.save_path] = /var/tmp/php/session
9 php-fpm 開啟關閉
php-fpm 啟動: /usr/local/php/sbin/php-fpm php-fpm 關閉: kill -INT `cat /usr/local/php/var/run/php-fpm.pid` php-fpm 重啟: kill -USR2 `cat /usr/local/PHP/var/run/php-fpm.pid` /etc/init.d/php-fpm restart 查看php-fpm進程數: ps aux | grep -c php-fpm
10添加到服務 設置自啟動
chkconfig --add /etc/init.d/php-fpm chkconfig php-fpm on #添加環境變量 echo -e '\nexport PATH=/usr/local/php7/bin:/usr/local/php7/sbin:$PATH\n' >> /etc/profile && source /etc/profile
11整合nginx與php
修改nginx配置文件nginx.conf
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; }
12.在html目錄創建php文件進行測試