设为首页 收藏本站
查看: 2054|回复: 0

[经验分享] 使用rpm格式安装并配置httpd(Apache HTTP Server)

[复制链接]

尚未签到

发表于 2018-10-24 09:52:58 | 显示全部楼层 |阅读模式
  常用的WEB服务器软件:httpd(apache,a patchy server),nginx,lighttpd,IIS;
  httpd:由Apache软件基金会开发的一个开放源码的网页服务器,是目前最流行的Web服务器软件之一;
  httpd相关软件包说明
  httpd          主软件包;
  httpd-devel          http相关的开发包;
  httpd-manual          官方提供的手册;
  httpd-tools          httpd相关的工具(包括一些测试工具);
  安装httpd(rhel6系统,使用rpm安装)
  yum install -y httpd
  服务脚本:/etc/rc.d/init.d/httpd;
  工作目录:/etc/httpd;
  配置文件存放目录:/etc/httpd/conf/;
  主配置文件:/etc/httpd/conf/httpd.conf;
  扩展配置文件:/etc/httpd/conf.d/*.conf;
  socket:http(80/tcp),https(443/tcp);
  网页文件存放目录:/var/www/html/
  CGI脚本目录:/var/www/cgi-bin/
  模块目录:/etc/httpd/modules(链接到/usr/lib/httpd/modules);
  日志目录:/etc/httpd/logs(链接到/var/log/httpd);
  启动httpd服务:service httpd start;
  注意:在rhel系列中,启动httpd后会默认打开一个测试页面,如果不想显示该测试页,使用"mv -f /etc/httpd/conf.d/welcome.conf webcome.conf.bak",并重启服务即可;
  配置文件语法
  1,指令不区分大小写,但通常建议将首字母大写;
  2,指令的值可能会区分大小写(比如路径);
  3,指令和值之间用空格隔开即可;
  4,某些指令可以重复出现多次(如listen);
  5,紧跟在"#"符号后没有空格的为指令,是可以启用的,"#"符号后面紧跟有空格的为注释;
  主配置文件的构成
  1,全局配置:对主服务器或虚拟主机都生效,并且有些功能是服务器自身的工作属性;
  2,主服务器:与主站相关的设置;
  3,虚拟主机:虚拟主机相关的设置;
  注意:主服务器和虚拟主机不能同时启用;
  主配置文件的设置:/etc/httpd/conf/httpd.conf;
  ### Section 1: Global Environment
  ServerTokens OS          定义页面显示的服务器信息详细程度,可以指定其他参数;
  ServerRoot "/etc/httpd"          定义服务器的工作的根目录;
  PidFile run/httpd.pid          定义pid配置文件的路径(这是一个相对路径);
  Timeout 60          TCP连接的超时时间(如三次握手等等);
  KeepAlive Off          是否打开长连接,开启后有助于提升服务器性能,但如果在比较繁忙的服务器中,应考虑是否开启(服务器处理客户端的数量是有限的,要避免客户端长时间占用资源);
  MaxKeepAliveRequests 100          长连接请求的最大资源数,达到该限制后断开链接;
  KeepAliveTimeout 15
            prefork模型的相关设置;
  StartServers       8          服务器启动多少个空闲进程;
  MinSpareServers    5          最少空闲进程(如果8个空闲进程使用了4个,则会再启动一个空闲进程,保证存在5个空闲进程);
  MaxSpareServers   20          最大空闲进程(如果有500个用户访问,退出了450个,则kill掉30个);
  ServerLimit      256          为MaxClients设定的上限值(需要将服务器进程kill掉,然后在重启)
  MaxClients       256          最大客户端数量(最大允许多少个连接请求);
  MaxRequestsPerChild  4000          一个进程最多响应多少个用户请求,当接收用户请求4000次后,将其kill掉,生成新的进程响应用户请求;
  
            worker模型的相关设置;
  StartServers         4          默认启动的进程数;
  MaxClients         300          最大客户端数量(最大允许多少个连接请求);
  MinSpareThreads     25          最小空闲线程(所有进程的线程数之和);
  MaxSpareThreads     75          最大空闲线程(所有进程的线程数之和);
  ThreadsPerChild     25          一个进程生成多少个线程;
  MaxRequestsPerChild  0          每个进程响应多少个用户请求(由于是由线程来控制,为0表示不限制);
  
  Listen 12.34.56.78:80          httpd监听的IP地址和端口,可以不指定IP地址表示监听本机所有地址(listen可以出现多次,用于监听多个端口);
  LoadModule auth_basic_module modules/mod_auth_basic.so          指定httpd启动时装载的模块(前后分别为"模块名称/模块路径",路径为相对路径);
  Include conf.d/*.conf          装载额外的配置文件(相对路径);
  ExtendedStatus On          使用status时,是否显示更详细的信息(默认注释掉);
  User apache          httpd的work进程使用的用户;
  Group apache          httpd的work进程使用的组名;
  ### Section 2: 'Main' server configuration
  ServerAdmin root@localhost          服务器管理员的邮箱地址;
  ServerName www.example.com:80          服务器名称(如果不启用此指令,则服务器启动时会试图反解当前主机的IP地址,如果解析成功,则引用此主机名作为服务器名称,否则会使用"127.0.0.1"来作为默认主机名);
  DocumentRoot "/var/www/html"          网页文件存放的根目录;
            定义一个网站容器;
  Options FollowSymLinks          定义容器名称内文件被访问时的访问属性;
  Options的参数
  Indexes     允许索引目录,即没有默认页面时,列出网页文件列表(生成环境中应该关闭,如果作为下载站点时可以开启);
  none          不支持任何参数;
  FollowSymLinks          允许符号链接(是否允许访问页面中的符号链接所指向的源文件,如果没有必要可以关闭,在一定程度上可以提高服务器性能);
  Includes          允许执行服务器端包含"SSI"的文档,为了安全起见,应该关闭;
  ExecCGI          是否允许执行CGI脚本;
  MultViews          内容协商机制,根据客户端来源的语言来判定显示相匹配的的网页(消耗资源,没有必要不必开启);
  All          支持所有参数;
  AllowOverride None          是否使用.htacess覆写访问权限;
  AuthConfig          需要进程用户认证后才可以访问网页;
  Order allow,deny          定义基于主机的访问控制功能,可以实现基于IP、网络地址或主机名来定义,deny写在后面表示deny所有;
  Allow from all          允许所有的主机访问,或者使用Deny from all拒绝所有主机,也可以使用以下写法:
  Deny from 192.168.0.0/24
  Allow from 192.168.1.0/24 172.16.100.0/24 .edu  apache.org www.example.com 172.16
  
  注意: 目录可能会继承父目录的选项,在选择前"-”符号表示取消从父目录继承的某项功能;
       是否支持用户在个人的家目录中建立网页文件,使用http://xxx/~home/的方式访问;
  UserDir disabled          默认不允许,如果要启用此功能,将此项注释,去掉#UserDir public_html的注释,用户建立public_html目录,然后将网页文件放到该目录即可;
  
  DirectoryIndex index.html index.html.var          定义访问的默认页面,从左向右匹配;
  AccessFileName .htaccess          apache的每目录访问控制,在对应的目录下创建".htacess"文件,将访问控制机制写入即可,但会降低apache的执行效率,生产中通常禁用;
            模式匹配,以ht开头的文件,保障此类开头文件的安全性;
  Order allow,deny
  Deny from all
  Satisfy All
  
  TypesConfig /etc/mime.types          定义httpd支持的mime类型的文件;
  DefaultType text/plain          如果没有指定类型,默认使用的类型为:明文的纯文本类型;
  HostnameLookups Off          日志记录中,是否将每个访问用户的IP地址反解成主机名(消耗系统资源,建议不启用);
  EnableSendfile off
  ErrorLog logs/error_log          定义错误日志的存放位置;
  LogLevel warn          定义日志级别;
  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined          定义日志格式,最后面的一项为日志格式的名称;
  %h          客户端地址;
  %l          远端主机的登录名称(远程主机登录系统的用户名);
  %u          登录网站使用的用户;
  %t          日志事件产生的时间;
  %r          请求报文的第一行(访问方法,URL获取的资源以及版本号);
  %>s          最后一个请求对应的状态码;
  %b          响应报文的大小;
  %{Referer}i           从哪个页面的链接过来的;
  %{User-Agent}i          客户端浏览器的类型;
  CustomLog logs/access_log combined          定义访问日志格式的类型;
  Alias /icons/ "/var/www/icons/"          定义路径别名;
  注意:Alias /luntan "/bbs/forum"     如果luntan后面加了/符号,后面forum也一定要加/符号,如果没加则都不加;
  ScriptAlias          定义执行CGI脚本的目录;
  配置用户认证
  
  AllowOverride AuthConfig
  AuthType Basic          使用基本用户认证;
  AuthName "Restricted Site..."          认证提示信息;
  AuthUserFile “/etc/httpd/conf/htpasswd”          认证用户的账号密码文件;
  Require valid-user          valid-user表示允许密码文件中所有用户登录,也可以指定特定用户;
  AuthGroupFile "/etc/httpd/conf/group"          指定组名和包含的用户(语法"myusers:hadoop tom");
  Require group groupname          允许哪些组可以登录;
  Order allow,deny
  Allow from all
  
  ### Section 3: Virtual Hosts
  定义虚拟主机前,最好先取消中心主机,注释中心的DocumentRoot即可;
  配置基于IP的虚拟主机
  
  ServerName www.example.com               域名;
  DocumentRoot "/var/www/html"            网页文件存放目录;
  
  
  ServerName www.linux.com
  DocumentRoot "/var/www/linux"
  
  配置基于端口的虚拟主机
  
  ServerName www.example.com
  DocumentRoot "/var/www/html"
  CustomLog logs/example.com-access_log common          访问日志的记录位置和类型;
  
            需要在Listen指令上添加监听8080端口;
  ServerName www.linux.com
  DocumentRoot "/var/www/linux"
  CustomLog logs/linux.com-access_log common          访问日志的记录位置和类型;
  
  配置基于域名的虚拟主机:使用基于域名的虚拟主机,需要启用"NameVirtualHost *:80"指令,可以指定监听的地址,*表示监听所有IP;
  
  ServerName www.example.com
  DocumentRoot "/var/www/html"
  CustomLog logs/example.com-access_log common
  
  Options none
  AllowOverride none
  Order deny,allow
  Deny from 192.168.10.1
  
  
  
  ServerName www.linux.com
  DocumentRoot "/var/www/linux"
  CustomLog logs/linux.com-access_log common
  
  Options none
  AllowOverride AuthConfig
  AuthType Basic
  AuthName "Restricted Site..."
  AuthUserFile “/etc/httpd/conf/htpassw"
  Require valid-user
  
  
  定义默认虚拟主机:需将其放在所有虚拟主机的最上面;
  
  DocumentRoot "/var/www/default"
  
  配置httpd的status功能
  
  SetHandler server-status          实现所有匹配到的文件由一个处理器来处理,server-status可以显示服务器的状态信息;
  Order deny,allow
  Deny from all
  Allow from .example.com          生产中应该对用户访问status做认证;
  
  配置基于openssl的https服务
  1,安装ssl模块:yum install -y mod_ssl,安装后会生成以下文件
  /etc/httpd/conf.d/ssl.conf          ssl的配置文件,需要装载到httpd的主配置文件中(重启httpd会自动装载);
  /usr/lib/httpd/modules/mod_ssl.so          ssl的模块;
  /var/cache/mod_ssl          ssl会话的缓存目录
  2,为服务器提供证书(测试环境中,可以自建CA,然后使用自签名证书);
  3,配置https服务:编辑/etc/httpd/conf.d/ssl.conf
  
  DocumentRoot "/var/www/html"
  ServerName www.example.com
  ErrorLog logs/ssl_error_log          错误日志的存放位置;
  TransferLog logs/ssl_access_log          访问日志的存放位置;
  LogLevel warm          记录日志的级别;
  SSLengine on          是否启用ssl功能;
  SSLProtocal all -SSLv2          支持哪些ssl协议,ALL表示所有,-SSLv2表示不支持ssl v2;
  SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW          SSL支持哪些加密机制,ALL表示所有,!表示排除;
  SSLCertificateFile /etc/pki/tls/certs/localhost.crt          证书文件存放的位置;
  SSLCertificateKeyFile /etc/pki/tls/private/localhost.key          私钥文件的存放位置;
  注意
  1,证书中的主机名称必须与客户浏览器访问的名称一致;
  2,一个IP地址上只能建立一个SSL主机;
  3,将CA的证书(如cacert.pem)下载到客户机,改名为"cacert.crt",然后导入到客户端浏览器的"受信任的根证书颁发机构"中,客户端浏览器打开https就不会报错;
  4,生产环境中的服务器,建议向权威的CA机构申请证书;
  httpd配置文件语法测试
  service httpd configtest     或     httpd -t;两个命令的效果是一样的,前者也是调用的后者;

  注意:大部分配置被修改后,使用"service httpd>  htpasswd:创建用户密码文件的命令;
  -c:创建密码文件,只有在第一次的时候使用,如果密码文件已经存在,则将文件内的用户清空;
  -m:用户的密码以md5格式加密存放;
  -D:删除一个用户
  htpasswd -c -m /etc/httpd/conf/htpasswd hadoop;
  htpasswd -m /etc/httpd/conf/htpasswd tom;
  关于和的说明
            定义用户访问某个文件系统路径的时候,应该具有何种访问属性;
            定义用户访问该URL的时候,具有何种的访问属性;
  关于MPM:多道处理模块,用于定义apache响应多个用户请求时所工作的模型;
  mpm_winnt:windows专用;
  prefork:一个请求用一个进程响应;
  worker:一个进程响应多个用户请求;worker是基于线程,其启动多个进程,进程启动后启动多个线程一个请求用一个线程响应;
  enent:基于事件驱动模型,一个进程响应多个用户请求;
  httpd -l :查看httpd编译所支持的模型,如果没有编译又想使用其他模型可以使用httpd.event或httpd.worker;
  在/etc/sysconfig/httpd 文件中可以修改httpd启动的默认模型,在2.2中event为测试模型,不建议使用;2.4默认为event模型;
  虚拟主机的类型
  基于IP:每个虚拟主机使用不同的IP地址,但使用的端口相同;
  基于端口:每个虚拟主机的IP地址相同,但端口不同;
  基于域名:每个虚拟主机的IP和端口相同,但使用的域名不用;


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-625772-1-1.html 上篇帖子: sql 中 case when 语法 下篇帖子: sql连接问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表