目前世界主流的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访 问下工作。