多语言展示
当前在线:537今日阅读:168今日分享:49

Apache配置学习笔记

一些配置解释:浏览器打开:http://ip(默认打开index.html或者index.php),测试的时候selinux最好关掉,iptables最好是清空的,否则可能会报错或看不到网页。Apache默认监听TCP协议80端口Apache服务默认会启动一个主进程(控制进程)和多个子进程查看apache相关进程:psaux|grephttpd其中以root身份运行的是主进程,以apache身份运行的是子进程,主进程的进程ID保存在/etc/httpd/run/httpd.pid文件内。查看监听端口:netstat-tupln|grep80ApacheDSO:dynamicsharedobjectApache是一个模块化设计的服务,核心只包含主要功能,扩展功能通过模块实现,不同的模块可以被静态的编译进程序,也可以动态加载。Apache模块动态加载通过dso实现查看模块httpd-M查看静态编译入程序的模块:httpd-lyuminstall-yhttpd-toolsyumlist|gerphttpdyuminstall-yhttpd-*安装全部的httpd服务相关软件包apxs(需要安装相关功能)这个工具可以独立的编译Apache服务模块查看下这个工具的信息:whichapxsrpm-qf/usr/sbin/apxshttpd-M看到的so_module(static)这个模块就是DSO功能模块,static是静态编译进的表示,share是DSO的httpd-l查看静态编译进来的模块core.c核心prefork.c进程管理的功能http_core.chttp的核心功能mod_so.cDSO模块功能ApacheMPM:MPM(MultiProcessModules)负责实现网络监听,请求的处理等功能,MPM有很多种,目的是为了在不同平台环境下实现最优化的性能及稳定性平台MPMBeOSbeosNetWarempm_netwareOS/2mpmt_os2Linuxprefork或workerWindowsmpm_winnt查看当前Apache服务所使用的MPMhttpd-lprefork.c默认静态编译进Apachehttpd-VPrefork与worker区别Prefork是非线程,预生成进程型MPM,prefork会预先启动一些子进程,每个子进程一个时间点只能处理一个请求,并且会根据并发请求数量动态生成更多子进程。线程安全Worker是线程化的,多进程的MPM,每个进程可以生成多个线程,每个线程处理一个请求。Worker的效率没有prefork高。线程化安全性有问题修改MPM需要重新编译ApacheApacheMPM(preforkorworker)详解/etc/httpd/conf/httpd.conf//如果加载了这个模块,就实现一下配置,一个条件化模块加载StartServers8//服务在启动时默认启动几个子进程MinSpareServers5//最小空闲进程数量MaxSpareServers20//最大空闲进程数量ServerLimit256//限制MaxClientsMaxClients256//最大并发量,就是同时访问数量MaxRequestsPerChild4000//每个子进程最多能处理的请求数量,处理够数量后就被kill然后重新启动top命令查看进程;压力测试:ab-c16-n10000http://IP/index.html-c并发量-n请求次数配合压力测试与自己的host性能与实际需求环境来优化psuax|grephttpdwatch-n1“psuax|grephttpd”动态查看Apache配置文件:日志:/etc/httpd/logs模块的保存位置:/etc/httpd/modules模块配置文件:/etc/httpd/conf.d运行时的一些信息:/etc/httpd/run主配置文件:/etc/httpd/conf/httpd.conf,注释有说,apache主配置文件分为三个部分:1、全局配置;2、主服务器或者默认服务器配置,说的就是那一个;3、虚拟主机配置。主配置文件(/etc/httpd/conf/httpd.conf)修改的时候备份一份httpd.conf.bak。Section1:GlobalEnvironment第一部分配置,全局配置,针对真个apache服务的配置,配置后全局生效;ServerTokensOS默认值OS,当我们服务器返回一些信息的时候,用来控制报错信息多少的程度,ServerTokensMajor修改os为Major比OS少,Full全部,涉及安全的,最好设置成?ServerRoot“/etc/httpd”控制服务的主目录也就是配置文件的主目录。上面有一个注释donotaddaslash···是不能在···httpd后加/PidFilerun/httpd.pid记录apache主进程(控制进程)的Pid,用的是相对路径ServerRoot+自己的路径就OK。Timeout60apache的超时时间。KeepAliveoffKeepAlive是TCP的一个功能,正常情况下我们与服务器建立一个TCP连接只能进行一次请求,但访问一个页面可能包含几个请求,如果每个请求都去建立一个新的TCP连接,会很耗费资源,如果打开了KeepAliveTCP的饱和功能这样允许在一个TCP连接中进行多次请求。MaxKeepAliveRequests100一个TCP连接最多的请求次数设定,0是无限次,别这样设置。KeepAliveTimeout15一个TCP连接两次请求之间的最大时间间隔Listen80控制我们服务默认的监听端口号,或者在哪个IP地址上监听,Listen80是在服务器上,所有ip地址都监听80端口;如果你的服务器有多块网卡,每个网卡都有自己的IP,设置Listen80时,从哪块网卡访问都是可以的;如果我们指向让我们的web服务工作在多网卡中的一块卡上,ListenIP:80就是让web服务只工作在这个ip的网卡上;如果一个网卡多个ip地址呢,那就是只监听链接到这个ip地址80端口的请求。DSO设置:LoadModuleModuleName模块路径,模块的加载信息。Includeconf.d/*.conf加载模块的配置文件,(其实就是加载了conf.d中的模块配置文件,),每个模块都可以在conf.d中有一个独立的配置文件,之所以起作用了就是因为这条加载命令;conf.d中每个模块中的配置文件完全可以写到httpd.conf中。Userapache和Groupapache是指定apache服务子进程是以哪个用户身份运行的;psuax|grephttpd,root父进程,apache子进程。模块配置文件:/etc/httpd/conf.d(Apache通过模块扩充自己的功能,当安装了某些模块后,模块的配置文件在此)Apache的根目录:默认是/var/www/html。mainServerconfigurationg:默认管理员邮箱修改:ServerAdminroot@localhost,改成:992158588@qq.com;作用:服务器出错时生成一个报错页面,终端用户可以看到这个邮箱并反馈意见到邮箱。#ServerNamewww.example.com:80----->可以改成自己的域名,去掉#号注释,指定自己服务器的域名。UseCanonicalNameoff是否使用严格合法的域名,实际是控制的服务端的参数接受,如果使用虚拟主机了必须是off。Apache默认根目录修改:DocumentRoot“/var/www/html”修改示例:DocumentRoot“/home/baidu.com”修改之后创建目录:mkdir-p/home/baidu.comecho“新根目录”>>/home/baidu.com/index.htmlservicehttpdreload,重新加载配置文件,刷新网页查看根目录权限选项等控制:->修改/home/baidu.com参数参数OpinionsFollowSymlinksAllowOverrideNone将参数应用到/var/www/html实施访问控制功能,Driectory是针对目录实施访问控制功能的;Apache允许对不同目录有不同的访问控制功能,缺省的访问控制如下:/根目录其实表示应用到了全局,类似浏览器中http://192.168.0.1/这个/OpinionsFollowSymlinksAllowOverrideNone地址重写:需要apache加载了rewrite_module模块,配置一下让网站程序所在的目录可以使用地址重写的功能。Apachectl-M查看模块,rewrite_module修改配置文件让指定目录可以使用apache的地址重写功能vim/etc/httpd/conf/httpd.conf?FollowSymLinks--->修改目录为”/mnt/www”``````修改AllowOverrideNone---->AllowOverrideAll;/mnt/www目录下的网站程序都可以使用.htaccess这个文件的自定义地址重写规则其它详细配置:->修改/home/baidu.orgOptionsIndexesFollowSymLinks是否允许没有主页的时候进行文件索引AllowOverrideNoneOrderallow,denyAllowfromall默认参数只影响到/var/www/html这个目录下UserDirdisabledUserDirpublic_html这是一个条件加载语句,if加载了这个模块,定义的规则才会生效DirectoryIndexindex.htmlindex.phpindex.html.var当我们没有指定任何网页的时候,默认加载的网页,就是首页的名称。AccessFileName.htaccess加载分布式访问控制的文件后面跟了正则表达式,不允许访问.ht开头的文件,就是不允许客户端访问Orderallow,denyDenyfrom:allSatisfyAll对文件访问进行控制TypesConfig/etc/mime.types指定mime.types配置文件的访问路径,mime是指定文件它的每一种类型,比如.txt是纯文本的,.html也是纯文本的,````````DefaultTypetext/plain指定网页默认类型,这里是纯文的。HostnameLookupsoff是否进行域名的解析,一般关掉,,,会占用资源,而且一般的ip地址没有反向解析,或者不允许;apache有一个日志叫XXX,里面记录了每个客户端的访问信息,包括ip地址,那些请求,访问了那些页面···如果开启了,apache会将这些源ip地址解析到域名,慢慢ErrorLoglogs/error_log指定默认的服务器错误日志的保存路径LogLevelwarn默认日志记录的详细程度warn是最详细的LogFormat是日志记录的格式,Customloglogs/access_logcombined指定默认访问日志的位置ServerSignatureOn服务器签名,类似ServerToken,控制服务器报错信息的详细程度。Alias/icons/“var/www/icons”服务器路径别名,前面是别名后面是完整路径ScriptAlias/cgi-bin/“/var/www/cgi-bin/”脚本别名AddIcon文件类型图标AddDefaultCharsetUTF-8指定默认网页的编码BrowserMatch进行浏览器设置匹配创建虚拟主机:当我们设置多个域名指向主机的时,想要每个域名都有自己的发布目录,那么可以用apache的虚拟主机功能。#NameVirtualHost*:80这一行的#去掉,告诉apache开启虚拟主机的功能,*:80是监听所有IP的80端口,#是注释符。第一个虚拟主机会做为默认的虚拟主机,一般不会用在真正的网站上,如果有陌生的域名指向了我们的服务器IP,打开的就是第一个默认的虚拟主机的发布目录中的内容。#默认虚拟主机开始ServerAdminwebmaster@dummy-host.example.comDocumentRoot/mnt/www/default/public_htmlServerNamedummy-host.example.comServerAliaswww.dummy-host.example.comErrorLoglogs/dummy-host.example.com-error_logCustomLoglogs/dummy-host.example.com-access_logcommon#默认虚拟主机结束#baidu开始ServerAdminwanghao@baidu.cnDocumentRoot/mnt/www/baidu.cn/public_htmlServerNamebaidu.cnServerAliaswww.baidu.cnErrorLog/mnt/www/baidu.cn/logs/error.logCustomLog/mnt/www/baidu.cn/logs/access.logcommon#baidu结束baidu.me的虚拟主机参照baidu.cn的设置,虚拟主机创建完成别忘了创建目录:mkdir-p/mnt/www/baidu.cn/public_htmlmkdir/mnt/www/baidu.cn/logsservicehttpdreload,重新加载配置文件;echo“这是baidu.cn的网站”>>/mnt/www/baidu.cn/public_html/index.html,访问域名测试。
推荐信息