http與httpd

http協議javascript

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

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

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

  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;java

  修改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’);mysql

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

---------------------------------------------------------------------------------------web

一、套接字 (進程間通信)
  tcp/ip -- osi sql

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

  套接字概念:關聯應用層資源與底層的網絡;使得,不一樣主機之間可以實現應用數據的交互;
  全部進程間通信的機制,咱們都叫作IPC機制(進程間通信);套接字只是 IPC 機制中的一種而已;
    常見的IPC通信機制:

      一、MQ -- 消息隊列
      二、socker 套接字
      三、single 信號
      四、共享內存

  分類:
    根據數據包封裝的狀況分類:
      一、SOCK_STREAM tcp的套接字
      二、SOCK_DGRAM udp的套接字
      三、SOCK_RAM 裸套接字
    地址簇來進行分類:
      一、IPV6的套接字
      二、IPV4的套接字
      三、UNIX的套接字

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

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

二、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(緣由短語):狀態碼說明
        如上

相關文章
相關標籤/搜索