华为云服务器前后端分离项目打包上传及nginx配置

目录

1、Spring Boot项目打包

2、后端上传到云服务器

3、前端打包

1)前端请求路径修改

2)打包上传

4、下载nginx

1)添加源

2)安装Nginx

3)查看nginx安装目录和版本 

 4)启动 重启nginx命令

5)配置服务器安全组

6、使用nginx挂载前端

1)查看自己的nginx目录

2)配置nginx.conf配置文件

 7、后端运行


1、Spring Boot项目打包

直接进入项目下的maven中,使用package指令将项目打包为jar

 需要注意的是application.properties下数据库密码和名字对错,要从本地的数据库替换为线上服务器的数据库信息。

2、后端上传到云服务器

maven项目打包完成后,从target目录下找到这个jar包

使用xtfp将jar包上传到要上传的目标文件夹,我是在 /home 目录下新建了一个coding目录去存放,你也可以像我一样。

 

3、前端打包

1)前端请求路径修改

我们将前端文件从本地部署到服务器,请求地址发生改变,那自然需要修改前端的请求路径。

打开VScode,打开前端项目所在文件夹

 找到自己本地的请求路径,看它是多少。

可见,我本地的请求地址+端口号为“localhost:8088”

那么,就要将其替换为我服务器后端部署的地址和端口。

使用快捷键“ctrl + shift + f” 进入文件夹全局搜索

点击朝向右方的箭头,将它打开。

 

在搜索栏输入自己本地的地址+端口号

在替换栏输入服务器的地址+端口号(服务器地址为弹性公网ip,自行在服务器控制台查看)

 

完成之后点击回车,全部替换即可。

2)打包上传

由于是vue写的,直接进入目录,在url栏输入“cmd”打开cmd窗口

在控制台终端输入 npm run bulid即可将前端项目整合为文件夹dist。

再把dist文件夹通过xftp传到服务器上,我是传到/home/目录下的

可以通过对文件打压缩为.tar.gz格式,上传完成后再解压缩的方式向服务器上传dist

这样做的好处为可以节省时间,而且避免传输过程中某个文件损坏导致纠错困难。

将windows下文件压缩为Linux可解压文件的过程在我之前的博客中已有体现,不再赘述。

将Windows的文件打包为Linux、Ubuntu可打开的格式_瓜是西瓜的瓜的博客-CSDN博客

解压命令:tar -zxvf dist.tar.gz

解压完毕后如图所示:

4、下载nginx

1)添加源

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

2)安装Nginx

验证添加源是否成功。

命令:yum search nginx

如果成功则执行下列命令安装Nginx。

yum install -y nginx

3)查看nginx安装目录和版本 

nginx  -v          ###查看目录

rpm -ql nginx      ###查看安装目录

一般没有改动过的话,都是默认安装在 /etc/nginx 目录下

 4)启动 重启nginx命令

systemctl start nginx.service

systemctl reload nginx.service

5)配置服务器安全组

服务器-选中服务器-安全组-配置规则

 入方向规则

快速添加规则

 添加完成

 

安全组添加后还需要在服务器上防火墙把这些端口放开

开放80端口(安全组中添加的443,8080都要开)

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

再重启防火墙

firewall-cmd --reload

查看一下是否已经开放

firewall-cmd --list-all

附上关闭端口指令:

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

6、使用nginx挂载前端

1)查看自己的nginx目录

nginx直接启动服务它是不会默认挂载到你的页面的,因此,需要修改配置文件来达到该目的。要修改配置文件就需要知道nginx安装在哪,默认的就在 /etc/nginx下

忘记的话可以使用命令 whereis nginx 来查找自己的nginx安装在哪个目录下。

2)配置nginx.conf配置文件

