apache

目前世界主流的web服务有:

1. apache

2. nginx

3. iis

4. lighttpd

 

Apache HTTP服务器时一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名

第一的web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。

 

apache是市场占有率很高的一款web服务器,跨平台和安全性被广泛认可,可以运行在windwos,Linux,unix

系统中。支持虚拟主机功能(ip,port,FQDN),高度集成模块,https加密,检测用户访问日志,反向代理

,负载均衡,用户认证等功能。

 

【安装apache】

1.安装命令
[root@chaogelinux ~]# yum install httpd -y

2.添加httpd开机自启
[root@chaogelinux ~]# systemctl start httpd
[root@chaogelinux ~]# systemctl enable httpd

3.检查程序进程和端口
[root@chaogelinux ~]# netstat -tunlp|grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      2344/httpd

[root@chaogelinux ~]# ps -ef|grep httpd
root       2344      1  0 15:34 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2345   2344  0 15:34 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2346   2344  0 15:34 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2347   2344  0 15:34 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2348   2344  0 15:34 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2349   2344  0 15:34 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND


4.此时启了一个web服务端,可以用客户端访问  ,注意关闭防火墙
http://192.168.178.185/

 

【apache配置文件】

文件路径 作用
/etc/httpd/conf/httpd.conf apache主配置文件
/etc/httpd apache主配置目录
/etc/httpd/conf.d/*.conf apache子配置文件
/usr/sbin/httpd 二进制脚本
/var/log/httpd 日志路径access_log_error_log
/var/www/html 站点资源目录
/usr/lib/systemd/system/httpd.service httpd服务脚本文件
/usr/lib64/httpd/modules httpd模块文件路径

 

【httpd主配置文件】

#过滤掉注释空白行
[root@chaogelinux ~]# grep -Ev ‘^[# ]|^$‘ /etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
<Directory />
</Directory>
DocumentRoot "/var/www/html"
<Directory "/var/www">
</Directory>
<Directory "/var/www/html">
</Directory>
<IfModule dir_module>
</IfModule>
<Files ".ht*">
</Files>
ErrorLog "logs/error_log"
LogLevel warn
<IfModule log_config_module>
</IfModule>
<IfModule alias_module>
</IfModule>
<Directory "/var/www/cgi-bin">
</Directory>
<IfModule mime_module>
</IfModule>
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
</IfModule>
EnableSendfile on
IncludeOptional conf.d/*.conf

    主配置文件中,主要分为3类。

      1. 全局配置

      2. 主服务器配置

      3. 虚拟主机

 

【常见参数解析】

参数 解析
serverRoot “/etc/httpd” 定义服务工作目录
ServerAdmin root@localhost 管理员邮箱地址
User apache 运行服务的用户信息
Group apache 运行服务的组信息
ServerName www.example.com:80  填写服务器域名
DocumentRoot /var/ww/html  定义网站根目录
  定义网站数据目录的权限
Listen  监听的IP地址和端口号
DirectorIndex index.html 默认的首页页面文件
ErrorLog “logs/error_log” 定义错误日志位置
CustomLog “logs/access_log” combined  定义访问日志路径

 

【apache常见配置】

  【修改配置内容】

[root@chaogelinux ~]# vim /var/www/html/index.html
[root@chaogelinux ~]# curl 127.0.0.1
<meta charset=utf8>

超哥带你学apache

  

【修改网站资源目录路径】

1.修改配置文件如下,两处修改
[root@chaogelinux ~]# cat /etc/httpd/conf/httpd.conf
DocumentRoot "/www"

<Directory "/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>


2.创建资源目录,创建html文件
[root@chaogelinux conf]# cat /www/index.html
<meta charset=utf8>
我是新的首页,你好兄弟们


3.修改了配置文件,还得重启http服务才能生效
systemctl restart httpd

4.注意关闭防火墙和selinux,影响实验
[root@chaogelinux conf]# systemctl stop firewalld
[root@chaogelinux conf]# systemctl disable firewalld
[root@chaogelinux conf]# iptables -F
[root@chaogelinux conf]# setenforce 0  #临时关闭selinux
[root@chaogelinux conf]# grep -i ‘^selinux‘ /etc/selinux/config    
SELINUX=disabled    #永久关闭selinux,重启机器生效
SELINUXTYPE=targeted

  

【修改监听端口】

[root@chaogelinux ~]# grep -i "^listen"  /etc/httpd/conf/httpd.conf
Listen 85

 

【apache的工作模式】

Apache提供了三种稳定的(多进程处理模块)MPM(Mutli-Proceesing-Modules 多通道处理模块),使得

Apache能够使用更多不同的工作环境,扩展了Apache的功能。

检查默认的apache工作模式
[root@chaogelinux ~]# httpd -V|grep -i "server mpm"
Server MPM:     prefork

  可以在编译apache软件时候,添加编译参数,更改mpm模式

--with-mpm=prefork|worker|event

  apache提供的三种工作模式

1.prefork
Apache在启动之初,就预先fork一些子进程,然后等待请求进来。之所以这样做,是为了
减少频繁创建和销毁进程的开销。每个子进程只有一个线程,在一个时间点内,只能处理一
个请求。

优点:成熟稳定,兼容所有新老模块。同时,不需要担心线程安全的问题。
缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发
请求。

2.worker
使用了多进程和多线程的混合模式。它也预先fork了几个子进程(数量比较少),然后每个子
进程创建一些线程,同时包括一个监听线程。每个请求过来,会被分配到1个线程来服务。
线程比起进程会更轻量,因为线程通常会共享父进程的内存空间,因此,内存的占用会减少
一些。在高并发的场景下,因为比起prefork有更多的可用线程,表现会更优秀一些。

优点:占据更少的内存,高并发下表现更优秀。
缺点:必须考虑线程安全的问题。

3.event
它和worker模式很像,最大的区别在于,它解决了keep-alive场景下,长期被占用的线程
的资源浪费问题。event MPM中,会有一个专门的线程来管理这些keep-alive类型的线
程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样
增强了高并发场景下的请求处理能力。

HTTP采用keepalive方式减少TCP连接数量,但是由于需要与服务器线程或进程进行绑定,
导致一个繁忙的服务器会消耗完所有的线程。Event MPM是解决这个问题的一种新模型,
它把服务进程从连接中分离出来。在服务器处理速度很快,同时具有非常高的点击率时,可
用的线程数量就是关键的资源限制,此时Event MPM方式是最有效的,但不能在HTTPS访
问下工作。

  

 

apache

上一篇:js面试题--new的原理


下一篇:图像处理论文详解 | Deformable Convolutional Networks | CVPR | 2017