http與httpd


http協議

--------------------------------------------------
  實驗:
  Yum install httpd php php-mysql mariadb-server //安裝相關文件

  啟動httpd以及mariadb服務,並關閉防火牆以及selinux;
  Systemctl start httpd
  Systemctl start mariadb
  Iptables -F
  Systemctl stop firewalld
  Seteforce 0

  測試是否安裝成功
  Vim /var/www/html/index.php
  <?php
    Phpinfo();
  ?>
    訪問,能夠看到php的測試主頁面即可
    http://192.168.94.130

  vim /var/www/html/index.php
  <?php
    $conn=mysql_connect(‘127.0.0.1’,’root’);
    If ($conn)
      Echo “ok”;
    Else
      Echo “false”;
    Mysql_close();
  ?>
    訪問,能夠看到php的測試數據顯示ok則表示正確;

  在數據庫上創建用戶;
  Mysql
  Grant all on wpdb.* to ‘wpuser’@’localhost’ identified by ‘wppasswd’;
  Grant all on wpdb.* to ‘wpuser’@’127.0.0.1’ identified by ‘wppasswd’;
  Create database wpdb;
  Flush privileges;
  Exit
    查看用戶是否添加成功
    Mysql -uwpuser -pwppasswd
    Show databases;

  修改wordpress的配置文件
  Unzip workpress-4.3.1-zh_CN.zip
  Cp -a wordpress /var/www/html/
  Cd /var/www/html/wardpress
  Cp wp-config-sample.php wp-config.php
    添加數據庫,用戶,以及密碼
    Vim wp-config.php
    Define(‘DB_NAME’, ‘wpdb’);
    Define(‘DB_USER’, ‘wpuser’);
    Define(‘DB_PASSWORD’, ‘wppasswd’);

  訪問測試:
  在流量器上訪問:http://192.168.94.130/wdpress

---------------------------------------------------------------------------------------

1、套接字 (進程間通訊)
  tcp/ip -- osi

  應用層 --> 資源子網 (提供正真客戶所需要的資源信息 -- 應用層!)
  --------
  傳輸層 --> tcp udp
  網絡層 --> 通訊子網 (內核提供)
  主機到主機層

  套接字概念:關聯應用層資源與底層的網絡;使得,不同主機之間能夠實現應用數據的交互;
  所有進程間通訊的機制,我們都叫做IPC機制(進程間通訊);套接字只是 IPC 機制中的一種而已;
    常見的IPC通訊機制:

      1、MQ -- 消息隊列
      2、socker 套接字
      3、single 信號
      4、共享內存

  分類:
    根據數據包封裝的情況分類:
      1、SOCK_STREAM tcp的套接字
      2、SOCK_DGRAM udp的套接字
      3、SOCK_RAM 裸套接字
    地址簇來進行分類:
      1、IPV6的套接字
      2、IPV4的套接字
      3、UNIX的套接字

  我們也可以將套接字理解為內核的系統調用 -- system call(C語言開發相關的底層代碼 -- 類似於函數):
    編譯型(面向過程的)的編譯語言的調用 -- 函數
    解釋型(面向對象的)的編程語言的調用 -- 類
  套接字相關的應用:
    socket() 創建套接字
    listen() 監聽
    accept() 接受請求
    connect() 請求連接建立
    write() 發送數據
    read() 從緩存中接受數據

  我們http協議,使用B/S架構(瀏覽器與服務器架構)就需要通過套接字的方式進行數據傳輸!!!
    http://www.baidu.com/... -- URL
      /... --> 指定資源 URI
      http --> 協議
      www --> 提供指定服務的主機的主機名
      baidu.com --> 域名