主要配置的是server部分,附上我的nginx配置文件供大家参考。


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log;
    #error_log  /etc/nginx/nginx-error.log;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       8080;
        server_name  1xx.60.1xx.1xx;
    root /home/dist;        #前端文件存放目录

    #api请求路径,也就是后端路径请求地址+端口

    location /api/{
        proxy_pass http://1xx.60.1xx.1xx:8088/api/;
    }
        #charset koi8-r;

        #access_log  logs/host.access.log  main;
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md){
        return 404;
    }
    #添加头部信息
    proxy_set_header Cookie $http_cookie;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #请求头总长度大于128k时使用large_client_header_buffers设置的缓存区
    client_header_buffer_size 128k;
    #指令参数4为个数,128k为大小,默认是8k。申请4个128k。
    large_client_header_buffers 4 128k;
    #指定允许跨域的方法,*代表所有
    add_header Access-Control-Allow-Methods 'GET,PUT,POST,DELET,OPTIONS';
    # 预检命令的缓存,如果不缓存每次会发送两次请求
    add_header Access-Control-Max-Age 3600;
    #带cookie请求需要加上这个字段,并设置为true
    add_header Access-Control-Allow-Credentials true;
    #表示允许这个域跨域调用(客户端发送请求的域名和端口)
    #$http_origin动态获取请求客户端请求的域   不用*的原因是带cookie的请求不支持*号
    add_header Access-Control-Allow-Origin $http_origin;
    #表示请求头的字段 动态获取
    add_header Access-Control-Allow-Headers $http_access_control_request_headers;
    location ~ \.well-known{
        allow all;
    }

    location / {
      try_files $uri $uri/ /index.html;
    }

    #websocket配置
    location /websocket{
        proxy_pass http://1xx.60.1xx.1xx:8088/api/message/websocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 600s;
    }  

    location /health/ {
        proxy_set_header HOST $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        
        proxy_pass http://1xx.60.1xx.1xx:8088/health/;
        # OPTIONS预检命令,预检命令通过时才发送请求
        # 检查请求的类型是不是预检命令
        if ($request_method = 'OPTIONS') {
            #return 200;
        }
        #kkFileView
        #proxy_pass http://1xx.60.1xx.1xx:30090/FileServer/;
    }
    # 数据报表接口配置
    location /ReportServer/ {
        if ($request_method = 'OPTIONS') {
            return 200;
        }
        #proxy_pass http://1xx.60.1xx.1xx:8088/;
    }
    location /DataV {
        try_files $uri $uri/ /DataV/index.html;
    }

#location / {
            #root   html;
            #index  index.html index.htm;
       #}

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache document root
        # concurs with nginx one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
   }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
   proxy_read_timeout 600s;
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}
 

 修改完成后保存退出即可

再去重启nginx

 systemctl reload nginx.service

 7、后端运行

cd到jar包目录下,执行

nohup java -jar 你的jar包 &

nohup java -jar 你的jar包 > hr.log &

&代表在后台运行

nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行(不然关闭xshell窗口,后端运行就停止了)

而> hr.log 的意思是将command的输出重定向到hr.log文件,即输出内容不打印到屏幕上,而是输出到hr.log文件中。

再 cat hr.log查看运行日志,是否有出错等(出错一半都是代码出错了)

没问题的话,恭喜你,部署成功。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/110199.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Midjourney学习(一)prompt的基础

prompt目录 sd和mj的比较prompt组成风格表现风格时代描述表情色彩情绪环境 sd和mj的比较 自从去年9月份开始,sd就变得非常或火,跟它一起的还有一个midjourney。 他们就像是程序界的两种模式,sd是开源的,有更多的可能性更可控。但是…

嵌入式学习笔记——ARM的编程模式和7种工作模式

ARM提供的指令集 ARM态-ARM指令集(32-bit) Thumb态-Thumb指令集(16-bit) Thumb2态-Thumb2指令集(16 & 32 bit) Thumb指令集是对ARM指令集的一个子集重新编码得到的,指令长度为16位。通常在…

windows系统配置tcp最大连接数

打开注册表 运行->regedit HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters目录下 增加一个MaxUserPort(默认值是5000,端口范围是1025至5000)MaxUserPort设置为65534(需重启服务器) 执行dos命令&…

克服紧张情绪:程序员面试心理准备的关键

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

AI助力智能安检,基于图像目标检测实现危险品X光智能安全检测系统

基于AI相关的技术来对一些重复性的但是又比较重要的工作来做智能化助力是一个非常有潜力的场景,关于这方面的项目开发实践在我之前的文章中也有不少的实践,感兴趣的话可以自行移步阅读即可:《AI助力智能安检,基于目标检测模型实现…

【UE5:CesiumForUnreal】——3DTiles数据属性查询和单体高亮

目录 0.1 效果展示 0.2 实现步骤 1 数据准备 2 属性查询 2.1 射线检测 2.2 获取FeatureID 2.3 属性查询 2.4 属性显示 3 单体高亮 3.1 构建材质参数集 3.2 材质参数设置 3.3 添加Cesium Encode Metadata插件 3.4 从纹理中取出特定FeatureId属性信息 3.5 创建…

linux+QT+FFmpeg 6.0,把多个QImage组合成一个视频

直接上代码吧: RecordingThread.h#ifndef RECORDINGTHREAD_H #define RECORDINGTHREAD_H #include "QTimer" #include <QObject> #include <QImage> #include <QQueue>extern "C"{//因为FFmpeg是c语言,QT里面调用的话需要extern "C…

7、监测数据采集物联网应用开发步骤(5.3)

