首页 > 系统相关 >云服务器Linux部署war、jar包,并在nginx配置域名

云服务器Linux部署war、jar包,并在nginx配置域名

时间:2024-11-08 13:49:03浏览次数:7  
标签:set Forwarded header jar server nginx proxy Linux

一,打包

Jar包

        一个Springboot项目默认打包jar包,无需修改配置,点击右侧Maven-Lifecycle-package打包即可

注意:

需要先检查pom.xml文件,可能此时打包完的jar包会出现

        no main manifest attribute, in test-0.0.1-SNAPSHOT.jar

        xxx.jar中没有主清单属性

        由于IDEA默认使用spring-boot-maven-plugin 插件,默认设置 <skip> 为true,这会导致 Spring Boot 插件跳过重新打包 JAR 文件的步骤,进而不生成包含 Main-Class 属性的清单文件。

解决办法:移除或注释掉即可

 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.github.nan.web.NanWebApplication</mainClass>
                    <!-- <skip>true</skip> --> <!-- 移除或设置为 false -->
                </configuration>
            </plugin>
        </plugins>
    </build>

War包

        需要将pom.xml文件的packaging设置为war

<packaging>war</packaging>

如果使用tomcat启动服务,则需要排除tomcat的依赖。同时,添加servlet-api的依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>

         在build使用一下插件打包

 

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
               <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>

        最后点击右侧Maven-Lifecycle-package打包即可

二,服务器环境部署

1.MySQL安装

       将安装包放到指定目录

Linux指令:

cd ..返回上一级

cd /xx/xx/xx 进入其中一个目录

mkdir xxx创建一个文件夹

下载某一版本安装包

        下载5.7版本

wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

        下载8.0版本

 wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm

安装下载好的安装包

sudo rpm -ivh mysqxxxxx.noarch.rpm

安装MySQL,出现的所有提示,y到底即可

 

输入指令确定是否安装好

 mysql -V

 

 MySQL命令

sudo systemctl start mysqld 启动MySQL

sudo systemctl start mysqld 查看MySQL运行状态

sudo systemctl reload mysqld 重启MySQL

sudo systemctl stop mysqld 关闭MySQL

取得MySQL初始化随机密码

grep "password" /var/log/mysqld.log 

 可以看到我们的初始密码是 l>KbWhk6K&+Y

登录MySQL

mysql -h 127.0.0.1 -u root -p

        输入刚刚获取的初始密码

 

        进入这个页面,代表mysql登入成功 

修改密码

update user set authentication_string=password("新密码")where user='root';修改密码

flush privileges;立即应用

exit;退出mysql

        重新登录MySQL,并输入新密码即可

跳过/忘记密码 

vim  /etc/my.cnf
按i进入编辑模式
最后一行加入   skip-grant-tables
点击esc,输入:wq保存并推出

重启mysqld
mysql -h 127.0.0.1 -u root -p    
 
直接回车进入mysql
修改密码即可

创建远程账户

         如果需要远程访问,还需要开通远程访问权限,否则将会报错

create user '新用户名'@'%' identified with mysql_native_password by '密码';
grant all privileges on *.* to '新用户名'@'%' with grant option;
flush privileges;

        MySQL安装完成,可以远程访问了

2.Java安装

下载

        在 Oracle 官网下载一个适用于Linux平台的JDK工具包【jdk-8u202-linux-x64.tar.gz】

Oracle Java Technologies | Oracle下载地址

         通过软件传入服务器中,我这里使用的是Xftp 8

        将安装包放入某个文件夹内

mkdir -p /xxx/java

解压到目录

tar -vzxf jdk-8u202-linux-x64.tar.gz

配置环境变量

1). 编辑/etc/profile文件,进入命令模式
  vim /etc/profile
2). 在命令模式中,输入指令 G , 切换到文件最后
  G
3). 在命令模式中输入 i/a/o 进入插入模式,然后切换到文件最后一行
  i
4). 将上述的配置拷贝到文件中
  JAVA_HOME=/usr/local/jdk1.8.0_171
  PATH=$JAVA_HOME/bin:$PATH
  
5). 从插入模式,切换到指令模式
  ESC
  
6). 按:进入底行模式,然后输入wq,回车保存
  :wq

7). 刷新配置文件
  source /etc/profile 

检验是否安装成功

java -version

 

        出现这个代表Java安装成功

三.安装Tomcat

        记得检查JDK与Tomcat版本问题,版本不对应后续问题会很多

Apache Tomcat® - Welcome!下载地址

 

        上传到服务器任意文件夹,并进入文件夹

安装

tar -zxvf apache-tomcat-7.0.57.tar.gz -C 指定目录

cd 刚刚指定的目录/apache-tomcat-7.0.57/  进入Tomcat目录

        bin文件中包括Tomcat工具,包括启动,停止等

        conf文件包括Tomcat配置文件

        webapps文件存放war包,用于程序的启动

Tomcat启动与停止

cd bin/  进入工具包中

./startup.sh  启动Tomcat

./shutdown.sh  关闭Tomcat

         代表成功启动

配置

        如果想要修改Tomcat启动的端口号

