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