LINUX中TOMCAT安装和Nginx源码安装

article/2025/8/16 12:08:03

一: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.hkcw.cn/article/LWscVIWiGg.shtml

相关文章

解密Linux权限管理:从入门到精通

目录 shell命令及其工作原理 用户切换 sudo 权限 是什么? 为什么? 怎么办? 目录权限怎么理解 ? 缺省权限 1.umask 的目的是什么? 2.为什么要有umask 粘滞位 shell命令及其工作原理 Shell的最简单定义&#…

ROS云课基础篇-01-Linux-250529

ROS云课基础篇收到了很多反馈,正面评价比例高,还有很多朋友反馈需要写更具体一点。 ROS云课基础篇极简复习-C、工具、导航、巡逻一次走完-CSDN博客 于是,有了这篇以及之后的案例,案例均已经测试过8年,但没有在博客公…

贵州一公路巨石砸中汽车 司机轻伤车辆受损

5月28日,贵州毕节市七星关区何官屯镇一条通村公路突发落石。一块约300斤重的巨石砸中一辆过路汽车,导致车辆从路边高坎坠落。司机受轻伤,送医检查后当日返家,车损由保险公司处理。落石还击碎了附近民房的玻璃门,但无人受伤。事发地为地质灾害点,连续下雨诱发了这次事故。…

向武汉理工大学捐赠1分钱也有证书 培养捐赠意识

向武汉理工大学捐赠1分钱也有证书 培养捐赠意识!近日,武汉理工大学发起了一项名为“527生日捐”的活动,庆祝学校合并组建25周年。一些校友晒出了捐赠1分钱后获得的电子证书,引起了网友的关注。校方表示,该活动不限捐赠金额,主要目的是让大家参与进来,培养捐赠意识。有武…

Python打卡训练营-Day13-不平衡数据的处理

浙大疏锦行 知识点: 不平衡数据集的处理策略:过采样、修改权重、修改阈值交叉验证代码 过采样 过采样一般包含2种做法:随机采样和SMOTE 过采样是把少的类别补充和多的类别一样多,欠采样是把多的类别减少和少的类别一样 一般都是缺…

嵌入式学习笔记 - freeRTOS任务优先级抢占,时间片抢占的实现机制

一 任务优先级、时间片抢占 已经知道freeRTOS的任务切换函数发生在systick中断中,如下图 由上图可见,任务切换有个先决条件TaskIncrementTick()函数返回为1,这个函数如下图, 函数返回值为xSwitchRequired&…

西方国家对乌军援,再加码 张学峰:俄乌双方的较量还将持续一段时间:局势再添变数

德国新任总理默茨近日表示,德国等西方国家已全面解除对援乌远程武器的射程限制,允许乌克兰使用其提供的武器打击俄罗斯境内纵深军事目标。对此,俄罗斯总统新闻秘书佩斯科夫回应称,这一决定与俄方寻求和平解决冲突的努力背道而驰。默茨上任以来,在是否向乌克兰提供“金牛座…

钟南山谈新冠后肺结节患者增多 CT检查增加发现更多

钟南山谈新冠后肺结节患者增多 CT检查增加发现更多!我国约有1.5亿肺结节高危人群,每年新检出的肺结节病例达1000万至2000万。新冠疫情后肺结节检出率显著上升的原因之一是新冠后做CT的人数大幅增加,进而让更多的肺结节被发现。中国工程院院士钟南山表示,环境污染等也会导致…

油价或将上调 6月3日24时调整

油价或将上调 6月3日24时调整!成品油价将于6月3日24时进行调整。今日油价上涨,涨幅有所变动,国内油价整体呈上涨趋势,但接近搁浅。目前全国大部分地区的油价处于6元时代。下一次调价日期为6月3日晚24时。以下是今日油价概览:此外,可以参考历年油价走势以了解更多信息。责…

金靖张凌赫怨种姐弟又开始发力 两人互斗引热议

凌赫啊你小子又开始皮了,放弃吧牛牛你是斗不过金靖的允悲允悲允悲她那张嘴多会说,脑子还快,简直是血脉压制,你只能哞哞叫哈哈哈哈每周都等着看这俩姐弟的新乐子,太有意思了!责任编辑:zx0002

天降纸尿裤砸碎小车挡风玻璃 肇事者一直没有现身

