当前位置: 首页 > backend >正文

LINUX中TOMCAT安装和Nginx源码安装

一:web服务器

1、Web服务器介绍

‌Web服务器是一种运行于互联网上的计算机硬件或软件,用于存储、处理和传输网页和其他网站内容。‌

它通常运行在服务器上,绑定服务器的IP地址并监听某一个TCP端口,接收来自客户端的请求,然后向客户端发送所请求的网页或相关资源。

Web服务器通常通过HTTP(超文本传输协议)或HTTPS(加密的HTTP)与客户端进行通信,并使用域名系统(DNS)来将网址转换为IP地址,以便正确定位和访问所请求的网页‌。

1.2、Web服务器的主要功能

‌接收请求‌:Web服务器监听特定的网络端口,等待客户端发起HTTP请求。一旦收到请求,它会解析请求的内容,包括请求的URL、HTTP方法、请求头等‌。

‌处理请求‌:服务器根据请求的内容,决定如何处理该请求。它可以根据URL路由请求到不同的处理程序或处理逻辑,也可以执行静态文件的读取和发送‌。

生成响应‌:Web服务器根据处理请求的结果,生成HTTP响应。响应包括HTTP状态码、响应头和响应体。响应体可以是HTML页面、JSON数据、文件等‌。

发送响应‌:Web服务器将生成的HTTP响应发送回客户端。它使用网络协议(如TCP/IP)将响应发送给客户端,并确保数据的正确传输‌。

‌保持连接‌:Web服务器可以保持与客户端的持久连接,以便处理多个请求。这可以提高性能和效率,减少网络开销‌。

1.3、常用Web服务器

Apache是目前世界上使用最多的Web服务器,市场占有率达60%左右。它是一个开源软件,可以运行在几乎所有的Unix、Linux、Windows系统平台上。Apache的优势在于其开源代码开放,功能丰富,支持动态内容生成、CGI脚本、SSL和TLS等。然而,它也有缺点,即消耗的内存较高‌。

Nginx是一个轻量级的Web服务器,也可以作为反向代理服务器和负载均衡器使用。它具有高性能和高并发处理能力,常用于高流量的网站和服务。Nginx的优点是资源消耗低,适合处理高负载的网站和应用程序‌。

Microsoft IIS是微软公司开发的Web服务器,主要用于Windows操作系统。它提供了强大的特性和控制,如ASP.NET支持、FTP、SMTP、虚拟主机和安全认证等。IIS的特点包括安全性、强大和灵活‌。

Tomcat是一个用于Java应用程序的开源Web服务器,通常与Apache一起使用。它技术先进、性能稳定,深受Java爱好者的喜爱。Tomcat适合运行Java Web应用,具有高性能和稳定性‌。

Lighttpd是一个轻量级的Web服务器,适用于低系统资源的服务器运行环境下。它具有高性能和高可扩展性,适合处理高负载的网站和应用程序。Lighttpd的特点包括快速、安全、内存开销低,可以在多种操作系统上运行‌。

二:安装tomcat

第一步:通过以下命令可以看到系统自带的JDK版本信息,看是否为OpenJDK version,

java -version

第二步: 查询本机中已经安装过的java rpm包,命令如下;

rpm -qa |grep java

 

强制删除 

rpm -e --nodeps xx

将1.7和1.8都卸载了 

 第三步:下载jdk

这是网址:Index of java-local/jdk

 创建一个java安装目录

mkdir -p /usr/local/jdk-- 进入目录
cd /usr/local/jdk

 解压jdk压缩包:

tar -zxvf jdk-8u151-linux-x64.tar.gz

 再进行下列图片操作:

 第四步:配置环境变量

所有的系统环境变量配置(etc/profile)
vim /etc/profile

 添加jdk内容

export JAVA_HOME=对应的地址
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

重新加载配置文件,命令:

source /etc/profile 

第五步:创建tomcat存放文件夹 

mkdir -p /usr/local/tomcatcd /usr/local/tomcat

 解压压缩包:

