web服務介紹二)

apache指令說明:
http://httpd.apache.org/docs/2.2/mod/directives.html

Listen 172.18.100.67:8081  監聽某個指定地址和端口
啟動前檢查一下語法:
    httpd -t

如果要監聽多個端口,要多行寫
    Listen 80
    Listen 8080

頁面上關于主機的一些信息:
         ServerTokens OS

ExtendedStatus On

    Apache服務器可以通過特殊的HTTP請求,來報告自身的運行狀態,
    打開這個ExtendedStatus 參數可以讓服務器報告更全面的運行狀態信息

指明配置存放的位置:
            ServerRoot “/etc/httpd”

超時時間與后端應用建立連接的時候
      Timeout 60

DocumentRoot : 資源映射 (網頁根目錄)
                我們在訪問某個站點的時候,站點從哪兒去加載資源
    http://www.magedu.com/a.jpg ——–> /var/www/html/a.jpg
    DocumentRoot “/data/www/”      #建議修改時注釋復制后修改
       注意:  setenforce 0  一定要記得最先關掉 

非保持連接(短連接)       #連接請求后立即斷開
         對于大量并發的場景中,短連接的三次握手四次揮手占據了大量帶寬

保持連接(長連接)         #連接請求后不會立馬斷開,避免再次連接三次握手
         避免過多的連接保持,可以從時間和數量兩個維度對長連接加以限制
   KeepAlive Off          #短連接  
   KeepAlive on           #生成環境都要開啟,下面的信息才會生效

查看httpd 程序的模塊列表
          查看靜態編譯的模塊:#httpd -l
          查看靜態編譯及動態編譯的模塊:#httpd -M
更換使用的Httpd 程序以支持其他MPM 機制,修改  /etc/sysconfig/httpd
注意:對Linux 而言,線程是跟進程一樣的量級,
      多線程模型所能帶來的性能的提升是有效的。Worker 和prefork 的性能并沒有
      太大的改變。 所以基本沒必要更改。

條件式配置,prefork 和worker 分別對應不同的配置區段
Prefork 模式
    <IfModule prefork.c>
           StartServers 8          #服務器進程啟動時候啟動多少空閑進程
           MinSpareServers 5       #最少空閑進程數,如果少于5 ,主控進程
                                      再啟動幾個達到5
           MaxSpareServers 20      #最大空閑進程數,如果大于20 主控進程對
                                      子進程進行回收
           ServerLimit  256        #所允許啟動的最大在線進程數量
           MaxClients   256        #最大允許啟動進程數量響應用戶請求(最
                                      大并發響應數)
           MaxRequestsPerChild 4000 # 每個進程最多可以處理多少個請求,
                                       超過4000 銷毀
     </IfModule>
worker 模式
  <IfModule worker.c>
    StartServers 4       #服務器進程啟動時候啟動多少空閑進程
    MaxClients 300       #最大并發響應數300
    MinSpareThreads 25   #最小空閑線程數25
    MaxSpareThreads 75   #最大空閑線程數75
    ThreadsPerChild 25   #每個進程啟動25個線程
    MaxRequestsPerChild 0   #每個進程可以處理無限個請求
  </IfModule>

PV page view 頁面訪問量 只能大概得出每天的QPS
UV user page 用戶訪問量
PV UV 運營人員比較關注的數據
      QPS: 每秒的請求數  (統計峰值QPS)
      QPM: 每分鐘的請求數
           一天的PV 一百萬,實際的QPS只有12,需要除以86400
      峰值的QPS 峰值的QPM 才是我們需要關注的

經驗值:
   QPS  硬件資源不成為瓶頸的前提下: 
   C++ 的應用迸發值一般在1500左右
   JAVA (tomcat)的應用在 1000–1200
   PHP 800–900

MPM(多路處理模塊機制):
        多路處理模塊機制MPM(Multipath processing Modules)
    Prefork :多進程模型,每個進程響應一個請求,一個主進程,多個子進程
    Worker  :多進程多線程模型,每個線程響應一個請求,MN
     Event  :事件驅動模型,一個進程響應多個請求

apache 2.2 中MPM不支持動態裝卸載,直接放在模塊里面
     httpd -l         #使用此命令可以看出改模式在模塊里面,
        core.c
          prefork.c
          http_core.c
          mod_so.c      
       httpd -M  | grep prefork
  注意:   如果想自己編譯一個Apache 2.2 那么你編譯成什么模式,它就是什么模式
            如果想改模式 只能重新編譯

