nginx编译PHP

apache一般是把php当做自己的一个模块来启动的.
而nginx则是把http请求变量(如get,user_agent等)转发给 php进程,即php独立进程,与nginx进行通信. 称为 fastcgi运行方式.
因此,为apache所编译的php,是不能用于nginx的.

注意: 我们编译的PHP 要有如下功能:
连接mysql, gd, ttf, 以fpm(fastcgi)方式运行

安装编译所需的库

yum install mysql mysql-devel
yum install php-mysql
yum install gd
yum install gd-devel
yum install ttf
yum install freetype
yum install libxml2
yum install libxml2-devel -y
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-server
service mysqld start

下载php

wget http://cn2.php.net/distributions/php-7.1.11.tar.gz
tar –zxvf php-7.1.11.tar.gz
cd php-7.1.11
./configure  --prefix=/usr/local/fastphp \
--with-pdo-mysql=mysqlnd \
--enable-mysqlnd \
--with-gd \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--enable-fpm

Cp '/usr/local/php/php-7.0.20/php.ini-development'  '/usr/local/fastphp/lib/php.ini' 

cp '/usr/local/fastphp/etc/php-fpm.conf.default' '/usr/local/fastphp/etc/php-fpm.conf' 

make 
make install

cd /usr/local/fastphp/
./sbin/php-fpm
ps aux|grep php

这里写图片描述

php编译安装报错:make: * [sapi/cli/php] Error 1 解决办法
使用:make ZEND_EXTRA_LIBS=’-liconv’

或者: vim Makefile

添加:-lcrypt
这里写图片描述

./configure 后,直接make可能会出现libtool: link: `ext/date/php_date.lo’ is not a valid libtool object 的错误。

make clean 一下然后再make,即可。原因未知,
再 make install

nginx+php的配置比较简单,核心就一句话—-把请求的信息转发给9000端口的PHP进程,
让PHP进程处理 指定目录下的PHP文件.

如下例子:

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

1:碰到php文件,
2: 把根目录定位到 html,
3: 把请求上下文转交给9000端口PHP进程,
4: 并告诉PHP进程,当前的脚本是 d o c u m e n t r o o t fastcgi_scriptname
(注:PHP会去找这个脚本并处理,所以脚本的位置要指对)

然后就可创建 php 文件测试了
目录:

/usr/local/nginx/html/test.php
然后就可访问了(别忘了开nginx)
这里写图片描述

如遇到
Fatal error:Call to undefined function mysqli_connect() in xxxxxx,这是没有mysqli扩展库,请见下回分析。

重启mysql

service mysqld restart

重启php

 pkill -9 php-fpm
 ./php-fpm

重启nginx

'/usr/local/nginx/sbin/nginx' -s reload

centos下完全卸载mysql
yum方式安装的mysql

1、yum remove mysql mysql-server mysql-libs compat-mysql51

2、rm -rf /var/lib/mysql

3、rm /etc/my.cnf

查看是否还有mysql软件:
rpm -qa|grep mysql

如果存在的话,继续删除即可。

rpm方式安装的mysql

a)查看系统中是否以rpm包安装的mysql:

[root@localhost opt]# rpm -qa | grep -i mysql
MySQL-server-5.6.17-1.el6.i686
MySQL-client-5.6.17-1.el6.i686

b)卸载mysql

[root@localhost local]# rpm -e MySQL-server-5.6.17-1.el6.i686
[root@localhost local]# rpm -e MySQL-client-5.6.17-1.el6.i686

c)删除mysql服务

[root@localhost local]# chkconfig –list | grep -i mysql
[root@localhost local]# chkconfig –del mysql

d)删除分散mysql文件夹

[root@localhost local]# whereis mysql 或者 find / -name mysql

mysql: /usr/lib/mysql /usr/share/mysql

清空相关mysql的所有目录以及文件
rm -rf /usr/lib/mysql
rm -rf /usr/share/mysql

rm -rf /usr/my.cnf

通过以上几步,mysql应该已经完全卸载干净了

centos下完全卸载php
CentOS上PHP完全卸载,想把PHP卸载干净,直接用yum的remove命令是不行的,需要查看有多少rpm包,然后按照依赖顺序逐一卸载。
1.首先查看机器上安装的所有php相关的rpm包
[root@localhost nginx]# rpm -qa | grep php
php-cli-5.3.3-22.el6.x86_64
php-pdo-5.3.3-22.el6.x86_64
php-gd-5.3.3-22.el6.x86_64
php-fpm-5.3.3-22.el6.x86_64
php-common-5.3.3-22.el6.x86_64
php-5.3.3-22.el6.x86_64
php-xml-5.3.3-22.el6.x86_64
php-pear-1.9.4-4.el6.noarch

2.按依赖顺序进行删除
rpm -e php-fpm-5.3.3-22.el6.x86_64
rpm-e php-pdo-5.3.3-22.el6.x86_64
rpm -e php-pear-1.9.4-4.el6.noarch
rpm-e php-cli-5.3.3-22.el6.x86_64
rpm -e php-5.3.3-22.el6.x86_64
rpm-e php-xml-5.3.3-22.el6.x86_64
rpm -e php-gd-5.3.3-22.el6.x86_64
rpm-e php-common-5.3.3-22.el6.x86_64

猜你喜欢

转载自blog.csdn.net/z858466/article/details/79935049