錢紅雷
[摘 要]LAMP(Linux+Apache+MySQL+PHP)網站架構是性能非常穩定的Web框架,該框架包括:Linux操作系統、Apache網絡服務器、MySQL數據庫、PHP編程語言。本文描述的是LAMP搭建過程中編譯軟件的參數和配置文件設置,從而達到LAMP性能優化的目的。
[關鍵詞]LAMP系統;參數配置;Linux;Apache;PHP;MySQL
doi:10.3969/j.issn.1673 - 0194.2016.08.119
[中圖分類號]TP311 [文獻標識碼]A [文章編號]1673-0194(2016)08-0-01
本文從Linux系統、MySQL數據庫、安裝Apache和PHP三個方面入手,分別描述了如何進行參數配置和性能優化。
1 Linux系統優化
1.1 關閉無用的后臺守護進程
運行ntsysv進行選擇啟動哪些服務,從而節省物理內存消耗。
1.2 減少終端連接數
根據自己的實際需求,運行vi /etc/inittab修改。
1.3 編譯內核啟動配置文件
#vi /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1 //防范少量SYN攻擊
net.ipv4.tcp_tw_reuse = 1 //將TIME-WAIT sockets重新用于新的TCP連接
net.ipv4.tcp_tw_recycle = 1 //開啟TIME-WAIT sockets的快速回收
net.ipv4.tcp_keepalive_time = 1200 //TCP發送keepalive消息的頻度
net.ipv4.ip_local_port_range = 1024 65000 //表示用于向外連接的端口范圍
net.ipv4.tcp_max_syn_backlog = 8192 //容納更多等待連接的網絡連接數
2 設置MySQL數據庫
2.1 修改數據庫最大連接數和查詢緩存
#vi /etc/my.cnf
max_connections=20000 //設置MySQL數據庫最大連接數
query_cache_size=32M //取決于查詢的實際情況,但最好設置為1 024的倍數
query_cache_type=1 //將會緩存所有的結果
2.2 禁止遠程連接數據庫
確認MySQL數據庫的host設置為localhost。
2.3 用戶目錄權限限制
確保MySQL運行時,只使用對數據庫目錄具有讀或寫權限的Linux用戶來運行。
# chown -R root /usr/local/mysql/ //mysql主目錄給root
# chown -R mysql.mysql/usr/local/mysql /var //確保數據庫目錄權限所屬MySQL用戶
3 優化編譯Apache和PHP
使用DSO動態編譯
3.1 編譯Apache
因為Apache是1.3.*的版本非常穩定,所以用這個版本編譯,編譯前把Apache的最大連接數修改為2 000(linux默認256)。
#vi httpd.h
define HARD_SERVER_LIMIT 50000
#./configure --prefix=/usr/local/apache --enable-module=so --enable-module=rewrite --enable-shared=max --enable-module=most
#make
#make install
3.2 編譯Apache的限制IP并發數的模塊
#/usr/local/apache/bin/apxs –c –i –a mod_limitipconn.c
3.3 編譯PHP
#./configure --prefix=/usr/local/ph --with-mysql--with-apxs=/usr/local/apache/bin/apxs --with-xml --enable-ftp --enable-force-cgi-redirect --enable-trans-sid --enable-track-vars --enable-url-includes --enable-sockets --with-gd=/usr/local/gd --with-zlib-dir=/usr/lib --with-gdbm-dir=/usr/lib
#make
#make install
3.4 編輯httpd.conf文件
查找
#Options Indexes FollowSymLinks MultiViews //去掉"Indexes"
查找
在此范圍添加
AddType application/x-httpd-php.php
AddType application/x-httpd- php-source.phps
把#ExtendedStatus On這一行注釋掉
添加
#this is my new mod
MaxConnPerIP 1(每個IP用戶的最大連接數)