tar -zxvf apache-tomcat-9.0.105.tar.gz
cd  apache-tomcat-9.0.105.tar.gz
ll

 创建自己的项目文件夹

cd webappsmkdir sharecd share

在share文件夹放入一张图片

wget 图片路径或者使用拖拽形式

进入bin目录,来启动tomcat

cd ..
cd ..
cd bin

 第六步:启动tomcat

./startup.sh

再关闭防火墙:

systemctl stop firewalld

同样的之前下载的图片也可以看到

 

下载Oracle JDK安装包,解压到对应的文件夹

tar -zxvf+对应的版本 

 用vim或vi 打开/etc/profile 文件 profile 是系统环境变量配置 /etc是所有的配置文件

vim /etc/profile

重新加载配置文件,命令:

source /etc/profile 

三:Apache(httpd)和Tomcat对比

共同点:

两者都是Apache组织开发的; 两者都有HTTP服务的功能; 两者都是免费的。

不同点:

Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等),而Tomcat是Apache组织在符合Java EE的JSP、Servlet标准下开发的一个JSP服务器。

Apache是一个Web服务器环境程序,启用它可以作为Web服务器使用,不过只支持静态网页,如(ASP,PHP,CGI,JSP)等动态网页的就不行。如果要在Apache环境下运行JSP的话就需要一个解释器来执行JSP网页而这个JSP解释器就是Tomcat。

Apache:侧重于HTTPServer,Tomcat:侧重于Servlet引擎,如果以Standalone方式运行,功能上与Apache等效,支持JSP,但对静态网页不太理想。

Apache是Web服务器,Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。

实际使用中Apache与Tomcat常常是整合使用:如果客户端请求的是静态页面,则只需要Apache服务器响应请求。

如果客户端请求动态页面,则是Tomcat服务器响应请求。因为JSP是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销。可以理解Tomcat为Apache的一种扩展。

1、Nginx介绍

Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。

和apache一样,都是web服务器软件,因为其性能优异,所以被广大运维喜欢。

又因为nginx是一个轻量级的web服务器,相比apache来说资源消耗更低。

延伸版本:tengine(淘宝)、openresrt(章亦春)等

  • nginx 官网

  • http://www.nginx.cn/doc/index.html 中文文档

2、为什么选择Nginx

Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:

作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。

能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.

作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。

Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器。

Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下进行软件版本的升级。

3、Nginx和Apache对比

  • 静态文件处理能力:nginx高于apache

  • 资源消耗:nginx优于apache,因为nginx是异步处理模型,只需要几个进程就能够处理大量在线请求,而apache 2.4仍然是进程模型或者线程模型,即仍然采用大量线程来处理大量在线请求。

  • Apache支持的模块很多,而且也比较稳定。而nginx由于出现的比较晚,所以在这方面可能比不上Apache。

  • nginx本身就是一个反向代理服务器,而且支持7层负载均衡。

  • nginx处理动态页面很鸡肋,一般只用与处理静态页面和反向代理。

4、nginx源码下载nginx安装

官网:nginx

源码包: nginx-1.19.3.tar.gz

源码包下载: wget http://nginx.org/download/nginx-1.19.3.tar.gz -P /usr/src

 第一步:创建一个专门存放nginx的文件夹

mkdir /usr/local/nginxcd ~

打开素材选择nginx安装包拖进去 

 第二步:解压文件 进入nginx目录

tar -zxvf nginx-1.27.5.tar.gzllcd nginx-1.27.5

 第三步:下载编译

-- 下载编译工具gcc
yum -y install gcc pcre-devel zlib-devel

第四步:指定安装路径 

./configure --prefix=/usr/local/nginx

 你在加载完后会在底下看到下面一样的注释

nginx path prefix: "/usr/local/nginx" 								安装路径
nginx binary file: "/usr/local/nginx/sbin/nginx"					二进制文件(可执行文件)
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"					配置文件夹
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"		配置文件
nginx pid file: "/usr/local/nginx/logs/nginx.pid"					存放程序启动进程编号 
nginx error log file: "/usr/local/nginx/logs/error.log"				存放错误信息的日志文件
nginx http access log file: "/usr/local/nginx/logs/access.log"		用户访问信息日志文件
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"

 第五步:编译源码

