用Linux搭建web服务器

搭建web服务器

  • www 简介
    • 网址及 HTTP 简介
    • HTTP 协议请求的工作流程
  • www 服务器的基本配置
  • 实验
    • 实验一
    • 实验二、基于多个虚拟主机IP、基于多个虚拟端口、基于个人Web站点的Web网站

www 简介

网址及 HTTP 简介

web 服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在 redhat 中,这个目录默认在/var/www/html。浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据的

  • URL:Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。

  • 网址格式:<协议>://<主机或主机名>[:port]/<目录资源,路径>

    • 浏览器常支持的协议有:http、https、ftp 等

    • 主机地址或者主机名:主机地址就是服务器在因特网所在的 IP 地址。如果是主机名的话,那么就需要域名解析了

    • 端口号(port):http 为 80,https 为 443 (IANA:互联网数字分配机构)

    • 0-1023:众所周知,永久地分配给固定的应用程序使用,特权端口(只有管理员有权限启用并让进程监听)

    • 1024-41951:亦为注册端口,但要求不是特别严格,分配给程序注册为某应用使用:3306/TCP

    • 41952-60000:客户端程序随机使用的端口,动态端口,或私有端口

  • http 请求方法:在 http 通信中,每个 http 请求报文都包含一个方法,用以告诉 web 服务器端需要执行哪些具体的动作,这些动作包括:获取指定 web 页面、提交内容到服务器、删除服务器上资源文件等。

  • 状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

    • 1xx:指示信息 —— 表示请求已接收,继续处理

    • 2xx:成功 —— 表示请求已被成功接收、理解、接受

    • 3xx:重定向 —— 要完成请求必须进行更进一步的操作

    • 4xx:客户端错误 —— 请求有语法错误或请求无法实现

    • 5xx:服务器端错误 —— 服务器未能实现合法的请求

    • 常见状态代码、状态描述的说明如下:

    • 200 OK:客户端请求成功

    • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解

    • 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate 报头域一起使用

    • 403 Forbidden:服务器收到请求,但是拒绝提供服务

    • 404 Not Found:请求资源不存在,举个例子:输入了错误的URL

    • 500 Internal Server Error:服务器发生不可预期的错误

    • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

  • HTTP 报文:http 报文中有很多行内容,这些行的字段内容都是由一些 ASCII码串组成,但各个字段的长度是不同的。http 报文可分为两种,一种是从web 客户端发往 web 服务器的 http 报文,称为请求报文。另外一种是从 web服务器发往 web 客户端的报文,称为响应报文

HTTP 协议请求的工作流程

(1)终端客户在 web 浏览器地址栏输入访问地址http://www.ceshi.com:80/index.html

(2)web 浏览器请求 DNS 服务器把域名 www.ceshi.com 解析成 web 服务器的 IP地址

(3)web 浏览器将端口号(默认是 80)从访问地址(URL)中解析出来

(4)web 浏览器通过解析后的 ip 地址及端口号与 web 服务器之间建立一条 TCP连接

(5)建立 TCP 连接后,web 浏览器向 web 服务器发送一条 HTTP 请求报文

(6)web 服务器响应并读取浏览器的请求信息,然后返回一条 HTTP 响应报文。

(7)web 服务器关闭 HTTP 连接,关闭 TCP 连接,web 浏览器显示访问的网站内容到屏幕上。

www 服务器的基本配置

使用yum命令查找httpd服务yum search httpd

下载安装httpd服务yum install httpd.x86_64 -y

启动httpd服务,并查看httpd服务状态情况

systemctl start httpd
systemctl status httpd

在我们的物理机上做访问WEB网页的实验 首先要保证物理机与虚拟机在同一个网段,而且能够ping通

在这里插入图片描述
在这里插入图片描述
之后开启防火墙的80端口

[root@localhost redhat]# firewall-cmd --permanent --add-port=80/tcp
success
[root@localhost redhat]# firewall-cmd --permanent --add-service=http
success
[root@localhost redhat]# firewall-cmd --reload
success
[root@localhost redhat]# 

此时已经可以在物理机的浏览器输入虚拟机IP地址查看到HTTP的首页
如果发现超时那就是因为防火墙的问题,检查一下自己的虚拟机防火墙端口和服务都开放了么
如果都开放了还提示:HTTP/1.1 Forbidden被拒绝,意思是权限不够,可以关闭物理机的防火墙试试

