zoukankan      html  css  js  c++  java
  • (httpd、php)2

     

    (一)再说编译安装httpd2.4

    新特性:
    1:MPM(多处理模块)支持运行为DSO(动态共享,动态加载模式)机制,以模块形式按需加载,支持动态加载
    2:event MPM生产环境可用
    3:支持异步读写机制
    4:支持每个模块和每个目录日志级别定义
    5:每请求相关的专用配置
    6:增强版的表达式分析式
    7:支持毫秒级持久连接时长定义
    8:基于FQDN的虚拟主机也不再需要NameVirtualHost directive
    9:支持新的AllowOverrideList指令
    10:支持自定义变量的使用
    11:更低的内存消耗
    12:支持fcgi
    13:支持scgi
    14:支持remote IP
     

    • 再次编译httpd2.4
    # 1:安装包组
    yum groupinstall -y "Development tools" "Server Platform Development"

    # 2:安装依赖开发包
    yum install pcre-devel apr-devel apr-util-devel openssl-devel

    # 3:解压本地的httpd-2.4.25.tar
    tar xf httpd-2.4.25.tar
    cd httpd-2.4.25

    # 4:配置安装信息,生成make file, yum 安装的RPM包一般都是在/usr目录下
    ./configure --prefix=/usr/local/apache-2.4 --sysconfdir=/etc/httpd-2.4 --enable-so --enable-ssl --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-zlib --with-pcre --with-apr=/usr --with-apr-util=/usr --with-mpm=prefork

    # 5:编译安装
    make && make install

    # 6:制作软连接,便于版本管控
    ln -sv /usr/local/apache-2.4 /usr/local/apache

    # 7:因为自带的Apache服务控制脚本:apachectl脚本在/usr/local/apache-2.4/bin/目录下,可以将这个目录添加到环境变量中,编辑 vi /etc/profile.d/httpd.sh , 添加export PATH=/usr/local/apache/bin/:$PATH,那么启动的时候,就可以直接使用apachectl start
    vi /etc/profile.d/httpd.sh文件,添加如下代码
    export PATH=/usr/local/apache/bin/:$PATH
    . /etc/profile.d/httpd.sh

    # 8:将头文件和库文件输出到默认的
    ln -sv /usr/local/apache/include /usr/include/httpd

    # 9:启动httpd2.4
    apachectl start

    # 10:编写服务脚本实现 service httpd start 启动httpd
    vi /etc/rc.d/init.d/httpd-2.4 添加

    . /etc/rc.d/init.d/functions

    if [ -f /etc/sysconfig/httpd ]; then
    . /etc/sysconfig/httpd
    fi

    HTTPD_LANG=${HTTPD_LANG-"C"}

    INITLOG_ARGS=""


    apachectl=/usr/local/apache/bin/apachectl
    httpd=${HTTPD-/usr/local/apache/bin/httpd}
    prog=httpd
    pidfile=${PIDFILE-/usr/local/apache/logs/httpd.pid}
    lockfile=${LOCKFILE-/var/lock/subsys/httpd}
    RETVAL=0
    STOP_TIMEOUT=${STOP_TIMEOUT-10}

    start() {
    echo -n $"Starting $prog: "
    LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && touch ${lockfile}
    return $RETVAL
    }

    stop() {
    status -p ${pidfile} $httpd > /dev/null
    if [[ $? = 0 ]]; then
    echo -n $"Stopping $prog: "
    killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd
    else
    echo -n $"Stopping $prog: "
    success
    fi
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
    }

    reload() {
    echo -n $"Reloading $prog: "
    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
    RETVAL=6
    echo $"not reloading due to configuration syntax error"
    failure $"not reloading $httpd due to configuration syntax error"
    else
    # Force LSB behaviour from killproc
    LSB=1 killproc -p ${pidfile} $httpd -HUP
    RETVAL=$?
    if [ $RETVAL -eq 7 ]; then
    failure $"httpd shutdown"
    fi
    fi
    echo
    }

    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    status)
    status -p ${pidfile} $httpd
    RETVAL=$?
    ;;
    restart)
    stop
    start
    ;;
    condrestart|try-restart)
    if status -p ${pidfile} $httpd >&/dev/null; then
    stop
    start
    fi
    ;;
    force-reload|reload)
    reload
    ;;
    graceful|help|configtest|fullstatus)
    $apachectl $@
    RETVAL=$?
    ;;
    *)
    echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}"
    RETVAL=2
    esac

    exit $RETVAL


    # 11:让脚本可以被chkconfig管控
    chkconfig --add /etc/rc.d/init.d/httpd-2.4

    # 12:使用service重启服务
    service httpd-2.4 restart

    (二)对于yum 安装的httpd2.4详解

    前言:yum 安装的httpd2.4必须掌握

    • 配置httpd2.4
    1)切换使用的MPM
    /etc/httpd/conf.modules.d/00-mpm.conf 中选择需要的模式 ,打开独有的LoadModule,然后restart

    (2)虚拟机基于IP的访问控制,位于<VirtualHost> </VirtualHost>
    允许所有的主机访问:
    Require all granted
    拒绝所有的主机访问:
    Require all deny
    控制某特定的IP访问:
    Require ip IPADDR:授权指定的IP访问
    Require not ip IPADDR:拒绝
    控制特定的主机访问:
    Require host HOSHNAME:授权指定的来源的主句访问
    Require not host HOSHNAME:拒绝

    注意:如果允许所有的主机访问,但是拒绝192.168.10.2这台主机访问,要在<Directory>中加上一个容器,例如
    <RequireAll>
    Require all granted
    Require not ip 192.168.10.2
    </RequireAll>
    3)基于FQDN的虚拟主机不再需要NameVirtualHost指令
    # www.a.com 虚拟机
    <VirtualHost *:80>
    ServerName www.a.com
    DocumentRoot "/apps/www/a"
    <Directory "/apps/www/a">
    Options None
    AllowOverride None
    Require all granted
    </Directory>
    </VirtualHost>

    # www.b.com 虚拟机
    <VirtualHost *:80>
    ServerName www.b.com
    DocumentRoot "/apps/www/b"
    <Directory "/apps/www/b">
    Options None
    AllowOverride None
    Require all granted
    </Directory>
    </VirtualHost>
    千万注意:对于httpd-2.4版本来说,任意目录下的页面只有被显示授权才能被访问

    (三)对于httpd这样的web服务器中http协议说明

    前言:

    • 1:什么是会话保持
    请大家使用Google搜一搜什么是会话保持
    • 2:如何实现会话保持
    1)使用会话粘性
    2)使用会话服务器集群,会话保持在数据库里面
    3)使用会话服务器,会话保存在基于内存的NoSQL数据库中,如memcached或redis

    • 3:http协议 
      • 什么是请求报文
    <方法> <请求URL> <协议版本> 
    <各种的请求的header>
    <请求体>
      • 什么是响应报文
    <协议版本> <状态码> <是否ok> 
    <各种的响应的header>
    <响应体>
    • 4:http协议的method介绍
    GET :从服务器获取一个资源
    HEAD :只从服务器获取文档的响应首部,不会获取响应的内容资源
    POST:向服务器发送服务器要处理的数据,数据会保存在entity-body中
    PUT:将请求的主体部分存储在服务器上,entity-body包含需要上传的内容
    DELETE:删除服务器上的通过URL指定的文档
    TRACE:追踪请求到达服务器中间经过的代理服务器
    OPTIONS:让服务器返回对指定资源支持使用请求的方法
    • 5:http协议的状态码介绍
    1xx:100-101,表示信息提示
    2xx:200-206,成功
    3xx:300-305,重定向
    4xx:400-415,错误类信息,客户端错误
    5xx:500-505,错误类信息,服务器端错误


    常用状态码分类:
    200:成功,请求的所有的数据通过响应报文的entity-body部分发送;ok
    301:请求的URL指向的资源已经被删除,但是在响应报文中通过首部Location指明了资源现在所处的新位置;Moved Permanently
    302:与301相似,但是在响应报文中通过Location指明资源现在所处的临时的新位置;Found
    304:客户端发出了条件式请求,但是服务器上的资源未发送改变,通过响应此响应状态码通知客户端,Not Modified
    401:需要客户端输入账号和密码才能访问资源;Unauthorized
    403:请求被禁止;Forbidden
    404:服务器无法找到客户端请求的资源;Not Found
    500:服务器内部错误;Internal Server Error
    502:代理服务器从后端服务器收到了一条伪响应;Bad Gateway
    • 6:http协议的各个首部分类(如何想深入学习,请移步《HTTP权威指南》)
    1:通用首部:
    Date:报文的创建时间
    Connection:连接方式,如:keep-alive ,close
    Via:显示报文经过的中间节点
    Cache-Control:控制缓存的生效
    2:请求首部:
    Accept:告诉服务器客户端自己可以接受的媒体类型,也就是MIME类型
    Accept-Charset:可以接受的字符集
    Accept-Encoding:可以接受的编码格式,接受哪些压缩格式,如gzip
    Accept-Language: 可以接受的语言
    Host:请求的服务器名称,一般是域名
    Referer:包含当前正在请求资源的上一级资源,就是上一级所在的域名
    User-Agent:客户端代理
    条件式请求首部:
    Expect
    If-Modified-Since: 自从自定的时间后,请求的资源是否发生过修改
    If-UnModified-Since:自从自定的时间后,请求的资源是否没有发生过修改
    If-None-Match:本地缓存中存储的文档的ETag标签是否与服务器端的文档ETag标签不匹配
    If-Match:本地缓存中存储的文档的ETag标签是否与服务器端的文档ETag标签匹配
    安全请求首部
    Authorization:向服务器发送认证信息,如:账号密码
    Cookie:客户端向服务器端发送cookie
    Cookie2:
    代理请求首部 :
    Proxy-Authorization:向代理服务器认证
    3:响应首部:
    信息性 :
    Age:资源的有效期限,或 响应持续时长
    Server:服务器程序的软件名称和版本,如:Apache,Nginx
    协商首部:某资源有多种表示方法时使用
    Accept-Ranges:服务器可以请求的访问类型
    Vary:服务器查看的其他首部列表
    安全响应首部 :
    Set-Cookie:向客户端设置cookie
    Set-Cookie2:
    WWW-Authenticate:来自服务器对客户端的质询认证表单
    4:实体首部 :
    Allow:列出对此实体可使用的请求方法
    Location:告诉客户端真正的实体位于何处
    Content-Encoding:实体的编码格式
    Content-Language:实体使用的语言
    Content-Length:主体的长度
    Content-Location:实体真正的所处位置
    Content-Range
    Content-Type:主体的对象类型
    缓存:
    ETag:实体的扩展标签
    Expires:实体的过期时间
    Last-Modified:最后一次修改的时间

    (四)LAMP架构集群入门


    • LAMP简要介绍
    L:Linux
    A:Apache(httpd)
    M:MySQL , Mariadb
    P:php, perl , python

    静态资源:图片,文档,视频,HTML代码,CSS代码,js代码等
    动态资源:是程序文件,需要在执行引擎上执行后,返回给客户端
    客户端技术:JavaScript(有机会一定要学习)
    服务端技术:php, Java,Python(一定要学习),node.js,go(运维的趋势,跟着谷歌走,不拍栽跟头)


    httpd:接受用户的web请求
    php:运行PHP程序
    MariaDB:数据管理系统
    • CGI:通用网关接口
    作用:从客户端的网页浏览器向服务器上的应用程序传输数据
    • 对于一个LAMP集群的请求流程
    Client ---(http)---> httpd ---> (cgi协议) ---> PHP  --- (mysql协议) ---> MySQL
    • PHP说明
    脚本编程语言,使用PHP模板将PHP代码嵌入到HTML代码中,实现HTML页面的基于数据的动态化
    • http与php结合的方式
    1:CGI
    2:FastCGI
    3:把php编译为httpd的模块
    模块名为:libphp5.so

    (五)LAMP架构集群进阶


    • 安装LAMP
    redhat 6:httpd,php, mysql-server , php-mysql 
    service httpd start
    service mysqld start

    redhat 7:httpd,php, mariadb-server , php-mysql
    systemctl start httpd.service
    systemctl start mariadb.service
    • 简要说明MySQL
    客户端程序:mysql 
    -u:指明用户名
    -h:指明主机
    -p:指明密码
    例如:mysql -h192.168.23.10 -uroot -p


    数据库SQL语言介绍(这个会在下周一一次性讲完,请同志们做好心理准备,其实很简单)
    DDL:数据库定义语言
    DML:数据库操作语言
    DCL:数据库执行语言
    例如:
    grant all on testdb.* to testuser@'192.168.10.%' identified by '123456';
    flush privileges;

    • 检查PHP和MySQL是否安装成功检查代码
    1:PHP
    <?php
    phpinfo();
    ?>

    2:php连接mysql的测试代码
    <?php
    $conn = mysql_connect('192.168.10.3','yhy','123456');
    if ($conn)
    echo "ok";
    else
    echo "false";
    ?>
    • WordPress应用源码上线
    1)解压后,将目录放在web站点目录下,并且改名wp-config-sample.php为wp-config.php

    2)在mysql数据库中先创建wp数据库,并且给yhy用户授权 这是WordPress特殊的地方,其他的程序不需要
    create database wpdb;
    grant all on wp.* to yhy@'192.168.%.%' identified by '123456';
    flush privileges;
    systemctl restart mariadb.service

    3)编辑wp-config.php,修改如下配置
    define('DB_NAME', 'wp');
    /** MySQL数据库用户名 */
    define('DB_USER', 'yhy');
    /** MySQL数据库密码 */
    define('DB_PASSWORD', '123456');
    /** MySQL主机 */
    define('DB_HOST', '192.168.10.3');
    蓦然回首,那人却在,灯火阑珊处。
  • 相关阅读:
    【bzoj4240】有趣的家庭菜园
    「洛谷 P1801」黑匣子
    「SDOI 2009」Elaxia的路线
    NOIP 2016【蚯蚓】
    NOIP 2014【斗地主】
    尺取法
    POJ 3169 Layout
    51nod【1196】字符串的数量
    51nod1671【货物运输】
    hihocoder1075【开锁魔法】
  • 原文地址:https://www.cnblogs.com/linux-186/p/7446729.html
Copyright © 2011-2022 走看看