部署SpringBoot项目到Linux服务器前世今生详解 您所在的位置:网站首页 nginx部署java项目 部署SpringBoot项目到Linux服务器前世今生详解

部署SpringBoot项目到Linux服务器前世今生详解

#部署SpringBoot项目到Linux服务器前世今生详解| 来源: 网络整理| 查看: 265

使用 SpringBoot,不要用 Gradle-Kotlin!!! 简直他娘的坑死个人,打的jar包,种种问题。要么打不了包,打了又找不到 Main,找到了Main运行又失败。搞了两天放弃了。 新建了个项目,使用Java的 Gradle ,覆盖了build.gradle.kts 和 settings.gradle.kts,然后打包,直接就成功了。我贼他***,搞死个人了。

参考 Linux目录详解,软件应该安装到哪个目录:

blog.csdn.net/m0_37629753…

linux 常用命令: 1)连接linux:ssh [email protected] 把IP地址换成自己的服务器ip地址 2)将本地jar包拷贝到远程服务器命令:scp -P 22 jdk.tar.gz [email protected]:/usr/local 3)查看进程号:ps -aux 4) 查看被占用端口: netstat -anpt | grep 80 后面的表示指定端口号 4)杀死 进程的,关闭程序 :kill -9 22899 5)查看正在启动过程的日志: tail -500f nohup.out 6)查看java 运行的几个进程 pid: ps -ef | grep java 7)jps -l : 显示全部的java进程 阿里云完整镜像: maven {url 'https://maven.aliyun.com/repository/central'} maven {url 'https://maven.aliyun.com/repository/public'} maven {url 'https://maven.aliyun.com/repository/google'} maven {url 'https://maven.aliyun.com/repository/gradle-plugin'} maven {url 'https://maven.aliyun.com/repository/spring'} maven {url 'https://maven.aliyun.com/repository/spring-plugin'} maven {url 'https://maven.aliyun.com/repository/apache-snapshots'} 一、 Linux 安装 Java17

参考:www.cnblogs.com/chaosmoor/p…

Step 1: 下载 JDK

注意:下载与 Linux 系统对应的版本 查看 Linux 版本

uname -a

官方下载链接: www.oracle.com/java/techno…

Step 2: 上传到 Linux

上传文件到服务器

scp -P 22 [email protected]://software/java

将下载的 jdk-17.0.2_linux-x64_bin.tar.gz 文件上传至 Linux 服务器,我这里选择的是 /software/java 文件夹

Step 3:解压缩

解压缩到指定目录

mkdir /usr/local/java/ tar -xzvf /software/java/jdk-17.0.2_linux-x64_bin.tar.gz -C /usr/local/java/ Step 4:配置环境变量 vim /etc/profile

按 “i” 编辑,

贴上如下内容(注意jdk的路径地址跟你下载的版本对应):

按 “ESC” 退出编辑模式,“:wq” 保存并退出

export JAVA_HOME=/usr/local/java/jdk-17.0.2 export PATH=$PATH:$JAVA_HOME/bin; export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar;

加载配置:

source /etc/profile Step 5:测试

删除压缩包

rm -rf /software/java/jdk-17.0.2_linux-x64_bin.tar.gz 二、部署服务器 0. 打包

打包时出错: Entry META-INF/MANIFEST.MF is a duplicate but no duplicate handling strategy has been set. 解决方案,在 build.gradle 添加如下代码:

tasks.withType { duplicatesStrategy = DuplicatesStrategy.EXCLUDE manifest { attributes["Main-Class"] = "com.lyl.byyouside.ByYouSideApplicationKt" } } 1. 上传 Springboot 的 jar 包到服务器

先创建文件夹

mkdir /opt/byyouside mkdir /opt/byyouside/dev

上传 jar 包

scp -P 22 side_dev.jar [email protected]:/opt/byyouside/dev 2. 运行 jar 包

使用以下命令在后台运行 jar 文件,并指定服务器的 IP 地址和端口号: 执行启动部署命令:nohup 表示后台启动,不显示日志,& 符号放在启动参数后面表示设置此进程为后台进程。

