lnmp的全名是linux+nginx+mysql+php,既然是全面优化那我们就从linux系统的选择入手。debian系统可以算是 linux各分支中做的比较突出的一类,连谷歌都抛弃linux订制,由此可见debian系统之优秀,相较其它linux系统debian具有稳定、占 用资源少对于网站web环境来说这些正是我们所需要的,其中debian6版本算是这一优点的集中体现。目前市面上有很多的安装包,其中军哥的lnmp是 被站长使用较多的一种。

也许有朋友会问小三啊,为啥不用lanmp呢?
参考:lnmp和lnmpa性能测试
用nginx的目地是为提高并发能力。
在同一台机器上使用nginx反向 apache,等于脱裤子放屁。+_+*

一:lnmp的nginx优化
主要是修改 /usr/local/nginx/conf/nginx.conf
1.军哥的lnmp安装包中nginx的worker_processes默认设置是1,这里我们要根据服务器cpu具体的核心数来优化。通常4核的CPU我会把值设为3。

2核CPU,开启2个进程
worker_processes 2;
worker_cpu_affinity 01 10; 4核CPU,开3个进程
worker_processes 3;
worker_cpu_affinity 0010 0100 1000; 8核CPU,开8个进程
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

worker_processes参数解析可参考:worker_processes详解

2.worker_rlimit_nofile参数默认是5xxxx.

worker_rlimit_nofile 65535;

events
{
use epoll;
worker_connections 32700;
}

worker_rlimit_nofile参数讲解可参考:nginx优化参数详解

添加防压力测试
if ($http_user_agent ~ ApacheBench|WebBench|Jmeter|must-revalidate|Havij) {retun 503;}
添加针对CVE-2013-4547链接空格的补丁
if ($request_uri ~ " ") {return 444;}

二:lnmp的mysql优化

用/usr/local/mysql/share/mysql/目录下的my-large.cnf 文件替换根目录etc下的my.cnf文件

my-huge.cnf: 适合1GB - 2GB RAM主机使用
my-large.cnf: 适合 512MB RAM使用
my-medium.cnf: 只有 32MB - 64MB RAM使用
my-small.cnf:小于64MB 用,MySQL会占用很少资源
my-innodb-heavy-4G.cnf 适合4G以上使用

禁用mysql日志:
修改 /etc/my.cnf 文件
在log-bin=mysql-bin和binlog_format=mixed
这两行前面加#注释掉即可。 在query_cache_size= 16M下面添加一行:
tmp_table_size = 200M

mysql参数讲解可参考:mysql优化三:lnmp的php相关参数优化
优化主要是修改/usr/local/php/etc/目录下的php-fpm.conf和php.ini文件

1.php-fpm.conf参数优化

删除value name="display_errors" 这一行的代码,防止坏人从PHP错误中找到漏洞。

max_children默认参数是开启5个进程。数值要根据内存大小来定,每一个php-cgi所耗费的内存在20M左右。

126M内存默认即可
256M 10个
512M 20个
1G 40个

request_terminate_timeout参数默认是0s,修改为300s

rlimit_files参数默认5xxxx,修改为65535

php-fpm参数讲解可参考:php-fpm详解

2.php.ini参数优化

disable_functions = 默认禁用了一些参数,PHP中有一些函数的风险性还是相当大的,如果允许这些函数执行,当PHP 程序出现漏洞时,损失是非常严重的

fsockopen这个参数用的比较多,可以删除。

另外从安全方面考虑可隐藏PHP版本号
将文件里面的 expose_php = On
修改为 expose_php = Off 即可 将display_errors =On改为Off

最后修改最大连接数使重启后也可生效,在/etc/profile 最后增加一行 ulimit -SHn 65535

另外LNMP安装包里有一个eAccelerator的安装文件。最好装一下。这个是加速PHP缓存的还不错。
关于eAccelerator的设置我就给出两个修改的地方吧:

eaccelerator.shm_size="16" 

#默认是占用16M共享内存,军哥好像是1,你就改成16吧。大小也可根据你的内存情况设置。

另外默认是eaccelerator缓存目录是/usr/local/eaccelerator_cache,这样用硬盘缓存的话,某些情况会影响php的响应时间。我们可以直接放到共享内存里面老。
运行命令:mkdir -p /dev/shm/eaccelerator_cache
修改目录为以下就OK了。

eaccelerator.cache_dir="/dev/shm/eaccelerator_cache"

最后全部修改完记得重启生效:/root/lnmp restart

