状态码分类:
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.178linux.com/73887