Linux——web服务器

HTTPD(apache web服务器)

安装包:httpd-2.4.6-45.el7.centos.4.x86_64.rpm   #yum install -y httpd

httpd-manual-2.4.6-45.el7.centos.4.noarch.rpm 文档

端口: 80(http) 443(https)

配置文件: /etc/httpd/conf/httpd.conf

/etc/httpd/conf.d/ 子配置文件目录

/etc/httpd/conf.modules.d 模块相关子配置文件 动态加载模块

数据目录:/var/www/html

启动服务:systemctl restart httpd

日至存放目录:/var/log/httpd/ error.log access.log

linux客户端访问

elinks 192.168.206.20    #yum install -y elinks

elinks --dump 192.168.206.20 显示在终端上

curl 192.168.206.20



服务器端查看服务是否启动

netstat -anplt  | grep :80

tcp6       0      0 :::80                   :::*                    LISTEN      4642/httpd

http: 超文本传输协议: hyper text tranfer protocol

html:超文本标记语言:hyper text mark langue

编写测试页

vim /var/www/html/index.html
<html>
        <head>
                <title>test/title>
        </head>
        <body>
                <h2>beautiful</h2>
                <br>
                <a href="http://www.baidu.com"><h3>搜索其美女</h3></a>
                <br>
                <img src="beautiful.jpg">
        </body>
</html>


[root@localhost ~]# ls /var/www/html/
beautiful.jpg  index.html




ps:index.html 一般为http服务的主页

也可以用windows访问直接在地址栏输入web服务器地址即可

ps:systemctl stop firewalld.service  关闭虚拟机防火墙

       setenforce 0      关闭虚拟机selinux

 浏览器访问网页流程图

C/S :client/service(软件端游)    B/S:browser/service

apache三种工作模式

查看工作模式

httpd -V

1. prefork MPM

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

优点:成熟稳定,兼容所有新老模块。同时,不需要担心线程安全的问题。

缺点:一个进程相对占用更多的系统资源消耗更多的内存。而且,它并不擅长处理高并发请求,在这种场景下,它会将请求放进队列中,一直等到有可用进程,请求才会被处理。

2.worker MPM

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

优点:占据更少的内存,高并发下表现更优秀。

缺点:必须考虑线程安全的问题,因为多个子线程是共享父进程的内存地址的。如果使用keep-alive的长连接方式,某个线程会一直被占据,也许中间几乎没有请求,需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用

3. event MPM

这个是Apache中最新的模式,在现在版本里的已经是稳定可用的模式。它和worker模式很像,最大的区别在于,它解决了keep-alive场景下,长期被占用的线程的资源浪费问题(某些线程因为被keep-alive,空挂在哪里等待,中间几乎没有请求过来,甚至等到超时)。event MPM中,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力。

注意一点,event MPM需要Linux系统(Linux 2.6+)对EPoll的支持,才能启用

pstree -c |grep httpd

切换模式

像开启那个模式就去掉那个模式前边的注释符:#

切换方式
vim /etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
</IfModule>


#LoadModule mpm_worker_module modules/mod_mpm_worker.so
<IfModule mpm_worker_module>
StartServers 10
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>


#LoadModule mpm_event_module modules/mod_mpm_event.so
<IfModule mpm_event_module>
StartServers 15
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>

保持连接(长连接)

KeepAlive On

KeepAliveTimeout 15

MaxKeepAliveRequests 100

修改http访问默认位置

mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak
#DocumentRoot "/var/www/html"
DocumentRoot "/etc"
<Directory "/etc">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

其他方法

方法1:

cp -r /boot /var/www/html     #将文件复制到目录

方法2:

ln -s /boot/ /var/www/html    #创建软连接

方法3:

别名

alias /down /home

<directory /home>

options indexes

Require all granted

</directory>

alias /upup /var

<Directory "/var">

options indexes

require all granted

</Directory>

useradd robin

useradd zorro

mkdir /home/tong/public_html

mkdir /home/tom/public_html

echo "tomn home" > /home/robin/public_html/index.html

echo "tom home" > /home/zorro/public_html/index.html

chmod 705 /home/tong/

chmod 705 /home/tom/

客户端测试

http://192.168.206.20/~tong/

http://192.168.206.20/~tom/

虚拟主机(基于域名 基于ip)

基于域名虚拟主机(使用一个公网ip对应解析多个域名,并且访问到不同网页)

[root@nfsserver ~]# vim /etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
    ServerName www.tong.com
    DocumentRoot /srv/east
</VirtualHost>

<VirtualHost *:80>
    ServerName www.tom.com
    DocumentRoot /srv/west
</VirtualHost>

<Directory "/srv/east">
        Options Indexes
        Require all granted
</Directory>
<Directory "/srv/west">
        Options Indexes
        Require all granted
</Directory>



[root@nfsserver ~]# mkdir /srv/tong

[root@nfsserver ~]# mkdir /srv/tom

[root@nfsserver ~]# vim /srv/tong/index.html

[root@nfsserver ~]# vim /srv/tom/index.html

[root@nfsserver ~]# systemctl restart httpd

客户端

[root@client ~]# vim /etc/hosts     #域名解析

192.168.206.20 www.tong.com

192.168.206.20 www.tom.com

测试:

[root@client ~]# elinks --dump www.tong.com

tong

[root@client ~]# elinks --dump www.tom.com

tom

基于ip虚拟主机

[root@nfsserver conf.d]# vim vhost_ip.conf

<VirtualHost 192.168.206.20:80>
    DocumentRoot /srv/hahaha
    ServerName www.hahaha.com
</VirtualHost>

<VirtualHost 172.17.206.20:80>
    DocumentRoot /srv/liuliuliu
    ServerName www.liuliuliu.com
</VirtualHost>

<Directory "/srv/liuliuliu">
    Options indexes
    Require all granted
</Directory>
<Directory "/srv/hahaha">
    Options indexes
    Require all granted
</Directory>

[root@nfsserver conf.d]# systemctl restart httpd

[root@nfsserver conf.d]# mkdir /srv/hahaha

[root@nfsserver conf.d]# mkdir /srv/liuliuliu

[root@nfsserver conf.d]# echo "哈哈哈" > /srv/hahaha/index.html

[root@nfsserver conf.d]# echo "666" > /srv/liuliuliu/index.html

客户端

vim /etc/hosts

192.168.206.20 www.hahaha.com

172.17.206.20 www.liuliuliu.com

测试

[root@client ~]# elinks --dump www.hahaha.com

哈哈哈

[root@client ~]# elinks --dump www.liuliuliu.com

666

在网卡上添加删除IP地址

ip addr add 192.168.206.20/24 dev ens33

ip addr del 192.168.206.20/24 dev ens33

Guess you like

Origin blog.csdn.net/zhangt123321/article/details/121500551