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

[经验分享] 太乱了的apache,我自己都无语了

[复制链接]

尚未签到

发表于 2018-11-20 13:55:39 | 显示全部楼层 |阅读模式
Apache
  1.         http
  1.1       http协议(简单介绍)
        1.http协议:超文本传输协议(HyperText Transfer Protocol),所有的www文件必须遵守这个标准。
        2.目的:为了提供一种发布和接收HTML页面的方法.
        3.默认端口:80
  1.2       https(简单介绍)
                        1. https:Hyper Text Transfer Protocol overSecure Socket Layer
                        2.安全的http通道。即,http安全版,在http下加入了ssl层,加密的数据传输协议
  1.3       http版本
http1.0:使用非持久连接,一个tcp连接只能传输一个web对象
http1.1:使用持久连接,即一个tcp连接能够传输多个web对象
  1.4       http请求过程
DSC0000.jpg

  1.1       http服务请求流程
输入域名—>dns解析域名—>建立TCP连接—>发送请求信息—>http服务器响应,发送html格式文件—>
  1.2       http常见状态码(重要介绍错误码)
消息(1字头)
成功(2字头):
           200ok: 服务器成功返回网页
重定向(3字头):
           301Moved Permanently:永久跳转,请求的网页已经永久跳转到新位置
请求错误(4字头重点):
           403Forbidden:服务器已经理解请求,但是拒绝执行,且该请求也不能被重复提交
           404Not Found:请求失败,请求的资源在服务器上没有发现。该错误的原因很大可能是服务器端没有这个页面。
           407Proxy Authentication Required:客户端必须在代理服务器上进行身份验证
           408Request Timeout:请求超时
服务器错误(5字开头):
           500Internal Server Error:服务器出现错误,导致无法完成请求的处理(服务器端源代码出现错误)
           502Bad Gateway:网关或者代理工作的服务器尝试执行请求时,收到无效的响应
           503  Service Unavailable:临时的服务器维护或者过载,服务器当前无法处理请求
           504  Gateway Timeout:网关或者代理工作的服务器尝试执行请求,没有收到响应,例:dns查询超时
           505HTTP Version Not Supported:服务器不支持,拒绝使用的HTTP版本
  2.         web服务
  2.1       web版本
web1.0:以静态页面为主,早期的门户类新闻页或者静态页面
web2.0:以动态页面为主,以用户为中心,网站由用户参与或者编辑例如:bbs blog sns 微博
web3.0:在web2.0的基础上网站内的信息可以和网站相关信息进行交互,完全基于web,浏览器可实现复杂程序才能实现的系统功能(目前仍然以web2.0为主)
  2.2       web架构模式
b/s模式:Browser/Server(浏览器/服务器)仅仅需要web浏览器就行
                  优点:1.无需安装客户端有web浏览器即可,操作系统自带
                           2.可以直接放在广域网,通过一定的控制权限实现多用户访问的目的,交互性较强
                           3.无需升级客户端,直接升级服务器就行
                  缺点:1.需要兼容各种浏览器
                           2.测试人员需要做各种测试(尤其是浏览器兼容测试)
                           3.速度和安全性较差
c/s模式:Client/Server(客户端/服务器)例如一般的系统,qq客户端等等,一般通过socket服务器端才能建立连接
                  优点:1.客户端界面和操作可以很丰富
                           2.安全性能可以很容易保证,多层认证不难
                           3.有一层交互,响应速度很快
                           4.服务器端和客户端能够很好的兼容
                  缺点:1.适用面窄,用于局域网
                           2.用户群固定,需要安装客户端
                           3.维护成本高,一次升级,所有的客户端都需要升级
  2.3       静态网页、动态网页和伪静态网页
