web以及nginx

发布于:2024-07-30 ⋅ 阅读:(64) ⋅ 点赞:(0)

⼀、web基本概念和常识 
Web:为⽤户提供的⼀种在互联⽹上浏览信息的服务,Web 服务是动态的、可交互的、跨平台的和图形化的。
Web 服务为⽤户提供各种互联⽹服务,这些服务包括信息浏览服务,以及各种交互式服务,包括聊天、购物、学习等等内容。
Web 应⽤开发也经过了⼏代技术的不断发展,⽬前 Web 开发依然是最重要的开发内容⼀。
Web 基础的技术包括超⽂本标记语⾔(HTML)和 HTTP 协议,HTML 是⼀种呈现数据的⽅式(给⼈看的),⽽ HTTP 则是⼀组通信的标准(语法、语义、时许),可以简单的理解为 HTTP 携带 HTML。
1. web 应⽤:⽹站(⼴义上的PC,⼿机app)
2. 浏览器(Browser):也称⽤户代理,web客户端,主要有IE、Edge、Chrome、Firefox、腾讯浏览器,360浏览器等。
3. web服务器(web server):也称HTTP服务器(HTTP server),主要有 Nginx、Apache、Tomcat 等。

⼆、⽹站基础 
1、域名 
域名是⼀个IP地址的“⾯具” ,⽬的是便于记忆和访问⼀个或⼀组服务器的地址(⽹站,电⼦邮件,FTP 等)。 
2、域名解析 
本地HOSTS解析                                        DNS服务器解析 
3、⽹站的基本概念 
⽹站、⽹⻚、主⻚;HTTP、URL、HTML、超链接
4、web ⽹站 
web1.0(以编辑为特征)
web2.0(侧重⽤户交互) 

5、动态⻚⾯与静态⻚⾯的差别 
(1)URL不同 
静态⻚⾯链接⾥没有“?”
动态⻚⾯链接⾥包含“?"
(2)后缀不同 (开发语⾔不同) 
静态⻚⾯⼀般以 .html .htm .xml 为后缀
动态⻚⾯⼀般以 .php .jsp .py等为后缀
(3)内容不同 
静态⻚⾯的内容是固定的
动态⻚⾯的内容会因⽤户、浏览器、时间、地点等⽽发⽣变化。

三、Apache概念
1、概述 
最早的 web 服务程序,基于 http 协议提供⽹⻚浏览服务。
2、特点 
模块化设置、开放源代码、跨平台应⽤、⽀持多种 web 编程语⾔、运⾏稳定。
3、⼯作模式 
(1)Prefork:使⽤进程处理请求,在该模式中⽐较消耗内存,但稳定性⾼,如某个进程出现问题,不会影响其他请求。
(2)Worker:属于多进程模式,每个进程⽣成多个进程;在该模式下消耗的资源⽐较⼩,适合⾼并发请求,但稳定性没有 Prefork 模式稳定。
(3)Event:该模式与 Worker 模式较为相似,不同之处在于在该模式下可以解决keepalive ⻓连接时占⽤线程资源导致浪费的问题。
(4)keep-alive ⻓连接:TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建⽴新连接所需时间,还节约了带宽。实现⻓连接要客户端和服务端都⽀持⻓连接。
4、安装并设置防火墙
[root@web ~]# yum -y install httpd
[root@web ~]# systemctl start httpd
[root@web ~]# systemctl stop firewalld

apache 索引⽂件 在⼀般的前段服务器http nginx tomcat中,在没有指定⽂件路径的时 候,默认先访问资源⽂件夹中的index.xxx例子如下:
[root@web ~]# echo "我是静静" > /var/www/html/index.html

生成一个静态和动态的页面

[root@web html]# dd if=/dev/zero of=/var/www/html/zz.txt bs=3M count=1

通过浏览器访问页面时会自动下载

可以自己设计网页(前端)

[root@web ~]# vim /var/www/html/index.html
<!doctype html>
<html>
        <head>
                <meta charset="utf-8">
                <title>正方形</title>
                <style>
                        div{
                                background-color:red;
                                width:120px;
                                height:120px;
                        }
                </style>
        </head>
        <body>
                <div>正方形</div> 
        </body>
</html>

访问浏览器

防火墙的应用:

[root@web html]# systemctl start firewalld
在有防火墙的情况下打开一个端口
[root@web html]# firewall-cmd --zone=public --add-port=80/tcp --permanent
查看当前防火墙的所有规则
[root@web html]# firewall-cmd --list-all
查看当前打开的端口
[root@web html]# netstat -lnsp
允许防火墙打开http服务
[root@web html]# firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@web html]# firewall-cmd --reload                重新加载防火墙配置
[root@web html]# firewall-cmd --add-service=http --permanent
[root@web html]# firewall-cmd --list-all

