centos 7 源碼編譯安裝php5.6.37

1、獲取並解壓 PHP 源代碼

wget http://cn2.php.net/distributions/php-5.6.37.tar.gz
tar zxf php-5.6.37.tar.gz
cd php-5.6.37

2、爲了防止編譯出錯安裝依賴包

yum -y install gcc gcc-c++ autoconf libjpeg-turbo-static libjpeg-turbo-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel pcre pcre-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-libs krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss-pam-ldapd openldap-clients openldap-servers bison lrzsz libmcrypt libmcrypt-devel mcrypt mhash ImageMagick ImageMagick-devel libmemcached libmemcached-devel

3、進行編譯

./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-bz2 \
--with-curl \
--enable-ftp \
--enable-sockets \
--disable-ipv6 \
--with-gd \
--with-jpeg-dir=/usr/local \
--with-png-dir=/usr/local \
--with-freetype-dir=/usr/local \
--enable-gd-native-ttf \
--with-iconv-dir=/usr/local \
--enable-mbstring \
--enable-calendar \
--with-gettext \
--with-ldap \
--with-libxml-dir=/usr/local \
--with-zlib \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-mysql=mysqlnd \
--enable-dom \
--enable-xml \
--enable-fpm \
--with-libdir=lib64 \
--enable-bcmath
--with-mysqli

 

4、make && makeinsatll之前處理一個報錯問題,如下

ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor':
/ext/iconv/iconv.c:2491: undefined reference to `libiconv_open'
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1

 

解決方案:

第一種:make ZEND_EXTRA_LIBS='-liconv'

第二種:vim Makefile

添加:-lcrypt

解決以上問題後,再次make && makeinsatll

5、然後修改配置,關聯nginx

cp /root/php-5.6.37/php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
ln -s /usr/local/php/sbin/php-fpm /usr/local/sbin/php-fpm(創建php-fpm啓動命令)
[root@MySql etc]# cat php-fpm.conf
[global]
[www]
user = nginx(與nginx配置文件保持一致。我nginx中user是“nginx”)
group = nginx(同上)
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

6、然後啓動 php-fpm 服務

php-fpm

7、配置 Nginx 使其支持 PHP 應用

修改默認的 location 塊,使其支持 .php 文件:
location / {
    root   html;
    index  index.php index.html index.htm;
}

8、下一步配置來保證對於 .php 文件的請求將被傳送到後端的 PHP-FPM 模塊, 取消默認的 PHP 配置塊的註釋,並修改爲下面的內容:

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
} 

 

9、重載nginx

\usr\local\nginx\sbin\nginx -s reload

 

 

注: 
nginx+php運行原理 
nginx本身不能處理PHP,它只是個web服務器,當接收到請求後,如果是php請求,則發給php解釋器處理,並把結果返回給客戶端。 
nginx一般是把請求發fastcgi(php-fpm就是其中的一種)管理進程處理,fascgi管理進程選擇cgi子進程處理結果並返回被nginx 
同樣php-fpm程序也如同nginx一樣,需要監聽端口,並且有master和worker進程。worker進程直接管理每一個php進程

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章