Web项目-Nginx项目部署

2023-11-06

一.Linux网络

(1)网络服务

查看当前网络的状态,并启动和停止网络服务:

查看ip :

    ifconfig
    ip addr

修改网卡ip:

     vim /etc/sysconfig/network-scripts/ifcfg-ens33

概要信息如下:

    DEVICE=ens33 #网卡名称
    TYPE=Ethernet #网卡类型 以太网 
    ONBOOT=yes #是否开机就使用此网卡 在我们安装的时候都已经配置好 
    BOOTPROTO=dhcp #启动网卡时指定获取IP地址的方式 
        常用取值:dhcp (自动获取ip地址,网关,子网掩码等信息无需设置) 
        常用取值:static (静态ip,如需要访问网络,需要自己设置ip地址等信息) 
        其他取值:none (不指定) 

    IPADDR=192.168.200.133 #ip地址 
    GATEWAY=192.168.200.2 #网关 
    NETMASK=255.255.255.0 #子网掩码 
    DNS1=8.8.8.8 # Google提供的公用DNS

重启网卡服务:

    systemctl status network  #查看指定服务的状态 
    systemctl stop network    #停止指定服务 
    systemctl start network   #启动指定服务 
    systemctl restart network #重启指定服务

(2)防火墙服务:

防火墙类似于一个安全卫士管家,它能对你访问它人电脑,进行拦截并处理,有的阻止,有的放行,有的转发。

防火墙设置:

开启防火墙:

    systemctl start firewalld

重启防火墙
    
    systemctl restart firewalld

关闭防火墙

    systemctl stop firewalld

 设置开机启动 

    systemctl enable firewalld

 停止并关闭开机启动 

     systemctl disable firewalld

查看防火墙状态 

    systemctl status firewalld 或者 firewall-cmd --state

查看防火墙开机时是否启动 

    systemctl list-unit-files | grep firewalld

端口设置:

添加

     firewall-cmd --zone=public --add-port=80/tcp --permanent

更新防火墙规则 

    firewall-cmd --reload

查看 

    firewall-cmd --zone=public --query-port=80/tcp 
    firewall-cmd --zone=public --list-ports

删除 

    firewall-cmd --zone=public --remove-port=80/tcp --permanent

常用端口

    8080     tomcat 
    80       http协议 
    443      https协议 
    22       ssh远程连接 
    3306     mysql 
    6379     redis

 

二.软件部署设计:反向代理

三.软件安装:

(1)常见的安装方式:

二进制发布包:(绿色免安装)

软件已经针对具体平台编译打包发布开发人员拿到安装包之后只要解压,修改配置即可使用。

RPM安装包:

软件已经按照redhat的包管理工具规范RPM进行打包发布,需要获取到相应的软件RPM发布包,然后用RPM命令进行安装。

* rpm命令安装
	语法:  rpm 参数  安装包
	参数:
        -v 显示指令执行过程
        -h 表示显示进度
        -q 查询包是否已经安装
        -a 查看所有安装的软件
        -i 安装软件
        -U 更新升级
        -e 卸载软件
        --nodeps 不验证软件的相互关联性 
* 常用命令:
    安装:rpm  -ivh  rpm文件
    升级:rpm  -Uvh  rpm文件
    卸载:rpm  -e --nodeps 软件名
    查看所有安装的软件:rpm -qa | grep 具体名

(2)YUM在线安装:

软件已经以RPM规范打包,但发布在了网络上的一些服务器上,可用yum在线安装服务器上的rpm软件,并且会自动解决软件安装过程中的库依赖问题。

yum install 软件名
yum localinstall rpm包  使用yum安装本地rpm包[此过程会自动解决依赖]

(3)源码包

此种安装包软件以源码工程的形式发布,需要程序员自行编译安装

它一般包含四个步骤: 解压------>配置------->编译-------->安装

(4)上传与下载工具:

SecureCRSecureFX工具的安装与使用:

FTP(File Transfer Protocol,文件传输协议)