lnmp全面优化集合nginx+mysql+php的更多相关文章

  1. Vmware搭建LNMP环境(Centos7+Nginx+Mysql+PHP7.1.8)

    参考:1.Linux学习之CentOS(一)----在VMware虚拟机中安装CentOS 7(图文教程) 2.Centos7搭建LNMP环境 3.MySQL5.7修改默认root密码 4.CentO ...

  2. 五、部署LNMP环境(linux + nginx + mysql + php)

    装包(nginx.数据库.php.php调用)---------起服务-----权限   装包: yum -y install gcc openssl-devel pcre-devel zlib-de ...

  3. [mysql][【优化集合】mysql数据库优化集合

    三个层面: 1.系统层面 2.mysql配置参数 3.sql语句优化 =========================================================== 一.系统层 ...

  4. LNMP(linux+nginx+mysql+php)服务器环境配置【转载】

    本文转载自 园友David_Tang的博客,如有侵权请联系本人及时删除,原文地址: http://www.cnblogs.com/mchina/archive/2012/05/17/2507102.h ...

  5. LNMP(Linux+Nginx+Mysql+PHP---源码)环境搭建

    LNMP(Linux+Nginx+Mysql+PHP(Perl)) Linux:[root@dep5 mysql]# cat /etc/issueRed Hat Enterprise Linux Se ...

  6. centos7安装Lnmp(Linux+Nginx+MySql+Php+phpMyAdmin+Apache)

    centos7安装Lnmp(Linux+Nginx+MySql+Php)及Apache   Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx是一个高性能的HTTP和反向代理服务器,Ng ...

  7. LNMP架构下的nginx、mysql、php的源码安装

    一.LNMP的介绍 LNMP就是Linux+Nginx+Mysql+Php这种网站服务架构.Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统,常见版本有:centos.ubun ...

  8. Ubuntu18.04下搭建LNMP教程-超详细图文(Nginx+MySQL+PHP含各种解决报错问题)

     笔者最近在VM15.0上安装了Ubuntu18.,先来安装一个LNMP(Nginx+MySQL+PHP)网站服务器架构,为后续的实验做准备~    LNMP是指一组通常一起使用来运行动态网站或者服务 ...

  9. LNMP小项目搭建,Centos7.6环境搭建Linux+nginx+mysql+php,wordpress个人博客的搭建(完整搭建步骤)

    一.LNMP搭建,基于nginx服务器搭建wordpress个人博客 准备环境:centos7.6环境下web服务器(nginx+php):主机名:web01,ip:192.168.248.172my ...

随机推荐

  1. php编程中容易忽略的地方

    一:fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] ...

  2. HBase shell 常用指令

    HBase shell 常用指令 连接HBase $ ./bin/hbase shell 打开帮助 hbase(main):001:0> help 创建表 hbase(main):003:0&g ...

  3. 小白日记32:kali渗透测试之Web渗透-扫描工具-QWASP_ZAP

    扫描工具-QWASP_ZAP 十大安全工具之一,集成性工具,功能完善,而且强大.既可做主动扫描,也可做截断代理.开源免费跨平台,简单易用,体验相对混乱,但在主动扫描方面,相对占优.[kali集成] # ...

  4. 求可能组合VB源码代写

    输入1-20的整数n,把从1到n的n个整数摆成一个环,使得该环上任意相邻的两个数之和为素数.求出所有可能组合. 专业程序代写c++程序代写

  5. jQuery扩展工具方法

    共享学习Jquery源码的一些东西 jQuery.extend({   expando  :  生成唯一JQ字符串(内部) noConflict()  :  防止冲突 ---------------- ...

  6. 如何用拉姆达表达式(Lambda Expressions) 书写左链接查询

    在C#中,如果要实现两个列表的左链接查询,我们的一般用法就是用的linq表达式就是 List<Pet> pets = }, }, } }; List<Pet2> pets2 = ...

  7. javaweb学习总结二十二(servlet开发中常见的问题汇总)

    一:web应用的映射问题 通常我们从别人那里拷贝来的代码,自己会修改应用的名称,但是web映射的访问路径并没有修改,还是原来的映射. 解决方法: 工程右键--properties--myeclipse ...

  8. [改善Java代码]频繁插入和删除时使用LinkedList

    一.分析 前面有文章分析了列表的表里方式,也就是“读”的操作.本文将介绍表的“写”操作:即插入.删除.修改动作. 二.场景 1.插入元素 列表中我们使用最多的是ArrayList,下面看看他的插入(a ...

  9. 关于Linux测试题

    Linux 测试题: 1. 在Linux系统中,以 文件 方式访问设备 . 2. 某文件的权限为:drw-r--r--,用数值形式表示该权限,则该八进制数为: 644 ,该文件属性是 目录 . 3. ...

  10. 一些xcode5.1创建的工程在xcode6.0下不能编译的问题

    这是因为Xcode5.1.1自动选上了arm64架构, 建议解决办法是: Build Settings-ValidArchitectures中却掉arm64