当前位置: 首页 > news >正文

在windows服务器上部署一个单机项目以及前后端分离项目

目录

一. 单机项目在windows服务器上的部署

1.1 在本机上测试项目无误

1.1.1 在数据库中测试sql文件没问题

1.1.2 在tomcat中测试war文件无误

1.1.3 测试完成后,进入浏览器运行单机项目确保无误

1.2 在windows服务器中运行项目

二. 前后端分离项目在服务器上的部署

2.1 在本机上进行测试

2.2 在服务器上进行项目部署

2.3 nodejs环境搭建

2.4 项目部署 


一. 单机项目在windows服务器上的部署

注意:无论是单机项目还是前后端分离项目,在部署前要确保有sql文件和war文件,并在本机上进行测试确保无误,再在服务器上完成部署。

1.1 在本机上测试项目无误

1.1.1 在数据库中测试sql文件没问题

新建一个数据库,将要用到的单机项目的sql文件运行,显示0错误则表示该脚本无误。

1.1.2 在tomcat中测试war文件无误

将单机项目的war文件放入到tomcat的webapps文件夹下,然后返回到bin目录,运行bin文件夹下的startup.bat,黑窗口运行结束则代表没问题。

1.1.3 测试完成后,进入浏览器运行单机项目确保无误

注意:war文件测试后,黑窗口先不要关闭,否则项目运行不了

1.2 在windows服务器中运行项目

 \\+服务器ip地址  ,进入服务器创建的文件夹,将项目压缩包导入。

然后在windows服务器上将项目提取出来,如果是中文目录,将其改为非中文目录,防止后面出错。

在本机的navicat中,记得在远程连接的数据库中导入sql文件

 

 在windows服务器上,将war文件同样放入到tomcat下的webapps文件夹中

然后运行bin文件夹下的startup.bat

这里要注意,项目配置文件中的数据库密码要与本机数据库的一致 

然后再浏览器上运行该项目

 

二. 前后端分离项目在服务器上的部署

2.1 在本机上进行测试

与单机项目一样的进行war文件的测试,将war文件放入webapps文件夹中,然后运行bin文件夹下的statrup.bat

后端测试成功:

这里会显示错误是因为开了jwt认证 

前端测试

在spa项目目录下输入cmd打开黑窗口,输入npm run dev 运行该项目

 测试成功:

2.2 在服务器上进行项目部署

同样的,先将压缩包提取,然后将war文件放入到tomcat的webapps文件夹下,然后运行bin文件夹下的startup.bat

在运行sql文件前,可以先在解压出来的项目中,确定端口号和数据库

 

2.3 nodejs环境搭建

将nodejs压缩包提取,再解压后的目录建立两个文件夹node_global和node_cache

目录说明:

        node_global : npm全局安装位置

        node_cache : npm缓存路径

配置环境变量

新建NODE_HOME

编辑path ;%NODE_HOME%;%NODE_HOME%\node_global;

查看环境变量

win+r➡cmd➡node -v 

配置npm全局模块路径和cache默认安装位置

打开cmd,分开执行如下命令:
      npm config set cache "C:\software\node-v18.16.1-win-x64\node-v18.16.1-win-x64\node_global"
      npm config set prefix "C:\software\node-v18.16.1-win-x64\node-v18.16.1-win-x64\node_cache"

 设置淘宝源

npm config set registry https://registry.npm.taobao.org/

2.4 项目部署 

 这里接下来会出现一个问题,在本机上服务器中部署的项目应用访问不了,在服务器内部是可以访问的。

原因是nodejs中spa项目做了限制,这个限制类似于mysql中localhost设置,没有被解析成ip。

解决方案1:

在服务器中利用nginx架设反向代理服务器,用80去代理81

在nginx文件中找到nginx.conf 文件,将文件中的 location 进行修改,将端口代理访问

