阿里云服务器部署node项目笔记

news2024/12/27 16:04:46

阿里云部署node项目笔记

      • 此过程中全部安装都按照B站教程实现
        • 本篇是个人笔记,许多细节并未陈述比如开发阿里云对应端口等,不是完整的过程,如有误导在此致歉。
      • 安装node报错
        • linux查看nginx配置文件 使用 nginx -t
      • mongodb数据库安装
        • 解决:降低node和mongodb版本重装
      • nginx部署
        • 打包vue项目放入服务器指定路径

此过程中全部安装都按照B站教程实现

b站视频:https://www.bilibili.com/video/BV1my4y1a7xN/
视频中的笔记:https://www.yuque.com/uyyv8m/linux

本篇是个人笔记,许多细节并未陈述比如开发阿里云对应端口等,不是完整的过程,如有误导在此致歉。

安装node报错

将node的压缩包解压以后一定要改名,一开始看视频里面改名觉得没必要,后面出错了排查不出来,改了文件夹名字以后又对了
在这里插入图片描述

linux查看nginx配置文件 使用 nginx -t

mongodb数据库安装

安装路径:/usr/local
linux下输入完毕后,需要输入命令时应先点esc退出才能 :wq 退出保存!!!
退出mongodb数据库
在这里插入图片描述
以上图片是创建数据库管理员,声明账号密码等
mongo
use admin
db.auth(“账号”,“密码”) //输出1表示连接成功
//创建mybase数据库
use mybase
db.sm.insert({name:“chengchao”}) //在sm表中插入一条数据
可以实现浏览器远程连接,但是不能用compass登录数据库连接
在这里插入图片描述
报错如下
在这里插入图片描述
看网上的方法,修改服务器上/etc/ssh下的sshd_config文件,增加一行“AllowTcpForwarding yes”(通过sudo vim 来修改文件,不清楚此命令的同学请自行搜索),来允许其通过TCP进行连接。然后运行sudo service sshd restart来重启ssh。
在这里插入图片描述
后续:所有的方法都试过了,解决不了,但是我在阿里云部署的mongodb数据库是正常运行的,知识在本地的可视化软件compass连接不上,依然是那个错误:服务器连接驱动版本为4,node的连接驱动版本为6。

解决:降低node和mongodb版本重装

在寻找合适的版本的过程中尝试过很多种(鼠鼠认为此处针对每个人的服务器配置不同可能会有不同的版本),鼠鼠的服务器可能配置较拉(21年阿里云搞新人活动100元买了三年,也是本着学习的态度去买的),这里按照b站视频装的centos7.9版本(他说这个版本比较稳定,那我啥也不懂我肯定听他的)。以下是鼠鼠服务器的配置。
在这里插入图片描述
最后鼠鼠在服务器装的15.9版的node
下载node.js
https://nodejs.org/dist/ 注:这个网站可以查看node各版本的下载地址
我装的是下面这个,也是在csdn看到有前人服务器和我配置差不多,就选择装的一样的(我同学服务器装的14版的很稳定)

