系统运维-22-1-httpd2.4和LAMP基础知识

httpd-2.4基础知识
新增特性:
    1)MPM支持运行DSO(动态共享对象)机制,以模块形式按需加载
    2)支持event MPM
    3)支持异步读写
    4)支持每个模块及每个目录分别使用各自的日志级别
    5)每请求配置
    6)增强版的表达式分析
    7)支持毫秒级的keepalive timeout
    8)基于FQDN的虚拟主机不再需要NameVirtualHost指令
    9)支持用户自定义变量

新增模块:
    1)mod_proxy_fcgi
    2)mod_ratelimit
    3)mod_remoteip

修改了一些配置机制
    不再支持使用order,deny,allow来做基于IP的访问控制

安装httpd-2.4
    httpd依赖于apr-1.4+,apr-util-1.4+,apr-icon
        apr:apache portable runtime

Centos 6环境下编译安装httpd-2.4步骤
    1.4+版的apr和apr-util
    前提:
        安装开发环境,安装pcre-devel
    1)apr
        # ./configure --prefix=/usr/local/apr
        # make %% make install
    2) apr-util
        # ./configure --prefix=/usr/local/apr-util --with=/usr/local/apr
        # make %% make install

    # groupadd -r apache
    # useradd -r -g apache apache
    # ./configure --prefix=/usr/local/apache --sysconf=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --whti-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
    # make %% make install
    注意:默认一般为--sysconf=/etc/httpd,这里为了防止和已经安装的冲突

    启动服务
        apachectl

