为了弄好php和nginx,耗费了我不少时间,哎。整体来说过程不是很难,主要是中间出的问题让人头疼。
第一步:selinux和防火墙设置 (之前安装好nginx,启动成功后,仍旧访问不了页面。发现是防火墙和selinux的问题)
firewall-cmd --zone=public --add-port=80/tcp --permanent
systemctl restart firewalld.service关闭selinux: /etc/selinux/config
修改配置文件:将selinux=enforcing改为disabled
弄好后重启虚拟机,查看后出现Disabled
getenforce #查看selinux状态
或者,
临时关闭(不用重启机器):setenforce 0
第二步:安装nginx
https://blog.csdn.net/m0_59127553/article/details/124343092?spm=1001.2014.3001.5501 https://blog.csdn.net/m0_59127553/article/details/124343092?spm=1001.2014.3001.5501https://blog.csdn.net/m0_59127553/article/details/124343092?spm=1001.2014.3001.5501%20https://blog.csdn.net/m0_59127553/article/details/124343092?spm=1001.2014.3001.5501之前我写过如何安装nginx,这里就不详述了。
1.创建站点
[root@localhost ~]# mkdir -p /www/web
2.配置Nginx文件
cd /usr/local/nginx/conf/vim nginx.conf
进去后在底部输入 /php 查找php配置部分
你会看到下图部分(当然,我这里是把注释去掉了,要和我一样把注释去掉,内容可以选择和我修改的一样,保存退出即可!)
location~\.php${root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FIENAME /www/web$fastcgi_script_name;#将/scripts 修改为nginx的发布目录include fastcgi_params
}
第三步:安装PHP
安装和编译PHP有点麻烦而且时间会稍微比较长
在官网上下载好php: PHP: Downloads
版本根据自己选择:我选择的是PHP 7.4.29 (php-7.4.29.tar.gz)
1.下载好之后,上传到自己的虚拟机中
tar -zxvf php-7.4.29.tar.gz -C /usr/local/ //解压到指定目录
2.进入php文件进行配置
//安装依赖包
yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-devel epel-release
cd php-7.4.29
//配置编译参数./configure --prefix=/usr/local/php --with-config-file-path=/etc --with-fpm-user=www --with-fpm-group=www --with-curl --with-freetype-dir --enable-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip --enable-fpm
配置过程可能出现这样的问题:
问题1:
解决方法:yum install gcc -y
问题2:
configure: error: Package requirements (sqlite3 > 3.7.4) were not met:No package 'sqlite3' found
解决方法:yum install sqlite-devel
问题3:
configure: error: Package requirements (oniguruma) were not met: No package ‘oniguruma’ found
解决方法:如果下面代码wget报错则先执行:yum install wget -y
wget http://www6.atomicorp.com/channels/atomic/centos/7/x86_64/RPMS/oniguruma-5.9.5-3.el7.art.x86_64.rpm
yum localinstall oniguruma-5.9.5-3.el7.art.x86_64.rpmwget http://www6.atomicorp.com/channels/atomic/centos/7/x86_64/RPMS/oniguruma-devel-5.9.5-3.el7.art.x86_64.rpm
yum localinstall oniguruma-devel-5.9.5-3.el7.art.x86_64.rpm
出现下面这张图表示成功
然后执行:编译时间比较长,要有耐心
make && make install
做到这里你就已经成功一大半了!
第四步:添加index.php文件
[root@localhost ~]# cd /www/web
[root@localhost web]# touch index.php
[root@localhost web]#vi index.php
//输入
<?php
phpinfo();
?>
//保存退出
第五步:启动php-fpm
1. 备份php配置文件
首先进入PHP的配置文件目录/usr/local/php/etc (其他情况:也有可能在/usr/local/etc)
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# cd php-fpm.d
[root@localhost php-fpm.d]# cp www.conf.default www.conf
[root@localhost php-fpm.d]# /usr/local/php/sbin/php-fpm -t
[29-Apr-2022 19:44:11] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful //会自动出现这样一句话
2.启动PHP并检查服务运行
[root@localhost web]# /usr/local/php/sbin/php-fpm
[29-Apr-2022 20:03:48] ERROR: [pool www] cannot get uid for user 'www' //当出现这样的问题,我们可以这样处理//处理方式
groupadd www
useradd -g www www//重新启动
[root@localhost web]# /usr/local/php/sbin/php-fpm//查看php运行
[root@localhost web]# ps aux|grep php//出现下面的进程则表示已经启动运行
root 1753 1.0 0.6 226008 6460 ? Ss 10:17 0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www 1754 0.6 0.6 226008 5984 ? S 10:17 0:00 php-fpm: pool www
www 1755 0.6 0.6 226008 5984 ? S 10:17 0:00 php-fpm: pool www
root 1757 0.0 0.0 112824 988 pts/0 R+ 10:17 0:00 grep --color=auto php//顺便检查nginx是否启动相关语句:/usr/local/nginx/sbin/nginx 开启
/usr/local/nginx/sbin/nginx -s stop 关闭
/usr/local/nginx/sbin/nginx -s reload 重启nginxps -ef|grep nginx //查看nginx进程//出现下面的进程则表示已经启动运行[root@localhost web]# ps -ef|grep nginxroot 1764 1 0 10:18 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 1765 1764 1 10:18 ? 00:00:00 nginx: worker process
root 1767 1724 0 10:18 pts/0 00:00:00 grep --color=auto nginx
最后一步:检查是否成功
在浏览器输入:http://ip/index.php
出现下图表示成功!