wget https://nodejs.org/dist/v15.9.0/node-v15.9.0-linux-x64.tar.gz  //libux下安装命令,没装镜像会慢点,注:cd到对应文件夹下再下载哦
[添加链接描述](https://blog.csdn.net/piaoyangde/article/details/123157649)
tar zxvf node-v15.9.0-linux-x64.tar.gz   //解压,此后记得将解压的文件重命名node(必须,配置环境变量需要这个名字)

然后就是安装对应版本的mongodb,我安装的是linux3.2.11版本,安装的时候下载连接后面+@对应版本即可。
在这里插入图片描述

然后呢还有一个坑,就是在连接mongodb的时候我们需要一个插件–mongoose,这个插件和mongodb也有版本对应问题,乃至我后面改了代码的一些函数。以下是mongodb和mongose的版本对照表,所以我装的是4.7.0版的mongoose,4.7之前的mongoose甚至与3.2版的mongodb出现连接不上的各种依赖不存在的问题

MongoDB Server 2.4.x: mongoose ^3.8 or 4.x
MongoDB Server 2.6.x: mongoose ^3.8.8 or 4.x
MongoDB Server 3.0.x: mongoose ^3.8.22, 4.x, or 5.x
MongoDB Server 3.2.x: mongoose ^4.3.0 or 5.x
MongoDB Server 3.4.x: mongoose ^4.7.3 or 5.x
MongoDB Server 3.6.x: mongoose 5.x
MongoDB Server 4.0.x: mongoose ^5.2.0

当然4.7.0版的mongose也并不完善,比如我在node接口上用的.countDocument()函数就不能用(版本太低),于是我都统一换成了.count()就不报错了。
还有一个promise的报错,添加一条代码

mongoose.Promise=global.Promise

具体看 这篇文章:
https://blog.csdn.net/piaoyangde/article/details/123157649
:鼠鼠也是node开发的菜鸡,因毕设原因才照着视频学了点,具体很多版本和部署问题鼠鼠也不是很明白,鼠鼠也是摸索了半个月才终于装好合适服务器的环境,如果服务器配置够好,应该可以照着我上面b站视频装环境吧,他装的都挺新的。

nginx部署

打包vue项目放入服务器指定路径

比如鼠鼠在npm run build之后用git将dist传到了服务器 /home/www路径下(www自己建的,鼠鼠重装服务器系统后没有再装宝塔,想来宝塔部署项目也在这个路径,鼠鼠也不知道后面安装宝塔会不会有冲突,先记录一下)
vue打包上传鼠鼠参照了这个视频
鼠鼠没有敲第一行命令直接上的第二行,鼠鼠的电脑支持scp命令
但是鼠鼠反复输入了几次才成功,后面发现命令里面的空格也要对应哦

在这里插入图片描述

####关于nginx部署vue项目
鼠鼠参考了这篇文章
鼠鼠nginx的配置文件目路 可以通过hwereis nginx.conf查询
在这里插入图片描述

 server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        location /{
         root         /usr/share/nginx/html;
        }
#        root         /usr/share/nginx/html;
        location /LostAndFound-admin { 
        alias  /home/www/dist/ ; //项目路径
        try_files $uri $uri/  /LostAndFound-admin/index.html;//解决vue单页面应用,在其他路由刷新时404的问题
        index index.html index.htm;
        }
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

部署好了以后记得将nginx重启
好像是 nginx -s reload
在这里插入图片描述
最后提醒一点啊,部署的vue项目的baseurl要写服务器域名(或ip地址),填写localhost或者127.0.0.1都不行
还有一点node跨域的解决方案:
像鼠鼠的跨域是在node后台解决的

app.all("*", (req, res, next) => {  //跨域问题,访不同端口之间的访问
    res.setHeader("Access-Control-Allow-Origin", '*');
    res.setHeader("Access-Control-Allow-Headers", '*');
    /* res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
	res.header("Access-Control-Allow-Headers", "X-Requested-With");
	res.header('Access-Control-Allow-Headers', ['mytoken','Content-Type']); */

    next();
})

网上有三种解决方法,分别是
1.安装cors插件(简单暴力)
2.使用在vue的cli自带的跨域解决方案,写一个虚拟代理服务器转发
3.就是我所用的,在node请求上添加请求头,*号即允许全部请求头

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

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

相关文章

【JAVA】#详细介绍!!! 文件操作之File对象(1)!

本文内容不涉及文件内容操作,主要是对指定文件元信息的获取,以及通过java代码如何创建一个文件或者删除文件 目录 文件操作的File对象 File对象的基本操作方法 得到文件(夹)对象的信息元 1.getParent 2. getName 3.getPath 4…

CentOS 安装与配置Nginx【含修改配置文件】

1.安装Nginx yum install nginx -y2.启动Nginx systemctl start nginx查询是否启动nginx systemctl status nginx3.尝试访问 这是默认的配置文件 # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * …

wordcloud制作词云图

wordcloud制作词云图 wordcloud中文方框问题 jieba(分词)jieba库分词的三种模式 wordcloud WordCloud(font_pathNone, width400, height-200,margin2,maskNone, max_words200, min_font_size4, stopwordsNone,background_colorblack, max_font_sizeNone…

js中setinterval怎么用?怎么才能让setinterval停下来?

setinterval()是定时调用的函数,可按照指定的周期(以毫秒计)来调用函数或计算表达式。 setinterval()的作用是在播放动画的时,每隔一定时间就调用函数,方法或对象。 setInterval() 方法会不停地调用函数,…

浙大数据结构与算法一些有意思的理论基础题

堆栈 有人给出了堆栈用数组实现的另一种方式,即直接在函数参数中传递数组和top变量(而不是两者组成的结构指针),其中Push操作函数设计如下。这个Push函数正确吗?为什么? #define MaxSize 100 ElementTyp…

Three.js--》Gsap动画库基本使用与原理

目录 Gsap动画库使用讲解 Gsap动画库基本使用 修改自适应画面及双击进入全屏 设置stats性能监视器 Gsap动画库使用讲解 GSAP的全名是GreenSock Animation Platform,是一个从flash时代一直发展到今天的专业动画库,今天将其与three.js进行结合&#x…

【DevOps视频笔记】1. DevOps的诞生

视频官网 目录 一、DevOps介绍 定义: 作用: 核心: 二、软件开发流程 三、流程图 一、DevOps介绍 定义: Development & Operations的缩写,也就是开发&运维DevOps 是一个不断提高效率并且持续不断工作的…

GPIO输出——LED闪烁、LED流水灯、蜂鸣器

1、STM32F1 GPIO 简介 GPIO ( General Purpose Input Output )通用输入输出口 可配置为 8 种输入输出模式 引脚电平: 0V~3.3V ,部分引脚可容忍 5V 输出模式下可控制端口输出高低电平,用以驱动 LED 、控制蜂鸣器、模拟通…

Spring 统一功能处理(拦截器)

文章目录 Spring拦截器1.统一用户登录权限校验1) SpringAOP 用户统一验证的问题2) Spring拦截器3) 拦截器实现原理4)同一访问前缀添加 2. 统一异常处理3. 统一数据返回格式1)统一数据返回的好处2)统一数据返回实现 Spring拦截器 SpringBoot统…

