LAMP配置
##1. Apache常用配置
### 配置文件内容
#apache服务根目录
ServerRoot "/opt/apache"
#服务管理员
ServerAdmin you@example.com
#监听端口
Listen 80
#默认首页
DirectoryIndex index.php
#加载php模块
LoadModule php5_module modules/libphp5.so
#解析php
AddType application/x-httpd-php .php
DocumentRoot "/opt/apache/htdocs" #WEB文件根目录
<Directory "/opt/apache/htdocs">
# 官方文档链接 http://httpd.apache.org/docs/2.2/mod/core.html
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all #允许所有请求
</Directory>
AllowOverride参数详解
- none 不允许.htaccess使用任何指令
- AuthConfig 允许使用所有的权限指令,包括 AuthDBMGroupFile AuthDBMUserFile
AuthGroupFile AuthName AuthTypeAuthUserFile 和 Require - FileInfo 允许使用文件控制类型的指令。包括 AddEncoding AddLanguage AddType
DEfaultType ErrorDocument LanguagePriority - Indexes 允许使用目录控制类型的指令。包括 AddDescription AddIcon AddIconByEncoding
AddIconByType DefaultIcon DirectoryIndex FancyIndexing HeaderName
IndexIgnore IndexOptions ReadmeName - Limit 允许使用权限控制指令。包括Allow Deny和Order
- Options 允许使用控制目录特征的指令,包括Options 和XBitHack
Options参数详解
- All 表示除MultiViews之外的所有特性。这也是Options指令的默认设置。
- None 表示不启用任何的服务器特性。
- FollowSymLinks 服务器允许在此目录中使用符号连接。如果该配置选项位于配置段中,将会被忽略。
- Indexes 如果输入的网址对应服务器上的一个文件目录,而此目录中又没有DirectoryIndex指令
- MultiViews 允许使用mod_negotiation模块提供内容协商的”多重视图”。如果客户端请求的路径可能对应多种类型的文件,那么服务器将根据客户端请求的具体情况自动选择一个最匹配客户端要求的文件。
- SymLinksIfOwnerMatch 服务器仅在符号连接与目标文件或目录的所有者具有相同的用户ID时才使用它。只有当符号连接和符号连接指向的目标文件或目录的所有者是同一用户时,才会使用符号连接。
- ExecCGI 允许使用mod_cgi模块执行CGI脚本。
- Includes 允许使用mod_include模块提供的服务器端包含功能
- IncludesNOEXEC 允许服务器端包含,但禁用”#exec cmd”和”#exec
cgi”。但仍可以从ScriptAlias目录使用”#include virtual”虚拟CGI脚本。
日志配置参数
ErrorLog "logs/error_log"
LogLevel warn #错误日志记录等级
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common #自定义日志 名为common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" common #日志路径 使用名为common的自定义格式
</IfModule>
LogLevel记录日志等级
- error 错误情况
- warn 警告情况
- info 普通信息
- debug 出错级别信息
日志格式
- %h - 客户端的ip地址或主机名
- %l - The 这是由客户端 identd 判断的RFC 1413身份,输出中的符号 “-” 表示此处信息无效
- %u - 由HTTP认证系统得到的访问该网页的客户名。有认证时才有效,输出中的符号 “-” 表示此处信息无效
- %t - 服务器完成对请求的处理时的时间
- “%r” - 引号中是客户发出的包含了许多有用信息的请求内容
- %>s - 这个是服务器返回给客户端的状态码
- %b - 最后这项是返回给客户端的不包括响应头的字节数
- “%{Referer}i” - 此项指明了该请求是从被哪个网页提交过来的
- “%{User-Agent}i” - 此项是客户浏览器提供的浏览器识别信息
实际访问日志
192.168.1.166 - - [04/Feb/2015:12:52:35 +0800] "GET / HTTP/1.1" 200 25
虚拟主机参数
基于域名的虚拟主机
<VirtualHost *:80>
DocumentRoot /web1
ServerName web1.com
ErrorLog /app/apache/logs/error_log
CustomLog /app/apache/logs/access_log combined
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /web2
ServerName web2.com
</VirtualHost>
基于IP的虚拟主机
<VirtualHost 210.20.30.40>
DocumentRoot /web1
ServerName web1.com
</VirtualHost>
<VirtualHost 210.20.30.50>
DocumentRoot web2
ServerName web2.com
</VirtualHost>
基于端口的虚拟主机
Listen 172.20.30.40:80
Listen 172.20.30.40:8080
<VirtualHost 172.20.30.40:80>
DocumentRoot /web1
ServerName web1.com
</VirtualHost>
<VirtualHost 172.20.30.40:8080>
DocumentRoot /web2
ServerName web2.com
</VirtualHost>
2. PHP常用配置
php.ini配置文件详解,前面介绍过的参数不再复述。
###常规配置
engine = On
short_open_tag = Off #tags识别
asp_tags = Off #asp tags识别
precision = 14 #浮点类型数显示时的有效位数
output_buffering = 4096 #输出缓存允许你在输出正文内容之后发送 header
implicit_flush = Off #告诉输出层在每个输出块之后自动刷新自身数据
disable_functions = #关闭特定函数
display_errors = Off #显示错误信息
log_errors = On #在日志文件里记录错误
request_order = "GP" #GET POST
register_argc_argv = On #是否声明 argv和argc 变量
post_max_size = 8M #最大POST大小
file_uploads = On #是否允许HTTP方式文件上载
upload_tmp_dir = #用于HTTP上载的文件的临时目录
upload_max_filesize = 2M #上载文件的最大大小
max_file_uploads = 20 #每次最大上传文件个数
allow_url_fopen = On #是否允许把URLs当作http:.. 或把文件当作ftp:...
default_socket_timeout = 60 #默认socker超时时间
#MySQL相关
mysql.allow_persistent = On #允许持久连接
mysql.cache_size = 2000 #缓存大小
mysql.max_persistent = -1 #持久连接的最大数目 -1不限制
mysql.max_links = -1 #最大链接
mysql.connect_timeout = 60 #连接超时时间
#session相关
session.save_handler = files #用于保存/取回数据的控制方式
session.use_cookies = 1 #是否使用cookies
session.name = PHPSESSID #设置cookies名
session.use_only_cookies = 1 #强制SESSION ID必须以COOKIE传递
session.auto_start = 0 #在请求启动时初始化session
session.cookie_lifetime = 0 #cookies保持时间
#session垃圾回收参数
session.gc_probability = 1 #按百分比整理
session.gc_divisor = 1000 #每次请求时有1/1000的机会启动"垃圾回收"进程
#Session ID传递参数
session.use_trans_sid = 0 #使用URL的方式传递session id
session.hash_function = 0 #生成SID MD5算法
session.hash_bits_per_character = 5 #指定在SID字符串中的每个字符内保存多少bit
PHP配置相关链接:
- PHP中文手册 http://php.net/manual/zh/
- 完整php.ini 参数详解 http://php.net/manual/zh/ini.php
3. LAMP常用调优方法
LAMP环境下的调优,以下所有参数均来自于网络,请根据实际环境进行调整。
基于稳定的perfork工作模式,调整apache主配置文件以下参数。
StartServers 50 #预创建50个进程
MinSpareServers 15 #保持最小空闲进程
MaxSpareServers 30 #保持最大空闲进程
MaxClients 225 #最大进程数
MaxRequestsPerChild 4000 #用来控制每个进程在处理了多少次请求之后自动销毁
请使用ps aux 查看进程占用内存数,以此调整实际环境中的参数,防止此消耗所有的资源。
php.ini常用配置参数
max_execution_time 30 #一个脚本可使用多少 CPU 秒
max_input_time 60 #一个脚本等待输入数据的时间有多长(秒)
memory_limit 32M #在被取消之前,一个脚本可使用多少内存(字节)
output_buffering 4096 #数据发送给客户机之前,有多少数据(字节)需要缓存
系统级的调优包括且不限于以下内容
- 解除ulimit限制
- I/O优化
- 内核参数优化 TCP等.