zoukankan      html  css  js  c++  java
  • Linux部署vue前端+Springboot后端项目

    简介

    记录手动部署前端,后端的过程和一些坑。

    前端部署

    前端项目使用Umi打包
    部署参考了: Ant Design
    选择了前后端分离部署,即使用nginx服务器。

    安装nginx

    yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
    
    wget -c https://nginx.org/download/nginx-1.11.6.tar.gz
    
    tar -zxvf nginx-1.11.6.tar.gz
    
    cd nginx-1.11.6
    
    ./configure --prefix=/work/nginx
    
    make && make install
    

    Nginx配置文件

    #user  nobody;
    worker_processes  1;
    
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
        server {
            listen       8000;
            server_name  172.168.122.1;
            
            # gzip config
            gzip on;
            gzip_min_length 1k;
            gzip_comp_level 9;
            gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
            gzip_vary on;
            gzip_disable "MSIE [1-6].";        
    
            #charset koi8-r;
    
    	#root目录 (前端项目编译好的dist文件放置目录)
            root /work/deploy/dist1;
    	
            #index index.html;
    
    
            # 用于配合 browserHistory 使用,配置路由,使所有uri重定向到index.html
            location / {
    	        try_files $uri $uri/ @fallback; 
    	        #try_files $uri $uri/ /index.html; # 该配置适合 hashHistory 使用
    			
    			index index.html;
    			
    	        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;
    	    }
    		
    		# 重定向路由
    	    location @fallback {
    		# 因为前端配置了 contextPath=logs 正确写法如下
    	        rewrite ^.*$ /logs/index.html break; 
    			
    		#rewrite ^.*$ /index.html break; # 报错500,因为项目中设置上下文路径是 /logs
    	    }
    		
    	    # 精确匹配 http://172.168.122.1:8000/ 的情况,使其能重定向路由
    	    location =/ {
    	        rewrite ^.*$ /logs/ui/index.html break;
    	    }
    		
     	# 后端项目部署的接口api代理
            location /api {
               proxy_pass http://172.168.122.1:8088/logs;
               proxy_set_header   X-Forwarded-Proto $scheme;
               proxy_set_header   X-Real-IP         $remote_addr;
            }
    
    
        }
    
    }
    

    前端Dist文件部署

    要把前端编译好的dist文件放到nginx配置文件中,指定的代理位置

    前端编译好的代码:/work/deploy/dist.zip
    前端Nginx部署目录:/work/deploy/dist1

    自定义的替换dist部署脚本

    dist.sh
    rm -rf /work/deploy/dist1
    unzip /work/deploy/dist.zip
    mkdir -p /work/deploy/dist1/logs/ui
    cp /work/deploy/dist/* /work/deploy/dist1/logs/ui
    rm -rf  /work/deploy/dist
    

    最后启动nginx前端即部署完毕。

    此时前端访问链接:http://172.168.122.1:8000/logs/index.html

    后续要重新部署前端新编译的代码,直接执行dist.sh替换新的dist文件即可。

    问题:访问页面出现404或500

    比如访问:http://172.168.122.1:8000/logs/detail.html

    原因可能是:
    前端配置了上下文路径 contextPath=logs

    但是,Nginx没有配置重定向路由 @fallback,或者@fallback的rewrite中漏加上 logs 的上下文路径

    另一种方式,使用Hash
    这种方式可以不配置重定向路由 @fallback

    但是,此时访问的url地址会变成这个样子:
    http://172.168.122.1:8000/logs/index.html#/logs/detail.html

    后端部署

    Springboot打的logs.jar包上传到服务器
    上传目录:/work/deploy

    执行自定义部署脚本startup.sh

    startup.sh
    #!/bin/bash
    #设置Java包名称,部署路径
    NAME=logs.jar
    DIR=/work/deploy/
    echo $DIR$NAME
    
    pkill -f $DIR$NAME
    
    cd $DIR
    pwd
    nohup java -jar $DIR$NAME > msg.log 2>&1 &
    echo "start success!"
    
  • 相关阅读:
    测试思想-测试方法 常用测试操作手段
    测试思想-测试执行 缺陷提交,优先级
    loadrunner 技巧-模拟Run Logic中的随机Action运行
    loadrunner 脚本开发-执行操作系统命令
    测试思想-测试执行 测试过程中的用例维护
    测试思想-测试执行 如何进行回归测试?
    python 全栈开发,Day62(外键的变种(三种关系),数据的增删改,单表查询,多表查询)
    python 全栈开发,Day61(库的操作,表的操作,数据类型,数据类型(2),完整性约束)
    python 全栈开发,Day60(MySQL的前戏,数据库概述,MySQL安装和基本管理,初识MySQL语句)
    python 全栈开发,Day59(小米商城)
  • 原文地址:https://www.cnblogs.com/levi125/p/13970239.html
Copyright © 2011-2022 走看看