介绍

Apache HTTP server是Apache软件基金会的一个开源的网页服务器,可以运行在几乎所有广泛使用的计算机平台上,由于跨平台和安全性被广泛使用,是目前最流行的web服务器软件之一,目前主流的web服务器软件包括Apache、Nginx、Lighttpd、IIS、Resin、Tomcat、Weblogic、jetty等

Apache服务器的特点是使用简单,速度快,性能稳定,可以作为负载均衡及代理服务器来使用

静态资源和动态资源

静态资源:静态内容,客户端从服务器获得的资源的表现形式与原文件相同

动态资源:通常是程序文件,需要在服务器执行之后,将执行的结果返回给客户端

状态码

HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774 与 RFC 4918 等规范扩展。所有状态码的第一个数字代表了响应的五种状态之一。所示的消息短语是典型的,但是可以提供任何可读取的替代方案。 除非另有说明,状态码是HTTP / 1.1标准(RFC 7231)的一部分。

常见的状态码:

:请求已成功,请求所希望的响应头或数据体将随此响应返回。
:请求的URL指向的资源已经被删除,但在响应报文中通过Location指明了资源现在所处的新位置
:与301相似,但在响应报文中通过Location指明资源现在所处临时新位置
:如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码
:需要输入账号密码访问资源
:请求被禁止
:服务器无法找到客户端请求的资源
:服务器内部错误
:代理服务器从后端服务器收到一条伪响应

持久连接和非持久连接

.持久连接
Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其他请求的完成
如何断开?
数量限制:
时间限制:可配置(http2.4可以配置毫秒)
副作用:对并发访问量较大的服务器,持久连接功能会使有些请求得不到响应
折中:较短的持久连接时间
.非持久连接
http1.0默认是非持久连接
http1.1默认是持久连接 KeepAlive On|Off
MaxKeepAlivedRequests #
KeepAliveTimeout #
.测试语法
telnet 192.168.254.12
GET / HTTP/1.1
Host: HOSTNAME or IP

长连接,一次连接好可以请求多个资源,直到等到设置的超时时间超时

短连接,在请求一个资源后立刻关闭连接

MPM

Multipath Process Module:多路处理模块,Apache 一共有3种稳定的 MPM 模式(多进程处理模块),它们分别是 prefork、worker、event。2.4版本的httpd默认是prefork工作模式。
而由于event不支持https,因此,企业里面很少使用event
  • prefork模式

    工作特点:

      使用多个进程,每个进程只有一个线程,每个进程在某个确定的时间只能维持一个链接,优点是稳定,但内存开销较高

  • worker模式

    工作特点:

      使用多个进程,每个进程包含多个线程,每个线程在某个确定的时间只能维持一个链接,内存占用比较小,适合大并发,高流量的web服务器worker缺点是一个线程崩溃,整个进程就会连同其任何线程一起挂掉

  • event模式

    不支持https

修改MPM模块

[root@localhost modules]# vim /etc/httpd/conf.modules.d/00-mpm.conf
解开注释:LoadModule mpm_worker_module modules/mod_mpm_worker.so
然后重启服务:
[root@localhost modules]# systemctl restart httpd
查看:
[root@localhost modules]# httpd -V
AH00112: Warning: DocumentRoot [/www/web1/] does not exist
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Server version: Apache/2.4.6 (CentOS)
Server built: Aug 8 2019 11:41:18
Server's Module Magic Number: 20120211:24
Server loaded: APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture: 64-bit
Server MPM: worker
threaded: yes (fixed thread count)
forked: yes (variable process count)

安装apache2.4

[root@localhost modules]# yum install httpd -y
[root@localhost modules]# systemctl restart httpd

修改apache端口号

1.Listen:[ip]:PORT
省略ip表示监听本机所有ip;Listen可以出现多次

定义默认主页面

DirectoryIndex index.html index.html.var

日志

apache日志一般分为两类,1.错误日志,2.访问日志

错误日志:一般存放apache所生成的错误信息

[root@localhost ~]# cat /etc/httpd/conf/httpd.conf | grep "^Error"
ErrorLog "logs/error_log"

访问日志:记录着访问本网站的客户端信息,例如ip等

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
<IfModule log_config_module>
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common <IfModule logio_module>
# You need to enable mod_logio.c to use %I and %O
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule> #
# The location and format of the access logfile (Common Logfile Format).
# If you do not define any access logfiles within a <VirtualHost>
# container, they will be logged here. Contrariwise, if you *do*
# define per-<VirtualHost> access logfiles, transactions will be
# logged therein and *not* in this file.
#
#CustomLog "logs/access_log" common #
# If you prefer a logfile with access, agent, and referer information
# (Combined Logfile Format) you can use the following directive.
#
CustomLog "logs/access_log" combined
</IfModule>

