狀態碼分類:
1xx:100-101 額外信息提示
2xx:200-206 表示成功類響應
3xx:300-305 重定向
4xx:400-415 錯誤類響應碼,由于客戶端發送錯誤,如客戶端請求一個根本不存在的資源
5xx:500-505 錯誤類信息,服務器端錯誤,服務器本身一些問題導致請求無法成功
常用狀態碼:200
301,302
304:請求資源未發生改變
401:輸入賬號和密碼認證后才能訪問資源
403:Forbidden
404: 服務器無法找到客戶端請求的資源 Not Found
500: 服務器內部錯誤
502:代理服務器從后端服務器收到一條偽響應
504:
client ——> httpd –(tomcat | PHP )
499 :
nginx(web) 自定義的狀態碼 #499是nginx專用的狀態碼
client——-> nginx
響應還沒完成,客戶端主動斷開連接 499
通用首部:既可以用在請求報文中又可以用在響應報文中
Date:報文的創建時間
Connection:連接方式,如keep-alive,Close
Via:顯示報文經過的中間節點
Cache-Control:控制緩存的生效機制
Pragma:兼容Http 1.0,緩存相關
請求首部
Accept:通知服務器自己可以接受的媒體類型
Accept-Charset:可以接受的字符集
Accept-Encoding:通知服務器自己接受的編碼格式,如gzip
Accept-Language:接受的語言
Client-IP:客戶端IP
Host:請求的服務器名稱和端口號
Referer:包含當前正在請求資源的上一級資源
User-Agent:客戶端代理
《高性能web服務器/站點》 騰訊郭欣
HSTS協議 307跳轉 Internal Redirect
Tengine http://tengine.taobao.org/
LAMP:
linux,apache,mariadb,php(拍黃片)的集合搭配:M表示數據庫,p表示語言
MongoDB :副本集
PHP :比較容易上手 比較流行
JAVA :
SOA 服務化:
服務自我治理
路由最佳選擇
自動降級
自動熔斷
fabric
LAMMP:
Linux apache mysql memcache(緩存服務器) php
LNMP :
Linux nginx mysql php
WAMP : #http://www.wampserver.com/
windows 上使用的LAMP
CGI : Common Gateway Interface 通用網關接口
實現客戶端從網頁瀏覽器向執行在網絡服務器上的程序傳輸數據的功能
描述了服務器和請求處理程序之間傳輸數據的一種標準
像是一座橋,把網頁和WEB服務器中的執行程序連接起來,把HTML接收的指令
傳遞給服務器的執行程序,再把服務器執行程序的結果返還給HTML頁
數據模型:層次模型,網狀模型,關系模型:表(行+列)
常見的關系模型:
IngreSQL,
Oracle, OCP
SQL Server, #windows上的數據庫
MySQL,
PostgreSQL
MariaDB
php中有以下數據庫:
mysql
mysqli
mysqlnd
javad的tomcat服務一般會有jdbc(也叫驅動)來啟動服務
Client-(Http協議)-Httpd-(CGI)-Application Server(Program File)-(MySQL)-MySQL
Httpd接受用戶web請求,靜態資源直接響應,動態資源為PHP腳本,
對此類資源的請求交由PHP來運行
PHP 運行PHP進程
MariaDB:數據管理系統
常見的HTTPD與PHP結合的方式
CGI模式
HTTPD需要自己創建CGI子進程,創建銷毀子進程開銷比較大
FastCGI模式
Modules模式
PHP編譯成為Httpd的模塊
prefork模型,使用libphp5.so
worker/event模型,使用的libphp5-zts.so庫
CentOS 6:Httpd,PHP,mysql-server,php-mysql
CentOS 7:Httpd,php,php-mysql mariadb-server
示例 CentOS 7下構建LAMP環境
[root@centos7 ~]# yum install httpd
[root l @centos7 ~]# yum install php
[root@centos7 html]# yum install php-mysql
[root@centos7 ~]# rpm -ql php
/etc/httpd/conf.d/php.conf
/etc/httpd/conf.modules.d/10-php.conf
/usr/lib64/httpd/modules/libphp5.so
/usr/share/httpd/icons/php.gif
/var/lib/php/session
新建phpinfo頁面
[root@centos7 html]# cat test.php
<?php
phpinfo();
?>
重啟httpd服務
以上完成后,然后構建mariadb數據庫:
grant all privileges on . to walker@’%’ identified by “walker”;
新建walker的用戶 然后直接將所有的庫的權限授權給walker 密碼是walker
flush privileges;
刷新授權表
select user,password,host from mysql.user;
查詢系統上所有的用戶
避免登錄時候名稱被反解,修改/etc/my.cnf添加以下配置
Skip_name_resolve = ON
添加MySQL的測試訪問頁面
<?php
phpinfo();
$conn = mysql_connect(‘192.168.118.132′,’walker’,’walker’);
if ($conn)
echo “OK”;
else
echo “Failure”;
?>
然后就可以愉快的安裝各種應用:
wordpress 開源的博客系統
discuz 開源的論壇系統 戴志康開發的,現在被騰訊收購
phpwind 阿里收購
create database wpdb; #在mysql里面創建數據庫名稱
show databases; #查看數據庫
grant all privileges on . to wpuser@’%’ identified by “walker”;
she.* #用戶對此數據庫有所有權限,都是表示所有庫
wpuser@’%’ #該用戶擁有所有數據庫的操作權限
vps服務器:
搬瓦工
…
買個vps,再買個域名就可以搭建了
Sendfile機制: #2.4以上默認開啟的,2.2的需要手動開啟
減少內核態切換和用戶數據的開銷
加快靜態文件的請求速度
減少CPU和內存開銷
適用于大量的小文件
常見阻塞模型:
同步阻塞I/O
同步非阻塞I/O #不需要等待,每隔一段時間詢問
I/O多路復用 #事件模型,開辟區域記錄IO狀態
Select,poll #apache使用select
信號驅動I/O(sigio) #開辟區域只記錄已經完成的磁盤IO
/dev/poll,/dev/epoll,epoll,kqueue #nginx 使用epoll
異步I/O #最難實現,效率最高
I/O 磁盤I/O 網絡I/O 內存I/O #內存I/O很快,基本可以忽略
<構建高性能web站點> 郭欣
fastcgi :進程管理器 用來管理常駐內存的一些動態解釋腳本
spwan-cgi :跑著跑著崩潰了,需要結合crontab
lighttpd :也是一種進程管理器
php-fpm 進程管理器
:5.3.3之前 如果想使用php-fpm 需要php打補丁,使用patch
php-fpm 工作方式: 跟apache的worker模式類似
php-fpm配置文件名目錄:
/etc/php.ini
/etc/php.d/.ini
PHP本身的配置文件
/etc/php-fpm.con
/etc/php-fpm.d/.conf
PHP-FPM進程管理器的配置文件
DirectoryIndex index.php
<VirtualHost *:80>
ServerName 172.18.100.63
DocumentRoot /data/www/
ProxyRequests off
ProxyPassMatch ^/(..php)$ fcgi://127.0.0.1:9000/data/www/$1
<Directory “/data/www/”>
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
./scripts/mysql_install_db –user=mysql –datadir=/data/mysql/
數據初始化
在centos7.3上編譯安裝php5.4.40,相關操作在pdf上
原創文章,作者:shewei,如若轉載,請注明出處:http://www.www58058.com/73887