独立开发者系列(34)——node项目部署

news2024/11/14 11:30:54

  本节梳理node项目的部署,搭建一个外部能正常访问的node网站。将开发好的项目搭建到系统里面。Node的部署比PHP版本要复杂一些。部署项目前要理解几个概念。Nodejs版本管理器概念。

   NVM概念,我们平时开发是在本地电脑上开发,开发的时候,版本是限定的一个版本,比如当前我自己电脑环境是v.20


但是很多扩展和包是基于标准的v16.20版本创建的,这个时候,我又要去下载对应的版本包,否则可能项目跑的时候,版本号对不上,导致出现问题。相比而言,php版本号比较固定,兼容性比较好。

这个时候我们需要一个能管理本地nodejs版本的工具,node version Manger  多版本管理。
 

部署node项目的时候,由于node版本太多,每个版本都有不同的库和产生,所以nvm几乎成了项目必备的部署工具。安装nvm基础流程:
1.下载 nvm 到电脑上 完成安装。

如果是Linux环境下下载安装nvm(按照官网推荐的Linux命令)

2.查看当前已经安装了的node的版本
nvm list  就可以看到当前已经安装的node版本。Node版本太高,会导致大部分的Linux运行不支持。
对于Linux 有个特别头疼的问题,就是centOS8.0以下安装不了node 18版本。这也就是为什么看到的很多项目开发都是基于16.XX开头的版本,否则你开发出来的代码,在很多服务器上运行不了。这算是node部署里面的一个大坑

Nvm 常用命令:

nvm list available (当前全部可以安装的版本)
nvm install  xxxx (安装指定的版本 方便部署很多历史项目)

nvm use xxxx  (使用某个版本号)

3.如果只是简单跑项目,建议使用BT面板,点击软件商店 输入node

可以看到nodejs版本管理器,更新列表,可以查到对应项目支持的nodeJS版本 这个非常重要(我们需要根据项目对应的node版本来进行切换)。

选择当前环境可以运行的版本,node  npm。

4.node项目说明
如果是自己需要创建一个node项目
node项目结构的说明: node项目是依赖package.json运行的,没有该文件系统运行的时候是会报错的

如果是新开发项目 需要 npm  init ,这样会产生一个初始化的项目,会把包的名字和相关信息进行填写。

说明包,而且每次引入了新包,或者安装了installl 新的包,会自动加入到package.json里面

这里补充下部署包的相关说明:

{

  "name": "my-node-app",            // 项目名称

  "version": "1.0.0",               // 项目版本号

  "description": "A simple Node.js application",  // 项目描述

  "main": "index.js",               // 入口文件路径,通常是主要的JavaScript文件

  "scripts": {

    "start": "node index.js",       // 定义启动应用程序的命令

    "test": "echo \"Error: no test specified\" && exit 1"  // 定义运行测试的命令

  },

  "keywords": [

    "node",

    "javascript",

    "example"

  ],

  "author": "Your Name",            // 项目作者姓名或组织名称

  "license": "MIT",                 // 项目许可证类型

  "dependencies": {                 // 生产环境依赖模块及版本

    "express": "^4.17.1",           // 示例依赖的Express框架,版本号是4.17.1或以上

    "body-parser": "^1.19.0"       // 示例依赖的body-parser中间件,版本号是1.19.0或以上

  },

  "devDependencies": {              // 开发环境依赖模块及版本

    "nodemon": "^2.0.7"             // 示例依赖的nodemon工具,版本号是2.0.7或以上

  }

}

5.部署一个express简单模板项目到服务器上(express框架相对比较通用)
pnmp  install express  -g  (安装express框架)
pnmp  install express-generator  -g  (安装express的项目框架生成器,类似python里面的scrapy)

express --view=pug   安装好一个测试的试图

然后服务器打开
127.0.0.1:3000

部署到服务器上去 将防火墙的3000端口打开,可以看到服务器里面IP:3000端口已经打开运行