5、当要访问其他主机的域名时

[root@web ~]#  vim /etc/httpd/conf/httpd.conf
45 Listen 80
 46 
 47 ServerName www.yh666.com:80               #添加如下内容,域名⾃起,IP地址为⾃⼰的主机
 48 
 49 NameVirtualHost 192.168.33.110
 50 <VirtualHost 192.168.33.110>
 51         DocumentRoot /var/www/html/yang   #标明索引⽂件路径,所以还需⾃⼰在该路径创建新的索引⽂件
 52         ServerName  www.yh666.com         #域名⾃起
 53         <directory /var/www/html/yang>
54        allowoverride None         
#确定是否被允许读取.htaccess⽂件内容
55     require all granted                
所有⽤户访问指定的(/var/www/html)⽂档或⽬录
56        </directory>
 57 </virtualhost>
 58
59 <virtualhost 192.168.33.110>
 60      documentroot /var/www/html/hong  
61        servername www.hong777.com
62        <directory /var/www/html/hong>
63               allowoverride none 
64                 require all granted
65         </directory>
 66 </virtualhost>
[root@web ~]# systemctl restart httpd
 

四、nginx

1、Nginx 简介 
Nginx(engine X):开源、轻量级、⾼性能的 HTTP 和反向代理服务器,可以代理 HTTP、IMAP/POP3/SMTP 和 TCP/UDP 协议。
基本特点:占⽤内存少、并发能⼒强,采⽤ C 语⾔编写,在性能⽅⾯有⼀定保证。
Nginx 可以⽤来做负载均衡及反向代理使⽤,⽬前使⽤最多的是负载均衡。与 Nginx 同类的 Web 服务有 Apache、Tomcat 等。
官⽅⽹站:http://nginx.org/
 2、Nginx 服务器特点 
(1)模块化设计 
Nginx 将模块分为核⼼模块、HTTP 模块、事件模块和邮件模块四类。每个模块都有特定的职责,从⽽实现了整个 Web 服务器的功能。
(2)低内存消耗,⾼并发 
Nginx 使⽤ epoll and kqueue 作为开发⼯具,能够⽀持最⼤ 50000 个并发连接数的响应;不论是系统资源开销还是 CPU 使⽤效率都很优秀。
(3)事件驱动 
nginx 采⽤异步⽅式处理请求。
同步:指在发送⽅发出消息后,需要等待接收到接收⽅发回的响应,或者通过回调函数来接收到对⽅响应信息。
异步:指在发送⽅发出请求后,接收⽅不需要返回消息或者不等待返回消息,直接提供响应请求机制。
(4)⾼可靠性,master 与 worker 架构 
⼀个主进程和多个⼯作进程。⼯作进程是单线程的,且不需要特殊授权即可运⾏;
master进程:主要⽤来监控worker进程⼯作状态进⾏相应重启、停⽌等操作。
worker进程:进⾏具体提供服务,接受请求和处理请求。
(5)⽀持热更新配置、⽇志⽂件滚动、平滑升级 
    /usr/local/nginx/sbin/nginx -s reload
html⽬录中的⽂件发上修改之后,不需要nginx服务可向 master 发送 USR1、QUIT 等信号,⽆需强制停⽌服务即可完成热更新。
    向 master 发送的 USR1,可实现⽇志⽂件滚动。
    向 master 发送的 USR2,可实现平滑升级。