location / {
            #root   html;
        proxy_pass   http://localhost:8081;
            index  index.html index.htm;
        }

修改后重启 nginx.exe -s reload

nginx.conf


#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  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {proxy_pass   http://localhost:8081;}#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's document root# concurs with nginx's 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##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;#    }#}}

解决方案2:

在前端项目的路径中,找到index.js文件,将端口改为开放式的端口,在前端路径下的跟目录中的 config 文件中.

打开 index. js 文件,找到 location  配置端口的位置,修改为 : 0.0.0.0

相关文章:

在windows服务器上部署一个单机项目以及前后端分离项目

目录 一. 单机项目在windows服务器上的部署 1.1 在本机上测试项目无误 1.1.1 在数据库中测试sql文件没问题 1.1.2 在tomcat中测试war文件无误 1.1.3 测试完成后,进入浏览器运行单机项目确保无误 1.2 在windows服务器中运行项目 二. 前后端分离项目在服务器上…...

使用jdbc技术,在数据库中存储大数据对象(使用字节IO流读取图片等给blob等二进制类型数据赋值)

在MySQL中,BLOB是一种数据类型,代表二进制大对象(Binary Large Object),可以存储大量的二进制数据,如图像、声音、视频等。BLOB类型的数据在存储和检索时会以二进制方式进行处理,而不是字符方式…...

统计学习方法 支持向量机(下)

文章目录 统计学习方法 支持向量机(下)非线性支持向量机与和核函数核技巧正定核常用核函数非线性 SVM 序列最小最优化算法两个变量二次规划的求解方法变量的选择方法SMO 算法 统计学习方法 支持向量机(下) 学习李航的《统计学习方…...

【python】如何注释

一:通过#注释行 #这个是个注释 print(hello world) 二:通过或"""注释段落 这个注释段落 这是注释段落 这是注释段落print(hello world) """ 这是多行注释,用三个双引号 这是多行注释,用三个双引…...

C++——C++入门(二)

C 前言一、引用引用概念引用特性常引用使用场景传值、传引用效率比较值和引用的作为返回值类型的性能比较 引用和指针的区别 二、内联函数概念特性知识点提升 三、auto关键字类型别名思考auto简介auto的使用细则auto不能推导的场景 四、基于范围的for循环范围for的语法范围for的…...

容联七陌百度营销通BCP解决方案,让营销更精准

百度营销通作为一个快速迭代、满足客户多元化营销需求的高效率营销工具成为众多企业的选择,通过百度营销通BCP对接,企业就可以在百度咨询页接入会话,收集百度来源的访客搜索关键词,通过百度推广获取更多的精准客户,从而…...

Transformer模型 | 用于目标检测的视觉Transformers训练策略

基于视觉的Transformer在预测准确的3D边界盒方面在自动驾驶感知模块中显示出巨大的应用,因为它具有强大的建模视觉特征之间远程依赖关系的能力。然而,最初为语言模型设计的变形金刚主要关注的是性能准确性,而不是推理时间预算。对于像自动驾驶这样的安全关键系统,车载计算机…...

贪心区间类题目

一、先排序 1、一般统计有几个重复区间、判断是否有重复区间,对右边界经行排序。 2、合并区间,对左边界经行排序,且尽量想到先放入一个元素到res中,然后不断更新res的右边界 二、判断重复 判断i是否和i-1重复,如果…...

npm改变npm缓存路径和改变环境变量

在安装nodejs时,系统会自动安装在系统盘C, 时间久了经常会遇到C盘爆满,有时候出现红色,此时才发现很多时候是因为npm 缓存保存在C盘导致的,下面就介绍下如何改变npm缓存路径。 1、首先找到安装nodejs的路径&#xff0c…...

string到QString出现中文乱码

【C】string 和 QString 之间的转化及乱码问题(非常实用)_string转qstring乱码_散修-小胖子的博客-CSDN博客 std::string str "连111";QString str1 QString::fromStdString(str);qDebug() << str1;//中文乱码QString str2 QString::fromLocal8Bit(str.data…...