使用yum安裝的時候centos官方想了一個辦法同時提供了三個二進制可執行文件:
[root@CentOS68 www]# ll /usr/sbin/httpd

-rwxr-xr-x. 1 root root 356320 May 12  2016 /usr/sbin/httpd
-rwxr-xr-x. 1 root root 369480 May 12  2016 /usr/sbin/httpd.event
-rwxr-xr-x. 1 root root 368136 May 12  2016 /usr/sbin/httpd.worker
如果你想切換模式,可以直接修改/etc/sysconfig/httpd

LoadModule     authn_default_module          modules/mod_authn_default.so
   DSO指令         模塊名                 模塊的存放的相對路徑(/etc/httpd)

ServerName www.magedu.com:80
     定義網站(中心主機)域名
          1 需要借助DNS 將域名解析(A記錄)指定到服務器對應的IP
          2 或者直接使用hosts文件
               vim  /etc/hosts
               172.18.100.67 www.mageu.com
對于windows來說是在
    C:\Windows\System32\drivers\etc\hosts

可基于兩種機制指明對哪些資源進行何種訪問控制
      對目錄或者是文件進行訪問控制 不建議使用正則表達式
      <Directory “/var/html/www”>
       ……
      </Directory> // 對目錄下所有資源實現訪問控制
       File “ ”>
       ….
      </File> //

Options Indexes FollowSymLinks
        如果訪問一個站點 首頁不存在且有Indexes選項 則:
        要么直接返回資源不存在
        要么將當前的目錄里面的內容全部給列出來,供自己選擇 indexs
     如果你的網站是在公網上 訪問者將看到網站的所有內容,很危險
     如果用作內容共享,供訪問者訪問目錄下的資源,可以將此選項打開。
FollowSymLinks 是否允許訪問軟連接所指向的真實文件,有的話表示允許

   Includes             // 允許啟用服務端包含
   SymLinksifOwnerMatch // 源文件和鏈接的目標文件的屬主屬組相
                           同的時候才允許跟蹤訪問
   ExecCGI              // 允許執行CGI 腳本
   None                 // 全部都不
   ALL                  // 全部都

AccessFileName .htaccess
       針對每個網站子目錄定義一個配置文件,    #不建議使用,會耗費資源

基于源地址定義訪問規則:
Order allow,deny         # 定義允許或者禁止
Allow from 172.16        # 僅允許172.16的網段訪問
Deny  from  172.18.0.1   # 不允許此網絡訪問

DirectoryIndex index.html index.html.var index.php
定義默認的訪問主頁

路徑別名
www.magedu.com/bbs/a.jpg  ——-網頁根目錄(/var/www/html) bbs/a.jpg
如果定義一個路徑別名的時候
www.magedu.com/bbs/a.jpg  /data/www/a.jpg

定義一個別名:  
exam:  Alias /download/  “/data/www/”       #定義download  指向/data/www/
        mkdir download
           cd download/
           echo “/var/www/html/download” >> a.html
           vim /etc/httpd/conf/httpd.conf 
                更改: Alias /download/  “/data/www/”
           cd /data/www/
           ls
           echo “/data/www/” >> a.html      #方便查看這樣寫
           service httpd restart

AddDefaultCharset UTF-8
生產環境一定要保證字符集為UTF-8

error_log 放的是Apache本身出錯的信息         # 是本身的錯誤,而不是用戶出錯信息
acces_log 記錄訪問信息 每條訪問會生產一條日志信息

ErrorLog logs/error_log 定義錯誤日志的存放路徑已經名稱

日志級別:
      debug,   所有信息,只要產生就全部記錄下來  日志量最大的,便于生產調試
      info,    所有的信息數據
      notice,  引起注意
      warn,    警告        只記錄警告信息      #一般選擇中間值,
      error,   發生錯誤
      crit,    級別很嚴重
      alert,   紅色警戒
      emerg.   引起恐慌    日志量最小

一天某個日志量200G-300G
刪日志的時候 占用大量的CPU資源
      echo “” > 
      > log
      cp /dev/null log
   禁止使用rm,使用上面三種
 
CustomLog logs/access_log   common
 定義訪問日志             日志格式

自定義日志格式 運維規范化中日志規范
日志的作用:
       1 error
       2 統計QPS QPM
統計訪問前10的IP:
cat /var/log/httpd/access_log |awk ‘{print $1}’ |sort | uniq -c | sort -nr | head
ELK 對日志做聚合分析

