天天看點

lnmp全面優化集合nginx+mysql+php

一: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"
           

最後全部修改完記得重新開機生效:lnmp restart

  

 

轉載于:https://www.cnblogs.com/sunbeidan/p/5016635.html