Linux安装PHP-FPM

安装编译环境

考虑到自带的源有的组件没有,可以先安装epel第三方源

yum -y install epel-release
yum -y install gcc automake autoconf libtool make gcc-c++ glibc libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel libmcrypt mcrypt mhash  php-mcrypt

下载php版本包

php官方地址:https://www.php.net/releases/
本次安装环境的版本包为php5.6

wget http://cn2.php.net/distributions/php-5.6.24.tar.gz
tar zvxf php-5.6.24.tar.gz
cd php-5.6.24

编译

php编译过程中,如果要php支持相应的功能,需要先安装对应的组件,然后再编译。

./configure --prefix=/usr/local/php  --enable-fpm --with-mcrypt --enable-mbstring --disable-pdo --with-curl --disable-debug  --disable-rpath --enable-inline-optimization --with-bz2  --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli 
make && make install

配置文件

复制配置文件,对其中一些代码进行修改,可根据需要开启php中的功能

cp php.ini-development /usr/local/php/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp sapi/fpm/php-fpm /usr/local/bin

修改php-fpm.conf配置文件,使用www用户和www用户组运行

vim /usr/local/php/etc/php-fpm.conf
#修改为以下
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = www
group = www

修改php.ini,根据需求开启需要的php功能

vim /usr/local/php/php.ini
#############################
display_errors = On
display_startup_errors = On
error_prepend_string = "<br><font color=#ff0000>"
error_append_string = "</font><br><br>"
fastcgi.impersonate = 1
date.timezone = asia/Shanghai
extension=php_mysql.dll
extension=php_gd2.dll
extension=php_mbstring.dll

官方提醒

需要着重提醒的是,如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击。
将 php.ini 文件中的配置项 cgi.fix_pathinfo 设置为 0 。
打开 php.ini,定位到 cgi.fix_pathinfo= 并将其修改为如下所示:

vim /usr/local/php/php.ini
##########################
cgi.fix_pathinfo=0

运行

/usr/local/bin/php-fpm
#查看是否运行
netstat -anop | grep php

出现以下界面表示正常运行:
在这里插入图片描述

nginx添加PHP支持

修改NGINX配置文件,nginx.conf其中server段增加如下配置,注意标记内容配置,否则会出现No input file specified.错误
#pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

location ~ .php$ {
root html;  #网站程序目录,根据需求修改
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /html$fastcgi_script_name#/html 为网站程序目录
include fastcgi_params;
fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}

Apache添加PHP支持

若是要使用apache,编译时候需加上

--with-apxs2=/usr/local/apache/bin/apxs
#apxs路径自行确认,如果是yum安装,没有找到apxs需要安装下httpd-devel组件

在httpd.conf添加以下配置:

LoadModule php5_module modules/libphp5.so
##########################################
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

结果

访问80端口出现以下表示php配置完成。
在这里插入图片描述

优化及开机自启

我们使用的系统为CentOS 7,以systemd 这个系统守护进程服务来对php的服务进行操作优化,实现的功能为:通过systemctl 命令来对php服务进行启动、停止、重启及开机自启服务。
编写配置文件:

vim /usr/lib/systemd/system/php-fpm.service
##########################################
[Unit]
Description=php-fpm Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/bin/php-fpm
ExecStop=/bin/pkill -9 php-fpm
ExecReload=/bin/pkill -9 php-fpm && /usr/local/bin/php-fpm
PrivateTmp=true

[Install]
WantedBy=multi-user.target

接下来测试命令是否执行成功:

systemctl start php-fpm.service
systemctl stop php-fpm.service
systemctl restart php-fpm.service
systemctl status php-fpm.service

执行的结果:
在这里插入图片描述
查看main pid在重启后是否有变化。在这里插入图片描述
是否支持开机重启在这里插入图片描述

参考文档

PHP 官方文档:https://www.php.net/manual/zh/install.php
阮一峰的网络日志:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
http://www.siguoya.name/pc/home/article/46

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值