访问日志格式

combined和common:复合型和普通型

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

含义:

%h:远端主机
%I:远端登录名
%u:远程用户名
%t:时间
%r:请求第一行
%>s:状态
%b:传送字节
%{Referer}i\:请求来源
\"%{User-Agent}i\:客户端浏览器提供的浏览器识别信息

站点访问控制

站点访问控制
可基于两种类型的路径指明对哪些资源进行访问控制
文件系统控制:
<Directory ""> </Directory>
<File ""> </File>
<FileMatch ""> </FileMatch>
URL路径:
<location ""> </location>
...

基于"来源地址"的访问控制

Directory中"基于来源地址"实现访问控制
()Options
Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews None All
Indexes: 如果没有默认主页面也找不到自定义页面会显示索引页面
()基于来源地址的访问控制机制
Require all granted
Require all denied
来源地址:
         Require ip IPADDR
          Require not ip IPADDR
IPADDR:
192.168
192.168.0.0
192.168.0.0/
192.168.0.0/255.255.255.0
示例:

    <Directory "/var/www/admin">
      AllowOverride None
      Options None
      #Require all granted

      Require not ip 192.168.254.0/24
    </Directory>

 

基于"用户"的访问控制

基于用户访问控制
<Directory "/var/test">
AllowOverride None
Options None
AuthType Basic
AuthName "this is admin page"
AuthUserFile "/etc/httpd/conf.d/.htpasswd"
Require user admin1 admin2 admin3
</Directory>
创建访问授权账号
-c:自动创建htpasswd文件,因此,仅应该在添加第一个用户时使用
-m:md5加密
-D:删除用户
htpasswd -c -m /etc/httpd/conf.d/.htpasswd admin1
htpasswd -m /etc/httpd/conf.d/.htpasswd admin1

基于"组"的访问控制

.基于组访问控制
<Directory "/var/test">
AllowOverride None
Options None
AuthType Basic
AuthName "this is admin page"
AuthUserFile "/etc/httpd/conf.d/.htpasswd"
AuthGroupFile "/etc/httpd/conf.d/.htgroup"
Require group webadmins
</Directory>

虚拟主机

有三种实现方案:
基于IP:
为每个虚拟主机准备至少一个ip
基于port:
为每个虚拟主机准备至少一个port
基于hostname:
为每个虚拟主机准备至少一个hostname
可以混合使用上述三种方式中任意方式
note:一般虚拟主机不要和中心主机混用,所以要使用虚拟主机,请先禁用虚拟主机
禁用中心主机:注释DocumentRoot
每个虚拟主机都有专门配置:
<VirtualHost "IP:PORT">
ServerName:
DocumentRoot
</VirtualHost> 示例:
    <VirtualHost 192.168.254.12:>
      ServerName www2.cl7.com
      DocumentRoot "/var/www/www2"
      ErrorLog logs/www2-error_log
      CustomLog logs/www2-access_log combiend
      <Directory "/var/www/html1">
        Options None
        AllowOverride None
        <RequireAll>
          Require not ip 192.168.1.0/
          Require all granted
        </RequireAll>
      </Directory>
    </VirtualHost>

lamp架构

lamp架构是linux,apache,mysql,php的缩写,以下是架构图

测试apache和php的连接

安装php和mysql的驱动程序

[root@localhost ~]# yum install php php-mysql

在/var/www/html下(如果没有修改路径的话)创建index.php,添加如下内容

[root@localhost ~]# vim /var/www/html/index.php
<?php
phpinfo();
?>

验证:

ok,成功

测试php和mysql(mariadb)的连接

在/var/www/html下(如果没有修改路径的话)创建index.php,添加如下内容:

[root@localhost ~]# vim /var/www/html/index.php
<?php
$link=mysql_connect('127.0.0.1','root','root');
if($link)
echo "success!!!";
else
echo "failed!!!";
mysql_close();
?>

测试

ok,没问题