1.静态网页:纯粹的html格式网页(可以包含图片,JS(前端功能实现),css(样式)等)没有后台数据可以不含php,jsp,net和可交互的网页。格式:.htm .html .xml .jpg图片格式,.avi .flv等视屏格式
                   特点: 1.有固定的URL,并且是html等结尾,地址中没有?和&
                               2.网页保存在网站服务器文件系统中为每个网页都是独立的文件
                                3.优点:静态页面内容相对稳定,容易被搜索引擎收录,加载速度最快,对服务器压力最小
                                4.缺点:没有数据库内容,网站制作和维护工作量大,尤其是信息量特别大,制作比较困难,交互性差,功能方面有较大限制
                                5.服务端不解析,因此可以接收更多的并发访问,数据在浏览器端解析
2.动态网页:通过执行asp,php,jsp,net等程序生成客户端网页代码的网页。可以通过网站后台管理系统对网站内容的更新和管理,格式:.asp .aspx .php .jsp .do .cgi .perl,动态网页URL经常有?和&
                  特点:  1.以数据库技术为基础,可以大大降低网站的维护工作量
                                2.实现更多的功能,例如用户注册,用户管理,发表博文等等
                                3.大多并不是独立存在于服务器的网页文件(php、jsp),只有用户请求时服务器才返回一个完整的网页。
                                4.由于URL存在?和&搜索引擎收录域名是会存在一定的任务,一般搜索蜘蛛不会抓取地址?后面的内容。
                                5.程序在服务器端解析,因此会大量消耗CPU、内存等服务器资源,效率远远不如静态网页
                                6.缺点:效率差,并发低
3.伪静态网页:从URL结构及页面名称看,伪静态和静态页面是一样的,伪静态也是以htm或者html的格式,只是改变了URL的表现形式,便于搜索引擎收录和提升用户体验,使用伪静态页面并不能提升网站的性能。
                                1.动态页面伪静态技术:通过rewrite规则,URL地址重写,消除动态网页中的参数,仅仅改变了地址路径。
                                2.缺点较多,使用伪静态转换技术例如rewrite会消耗更多的服务器资源
  2.4       IP PV UV 并发
1.PV:页面浏览量或点击量,是衡量一个网站或网页用户的访问量。pv值:即24小时能用户点击网站的网页多少次,指的是页面刷新的次数,每一次页面刷新,就算做一次pv流量。原理:浏览器发出一个网络服务器的请求,网络服务器接到这个请求后,会将该请求对应的一个网页发送个浏览器从而产生一个pv,无论这个页面是否打开,都算作一个pv。
2.UV:即独立访客数,指访问某个网站或者点击某个网页的不同IP地址人数,在同一天内UV只记录第一次进入网站的具有独立IP的访问者。一般是通过IP和cookie来判断UV。
3.IP:即独立IP数,独立的IP访问用户,指一天内使用不同IP地址的用户访问网站的数量,两台机器访问而使用同一个IP只能算作一个IP访问,IP和UV之间的书记不出差异太大,通常UV量比IP量高一点,每个UV相对于每个IP更准确。
4.并发:指一台服务器同时多少人访问,一般是用日pv/ip/uv来判定(pv较多)
  2.5       常用的web服务器(linux)
apache:中小静态web服务,重量级,耦合度大,速度性能不及轻量级搞,消费cpu、内存高,稳定
nginx:大型静态web服务,轻量级,高性能http和反向代理服务器消耗资源低,节省带宽
tomcat:中小企业动态网页,重要是java容器(jsp,do),静态和高并发处理弱
resin:大型动态网页,java容器,可靠,用于集群
php:php程序的解析容器
  3.         httpd
  3.1       apache的简单介绍
1.apache:开源的web服务器
2.特点:功能强大、配置简单、速度快、应用广泛、性能稳定可靠、可做单利服务器或者负载均衡
3.应用场合:
           1.运行静态HTML网页、图片、(处理静态小文件能力不及nginx)
           2.使用php引擎运行php、perl、python等程序,lamp被称之为经典组合
           3.与tomcat/resin运行jsp,java等程序,成为中小企业首选
           4.作代理服务器,负载均衡,rewrite规则过滤等
  3.2       apache的安装
