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

news2024/10/7 16:15:50

目录

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.coloradmin.cn/o/947043.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

接口测试与功能测试的区别~

今天为大家分享的是我们在日常测试工作中, 一定会接触并且目前在企业中是主要测试内容的 功能测试与接口测试 一.功能测试与接口测试的基本概念。 1.1 什么是功能测试呢? 功能测试: 是黑盒测试的一方面, 检查实际软件的功能是否符合用户的需求 功能测试测试的内容包括以下…

工程制造领域:企业IT架构

一、500强IT部门的组织规划架构图 1.1 IT服务保证梯队与指导思想 二、工程制造领域,整体业务规划架构图 三、工程制造领域,数据化项目规划架构图 四、工程制造领域,IT应用系统集成架构图

15. 实现业务功能--帖子操作

1. 集成编译器 editor.md 支持 MarkDown 语法编辑&#xff0c;在需要用户输⼊内容的页面按以下代码嵌入编辑器 1.1 编写 HTML <!-- 引⼊编辑器的CSS --> <link rel"stylesheet" href"./dist/editor.md/css/editormd.min.css"> <!-- 引⼊编…

学习pytorch6 torchvision中的数据集使用

torchvision中的数据集使用 1. torchvision中的数据集使用官网文档注意点1 totensor实例化不要忘记加括号注意点2 download可以一直保持为True代码执行结果 2. DataLoader的使用 1. torchvision中的数据集使用 官网文档 注意左上角的版本 https://pytorch.org/vision/0.9/ 注…

行业趋势和新兴领域分析:分析当前网络安全行业的发展趋势,如IoT安全、AI安全、区块链安全等。

第一章&#xff1a;引言 随着数字化时代的迅速发展&#xff0c;网络安全已经成为各行各业不可忽视的重要领域。恶意攻击、数据泄露以及黑客入侵等威胁逐渐增多&#xff0c;推动着网络安全行业不断创新与进步。本文将深入探讨当前网络安全领域的发展趋势&#xff0c;聚焦于新兴…

肿瘤科医师狂喜,15分RNA修饰数据挖掘文章

Biomamba荐语 与这个系列的前面一些论文类似&#xff0c;这次给大家推荐的是一篇纯生物信息学数据挖掘的文章&#xff0c;换句话说&#xff0c;这又是一篇不需要支出科研经费&#xff08;白嫖&#xff09;的论文(当然&#xff0c;生信分析用的服务器还是得掏点费用的)。一般来…

springboot第37集:kafka,mqtt,Netty,nginx,CentOS,Webpack

image.png binzookeeper-server-start.shconfigzookeeper.properties.png image.png image.png 消费 image.png image.png image.png image.png image.png image.png image.png image.png image.png Netty的优点有很多&#xff1a; API使用简单&#xff0c;学习成本低。功能强大…

【操作系统】聊聊文件传输的零拷贝、PageCache、异步IO机制

在目前主流的系统中&#xff0c;其实大多数都是数据密集型系统&#xff0c;所以设计数据密集型应用一书非常经典&#xff0c;推荐一读。而大多数遇到的问题都是存储问题。CPU、内存 因为本身的读写速度比较快&#xff0c;所以磁盘就成为了一个性能瓶颈。 针对磁盘优化的技术层…

对class文件进行base64编码

