web服务介绍(三)

状态码分类:
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

(0)
sheweishewei
上一篇 2017-04-22 16:51
下一篇 2017-04-22 19:44

相关推荐

  • 用户权限及正则表达式

    ln –s软连接原文件可以写绝对路径或相对于软连接文件的相对路径 ln 硬链接的原文件可以写绝对路径,相对于硬链接文件的相对路径或相对于当前路径的路径(因为硬链接主要是看节点号) etc/passwd格式: username:x:uid:gid:home:shell etc/shadow格式 username:password:password age:mi…

    Linux干货 2016-08-08
  • bash编程初体验(一)

    bash编程初体验(一) 认识bash编程 变量与赋值 算术与逻辑运算 条件测试与退出状态 认识bash编程 Bash(GNU Bourne-Again Shell)是许多Linux发行版的默认Shell,我们要认识的bash中,就是在bash的环境下的一种编程。 众所周知,程序=指令+数据,由此也决定了两种不同的编程风格,过程过与对象式; 过程式:以指令为…

    Linux干货 2016-08-15
  • TCP 的那些事儿(下)

    这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准备,本篇文章有好些算法和策略,可能会引发你的…

    Linux干货 2016-08-15
  • Nginx介绍及使用

       Nginx(engine x)是一个高性能的HTTP和反向代理服务器, 也是一个IMAP/POP3/SMTP服务器. Nginx是由IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发的, 第一个公开版本在2004年发布. 因为它的稳定性, 丰富的功能集, 示例配置文件和低系统资源的消耗而闻名. Nginx是一款轻量…

    Linux干货 2016-11-11
  • socket阻塞与非阻塞,同步与异步、I/O模型

    1. 概念理解      在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步:      所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前…

    Linux干货 2015-04-10
  • Linux下find命令的使用

    为什么要使用find命令?     Linux系统中有着成千上万的文件,如果你想要找到自己想要的文件,一款查找软件是必不可少的,而locate是根据其生成的数据库进行查找,虽然速度会略快,但非实时查找,有些新的文件或目录是匹配不到的,而且locate是模糊匹配,而find命令为实时查找,且为精确匹配,如果你对目录的权限…

    Linux干货 2016-08-18