1. sftp(实现了ssh加密)

		使用alt + p 组合键打开sftp窗口
	
	get:  将远程主机(linux)中文件下载到本地主机(windows)
        put:  将本地主机(windows)中文件上传到远程主机(linux)
        quit: 断开FTP连接
	pwd:  查询linux主机所在目录
        lpwd: 查询windows主机所在目录
        ls:   查询连接到当前linux主机所在目录有哪些文件
        lls:  查询当前本地上传目录有哪些文件
        lcd:  改变本地上传目录的路径
        cd:   改变远程上传目录      

2. lrzsz
        我们可以使用yum安装方式安装: yum install lrzsz
    	注意:必须有网络
    	rz 上传
    	sz 下载

 

四. 软件安装:

(1)JDK安装

jdk-8u201-linux-x64版本

1. 查看当前Linux系统是否已经安装java
		rpm -qa | grep -i java
		rpm -e --nodeps xxxxxx
		
2. 解压已上传的JDK压缩包,并移动到/usr/local目录下
		tar -zxvf /root/jdk-8u201-linux-x64.tar.gz -C/usr/local/

3. 测试jdk
		/usr/local/jdk1.8.0_201/bin/java -version
		
4. 配置环境变量
	vim /etc/profile
	   G 跳转到最后一行
	   i 进入插入模式
        export JAVA_HOME=/usr/local/jdk1.8.0_201
        export PATH=$PATH:$JAVA_HOME/bin
	   esc 进入命令行模式
	   :wq! 保存
	
5. 更新环境变量
		source /etc/profile
	
6. 测试
		java -version

(2)Tomcat安装:

1. 解压已上传的Tomcat压缩包,到/user/local目录下
		tar -zxvf /root/apache-tomcat-8.5.27.tar.gz -C /root
		cp -r /root/apache-tomcat-8.5.27 /usr/local/tomcat1

2. 启动tomcat
		/usr/local/tomcat1/bin/startup.sh 
		
3. 动态查看日志
		tail -f /usr/local/tomcat1/logs/catalina.out 
		
4. 防火墙放行端口
		firewall-cmd --zone=public --add-port=8080/tcp --permanent
		firewall-cmd --reload
		
5. 关闭tomcat
		/usr/local/tomcat1/bin/shutdown.sh 

(3)Nginx安装:

Nginx是什么?

Nginx 是一款轻量级的 Web 服务器 , 由俄罗斯的程序设计师伊戈尔 · 西索夫所开发。 Nginx 性能非常优秀 , 官方测试能够
支撑 5 万并发链接,并且 cpu 、内存等资源消耗却非常低,运行非常稳定。
 
Nginx的作用有很多,我们经常使用的是用它来做静态资源服务器、负载均衡服务器和反向代理服务器。

 

应用场景:

  静态资源:

可以部署静态资源, html js css image
 

反向代理:

代理 : 给某个对象提供一个代理对象,并由代理对象控制原对象的引用
正向代理 : 对客户端进行代理
 
 
反向代理:: 对服务端进行代理
 
反向代理,就是对服务端进行代理,作为客户端 , 只需要将请求发送到反向代理服务器,由反向代理服务器去选择目
标服务器获取数据后,再响应给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务
器地址,隐藏了真实服务器 IP 地址。
 
 
负载均衡:
负载均衡 Load Balance 意思就是将一份负载分摊到多个操作单元上进行执行
 

1. 安装必须库
		yum  install  gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
	
2. 解压文件
		tar -zxvf /root/nginx-1.13.9.tar.gz  -C /root
	
3. 配置
		cd /root/nginx-1.13.9
		./configure --prefix=/usr/local/nginx
	
4. 编译
		make
	
5. 安装
		make install
	
6. 启动
		/usr/local/nginx/sbin/nginx
	
7. 防火墙放行端口
		firewall-cmd  --zone=public  --add-port=80/tcp  --permanent
		firewall-cmd --reload
	
8. 停止nginx
		/usr/local/nginx/sbin/nginx -s stop   #停止服务
	
9. 修改后,执行
		/usr/local/nginx/sbin/nginx -s reload  #重新加载配置

(4)MySQL安装

1. 查看CentOS是否自带的MySQL环境
		rpm -qa | grep -i mysql
		rpm -qa | grep -i mariadb
	
2. 卸载mariadb
		rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

3. 解压文件
		mkdir -p /usr/local/mysql
		tar -zxvf /root/mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz -C/usr/local/mysql
		cd /usr/local/mysql/
		
