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

[经验分享] Web之apache

[复制链接]

尚未签到

发表于 2018-11-26 07:00:02 | 显示全部楼层 |阅读模式
  
Web

    WWW(World Wide Web,环球信息网)也可以简称为 Web,中文名字为"万维网"。它起源于 1989 年 3 月, 由欧洲量子物理实验室 CERN(the European Laboratory for Particle Physics)发展出来的主从结构分布式多媒体系统。
   
    WWW 采用的是客户/服务器结构,其作用是整理和储存各种 WWW 资源,并响应客户端软件的请求,把客户所 需的资源传送到客户端的操作系统上。   
    HTTP(HyperText Transfer Protocol,超文本传输协议)是 Internet 上应用最为广泛的一种网络协议, 所有的 WWW 文件都必须遵守这个标准。 设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。
           
http : Hyper  Text Transfer Protocol  超文本传输协议
监听在80端口,可以方便的实现在多个文件页面之间进行跳转

smtp: 简单邮件传输协议
        smtp+mime  -->编码为纯文本信息 ,发送给接收端   ,接收端利用mime调用相关的解码器时行解码
  
        MIME:Multipurpose Internet Mail Extensior,多用途互联网邮件扩展)是一个互联网标准,它扩展了电子邮件标准,使其能够支持非ASCII字符(图像、声音、二进制文件)、二进制格式附件等多种格式的邮件消息。
  URL: ://[:port]/   -->统一资源定位符
  资源获取的方法
     GET  --> 浏览器直接向 WWW 服务器要求网址上面的资源,也是最常见的
     HEAD: 获取http协议的首部    eg: # curl -I http://172.16.0.1/bbs   
     POST : 提交表单      

     PUT: WebDAV(分布式版本协作)通常会有安全漏洞
     DELETE:

  http的协议状态码
    1xx            1开头的 --> 纯粹的说明信息
    2xx            2开头的 --> 正常响应信息
    3xx            3开头的    --> URL 重定向信息
    4xx            4开头的 --> 暂时性错误,(客户端错误)
    5xx            5开头的 --> 永久性错误
  最常见的web服务器软件apache
  apache 支持许多特性,而这些特性大部分是通过编译的模块来实现              
支持MPM(多道处理模块)   
    MPM的常用的两个模块:
  worker: 每一个请求用一个线程来响应,在一个进程内部创建多个线程,用线程响应用户请求
                        
         工作模型: 一个父进程管理几个子进程,一个子进程又管理多个线程,用线程来响应用户请求
                        
         特点:
             并发访问同一个文件,响应速度较快
             稳定性差、一个线程访问文件的时候会对资源加锁
             一个线程崩溃,同一进程的其它线程可能会全军覆没            

  prefork: 每一个请求用一个进程来响应
                           
            稳定性极佳,各个进程间相互独立,但对系统资源消耗较大
                           
   
   
