习Apach服务器搭建

前言

Web网络服务

Web网络服务,一般是指允许用户通过浏览器访问到其中各种资源的服务。比如:百度就是个web网站
Web网络服务是一种被动访问的服务程序,当接入到互联网中的用户主机发出请求后,Web服务才会响应并通过HTTP或HTTPS把请求的内容回传给用户。示意图如下:

目前提供Web服务的程序有:IIS、Apache、Ngnix等。


iis

IIS(Internet Information Services):互联网信息服务,是Windows系统中默认的Web服务程序。
它是一款带图形化界面的网站管理工具,不仅提供Web网站服务,还可以提供FTP、SMTP等服务,用于windows


Apache

Apache历史:
Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。
本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物。
它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用以及它的可移植性等方面。
Apache的诞生极富有戏剧性。当NCSAWWW服务器项目停顿后,那些使用NCSAWWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。

特点:
Apache的特点:简单、速度快、性能稳定,并可做代理服务器来使用。而且跨平台、安全性高、API扩展简单可靠。
Apache服务程序可以运行在Linux、UNIX、 Windows系统中,支持基于IP、域名及端口号的虚拟主机功能,支持多种认证方式,集成有代理服务器模块、安全Socket层(SSL),能够实时监视服务状态与定制日志消息,有着各类丰富的模块支持。


Nginx

2004年,为俄罗斯知名门户站点开发的Web服务程序Nginx横空出世。它作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而快速占领服务器市场。
它因系统资源消耗低、并发能力强的特点,在国内受到诸如新浪、腾讯、网易等门户网站的青睐。

环境

[root@aubin date]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

Apache的安装和配置

Apache的安装

     列出所有已经安装的包   
      yum list installed          

      查看httpd软件是否安装,更新   
      yum info httpd (rpm -q httpd 也可以查看是否安装)

[root@aubin /]# yum info httpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.ustc.edu.cn
 * extras: mirrors.aliyun.com
 * updates: mirrors.ustc.edu.cn
已安装的软件包
名称    :httpd
架构    :x86_64
版本    :2.4.6
发布    :97.el7.centos
大小    :9.4 M
源    :installed
来自源:updates
简介    : Apache HTTP Server
网址    :http://httpd.apache.org/
协议    : ASL 2.0
描述    : The Apache HTTP Server is a powerful, efficient, and extensible
         : web server.


启动httpd服务,并加入启动项
systemctl start httpd
systemctl enable httpd

查看服务器httpd状态

systemctl status httpd

若打开本地的火狐浏览器,地址栏输入127.0.0.1,出现以下窗口,说明apache部署成功




Apache的配置

修改文件/etc/hosts,添加ip和主机名

[root@aubin aubin]# vim /etc/hosts
[root@aubin aubin]# echo "192.168.10.150   Apache" >> /etc/hosts
[root@aubin aubin]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.150   Apache

防火墙的配置,打开HTTP的端口80和HTTPS的端口443,并立即生效
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https 
firewall-cmd --reload  让配置的策略立即生效

查看httpd的版本信息及状态
httpd -v
systemctl status httpd

文件配置
用途 文件
服务目录 /etc/httpd
主配置文件 /etc/httpd/conf/httpd.conf
网站数据目录 /var/www/html
访问日志 /var/log/httpd/access_log
错误日志 /var/log/httpd/error_log



httpd.conf的参数说明

参数 用途
ServerRoot 服务目录
ServerAdmin 管理员邮箱
User 运行服务的用户
Group 运行服务的用户组
ServerName 网站服务器的域名
DocumentRoot 网站数据目录
Directory 网站数据目录的权限
Listen 监听的IP地址与端口号
DirectoryIndex 默认的索引页页面
ErrorLog 错误日志文件
CustomLog 访问日志文件
Timeout 网页超时时间,默认为 300 秒



配置httpd.conf

cat /etc/httpd/conf/httpd.conf
默认web网站内容存放地址,默认该目录为空,向目录中创建index.html文件,并通过浏览器进行查看。
注:命令行下:set number 显示行号

31   ServerRoot "/etc/httpd"     #存放配置文件的目录
42   Listen 80                   #Apache服务监听端口
66   User apache              #子进程的用户
67   Group apache                      #子进程的组
86   ServerAdmin root@localhost                   #设置管理员邮箱
122  DocumentRoot "/var/www/html"             #网站家目录
设置DocumentRoot指定目录的属性
131 <Directory "/var/www/html">     #网站容器开始标识
144  Options Indexes FollowSymLinks     #找不到主页时,以目录的方式呈现,允许链接到网站根目录以外
151  AllowOverride None              #none不使用 .htaccess控制,all访问
156  Require all granted              #granted表示运行所有访问,denied表示拒绝所有访问
157  </Directory> 容器结束
164  DirectoryIndex index.html      #定义主业文件,当访问到网站目录时如果有定义的主业文件,网站会自动访问
316  AddDefaultCharset UTF-8     #字符编码,如果中文的话,有可能需要改为gb2312或者gbk,因你的网站文件的默认编码而异
ErrorLog "logs/error_log"




实验

新建/var/www/html目录下index.html文件,写入内容

[root@aubin aubin]# vim /var/www/html/index.html
[root@aubin aubin]# cat /var/www/html/index.html
hello,world