apache2.4的更多相关文章

  1. CENTOS 6.5 平台离线安装 Apache2.4

    一.下载Apache 2.4 http://httpd.apache.org/download.cgi http://mirrors.cnnic.cn/apache//httpd/httpd-2.4. ...

  2. Apache2.4卡住无法访问的解决……

    早两个星期,搭建了一个项目管理平台--<如何安装一个优秀的BUG管理平台--真的是手把手教学!>.以前都是用apache2.2的,这次换了apache2.4.安装起来是没有问题的,结果运行 ...

  3. windows7 下 apache2.4 和 php5.5 及 mysql5.6 的安装与配置

    要准备的软件 httpd-2.4.9-win32-VC11.zip http://www.apachelounge.com/download/ php-5.5.13-Win32-VC11-x86.zi ...

  4. Ubuntu-server 下Apache2 配置.htaccess 隐藏thinkPHP项目index.php

    需要开启Apache2的rewrite模块 1.打开/etc/apache2/apache2.conf 将文件中的AllowOverride None改为AllowOverride All 2.修改m ...

  5. (转)ubuntu apache2 的负载均衡和反向代理

    apache功能其实很是强大,最近一段时间研究了下apache的反向代理和负载均衡,反向代理网协的外网出口和我的博客出口就是通过apache的反向代理实现的,总结一下,重点说说负载均衡的配置. 首先说 ...

  6. CentOS安装Apache-2.4.10+安全配置

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 在安装Nginx之前,请确保已经使用yum安装了各基础组件,并且配置了www用户和用户组,具体见<CentOS ...

  7. [django]django 在apache2上部署静态文件如何加载

    首先找到apache2的conf文件下的httpd.conf,添加如下信息: Alias /static/ E:/wamp/Apache24/www/static/ <Directory E:/ ...

  8. Ubuntu apache2.4 设置虚拟主机

    每次重装系统如何配置都上网找,搞半天,都是不对的,还不如自己记下来,以作参考呢.我的项目目录是 /home/feiffy/demo/test,映射的域名是 test.com,这样在浏览器输入 test ...

  9. Ubuntu 16.04 LAMP server 指南 - 配置 Apache2.4,PHP7,和MariaDB(而不是MySQL)

    翻译自:https://www.howtoforge.com/tutorial/install-apache-with-php-and-mysql-on-ubuntu-16-04-lamp/ 昨天在虚 ...

  10. linux Mint 安装apache2

    sudo apt-get install apache2 y 启动apache2  /etc/init.d/apache2 restart 浏览器输入localhost看看是否访问正常 apache2 ...

随机推荐

  1. zz【重磅】微软开源自动机器学习工具 - NNI

    [重磅]微软开源自动机器学习工具 - NNI 在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到模型最佳效果的过程了.即使是对于有经验的算法工程师和数据科学家,有时候也很难把握其中 ...

  2. linux的cpu使用率

    linux 上一个核占满是 100%,双核机器占满整个 CPU 是 200%

  3. 水晶报表报错:log4net初始值问题

    运行水晶报表的程序一直出错,报错如下: System.TypeInitializationException: “CrystalDecisions.ReportSource.ReportSourceF ...

  4. C++ string 字符串函数详解

    运算符重载 + 和 +=:连接字符串 =:字符串赋值 >.>=.< 和 <=:字符串比较(例如a < b, aa < ab) ==.!=:比较字符串 << ...

  5. 4-ESP8266 SDK开发基础入门篇--串口

    所有的源码 https://gitee.com/yang456/Learn8266SDKDevelop.git 手头有任何8266的板子就可以,不需要购买 https://item.taobao.co ...

  6. [LeetCode] 347. Top K Frequent Elements 前K个高频元素

    Given a non-empty array of integers, return the k most frequent elements. Example 1: Input: nums = [ ...

  7. linux shell脚本中的延时

    linux shell脚本中的延时 还是使用 sleep 或usleep函数. 详细如下:     .sleep : 默认为秒. sleep 1s 表示延迟一秒   sleep 1m 表示延迟一分钟 ...

  8. Debian/Ubuntu下安装Apache的Mod_Rewrite模块的步骤

    启用 Mod_rewrite 模块:sudo a2enmod rewrite 另外,也可以通过将 /etc/apache2/mods-available/rewrite.load 连接到 /etc/a ...

  9. zipfile

    zipfile是一个用于处理zip压缩格式的文件的模块, 主要会用到它的ZipFile类 import zipfile zipfile.is_zipfile('myzip.zip')) # 判断一个文 ...

  10. ReentrantReadWriteLock三个线程读数据,三个线程写数据

    /*** * 三个线程读数据,三个线程写数据 * */ public class ReadWriteLockTest { public static void main(String[] args) ...