第13章 项目合同管理

文章目录 13.2.1 按信息系统 范围 划分的合同分类 4451、总承包合同2、单项工程承包合同3、分包合同 13.2.2 按项目 付款方式 划分的合同分类 4461、总价合同2、成本补偿合同(卖方有利)3、工料合同 13.3.1 项目合同的内容 44713.3.2 项目合同签订的注意事…

【设计模式】我终于读懂了迭代器模式。。。

看一个具体的需求 编写程序展示一个学校院系结构:需求是这样 要在一个页面中展示出学校的院系组成, 一个学校有多个学院, 一个学院有多个系。 如图: 传统的设计方案(类图) 传统的方式的问题分析 将学院看做是学校的子类&#xf…

深度学习(23):SmoothL1Loss损失函数

0. 基本介绍 SmoothL1Loss是一种常用的损失函数,通常用于回归任务中,其相对于均方差(MSE)损失函数的优势在于对异常值(如过大或过小的离群点)的惩罚更小,从而使模型更加健壮。 SmoothL1Loss的公式为: l o s s ( x , y ) { 0.5 …

机器人中的数值优化(三)—— 无约束最优化方法基础、线搜索准则

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,…

eureka自我保护模式详解(全网最全)

1. 什么叫自我保护模式? 当微服务客户端启动后,会把自身信息注册到Eureka注册中心,以供其他微服务进行调用。一般情况下,当某个服务不可用时(一段时间内没有检测到心跳或者连接超时等),那么Eure…

spring3:更简单的读取和存入对象

目录 1.存储 Bean 对象 1.1 前置⼯作:配置扫描路径(重要) 1.2 添加注解存储 Bean 对象 1.2.1.Controller[控制器] 1.2.2 Service[服务] 1.2.3 repoistory[仓库] 1.2.4 Configuration[配置] 1.2.5 Component[组件] 1.3为什么要这么多类…

Spring 创建和使用

文章目录 什么是 Bean ?1. 创建 Spring 项目1.创建一个 Maven 项目2. 添加 Spring 依赖1.配置 Maven 国内源2.添加 Maven 依赖 3.添加启动项 2.存储Bean对象1.创建 Bean2.注册 Bean3.获取并使用 Bean 对象1. 得到 Spring 对象常见方式有两种: 2. 获取 Bean 对象Bean 的三种获取…

SpringMVC中使用LocalDateTime、LocalDate等参数作为入参数据转换问题

1、接收GET请求方式及POST请求表单方式时间类型传参,需要自定义参数转换器或者使用ControllerAdvice配合initBind,不设置的话表单方式会报以下错误: 这种情况要和时间作为Json字符串时区别对待,因为前端json转后端pojo底层使用的是…

什么是Auto GPT-4? OpenAI 最新语言模型概览

动动发财的小手,点个赞吧! 人工智能正在快速发展,近年来最令人兴奋的发展之一是创建可以生成类似人类文本的语言模型。领先的人工智能研究机构 OpenAI 最近发布了其最新的语言模型 Auto GPT-4。 在什么是 Auto GPT-4? OpenAI 最新…

【Java笔试强训 29】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥求正数数…

AtCoder Beginner Contest 300(D-G)

D - AABCC (atcoder.jp) (1)题目大意 给你个数N,问你不超过N的三个质数abc组成的数有多少个。 (2)解题思路 考虑到枚举的数不会特别多,因此预处理出1e6的质因子,暴力枚举即可。 (3&a…