4. 安装libaio环境(已经存在不需要)
		yum install libaio
	
5. 安装MySQL(按顺序)
        rpm -ivh /usr/local/mysql/mysql-community-common-5.7.25-1.el7.x86_64.rpm
        rpm -ivh /usr/local/mysql/mysql-community-libs-5.7.25-1.el7.x86_64.rpm
        rpm -ivh /usr/local/mysql/mysql-community-devel-5.7.25-1.el7.x86_64.rpm
        rpm -ivh /usr/local/mysql/mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
        rpm -ivh /usr/local/mysql/mysql-community-client-5.7.25-1.el7.x86_64.rpm
        rpm -ivh /usr/local/mysql/mysql-community-server-5.7.25-1.el7.x86_64.rpm
	
6. 启动mysql服务
		systemctl start mysqld
	
7. 查看随机生成的密码
		grep 'temporary password' /var/log/mysqld.log
	
8. 修改root用户密码
        mysql -u root -p
        Enter password:输入刚才查询到的随机密码
        >set global validate_password_length=4;
        >set global validate_password_policy=LOW; 
        >set password = password('root');
		
9. 防火墙放行端口
        firewall-cmd --zone=public --add-port=3306/tcp --permanent
        firewall-cmd --reload
	
10. 开启mysql的远程登录权限
        mysql -uroot -proot
        > CREATE USER 'root'@'%' IDENTIFIED BY 'root';
        > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' ;
        > FLUSH PRIVILEGES;
        > exit;
	
11. MySQL编码问题(默认安装完毕为 ISO-8859-1)
	1. 编辑/etc/my.cnf,在[mysqld]选项下添加字符集的设置
		vim /etc/my.cnf
      	    [mysqld]
        	character-set-server=utf8
	2. 重新启动mysql的服务
		systemctl restart mysqld

查询初始化密码:

设置mysql创建数据库的编码方式:

连接主机:

(5)Redis安装:

1. 解压文件
		tar -zxvf /root/redis-3.0.7.tar.gz -C /root
			
2. 编译
		cd /root/redis-3.0.7
		make
		
3. 安装
		make PREFIX=/usr/local/redis install
		
4. 复制配置文件到/usr/local/redis/bin
		cp /root/redis-3.0.7/redis.conf /usr/local/redis/bin/
		
5. 设置后台启动
		vim /usr/local/redis/bin/redis.conf
			daemonize yes
			
6. 启动redis
		/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
		
7. 防火墙放行端口
		firewall-cmd --zone=public --add-port=6379/tcp --permanent
		firewall-cmd --reload
		
8. 关闭redis
		/usr/local/redis/bin/redis-cli shutdown

 

五.项目部署:

(1)通过上述软件的安装,进行环境确认:

* 语法
		netstat -antup
		netstat -antup | grep 端口号
		
* 参数解释		
		-antup	查看当前正在使用的udp和tcp协议的端口号和进程号

(2)数据库迁移:

将windows的数据库进行备份:

还原到linux的数据库中:

(3)tomcat项目部署:

打开idea,对maven进行package打包:

然后进入到target目录中,对war包改名:

使用FTP上传到linux服务器:

部署到tomcat中的webapps目录:(把部署项目复制到webapps目录下会自动解压)

然后即可浏览器访问测试了:

 

(4)nginx配置反向代理:

需要修改nginx.conf 配置文件:

修改完毕后,需要重写加载配置文件

/usr/local/nginx/sbin/nginx -s reload
# 指定你要代理的tomcat服务器列表
upstream tomcat_server {
	server localhost:8080;
}
server {
        listen       80;
        server_name  localhost;
        location / {
        	root   html;
    		# 现在我们nginx不在是访问html路径,改成反向代理
            proxy_pass  http://tomcat_server; 
            index  index.html index.htm;
        }
}

反向代理执行流程图:

 

注意:如果需要对linux的配置文件进行文件编辑,推荐使用notpad++工具:

配置远程liunx环境:

远程连接liunx:

针对配置文件进行修改:

 

(5)Nginx配置负载均衡:

1. 将当前tomcat1停止运行
  		/usr/local/tomcat1/bin/shutdown.sh
  	