apahe  rpm方式安装
            # yum install -y httpd
       daemon : httpd     /usr/sbin/httpd  ( /usr/sbin/httpd.event  /usr/sbin/httpd.worker)
      Script ;/etc/rc.d/init.d/httpd     脚本的配置文件 --> /etc/syscofig/httpd
      Configuration :
            /etc/httpd/conf/httpd .conf    主配置文件
            /etc/httpd/conf.d/*.conf       额外参数配置文件 以.conf 结尾

主配置文件的格式:        
        
            参数    数值
        
    /var/www/html/       --> 预设的首页所在的目录
    /var/www/cgi-bin/    --> 预设给一些可执行的CGI程序放置的目录
    /var/log/httpd/      --> 预设登录文件放置的目录
    /usr/sbin/httpd      --> 主程序
    /usr/bin/htpasswd    --> 预设的产生密码的指令
                        
    查看Apache已载入的模块;   --> # httpd -M               
    检查配置文件语法:          --> # httpd -t
  查看当前httpd装载的模块: # httpd -l
  
   
主配置文件:/etc/httpd/conf/httpd.conf
    分为三段: # grep "Section"  httpd.conf
        ### Section 1: Global Environment          --> 全局配置
        ### Section 2: 'Main' server configuration --> 主服务器
        ### Section 3: Virtual Hosts               --> 虚拟主机
                                
基本设定格式:
      
          设定项目内的相关参数
          ...
           ...
      
                              
  eg:
              --> 针对特定目录的限制
        Options  Indexes  FollowSymLinks     Options (目录参数):表示在这个目录内能够让 Apache 进行的动作
        AllowOverride  None        
        Order deny,allow
        Deny from 192.168.0.247
        

        
  Options
        Indexes  若此目录下没有主页面,是否显示文件列表,主页面与DirectoryIndex 设定值有关
        FollowSymLinks   是否允许追踪显示符号链接
        MultiViews     内容协商    --> 会影响服务器性能    有點像是多國語言的支持,可以依据用戶端的語系而給予不同的語言显示
        ExecCGI    是否允许该目录执行CGI脚本,让此目录具有执行CGI程序的权限         
        AllowOverride: None    是否允许覆盖下面的简单访问控制机制
                        AuthConfig  基于认证的访问机制
               
   
简单访问控制的实现:
            Order allow,deny   --> 简单访问控制,若前面的未定义,则以后面的为默认值
            Allow from all         --> 允许所有
               
                eg:
  Order allow,deny
                    Allow from 192.168.0.0/24
                    Allow from  172.16.0.0/24
                    
               
        
    /etc/httpd/conf.d/welcome.conf    红帽提供的测试页面,若服务器未提供任何一个主页页面(index.conf)则默认显示

   网页fiel文档所在的位置       /var/www/html

  ServerName      --> 配置服务器用于识别自己的主机与端口    eg: ServerName  www.xyuex.com:80
   
ServerTokens  OS  --> 仅告知用戶端我們服务器的版本与操作系統     
              Prod: 返回Apache的产品名称
              Major: 主版本号及次版本号
              Min: 主版本号、次版本号、编译版本号
              OS: 主、次、编译、操作系统
              Full: 最详细的信息
   
ServerRoot  "/etc/httpd"  --> 服务器的工作目录(根)
PidFile  run/httpd.pid    --> 放置 PID 文件的位置,只有相对路径,考虑 ServerRoot 设定值,所以文件在 /etc/httpd/run/httpd.pid

超时配置
   
  Timeout  120               --> TCP协议超时时间,超过120秒就中断该次连接
  KeepAlive  Off             -->是否支持持续连接,设On较好
  MaxKeepAliveRequests  100  --> 持续连接期间,所允许的最大请求数量  0:表示不限制
  KeepAliveTimeout  15       --> 持续连接时下个请求的等待时间(超时时间)
               
    KeepAlive 参数的配置方法:
         1.客户端浏览的网页包含多个JavaScript CSS或其它类似文件,并且这些文件位于同一台Web服务器时,通常设为 “on”
         2. 客户端浏览的网页只包含少量JavaScript、CSS或其它类似文件,KeepAlive的设置作用不大。
         3.客商端浏览的是动态网页,其内容大多通过 动态脚本生成时,通常设为 “off”
                                   
连接配置:   
prefork模式
        
            --> prefork 模式(默认)
    StartServers       8        开机默认就启动几个空闲进程
    MinSpareServers    5        空闲进程最少有多少个
    MaxSpareServers   20        空闲进程的最多有多少个
    ServerLimit      256        一个进程最多可以响应多少次(个资源)用户请求,然后就必须(自行)销毁
    MaxClients       256        最大并发连接数(同时在线的请求个数)
    MaxRequestsPerChild  4000    每個程序能够提供的最大传输次数要求(一个进程),這個設定可以有效的控管每個 process 在系統上的『存活時間』。 因為根据观察所得,新程序的效能较佳
        
            
worker模式
   
   
    StartServers         2        默认启动几个空闲进程
    MaxClients         150        
    MinSpareThreads     25        最少空闲线程数
    MaxSpareThreads     75
    ThreadsPerChild     25        每一个进程至多启动多少个线程
    MaxRequestsPerChild  0        每一个线程可以响应多少次用户请求
   
  
2.定义服务监听的地址和端口(默认为80)
            
            端口: 可以监听多少端口
                    Listen ip:port
                        ...
                        
                eg: Listen   80
                    Listen      8080
                    Listen  172.16.0.1:80       监听172.16.0.1   的80端口
3. 如何装载apache模块
            LoadModule   module_name   /path/to/module

        
        
定义服务器识别的目录默认主页:
            DirectoryIndex   index.html  index.html.var    若第一个找到则使用, 若找不到第一个就找第二个,再找不到就报错

4. 自定义日志格式

        ErrorLog  logs/error_log    错误日志
        Loglevel  warn     定义记录错误日志的级别

5.路径别名
            selinux 关闭
            
   Alias   /forum/  "/web/forum/"     目录后有“/” ,则必须都有
            
   AliasMatch  ^/images/(.*)$   /web/images/$1   --> 可以使用正则表达式     把images下的所有文件 转到 /web/images/ 下的同名的文件
                                                                (.*)  Options ExecCGI
            
            
            /web/cgi-bin/a.html
            
                #!/bin/bash
                #
                echo "Content-type: text/html"    -->定义网页文件内容的类型
                ...
                ...
                        
            
7.认证访问
        
    basic认证        浏览器与服务器对密钥和信息  采用明文传输
                    是根据目录来实现的
            
        eg: 针对stuff这个目录的设定
        
            
                Options   none
                AllowOverride  AuthConfig   
                AuthType    Basic              认证类型
                AuthName  "Stuff of"        提示信息
                AuthBasicProvider   file    --> 不指定时,默认为file
                AuthUserFile  /etc/httpd/conf/.htpasswd            指定存放用户帐号、密码的文件(绝对路径)
                AuthGroupFile  /etc/httpd/conf/.htgroup
            
                Require  valid-user          所有的合法用户都能访问
            
            
            
            
                # vi /etc/httpd/conf/.htgroup
                    mystuff:gentoo centos vbird
            
   
   
  htpasswd   [-c] [-m] [-D]  passwdfile  username      
              -c : 只能在第一次使用时使用(重新生成文件)   
              -m : md5 格式
              -D : 指定从那个文件中删除那个用户
                        
  htpasswd -b [-c] [ -m | -d | -p | -s ] [ -D ]    passwdfile username password   --> 可以直接指定密码            
                        
                        
    eg: # htpasswd  -c -m /etc/httpd/conf/.htpasswd  centos
         # htpasswd  -m /etc/httpd/conf/.htpasswd  gentoo
         # htpasswd  -b -m /etc/httpd/conf/.htpasswd  vbird  redhat
   
   
   
   htdbm  [-c] [-m] [-D]  filename username    以数据库的方式认证
   
            AllowOverride  AuthConfig   
            AuthType    Basic              
            AuthName  "Stuff of"
            AuthBasicProvider  dbm
            AuthDBMUserFile   /etc/httpd/conf/stuff.dbm
            Rqeuire valid-user
        
  
  CGI  : 在对应的环境建立一个程序执行环境的进程,然后把运行的结果返回给web服务器,服务器把结果转换为静态的html返回给客户端 ,进程的创建和销毁由web服务器主导
   Module: 将程序的执行环境嵌入到web中,  把动态执行环境整合成模块,让外部程序可以直接在web服务内可以直接执行。( 加载模块  --> eg: php)
   FastCGI : 通过动态进程服务器执行动态内容的程序(应用程序服务器)  分为多层(web服务器(只服务静态内容--缓存)--动态服务器(应用程序--缓存)--数据库服务器)

  
虚拟主机
            一台web服务器,提供多个站点

        1. 使用不同端口
        2. 80端口,使用不同的ip
        3. 使用不同的主机名称    通过请求报文中的主机名称来实现

              
        1.使用同一IP的不同端口:
                    (1).关闭selinux
                    (2).注释: DocumentRoot  "/var/www/html"
                    (3).添加监听端口:Listen 8080
                        
                        
                            ServerName *:80
                            DocumentRoot  "/web/port/www.a.com"
                        

                        
                            ServerName 172.16.45.1:8080
                            DocumentRoot  "/web/port/www.b.com"
                        

                        
                                ServerName 172.16.45.1:8088
                                DocumentRoot  "/web/port/www.c.com"
                        
        
        2.使用不同IP的同一端口:
                (1). 添加IP地址
                        ifconfig eh0:1  172.16.45.2/16
                        ifconfig eh0:1  172.16.45.3/16
                        
                        
                            ServerName www.a.com
                            DocumentRoot  "/web/port/www.a.com"
                        

                        
                            ServerName www.b.com
                            DocumentRoot  "/web/port/www.b.com"
                        

                        
                            ServerName www.c.com
                            DocumentRoot  "/web/port/www.c.com"
                        
                    

            IP与端口的综合使用:
               
                        
                            ServerName www.a.com
                            DocumentRoot  "/web/port/www.a.com"
                        

                        
                            ServerName www.b.com
                            DocumentRoot  "/web/port/www.b.com"
                        

                        
                            ServerName www.c.com
                            DocumentRoot  "/web/port/www.c.com"
                        
        

        3.基于主机名的:
            
              启用:NameVirtualHost *:80    --> 在2.4的版本中不用指定
                        
              在windows的windows\systme32\dirive\hosts文件中添加本地主机名解析
                                172.16.45.1  www.a.com
                                172.16.45.1  www.b.com
                                172.16.45.1  www.c.com
                    
                    
                    NameVirtualHost 172.16.45.1:80

                    
                            ServerName www.a.com
                            DocumentRoot  "/web/port/www.a.com"
                            ErrorLog     /var/log/httpd/error.www.a.log
                            CustomLog    /var/log/httpd/access.www.a.log  common
                    

                    
                            ServerName www.b.com
                            DocumentRoot  "/web/port/www.b.com"
                            ErrorLog     /var/log/httpd/error.www.b.log
                            CustomLog    /var/log/httpd/access.www.b.log  common
                    

                    
                            ServerName www.c.com
                            DocumentRoot  "/web/port/www.c.com"
                            ErrorLog     /var/log/httpd/error.www.c.log
                            CustomLog    /var/log/httpd/access.www.c.log  common
                    
            
            
            (*)    综合扩展
                    
                            ServerName www.c.com
                            DocumentRoot  "/web/port/www.c.com"
                            ErrorLog     /var/log/httpd/error.www.c.log
                            CustomLog    /var/log/httpd/access.www.c.log  common
                            Alias  /tube  "/web/port/www.a.com"
                            ScriptAlias  /cgi  "/www/cgi"
                        
                            Options none
                            AllowOverride  AuthConfig
                            AuthType        Basic
                            AuthName        "Control"
                            AuthBasicProvider  file
                            AuthUserfile  "/etc/httpd/conf/.htpasswd"
                            Require  valid-user
                        
                    


                    

   
    定义默认虚拟主机的两种方法:
               
                1.     
                        ServerName default
                        DocumentRoot  "web/vhosts/default"
                        ErrorDocument  404 /site_list.html      --> 可以在网页中指定返回错误提示信息
                    
                    
                    
                2.     
                        DocumentRoot  "web/vhosts/default"
                        ErrorDocument  404 /site_list.html
                    
   

  

建立web, 提供LAMP平台,三台虚拟主机,基于主机名实现
pma.magedu.com    /web/vhosts/pma            phpMyAdmin :基于Web实现MySQL的管理GUI, ( PMA 3.4以后的版本要求php的版本为5.3以上) SSL
www,magedu.com   /web/vhosts/www            discuz 论坛  
wp.magedu.com    /web/vhosts/wp            wordpress

rpm: httpd, php53, pht53-mbstring ,php53-mysql ,mysql ,mysql-server
           mod_sll的模块   php53-gd ,php53-xml

            扩展:php53-mcrept-5.3.3-1
                        Source/nginx/libmcrypt-2.5.7-5...
            
# yum install -y httpd php53 pht52-mbstring php53-mysql mysql mysql-server

    1.  注释  DirtectoryRooot    "/var/www/html"   
        启用  NameVirtualHost *:80

        2. vi /etc/httpd/conf/httpd.conf  在文件末尾添加如下内容
            
                    ServerName www.magedu.com
                    DocumentRoot  "/web/vhosts/www"
            

            
                    ServerName pma.magedu.com
                    DocumentRoot  "/web/vhosts/pma"
            

            
                    ServerName wp.magedu.com
                    DocumentRoot  "/web/vhosts/wp"
            

   安装PMA        PMA 3.4以后的版本要求php的版本为5.3以上        
           
        3.    phpMyAdmin-3.5.1-all-languages.tar.bz2
                # tar xf phpMyAdmin-3.5.1-all-languages.tar.bz2
                #  cd  phpMyAdmin-3.5.1-all-languages
                # mv * /web/vhosts/pma/
                # cp config.sample.inc.php  config.inc.php
                # vi /config.inc.php
                        更改 $cfg['blowfish_secret'] = 'a8b7c6dchangyue'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
                    
                # vi /etc/php.ini
                        更改时区 timezone
                                date.timezone  = Asia/Shanghai
        
        为让phpMyAdmin的cookie认证是比较安全的,需要添加mcrypt(php53-mcrypt)扩展  

      php53-mcrypt-5.3.3-1.el5.i386.rpm
      libmcrypt-2.5.7-5.el5.i386.rpm

        # rpm -ivh  php53-mcrypt-5.3.3-1.el5.i386.rpm  libmcrypt-2.5.7-5.el5.i386.rpm

        
        启用phpMyAdmin 的高级功能:
            快速设置高级功能:

                通过 examples/create_tables.sql 创建必需的数据表。 文档
                创建一个用户并授予其访问上一步操作中创建的数据表的权限。 文档
                在配置文件 (config.inc.php) 中启用高级功能,参见 config.sample.inc.php 中的范例。 文档
                请重新登录 phpMyAdmin 以加载新配置并使其生效。
               
                # mysql -usroot -p
                    > SOURCE  ./create_tables.sql
                    > SHOW DATABASES;
                        查看是否多个一个phpmyadim 的表
                   \q
                  
                 # vi /web/vhosts/pam/config.inc.php
   
        
        
        4.  # /etc/init.d/mysqld start
            #  mysql
                SET PASSWORD FOR root@'localhost'=password('redhat');
                SET PASSWORD FOR root@'127.0.0.1'=password('redhat');
               
        5. 在浏览器中输入: pma.magedu.com
        
   
    安装discuz
   
       Discuz_7.2_FULL_SC_GBK.zip
        
        # unzip Discuz_7.2_FULL_SC_GBK.zip  -d /web/vhosts/www
        # rm -rf  readme utilities index.php
        # mv upload/*  ./
        
        
        # vi /etc/httpd/conf/httpd.conf        解决乱码
        
        # vi /etc/php.ini
                short_open_tag = On
               
        # cd /web/vhosts/www
        # setfacl -m u:apache:rwx ./attachments/ ./forumdata/ ./forumdata/cache/ ./forumdata/templates/ ./forumdata/threadcaches/ ./forumdata/logs/ ./uc_client/data/cache/
        
        
        
        通过 pma.magedu.com
        添加用户discuz,并新增数据库discuz
              
    # mysql
       >use mysql 设定默认表
       >SELECT host,user,password FROM user; 查看表
       >DROP USER '' @localhost;  删除匿名用户
       >UPDATE user SET password=password('redhat') WHERE user='root';   --> 为所有的root用户更改密码




运维网声明 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-639565-1-1.html 上篇帖子: 通过Apache Write-through proxy实现SVN Master-Slave主从架构 下篇帖子: Apache Tomcat 服务因 0 (0x0) 服务性错误而停止
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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