本文已参与新人创作礼活动,一起开启掘金创作指路。
编译安装php7.4和nginx1.17. php-fpm.sock监听
系统环境centos7 1.设置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2.下载wget工具
yum -y install wget
yum -y :-y代表全部输入y安装(否则安装时一步已输入y)
3.下载php74
wget https://www.php.net/distributions/php-7.4.0.tar.gz
emm这个过程...漫长的一匹,如图下载好了
4.装系统所需要的依赖(安装php扩展时需要用到这些依赖)注:需要什么安装什么
yum -y install gcc gcc-c++ \makelibxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel libicu-devel sqlite-devel freetype-devel openldap-devel openldap openldap-devel
5.解压php
tar -zxvf php-7.4.0.tar.gz
6.进入解压后的文件目录
cd /php-7.4.0
7.接下来进入三板斧 配置(configure)、编译(make)、安装(make install)。
./configure --prefix=/usr/local/php \
--with-config-file-scan-dir=/usr/local/php/etc/ \
--with-mhash --with-pdo-mysql \
--with-openssl --with-mysqli \
--with-iconv --with-zlib \
--enable-inline-optimization \
--disable-debug --disable-rpath \
--enable-shared --enable-xml \
--enable-bcmath --enable-shmop \
--enable-sysvsem --enable-sysvshm --enable-mbregex \
--enable-ftp \
--enable-pcntl --enable-sockets \
--with-xmlrpc --enable-soap \
--without-pear --with-gettext \
--enable-session --with-curl \
--enable-opcache --enable-fpm \
--without-gdbm --enable-fast-install \
--disable-fileinfo
-prefix=/usr/local/php 代表我的php安装目录在这里,第二行同理 如果中途出错,xxxx包缺失,可以yum安装一下系统依赖。有的php扩展需要系统有依赖才可安装
8.编译及安装
make && make install
9.把默认配置文件的移过来
cp ~/php-7.4.0/php.ini-production /usr/local/php/etc/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
10.修改配置文件php-fpm.conf 注:php.ini这里不做修改,需要的自行修改
vi /usr/local/php/etc/php-fpm.conf
修改的内容如下(不是全部)
; 去掉里分号,方便以后重启。建议修改
;Default Value: none
; 下面的值最终目录是/usr/local/php/var/run/php-fpm.pid
; 开启后可以平滑重启php-fpm
pid = run/php-fpm.pid
; 引入www.conf文件中的配置,可以默认值
include=/usr/local/php/etc/php-fpm.d/*.conf
11.修改www.conf
vi /usr/local/php/etc/php-fpm.d/www.conf
修改的内容如下(不是全部)
; 设置用户和用户组,默认都是nobody。可以默认值
user = www
group = www
; 设置PHP监听
; 下面是默认值,不建议使用。可以默认值,9000端口会被占用,而且使用nginx和php-fpm采用tcp通信相对较慢,使用sock本机同喜无需多余网络消耗
;listen = 127.0.0.1:9000
; 根据nginx.conf中的配置fastcgi_pass unix:/run/php-fpm/php-fpm.sock;这俩路径要一致,否则502
;代表php监听这个端口,nginx接收到webserver的php文件发送到这个端口
listen = /run/php-fpm/php-fpm.sock
;如果使用sock监听,下面三个选项要设置,否则php-fpm会以root启动,nginx访问不到。如果是root启动,需要chmod 666 /run/php-fpm/php-fpm.sock才可以,否则会502
listen.owner = www
listen.group = www
listen.mode = 0666
12.注:因上面设置了user和group用户组,所以需要给系统添加用户组
groupadd www \
useradd -g www www
php74安装完了
/usr/local/php/sbin/php-fpm -t # php-fpm检测配置文件是否正确
/usr/local/php/sbin/php-fpm # php-fpm启动
kill -INT `cat /usr/local/php/var/run/php-fpm.pid` # php-fpm关闭
pkill php-fpm #直接杀掉所有php
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid` #php-fpm平滑重启
php -v #查看php信息
php -m #查看php扩展
13.安装nginx
wget http://nginx.org/download/nginx-1.17.6.tar.gz
14.解压nginx
tar -zxvf nginx-1.17.6.tar.gz
15.进入解压后的目录
cd /nginx-1.17.6
16.三板斧,配置
./configure \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_gzip_static_module \
--with-pcre
17.编译和安装
make && make install
18.配置nginx.conf
vi /usr/local/nginx/conf/nginx.conf
修改后如下,注:主要是include
#user nobody;
worker_processes 1;
error_log /www/logs/nginx/error.log;
error_log /www/logs/nginx/error_notice.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#显示目录
#autoindex on;
#显示文件大小
#autoindex_exact_size on;
#显示文件时间
#autoindex_localtime on;
include /www/conf/vhosts/*.conf;
}
19.添加站点配置
vi /www/conf/vhosts/default.conf
全部内容如下
server{
listen 8088;
server_name 127.0.0.1;
root /www/web/default;
location / {
#开启 url 美化
if (!-e $request_filename){
rewrite ^/(.*) /index.php last;
}
index index.html index.php;
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
try_files $uri = 404;
}
}
这里的fastcgi_pass unix:/run/php-fpm/php-fpm.sock;要和上面配置www.conf配置的一样。 我添加的站点和端口是127.0.0.1:8088
20.启动nginx
/usr/local/nginx/sbin/nginx -t # 检测配置文件是否正确
/usr/local/nginx/sbin/nginx # 启动
/usr/local/nginx/sbin/nginx -s stop # 关闭
/usr/local/nginx/sbin/nginx -s reload #平滑重启
default文件夹下就是放你代码的地方,我没放数据,如果测试可以在default下放一个index.html和index.php 然后访问127.0.0.1:8088/index.html或127.0.0.1:8088/index.php就可以看到结果了