2. 复制tomcat1为tomcat2
		cp -r /usr/local/tomcat1 /usr/local/tomcat2
	
3. 修改tomcat2的3个端口
		vim /usr/local/tomcat2/conf/server.xml
    	8005-->8015   8009-->8019  8080-->8081
    
4. 放行8081端口
  		firewall-cmd --zone=public --add-port=8081/tcp --permanent
		firewall-cmd --reload  
	
5. 启动两个tomcat
		/usr/local/tomcat1/bin/startup.sh
		/usr/local/tomcat2/bin/startup.sh
	
6. 在nginx中配置负载均衡策略
       vim /usr/local/nginx/conf/nginx.conf
            upstream tomcat_server{
               ip_hash;
               server localhost:8080 weight=2;
               server localhost:8081 weight=1;
            }
    
7. 重新加载nginx配置
		/usr/local/nginx/sbin/nginx -s reload
	
8. 同时开启两个窗口,通过动态查看tomcat日志可见结果
		tail -f /usr/local/tomcat1/logs/catalina.out
		tail -f /usr/local/tomcat2/logs/catalina.out

 

问题:

Nginx Tomcat 区别?
 
1. 存放的文件形式 
    Nginx是http服务器,只能解析静态文件 
    Tomcat是web中间件(本质上是一个servlet),能解析jsp和静态文件
 
2. 用途
    nginx可以作为反向代理服务器,负责均衡服务器,静态资源存放服务器 
    tomcat能作为jsp容器使用,静态资源存放服务器
 
3. 性能
    nginx支持5W+并发,tomcat的并发只能在200-400之间

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web项目-Nginx项目部署 的相关文章