总结下node项目部署流程:
本地下载项目框架(或者下载需要开发的源码)——开发完成——打包移除node_modules (使用git更方便)——在服务器上拉取代码——宝塔里面安装node版本管理器——选定对应的运行版本——创建项目目录(上传文件的目录)——启动项目——放行端口——可以访问对应的项目了

这样一个基本的node后端项目部署就完成。之前是照猫画虎,不是很熟悉,现在这次彻底走通流程,弄懂每一步的原理,也并没有想的那么难。但是确实比php项目的部署复杂一截。所以才推荐使用docker安装node项目,docker安装项目后面再详解。

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

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

相关文章

计算机毕业设计:基于SSM的宠物领养系统

私信获取完整代码 一、选题背景介绍 📖☕️🌊📝📚🎩🚀📣 🎩 宠物领养系统:帮助爱宠人士更好的去查看可以领养的宠物,帮助宣传相关保护宠物相关知识 &…

PHP家政系统自营+多商户独立端口系统源码小程序

家政行业的新篇章 引言:家政行业的数字化转型 近年来,随着科技的飞速发展和人们生活节奏的加快,家政服务行业也迎来了数字化转型的浪潮。为了提升服务效率、优化用户体验,越来越多的家政公司开始探索“家政系统自营多商户小程序…

Qt Designer的父子部件样式表设置学习