【Linux精讲系列】——yum软件包管理

​作者主页 &#x1f4da;lovewold少个r博客主页 ⚠️本文重点&#xff1a;Linux系统软件包管理工具yum讲解 &#x1f604;每日一言&#xff1a;踏向彼岸的每一步&#xff0c;都是到达彼岸本身。 目录 前言 Linux系统下的软件下载方式 yum 查看软件包 如何安装软件 如何卸…...

浅谈一下Vue3的TreeShaking特性

什么是Treeshaking&#xff1f; Treeshaking是一个术语,通常用于描述移除JavaScript中无用代码的过程。 在Vue3中,借助于它的编译优化,可以显著减少打包后的大小。 Vue3的Treeshaking实现 Vue3中的Treeshaking主要通过以下两点实现: 源码级的Tree-shaking Vue3源码采用ES mo…...

【牛牛送书 | 第二期】《ChatGPT 驱动软件开发:AI 在软件研发全流程中的革新与实践》

目录 前言&#xff1a; 本书目录&#xff1a; 内容简介&#xff1a; 专家评价&#xff1a; 适合对象&#xff1a; 送书规则&#xff1a; 前言&#xff1a; 现如今&#xff0c;随着计算机技术的不断发展和互联网的普及&#xff0c;我们已经迈入了一个高效的信息处理和传…...

Qt基础之三十九:Qt Creator调试技巧

目录 一.开始调试(F5) 二.调试dll 1.Attach to Running Application 2.Attach to Unstarted Application 3.Start and Debug External Application...

Docker Nginx安装使用以及踩坑点总结

Docker Nginx安装使用以及踩坑点总结 拉取nginx镜像 docker pull nginx:latest运行镜像 暂时不需要配置volume挂载 docker run --name nginx -p 80:80 -d nginx参数详解&#xff1a; --name nginx 指定容器的名称 -p 80:80 映射端口 -d 守护进程运行 创建volume目录 mk…...

单位建数字档案室的意义和作用

单位建立数字档案室的意义和作用包括&#xff1a; 1.提高档案管理效率。数字档案室可以高效地收集、整理和存储电子文档&#xff0c;通过数字化处理&#xff0c;文档的查找和检索速度大幅提升。 2.降低管理成本。数字档案室可以通过节约空间和人力成本&#xff0c;降低管理成本…...

JavaWeb——关于servlet种mapping地址映射的一些问题

6、Servlet 6.4、Mapping问题 一个Servlet可以指定一个映射路径 <servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello</url-pattern> </servlet-mapping>一个Servlet可以指定多个映射路径 <servlet-mapping>&…...

NTRU 加密方案

参考文献&#xff1a; [Rivest97] Rivest R L. All-or-nothing encryption and the package transform[C]//Fast Software Encryption: 4th International Workshop, FSE’97 Haifa, Israel, January 20–22 1997 Proceedings 4. Springer Berlin Heidelberg, 1997: 210-218.[…...

第一章前端开发ES6基础

认识ES6 概述 ES6表示ECMAScript规范的第六版&#xff0c;正式名称为ECMAScript 2015&#xff0c;ECMAScript是由ECMA国际标准组织制定的一项脚本语言的标准规范化&#xff0c;引入了许多新特性和语法。 其中包括箭头函数、let和const声明、类、模板字符串、解构赋值、参数默…...

【算法练习Day30】无重叠区间 划分字母区间合并区间

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 无重叠区间划分字母区间合并…...

WarcraftHelper:魔兽争霸3终极增强插件5分钟快速上手指南

WarcraftHelper&#xff1a;魔兽争霸3终极增强插件5分钟快速上手指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专为魔兽争…...

小米汽车Q3真车现身:科技巨头跨界造车的技术路径与市场挑战