常見的用戶認證方式
   basic    : 明文認證
   表單認證 : digest
Basic 認證配置步驟
     定義安全域
      <Directory “”>
          Options None
          AllowOverride None
          AuthType Basic               #基本basic認證
          AuthName “String”            #提示信息
          AuthUserFile “/PATH/TO/HTTPD_USER_PASSWD_FILE”   #密碼文件路徑
        # AuthGroupFile “/PATH/TO/HTTPD_GROUP_FILE” # 基于組來認證
          Require user username1 username2…
        # Require group grpname1 grpname2 …
       </Directory >
 賬號和密碼存儲(文本文件)
    新建密碼文件
           htpasswd -c -m /etc/httpd/conf/.htpasswd tom
     注意   -c 第一次創建密碼文件的時候使用,后面創建不需要,否則會覆蓋
                    -m MD5 認證

Httpd虛擬主機的使用:  
      通常情況下 ,一個服務器上只能跑一個網站,或者說一個進程只能跑
      一個網站。虛擬主機實現了一臺機器上或者一個Web 服務上為多個網站提供服務。
  站點標示:Socket
         IP 相同,端口不同,易于實現,不實用
         IP 不同,端口均為默認端口,不實用,需要多個IP ,成本很高
         IP 相同,端口相同,FQDN 不同,在請求報文首部實現
  虛擬主機的實現方式
         基于IP 為每個虛擬主機至少準備一個IP 地址
         基于port 為每個虛擬主機至少一個獨立的port
         基于FQDN 每個虛擬主機至少一個FQDN
      注意:虛擬主機和中心主機不能同時使用,直接注釋掉中心主機

基于端口
Listen 8080                      #基于端口,需要監聽,在這方便些
<VirtualHost 172.18.100.67:80>   #如果基于IP, 需要多個網卡,端口不變
    ServerAdmin ma@mageud.com
    DocumentRoot /data/www1
    ServerName www.a.com
    ErrorLog logs/a-error_log
    CustomLog logs/a-access_log common
</VirtualHost>

<VirtualHost 172.18.100.67:8080>
    ServerAdmin ma@mageud.com
    DocumentRoot /data/www2
    ServerName www.b.com
    ErrorLog logs/b-error_log
    CustomLog logs/b-access_log common
</VirtualHost>

新建子配置文件:               #基于域名FQDN的虛擬主機
NameVirtualHost 172.18.100.67:80          #一定需要此選項
<VirtualHost 172.18.100.67:80>
    ServerAdmin ma@mageud.com
    DocumentRoot /data/www1
    ServerName www.a.com
    ErrorLog logs/a-error_log
    CustomLog logs/a-access_log common
</VirtualHost>

<VirtualHost 172.18.100.67:80>
    ServerAdmin ma@mageud.com
    DocumentRoot /data/www2
    ServerName www.b.com
    ErrorLog logs/b-error_log
    CustomLog logs/b-access_log common
</VirtualHost>
    驗證:
          /etc/hosts添加
              172.18.100.67 www.a.com
              172.18.100.67 www.b.com
[root@CentOS68 conf.d]# curl www.a.com
www1
[root@CentOS68 conf.d]# curl www.b.com
www2

curl
    -i 返回網站信息的同時返回頭信息(GET)
    -I 只返回請求的頭信息 (HEAD)
    -o 將請求結果寫到某個文件里面
    -s 靜默輸出
    -k 不使用證書
    -m 5 最大傳輸時間5秒

Httpd 狀態頁面開啟
      /etc/httpd/conf/httpd.conf 開啟status 模塊
    啟動狀態訪問頁面
        <Location /server-status>
             SetHandler server-status
             Order deny,allow
             Allow from all 修改訪問權限    #默認是deny
             Allow from .example.com
        </Location>
    然后訪問域名:如:192.168.235.135/server-status

curl -I URL(不支持HEAD)     #很多網站不支持此方式,默認不安全
    405 method not allowed

curl  -i -s http://www.baidu.com | grep “HTTP” | cut -d” ” -f2
200                           #抓狀態碼200
                               通常用來判斷一個網站是否可以正常訪問

elinks www.a.com | grep “www”       
            #純文本界面的www,如果出現亂碼,需要調字符集UTF-8
            #用來判斷一個網站是否正常
      #狀態監控和健康檢查