5月23日,江门市蓬江区的周先生说他的爱车停放在小区楼下停车位,结果竟被一大袋用过的纸尿片砸中。这些浸湿的纸尿片重量惊人,周先生的车顶被砸凹,挡风玻璃也被砸碎了,车辆的维修费花了近6千元,事发已经过去多日,可肇事者一直没有现身。周先生说,报警已经多日,派出所一…

中国学生美国梦碎 签证政策引发留学困境

5月28日,特朗普政府威胁要吊销约27.7万名中国学生中的许多人的签证,并对来自中国内地和香港的未来申请者进行额外审查。这一消息让刚从美国驻北京大使馆走出来的18岁学生李昆泽感到焦虑。他刚刚成功申请到本科留学签证,但现在情况突变,时间紧迫,无法再申请其他国家的留学机…

《歌手2025》首轮袭榜赛制公布 投票截止前1小时隐藏票数

5月30日,湖南卫视歌手发布第二场揭榜赛制:微博网友可从7位在线歌手陈楚生、MickeyGuyton、GAI周延、白举纲、格瑞丝金斯勒、单依纯、马嘉祺中,为袭榜歌手查理普斯选择1位对决对象。截止至今天17:00,网友推荐次数最高的歌手将作为守榜歌手,在节目中与袭榜歌手进行1V1对决。…

余华回应刘楚昕获奖 感动与坚持的力量

人的一生会经历很多痛苦,但回首想起来都是传奇。近日,90后作家刘楚昕创作的小说《泥潭》获得了漓江文学奖虚构类奖。在发表获奖感言时,他哽咽着分享了和病故女友的故事,让不少网友潸然泪下。许多人表示,开头以为是“狗粮”,结局竟然是“刀子”。在现场听完刘楚昕的获奖感…

李兆杰教授因病逝世 法学界痛失领军人物

5月29日晚,清华大学法学院发布讣告,沉痛悼念李兆杰教授。李兆杰教授于2025年5月29日在北京因病逝世,享年70岁。李兆杰教授是汉族,籍贯山东省东明县,1955年出生于吉林省长春市。他曾在北京大学国际法研究所和清华大学法学院任教。作为改革开放以来我国新一代国际法学者中的…

端午假期京城有雨水搅扰,下周气温明显走高 阵风加大需防风

5月29日08时到5月30日08时,南郊观象台最高气温达到31.9℃(14:42),最低气温为18.7℃(04:05)。今天天空云量有所增多,午间依然较热,预计白天最高气温在32℃左右。午后阵风逐渐加大到六级左右,夜间减弱。今天下班时天气多云,偏南风3级、阵风5至6级,气温在31至27℃之间。…

阿韦洛亚成皇马B队新任主帅 传奇回归执教

5月28日,阿韦洛亚被任命为皇马卡斯蒂亚主帅,接替日前离任的劳尔。皇家马德里足球俱乐部宣布,阿尔瓦罗-阿韦洛亚将从2025-2026赛季起担任卡斯蒂亚主教练。阿韦洛亚是皇家马德里及西班牙足球的传奇人物,也是俱乐部青训体系中最具代表性的球员之一。他自2001年起在皇马青训营接…

东北三省一区有效发明专利近20万件 同比增长显著

国家知识产权局在今天的新闻发布会上透露,全国知识产权系统正积极助力新时代东北地区全面振兴,并已取得显著成效。截至今年4月底,东北三省一区的有效发明专利数量达到19.5万件,较去年同期增长了10.2%;有效注册商标数量增至216.1万件,同比增长7.7%。此外,该地区累计认定地…

阿曼将在公立学校开设中文课 促进文化交流与合作

阿曼教育部相关人士在出席中国驻阿曼大使馆与阿曼教育部联合举办的国际中文日活动上宣布,阿曼已决定将中文纳入公立学校课程。从今年9月开始的新学年,中文将成为四所公立高中11年级学生的选修课,并逐渐扩展至其他年级。在当天的活动上,阿曼教育部次大臣马吉德表示,阿曼政府…

2025年全国青少年信息素养大赛复赛C++集训(18):数列(题目及解析)

2025年全国青少年信息素养大赛复赛C++集训(18):数列(题目及解析) 题目描述 用以下方式构造数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。 给出一个正整数a,要求数列中第a个数对1000取模的结果是多少。 时间限制:1000 内存限制:65536 输入…