1.安装依赖
[root@apache ~]# yum -y install gccgcc-c++ pcre pcre-devel openssl openssl-devel2.安装apr和apr-util
[root@apache soft]# tar xfapr-1.5.2.tar.gz
[root@apache soft]# tar xfapr-1.5.2.tar.gz
[root@apache apr-1.5.2]# ./configure--prefix=/usr/local/apr
[root@apache apr-1.5.2]# make &&make install
----------------------------------------------------------
[root@apache soft]# tar xfapr-util-1.5.2.tar.gz
[root@apache soft]# cd apr-util-1.5.2
[root@apache apr-util-1.5.2]#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[root@apache apr-util-1.5.2]# make&& make install3.安装httpd
[root@apache soft]# tar xfhttpd-2.4.12.tar.gz
[root@apache soft]# cd httpd-2.4.12
[root@apache httpd-2.4.12]# ./configure --prefix=/usr/local/apache2--enable-so --enable-ssl --enable-rewrite --with-mpm=worker --with-suexec-bin--with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/
[root@apache httpd-2.4.12]# make&& make install4.启动服务
[root@apache ~]#/usr/local/apache2/bin/apachectl start
[root@apache ~]# ps -ef |grep http
root     3041     1  0 13:29 ?        00:00:00 /usr/local/apache2/bin/httpd-k start
daemon   3042  3041  0 13:29 ?        00:00:00 /usr/local/apache2/bin/httpd-k start
daemon   3043  3041  0 13:29 ?        00:00:00 /usr/local/apache2/bin/httpd-k start
daemon   3044  3041  0 13:29 ?        00:00:00 /usr/local/apache2/bin/httpd-k start
root     3129  1050  0 13:31 pts/0    00:00:00 grep http5.验证
打开浏览器输入192.168.137.8(本机IP)
DSC0001.jpg

6.常见命令
/usr/local/apache2/bin/apachectl –t   检查配置文件语法错误
/usr/local/apache2/bin/apachectl graceful平滑重启
  3.3    apache常见安装参数
  --prefix
指定apache程序安装主目录
--enable-so
开启模块功能,支持DSO(动态共享对象)
--enable-ssl
支持SSL加密
  --enable-rewrite
支持地址重写,激活伪静态功能
--enable-expires
让内容在浏览器缓存多久
--enable-modules=most
激活大多数模块
--with-mpm
设置apache工作模式
--with-suexec-bin
支持SUID、SGID
--with-apr
指定apr程序的绝对路径
--with-apr-utils
指定apr-util程序的据对路径
  3.4       apache常见目录及文件
/bin:
           ab: http服务器性能测试工具主要是压力测试工具
           apachectl:这是一个脚本,也是apache启动命令
           htcacheclean:清理磁盘缓冲区的命令,一般很少用
           apxs:是apache 服务器编译和安装扩展模块的工具,例如在编译php软件时就用到了此命令,--with-apxs2=/usr/local/apache/bin/apxs
           htpasswd:建立和更新基本的认证文件,如:配置nagios等监控服务时会用到
           httpd:是apache的控制命令程序,apachectl执行时会调用httpd
           rotatelogs:apache自带的轮训命令,常用cronlog
/conf:
           httpd.conf:apache的主配置文件
           extra:这是额外的apache配置文件目录,httpd-vhosts.conf默认在此目录
/htdocs:编译安装时apache的默认网站发布站点
           index.html:默认首页文件,习惯有index.php、index.html、index.jsp等
/logs:apache默认的日志路径,包括错误日志及访问日志
           access_log:apache的访问日志
           error_log:apache的错误日志,如果apache出现启动故障等问题,一定要看这个错误日志
           httpd.pid:httpd的pid文件,httpd启动后,会把所有进程的IP号写到此文件中
