首页 > 系统相关 >在linux上搭建web服务(静态网站)

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

时间:2023-05-29 20:22:12浏览次数:55  
标签:web httpd etc nginx html linux root localhost 搭建

目录

在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

标签:web,httpd,etc,nginx,html,linux,root,localhost,搭建
From: https://www.cnblogs.com/favoyyqxxxxx/p/17441572.html

相关文章

  • Arduino开发环境搭建
    软件下载地址:安装板级驱动:C:\Users\88429\Documents\Arduino\hardware\espressif\arduino-esp32-masteresp32wroom32板级驱动为github的链接:安装库文件:旧版(18)库位置:安装位置//aduino//librariesor//hardware或者:c盘的x86programfiles/arduinno/libraries新版的library......
  • linux运维之bash脚本编程
    算法+数据结构=程序编程语言分类:低级语言:机器语言:二进制码,0、1汇编语言:用一些容易理解和记忆的缩写单词来代替一些特定的指令高级语言:解释型语言:源代码-->编译-->得到二进制可执行文件-->执行eg:PHP、Python、Shell编译型语言:源代码-->执行eg:Java、C、C++、Golang动态编译语言不......
  • web基础漏洞-信息泄露
    1、介绍信息泄露漏洞是基于web,可以直接请求到敏感信息。2、一般页面从一般页面中,提取注释、html元素或js变量3、robots获取可能的敏感路径4、各种cms和中间件的管理页面、后台页面、标志页面phpinfotomcatapache5、目录遍历漏洞6、配置错误导致可以访问超出范围的文......
  • web基础漏洞-系统命令注入
    1、介绍应用程序有时需要调用一些执行系统命令的函数,如在php中,使用system、exec、shell_exec、passthru、popen、proc_popen等函数可以执行系统命令。当黑客能控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行攻击。2、windows支持的管道符|直......
  • web基础漏洞-xxe
    XXE漏洞利用–任意文件读取_哔哩哔哩_bilibiliDTD快速入门_哔哩哔哩_bilibiliXXE学习笔记–FreeBuf网络安全行业门户1、介绍xxe漏洞全称XMLExternalEntityInjection即外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文......
  • web基础漏洞-文件包含漏洞
    1、定义文件包含是一种常用编程技巧,即一个文件中可以包含引入其他文件,以方便代码的复用。文件包含漏洞,是因为用户可以控制包含的文件路径,从而造成危害。包含远程php文件,然后执行代码包含远程一般文件,进行网站篡改包含本地文件,暴露信息,比如系统账号密码2、相关语言和函数......
  • web基础漏洞-文件上传漏洞
    文件上传总结–FreeBuf网络安全行业门户1、定义文件上传漏洞,是因为在网站的文件上传业务中,未严格限制上传的类型,从而导致可访问、可执行的文件被上传到服务端,访问执行后造成危害。(1)静态文件,将html、js、css等静态文件上传,可以造成xss、csrf、重定向等危害(2)脚本文件,也是最主......
  • Linux常见命令汇总
    Linux常用命令1、Linux系统简介开源免费使用,技术支持:主要是字符模式,命令行界面操作,更加稳定。2、为啥学?负责搭建和维护,后端服务器搭建硬件服务器云服务器远程链接的工具Xshell3、xshell链接4、Linux目录结构层级式的树状目录结构"/"根目录"~"表示当前目录的加目录,超......
  • web基础漏洞-目录遍历漏洞
    1、介绍目录遍历漏洞,是指可以遍历查看非公开访问的,位于网站目录下或系统中的全部或部分文件。属于信息泄漏的类型之一目录遍历有两种形式:基于业务代码查询,而未限制参数,导致可以查询非公开文件由于服务器容器等中间件,未严格过滤敏感字符,导致超出边界查询2、查询目标当前网......
  • JavaWeb 解决乱码问题
    自写过滤器解决文件结构代码配置EncondingFilerpackagefilter;importjavax.servlet.*;importjava.io.IOException;publicclassEncondingFilterimplementsFilter{@Overridepublicvoidinit(FilterConfigfilterConfig)throwsServletException{......