Centos8安装LNMP+Nginx最高效率运行+PHP8开启jit

----------------安装nginx----------------
1.准备依赖包:

yum -y install zlib-devel pcre-devel openssl-devel

2.下载安装包
官网:http://nginx.org/en/download.html
下载:http://nginx.org/download/nginx-1.20.1.tar.gz

wget http://nginx.org/download/nginx-1.20.1.tar.gz

3.解压

 tar -zxvf nginx-1.19.10.tar.gz 

4.准备nginx用户:

useradd -M -s /sbin/nologin nginx

5.源码编译与安装:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_random_index_module --with-http_sub_module
make && make install

6.服务管理:

1.检测配置语法
/usr/local/nginx/sbin/nginx -t

2.启动服务
/usr/local/nginx/sbin/nginx

3.重载服务
/usr/local/nginx/sbin/nginx -s reload
pkill -HUP nginx

4.关闭服务
/usr/local/nginx/sbin/nginx -s stop
pkill nginx

5.开机启动
vi /etc/rc.local
/usr/local/nginx/sbin/nginx

7.修改nginx配置文件 /usr/local/nginx/conf/nginx.conf

1).把守护进程的用户修改为nginx
	修改:user nginx;

2).修改进程数(和cpu核心数相等就行)
	查询CPU核心数量
		cat /proc/cpuinfo |grep processor

	查看物理CPU个数
		cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

	查看逻辑CPU的个数
		cat /proc/cpuinfo| grep "processor"| wc -l
		lscpu

	修改:worker_processes  2;

3).运行CPU亲和力,与worker_processes对应,如:worker_cpu_affinity 0001 0010。(二进制)
	新增:worker_cpu_affinity 0001 0010;

4).Nginx最多可以打开文件数(硬限制),与ulimit -n保持一致,如:worker_rlimit_nofile 65535。
	新增:worker_rlimit_nofile 65535;

5).修改最大连接数(软限制) 是单个worker进程允许客户端最大连接数,这个数值一般根据服务器性能和内存来制定,实际最大值就是worker进程数乘以work_connections,实际我们填入一个65535,足够了。
	修改:worker_connections  65535;

6).客户端连接保持会话超时时间,超过这个时间,服务器断开这个链接。
	修改:keepalive_timeout 60;


7).参数限制了一个HTTP长连接最多可以处理完成的最大请求数,默认是100。当连接处理完成的请求数达到最大请求数后,将关闭连接。
	新增:keepalive_requests 10240;

8).压力测试模块(写在server里面),status 是名字可以修改,用户在路径访问
	location /status {
	   stub_status;
	}
	访问http://ip/status,可以看到压力测试页面

9).ab压力测试
	ab -n10 -c10 http://124.71.229.70/index.html
	-n :总共的请求执行数,缺省是1;
	-c: 并发数,缺省是1;
	-t:测试所进行的总时间,秒为单位,缺省50000s
	-p:POST时的数据文件
	-w: 以HTML表的格式输出结果

8.进程管理:

pstree |grep nginx
ps -ef |grep nginx
ps aux |grep nginx

9.端口管理:

netstat -tunpl |grep nginx

10.配置端口指向(可写多个)
开启日志(#号删掉)

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

server{
	listen       80;
	server_name  yonn.com;
	index index.php index.html
	access_log  logs/web.access.log  main;
	root   html/web;
}

11.tail和watch跟踪:

1.文件跟踪	监听文件内容变化
tail -f file.txt

2.命令跟踪	监听命令1秒执行一次
watch -n 1 ls -l

----------------安装PHP8依赖包oniguruma----------------
一.安装PHP8依赖包

yum -y install autoconf freetype gd libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel net-snmp-devel libjpeg-devel php-ldap openldap-devel openldap-clients freetype-devel gmp-devel libzip libzip-devel sqlite-devel

二.下载编译依赖包oniguruma

1.下载

https://github.com/kkos/oniguruma/

2.解压并切换目录

cd oniguruma-master/

3.安装所需的工具包

yum install -y gcc gcc-c++ make expat-devel autoconf automake libtool

4.生成configure

./autogen.sh
如果生成失败,报错
	perl: warning: Falling back to the standard locale ("C").
	perl: warning: Setting locale failed.
	perl: warning: Please check that your locale settings:
执行下面命令后再次生成一次试试
	export LC_ALL=C

5.生成编译配置文件

./configure --prefix=/usr

6.编译并安装

make && make install

----------------安装PHP8----------------
三、下载PHP8安装包,需要先安装oniguruma依赖包
PHP8安装包:

https://www.php.net/downloads.php

1.解压

tar xzf php-8.0.6.tar.gz

2.切换目录

cd php-8.0.6/

3.生成编译配置文件

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-opcache --with-pcre-jit --enable-gd --with-jpeg --with-freetype --with-gettext --with-curl --with-openssl --enable-sockets --enable-mbstring --enable-xml --with-zip --with-zlib --with-snmp --with-mhash --enable-ftp --enable-bcmath --enable-soap --enable-shmop --enable-sysvsem --enable-pcntl --with-gmp

4.编译并安装

make && make install

5.配置文件

复制/usr/local/php/etc/php-fpm.conf.default 并重命名为php-fpm.conf
复制/usr/local/php/etc/php-fpm.d/www.conf.default 并重命名为www.conf
复制php8源文件包中的php.ini-development到/usr/local/php/etc/ 并重命名为php.ini
cp php.ini-development /usr/local/php/etc/php.ini

6.检测配置文件是否有异常

/usr/local/php/sbin/php-fpm -t

7.服务管理

1)启动
/usr/local/php/sbin/php-fpm