Centos 7环境下默认安装了httpd-2.4
    配置文件
        主配置文件 /etc/httpd/conf/httpd.conf
        模块配置文件 /etc/httpd/conf.modules.d/*.conf
        辅助配置文件 /etc/httpd/conf.d/*.conf
    mpm 以DSO机制提供,配置文件00-mpm.conf
    服务控制 systemctl

    [root@lab1 ~]# cd /etc/httpd/conf.modules.d/
    [root@lab1 conf.modules.d]# ll
    total 32
    -rw-r--r-- 1 root root 3739 Apr 24 09:44 00-base.conf
    -rw-r--r-- 1 root root  139 Apr 24 09:44 00-dav.conf
    -rw-r--r-- 1 root root   41 Apr 24 09:44 00-lua.conf
    -rw-r--r-- 1 root root  742 Apr 24 09:44 00-mpm.conf
    -rw-r--r-- 1 root root  957 Apr 24 09:44 00-proxy.conf
    -rw-r--r-- 1 root root   41 Apr 24 09:44 00-ssl.conf
    -rw-r--r-- 1 root root   88 Apr 24 09:44 00-systemd.conf
    -rw-r--r-- 1 root root  451 Apr 24 09:44 01-cgi.conf
    [root@lab1 conf.modules.d]# grep -v ^# 00-mpm.conf | grep -v ^$
    LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
    [root@lab1 conf.modules.d]# vim 00-mpm.conf 
    [root@lab1 conf.modules.d]# grep -v ^# 00-mpm.conf | grep -v ^$
    LoadModule mpm_event_module modules/mod_mpm_event.so
    [root@lab1 conf.modules.d]# systemctl restart httpd
    [root@lab1 conf.modules.d]# ps aux | grep httpd
    root       1323  0.1  0.4 248188  7568 ?        Ss   19:13   0:00 /usr/sbin/httpd -DFOREGROUND
    apache     1324  0.0  0.1 247936  3616 ?        S    19:13   0:00 /usr/sbin/httpd -DFOREGROUND
    apache     1325  0.0  0.3 535016  6228 ?        Sl   19:13   0:00 /usr/sbin/httpd -DFOREGROUND
    apache     1326  0.0  0.3 535016  6224 ?        Sl   19:13   0:00 /usr/sbin/httpd -DFOREGROUND
    apache     1327  0.0  0.3 535016  6224 ?        Sl   19:13   0:00 /usr/sbin/httpd -DFOREGROUND
    root       1410  0.0  0.0 112708   976 pts/0    S+   19:14   0:00 grep --color=auto httpd
    [root@lab1 conf.modules.d]# httpd -l
    Compiled in modules:
      core.c
      mod_so.c
      http_core.c
    [root@lab1 conf.modules.d]# httpd -M | grep mpm
     mpm_event_module (shared)


配置访问控制
    1)切换使用MPM
        LoadModule mpm_NAME_module modules/mod_mpm_NAME.so
    2)修改‘Main’ Server的DocumentRoot
    3)基于IP的访问控制法则
        允许所有主机访问 Require all granted
        拒绝所有主机访问 Require all deny
        控制特定ip访问
            Require ip IPADDR 授权指定来源地址的主机访问
            Require not ip IPADDR 拒绝指定来源地址的主机访问
        控制特定主机HOSTNAME访问
            Require host HOSTNAME
            Require not host HOSTNAME

            HOSTNAME
                FQDN 特定主机
                DOMAIN 指定域内的所有主机

            <RequireAll>
                Require all granted
                Require not ip #.#.#.#
            </RequireAll>

    4)虚拟主机
        基于IP PORT和FQDN都支持
        基于FQDN的不再需要NameVirtualHost指令
    5)ssl
        启用模块
            LoadModule ssl_module modules/mod_ssl.so
    6)Centos 6 服务脚本

LAMP基础知识 
    apache,mariadb(mysql),php(perl,python)
    LAMMP memcached

    静态资源:静态内容,客户端从服务器端获得的资源的表现形式与原文件相同
    动态资源:通常是程序文件,需要在服务器端执行后,将执行结果返回给客户端

        CGI Common Gateway Interface
        fastcgi
        程序 = 指令 + 数据
        整个处理过程
        1)客户端请求动态资源,请求先送给WEB服务器
        2)WEB服务器发现是动态资源,转交给应用程序服务器
        3)应用程序服务器从磁盘加载本地程序运行,执行过程中生成结果则直接返回给WEB服务器,如果发现需要用到数据,则发送请求给数据服务器
        4)数据服务器从磁盘中加载数据,在索引中过滤获取最终数据
            在这里简单解释一下数据库的一般存储和查找模式
            (1)按照每一个KEY对应的列提取出来进行存储
            (2)对每一列进行排序,并对同一类型(例如:同一首字母)进行分类索引(数据量特别大的话,有时也进行多层次多次分类),即稀疏索引(相反的对每一个值索引则为稠密索引)
            (3)查找时先找到某一类(必要时不断查找细分类),再依次进行查找
        5)数据服务器将数据返回给应用程序服务器
        6)应用程序服务器把结果返回给WEB服务器
        7)WEB服务器把结果返回给客户端
        对于不变化的动态资源,放入缓存中,以提升资源性能

[root@lab1 ~]# yum install php php-mysql mariadb -y
[root@lab1 ~]# yum install -y mariadb-server
[root@lab1 ~]# rpm -q mariadb
mariadb-5.5.60-1.el7_5.x86_64
[root@lab1 ~]# rpm -q mariadb-server
mariadb-server-5.5.60-1.el7_5.x86_64
[root@lab1 ~]# rpm -ql mariadb-server | grep service
/usr/lib/systemd/system/mariadb.service
[root@lab1 ~]# systemctl start mariadb
[root@lab1 ~]# ss -tnl | grep 3306
LISTEN     0      50           *:3306                     *:*     
[root@lab1 ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit
Bye
[root@lab1 ~]# 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
[root@lab1 ~]# 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
[root@lab1 ~]# grep -v ^# /etc/httpd/conf.d/php.conf | grep -v ^$
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
AddType text/html .php
DirectoryIndex index.php
php_value session.save_handler "files"
php_value session.save_path    "/var/lib/php/session"
[root@lab1 conf.modules.d]# vim 00-mpm.conf
[root@lab1 conf.modules.d]# grep -v ^# 00-mpm.conf 
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
[root@lab1 conf.modules.d]# systemctl restart httpd.service
[root@lab1 conf.modules.d]# httpd -M |grep php
 php5_module (shared)
[root@lab1 conf.modules.d]# cd /www/htdocs
[root@lab1 htdocs]# cp index.html index.php
[root@lab1 htdocs]# vim index.php
[root@lab1 htdocs]# cat index.php
<?php
    phpinfo()
?>

[root@lab1 htdocs]# vim index.php
[root@lab1 htdocs]# cat index.php 
<?php
    $link=mysql_connect('127.0.0.1','mysql','');
    if ($link)
        echo "Success";
    else
        echo "Failure";
    mysql_close(); 
?>
[root@lab1 htdocs]# curl 172.20.0.132/index.php
Success
[root@lab1 htdocs]# systemctl stop mariadb.service
[root@lab1 htdocs]# curl 172.20.0.132/index.php
Failure
[root@lab1 htdocs]systemctl start mariadb.service

注意:LAMP搭建过程,这里httpd开始是以event模式运行,没有模块,prefork和event模式运行时其编译方式是不同的,重启的时候要调回event模式

httpd + php 的三种方式:
    1)modules
    2)cgi
    3)fastcgi(fpm)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值