首页 > 其他分享 >LNMP动态⽹站

LNMP动态⽹站

时间:2024-08-26 21:50:24浏览次数:8  
标签:php log fpm LNMP nginx 动态 root pm

LNMP动态⽹站

安装LNMP架构

yum安装 nginx1.24.0 php7.2 Mriadb5.7

1.安装 Nginx

//1.使⽤Nginx官⽅提供的rpm包
[root@nginx ~]# cat /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
//2.执⾏yum安装
[root@nginx ~]# yum install nginx -y
[root@nginx ~]# systemctl start nginx
[root@nginx ~]# systemctl enable nginx

2.使⽤第三⽅扩展epel源安装php7.2

//移除旧版php
[root@nginx ~]# yum remove php-mysql-5.4 php php-fpm php-common

//安装扩展源
[root@nginx ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@nginx ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

//安装php72版本
[root@nginx ~]# yum -y install php72w php72w-cli php72w-common php72w-devel \
php72w-embedded php72w-gd php72w-mbstryuan php72w-pdo php72w-xml php72w-fpm \
php72w-mysqlnd php72w-opcache --nogpgcheck

//启动php
[root@nginx ~]# systemctl start php-fpm
[root@nginx ~]# systemctl enable php-fpm

3.安装 Mariadb

//下载官⽅扩展源, 扩展源集成mysql5.6、 5.7、 8.0,仅5.7仓库是开启
[root@nginx ~]# rpm -ivh http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm
[root@nginx ~]# yum install mysql-community-server -y --nogpgcheck
[root@nginx ~]# systemctl start mysqld
[root@nginx ~]# systemctl enable mysqld
[root@nginx ~]# systemctl status mysqld

//如果mysql登陆需要密码,请查看该⽂件
[root@nginx ~]# grep 'temporary password' /var/log/mysqld.log
2023-06-03T05:54:37.607361Z 1 [Note] A temporary password is generated for
root@localhost: Fk%:(-KCC3St

//登陆mysql重新配置密码
[root@nginx ~]# mysql -uroot -p'123456'
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> flush privileges;

#登不上试试以下方法
[root@linuxprobe mysql]# mysql -h 127.0.0.1 -p123456
#CREATE USER `root`@`127.0.0.1` IDENTIFIED BY '123456';

image-20240826211231307

image-20240826211250627

Nginx与PHP原理

Nginx FastCGI的运⾏原理

image-20230602153136732

nginx fastcgi`访问`php

fastcgi 协议是⼀种标准化的协议,⽤于定义 Web 服务器和应⽤程序之间的通信⽅式。 nginx 和 PHP-FPM 之间
使⽤ fastcgi 协议来进⾏通信,并通过请求和响应消息传递数据。

1.⽤户发送http请求报⽂给nginx服务器
2.nginx会根据⽂件url和后缀来判断请求
3.如果请求的是静态内容,nginx会将结果直接返回给⽤户
4.如果请求的是动态内容,nginx会将请求交给fastcgi客户端,通过fastcgi_pass将这个请求发送给php-fpm
5.php-fpm收到请求后会通过本地监听的socket交给wrapper
6.wrapper收到请求会⽣成新的线程调⽤php动态程序解析服务器
7.如果⽤户请求的是博⽂、或者内容、 PHP会请求MySQL查询结果
8.如果⽤户请求的是图⽚、附件、 PHP会请求nfs存储查询结果
9.php会将查询到的结果交给Nginx
10.nginx会⽣成⼀个响应报⽂返还给⽤户

PHP配置文件优化

php-ini优化

//打开php的安全模式,控制php执⾏危险函数, 默认是Off,改为On
sql.safe_mode = Off
//关闭php头部信息, 隐藏版本号, 默认是On,该为Off
expose_php = On
//错误信息输出控制
display_error = Off
error_reportyuan = E_WARNING & E_ERROR
//记录错误⽇志⾄后台, ⽅便追溯
log_errors = On
error_log = /var/log/php_error.log
//每个脚本时间最⼤内存
memory_limit = 128M
//上传⽂件最⼤许可,默认2M, 建议调整为16,32M
upload_max_filesize = 2M
//禁⽌远程执⾏phpshell,默认On, 建议Off
allow_url_fopen = On
//时区调整,默认PRC, 建议调整为Asia/Shanghai
date.timezone = PRC

//整体优化后配置⽂件
sql.safe_mode = Off
expose_php = Off
display_error = Off
error_reportyuan = E_WARNING & E_ERROR
log_errors = On
error_log = /var/log/php_error.log
upload_max_filesize = 50M
allow_url_fopen = Off
date.timezone = Asia/Shanghai

php-fpm优化

PHP-FPM配置⽂件 4核16G、 8核16G

[root@nginx ~]# cat /etc/php-fpm.d/www.conf
[global]
pid = /var/run/php-fpm.pid
#php-fpm程序错误⽇志
error_log = /var/log/php/php-fpm.log
log_level = warnyuan
#进程打开⽂件的软限制,⽤来限制 PHP-FPM 进程可以同时打开的最⼤⽂件数量。
rlimit_files = 655350
#PHP-FPM 应⽤程序使⽤的事件机制,可以选⽤ select、 poll 和 epoll 三种机制。
events.mechanism = epoll

[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000
listen.owner = www
listen.group = www
listen.mode = 0660

listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 512
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 30
pm.process_idle_timeout = 15s;

pm.max_requests = 2048

#php-www模块错误⽇志
php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php/php-www.log
php_admin_flag[log_errors] = on

#php慢查询⽇志
request_slowlog_timeout = 5s
slowlog = /var/log/php/php-slow.log

PHP5-FPM配置详解释

[global]
#pid设置, 记录程序启动后pid
pid = /var/run/php-fpm.pid
#php-fpm程序启动错误⽇志路径
error_log = /soft/log/php/php-fpm_error.log
# 错误级别. 可⽤级别为: alert(必须⽴即处理) ,error(错误情况) , warnyuan(警告情况) , notice(⼀般
重要信息) , debug(调试信息) . 默认: notice.
log_level = warnyuan
#进程打开⽂件的软限制,⽤来限制 PHP-FPM 进程可以同时打开的最⼤⽂件数量
rlimit_files = 65535
#PHP-FPM 应⽤程序使⽤的事件机制,可以选⽤ select、 poll 和 epoll 三种机制。
events.mechanism = epoll

#启动进程的⽤户和组
[www]
user = www
group = www

# fpm监听端⼝
listen = 127.0.0.1:9000
# unix socket设置选项,如果使⽤tcp⽅式访问,这⾥注释即可。
listen.owner = www
listen.group = www
# 允许访问FastCGI进程的IP, any不限制
listen.allowed_clients = 127.0.0.1

# pm设置动态调度
pm = dynamic
# 同⼀时刻最⼤的php-fpm⼦进程数量
pm.max_children = 200
# 动态⽅式下的起始php-fpm进程数量
pm.start_servers = 20
# 动态⽅式下服务器空闲时最⼩php-fpm进程数量
pm.min_spare_servers = 10
# 动态⽅式下服务器空闲时最⼤php-fpm进程数量
pm.max_spare_servers = 30
# 最⼤请求
pm.max_requests = 1024
pm.process_idle_timeout = 15s;
# FPM状态⻚⾯,⽤于监控php-fpm状态使⽤
pm.status_path = /status
# 错误⽇志
php_flag[display_errors] = off
php_admin_value[error_log] = /soft/log/php/php-www_error.log
php_admin_flag[log_errors] = on

# 配置php慢查询, 以及慢查询记录⽇志位置
request_slowlog_timeout = 5s
slowlog = /soft/log/php/php-slow.log

标签:php,log,fpm,LNMP,nginx,动态,root,pm
From: https://www.cnblogs.com/zgw03/p/18381624

相关文章

  • 动态dp——P8820 [CSP-S 2022] 数据传输 题解
    P8820[CSP-S2022]数据传输可怜的cnblog被(昨天DDos+今天CC)攻击了(望周知!),只好先发在CSDN题面:题目描述小C正在设计计算机网络中的路由系统。测试用的网络总共有nn......
  • Request processing failed:MyBatisSystemException 黑马web开发课程P152中可能出现的
    该异常的最后一句,通过翻译,大概是:   [dispatcherServlet]:servlet.service()forservlet[dispatcherServlet]在路径[]的上下文中抛出异常[请求处理失败:MyBatisSystemException]    经过对代码的检查,发现controller,sevice,dao层业务逻辑都没有问题dao层的map......
  • java在项目中实现个性化定制的数据可视化图表———静态,动态获取数据
    一、Echarts介绍ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。ECharts最初由百度团队开源,并于2018年初捐赠给Apache基金会,成为ASF孵化级项目。2021年1月26日晚,Apache基金会官方宣布ECharts项目正式毕业。1月28日,EChar......
  • 在 C/C++ 中使用 MY_API 宏封装动态库:一种高效的跨平台接口实现方法
    目录1.背景介绍2.MY_API宏的定义3.使用MY_API宏封装动态库4.编译和使用动态库5.结论在现代软件开发中,封装动态库(DynamicLinkLibrary,DLL)以提供可复用的功能模块已经成为一种常见的实践。然而,在开发跨平台库时,由于不同操作系统对于动态库的导出和导入机制有......
  • 如何编译FFTW3库:静态库与动态库的编译指南
    目录1.下载并解压FFTW3库2.配置编译选项3.编译并安装库4.验证编译结果5.在项目中使用FFTW3库6.总结FFTW3(FastestFourierTransformintheWest)是一个广泛使用的高性能傅里叶变换库。它支持多种优化,适用于多线程计算和SIMD指令,是处理大规模数据傅里叶变换的理......
  • Vue动态路径参数
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title><......
  • vue element-ui表格table 表格动态 添加行、删除行、添加列、删除列 自定义表头
         vuetable表格动态添加行、删除行、添加列、删除列自定义表头; 增加一行、删除一行、添加一列、删除一列;每行带输入框input代码1、HTML部分:<template><divclass="app-container"><el-table:data="tableData"borderstyle="width:600px;margin-to......
  • 10、Flink动态表之 DataStream 上的关系查询详解
    a)DataStream上的关系查询下表比较了传统的关系代数和流处理与输入数据、执行和输出结果的关系。关系代数/SQL流处理关系(或表)是有界(多)元组集合。流是一个无限元组序列。对批数据(例如关系数据库中的表)执行的查询可以访问完整的输入数据。流式查询在启动时不能访问......
  • 【VUE声明式导航跳转如何传参】router-link查询参数传参&动态路由传参
    VUE声明式导航跳转如何传参文章目录VUE声明式导航跳转如何传参前言一、查询参数传参语法实现步骤1.实现【首页】和【搜索页】的基础点击功能2.实现【首页】向【搜索页】跳转时的传参功能JS中如何获取传值二、动态路由传参语法实现步骤1.实现首页和搜索页的基础功能2.......
  • 动态规划01-背包问题
    01背包问题有NNN件物品和一个容量是VVV的背包。每件物品只能使......