(6)丰富的扩展模块 
可在编译安装 nginx 时指定拓展模块,例如:nginx-stickymodule 模块(基于 cookie 来进⾏负载转发)。
3、Nginx 和 Apache 区别 
(1)架构 
Apache 采⽤多进程架构,每个请求都由⼀个独⽴的进程处理;⽽Nginx采⽤异步事件驱动的架构,可以处理更多的并发连接。
(2)性能 
由于Nginx的架构设计,它可以处理更多的并发连接,⽽且在⾼负载情况下表现更加稳定和可靠。因此,Nginx通常被认为是⽐Apache更⾼效的Web服务器。
(3)配置 
Apache 的配置⽂件⽐较复杂,需要⼀定的学习和经验才能正确配置;⽽ Nginx 的配置⽂件⽐较简洁和可读性强,更容易理解和配置。
(4)功能 
ngin x有许多模块可以扩展其功能,例如 mod_rewrite ⽤于 URL 重写mod_ssl⽤于 SSL 加密等;⽽apach 的功能⽐较简单,但是可以通过第三⽅模块扩展其功能。
4、Nginx 基本功能 
(1)静态资源 Web 服务器 
nginx 可实现动静资源分离
动态资源:需要程序处理或者从数据库中读数据,能根据不同的条件在⻚⾯显示不同的数据。
静态资源:前端的固定⻚⾯,这⾥⾯包含HTML、CSS、JS、图⽚、⾳乐等等,不需要查数据库也不需要程序处理,直接就能够显示的⻚⾯。
动静分离:当使⽤ nginx 处理静态⻚⾯时,可将⽤户的动态请求转发给后端的 tomcat 或 PHP 处理动态⻚⾯。前后端,前端就是完全的静态资源,
(2)基于域名/IP/端⼝的虚拟主机 
虚拟主机:在Web服务⾥就是⼀个独⽴的⽹站站点,这个站点对应独⽴的域名(也可能是IP或端⼝),具有独⽴的程序及资源⽬录,可以独⽴地对外提供服务供⽤户访问。⼀个 nginx 主进程,指定⼀个配置⽂件,配置⽂件内有多个虚拟主机。如果不⽤虚拟机,⼀个域名就要对应⼀个服务器,浪费资源。
Ⅰ.基于域名的虚拟主机 
以不同的多个域名区分不同的虚拟主机(IP 相同),放在⼀个nginx服务上,能够让⽤户有序访问⽣产⽤途,例如:www.jd.com 和 diannao.jd.comchannel.jd.com。
Ⅱ.基于端⼝的虚拟主机 
以不同的端⼝,来区分多个虚拟主机,也是放在⼀个nginx服务上,能够让⽤户有序访问,例如:192.168.33.110:8080、www.baidu.com:8080.
 Ⅲ.基于 IP 的虚拟主机 以不同 IP 区分不同的虚拟主机。
(3)HTTP/HTTPS、SMTP、POP3 和 TCP/UDP 反向代理 
客户端代理,增强客户端的作⽤,反向代理是保护服务器反向代理是⼀种代理服务器的配置模式,它代表服务器向客户端提供服务。客户端发送请求到反向代理服务器,然后代理服务器将请求转发到后端的真实服务器上,并将响应返回给客户端。简单理解为⽤户直接访问反向代理服务器就可以获得⽬标服务器的资源。
(4)负载均衡 
所谓负载均衡,就是 Nginx 把请求均匀的分摊给上游的应⽤服务器,这样即使某⼀个服务器宕机也不会影响请求的处理,或者当应⽤服务器扛不住了,可以随时进⾏扩容。

5、nginx的安装
[root@web ~]# yum -y remove nginx
[root@web ~]# wget https://nginx.org/download/nginx-1.26.1.tar.gz
[root@web ~]# tar -zxvf nginx-1.26.1.tar.gz
[root@web ~]# yum -y install gcc-c++
[root@web ~]# yum -y install openssl-devel
[root@web~]# yum -y install pcre-devel
[root@web ~]# yum -y install make
[root@web ~]# cd nginx-1.26.1/
[root@web nginx-1.26.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-stream
[root@web nginx-1.26.1]# make&&make install
[root@web nginx-1.26.1]# useradd -s /bin/nologin -M nginx
[root@web nginx-1.26.1]# cd /usr/local/nginx/
[root@web nginx]# ls
conf  html  logs  sbin
[root@web nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/bin/
[root@web nginx]# ls -l /usr/bin/nginx 
[root@web nginx]# netstat -lnput | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      8845/nginx: master  

[root@web nginx]#nginx -t      对nginx配置⽂件的语法和格式进⾏检查
nginx: the configuration file 
/usr/local/nginx/conf/nginx.conf syntax is ok
 nginx: configuration file 
/usr/local/nginx/conf/nginx.conf test is 
successful
 [root@webnginx]# nginx             启动nginx
 [root@web nginx]# nginx -s stop     停⽌nginx
 [root@web nginx]# nginx             启动nginx
 [root@web nginx]# nginx -s reload   热重启,仅重载nginx配置⽂件

2、以 systemctl 控制 nginx 
在 /usr/lib/systemd/system ⽬录下新建⼀个 nginx.service ⾮⼿动执⾏脚本,并使⽤ vim 命令添加以下内容。
[root@web ~]# vim 
/usr/lib/systemd/system/nginx.service
 [Unit]
 Description=nginx
 After=network.target
 [Service]
 Type=forking
 PIDFile=/usr/local/nginx/logs/nginx.pid
 ExecStart=/usr/local/nginx/sbin/nginx
 ExecReload=/usr/local/nginx/sbin/nginx -s reload
 ExecStop=/usr/local/nginx/sbin/nginx -s stop
 PrivateTmp=Flase
 [Install]
 WantedBy=multi-user.target
[root@web ~]# systemctl daemon-reload           重载systemctl的配置⽂件,以便nginx.service⽣效
[root@web ~]# systemctl start nginx.service     启动nginx
[root@web ~]# systemctl status nginx.service    查看nginx状态