在linux上搭建web服务(静态网站)

发布时间 2023-05-29 20:22:28作者: 想要新裤子

在linux上搭建web服务(静态网站)

一、简介

1.1.什么是web服务器

  • 万维网(www、Web)的简称,“World Wide Web”,是一个由许多互相链接的超文本(文档等)组成的系统,通过互联网访问。Web服务器一般指网站服务器

  • 在这个系统中,每个有用的事物,称为一样“资源”;并且由一个全局“统一资源标识符”(URI)标识;这些资源通过超文本传输协议(Hypertext Transfer Protocol)传送给用户,而后者通过点击链接来获得资源。

1.2.web服务器的工作原理

Web网站服务是被动程序,即只有接收到互联网中其他计算机发出的请求后才会响应。

Web Server的主要工作就是通过HTTP协议与客户端进行通讯,处理客户端发送的HTTP请求,并且对这些请求HTTP作出回应,返回用户需要的内容,或者错误信息。

在我们日常使用浏览器的时候,我们想要访问哪一个网页,就会在浏览器上输入网址(URL),或者点击某个链接(也只URL在转跳),这就是我们发送的HTTP请求(Request),而Web Server就是来处理这些请求的,并返回给我们相应的页面(Respond)。如果错误也会返回报错信息。

第一步:DNS域名解析
第二步:建立TCP连接
第三步:HTTP通信
       HTTP请求报文
       HTTP响应报文
第四步:关闭TCP连接

举个例子:

例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:
1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
3、浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
5、释放 TCP连接;
6、浏览器将该 html 文本并显示内容;  

1.3.web服务软件有哪些

常见的web服务软件有:

Tomcat 实现了jsp/servlet规范,是一个轻量级服务器,开源免费。
nginx 快、高扩展性、最自由的BSD许可协议
apache 跨平台、安全性高、
IIS 微软公司提供

1.4.http/https协议

(1)HTTP(Hyper Text Transfer Protocol)超文本传输协议,是用于从web服务器传输超文本到本地浏览器的传送协议。HTTP 是一个基于 TCP/IP 通信协议来传递数据(HTML 文件、图片文件、查询结果等)。

(2)HTTPS(Hyper Text Transfer Protocol Secure)超文本传输安全协议,是一种通过计算机网络进行安全通信的传输协议。

(3)两者关系:HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包,HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。

HTTP 的 URL 是由 http:// 起始与默认使用端口 80

HTTPS 的 URL 则是由 https:// 起始与默认使用端口443

1.5.URL/URI

(1)URI(Uniform Resource Identifier)统一资源标识符,用来唯一标识资源,是一种语义上的抽象概念。

 具体URI的格式如下:
  [协议名]://[用户名]:[密码]@[服务器地址]:[服务器端口号]/[路径]?[查询字符串]#[片段ID]

(2)URL(Uniform Resource Locator)统一资源定位符,用来定位唯一的资源, 必须提供足够的定位信息。在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URLUniform Resource Locator,统一资源定位符),它是WWW的统一资源定位标志,就是指网络地址

格式:协议、主机域名、端口、路径。 parameters(参数) query(查询) fragment(信息片断)
  protocol :// hostname[:port] / path / [;parameters][?query]#fragment
例如:http://www.baidu.com:80/

(3)两者关系:由于互联网上每个文件都有唯一的URL, 所以URL是一种具体的URI, 可以说URL是URI的一种实现方式。URI和URL都定义了是什么资源(唯一标识),但URL还定义了该如何访问或定位该资源。

1.6.apache

Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器。

  • 支持基于IP或者域名的虚拟主机
  • 支持多种方式的HTTP认证
  • 集成代理服务器模块
  • 安全Socket层(SSL)
  • 能够实时见识服务状态与定制日志
  • 多种模块的支持

1.7.nginx

nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx 可以在大多数Unix Linux OS 上编译运行,并有 Windows移植版。 其将源代码以类BSD许可的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2022年01月25日,nginx 1.21.6发布。

二、搭建apache服务,部署静态网站

软件 httpd
服务名 httpd
默认端口 80

环境:

系统 rhel7
cpu、内存 4、2GB
IP 192.168.130.23

1.1.安装apache服务程序

#关闭防火墙、selinux
[root@localhost ~]# systemctl disable --now firewalld
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
Failed to stop dbus-org.fedoraproject.FirewallD1.service: Unit dbus-org.fedoraproject.FirewallD1.service not loaded.
[root@localhost ~]# setenforce 0
[root@localhost ~]# vi /etc/selinux/config 
....
SELINUX=disabled

#挂载光盘设备(也可以配外网用阿里云、华为的yum仓库)
[root@localhost ~]# mkdir /media/cdrom
[root@localhost ~]# mount /dev/cdrom /media/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# df
Filesystem            1K-blocks    Used Available Use% Mounted on
......
/dev/sr0                3704296 3704296         0 100% /media/cdrom

#创建yum仓库
[root@localhost ~]# vi /etc/yum.repos.d/iso.repo 
[rhel7]
name=rhel7
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1

#安装httpd服务程序
[root@localhost ~]# yum -y install httpd
....
Complete!

#启动服务
[root@localhost ~]# systemctl enable --now httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# ss -atnl
State      Recv-Q Send-Q Local Address:Port                Peer Address:Port              
LISTEN     0      128                *:22                             *:*                  
LISTEN     0      100        127.0.0.1:25                             *:*                  
LISTEN     0      128               :::80                            :::*                  
LISTEN     0      128               :::22                            :::*                  
LISTEN     0      100              ::1:25                            :::*        

