将自己编译与配置过程记录一下,方便以后参考更希望能对其他人有帮助,该笔记仅仅适用于配置,没包含性能调优

centos安装的过程就忽略了,自己都是在VM里面折腾,稍微提一下,如果ifconfig命令都提示不存在,需要 yum install net-tools 即可(centos最小化安装会出现这种情况),之后就可以使用xshell等工具ssh来操作

准备安装包

由于涉及到要上传到centos,所以也安装一下lrzsz比较方便 yum install lrzsz

mkdir /home/package
 cd /home/package
 rz (选择刚下载的PHP7与nginx包)
 ls

建立www用户与组

useradd -s /sbin/nologin -U www

-U 参数的是会同时建立与用户名一样的用户组

安装php7

需要开启fpm与curl

tar xvfz php-7.0.13.tar.gz(php压缩包)
 cd php-7.0.13(具体根据解压后的)
 ./configure --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-curl=/usr/include/curl/
 make && make install

异常情况

  • configure: error: no acceptable C compiler found in $PATH 安装gcc yum install gcc
  • configure: error: xml2-config not found. Please check your libxml2 installation. 安装libxml2 yum install libxml2 libxml2-devel
  • configure: error: Please reinstall the libcurl distribution 安装libcurl yum install libcurl libcurl-devel
  • 若make过程报错尝试make clean再make

make install完毕后,看看php.ini在哪里,指看到定义了配置文件所在目录

php -i | grep php.ini
 # Configuration File (php.ini) Path => /usr/local/lib

于是我们将安装包里面的php.ini-production拷贝过去,然后稍作配置调整

cp php.ini-production /usr/local/lib/php.ini
 vi /usr/local/lib/php.ini

php配置

php.ini配置

  • error_log —— 错误日志

php-fpm配置

先定位一下php-fpm与其配置位置,直接运行php-fpm会报错,提示不能加载配置文件

find / -name php-fpm
 # /usr/local/sbin/php-fpm
 # /home/package/php-7.0.13/sapi/fpm/php-fpm

 # 运行php-fpm
 /usr/local/sbin/php-fpm
 # [30-Nov-2016 18:32:54] ERROR: failed to open configuration file '/usr/local/etc/php-# fpm.conf': No such file or directory (2)
 # [30-Nov-2016 18:32:54] ERROR: failed to load configuration file '/usr/local/etc/php-fpm.conf'
 # [30-Nov-2016 18:32:54] ERROR: FPM initialization failed

 # 定位一下配置路径
 find / -name php-fpm.d
 # /usr/local/etc/php-fpm.d

 ls /usr/local/etc
 # pear.conf  php-fpm.conf.default  php-fpm.d

 cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
 vi /usr/local/etc/php-fpm.conf
 cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
 vi /usr/local/etc/php-fpm.d/www.conf

php-fpm.conf

  • error_log —— 错误日志
  • log_level —— 日志级别
  • include —— 包含配置目录(默认可能是NONE/etc/php-fpm.d/.conf,所以要调整一下改为 /usr/local/etc/php-fpm.d/.conf)

www.conf

  • listen —— 请求监听地址,这里改为使用socket方式()
  • listen.owner —— 监听所属用户(去掉注释)
  • listen.group —— 监听所属组(去掉注释)
  • listen.mode —— 监听模式(去掉注释)

运行php-fpm

/usr/local/sbin/php-fpm
 ps aux | grep php-fpm
 # [root@zt php-7.0.13]# ps aux | grep php-fpm
 # root     46710  0.0  0.5 203464  5276 ?        Ss   18:43   0:00 php-fpm: master process (/usr/local/etc/php-fpm.conf)
 # www      46711  0.0  0.4 203464  4972 ?        S    18:43   0:00 php-fpm: pool www
 # www      46712  0.0  0.4 203464  4972 ?        S    18:43   0:00 php-fpm: pool www

到这里php已经安装完毕

安装Nginx

tar xvfz nginx-1.11.5.tar.gz
 cd nginx-1.11.5
 ./configure --user=www --group=www
 make && make install

异常情况

  • ./configure: error: the HTTP rewrite module requires the PCRE library 安装pcre yum install pcre pcre-devel

nginx配置

定位一下nginx.conf位置

find / -name nginx.conf
 # /usr/local/nginx/conf/nginx.conf
 vi /usr/local/nginx/conf/nginx.conf
  • error_log —— 错误日志
  • location部分的root按照自己的目录修改一下(这里自己配置的站点放到/home/web/www中),index增加index.php
  • location php部分,root、fastcgi_pass调整
location / {
        root   /home/web/www;
        index  index.php index.html index.htm;
    }

 location ~ .php$ {
  root           /home/web/www;
  #fastcgi_pass   127.0.0.1:9000;
  fastcgi_pass   unix:/tmp/php-fpm.sock;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME  /home/web/www$fastcgi_script_name;
  include        fastcgi_params;
 }

 # 拉起nginx
 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
 mkdir -p /home/web/www
 echo "<?php echo phpinfo();" > /home/web/www/index.php

打开浏览器访问该机子IP http://paperen.com/file/200

最后补充一下关于扩展,查看phpinfo里面的extension_dir位置,将so文件防止到这里,然后php.ini最后加上 extension=xxxx.so,重启php-fpm与nginx即可

关于重新拉起php-fpm与nginx

ps aux | grep php-fpm
 # root     46710  0.0  0.5 203464  5276 ?        Ss   18:43   0:00 php-fpm: master process (/usr/local/etc/php-fpm.conf)
 # www      46711  0.0  0.6 203528  6468 ?        S    18:43   0:00 php-fpm: pool www
 # www      46712  0.0  0.4 203464  4972 ?        S    18:43   0:00 php-fpm: pool www
 kill 46710
 /usr/local/sbin/php-fpm
 # 重拉php-fpm

 /usr/local/nginx/sbin/nginx -s reload
 # 重拉nginx