Linux云服务器编译安装PHP环境
这里使用的是腾讯云的CentOS系统,版本为 CentOS 7.6 64位,服务器是全新的,需要重新配置lnmp环境,首先是PHP环境(如果感觉麻烦的话可以考虑装一下宝塔面板等工具,可以快速搭建环境)
一、PHP安装包下载
在php官网 http://www.php.net/downloads.php 下载 php-7.2.30.tar.gz至 /usr/local/src 目录下
解压并移动至 /usr/local/下,重命名为php7
tar -zxf php-7.2.30.tar.gz
mv php-7.3.0 /usr/local/php7
cd /usr/local/php7
二、PHP编译安装
1.安装依赖
首先要安装一些必要的依赖,如果之前没有安装,在PHP编译过程中可能会报错
yum install gd zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel libjpeg libjpeg-devel libpng libpng-devel
2.配置参数
./configure --prefix=/usr/local/php7 --with-gd --enable-mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --enable-mbstring --enable-fpm
运行成功结果:
Thank you for using PHP.
config.status: creating php7.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/fpm/php-fpm.conf
config.status: creating sapi/fpm/www.conf
config.status: creating sapi/fpm/init.d.php-fpm
config.status: creating sapi/fpm/php-fpm.service
config.status: creating sapi/fpm/php-fpm.8
config.status: creating sapi/fpm/status.html
config.status: creating sapi/phpdbg/phpdbg.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: main/php_config.h is unchanged
config.status: executing default commands
3.编译PHP
[root@VM_0_3_centos php7]# make && make install
[root@VM_0_3_centos php7]# cp php.ini-development /usr/local/php7/lib/php.ini
三、PHP启动测试
启动php进程
[root@VM_0_3_centos php7]# ./sbin/php-fpm
[09-May-2020 10:38:22] WARNING: Nothing matches the include pattern '/usr/local/php7/etc/php-fpm.d/*.conf' from /usr/local/php7/etc/php-fpm.conf at line 125.
[09-May-2020 10:38:22] ERROR: No pool defined. at least one pool section must be specified in config file
[09-May-2020 10:38:22] ERROR: failed to post process the configuration
[09-May-2020 10:38:22] ERROR: FPM initialization failed
这个错误是在 /usr/local/php7/etc/ 目录下找不到 php-fpm.conf,在当前目录下只有php-fpm.conf.default文件,将其复制一份更名为 php-fpm.conf
[root@VM_0_3_centos php7]# cp etc/php-fpm.conf.default etc/php-fpm.conf
再次启动
[root@VM_0_3_centos php7]# ./sbin/php-fpm
[09-May-2020 10:39:22] WARNING: Nothing matches the include pattern '/usr/local/php7/etc/php-fpm.d/*.conf' from /usr/local/php7/etc/php-fpm.conf at line 143.
[09-May-2020 10:39:22] ERROR: No pool defined. at least one pool section must be specified in config file
[09-May-2020 10:39:22] ERROR: failed to post process the configuration
[09-May-2020 10:39:22] ERROR: FPM initialization failed
这个错误只需要将/usr/local/php7/etc/php-fpm.d 目录下的www.conf.default文件复制一份重命名为www.conf
[root@VM_0_3_centos php7]# cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf
再次启动
[root@VM_0_3_centos php7]# ./sbin/php-fpm
[root@VM_0_3_centos php7]# ps aux | grep php
root 2007 0.0 0.0 112712 960 pts/0 R+ 16:59 0:00 grep --color=auto php
root 29460 0.0 0.2 180924 5528 ? Ss 10:46 0:00 php-fpm: master process (/usr/local/php7/etc/php-fpm.conf)
nobody 29461 0.0 0.2 183008 5452 ? S 10:46 0:00 php-fpm: pool www
nobody 29462 0.0 0.2 183008 5452 ? S 10:46 0:00 php-fpm: pool www
进程启动成功,当然这属于手动启动,下面是将php-fpm添加到开机自启动服务。
四、php-fpm开机自启动
1.配置 php-fpm.conf
vim /usr/local/php7/etc/php-fpm.conf
开启pid分号注释,并且修改指向路径到 /usr/local/php7/var/run/php-fpm.pid
2.将php-fpm脚本拷贝至/etc/init.d目录
cp /usr/local/src/php-7.2.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
编辑脚本文件,将路径替换成我们自己的路径
#! /bin/sh
### BEGIN INIT INFO
# Provides: php-fpm
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts php-fpm
# Description: starts the PHP FastCGI Process Manager daemon
### END INIT INFO
prefix=/usr/local/php7
exec_prefix=${prefix}
php_fpm_BIN=${prefix}/sbin/php-fpm
php_fpm_CONF=${prefix}/etc/php-fpm.conf
php_fpm_PID=${prefix}/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID"
3.设置权限并启动php-fpm
chmod 755 /etc/init.d/php-fpm
/etc/init.d/php-fpm start
ps:如果启动报错说接口已被占用,因为之前调试中已经将服务手动启动了,所以才会显示端口被占用,先将之前启动的进程关掉
chkconfig –add php-fpm
最后,给出php-fpm以服务的方式启动、停止和重启:
service php-fpm start
service php-fpm stop
service php-fpm reload