web服务器配置-(apache+nginx)

堕入温柔~ 2024-10-16 09:03:01 阅读 60

⼀、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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。