nohup java -jar side_dev.jar >/dev/null 2>&1 & 2.1 封装成sh脚本一键启动 #! /usr/bin/env bash echo "*****************demo-service**************" cd `dirname $0` echo `pwd` serviceId="demo.jar" jvmStr="-Xms256m -Xmx256m" pid=`ps -ef | grep -w ${serviceId} | grep -v bash | grep -v grep | awk '{print $2}'` if [ -n "$pid" ] then echo "服务已启动 pid $pid" exit 1 fi nohup java -jar $jvmStr ./$serviceId > /dev/null 2>&1 & sleep 10 #echo "starting..." 2.2 封装成sh脚本一键关闭 #!/bin/bash echo "**************关闭此服务************" serviceId="demo.jar" pid=`ps -ef | grep $serviceId | grep -v grep | awk '{print $2}'` if [ $pid ];then echo -e "$serviceId Stating pid : $pid" kill -9 $pid echo -e "$serviceId stop" else echo "$serviceId is closed" fi 三、Nginx 配置

nginx服务常用操作:

#查看nginx服务状态 systemctl status nginx.service #启动nginx服务 systemctl start nginx.service #停止nginx服务 systemctl stop nginx.service #重启nginx服务 systemctl restart nginx.service #重新读取nginx配置(这个最常用, 不用停止nginx服务就能使修改的配置生效) systemctl reload nginx.service 1. 安装 Nginx sudo yum install nginx 2. 配置 Nginx

找到 Nginx 的配置文件 /etc/nginx/nginx.conf 并打开。

vim /etc/nginx/nginx.conf

配置如下文件:

server { listen 80; server_name www.project1.com; location / { proxy_pass http://127.0.0.1:8080; # 8080 为 project1 项目的端口号 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } server { listen 80; server_name www.project2.com; location / { proxy_pass http://127.0.0.1:8081; # 8081 为 project2 项目的端口号 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

保存 Nginx 配置文件,重启 Nginx 服务。您可以使用以下命令来重启 Nginx:

sudo systemctl restart nginx 3. 开放防火墙端口

如果您的 CentOS 系统开启了防火墙,则需要开放相应的端口,例如 80 和 443(如果您的项目需要使用 HTTPS 协议)。

您可以使用以下命令开放这些端口:

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

如果您使用的是其他端口号(不是 HTTP 的 80 端口),则需要根据具体情况打开对应的端口。例如,要打开 8080 端口:

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent sudo firewall-cmd --reload

执行命令时出现了异常 :

3.1 FirewallD is not running 原因与解决方法

原因是:防火墙没有启动

3.1.1 启动FirewallD服务命令: systemctl start firewalld.service #开启服务 systemctl enable firewalld.service #设置开机启动 3.1.2 查看FirewallD防火墙状态: systemctl status firewalld 3.1.3 重新执行上面的打开端口号的命令 3.2 FirewallD 常用的命令: firewall-cmd --state ##查看防火墙状态,是否是running systemctl status firewalld.service ##查看防火墙状态 systemctl start firewalld.service ##启动防火墙 systemctl stop firewalld.service ##临时关闭防火墙 systemctl enable firewalld.service ##设置开机启动防火墙 systemctl disable firewalld.service ##设置禁止开机启动防火墙 firewall-cmd --permanent --query-port=80/tcp ##查看80端口有没开放 firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令 firewall-cmd --get-zones ##列出支持的zone firewall-cmd --get-services ##列出预定义的服务 firewall-cmd --query-service ftp ##查看ftp服务是否放行,返回yes或者no firewall-cmd --add-service=ftp ##临时开放ftp服务 firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务 firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务 firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口 firewall-cmd --zone=public --remove-port=80/tcp --permanent ##移除80端口 iptables -L -n ##查看规则,这个命令是和iptables的相同的 man firewall-cmd ##查看帮助 参数含义: --zone #作用域 --permanent #永久生效,没有此参数重启后失效 4. 设置域名解析

5. 阿里云ESC 服务器需要设置 安全组规则 才能访问



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有