/modules:apache的模块目录,比如php,memcache等模块编译后都在这
  3.5      apache配置文件介绍
1.apache主配置文件:
ServerRoot:服务的根目录
           Listen80     监听端口
    模块开头
    User daemon     默认用户
    Group daemon  默认组
    ServerAdmin            管理员邮箱
    DocumentRoot        默认网站发布目录
              权限根目录拒绝其他人访问
           Options FollowSymlinks 可以带符号连接
           AllowOverride None              禁止一些功能
           Order deny,allow      不让任何人访问根目录
           Deny from all
               
                自己添加站点必须添加这段内容
           Options Indexs FollowSymlinks                 第一个优化将Indexs前面加个减号或者删掉
           AllowOverride None
           Order allow,deny
           Allow from all
               
                                指定访问的首页
           DirectoryIndex index.html
   
                      文件匹配
           Order allow,deny
           Deny from all
           Satisfy All
   
    ErrorLog "logs/error_log"     错误日志配置              
    LogLevel warn          日志级别警告
            访问日志的类型
           LogFormat "%h %l %u %t\"%r\" %>s %b \"%{Referer}i\"\"%{User-Agent}i\"" combined
           LogFormat "%h %l %u %t\"%r\" %>s %b" common
           
                  LogFormat"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"\"%{User-Agent}i\" %I %O" combinedio
           
           CustomLog "logs/access_log"common
   
                      cgi配置
           ScriptAlias/cgi-bin/ "/usr/local/apache/cgi-bin/"
   
         
   
   
           AllowOverrideNone
           OptionsNone
           Orderallow,deny
           Allowfrom all
   
    DefaultType text/plain 文件缺省类型
   
          TypesConfig conf/mime.types
         AddTypeapplication/x-compress .Z
         AddTypeapplication/x-gzip .gz .tgz
         AddTypeapplication/x-httpd-php .php
   
   
           SSLRandomSeedstartup builtin
                  SSLRandomSeed connect builtin
           2.apache扩展配置文件
httpd-vhosts.conf
           NameVirtualHost *:80   基于域名的虚拟主机*为IP地址
           
                  ServerAdminwebmaster@dummy-host.example.com
                  DocumentRoot"/usr/local/apache/docs/dummy-host.example.com"
                  ServerNamedummy-host.example.com
                  ServerAliaswww.dummy-host.example.com
                  ErrorLog"logs/dummy-host.example.com-error_log"
                  CustomLog"logs/dummy-host.example.com-access_log" common
           
    httpd-mpm.conf
           
                  PidFile"logs/httpd.pid" pid文件
           
           
           
           LockFile "logs/accept.lock"         锁文件
           
           
             mpm的prefork模式
                  StartServers          5
                  MinSpareServers       5
                  MaxSpareServers      10
                  MaxClients          150             并发
                  MaxRequestsPerChild   0
           
              mpm的worker模式
                  StartServers          2
                  MaxClients          150             并发
                  MinSpareThreads      25
                  MaxSpareThreads      75
                  ThreadsPerChild      25
                  MaxRequestsPerChild   0
           
    httpd-defaul.conf
           Timeout 300 连接超时
           KeepAlive On 保持连接状态
           MaxKeepAliveRequests 100 最大连接请求数
           KeepAliveTimeout 5       在等待下一连接的时间
           ServerTokens Full    隐藏apache版本
           ServerSignatureOn  3.6      apache虚拟主机
    1.虚拟主机:部署多个站点,每个站点希望用不同的域名和站点目录,或者不同的端口,或者不同的IP。需要虚拟主机功能,即一个apache服务器配置多个站点,就需要虚拟主机
    2.虚拟主机的分类:基于域名(常用);基于端口;基于IP
    3.配置httpd-vhosts.conf
    基于域名:

