目录
在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上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL(Uniform 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
刷新网页
更换默认网站数据目录
#将网站数据目录更换为/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