钱红雷
[摘 要]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用户的最大连接数)