ServerAdmin  ....@qq.com
DocumentRoot"/var/html/www"
ServerNamewww.test1.com
ServerAlias     test1.com
Error"logs/www-error_log"
Customlog"logs/www-access_log" common


    ServerAdmin ....@qq.com
    DocumentRoot "/var/html/blog"
    ServerName blog.test2.com
    #ServerAlias      test2.com
    Error "logs/blog_error_log"
    Customlog "logs/blog_access_log"common


    ServerAdmin ....@qq.com
    DocumentRoot "/var/html/bbs"
    ServerName bbs.test3.org
    #ServerAlias      test3.com
    Error "logs/bbs_error_log"
    Customlog "logs/blog_access_log"common
    基于ip:
        
          ServerName www.test1.com
          DocumentRoot /www/test1/
          
           Options Indexes FollowSymLinks
            AllowOverride None
            Order allow,deny
            Allow From All
         
        
        
          ServerName www.test1.com
          DocumentRoot /www/test2/
          
            Options Indexes FollowSymLinks
             AllowOverride None
             Order allow,deny
             Allow From All
         
        
        
          ServerName www.test1.com
          DocumentRoot /www/test3/
          
             Options Indexes FollowSymLinks
             AllowOverride None
             Order allow,deny
             Allow From All
         
        基于端口:
    1. 修改配置文件
          将原来的
        Listen 80
             改为
             Listen80
           Listen 8080

      2. 更改虚拟主机设置:
                                   
                                     DocumentRoot /var/www/test1/
                                    ServerName www.test1.com
                                   
                                   
                                      DocumentRoot /var/www/test2
                                     ServerName www.test2.com
                                       上述完成之后紧接着设置下面参数
    打开主配置文件中调用
    修改本地host文件域名解析
    在主配置文件中配置发布目录
由于虚拟主机本身是非常重要的,在下次,我会单独的写一个文档来讲述虚拟主机!!!
  3.7       apache日志轮询
    1.安装轮询工具(cronolog)
    wget下载cronolog安装包
    ./configure
    make&& make install
    ll/usr/local/sbin/cronolog    查看cronolog工具是否安装在apache的/usr/local/apache2/conf/extra/httpd-vhosts.conf下
    2.在配置主机位置将原来的日志语句注释掉,添加按天轮询语句
  CustomLog "|/usr/local/sbin/cronolog /app/logs/access_www_%Y%m%d.log"  combined (combined 组合日志格式)
  3.8       apacherewrite
1. Rewirte主要的功能就是实现URL的跳转
2.安装proxy模块
/usr/local/apache2/bin/apxs -c -i -a mod_proxy.c proxy_util.c
/usr/local/apache2/bin/apxs -c -i -a /home/tools/httpd-2.2.15/modules/proxy/mod_proxy_http.c3.检查安装模块
    查看apache的配置文件有一下两行就行了,modules目录下应该也多了mod_proxy.so和mod_proxy_http.so模块
    LoadModuleproxy_module        modules/mod_proxy.so
    LoadModuleproxy_http_module  modules/mod_proxy_http.so4.然后配置httpd-vhost.conf
  然后配置httpd-vhost.conf


    ServerAdmin ……qq.com
    DocumentRoot "/var/www/ "
    ServerName www.test10.com
     RewriteEngineon
     RewriteCond%{HTTP_HOST} ^www.test1.com [NC]
     RewriteRule^(.*)$  shttp://www.test10.cc$1  [P]
  

  这篇文章由于篇幅太长了,可能不适合于技术文档阅读。而且由于在Apache方面的虚拟主机rewrite重写,日志轮询方面说的不是很详细,在下次会单独写一篇关于他们的文档。。。这篇文章可能会有许多错误,希望大家能够指出,不胜感激,谢谢




运维网声明 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-637440-1-1.html 上篇帖子: Azure上Linux VM防DDOS***:使用Apache mod_evasive 下篇帖子: apache,tomcat和nginx的联系和区别
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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