CentOS7.9 搭建Web服务器
一、Apache简介
-
Apache是世界使用排名第一的Web服务器。它可以运行在几乎所有广泛使用的计算机平台上。
-
Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
-
本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon.com、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
-
Apache的诞生极富有戏剧性。当NCSA WWW服务器项目停顿后,那些使用NCSA WWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。
Apache服务器拥有以下特性:
支持最新的HTTP/1.1通信协议
拥有简单而强有力的基于文件的配置过程
支持通用网关接口
支持基于IP和基于域名的虚拟主机
支持多种方式的HTTP认证
集成Perl处理模块
集成代理服务器模块
支持实时监视服务器状态和定制服务器日志
支持服务器端包含指令(SSI)
支持安全Socket层(SSL)
提供用户会话过程的跟踪
支持FastCGI
通过第三方模块可以支持Java Servlets
- http://www.apache.org/是它的官方网站
二、服务器搭建
- 前置条件 - DNS服务器(可省略)
https://www.cnblogs.com/immengxin/p/16827291.html可以去看看我之前的文章,实用的DNS搭建教程 - 为服务器配置两个地址,确保是正确的配置,可以修改配置文件或者直接GUI界面配置
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens160
UUID=bc24b894-255e-4b0d-a1ef-a724cb7f1b90
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.255.12 // 第一个网卡地址
PREFIX=24
IPADDR1=192.168.255.20 // 第二个网卡地址
PREFIX1=24
GATEWAY=192.168.255.2
DNS1=127.0.0.1 // 因为我预先搭建了DNS环境,所以这里优先向本机请求DNS
DNS2=192.168.255.2 // 备用DNS服务器
1.安装软件包
* httpd:Apache服务器主程序的软件包
* httpd-tools:Apache服务器使用工具的软件包
* httpd-manual:Apache服务器帮助手册
[root@MengXin ~]# yum -y install httpd httpd-tools httpd-manual // 安装所需的软件包
// 防火墙允许服务通过,--permanent永久生效,建议根据端口设置防火墙或者直接关闭
[root@MengXin ~]# firewall-cmd --permanent --add-service=http
[root@MengXin ~]# firewall-cmd --permanent --add-service=https
// 防火墙允许端口通过
[root@MengXin ~]# firewall-cmd --permanent --add-port=80/tcp
[root@MengXin ~]# firewall-cmd --permanent --add-port=443/tcp
[root@MengXin ~]# firewall-cmd --reload // 重载防火墙
[root@MengXin ~]# setenforce 0 // 临时关闭selinux
[root@MengXin ~]# systemctl restart httpd // 重启httpd服务
[root@MengXin ~]# systemctl enable httpd // 自启动httpd服务
- 在其他设备上访问服务器的IP或域名,查看是否可以访问(可直接关闭防火墙)
2.全局环境设置
- ServerRoot "/etc/httpd" 设置Apache的主配置文件、错误文件和日志文件的存放目录。
- Timeout 60设置响应超时,单位为秒MaxClients设置客户端连接数的最大值
- KeepAlive Off 设置是否启用保持连接,建议使用On
- MaxKeepAliveRequests 100设置链接允许的请求数量,0为不限制KeepAliveTimeout 5设置相邻两个请求连接的时间间隔
- Listen 80设置监听端口
- IncludeOptional conf.d/*.conf 设置包含文件
- User apache 设置运行apache服务器的用户
- Group apache 设置运行apache服务器的组
3.新建站点
配置文件"/etc/httpd/conf/httpd.conf"
# 文档主目录,一般不要改这个
DocumentRoot "/home/www"
# 首页名称,可在后面追加
<IfModule dir_module>
DirectoryIndex index.html myweb.html
</IfModule>
- URI重定向
如果你想为项目添加一个名称,可以在文档末尾添加以下内容,前提是你这个项目必须存在
alias /test "/dir/dir" // 配置URI重定向,省略以后只能通过IP或域名访问
<Directory "/dir/dir">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
[root@MengXin ~]# mkdir -p /dir/dir // 为项目新建目录
[root@MengXin ~]# echo "this is test's web" > /dir/dir/index.html // 为项目新建主页
[root@MengXin ~]# systemctl restart httpd // 重启httpd服务
[root@MengXin ~]# curl http://127.0.0.1/test/
this is test's web
通过curl访问测试通过
4.配置多个站点,域名或IP访问
配置文件"/etc/httpd/conf.d/vhost.conf",如果不存在则新建
在这里用到了先前为网卡增加的地址,两个站点的域名分别是www1.immengxin.top和www2.immengxin.top
站点根目录分别为/var/www/html目录下的www1和www2目录,没有自己新建
下面是我的vhost.conf的内容
<Virtualhost 192.168.255.12>
DocumentRoot /var/www/html/www1
ServerName www1.immengxin.top
</Virtualhost>
<Virtualhost 192.168.255.20>
DocumentRoot /var/www/html/www2
ServerName www2.immengxin.top
</Virtualhost>
这里我添加了域名,需要事先配置DNS服务器,没有的可以忽略此参数
- ServerName:指定虚拟主机的名称和端口号
- ServerAdmin:指定虚拟主机的管理员E-mail地址
- DocumentRoot:指定虚拟主机的根文档目录
- ErrorLog:指定虚拟主机的错误日志存放路径
- CustomLog:指定虚拟主机的访问日志存放路径
// 为两个站点新建目录与主页
[root@MengXin ~]# mkdir /var/www/html/www1
[root@MengXin ~]# echo "this is www1's web" > /var/www/html/www1/index.html
[root@MengXin ~]# mkdir /var/www/html/www2
[root@MengXin ~]# echo "this is www2's web" > /var/www/html/www2/index.html
[root@MengXin ~]# systemctl restart httpd // 重启httpd服务
// 未配置DNS服务的可以直接访问IP
[root@MengXin ~]# curl www1.immengxin.top
this is www1's web
[root@MengXin ~]# curl www2.immengxin.top
this is www2's web