前言
环境:Centos7.9 php-7.4.16.tar.gz
nginx的安装和mysql的安装这里就不说了,需要了解nginx和mysql的安装,请看本人另外两篇《Linux下安装mysql(yum、二进制包、源码包)》、《nginx的安装及配置文件详解》,本文就默认你已经安装好nginx和mysql了,这里就直接开讲PHP的安装。
PHP的安装
PHP程序在开发及运行的时候大多会调用一些函数库,虽然这些函数库不是必须安装的,但在生产环境中一般都需要安装,同时也避免PHP程序在运行时出现问题,所以建议安装下面的这些依赖:
yum -y install sqlite-devel zlib zlib-devel libxmi2 libxmi2-devel libjpeg libjpeg-devel libjpeg-turbo libjpeg-turbo-devel libiconv libiconv-devel
#注意:如果发现yum源里没有个别包,安装不了,则自行网上下载tar包源码编译安装吧;
tar -xvzf php-7.4.16.tar.gz -C /usr/local/
cd /usr/local/
mkdir php
cd php-7.4.16
./configure \
--prefix=/usr/local/php \ #php的安装路径
--with-mysql=/usr/local/mysql \ #这一句指定mysql的路径
--with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--enable-xml \
--disable-rpath \
--enable-safe-mode \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--with-curlwrappers \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--enable-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with--openssh \
--with-mhash \
--enable--pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--enable-short-tags \
--enable-zend-multibyte \
--enable-static \
--with-xsl \
--with-fpm-user=nginx \ #指定运行fpm进程的用户,当然你也可以创建一个php用户
--with-fpm-group=nginx \ #指定运行fpm进程的用户组
--enable-ftp
#预编译可以指定很多参数,这里我就指定一些其他参数,生产中根据实际情况来指定参数,预编译过程中出现报错一般是缺少依赖包,根据错误提示安装对
#的依赖包即可;
make
make install
配置文件
cp /usr/local/php-7.4.16/php.ini-production /usr/local/php/lib/php.ini #复制解压缩包配置文件到安装目录
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf #把配置文件复制一份
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf #把配置文件复制一份
配置文件这里先不说,暂时使用默认配置即可;
php安装目录文件
[root@master php]# tree -L 3 /usr/local/php/ #查看php的安装目录都有哪些文件
/usr/local/php/
├── bin #php相关命令目录
│ ├── pear
│ ├── peardev
│ ├── pecl
│ ├── phar -> phar.phar
│ ├── phar.phar
│ ├── php #php命令,运行该命令可以直接解析php文件,如./php index.php
│ ├── php-cgi
│ ├── php-config
│ ├── phpdbg
│ └── phpize #源码编译扩展时用到该命令
├── etc #配置文件目录
│ ├── pear.conf
│ ├── php-fpm.conf #php-fpm进程配置文件
│ ├── php-fpm.d
│ │ └── www.conf
│ └── php.ini
├── include #php默认类库
│ └── php
│ ├── ext
│ ├── include
│ ├── main
│ ├── sapi
│ ├── TSRM
│ └── Zend
├── lib #php第三方扩展类库
│ └── php
│ ├── Archive
│ ├── build
│ ├── Console
│ ├── data
│ ├── doc
│ ├── extensions
│ ├── OS
│ ├── PEAR
│ ├── pearcmd.php
│ ├── PEAR.php
│ ├── peclcmd.php
│ ├── Structures
│ ├── System.php
│ ├── test
│ └── XML
├── php #man文档存放目录
│ ├── man
│ │ ├── man1
│ │ └── man8
│ └── php
│ └── fpm
├── sbin #php-fpm可执行文件存放目录
│ └── php-fpm #php-fpm可执行文件
└── var #日志文件存放目录
├── log
│ └── php-fpm.log
└── run
34 directories, 20 files
启动PHP服务php-fpm
#先启动nginx和mysql服务
[root@web02 ~]# nginx
[root@web02 ~]# service mysql.server start
Starting MySQL.. SUCCESS!
[root@web02 ~]#
#添加PHP环境变量
vim /etc/profile
PHP_DIR=/usr/local/php/sbin
PATH=$PATH:$NGINX_DIR:$MYSQL_DIR:$PHP_DIR
[root@web02 ~]# php-fpm #启动php-fpm
[root@web02 ~]# ps -ef | grep php-fpm | grep -v grep #进程以及启动
root 3064 1 0 23:47 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
nginx 3065 3064 0 23:47 ? 00:00:00 php-fpm: pool www
nginx 3066 3064 0 23:47 ? 00:00:00 php-fpm: pool www
[root@web02 ~]# lsof -i :9000 #默认监听9000端口
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php-fpm 3064 root 9u IPv4 31289 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 3065 nginx 5u IPv4 31289 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 3066 nginx 5u IPv4 31289 0t0 TCP localhost:cslistener (LISTEN)
ps:php-fpm并没有提供停止命令,所以使用pkill php-fp停止即可。
配置nginx支持PHP
mkdir /usr/local/nginx/html/php/ #创建php目录
vim /usr/local/nginx/html/php/index.php #新建index.php文件并添加以下几句内容
<?php
phpinfo();
?>
vim /usr/local/nginx/conf/nginx.conf #编辑nginx配置文件,在原来虚拟主机上添加多一个location,内容如下
location ~ \.php$ {
root html/php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; # 或者 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
网页测试:
http://192.168.56.102/php/index.php
至此,nginx能正确解析php文件了。安装完成。