随机推荐

  • 项目上线后遇到的问题总结

    项目上线了 一堆堆的问题也随之出现了 除了时间比较匆忙导致没有细致的做验证之外 当初也确实没有在最重要的功能需求上把好关 导致后来要做很多的修改而弥补之前的错误 下面是上线后遇到的问题和解决办法总结 问题一 用户非正常流程导致的错误 用户注
  • 【读书笔记->统计学】07-03 离散型概率分布-泊松分布概念简介

    泊松分布 假设一个情境 下星期电影院有一个大型促销 影院经理希望一切都完美无缺 爆米花机每一周的平均故障次数为3 4 或者说爆米花机的故障率为3 4 求爆米花机下一周不发生故障的概率有多大 如果预计故障太多次 就打算买个新的爆米花机了 与前
  • 嵌入式系统编程中常用的回调处理

    在嵌入式编程中经常看到形如下图所示的一些函数调用或者函数初始化 这种形式的原理 以及在编程过程中能带来什么好处 可以通过下面这篇文章来简单的解释和说明 函数是C语言的核心概念 主调函数 caller 调用被调函数 callee 是一般的调用
  • 用《文心一言》1分钟写一篇博客简直yyds

    文章目录 前言 文心一言是什么 文心一言可以做什么 文心一言写博客 申请体验 写在最后 创作者 全栈弄潮儿 个人主页 全栈弄潮儿的个人主页 个人社区 欢迎你的加入 全栈弄潮儿的个人社区 专栏地址 AI大模型 前言 当今社会 博客已成为了许多
  • Java从List中删除元素的正确用法

    还是先举个例子 你侄女对天文知识感兴趣 然后你就用程序写了太阳系九大星系 水星 金星 地球 火星 木星 土星 天王星 海王星 冥王星 的运行轨迹图 然后拿给侄女看 然后她说错了错了 你的知识太旧了 多了一颗星 根据2006年8月24日国际天
  • 把每八行格式重复的txt文件导入数据库

    记录代码 private static String url unic useUnicode true characterEncoding utf8 public static void main String args throws SQ
  • Java思维编程

    编程思维可以具体分为四个方面 分解 拥有编程思维的人 会把一个复杂的大问题 拆解成更可执行 更好理解的小步骤 复杂问题很难一下子破解 但如果把它细分成很多个小问题 逐步解决 就容易多了 模式识别 什么是模式识别呢 所谓识别模式 其实就意味着
  • JAVA基础之单元测试

    目录 1 单元测试介绍 2 环境搭建 2 1 JUnit 4 2 2 JUnit 5 3 快速上手 3 1 JUnit 4 3 2 JUnit 5 1 单元测试介绍 单元测试就是针对最小的功能单元编写测试代码 Java程序最小的功能单元是方
  • 区块链四:共识机制——PBFT算法深入讲解

    TOC 背景介绍 共识机制是区块链一大知识领域 作用就是维持分布式节点间的一致性 从而支撑去中心化 早在区块链之前 就存在各种分布式的共识机制 共识机制不是因区块链所发明 但区块链却对共识机制推广和进步有着重要影响 共识算法分类 按应用场景
  • Python 超简单实现人类面部情绪的识别

    还记得我们之前写过一篇文章 手把手教你人脸识别自动开机 吗 里面用OpenCV对人脸进行简单的识别 让计算机训练认识到某个特定人物后识别对象 今天来做点高级的 识别出人脸的情绪 本文分为两大部分 1 面部检测 检测图像的脸部位置 输出边界框
  • 《现代控制系统》第五章——反馈控制系统性能分析 5.4 二阶系统里面极点以及零点带来的影响

    上一节图里面描绘的曲线 仅仅是针对阶跃响应为 的系统来说的 但是这给我们提供了一个很好的例子 许多系统拥有成对的主极点 我们可以通过类似上图的关系来估计系统的阶跃响应 这个方法尽管只是一个估算 但却能在避免拉普拉斯转化的情况下提供一个对超调
  • Unity接SDK - 极光推送

    2021 09 09记录 2023发布 如有不对 还请包含 发晚了 如果想看Android原生接入JPush SDK 移步Android原生集成JPush SDK jpush android sdk v4 7 2 极光推送 接入 版本 Un
  • MFC 向指定窗口发送自定义消息

    像MFC的窗口发送消息 可以进行自定义的动作行为 因此很多时候非常有用 1 在MSGDlg h或者其他头文件中增加自定义自定义消息 define WM COUNT MSG WM USER 100 2 在MSGDlg h头文件中添加消息处理函
  • 冒泡排序、选择排序、堆排序、快速排序、插入排序算法复杂度分析与算法实现(自己总结与转)

    本人比较热衷于算法 也可能工作的原因 最近一直在研究算法 现将各种排序算法总结在一起 以便于查阅与使用 也希望能够帮助学习排序算法的朋友 1 冒泡算法 这是最原始 也是众所周知的最慢的算法了 他的名字的由来因为它的工作看来象是冒泡 C C
  • openFeign使用get请求自动变成post请求

    Feign的一次坑 记一次 项目错误 之前项目写的feign是get请求 然后发现 请求不了 然后发现日志 请求自动变成post 网上翻阅资料发现 说使用对象类型会把请求自动变成post 所以我改post请求就可以了 查阅资料 总结 fei
  • pointnet分割自己的点云数据_基于超点图的大规模点云分割

    本期介绍一篇基于大规模点云的语义分割相关论文 Large scale Point Cloud Semantic Segmentation with Superpoint Graphs 本文提出了针对大规模点云的语义分割的框架 有序的点云是可
  • IOS:修改NavigationController的后退按钮标题

    今天遇到一问题 折腾很久总算搞明白了 问题是 controllerA和controllerB 点击controllerA中的某个按钮 将controllerB push出来 controllerB上的返回按钮的title不是我想要的 想改掉
  • Leetcode[数组] 三数之和 -- 双指针法

    0 题目描述 leetcode原题链接 三数之和 1 排序 双指针解法 class Solution def threeSum self nums List int gt List List int n len nums if not nu
  • JVM系列之内存分配与回收策略

    前言 经过前面几篇文章 我们已经对JVM虚拟机有了个初步认识 也了解了各区域应用哪些收集器 以及每个收集器用哪些收集算法 但是在这一系列过程中 其实就是一个对象的由生到死的过程 那么在这过程中对象是怎么处理它的生命周期的呢 今天我们就来介绍
  • Web项目-Nginx项目部署

    一 Linux网络 1 网络服务 查看当前网络的状态 并启动和停止网络服务 查看ip ifconfig ip addr 修改网卡ip vim etc sysconfig network scripts ifcfg ens33 概要信息如下