apache2.4
介绍
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的更多相关文章
- CENTOS 6.5 平台离线安装 Apache2.4
一.下载Apache 2.4 http://httpd.apache.org/download.cgi http://mirrors.cnnic.cn/apache//httpd/httpd-2.4. ...
- Apache2.4卡住无法访问的解决……
早两个星期,搭建了一个项目管理平台--<如何安装一个优秀的BUG管理平台--真的是手把手教学!>.以前都是用apache2.2的,这次换了apache2.4.安装起来是没有问题的,结果运行 ...
- 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 ...
- Ubuntu-server 下Apache2 配置.htaccess 隐藏thinkPHP项目index.php
需要开启Apache2的rewrite模块 1.打开/etc/apache2/apache2.conf 将文件中的AllowOverride None改为AllowOverride All 2.修改m ...
- (转)ubuntu apache2 的负载均衡和反向代理
apache功能其实很是强大,最近一段时间研究了下apache的反向代理和负载均衡,反向代理网协的外网出口和我的博客出口就是通过apache的反向代理实现的,总结一下,重点说说负载均衡的配置. 首先说 ...
- CentOS安装Apache-2.4.10+安全配置
注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 在安装Nginx之前,请确保已经使用yum安装了各基础组件,并且配置了www用户和用户组,具体见<CentOS ...
- [django]django 在apache2上部署静态文件如何加载
首先找到apache2的conf文件下的httpd.conf,添加如下信息: Alias /static/ E:/wamp/Apache24/www/static/ <Directory E:/ ...
- Ubuntu apache2.4 设置虚拟主机
每次重装系统如何配置都上网找,搞半天,都是不对的,还不如自己记下来,以作参考呢.我的项目目录是 /home/feiffy/demo/test,映射的域名是 test.com,这样在浏览器输入 test ...
- 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/ 昨天在虚 ...
- linux Mint 安装apache2
sudo apt-get install apache2 y 启动apache2 /etc/init.d/apache2 restart 浏览器输入localhost看看是否访问正常 apache2 ...
随机推荐
- zz【重磅】微软开源自动机器学习工具 - NNI
[重磅]微软开源自动机器学习工具 - NNI 在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到模型最佳效果的过程了.即使是对于有经验的算法工程师和数据科学家,有时候也很难把握其中 ...
- linux的cpu使用率
linux 上一个核占满是 100%,双核机器占满整个 CPU 是 200%
- 水晶报表报错:log4net初始值问题
运行水晶报表的程序一直出错,报错如下: System.TypeInitializationException: “CrystalDecisions.ReportSource.ReportSourceF ...
- C++ string 字符串函数详解
运算符重载 + 和 +=:连接字符串 =:字符串赋值 >.>=.< 和 <=:字符串比较(例如a < b, aa < ab) ==.!=:比较字符串 << ...
- 4-ESP8266 SDK开发基础入门篇--串口
所有的源码 https://gitee.com/yang456/Learn8266SDKDevelop.git 手头有任何8266的板子就可以,不需要购买 https://item.taobao.co ...
- [LeetCode] 347. Top K Frequent Elements 前K个高频元素
Given a non-empty array of integers, return the k most frequent elements. Example 1: Input: nums = [ ...
- linux shell脚本中的延时
linux shell脚本中的延时 还是使用 sleep 或usleep函数. 详细如下: .sleep : 默认为秒. sleep 1s 表示延迟一秒 sleep 1m 表示延迟一分钟 ...
- Debian/Ubuntu下安装Apache的Mod_Rewrite模块的步骤
启用 Mod_rewrite 模块:sudo a2enmod rewrite 另外,也可以通过将 /etc/apache2/mods-available/rewrite.load 连接到 /etc/a ...
- zipfile
zipfile是一个用于处理zip压缩格式的文件的模块, 主要会用到它的ZipFile类 import zipfile zipfile.is_zipfile('myzip.zip')) # 判断一个文 ...
- ReentrantReadWriteLock三个线程读数据,三个线程写数据
/*** * 三个线程读数据,三个线程写数据 * */ public class ReadWriteLockTest { public static void main(String[] args) ...