在Qt Designer中新建图像界面,放置两个QWidget,命名为widget_1和widget_2;两个QPushButton,pushButton_1和pushButton_2。 它们的父子从属关系如下: 设置widget_1的样式表: QWidget{ background-color: r…

lua 游戏架构 之 游戏 AI (八)ai_tbl 行为和优先级

定义一系列的AI行为类型和它们的优先级,以及一个映射表ai_tbl来关联每种AI行为类型与对应的脚本文件和优先级。以下是对代码的详细解释: lua 游戏架构 之 游戏 AI (一)ai_base-CSDN博客https://blog.csdn.net/heyuchang666/artic…

构建现代化农业产业服务平台的系统架构

随着全球农业产业的发展和技术的进步,农业生产管理面临着越来越复杂的挑战和机遇。建立一个现代化的农业产业服务平台系统架构,不仅能够提高农业生产效率和管理水平,还能促进农民收入增长和可持续发展。本文将探讨如何设计和实施这样一个系统…

git配置环境变量

一.找到git安装目录 打开此git安装目录下的bin文件,复制此文件路径 二.配置环境变量 2.1 右键点击此电脑的属性栏 2.2 点击高级系统配置 2.3 点击环境变量 2.4 按图中步骤进行配置 三.配置完成 win r 输入cmd打开终端 终端页面中输入 git --version 如图所示…

PySide(PyQt)的QPropertyAnimation(属性动画)

学不完,根本学不完:(,感觉逐渐陷入了学习深渊。。。 QPropertyAnimation 是 PySide(PyQt) 中一个用于在时间轴上平滑地改变对象属性的类。它常用于制作动画效果,比如移动、缩放或改变透明度等。 基本概念 QPropertyAnimation 是 Qt …

文件包含漏洞--pyload

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.PHP伪协议利用 php://协议 php://filter :用于在读取作用和写入文件时进行过滤和转换操作。 作用1:利用base64编码过滤器读取源码 通常利用文件包含执行php://filte…

17.5【C语言】static的补充说明

static &#xff08;静态的) 作用&#xff1a;修饰局部变量&#xff0c;修饰全局变量&#xff0c;修饰函数 对比两段代码 #include <stdio.h> void test() {int a 5;a;printf("%d ", a); } int main() {int i 0;for(i0; i<5; i){test();}return 0; } …

ElasticSearch(三)—文档字段参数设置以及元字段

一、 字段参数设置 analyzer&#xff1a; 指定分词器。elasticsearch 是一款支持全文检索的分布式存储系统&#xff0c;对于 text类型的字段&#xff0c;首先会使用分词器进行分词&#xff0c;然后将分词后的词根一个一个存储在倒排索引中&#xff0c;后续查询主要是针对词根…

【H.264】H.264详解(二)—— H264视频码流解析示例源码

文章目录 一、前言二、示例源码【1】目录结构【2】Makefile源码【3】h264parser.c源码【4】编译运行【5】源码下载地址 声明&#xff1a;此篇示例源码非原创&#xff0c;原作者雷霄骅。雷霄骅&#xff0c;中国传媒大学通信与信息系统专业博士生&#xff0c;在此向雷霄骅雷神致敬…

SEO与数据中心代理IP的结合能带来哪些便利?

本文将探讨将SEO与数据中心代理IP结合所带来的好处&#xff0c;以及如何利用这种组合来提升网站在搜索引擎中的排名和可见性。 1. 数据中心代理IP的作用和优势 数据中心代理IP指的是由数据中心提供的IP地址&#xff0c;用于隐藏真实服务器的位置和身份。与其他类型的代理IP相…

FFmpeg解复用器如何从封装格式中解析出不同的音视频数据

目录 1、ffmpeg介绍 2、FFMPEG的目录结构 3、FFmpeg的格式封装与分离 3.1、数据结构 3.2、封装和分离(muxer和demuxer) 3.2.1、Demuxer流程 3.2.2、Muxer流程 4、总结 4.1、播放器 4.2、转码器 C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续…

【CN】Argo 持续集成和交付(一)

1.简介 Argo 英 [ˈɑ:ɡəu] 美 [ˈɑrˌɡo] Kubernetes 原生工具&#xff0c;用于运行工作流程、管理集群以及正确执行 GitOps。 Argo 于 2020 年 3 月 26 日被 CNCF 接受为孵化成熟度级别&#xff0c;然后于 2022 年 12 月 6 日转移到毕业成熟度级别。 argoproj.github.i…

活动预告|8月3日 Streaming Lakehouse Meetup · Online 与你相约!

随着大数据分析技术的发展&#xff0c;越来越多的企业采用了数据湖架构。基于 Lakehouse 的架构优势&#xff0c;结合 Flink 的 Streaming 实时流处理能力&#xff0c;Flink 推出了新一代的“Streaming Lakehouse”技术。这一技术旨在能够让数据在湖上自由流动&#xff0c;为用…

03.C++类和对象(上)

1.类的定义 1.1类定义格式 • class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{}中为类的主体&#xff0c;注意类定义结束时后面分号不能省略。类体中内容称为类的成员&#xff1a;类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。 …

【电子数据取证】PC端Telegram导出聊天数据的具体操作步骤

文章关键词&#xff1a;电子数据取证、手机取证、电脑取证 一、前言 在面临手机数据提取限制&#xff0c;尤其是当Telegram应用数据因手机备份障碍而难以直接取证时&#xff0c;本教程专注于传授一招实用技巧。我们将指导您如何利用电脑端登录Telegram&#xff0c;巧妙运用其…

Vue3二次封装axios

官网: https://www.axios-http.cn/docs/interceptors steps1: 安装 npm install axios -ssteps2: /src/api/request.js 文件 >>> 拦截器 import axios from axios // 如果没用element-plus就不引入 import { ElMessage } from element-plusconst service axios.cre…

如何系统的学习C++和自动驾驶算法

给大家分享一下我的学习C和自动驾驶算法视频&#xff0c;收藏订阅都很高。打开下面的链接&#xff0c;就可以看到所有的合集了&#xff0c;订阅一下&#xff0c;下次就能找到了。 【C面试100问】第七十四问&#xff1a;STL中既然有了vector为什么还需要array STL中既然有了vec…

Springboot项目的行为验证码AJ-Captcha(源码解读)

目录 前言1. 复用验证码2. 源码解读2.1 先走DefaultCaptchaServiceImpl类2.2 核心ClickWordCaptchaServiceImpl类 3. 具体使用 前言 对于Java的基本知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目…