⼀、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 等。
二、apache服务
(1)Apache 概念
1、概述 最早的 web 服务程序,基于 http 协议提供⽹⻚浏览服务。
2、特点 模块化设置、开放源代码、跨平台应⽤、⽀持多种 web 编程语⾔、运⾏稳定。
3、⼯作模式
(1)Prefork:使⽤进程处理请求,在该模式中⽐较消耗内存,但稳定性⾼,如某个进程出现问题,不会影响其他请求。
(2)Worker:属于多进程模式,每个进程⽣成多个进程;在该模式下消耗的资源⽐较⼩,适合⾼并发请求,但稳定性没有 Prefork 模式稳定。
(3)Event:该模式与 Worker 模式较为相似,不同之处在于在该模式下可以解决keepalive ⻓连接时占⽤线程资源导致浪费的问题。
(4)keep-alive ⻓连接:TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为 每个请求建⽴新连接所需的时间,还节约了带宽。实现⻓连接要客户端和服务端都⽀持⻓连接。
(2)搭建 apache 服务器
1、安装并设置防⽕墙
2.安装httpd服务
[root@web ~]# yum -y install httpd
查看安装情况以及安装的资源文件
[root@web ~]#rpm -qa | grep httpd
[root@web ~]#rpm -ql httpd
[root@web ~]#ls /etc/httpd/
[root@web ~]#vim /etc/httpd/conf/httpd.conf
[root@web ~]#ls /var/www/html/
查看端⼝确认apache已启⽤
[root@web ~]#netstat -lnput | grep http
检查防火墙
[root@web ~]#systemctl status firewalld
不能直接禁用防火墙,可以单独打开端口/服务
[root@web ~]#firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@web ~]#firewall-cmd --zone=public --add-service=http --permanent
打开服务不会马上生效,需要重启或者重载服务信息(重载防⽕墙规则)
[root@web ~]#firewall-cmd --reload
#查看当前区域下防⽕墙所有规则
[root@web ~]# firewall-cmd --list-all
[root@web ~]#cd /var/www/html/
[root@web html]# systemctl restart httpd.service
[root@web html]# echo "我是静态页面" > index.html
[root@web html]# rz -E
rz waiting to receive.
[root@web html]# ls
haha.jpg index.html
浏览器访问ip:
3.apache 索引⽂件
当在资源目录中添加index.html之后,html服务会自动找到index文件
在⼀般的前段服务器中http nginx tomcat,在没有指定⽂件路径的时候,默认先访问资源⽂件夹中的index.xxx
./html/index.html
httpd 使⽤ yum 安装时,默认的站html⽂件在/var/www/html/index.html,如果 index.html ⽂件不存在,需要⼿动创建
在⽹站⽅⾯,index通常是指主⽬录的意思,index.html是⽬录下默认打开的⻚⾯。
⽐如,⽹站的域名是www.abc.com,如果设置了 index.html 是
默认主⻚,那么打开 http://www.abc.com 和打开⻚⾯ http://www.abc.com/index.html 就是⼀样的。他们打开的都是⽹站⾸⻚,因为index.html是⽹站默认的主⻚。
在 index.html 写⼊如下内容,可以让主⻚显示⼀个圆形,圆⼼处显示⽂字“这就是主⻚”
[root@web html]# vim /var/www/html/index.html
重启服务
[root@shell ~]# systemctl restart httpd
4.服务器访问测试
浏览器内输⼊搭建好的 httpd 服务器 IP 地址或域名(IP:192.168.2.21)
三、部署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-sticky-module 模块(基于 cookie 来进⾏负载转发)。
3、Nginx 和 Apache 区别
(1)架构 Apache 采⽤多进程架构,每个请求都由⼀个独⽴的进程处理; ⽽Nginx采⽤异步事件驱动的架构,可以处理更多的并发连接。
(2)性能 由于Nginx的架构设计,它可以处理更多的并发连接,⽽且在⾼负载情况下表现更加稳定和可靠。因此,Nginx通常被认为是⽐Apache更⾼效的Web服务器
(3)配置 Apache 的配置⽂件⽐较复杂,需要⼀定的学习和经验才能正确配置;⽽ Nginx 的配置⽂件⽐较简洁和可读性强,更容易理解和配置。
(4)功能 nginx有许多模块可以扩展其功能,例如 mod_rewrite ⽤于URL 重写,mod_ssl⽤于 SSL 加密等;⽽apach 的功能⽐较简单,但是可以通过第三⽅模块扩展其功能。
web服务器:
4.Nginx 安装
(1).下载安装nginx
[root@web ~]# wget https://nginx.org/download/nginx-1.26.1.tar.gz
(2).解压
[root@web ~ ]# tar -zxvf nginx-1.26.1.tar.gz
(3).编译安装 nginx
(1)安装 pcre
⾸先安装 pcre。此软件是为了⽀持 rewrite(重写、复写)功能⽽存在的。rewrite 是实现 url 重定向的重要命令,它会根据正则表达式来匹配内容,从⽽跳转到⽬标上⾯去。
[root@web ~]# yum -y install pcre-devel
(2)安装 OpenSSL
当没有使⽤ ssl 证书对服务器数据进⾏加密认证时,⽤户的数据将会以明⽂的形式进⾏传输,⽽此时,⽤户的数据可以被⼀些抓包⼯具获取,就容易造成⽤户的信息泄露。
所以为了改善这种情况,作为运维⼈员需要去为⽹站配置 ssl 证书,实现 https 协议的访问
(3)在安装之前还要安装⽤来编译的⼯具
gcc、gcc-c++、make;lrzsz 是⽤来从 Windows 上直接将⽂件导⼊到 Linux 内的⼯具。
[root@web ~]# yum -y install gcc gcc-c++ make
(4)编译安装 nginx
如果之前在系统上有 yum 安装的 nginx,那么在编译安装之前 需要先卸载掉原来的 nginx。
卸载nginx:yum -y remove nginx
[root@web ~]# ls
nginx-1.26.1 nginx-1.26.1.tar.gz
cd到安装包⽬录下
[root@web ~]# cd nginx-1.26.1/[root@web nginx-1.26.1]# lsauto CHANGES.ru configure html man srcCHANGES conf contrib LICENSE README[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]# tree /usr/local/nginx
[root@web nginx-1.26.1]# cd /usr/local/nginx/
[root@web nginx]# ls
conf html logs sbin
备份目录
[root@web nginx]# cp -r conf/ conf.bak
[root@web nginx]# ./sbin/nginx
开放端口或者服务
[root@web nginx]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@web nginx]# firewall-cmd --reload
success
[root@web nginx]# vim /usr/local/nginx/conf/nginx.conf
创建符号链接(软链接)
[root@web nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/bin/
[root@web nginx]# ls -l /usr/bin/nginx
lrwxrwxrwx. 1 root root 27 7月 29 16:16 /usr/bin/nginx -> /usr/local/nginx/sbin/nginx
[root@web nginx]# nginx
[root@web nginx]# nginx -s stop
[root@web nginx]# netstat -lnput|grep nginx
[root@web nginx]# nginx
[root@web nginx]# netstat -lnput|grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 17228/nginx: master
启动和关闭nginx服务
./nginx ./nginx -s reload
修改了配置文件后,重载nginx服务网
./nginx -s reload
脚本启动nginx服务:
[root@web nginx]# vim ~/nginx.sh
[root@web nginx]# bash ~/nginx.sh
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 17228/nginx: master
nginx正在执行,或者是80端口被占用
[root@web nginx]# nginx -s stop
[root@web nginx]# bash ~/nginx.sh
以systemctl控制nginx
[root@web nginx]# vim /usr/lib/systemd/system/nginx.service
如果直接使用sbin目录下的nginx,就无法使用systemctl
这两套命令只能用一套
[root@web nginx]# systemctl daemon-reload
(1)[root@web nginx]# systemctl stop nginx
(2)[root@web nginx]# nginx -s reload
[root@web nginx]# nginx -s stop
添加监控块
[root@web nginx]# vim /usr/local/nginx/conf/nginx.conf
[root@web nginx]# systemctl restart 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 gcc-c++ [root@web ~]# yum -y install openssl-devel pcre-devel make
[root@web ~]# ls nginx-1.26.1 nginx-1.26.1.tar.gz
[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@nginx nginx-1.26.1]# echo "我是后端服务" > /usr/local/nginx/html/index.html
[root@nginx nginx-1.26.1]# firewall-cmd --zone=public --add-port=80/tcp --permanent [root@nginx nginx-1.26.1]# firewall-cmd --reload
修改配置文件
[root@nginx nginx-1.26.1]# vim /usr/local/nginx/conf/nginx.conf
将其修改为utf-8(防止出现乱码)
[root@nginx nginx-1.26.1]# /usr/local/nginx/sbin/nginx
[root@nginx nginx-1.26.1]# /usr/local/nginx/sbin/nginx -s reload
浏览器访问:192.168.2.27
版权归原作者 堕入温柔~ 所有, 如有侵权,请联系我们删除。