在这里插入图片描述
下面就可以开始编辑配置文件来搭建个人网页了

[root@x1 redhat]# cd /etc/httpd/conf
[root@x1 conf]# ls
httpd.conf  httpd.conf.bak  magic
[root@x1 conf]# vim httpd.conf

补充:命令模式下:set nu可以显示文件行数
配置所有的访问请求都授权了
在这里插入图片描述

在httpd.conf这个配置文件中配置浏览器访问的网页根目录:可以自定义更改
在这里插入图片描述
开放访问/var/www目录的权限
在这里插入图片描述
Options Indexes FollowSymLinks语句:如果该虚拟目录下没有 index.html,浏览器会显示该虚拟目录的目录结构,列出该虚拟目录下的文件和子目录。
在这里插入图片描述
AllowOverride None: 完全忽略.htaccess 文件(超文本文件)
在这里插入图片描述
设置浏览器默认访问的网页为index.html
在这里插入图片描述

创建一个简单的测试网页

[root@x2 ~]# cd /etc/httpd/conf
[root@x2 conf]# ls
httpd.conf  magic
[root@x2 conf]# vim httpd.conf 
[root@x2 conf]# cd /var/www/html
[root@x2 html]# mkdir stu
[root@x2 html]# cd stu/
[root@x2 stu]# echo "this student score web">index.html
[root@x2 stu]# cat index.html 
this student score web

在这里插入图片描述

实验

实验一

搭建一个 web 服务器,访问该服务器时显示“hello world”欢迎界面。

[root@x2 ~]# echo hello world > /var/www/html/index.html
[root@x2 ~]# curl 192.168.80.130
hello world

实验二、基于多个虚拟主机IP、基于多个虚拟端口、基于个人Web站点的Web网站

1.搭建基于IP地址的虚拟主机

[root@localhost redhat]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls 
ifcfg-ens160
[root@localhost network-scripts]# vim ifcfg-ens160

在文件中的IP地址字段下面添加两个IP地址
在这里插入图片描述
重启网络服务,查看虚拟机的IP地址,发现确实多了两个IP地址

[root@localhost network-scripts]# ifup ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@localhost network-scripts]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:6b:46:66 brd ff:ff:ff:ff:ff:ffinet 192.168.80.129/24 brd 192.168.80.255 scope global dynamic noprefixroute ens160valid_lft 1796sec preferred_lft 1796secinet 192.168.80.100/24 brd 192.168.80.255 scope global secondary noprefixroute ens160valid_lft forever preferred_lft foreverinet 192.168.80.200/24 brd 192.168.80.255 scope global secondary noprefixroute ens160valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe6b:4666/64 scope link noprefixroute valid_lft forever preferred_lft forever

尝试用物理机ping虚拟机新加的地址
在这里插入图片描述
配置虚拟主机IP地址的网页访问主目录和网页index.html文件

[root@localhost network-scripts]# cd /var/www/
[root@localhost www]# mkdir 100 200
[root@localhost www]# echo 192.168.80.100 test website > 100/index.html 
[root@localhost www]# echo 192.168.80.200 test website > 200/index.html 

配置虚拟主机ip地址的httpd配置文件
回到配置文件的目录下面,创建一个vhost目录,里面专门存放虚拟IP地址的配置文件,然后在httpd服务的主配置文件中引用这个目录