使用mod_deflate 模塊壓縮頁面優化傳輸,生產模式默認沒有定義,需要再主配置文件尾部
手動添加,只需要三步就KO了
        1.設置一個輸出過濾器
        2.根據內容類型執行過濾
        3.指定壓縮級別
        4.有時需要排除壓縮文件

HTTP——-全站HTTPS 

magedu.com 這個域的證書和key

如果只需要用戶通過某端口訪問:
   1 跳轉 用戶通過80訪問,然后網站重定向到443端口
          www.magedu.com 自動跳轉 重定向
          https://www.magedu.com
          Apache寫rewrite 

   2 HSTS協議(了解一下) 直接在瀏覽器里跳轉
         訪問www.magedu.com 的時候瀏覽器直接幫你改成https://www.magedu.com
學習Nginx的時候 在Nginx寫rewrtie跳轉

壓力測試:全鏈路壓測
Jmeter, Loadrunner等圖形界面工具
網易tcpcopy             #建議使用此工具

Httpd2.4在6上編譯安裝:
  1.安裝apr-1.4和apr-util-1.4以上版本, 可移植的系統庫,來編譯安裝
  2.編譯安裝以上版本,安裝apr-1.4只需要指定安裝目錄即可
  3.編譯安裝apr-util-1.4以上版本,需要增加 –with-apr=(apr的安裝目錄)
  4.然后就可以痛快的安裝httpd2.4了,可能需要開啟指定的功能

   1  2.4 新建虛擬主機 以及中心主機需要對網頁目錄進行顯示授權
           Require all granted                 #每個虛擬主機需要添加顯示授權
   2  2.4上新建基于域名的虛擬主機的時候不需要指定
           NameVirtualHost 172.18.100.67:80    #可以不需要指定這些
   3 持久連接支持毫秒級別  
           KeepAlive On                        #默認沒有,需要手動在結尾添加
           KeepAliveTimeout 30ms
           MaxKeepAliveRequests 20

cookie   客戶端標識用戶的身份
session  服務器端標識用戶的身份
session共享 
     1 保存共享存儲 NFS 共享文件系統
     2 保存到數據庫中 MySQL中 
     3 保存到cookie中
     4 保存到內存數據庫中(memcached redis)  目前流行的

原創文章,作者:shewei,如若轉載,請注明出處:http://www.www58058.com/73794

(0)
sheweishewei
上一篇 2017-04-20
下一篇 2017-04-20

相關推薦

  • LB Cluster:lvs

    Linux Cluster: Cluster:計算機集合,為解決某個特定問題組合起來形成的單個系統; Linux Cluster類型: LB:Load Balancing,負載均衡; HA:High Availiablity,高可用; A=MTBF/(MTBF+MTTR) (0,1):90%, 95%, 99%, 99.5%, 99.9%, 99.99%, …

    Linux干貨 2017-06-24
  • 兩張盤合并做yum源

    第一步 先把兩張光盤都連接到系統中 連接上iso文件后重啟電腦 這時桌面會顯示已將連接上的iso文件   然后創建兩個文件夾分別掛載這兩個光盤   mkdir centos6.9-{1,2} 創建兩個文件夾 df 查看系統硬盤   然后把兩個光盤分別掛載到文件中 mount -o ro,loop /dev/sr0 centos6…

    2017-07-12
  • 用戶管理命令之NBA版

    用戶管理命令之NBA版 本文純屬扯淡,如有不嚴謹之處,還請海涵。 1 groupadd 作用:創建一個屬組 格式:groupadd [選項] 屬組名 選項: -:選項為空 創建新屬組 -g:指定組GID,默認是GID+1 實例 1.1 添加屬組team,指定組ID為1111      groupadd -g …

    Linux干貨 2017-03-27
  • 路漫漫其修遠兮第十周

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 從dawning大濕兄那里借來的圖,如下: 啟動過程 (PC架構) POST –> Boot Sequence(BIOS) –> Boot Loader (MBR)–>GRUB—> Kernel(ramdisk) &#821…

    Linux干貨 2017-02-24
  • Linux基礎:計算機的組成及其功能

    N28 第一周作業

    2017-12-06
  • 淺談linux基礎知識(二)

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示 文件管理工具:cp,mv,rm cp命令:copy 源文件,目標文件 單源復制:cp[OPTION]… [-T] SOURCE DEST 多源復制: cp[OPTION]… SOURCE… DIRECTORY cp[OPT…

    Linux干貨 2016-10-12
欧美性久久久久