2)关闭
pkill php-fpm

3)重载
pkill -USR2 php-fpm

4.开机启动
/usr/local/php/sbin/php-fpm

8.nginx与php结合,在server中写入

location ~ \.php(.*)$ {
    fastcgi_index  index.php;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param  PATH_INFO $1;
    include        fastcgi_params;
}

9.重启服务

四、优化PHP性能,修改/usr/local/php/etc/php-fpm.d/www.conf

1.动态创建子进程:
pm = dynamic

2.最大子进程数:
pm.max_children = 100 (默认5)
#每开启一个php-fpm进程要占用近20M左右的内存,假设服务器内存为2G

3.初始进程数:
pm.start_servers = 40 (默认2)

4.最小空闲进程数:
pm.min_spare_servers = 20 (默认1)

5.最大空闲进程数:
pm.max_spare_servers = 60 (默认3)

6.最大多少次请求后子进程重生:
pm.max_requests = 10240
#有效降低内存消耗

五.进程状态监控:

1.修改/usr/local/php/etc/php-fpm.d/www.conf
	1).php配置:
		pm.status_path = /phpstatus

	2).增加php-fpm打开文件数的限制:
		rlimit_files = 65535

	3).生成访问日志:
		(删除注释)access.log = log/$pool.access.log
		(删除注释)access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"

	4).开启慢日志:
		(删除注释)request_slowlog_timeout = 5 #访问超过5秒就是慢查询
		(删除注释)slowlog = log/$pool.log.slow #日志路径
	需要在php目录新建一个log文件夹


2.修改nginx.conf:
	1).添加phpstatus
		location /phpstatus {
		    fastcgi_index  index.php;
		    fastcgi_pass   127.0.0.1:9000;
		    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
		    include        fastcgi_params;
		}


3.客户端测试:
	http://ip/phpstatus

4.进程状态信息:
	pool: www               		# 进程池名称
	process manager: dynamic        # 进程管理方式
	start time: 22/Jan/2016:15:49:00 +0800 # 启动时间
	start since: 375            	# 运行时长
	accepted conn: 7            	# 当前进程池接受的请求数
	listen queue: 0            		# 请求等待队列,如果不为 0 ,意味着 FPM 进程不足,需要增加
	max listen queue: 0          	# 最大等待队列数量
	listen queue len: 1024         	# SOCKET 等待队列长度
	idle processes: 4           	# 空闲进程数
	active processes: 1          	# 活跃的进程数
	total processes: 5           	# 总进程数
	max active processes: 1        	# 最大活跃进程数
	max children reached: 0        	# 达到最大进程数的次数,如果不为 0 ,意味着最大进程数不足,需要增加
	slow requests: 0            	# 慢请求数量,需要设置 slow log


4.每个php-fpm进程的内存限制(php.ini):
	memory_limit=128M


6.进程最大执行时间,与php.ini中max_execution_time作用相同(php.ini):
	max_execution_time=30

7.ab压力测试
	#ab->nginx->php->index.php

	ab -n10 -c10 http://124.71.229.70/index.php

六、开启opcache,修改php.ini (/usr/local/php/etc/php.ini)

zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20200930/opcache.so

[opcache]
opcache.enable=1
opcache.enable_cli=1

七、开启jit,修改php.ini (/usr/local/php/etc/php.ini)

ps:PHP8的JIT是在Opcache之中提供的,目前PHP8只支持x86架构的CPU
# uname -m 可以打印cpu是否为x86架构(# arch 命令也可以)
新增下面两行配置
[jit]
opcache.jit=tracing
opcache.jit_buffer_size=64M

JIT基准测试
#复制php8包内Zend/bench.php
#cp /mnt/php-8.0.6/Zend/bench.php /usr/local/nginx/html/web/

1.测试时禁用JIT
/usr/local/php/bin/php -d opcache.jit_buffer_size=0 bench.php
/usr/local/php/bin/php -d opcache.jit=disable bench.php

2.测试时开启JIT
/usr/local/php/bin/php -d opcache.jit_buffer_size=64M -d opcache.jit=1205 bench.php
/usr/local/php/bin/php -d opcache.jit=tracing bench.php

如果你觉得此文章对你有帮助,鄙人做了一个识别花草物体的小程序,免费使用,劳烦各位去看看
小程序有广告!!!(不影响使用的那种),您的访问和点击可以帮我带来收益

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值