1. 项目概述&#xff1a;从“Q3真车现身”看小米汽车的阶段性成果最近&#xff0c;小米汽车项目代号“Q3”的测试车辆在公开道路上被频繁捕获&#xff0c;这已经不是简单的谍照&#xff0c;而是接近量产状态的“真车”现身。作为一名长期关注汽车产业变革&#xff0c;特别是科技…...

在 1688、阿里国际站上,怎么分清哪些是真工厂、哪些是贸易商?一份采购辨别清单

跨境卖家和采购最常踩的坑&#xff0c;就是把贸易商当成了源头工厂。结果是&#xff1a;报价里多了一手差价、打样要等贸易商再转给后面的厂、出了质量问题没人能进车间整改。 平台上的"工厂认证"“源头工厂”"工厂直供"标签&#xff0c;看起来像是替你做了…...

嘎嘎降AI和率零哪个更适合毕业论文:2026年性价比达标率用户口碑完整横评测试报告

嘎嘎降AI和率零哪个更适合毕业论文&#xff1a;2026年性价比达标率用户口碑完整横评测试报告 帮几个不同专业的同学处理过论文AI率&#xff0c;用过的工具加起来也有六七款了。 综合看&#xff0c;嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;是最稳的选择&#xff0…...

从巨头并购看FPGA技术演进与国产破局之路

1. 从两起世纪并购看FPGA的宿命与价值2015年&#xff0c;英特尔以167亿美元吞下Altera&#xff1b;2022年情人节&#xff0c;AMD用全股票交易正式将赛灵思&#xff08;Xilinx&#xff09;收入囊中。这两起震动半导体行业的并购案&#xff0c;表面看是巨头在“买公司”&#xff…...

告别小白恐惧!用PyCharm+PyQt6从零打造你的第一个桌面应用(附打包exe避坑指南)

告别小白恐惧&#xff01;用PyCharmPyQt6从零打造你的第一个桌面应用&#xff08;附打包exe避坑指南&#xff09; 你是否曾遇到过这样的场景&#xff1a;精心编写的Python脚本需要交给同事使用&#xff0c;但对方却被命令行界面吓退&#xff1f;或是作为数据分析师&#xff0c;…...

django-stubs模型类型检查实战:告别运行时错误的终极指南

django-stubs模型类型检查实战&#xff1a;告别运行时错误的终极指南 【免费下载链接】django-stubs PEP-484 stubs for Django 项目地址: https://gitcode.com/gh_mirrors/dj/django-stubs 在Django开发中&#xff0c;模型定义是核心环节&#xff0c;但传统开发模式下&…...

开源AI代码助手本地化部署:从Cursor10x看私有化编程助手实践

1. 项目概述&#xff1a;当AI代码助手遇上开源社区如果你是一名开发者&#xff0c;最近可能频繁听到一个词&#xff1a;Cursor。这款集成了强大AI能力的代码编辑器&#xff0c;正以惊人的速度改变着许多人的编程习惯。它不再仅仅是一个文本编辑器&#xff0c;更像是一个能理解你…...

STM32单片机如何用IRIG-B解码模块实现10ns级高精度授时(附完整驱动代码)

STM32单片机如何用IRIG-B解码模块实现10ns级高精度授时&#xff08;附完整驱动代码&#xff09; 在工业自动化、电力系统同步、通信基站等对时间精度要求苛刻的领域&#xff0c;微秒级甚至毫秒级的时钟同步已经无法满足需求。IRIG-B作为一种标准时间码格式&#xff0c;通过解码…...

基于LLM与向量数据库的家庭智能体助手:架构、部署与场景实践

1. 项目概述&#xff1a;一个面向家庭的智能体助手最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Home-agent-assistant”。光看名字&#xff0c;你可能会觉得这又是一个智能家居控制中心&#xff0c;或者一个简单的语音助手。但当我深入去研究它的代码和设计理念后&am…...