make

 第六步:编译安装nginx

make install

 第七步:启动nginx并测试

cd /usr/local/nginxllcd sbin-- 启动nginx
./nginx-- 测试是否启动
curl localhost

 第八步:将配置文件通过软连接的方式

命令   描述
/usr/local/nginx/sbin/nginx启动 Nginx 服务
/usr/local/nginx/sbin/nginx -s stop快速关闭 Nginx(立即停止)
/usr/local/nginx/sbin/nginx -s quit正常关闭 Nginx(等待工作进程完成当前任务后关闭)
/usr/local/nginx/sbin/nginx -s reload在不中断服务的情况下重新加载配置文件
/usr/local/nginx/sbin/nginx -t测试配置文件语法,但不启动服务器
/usr/local/nginx/sbin/nginx -t -c /path/to/nginx.conf使用指定的配置文件测试语法
/usr/local/nginx/sbin/nginx -v查看 Nginx 版本信息
ln -s /usr/local/nginx/sbin/nginx /bin

这里就你不用再跑到nginx的sbin目录底下再去执行

-- 测试软连接是否成功
cd /nginx -s stopcurl localhost

 第九步:编写服务配置文件

cd /usr/lib/systemd/system-- 编写nginx服务文件
vim nginx.service-- 将下面的配置信息放入,记得把注释删了
[Unit]										
Description=nginx						    nginx信息介绍
After=network.target					    启动时间(这里是在网络启动之后,再启动)[Service]								    服务文件信息
Type=forking							    后台运行
PIDFile=/usr/local/nginx/logs/nginx.pid		PID文件的位置(用来确定服务运行是不是唯一的)
ExecStartPre=/usr/local/nginx/sbin/nginx -t 在启动服务之前做什么(这里是检查配置文件是否有错误)
ExecStart=/usr/local/nginx/sbin/nginx		启动后会执行什么命令
ExecReload=/usr/local/nginx/sbin/nginx -s reload	重新加载
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true[Install]
WantedBy=multi-user.target

测试:

systemctl start nginx
systemctl status nginx
4.1、nginx启动测试

nginx安装完毕,接下来就可以启动nginx了,nginx启动后如何测试nginx的启动状态呢?

可以通过以下三种方式去测试,这个可以根据自己的习惯选择一种测试就行了。