2、http協議基礎
  超文本傳輸協議
  默認情況下,http協議就是用來實現客戶端與服務端的數據傳輸(文本);
    【流浪器必須安裝插件】
  <html>
    <head>
      <title>Title</title>
    </head>
    <body>
      <h1></h1>
        <p> 內容 <a href="http://www.magedu.com/log.jpg"> 內容 </a> </p>
      <h2></h2>
    </body>
  </html>

  http默認只能傳輸文本文件 數據流
  |
  html css javascriptes //標簽語言 -- 更好的規划文本格式! ,xml注入攻擊
  |
  MIME
    Multipurpose Internet Mail Extensions : 多用途互聯網郵件擴展類型
    用來展示圖片以及視頻數據;
    默認情況下,在傳輸的過程中,依然文本流量;
    MIME只用作將文本與視頻及圖片進行轉換;

  工作機制
    首先會建立TCP連接,http tcp80端口;C -- > S:80
      http請求
      http響應
      注意:請求是有很多的,(前端語言將很多的資源進行划分,而固定的服務器,只提供固定資源)
    所以,有可能請求了一次,但是實際上生成了很多的進程;
    http支持MPM (多處理模塊)
      因為http提供的訪問進程數量有限,所以,我們需要啟用一些訪問機制,能夠處理高並發流量;
      MPM模塊支持三種模式:
        prefork -- 默認模式,隊列模式
        worker -- 多線程模式
        event -- 多線程並發處理模式
          每一個請求,我都叫一個IO;
    修改MPM模式:
      特性:http服務的MPM模式是在服務啟動的那一刻加載進來的。
      目錄:/etc/sysconfig/httpd -- http -2.2
                  -- http -2.4
      #HTTPD=/usr/sbin/httpd.worker
      去掉 # 即可;
      必須重新加載配置,這樣才能生效;

      ps aux | grep httpd //查看當前所起的進程

      【注意:web服務是不能隨便重啟!!!】
      相關的配置文件可以在 /etc/httpd/conf/httpd.conf 文件中去設置;
        除了event模式沒有--因為這種並不穩定,不建議使用;

  請求資源
    首先明白:如何識別這些資源 -- 文件后綴來識別;

    靜態資源 -- 圖片 jpg png 、文字 .txt .doc 、視屏 avi mp4 rmvd flv
    *動態資源 -- .php ... *
      LAMP / LNMP / LAMMP / LNMMP -- memcache
      php -- 加速器
      httpd優化 -- 權限限制、MPM的訪問模式、虛擬主機搭建。。。

  http的版本 -- (不加密)
    HTTP協議版本:
    HTTP/0.9 最早的被廣泛采用的版本 原型版本,不支持多媒體內容
    HTTP/1.0 第一個廣泛使用的版本,現在依然被使用,能支持多媒體,但是緩存機制不行
    *HTTP/1.1 增強了緩存功能*當前使用的版本;
    HTTP/2.0 2001年就出來了,現在基於web的應用多數使用HTTP/2.0版本(新版本),它參考了谷歌的spdy協議,所以我們有理由相信HTTP/2.0會被廣泛使用
      默認安裝的都是2.0版本;

---------------------------------------------------------------

  HTTP協議:
    TCP 80 http://192.168.94.128 - URL
  URL介紹
    URL的完整格式:
    協議類型://用戶名,密碼@hostname:port/URI;參數值?查詢請求#標記
      示例:https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1

    URL包含URI,由URI來定義所要訪問資源的具體位置;
    URN和URL是一個並列的東西(不做了解)

  *cookie機制
    cookie分類:
      永久cookie -- 把cookie值存在硬盤上(這里需要指定cookie的保存時間)
      臨時cookie -- 把cookie值保存在內存上(重啟流量器即失效)
    cookie非常不安全

  HTTP事務
    請求 request 和相應 replay,一個請求和一個相應合起來,我們叫做一個HTTP事務;
    (事務:一次完整的會話,或者工作,才能被稱為一個事務;)
            mysql
          A   --------------------->   B
          1000        500
          1000-300=700 ----------> 500+300=800
          mysql -- 事務回滾

    報文格式 -- http的請求報文 http的應答報文
      http 請求報文:
        首行信息: 模式 URI 版本信息
        頭部信息: 頭部
        請求主體: 實體信息

      http 應答報文:
        首行信息: 版本信息    狀態碼   原因短語
                 200     OK
        頭部信息:
        應答主體:

    method(模式):
      GET 普通的請求
      HEAD 之請求網站的頭部信息
      POST 推送用戶名或密碼的時候使用的
      PUT 推送比較大的資源的時候使用的
      DELETE 發起刪除對應資源的命令
      TARCE 容許客戶端查看,被修改后的http請求報文(因為中間通過了代理服務器,而代理服務器會修改我們的請求表文)
      OPTIONS 客戶端去咨詢服務器端所能支持模式;
      還有其他很多的擴展模式 -- 例如:MOVE LOCK 等等。

    version:http的版本
      常見使用的版本為 1.1

    status:相應狀態碼,例如200,301,302,404,502
      100-199 表示服務器信息回應 100 101
      200-299 表示成功的請求
        常見的--200 ok 201 create
      300-399 表示重定向
        301 請求的URL指向的資源已經被刪除:但在響應報文中通過首部Location指明了資源現在所處的新位置;這個是永久重定向:Moved Permently
        302 與301相似,但是在響應報文中,通過Location指明了資源現在所處的臨時新位置;Found
        304 客戶端發出了條件式請求,但是服務器發現客戶端的緩存資源未曾發生改變,則通過響應狀態碼通知客戶端:Not Modified
      400-499 客戶端錯誤狀態碼
        401 需要輸入賬號和密碼認證方能訪問資源,Unauthorizad
        403 請求被禁止:forbidden
        404 服務器無法找到客戶端請求的資源:Not Found
      500-599 服務器端錯誤
        500 服務器內部錯誤:Internal Server Error
        502 代理服務器從后端服務器收到一條偽響應,Bad Gatway

    reason-phrase(原因短語):狀態碼說明
        如上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM