前后端分离Web项目 - 环境部署流程

news/2024/5/17 16:59:35/文章来源:https://www.cnblogs.com/huangkenicole/p/16607090.html

准备环境

  1. 购买一个云服务器(我用的是Amazon的Ubuntu),并记录/查询当前用户ubuntu的公网IP。

    • 登录服务器后查询Ubuntu公网IP::curl ifconfig.me (如果没有 curl ,先安装一下: sudo apt-get install curl

    • PS:服务器需要提前安装好前后端需要的包,比如相关sdk,runtime,一些框架等。

  2. 查看npm和node是否安装:

    npm -v
    node -v
    
  3. 本地前后端分离项目(我用的是ASP.NET Core WebAPI + React等)前端项目名:my-webapp.zip,后端项目名:TestWebAPI.zip

本地项目上传到服务器

  1. 在ubuntu上~目录下新建一个目录testapi-deploy

    mkdir testapi-deploy
    cd testapi-deploy
    
  2. 在本地Terminal中执行命令scp -r 本地前端项目路径 本地后端项目路径 服务器用户名@公网IP:需要上传到的目录路径(不要在服务器上执行,否则会报以下错误),然后输入服务器密码。

  3. 在服务器上查看是否已经成功上传

  4. 解压文件(unzip好像不能批量解压)

    unzip my-webapp.zip
    unzip TestWebAPI.zip
    

服务器运行后端项目

  1. 进入项目目录:cd TestWebAPI/TestWebAPI。(因为是dotnet项目,其他不同后端项目根据文件路径进入文件)

  2. 运行项目.NET项目:dotnet run 。(根据后端技术选择运行命令)

  3. 运行成功如下图所示,监听端口为 50005001

nohup把进程放入后台运行

问题1:因为前后端分离项目,我们需要先运行后端,才能跑前端代码,但是如果新开一个terminal重新ssh连接服务器运行前端代码的话,会报错。(即:后端项目在ubuntu运行的时候怎么运行前端项目)

问题2:一旦关闭Terminal,会发现所有进程都被杀死了,后端服务立刻停止。

如何解决? -> 我们需要把后端项目的服务放在后台运行,使用 nohup 命令。nohup 把一个进程放到后台去运行而不会被关闭(即:如何在terminal关闭后始终保持服务运行)

具体解决步骤:回到放前后端项目的目录下,执行 nohup dotnet run & ,回车后会在当前目录下输出一个 nohup.out 的日志文件(如果在本地文件中指定输出内容的话该文件就是那些内容,比如“当前服务已经监听到..端口”)。执行成功如下图所示:

服务器运行前端项目

进入前端项目目录下,执行以下命令,执行成功如下图所示:(我用的react,所以用 npm start 运行,如果是其他前端技术,则根据情况修改此行)

cd my-webapp
npm start

配置服务器端口开放(安全组)

  1. 问题:我们用 公网IP:端口号 访问网页,发现网页仍然无法访问

  2. 原因:公网对应的我们需要的3000端口没有开放,需去服务器官网配置

  3. 我用的服务器是亚马逊的,亚马逊的安全组端口配置流程:https://www.cnblogs.com/huangkenicole/p/16607079.html

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

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

相关文章

学习:python 程序打包exe文件

python 程序打包 exe.py 首先要安裝模块 pip install pyinstaller 按住shift 右鍵 打开命令窗口 -输入命令 intaller -F 文件名.py,等待执行完成后,文件夹内会多一个dist文件,打开文件夹可看到已经打包好的exe文件 运行成功 如果程序图片等文件需要将图片等文件与exe文件放…

牛客小白月赛55 A-E

AlCu牛客小白月赛55 A-E https://ac.nowcoder.com/acm/contest/38630 F待补 解析啥的睡醒再补,先放个代码 A - 至至子的等差中项 #include <bits/stdc++.h>using namespace std;int main () {int a, b;cin >> a >> b;cout << 2*b-a; }B - 至至子的按…

图的存储

图的存储邻接矩阵它是利用矩阵的二维结构,使其中的一维代表其中一个端点,另一维代表另一个端点。 scanf("%d",&m); memset(G,0,sizeof(G)); for(int i=1;i<=m;++i) {scanf("%d%d",&x,&y);G[x][y]=G[y][x]=1;//无向图 } 缺点:空间占用太大…

字母-英文字母怎么产生的:一千字带你了解字母的起源和发展

参考: https://baijiahao.baidu.com/s?id=1723733095013625072&wfr=spider&for=pc在世界历史上,约公元前3500年就出现文字,最早出现的是古埃及的象形文字,也有人说是苏美尔人的楔形文字。不过,据史料记载,两种形式的文字相差时间不长,可以说是同时产生,但两者…

redis(2)

redis的简单抽象模型:文件事件处理器===>保证redis单线程多个socket ------->>>service socket 请求--->>------->>>io多路复用程序------->>>队列------->>>文件处理分派器------->>>各种事件处理器:1.事件请求处理器…

未注册单字母域名——.top篇

服务项目技术咨询微信图书微信视频微信代码定制开发其他福利服务入口QQ群有问必答查看详情一本书解决90%问题查看详情微信开发视频小程序开发视频免费代码¥1888阿里云代金券查看详情营销工具微信特异功能

生成JavaDoc

1.第一步:首先创建一个新的文件夹。2.第二步:选中所要生成的包。3.第三步:点击键盘shift两下,搜索tools,并选择生成javadoc(Generate JavaDoc)这个选项。4.第四部:红色圈的都得写上,①然后会弹出一个界面,然后在输出目录(Output directory )输入框后面的按钮点击进…

前端框架(Front-end Framework)和库(Library)的区别

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

Python glob

参考文章&#xff1a; Python 中glob.glob()、glob.iglob&#xff08;&#xff09;的使用-CSDN博客 Python 中glob.glob()的使用 glob.glob(path)的功能&#xff1a; 返回符合path格式的所有文件的路径&#xff0c;以list存储返回。 path的表示方法&#xff1a; 利用匹配符…

Unity实现GoF23种设计模式

文章目录 Unity实现GoF23种设计模式概要一、创建型模式(Creational Patterns):二、结构型模式(Structural Patterns):三、行为型模式(Behavioral Patterns):Unity实现GoF23种设计模式概要 GoF所提出的23种设计模式主要基于以下面向对象设计原则: 对接口编程而不是对实…

听GPT 讲Rust源代码--src/tools(14)

File: rust/src/tools/rust-analyzer/crates/cfg/src/lib.rs 在Rust源代码中&#xff0c;rust/src/tools/rust-analyzer/crates/cfg/src/lib.rs这个文件是Rust语言分析器&#xff08;Rust Analyzer&#xff09;的一部分&#xff0c;用于处理和管理条件编译指令&#xff08;Cond…

视频推拉流平台EasyDSS点播文件播放请求添加token验证的实现方法

EasyDSS视频直播点播平台可提供一站式的视频推拉流、转码、点播、直播、播放H.265编码视频等服务&#xff0c;搭配RTMP高清摄像头使用&#xff0c;可将设备的实时流推送到平台上&#xff0c;实现无人机视频推流直播等应用。今天我们来介绍下EasyDSS系统点播文件播放请求添加tok…

1846_安全SPI

Grey 全部学习内容汇总&#xff1a;GitHub - GreyZhang/g_embedded: some embedded basic knowledge. 1846_安全SPI SPI是一种常见的通信方式&#xff0c;在汽车电子中比较常用。但是如果涉及到安全相关的设计&#xff0c;可能得考虑更多。而SPI协议本身没有很好的标准化&am…

【AI】YOLO学习笔记

作为经典的图像识别网络模型&#xff0c;学习YOLO的过程也是了解图像识别的发展过程&#xff0c;对于初学者来说&#xff0c;也可以了解所采用算法的来龙去脉&#xff0c;构建解决问题的思路。 1.YOLO V1 论文地址&#xff1a;https://arxiv.org/abs/1506.02640 YOLO&#x…

电机的开环控制和闭环控制

目录 开环电机控制 闭环电机控制 开环到闭环转换 开环电机控制 开环控制&#xff08;也称为标量控制或伏特/赫兹控制&#xff09;是一种常见的电机控制方法&#xff0c;可用于运行任何交流电机。这是一种简单的方法&#xff0c;不需要来自电机的任何反馈。为了保持定子磁通恒…

工业性能CCD图像处理+

目录 硬件部分 ​编辑 软件部分 CCD新相机的调试处理&#xff08;更换相机处理&#xff0c;都要点执行检测来查看图像变化&#xff09; 问题:新相机拍摄出现黑屏&#xff0c;图像拍摄不清晰&#xff0c;&#xff08;可以点击图像&#xff0c;向下转动鼠标的滚轮&#xff08…

音视频技术开发周刊 | 323

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 Meta牵头组建开源「AI复仇者联盟」&#xff0c;AMD等盟友800亿美元力战OpenAI英伟达 超过50家科技大厂名校和机构&#xff0c;共同成立了全新的人工智能联盟。以开源为旗号…

Linux 中的网站服务管理

目录 1.安装服务 2.启动服务 3.停止服务 4.重启服务 5.开机自启 6.案例 1.安装服务 网址服务程序 yum insatll httpd -y 查看所有服务 systemctl list-unit-files 2.启动服务 systemctl start httpd 查看服务进程&#xff0c;确认是否启动 ps -ef|grep httpd 3.停止…

Github与Gitlab

学习目标 能够使用GitHub创建远程仓库并使用能够安装部署GitLab服务器能够使用GitLab创建仓库并使用掌握CI/CD的概念掌握蓝绿部署, 滚动更新,灰度发布的概念 GitHub是目前最火的开源项目代码托管平台。它是基于web的Git仓库&#xff0c;提供公有仓库和私有仓库&#xff0c;但私…

智能优化算法应用:基于群居蜘蛛算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于群居蜘蛛算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于群居蜘蛛算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.群居蜘蛛算法4.实验参数设定5.算法结果6.…