使用netsata命令查看启动端口
[root@root ~]# netstat –ntpl使用losf命令查看启动端口
[root@root ~]# lsof -i :80使用文本浏览器访问nginx默认网站
[root@root ~]# curl http://IP
4.2 nginx配置
cd /usr/local/nginx/conf-- 复制nginx配置文件
cp nginx.conf nginx.conf.bak-- 编辑配置文件
vim nginx.conf-- 在文件中找到下面这个部分,将注释那句话加进去
server {listen       80;server_name  localhost;location / {root   html;index  index.html index.htm;#支持目录浏览autoindex  on;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}-- 返回上一级目录
cd ..cd htmlllmv index.html a.htmlsystemctl restart nginx-- 再将虚拟机的ip放到浏览器去

 4.3 访问控制

vim /usr/local/nginx/conf/nginx.conflocation /a {autoindex on;allow 192.168.201.1/24;deny all;#基于客户端IP做过滤,符合条件的允许访问,不符合的去百度;if ( $remote_addr !~ "192.168.201.128" ) {#return 404;return http://www.baidu.com;}}cd /usr/local/nginx/htmlmv index.html a.htmlcp a.html b.html

4.4 登陆验证
vim /usr/local/nginx/conf/nginx.conflocation /c {auth_basic "登陆验证";auth_basic_user_file /etc/nginx/htpasswd;autoindex on;
}cd /usr/local/nginx/htmlmkdir c.txtcd c.txttouch a.txt

安装 htpasswd 工具

sudo yum install httpd-tools

使用 htpasswd 命令来创建一个新的 htpasswd 文件并添加用户。

创建一个新文件(如果文件不存在)并将名为 username 的用户的加密密码添加到 /etc/nginx/htpasswd 文件中。

mkdir -p /etc/nginxsudo htpasswd -c /etc/nginx/htpasswd username

设置密码:

 

 

4.5日志管理
Nginx访问日志主要有两个参数控制

log_format #用来定义记录日志的格式(可以定义多种日志格式,取不同名字即可)

access_log #用来指定日至文件的路径及使用的何种日志格式记录日志

access_log logs/access.log main;

192.168.201.1 -                                        远程ip的网关 
username                                               远程的用户
[23/May/2025:16:54:12 +0800]                           时间
"GET /c.txt/ HTTP/1.1"                                 请求的信息
200 269                                                响应码
"http://192.168.201.128/"                              ip"Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
AppleWebKit/537.36 (KHTML, like Gecko)                 浏览器信息
Chrome/136.0.0.0Safari/537.36 Edg/136.0.0.0"

也可以自己设置日志格式

log_format格式变量:$remote_addr  #记录访问网站的客户端地址$remote_user  #远程客户端用户名$time_local  #记录访问时间与时区$request  #用户的http请求起始行信息$status  #http状态码,记录请求返回的状态码,例如:200、301、404等$body_bytes_sent  #服务器发送给客户端的响应body字节数$http_referer  #记录此次请求是从哪个连接访问过来的,可以根据该参数进行防盗链设置。$http_user_agent  #记录客户端访问信息,例如:浏览器、手机客户端等$http_x_forwarded_for  #当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置

自定义一个json格式的访问日志

log_format main_json '{"@timestamp":"$time_local",'
'"client_ip": "$remote_addr",'
'"request": "$request",'
'"status": "$status",'
'"bytes": "$body_bytes_sent",'
'"x_forwarded": "$http_x_forwarded_for",'
'"referer": "$http_referer"'
'}';
access_log logs/access_json.log main_json;                    日志文件名
4.6 防盗链
location /images/ {alias /usr/local/nginx/html/img/;valid_referers none blocked *.baidu.com;        谁能用我的图片if ($invalid_referer) {rewrite ^/ http://192.168.66.146/b.jpeg;#return 403;}
}

http://www.xdnf.cn/news/9944.html

相关文章:

  • 【深度学习】12. VIT与GPT 模型与语言生成:从 GPT-1 到 GPT4
  • docker-compose部署SpringBoot项目的两种方式(构建镜像和挂载文件)
  • Python打卡第39天
  • Futaba乐迪小飞象Frsky7通多协议接收机KA6说明书
  • hf-mirror断点续传下载权重
  • AAOS系列之(六) ---CarPowerManager中写入的状态,如何在ViewRootImpl中读取问题
  • [git]忽略.gitignore文件
  • 软件项目需求说明书简要模板
  • 【Redis】大key问题详解
  • 【计网】分片
  • websocket在vue中的使用步骤,以及实现聊天
  • MaaS(模型即服务)是什么?
  • IT Tools 部署
  • 食材走T台?Coze+即梦应用实例:实现一键生成食材走秀视频!!(附提示词)
  • [C]基础18.自定义类型:联合和枚举
  • Python实例题:Python实现Zip文件的暴力破解
  • Spring Boot整活指南:从Helo World到“真香”定律
  • 29、请求处理-常用参数注解使用
  • UE路径追踪Path Tracing和Lumen的区别
  • Lambda表达式Stream流
  • 三套知识系统的实践比较:Notion、Confluence 与 Gitee Wiki
  • 关于 smali:2. 从 Java 到 Smali 的映射
  • 无需自建高防:APP遭遇DDoS的解决方案
  • CODEFORCES----1999A - A+B Again?
  • SQL进阶之旅 Day 7:视图与存储过程入门
  • vue的h函数(在 Vue 2中也称为 createElement)理解
  • SAP BASIS常用事务代码ST06 操作系统监控
  • UVa1384/LA3700 Interesting Yang Hui Triangle
  • OpenCv高阶(十九)——dlib关键点定位
  • 深度学习核心网络架构详解:从 CNN 到 LSTM