通过火狐,在地址栏输入自己的虚拟机ip 192.168.10.150,可查看刚刚配置的文件

自己修改网站目录为/website,需要修改 DocumentRoot "/website" 和<Directory "/website">
将/var/www/html/index.html复制到 根目录/website下,重启httpd服务,浏览器输入ip
然后查看显示httpd默认界面,再ip后面加上index.html显示错误,原因是权限不足,关系到SElinux,得将其关闭

Linux系统使用SELinux技术的目的是为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。
SELinux域对服务程序的功能进行限制,可以确保服务程序做不了出格的事情。
SELinux上下文对文件资源的访问限制,确保文件资源 只能被其所属的服务程序进行访问。
开启SELinux后,这样就等于开启了系统双保险,系统内的服务程序只能规规矩矩地拿到自己所应该获取的资源,
这样即便黑客入侵了系 统,也无法利用系统内的服务程序进行越权操作。
参数:
enforcing 强制启用安全策略模式,将拦截服务的不合法请求
permissive 遇到服务越权访问时,只发出警告而不强制拦截
disabled 对于越权的行为不警告也不拦截




SELinux设置

配置文件对应为:/etc/selinux/config 
修改SELINUX=enforcing 为SELINUX=disabled 永久禁止启动SElinux,重启生效

setenforce 0 临时禁止启动SElinux,而数字换成1就是临时启动 
getenforce  查看SElinux的状态
Permissive  

再次访问192.168.10.150 ,成功




Apache配置虚拟主机

前言

>如果每台服务器上只能运行一个网站,那些人气低、流量小的草根站长就要被迫承担着高昂的服务器租赁费用,这显然也会造成硬件资源的浪费。 为此在虚拟专用服务器(VPS:Virtual Private Server)和云计算技术诞生以前,IDC服务供应商为了更充分利用服务器资源和减低草根站长的购买门槛,都启用了虚拟主机功能。利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服务器”。 虚拟主机功能也有明显的缺点,它无法像目前的云主机技术那样实现硬件资源的隔离,这些虚拟主机共同使用物理服务器的硬件资源,IDC供应商只能限制硬盘的使用空间大小,因此同一台物理主机上的不同用户的虚拟主机可能会相互影响。但是出于成本考虑,目前还是有部分个人站长采用虚拟主机的方式来部署网站。

Apache的虚拟主机功能是服务器基于用户请求的不同IP地址、主机域名或端口号,实现提供多个网站同时为外部提供访问服务的技术。




基于IP
如果一台服务器有多个IP地址,每个IP与服务器上部署的每个网站一一对应, 这样当用户请求访问不同的IP地址时,会访问到不同网站的页面资源。
这种方式每个网站都有一个独立的IP地址,利于搜索引擎SEO优化,因此这种方式提供虚拟网站主机功能最常见且受草根站长的欢迎。


nmtui命令配置多个窗口

[root@aubin aubin]# nmtui
[root@aubin aubin]# systemctl restart network  #重启网络
[root@aubin aubin]# ip addr                   #可以看到刚才配置的IP,并能在虚拟机或宿主机上能ping通刚才配置的每个IP。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:cb:c6:a7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.150/24 brd 192.168.10.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.10.151/24 brd 192.168.10.255 scope global secondary noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.10.152/24 brd 192.168.10.255 scope global secondary noprefixroute ens33
       valid_lft forever preferred_lft forever

然后通过windows本地机ping 192.168.10.15(0~2),三个ip都能通



实验

创建子网站1,2,并写入index.html文件
[root@aubin aubin]# mkdir -p /website/1
[root@aubin aubin]# mkdir -p /website/2

[root@aubin aubin]# echo "192.168.10.151" > /website/1/index.html
[root@aubin aubin]# echo "192.168.10.152" > /website/2/index.html

[root@aubin aubin]# ls /website
1  2  index.html

[root@aubin aubin]# cat /website/1/index.html
192.168.10.151
[root@aubin aubin]# cat /website/2/index.html
192.168.10.152



配置Apache

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

向文件中分别加入两次以下配置
<VirtualHost 192.168.10.151>
 DocumentRoot /website/1
 ServerName website1
 <Directory /website/1>
  AllowOverride None
  Require all granted
 </Directory>
</VirtualHost>

重启httpd服务
[root@aubin aubin]# systemctl restart httpd
[root@aubin aubin]# tree /website/
/website/
├── 1
│   └── index.html
├── 2
│   └── index.html
└── index.html

2 directories, 3 files


[root@aubin aubin]# cat /website/1/index.html
192.168.10.151
[root@aubin aubin]# cat /website/2/index.html
192.168.10.151

打开火狐输入那两个子网站的ip(这里用的是浏览器内容字符化curl)
[root@aubin aubin]# curl 192.168.10.151
192.168.10.151
[root@aubin aubin]# curl 192.168.10.152
192.168.10.152

实验成功




基于端口,基于域名

看参考文档




参考文档

https://www.cnblogs.com/heimatengyun/p/12550272.html
https://www.cnblogs.com/heimatengyun/p/12564268.html
https://www.cnblogs.com/VseYoung/p/10018317.html

posted @ 2020-12-12 23:07  加油酱  阅读(90)  评论(0编辑  收藏  举报