进入conf目录下

cd conf/

打开server.xml文件

vim server.xm

找到Connector开头的代码,将后面的8080修改为任意端口号,只要你所修改的端口号没被其它应用占有,修改后保存。

        如果出现 The valid characters are defined in RFC 7230 and RFC 3986 问题

        增加以下配置

<Connector port="xxxx" protocol="HTTP/1.1" connectionTimeout="20000"
 relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;" 
 relaxedPathChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;"
 redirectPort="8443" />

 访问 http://你的ip:端口号可以访问Tomcat地址

        看到这个页面代表Tomcat成功安装了

四.Nginx安装

准备工作

1.先安装gcc-c++编译器

yum install gcc-c++
yum install -y openssl openssl-devel

2.再安装pcre包

yum install -y pcre pcre-devel


3.再安装zlib包

yum install -y zlib zlib-devel

进行nginx的安装

1.在/usr/local/下创建文件nginx文件

mkdir 任意位置/nginx


2.在网上下nginx包上传至Linux(https://nginx.org/download/),也可以直接下载

wget https://nginx.org/download/nginx-1.19.9.tar.gz


3.解压并进入nginx目录

tar -zxvf nginx-1.19.9.tar.gz
cd nginx-1.19.9


4.使用nginx默认配置

./configure


5.编译安装

make
make install


6.查找安装路径

whereis nginx

Nginx位置一般为  /usr/local/nginx


7.进入sbin目录,可以看到有一个可执行文件nginx,直接./nginx执行就OK了。

./nginx


9.查看是否启动成功

ps -ef | grep nginx

10.然后在网页上访问自己的IP就可以了默认端口为80(出现如下欢迎界面就成功了!)

Nginx命令

./nginx 启动

./nginx -s stop 停止

./nginx -s reload 重启

修改配置文件 

        配置文件位置   Nginx位置/conf/nginx.conf

        配置一般在此处修改

        修改完后,重启Nginx即可生效

五.部署服务

        至此所有准备已完成,可以开始部署服务了

War包

        移入Tomcat下webapps文件中,启动Tomcat即可部署服务

Jar包

        将jar包移入任意文件夹中,需要确定一个输出日志的位置

1.后台启动,不影响当前窗口的使用,日志在指定位置的文件内查看

nohup java -jar xxx.jar > 指定输出日志位置 2>&1 &
 

2.前台启动,只有结束当前程序后才能在使用此窗口,日志会直接显示在当前窗口

java -jar xxx.jar > 指定输出日志位置 2>&1 &

         至此服务启动完毕

六.Nginx配置

        如果需要配置域名,以及代理,需要配置一下内容     

 server {
        listen       80;        #监听端口
        listen       [::]:80;
        server_name  你的域名;
        #root         /xx;        #如果没有本地文件不用配置

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location /xxx/ {        #如果80端口监听到带有/xxx就会转到部署的服务
            proxy_pass http://127.0.0.1:8080/;        #本地部署的服务地址
            # Proxy headers
            proxy_set_header Upgrade           $http_upgrade;
            proxy_set_header Host              $host;
            proxy_set_header X-Real-IP         $remote_addr;
            proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host  $host;
            proxy_set_header X-Forwarded-Port  $server_port;
        }
    
    error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }

}

如果需要一个端口一个域名,监听多个服务

        增加一个location配置即可

 location /xxx/ {        #如果80端口监听到带有/xxx就会转到部署的服务
            proxy_pass http://127.0.0.1:8080/;        #本地部署的xxx服务地址
            # Proxy headers
            proxy_set_header Upgrade           $http_upgrade;
            proxy_set_header Host              $host;
            proxy_set_header X-Real-IP         $remote_addr;
            proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host  $host;
            proxy_set_header X-Forwarded-Port  $server_port;
        }

location /yyy/ {        #如果80端口监听到带有/yyy就会转到部署的服务
            proxy_pass http://127.0.0.1:8081/;        #本地部署的yyy服务地址
            # Proxy headers
            proxy_set_header Upgrade           $http_upgrade;
            proxy_set_header Host              $host;
            proxy_set_header X-Real-IP         $remote_addr;
            proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host  $host;
            proxy_set_header X-Forwarded-Port  $server_port;
        }

如果需要部署多个域名多个服务

        增加一个server即可

server {
        listen       80;        #监听端口
        listen       [::]:80;
        server_name  你的域名;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location /xxx/ {        #如果80端口监听到带有/xxx就会转到部署的服务
            proxy_pass http://127.0.0.1:8080/;        #本地部署的服务地址
            # Proxy headers
            proxy_set_header Upgrade           $http_upgrade;
            proxy_set_header Host              $host;
            proxy_set_header X-Real-IP         $remote_addr;
            proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host  $host;
            proxy_set_header X-Forwarded-Port  $server_port;
        }

}

server {
        listen       80;        #监听端口
        listen       [::]:80;
        server_name  你的另一个域名;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location /yyy/ {        #如果80端口监听到带有/yyy就会转到部署的服务
            proxy_pass http://127.0.0.1:8081/;        #本地部署的服务地址
            # Proxy headers
            proxy_set_header Upgrade           $http_upgrade;
            proxy_set_header Host              $host;
            proxy_set_header X-Real-IP         $remote_addr;
            proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host  $host;
            proxy_set_header X-Forwarded-Port  $server_port;
        }

}

