HTTP: HyperText Transfer Protocal :超文本傳輸協議
超鏈接
web:
http/0.9:僅支持純文本
HTML:HyperText Mark Language
browser:www的客戶端
URI:Uniform Resource Indetifier統一資源標識符包括但不僅限於互聯網
統一:路徑格式的統一
子對象:URL:Uniform Resource Loacator用來描述互聯網的統一標示格式
格式:protocal://Host:port/path/to/file
web資源:讓web瀏覽器訪問的文件 web對象
多個資源很可能被整合爲一個html文檔
http方法: telnet IP 提交首部 獲得反應
GET
POST 提交
PUT 上傳
DELETE 刪除
HEAD 只返回head信息
Trace
options
connection
MIME:Multipuipose Internet Mail Extension 多用途互聯網郵件擴展
SMTP:Simple Mail Transmission Protocol 簡單郵件傳輸協議
MIME:將非文本數據在傳輸前重新編碼爲文本格式,接收方能後還原爲以前的格式,還能調用相應的程序來打開此文件。
Base64:一種編碼格式
動態效果:
ActiveX
flash
Java,Applet(由於太重被淘汰) JRE解析代碼
動態網頁:服務器端存儲的非HTML格式,而是編程語言開發的腳本,服務器接收參數後在服務器運行一次,運行完成後會生成HTML的文檔,把生成的文檔發給客戶端
web-->protocal-->php(運行)-->html
動態網頁包含靜態內容和動態內容,動態內容才需要運行。
緩存:
HTTP首部:http報文 :請求報文,響應報文
get /2.html
主機名
請求報文語法:
<method> <request-URL> <version>
<headers>
<entity-body>
如 :
GET / HTTP/1.1
Host: www.laoguang.
Connection:keep-alive
響應報文:
<version> <status> <reason-phrase>
<headers>
<entity-body>
狀態代碼:
1xx:純信息
2xx:成功類信息 (200 正常相應 )
3xx:重定向信息 (301永久重定向,302臨時,304沒有發生任何改變)
4xx:客戶端錯誤類信息 (404文件不存在)
5xx:服務端錯誤類信息
http/1.1
增強了緩存
增加了長連接
應用程序服務器
IIS
tomcat(apache,JSP,open source)
Websphere(IBM,JSP)
Weblogic(Oracle,JSP,commodity)
JBoss(Redhat,open source)
查看服務器用的軟件www.netcraft.com
Apache:17年
ASF:Apache Software Foundation
web:httpd
Tomcat php解釋
Hadoop 並行管理環境
httpd:
1.實現創建進程
2.按需維持適當進程
3.模塊化設計,核心短小精悍,各種功能都模塊添加(PHP)
支持運行配置,支持單獨編譯模塊
4.支持多種方式的虛擬主機配置
虛擬主機:物理服務器一個,web程序也只有一個,卻可以服務多個不同站點
套接字(Socket):IP:port
基於IP的虛擬主機
基於端口的虛擬主機
基於域名的虛擬主機
5.支持Https協議 (mod_ssl)
6.支持用戶認證
7.支持基於IP或主機名的ALC
8.支持目錄的訪問控制
9.支持URL重寫
RedHat(httpd):
rpm包
源碼編譯
httpd:
/usr/sbin/httpd(MPM:prefork)
httpd:root,root (master process)
httpd:apache,apache (worker worker)
/usr/rc.d/init.d/httpd
Port:(80/tcp)(ssl:443/tcp)
/etc/httpd工作根目錄程序安裝目錄
/etc/httpd/conf配置文件目錄
httpd.conf
/etc/httpd/conf.d/*.conf使用Include來包含
/etc/httpd/modules:模塊目錄
/etc/httpd/logs-->/var/log/httpd日誌目錄
訪問日誌:access_log
錯誤日誌: err_log
/var/www/html 靜態頁面所在目錄
/var/www/cgi-bin 動態頁面使用目錄
Common Gateway Interface
perl,python,java(Servlet,JSP),php
fastcgi:
程序:指令和數據
管理數據的服務器:數據服務器
/etc/httpd/conf/httpd.conf
directive value
指令不區分大小寫,值區分大小寫 LoadRunner HP的測試工具很強大很暴力
MPM:Multi Path Modules 多道處理模塊
mpm_winnt
prefork : 一個請求用一個進程相應
worker:一個請求用一個線程響應,啓動多個進程,每個進程生成多個線程
event :一個進程處理多個請求
URL路徑跟本地文件路徑不是一碼事,URL是相對於DocumentRoot而言的
Options
Indexes:允許索引目錄
None:不支持任何選項
FollowSymLinks:允許追蹤符號鏈接
Includes:允許執行服務端包含(SSI)
ExecCGI:允許允許CGI腳本
Multiview:語言自適應
ALL:啓用所有選項
+|- 子目錄增加或減少選項,如果沒有+|-就是覆蓋繼承
AllOverride ACL訪問機制
None,Auth
Order:基於主機的訪問功能的,IP或網絡地址定義訪問控制機制
Order allow,deny
Deny from 192.168.0.0/24
地址的表示方式:IP network/netmask HOSTNAME DOMAINNAME partial IP
httpd -t 測試語法
htpasswd -c -m file username
PV:Page View 每天的頁面訪問量
Uv:User View 每天的獨立IP訪問
CGI 一種協議,按需調用某個程序
Apache跟動態內容環境結合的方式:
1,做成apache模塊 一個進程處理
2,基於CGI通信 web進程需要動態內容解析的,交給解析器,解析完畢後返回給web
3,基於fastCGI 一個服務器自己管理自己的CGI
虛擬主機:
先取消中心主機,只需要註釋掉中心主機DocumentRoot即可
物理服務器只能運行一個站點,但虛擬主機可以爲多個站點服務
socket IP:PORT
基於IP的虛擬主機,使用不同的IP
基於Port的虛擬主機,使用不同的port提供不同的站點
基於主機頭的虛擬機主機,使用不同的主機名提供不同的站點
<VirtualHost IP:PORT>
DocumentRoot "/path/to/file"
ServerName ""
ServerAlias ""
<Directory "/path/to/file">
定義訪問規則
</Directory>
ErrorLog logs/site1.err_log
CustomLog logs/site1.access_log combined
</VirtualHost>
SSL
Secure Socke Layer
SSLv2,SSLv3
TLS Transport Layer Secure
v1相當於SSLv3
SSL會話建立是基於IP的,也就是說虛擬主機不能使用
httpd (mod_ssl) -->https 實現
1,爲web服務器提供證書
2,安裝mod_ssl,讓httpd 支持ssl功能
3,配置httpd使用簽名提供的證書和私鑰
4,驗證(客戶端信任的ca證書)
MVC
php:用於開發動態網頁,是一種腳本語言,在服務器端運行,嵌入到HTML,面向對象
php,PHP License 不要聲稱自己是PHP就行
BBS:
discuz qq
phpwind alibaba
phpbb
blog:
wordpress
drupal CMS,Content Managing System
SQL:MySQL,PostgreSQL 輕量級
默認:3306端口
Oracle Sybase Informix
SQL Server
數據庫查詢會拖慢速度
靜態化,動態內容提取出來
HTTP Hyper Text Transfer Protocol 80/tcp
HTTPS 基於ssl/TLS的Http 443/tcp
HTML :Hyper Text Mark Language
Server: Apache,Nginx,Lighttpd,
request
<method> <usr><version>
httpd headers
空白行
<body>
response
<version><status code><reason_phrase>
httpd headers
空白行
<body>
get,post,put,head,delete,options,trace,connection
ServerSignature 顯示apache信息
Context Switch (CS) 上下文切換
保存現場
恢復現場
I/O多路複用模型
select() prefork
poll()
epoll() linux當前最流行