1.2.配置服务器文件参数

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

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

参数:

ServerRoot 服务目录
ServerAdmin 管理员邮箱
User 运行服务的用户
Group 运行服务的用户组
ServerName 网站服务器的域名
DocumentRoot 网站数据目录
Listen 监听的ip地址与端口号
DirectoryIndex 默认的索引页面
ErrorLog 错误日志
CustomLog 访问日志文件
Timeout 网页超时时间,默认为300s
Include 需要加载的其他文件

配置文件格式:

//注释行信息
# This is the main Apache HTTP server configuration file.  It contains the
ServerRoot "/etc/httpd"        //全局配置
ServerName www.example.com:80
<Directory />
.......             //区域配置
</Directory>

1.3.默认网站数据/var/www/html

默认网站首页文件是index.html

#编写网站首页文件
[root@localhost ~]# echo "Welcome TO Apache" > /var/www/html/index.html

刷新网页

http-3

更换默认网站数据目录

#将网站数据目录更换为/opt/wwwroot
#修改主配置文件
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf 
DocumentRoot "/opt/wwwroot"     #改为新目录

<Directory "/opt/wwwroot">       #改为新目录
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

#创建新数据目录
[root@localhost ~]# mkdir /opt/wwwroot
[root@localhost ~]# echo "The New Web Directory" > /opt/wwwroot/index.html
#重启服务器
[root@localhost ~]# systemctl restart httpd

1.4.搭建个人用户主页/etc/httpd/conf.d/userdir.conf

#修改个人用户主页配置文件
[root@localhost ~]# vi /etc/httpd/conf.d/userdir.conf 
    # UserDir disabled      //默认disabled,将这行注释掉
     UserDir public_html     //将前面的注释去掉,打开此功能

UserDir public_html :此参数表示,需要在用户家目录中创建的网站数据目录的名称为public_html

#创建个人用户
[root@localhost ~]# useradd zhangsan 
#创建zhangsan用户个人网站数据
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ mkdir public_html
[zhangsan@localhost ~]$ echo "This is zhangsan's website" > public_html/index.html
[zhangsan@localhost ~]$ chmod -Rf 755 ./
[zahngsan@localhost ~]$ ll public_html/
total 4
-rwxr-xr-x 1 zahngsan zhangsan 27 May 27 22:18 index.html
       #给数据文件一个x可执行权限
       
#重启服务
[root@localhost ~]# systemctl restart httpd

查看:注意(http://ip地址/~用户名)

1.5.给个人用户主页增加密码安全验证

#使用htpasswd命令生成密码数据库(-c用于第一次生成)
[root@localhost ~]# htpasswd -c /etc/httpd/passwd zhangsan
New password: 
Re-type new password: 
Adding password for user zhangsan
[root@localhost ~]# cat  /etc/httpd/passwd 
zhangsan:$apr1$KqUz.egS$FzO6qxGtMWdxEuCLot/J9/

#改配置文件
[root@localhost ~]# vi /etc/httpd/conf.d/userdir.conf 
<Directory "/home/*/public_html">
    AllowOverride all
    authuserfile /etc/httpd/passwd
    authname "My privately website"
    authtype basic
    require user zhangsan
</Directory>
#重启服务
[root@localhost ~]# systemctl restart httpd

三、搭建nginx服务

3.1.1源码安装nginx

包名 nginx-1.25.0 .tar.gz
服务 nginx
默认端口 80

下载网址:nginx: download

环境:

系统 rhel7
cpu、内存 4、2GB
IP 192.168.130.23

命令:

$启动服务
./nginx
nginx

$停止服务
./nginx -s quit
./nginx -s stop
nginx -s quit
nginx -s stop
#在官网下载源码包然后通过xftp上传到虚拟户
[root@localhost ~]# ls
anaconda-ks.cfg  nginx-1.25.0.tar.gz

#下载依赖包
[root@localhost ~]# yum -y install gcc gcc-c++ zlib-devel pcre_devel vim 

#解压
[root@localhost ~]# tar xf nginx-1.25.0.tar.gz 
#切换目录
[root@localhost ~]# cd nginx-1.25.0
[root@localhost nginx-1.25.0]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README

#编译
[root@localhost nginx-1.25.0]# ./configure --prefix=/usr/local/nginx-1.25.0 --without-http_rewrite_module

[root@localhost nginx-1.25.0]# make
[root@localhost nginx-1.25.0]# make install

#写环境变量
[root@localhost ~]# echo "export  PATH="$PATH:/usr/local/nginx-1.25.0/sbin"" > /etc/profile.d/nginx.sh
[root@localhost ~]# source /etc/profile.d/nginx.sh 
[root@localhost ~]# which nginx
/usr/local/nginx-1.25.0/sbin/nginx

#建立软链接
[root@localhost ~]# ln -s /usr/local/nginx-1.25.0 /opt/nginx

#启动服务
[root@localhost ~]# nginx
[root@localhost ~]# ss -antl
State      Recv-Q Send-Q                           Local Address:Port                                          Peer Address:Port              
LISTEN     0      128                                          *:80                                                       *:*                  
LISTEN     0      128                                          *:22                                                       *:*                  
LISTEN     0      100                                  127.0.0.1:25                                                       *:*                  
LISTEN     0      128                                         :::22                                                      :::*                  
LISTEN     0      100                                        ::1:25                                                      :::*   

四、默认网站数据

#apache:
RPM包安装:/var/www/html
源码安装: /usr/local/apache2/htdocs