一、背景介绍

  1. PHPPHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法学习了C语言,吸纳JavaPerl多个语言的特色发展出自己的特色语法,并根据它们的长项持续改进提升自己,例如java的面向对象编程,该语言当初创建的主要目标是让开发人员快速编写出优质的web网站。 PHP同时支持面向对象和面向过程的开发,使用上非常灵活。

二、卸载其他版本

停止运行

1)、通过ps命令

  1. ps axf | grep php-fpm

image.png
2)、得到上述进程id

  1. master进程可以理解以下信号
  2. INT, TERM 立刻终止
  3. QUIT 平滑终止
  4. USR1 重新打开日志文件
  5. USR2 平滑重载所有worker进程并重新载入配置和二进制模块

3)、关闭进程

  1. kill -INT 27761

删除旧的版本

1)、如果是yum安装

  1. yum remove phpxxx具体版本

2)、如果是源码安装

  1. rm -rf php目录

三、安装

1)、安装依赖

  1. yum install mysql-devel -y
  2. yum install libxml2 -y
  3. yum install libxml2-devel -y
  4. yum install curl curl-devel -y
  5. yum install -y libicu-devel
  6. yum install gcc-c++ -y
  7. yum -y install unixODBC-*
  8. yum -y install postgresql-devel
  9. yum install libtidy-devel libtidy -y
  10. yum install nc -y
  11. yum install -y libjpeg-turbo-devel libpng-devel freetype-devel libtiff-devel libXpm-devel libwebp-devel fontconfig-devel
  12. yum install autoconf -y

1)下载源码并解压

  1. 下载
  2. wget https://www.php.net/distributions/php-7.2.13.tar.gz
  3. 解压
  4. tar -zxvf php-7.2.13.tar.gz
  5. 进入源码目录
  6. cd /usr/local/src/php-7.2.13

2)编译和安装

  1. ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/etc/php.d --with-fpm-user=www --with-fpm-group=www --enable-fpm --enable-mysqlnd --enable-opcache --enable-pcntl --enable-mbstring --enable-soap --enable-zip --enable-calendar --enable-bcmath --enable-exif --enable-intl --with-mysqli --with-pdo-mysql --with-pdo-odbc=unixODBC,/usr/ --with-pdo-pgsql --with-zlib --with-curl --with-freetype-dir --with-gettext --with-mhash --with-openssl --with-tidy --enable-wddx --with-xmlrpc --with-jpeg-dir
  2. #安装
  3. make
  4. make install

扩展安装
以event为例

  1. ### install event
  2. cd /usr/local/src/php-7.2.13
  3. tar zxvf event-2.5.4.tar.gz
  4. cd event-2.5.4
  5. /usr/local/php/bin/phpize
  6. ./configure --with-php-config=/usr/local/php/bin/php-config
  7. make
  8. make install

将生成的.so文件添加到php.ini中,然后重启php-fpm

四、php配置

在这个 /usr/local/php/etc/php-fpm.conf配置文件修改

  1. pid = /usr/local/php/var/run/php-fpm.pid
  2. error_log = /var/run/log/php-fpm.log
  3. include=/usr/local/php/etc/php-fpm.d/*.conf

下面是php配置文件www.conf的主要几项配置

  1. [www]
  2. user = www
  3. group = www
  4. listen = 127.0.0.1:9000
  5. pm = static
  6. # 根据自己的服务器配置进行设定
  7. pm.max_children = 20
  8. pm.start_servers = 2
  9. pm.min_spare_servers = 1
  10. pm.max_spare_servers = 3
  11. #根据自己的需要来设定
  12. upload_max_filesize=10M

五、启动、停止、管理

使用服务systemctl来管理
1、新建服务管理文件/usr/lib/systemd/system/php-fpm.service

  1. [Unit]
  2. Description=The PHP FastCGI Process Manager
  3. After=network.target
  4. [Service]
  5. Type=simple
  6. PIDFile=/usr/local/php/var/run/php-fpm.pid
  7. ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
  8. ExecReload=/bin/kill -USR2 $MAINPID
  9. PrivateTmp=true
  10. [Install]
  11. WantedBy=multi-user.target

2、重新加载配置
执行命令 systemctl daemon-reload

3、常用命令

  1. systemctl start php-fpm
  2. systemctl status php-fpm
  3. systemctl stop php-fpm
  4. systemctl restart php-fpm
  5. systemctl enable php-fpm
  6. systemctl didable php-fpm

六、nginx的配置

现在都是单入口应用,基本都是php接管请求。nginx的配置添加到http的配置段落里面

  1. location / {
  2. try_files $uri $uri/ /index.php?$query_string;
  3. proxy_http_version 1.1;
  4. proxy_set_header Upgrade $http_upgrade;
  5. proxy_set_header Connection "upgrade";
  6. }
  7. location ~* \.php$ {
  8. fastcgi_index index.php;
  9. fastcgi_pass 127.0.0.1:9000;
  10. include fastcgi_params;
  11. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  12. fastcgi_param SCRIPT_NAME $fastcgi_script_name;
  13. }