使用以下代码 package org.springframework.cloud.gateway.sample;import org.springframework.util.Base64Utils;import java.io.*; import java.nio.charset.StandardCharsets;public class EncodeShell {public static void main(String[] args){byte[] data null;try {In…

大数据之linux入门

一、linux是什么 linux操作系统 开发者是林纳斯-托瓦兹&#xff0c;出于个人爱好编写。linux是一个基于posix和unix的多用户、多任务、支持多线程和多CPU的操作系统。 Unix是20世纪70年代初出现的一个操作系统&#xff0c;除了作为网络操作系统之外&#xff0c;还可以作为单…

6路液体水位检测芯片VK36W6D SOP16 抗电源干扰及手机干扰特性好

产品品牌&#xff1a;永嘉微电/VINKA 产品型号&#xff1a;VK36W6D 封装形式&#xff1a;SOP16/QFN16L 详细资料&#xff1a;13.5/5.474/4.703 概述 VK36W6D具有6个触摸检测通道&#xff0c;可用来检测6个点的水位。该芯片具有较高的集成度&#xff0c;仅需极少的外部组件便…

vscode GDB 调试linux内核 head.S

遇到的问题 此前参考如下文章 https://zhuanlan.zhihu.com/p/510289859 已经完成了在ubuntu 虚拟机用vscode 调试linux 内核。但是美中不足的是&#xff0c;断点最早只能加在__primary_switched() 函数。无法停在更早的断点上&#xff0c;比如ENTRY(stext) 位置。参考《奔跑吧…

C语言_初识C语言指针

文章目录 前言一、指针 ... 一个内存单元多大比较合适&#xff1f;二、地址或者编号如何产生&#xff1f;三、指针变量的大小 前言 内存是电脑上特别重要的存储器&#xff0c;计算机中程序的运行都是在内存中进行的。 所以为了有效的使用内存&#xff0c;就把内存划分成一个个…

记1次前端性能优化之CPU使用率

碰到这样的一个问题&#xff0c;用户反馈页面的图表一直加载不出来&#xff0c;页面还卡死 打开链接页面&#xff0c;打开控制台 Network 看到有个请求一直pending&#xff0c;结合用户描述&#xff0c;页面一直loading,似乎验证了我的怀疑&#xff1a;后端迟迟没有相应。 但是…

【工作笔记-0038】mongodb mongorestore 命令行导入 bson.gz数据

1. 导出的集合文件格式如下&#xff08;也就是导出的表文件&#xff09;&#xff1a; 例如&#xff1a; D:\Files\xxxx集合名称.bson.gz 怎样导出&#xff0c;这里不做介绍&#xff0c;用 mongodb compass 或者 studio 3t 都可以 2. 下载命令行导入工具&#xff1a; 官方…

webpack(一)模块化

模块化演变过程 阶段一&#xff1a;基于文件的划分模块方式 概念&#xff1a;将每个功能和相关数据状态分别放在单独的文件里 约定每一个文件就是一个单独的模块&#xff0c;使用每个模块&#xff0c;直接调用这个模块的成员 缺点&#xff1a;所有的成员都可以在模块外被访问和…

Redis发布订阅

Redis发布订阅 Redis 发布订阅(pub/sub)是一种 消息通信模式&#xff1a;发送者(pub)发送消息&#xff0c;订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。 订阅/发布消息图&#xff1a; 下图展示了频道 channel1 &#xff0c; 以及订阅这个频道的三个客户端 —…

时间范围选择时选中日期所使用的当日内具体时刻 如00:00:00= 23:59:59

<el-form-item label"审核时间&#xff1a;"><el-date-pickerv-model"auditTime"type"datetimerange"range-separator"至"value-format"yyyy-MM-dd HH:mm:ss"start-placeholder"开始日期"end-placeholde…

智慧园区方案:AI与视频融合技术如何助力园区监管智能化升级?

一、行业背景 随着科技的不断发展&#xff0c;人工智能&#xff08;AI&#xff09;技术正在各个领域迅速应用和推广。其中&#xff0c;智慧园区是一个重要的应用场景&#xff0c;它通过AI技术的支持&#xff0c;实现了园区的智能化管理和高效运营。 1、园区管理智慧化升级需求…

Centos7 安装Docker管理工具Portainer

0、前提条件 已安装Docker并且开启Docker&#xff0c;安装Docker可参见&#xff1a;Centos7 安装 Docker_瘦身小蚂蚁的博客-CSDN博客 1、 拉取portainer-ce镜像 docker pull portainer/portainer-ce:latest [rootlocalhost ~]# docker pull portainer/portainer-ce:latest la…