[root@localhost 100]# cd /var/www/200/
[root@localhost 200]# vim index.html 
[root@localhost 200]# cd /etc/httpd/conf
[root@localhost conf]# cd ..
[root@localhost httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run  state
[root@localhost httpd]# mkdir vhost
[root@localhost httpd]# cd vhost/
[root@localhost vhost]#  touch 100.conf 200.conf
[root@localhost vhost]# ls
100.conf  200.conf

配置虚拟主机IP的配置文件

[root@localhost vhost]# vi 100.conf 
[root@localhost vhost]# cat 100.conf 
<VirtualHost 192.168.80.100>DocumentRoot "/var/www/100"DirectoryIndex index.html<Directory "/var/www/100">Options Indexes FollowSymLinksAllowOverride NoneRequire all granted</Directory>
</VirtualHost>
[root@localhost vhost]# vi 200.conf 
[root@localhost vhost]# cat 200.conf 
<VirtualHost 192.168.80.200>DocumentRoot "/var/www/200"DirectoryIndex index.html<Directory "/var/www/200">Options Indexes FollowSymLinksAllowOverride NoneRequire all granted</Directory>
</VirtualHost>
[root@localhost vhost]# 

配置/etc/httpd/conf/httpd.conf主配置文件引用vhost目录里的虚拟主机IP的.conf配置文件
补充:快捷键Shift+g可以直接到达文件最后一行
在主配置文件的末尾加上

在这里插入图片描述
重启httpd服务,在物理机浏览器查看虚拟主机IP的网页配置

[root@localhost vhost]# systemctl restart httpd

在这里插入图片描述
在这里插入图片描述
2.搭建基于端口号的虚拟主机

首先创建网页文件html

[root@localhost redhat]# cd /var/www/
[root@localhost www]# mkdir 8081 8082
[root@localhost www]# ls
100  200  8081  8082  cgi-bin  html
[root@localhost www]# echo 8081 port test web > 8081/index.html
[root@localhost www]# echo 8082 port test web > 8082/index.html

然后在vhost目录下配置这两个虚拟端口的配置文件

[root@localhost www]# cd /etc/httpd/
[root@localhost httpd]# 
[root@localhost httpd]# cd vhost/
[root@localhost vhost]# cp 100.conf 8081.conf
[root@localhost vhost]# cp 100.conf 8082.conf
[root@localhost vhost]# ls
100.conf  200.conf  8081.conf  8082.conf
[root@localhost vhost]# vi 8081.conf
[root@localhost vhost]# vi 8082.conf
[root@localhost vhost]# cat 8081.conf
<VirtualHost 192.168.80.129:8081>DocumentRoot "/var/www/8081"DirectoryIndex index.html<Directory "/var/www/8081">Options Indexes FollowSymLinksAllowOverride NoneRequire all granted</Directory>
</VirtualHost>
[root@localhost vhost]# cat 8082.conf
<VirtualHost 192.168.80.129:8082>DocumentRoot "/var/www/8082"DirectoryIndex index.html<Directory "/var/www/8082">Options Indexes FollowSymLinksAllowOverride NoneRequire all granted</Directory>
</VirtualHost>

配置/etc/httpd/conf/httpd.conf主配置文件引用vhost目录里的虚拟主机IP的.conf配置文件,上面已经写了这一步了,然后还要配置端口号

[root@localhost vhost]# vi ../conf/httpd.conf

在这里插入图片描述

在监听端口低下添加监听8081与8082端口

配置完成保存退出,防火墙运行端口8081和8082通过,重启httpd服务,测试虚拟端口是否可用

[root@localhost vhost]# firewall-cmd --permanent  --add-port=8081/tcp
success
[root@localhost vhost]# firewall-cmd --permanent  --add-port=8082/tcp
success
[root@localhost vhost]# firewall-cmd --reload 
success
[root@localhost vhost]# setenforce 0
[root@localhost vhost]# getenforce 
Permissive
[root@localhost vhost]# systemctl restart httpd

在这里插入图片描述
在这里插入图片描述
3.个人Web站点的发布

[root@localhost vhost]# cd /etc/httpd/conf.d
[root@localhost conf.d]# ls
autoindex.conf  README  userdir.conf  welcome.conf
[root@localhost conf.d]#  cp userdir.conf  userdir.conf.bak
[root@localhost conf.d]# vi userdir.conf

进入文件目录中修改一些配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置完成,重启httpd服务

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

使用用户user1访问个人网站
新增用户user1,并设置密码

[root@localhost conf.d]# useradd user1
[root@localhost conf.d]# passwd user1
Changing password for user user1.
New password: 
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password: 
passwd: all authentication tokens updated successfully.

创建个人站点网页文件

[root@localhost conf.d]# su - user1
[user1@localhost ~]$ cd ..
[user1@localhost home]$ chmod -Rf 711 user1
[user1@localhost home]$  mkdir -p user1/public_html/
[user1@localhost home]$ echo user1 test website > user1/public_html/index.html

测试:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/314138.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

降压型开关模式转换器

一、基本概述 TX4145 是一款降压型开关模式转换器。TX4145 在 6-60V 宽输入电源范围内实现不同峰值输出电流&#xff0c;并且具有出色的线电压和负载调整率。 TX4145 采用 PWM 电流模工作模式&#xff0c;环路易于稳定并提供快速的瞬态响应。 TX4145 外部提供 FS 脚&#xf…

分库分表之Mycat应用学习五

5 Mycat 离线扩缩容 当我们规划了数据分片&#xff0c;而数据已经超过了单个节点的存储上线&#xff0c;或者需要下线节 点的时候&#xff0c;就需要对数据重新分片。 5.1 Mycat 自带的工具 5.1.1 准备工作 1、mycat 所在环境安装 mysql 客户端程序。 2、mycat 的 lib 目录…

sqlilabs第三十六三十七关

Less-36&#xff08;GET - Bypass MySQL_real_escape_string) 手工注入 单引号闭合&#xff08;单引号自动转换的编码变了直接输入%27&#xff09; 自动注入 和上一关一样 Less-37&#xff08;POST - Bypass MySQL_real_escape_string) 手工注入 这个也是碰到过的情况 接下…

使用Vue3开发学生管理系统模板7 科目信息的实现

字段设计 IDname&#xff1a;课程名称&#xff0c;字符串&#xff0c;最大36字符start_time&#xff1a;开设时间&#xff0c;日期类型teacher_total&#xff1a;该科目老师人数&#xff0c;数字类型master_id&#xff1a;负责人ID&#xff0c;字符串&#xff0c;最大36字符ma…

2023最后一天:坚持不渝,未来值得奔赴

2024坚持不渝 又到了2023年的最后一天&#xff0c;最近这一个月多都是恍恍惚惚地&#xff0c;时间过得可真快啊&#xff0c;坐在桌子前&#xff0c;回顾这一年的过往历程~我做的每个选择或者决定&#xff0c;似乎都有支撑它的理由&#xff0c;其带来的后果&#xff0c;无…

Spring Boot整合 EasyExcel 实现复杂 Excel 表格的导入与导出功能

文章目录 1. 简介2. 引入依赖3. 导入功能实现3.1 创建实体类3.2 编写导入 Controller3.3 编写导入页面 4. 导出功能实现4.1 编写导出 Controller4.2 编写导出页面 5. 启动应用 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &…

OpenOCD简介和下载安装(Ubuntu)

文章目录 OpenOCD简介OpenOCD软件模块OpenOCD源码下载OpenOCD安装 OpenOCD简介 OpenOCD&#xff08;Open On-Chip Debugger&#xff09;开放式片上调试器 OpenOCD官网 https://openocd.org/&#xff0c;进入官网点击 About 可以看到OpenOCD最初的设计是由国外一个叫Dominic Ra…

Embedding模型在大语言模型中的重要性

引言 随着大型语言模型的发展&#xff0c;以ChatGPT为首&#xff0c;涌现了诸如ChatPDF、BingGPT、NotionAI等多种多样的应用。公众大量地将目光聚焦于生成模型的进展之快&#xff0c;却少有关注支撑许多大型语言模型应用落地的必不可少的Embedding模型。本文将主要介绍为什么…

Spark魔力:招聘网站数据深度分析系统

Spark魔力&#xff1a;招聘网站数据深度分析系统 简介数据集技术栈功能特点创新点 简介 在本文中&#xff0c;我们将介绍一款基于Spark的招聘网站数据分析系统&#xff0c;该系统使用爬取的前程无忧招聘数据。通过结合Flask、Pandas、PySpark、以及MySQL等技术&#xff0c;实现…

探索 Vue 异步组件的世界:解锁高效开发的秘密(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

啊哈c语言——逻辑挑战6:奔跑的小人

首先我们来设计这个小人&#xff1a; 将这个小人身体的三部分分为3行来分别表示&#xff1a; 第1行用一个大写字母O表示小人的脑袋。 第2行用左尖括号表示小人的右手&#xff0c;用大写字母H表示小人的身 体&#xff0c;用右尖括号>表示小人的右手。 第3行用两个大写字母…

C++多态性——(1)初识多态

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 苦难和幸福一样&#xff0c;都是生命盛…