如果需要 websocket

        需要添加location配置

location ~/websocket {
        proxy_pass http://127.0.0.1:8080/websocket;你的websocket访问地址
        # Proxy headers
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";  # 修正此行,确保正确处理连接升级
        proxy_read_timeout 600s;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
}

        至此服务已部署服务器

标签:set,Forwarded,header,jar,server,nginx,proxy,Linux
From: https://blog.csdn.net/STARSpace8888/article/details/143614493

相关文章

  • 【linux】Linux虚拟网络中的网络接口介绍
    原创信息技术圈IntroductiontoLinuxinterfacesforvirtualnetworkingLinux拥有丰富的虚拟网络功能,这些功能为托管虚拟机、容器以及云环境提供了基础。在这篇文章中,我将简要介绍所有常用虚拟网络接口类型。本文不涉及代码分析,仅对Linux上的接口及其使用进行简要介绍。......
  • linux新增物理卷,扩容逻辑分区,出现WARNING: xfs signature detected on /dev/vdb at of
    linux新增物理卷出现WARNING:xfssignaturedetectedon/dev/vdbatoffset0.Wipeit?[y/n]:标识这个/dev/vdb磁盘已经从0位置被标记为xfs类型的文件系统报错解释:这条信息表示在设备/dev/vdb上检测到了XFS文件系统的签名。通常情况下,这可能意味着分区/dev/vdb已被......
  • Linux分区出现 Device for PV wwoBYr-XnZx-Oa4D-71JE-essF-5qPe-Zu8Cvw not found or
    linux分区,出现这种情况,磁盘创建或分配出现了异常WARNING:DeviceforPVwwoBYr-XnZx-Oa4D-71JE-essF-5qPe-Zu8Cvwnotfoundorrejectedbyafilter.Couldn'tfinddevicewithuuidwwoBYr-XnZx-Oa4D-71JE-essF-5qPe-Zu8Cvw.PV/dev/vda2VGcentoslvm2[<39.0......
  • 在Linux中如何添加新的硬盘
    准备工作检查系统环境在开始Linux磁盘分区之前,检查系统环境是一个关键步骤。Linux提供了两种常用的方法来查看现有的磁盘信息:fdisk-l:这个命令用于显示磁盘的分区表,提供详细的分区信息。lsblk:这个命令以树状结构展示系统中的块设备,包括磁盘和分区,同时显示挂载点信息。......
  • Linux命令行压力测试工具:基准测试与性能优化
    文章目录Linux命令行压力测试工具:基准测试与性能优化Linux安装模拟CPU压力基本用法:高负载模拟:常见选项解析:模拟CPU满负荷模拟I/O瓶颈随机读测试:顺序写测试:初始化与清理操作:模拟大流量网络压力客户端测试命令:服务端命令:模拟端口禁用与防火墙配置查看当前规则:禁用出口端......
  • 打靶记录-Jarbas
    靶机下载vulnhub->Jarbas确定靶机nmap-sn192.168.52.0/24靶机ip:192.168.52.130扫描全端口开放情况nmap-sT192.168.52.130-p--oA./ports详细扫开放的端口nmap-sT-sC-sV-O192.168.52.130-p22,80,3306,8080-oA./details扫udp端口开放nmap-sU--top-po......
  • nginx二级目录代理minio指定桶
    nginx二级目录代理minio指定桶nginx提供了外网地址,通过二级目录可以代理内网minio的具体桶,将图片展示。配置如下:server{listen8443ssl;server_nameyourdomain.com;ssl_certificate/path/to/your/certificate.crt;ssl_certificate_key/path/to/your......
  • 【命令操作】Linux三剑客之sed详解 _ 统信 _ 麒麟 _ 方德
    原文链接:【命令操作】Linux三剑客之sed详解|统信|麒麟|方德Hello,大家好啊!今天带来一篇关于Linux三剑客之sed命令详解的文章。sed是一款功能强大的流编辑器,它可以在命令行中快速处理文本,支持替换、插入、删除等操作,特别适合用于处理大型文件或批量文本处理任务。本文......
  • 解决Nginx转发图片不能显示【转】
    背景:最近很多小伙伴使用Nginx代理iServer,将HTTP协议成HTTPS协议,但是可能会出现以下几种情况:(1)图片、js、css等静态资源无法加载 (2)代理后页面跳转回HTTP协议 (3)代理后访问服务管理界面提示“该用户无查询服务访问统计信息权限” 针对上述情况应该如何解决问题呢?其实这些......
  • linux_1
    静态库:以lib开头,文件名通常:libxxx.a;静态库在编译时,会链接(拷贝一份)放到可执行程序;因为要被复制到可执行文件,所以代码体积会增大。它不会共享。若库被更新了程序需要重新编译。共享库:文件名通常libxx.so;在需要这个库时程序需要回到共享库区执行库中的代码。库更......