监测数据采集物联网应用开发步骤(5.2) 静态配置库数据库调用&#xff0c;新建全局变量初始化类com.zxy.main.Init_Page.py #! python3 # -*- coding: utf-8 -Created on 2017年05月10日 author: zxyong 13738196011 from com.zxy.z_debug import z_debug from com.zxy.common…

新SDK平台下载开源全志V853的SDK

获取SDK SDK 使用 Repo 工具管理&#xff0c;拉取 SDK 需要配置安装 Repo 工具。 Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workflow. Repo is…

开发新能源的好处

风能无论是总装机容量还是新增装机容量&#xff0c;全球都保持着较快的发展速度&#xff0c;风能将迎来发展高峰。风电上网电价高于火电&#xff0c;期待价格理顺促进发展。生物质能有望在农业资源丰富的热带和亚热带普及&#xff0c;主要问题是降低制造成本&#xff0c;生物乙…

设计模式入门笔记

1 设计模式简介 在IT这个行业&#xff0c;技术日新月异&#xff0c;可能你今年刚弄懂一个编程框架&#xff0c;明年它就不流行了。 然而即使在易变的IT世界也有很多几乎不变的知识&#xff0c;他们晦涩而重要&#xff0c;默默的将程序员划分为卓越与平庸两类。比如说&#xff…

战略文化派,战略形成是集体信念和愿景形成的过程

战略文化派&#xff1a;战略形成是集体信念和愿景形成的过程 趣讲大白话&#xff1a;在乎集体认同 【趣讲信息科技271期】 **************************** 关于企业文化的故事很多 比如&#xff1a;中国海尔砸冰箱后蜕变的文化 比如&#xff1a;日本的稻盛和夫倡导的东方利他文化…

基于空洞卷积DCNN与长短期时间记忆模型LSTM的dcnn-lstm的回归预测模型

周末的时候有时间鼓捣的一个小实践&#xff0c;主要就是做的多因子回归预测的任务&#xff0c;关于时序数据建模和回归预测建模我的专栏和系列博文里面已经有了非常详细的介绍了&#xff0c;这里就不再多加赘述了&#xff0c;这里主要是一个模型融合的实践&#xff0c;这里的数…

网络编程套接字(3): 简单的TCP网络程序

文章目录 网络编程套接字(3)4. 简单的TCP网络程序4.1 服务端创建(1) 创建套接字(2) 绑定端口(3) 监听(4) 获取新连接(5) 处理读取与写入 4.2 客户端创建(1)连接服务器 4.3 代码编写(1) v1__简单发送消息(2) v2_多进程版本(3) v3_多线程版本(4) v4_线程池版本 网络编程套接字(3)…

如何使用CSS实现一个自适应等高布局?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用 Flexbox 布局⭐ 使用 Grid 布局⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发…

爬虫逆向实战(二十三)--某准网数据

一、数据接口分析 主页地址&#xff1a;某准网 1、抓包 通过抓包可以发现数据接口是api_to/search/company_v2.json 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现b参数和kiv参数是加密参数 请求头是否加密&#xff1f; 无响应是否加…

在云原生时代,构建高效的大数据存储与分析平台

文章目录 1. **选择适当的数据存储技术&#xff1a;**2. **采用分布式架构&#xff1a;**3. **数据分区和索引&#xff1a;**4. **采用列式存储&#xff1a;**5. **数据压缩和编码&#xff1a;**6. **使用缓存技术&#xff1a;**7. **数据分片和复制&#xff1a;**8. **自动化运…

GNS3 在 Linux 上的安装指南

文章目录 GNS3 在 Linux 上的安装指南1. 基于 Ubuntu 的发行版安装 GNS32. 基于 Debian 的安装3. 基于 ArchLinux 的安装4. 从 Pypi 安装 GNS35. 启动 GNS3 服务端GNS3 在 Linux 上的安装指南 大家好,今天我们来聊聊如何在 Linux 上安装 GNS3。GNS3 是一个非常受欢迎的网络模…

软件工程(二十) 系统运行与软件维护

1、系统转换计划 1.1、遗留系统的演化策略 时至今日,你想去开发一个系统,想完全不涉及到已有的系统,基本是不可能的事情。但是对于已有系统我们有一个策略。 比如我们是淘汰掉已有系统,还是继承已有系统,或者集成已有系统,或者改造遗留的系统呢,都是不同的策略。 技术…

macOS上开源免费的新闻阅读器SABnzbd

SABnzbd Mac版是一款运行在Mac平台上的开源新闻阅读器&#xff0c;这款阅读器界面简约、功效简单强大&#xff0c;使用SABnzbd时可以帮助使用Python语言编写&#xff0c;让用户使用usenet新闻组更便利&#xff0c;是你阅读新闻的好帮手&#xff01; SABnzbd具有以下主要特点&a…