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

部署:上传项目代码 配置数据库

一、上传代码

1、使用git

可以使用Git Clone。使用前,在服务器上也要创建秘钥对。这里的密钥对,是专门用来读取Git仓库的。
宝塔上,点击终端。进来后,运行

ssh-keygen

还是一路回车,密钥对就建好了。
在这里插入图片描述

接着用命令查看下,刚才生成的公钥。看到后,老规矩,直接复制一下。

cat ~/.ssh/id_rsa.pub

在这里插入图片描述

然后打开GItHub里自己的仓库,点击:设置,左侧找到部署密钥,再点击新增部署密钥

在这里插入图片描述

  • Title大家可以随便填写一个,只要自己知道是干什么的就行。

  • 然后把刚才复制的密钥,粘贴到这里。

  • 部署密钥只能用来克隆Clone和拉取Pull,但是不能用来推送Push代码。所以不要给写入权限。

  • 最后提交一下
    在这里插入图片描述
    GitHub的话,会要求用手机上的GitHub App输入验证码。用国内其他仓库的,则没有这一步。

在这里插入图片描述
现在部署密钥就添加好了,如果用其他 Git 仓库也是类似的添加操作。接着,回到仓库的代码这里。点击Code,确认当前选择的是SSH,复制一下地址。
在这里插入图片描述
再回到宝塔里,点击文件,确保现在所在的位置是:/www/wwwroot。这个路径是专门用来存放项目的位置,然后点击终端
在这里插入图片描述
注意,如果出现宝塔终端提示无法自动认证,这是自己生成的密钥与宝塔终端的密钥互相冲突导致的,按以下步骤操作:

  • 点击文件,进入/root/.ssh目录,删掉所有密钥。
  • 重新点击宝塔终端,就可以进去了。
  • 再次回到/root/.ssh目录,会发现宝塔终端自己生成了新的密钥。
  • 为了避免冲突,直接将此密钥传到Git即可,就不要自己生成密钥了。

里面输入

git clone 你的仓库地址

在这里插入图片描述
这样仓库就克隆下来了。关闭窗口后,刷新一下,就能看到自己的项目了。
在这里插入图片描述

2、使用宝塔直接上传

另外一种方式,大家可以直接使用宝塔的上传功能。将自己的本地项目打个zip压缩包。上传到服务器后,再解压,这样也是可以的。这种操作非常简单,我们这里就不演示了。
在这里插入图片描述

3、安装依赖包

接着在宝塔里,点击自己的项目。进入项目目录里后,再次打开终端。运行

npm i

在这里插入图片描述

4、 修改代码

我们还需要对服务器上的代码做个配置

4.1. 设置环境变量

在项目目录中,找到.env.example,右侧找到更多,选择复制
在这里插入图片描述
直接按Ctrl + V,进行粘贴。改为名.env后,点击确认

在这里插入图片描述
双击打开.env后,将环境改为生产环境。

NODE_ENV=production
4.2. 设置密钥

还需要设置密钥,大家打开自己电脑上的终端。运行:

node

进入交互模式后,依次运行

const crypto = require('crypto');
console.log(crypto.randomBytes(32).toString('hex'));

在这里插入图片描述

复制得到的秘钥,填写到.env文件中的SECRET配置中。
在这里插入图片描述
这个秘钥就专供生产环境使用,它不归 Git 仓库管理,更不要告诉其他人了。

4.3. 配置数据库连接

关闭编辑器后,接着点击宝塔左侧的数据库,点击root密码。这里默认已经有一个数据库密码了,大家可以自定义其他的,或者随机生成另一个新的。
在这里插入图片描述
我就不改了,直接复制一下。再点击文件,找到数据库配置的config/config.json
在这里插入图片描述

双击后,将刚复制的密码填写到production里。还有千万不要忘记了,密码要用双引号包裹起来。
在这里插入图片描述
接着保存,关闭编辑器。

5. 创建数据库

我们还要需要在服务器上创建数据库。回到项目根目录,位置千万不要搞错,点击终端,运行创建数据库的命令 参考node ORM (sequelize)使用、查询、验证及express 基础框架的搭建及实例的使用

npx sequelize-cli db:create --charset utf8mb4 --collate utf8mb4_general_ci --env production

第一次运行,会询问是否确认,直接回车。命令后面的--env production,表示要创建的是,生产环境的数据库,也就是clwy_api_production
在这里插入图片描述

6. 创建数据表

接着创建数据表,直接运行迁移。同样需要指定是生产环境。

npx sequelize-cli db:migrate --env production

在这里插入图片描述

7. 生成初始数据

还可以用种子文件,生成初始数据。

npx sequelize-cli db:seed:all --env production

在这里插入图片描述

8.使用 MySQL 客户端,远程管理数据库

全都运行完毕后,关闭终端。我们可以用客户端,连接到服务器上的MySQL,查看一下数据库有没有什么问题。当然,想要导入导出SQL文件,使用客户端也非常方便。

  • 新建一个连接在这里插入图片描述
  • 选择 SSH
    在这里插入图片描述
  • 选择私钥
    在这里插入图片描述
  • 打开后,已经能访问服务器上的数据库了。
  • 在这里插入图片描述
9. 总结一下
  • 上传代码,推荐使用Git Clone。或者用宝塔面板直接上传,但是不推荐。
  • Linux上的npm包,有可能和Windows上不同。上传到服务器后,需要重新安装。
  • 生产环境,有自己的环境变量、秘钥和数据库配置。
  • 可以使用命令,创建生产环境的数据库、表和数据。
  • 使用MySQL客户端,也可以远程管理服务器上的数据库。

相关文章:

部署:上传项目代码 配置数据库

一、上传代码 1、使用git 可以使用Git Clone。使用前,在服务器上也要创建秘钥对。这里的密钥对,是专门用来读取Git仓库的。 在宝塔上,点击终端。进来后,运行 ssh-keygen还是一路回车,密钥对就建好了。 接着用命令…...

C++—9、如何在Microsoft Visual Studio中调试C++

本文通过实例操作来介绍 Visual Studio 调试器的功能。调试器在运行过程中可提供许多方法让你查看代码的情况。 你可以逐步浏览代码、查看变量中存储的值、设置对变量的监视以查看值何时改变、检查代码的执行路径、查看代码分支是否正在运行等等。本实例主要是设置断点及查看内…...

11. C 语言 作用域与变量使用技巧

本章目录: 前言一、作用域的分类局部变量示例: 全局变量示例:示例: 形式参数示例: 二、作用域的细节与常见误区块级作用域示例: 静态变量与全局变量的对比示例: 未初始化变量的影响示例: 三、实…...

【机器学习案列】学生抑郁可视化及预测分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...

Perl语言的循环实现

Perl语言的循环实现 引言 Perl是一种强大的脚本语言,以其灵活的语法和强大的文本处理能力著称。无论是在系统管理、网络编程,还是在Web应用开发中,Perl都广泛应用于各种领域。循环是编程语言中一个极其重要的概念,它允许程序重复…...

SpringBoot项目——使用Spark对爬虫爬取下的数据进行清洗

随着互联网信息呈爆炸式增长,爬虫技术被广泛用于从海量网页中抓取有价值的数据。然而,爬取到的数据往往存在格式不规范、重复、噪声等诸多问题,需要高效的数据清洗流程来保障数据质量,Spark 在其中发挥了关键作用。 什么是Spark …...

分布式锁 Redis vs etcd

为什么要实现分布式锁?为什么需要分布式锁,分布式锁的作用是什么,哪些场景会使用到分布式锁?分布式锁的实现方式有哪些分布式锁的核心原理是什么 如何实现分布式锁redis(自旋锁版本)etcd 的分布式锁(互斥锁(信号控制)版本) 分布式锁对比redis vs etcd 总结 为什么要实现分布式…...

《深度剖析:开源与闭源模型,AI舞台上的不同角色》

在人工智能蓬勃发展的当下,模型的选择如同为一场战役挑选合适的武器,至关重要。开源模型与闭源模型作为AI领域的两大阵营,在性能和应用场景上展现出显著差异,深刻影响着开发者、企业以及整个行业的走向。 性能差异:实…...

Angular结合C#

在 Angular 2 及以上版本与 C#结合使用 REST API 的示例中,我们将分别展示前端 Angular 服务和后端 C# Web API 的实现。 一、前端:Angular 服务 生成 Angular 服务 使用 Angular CLI 生成一个新的服务,例如user.service.ts: ng…...

Spring——自动装配

假设一个场景: 一个人(Person)有一条狗(Dog)和一只猫(Cat),狗和猫都会叫,狗叫是“汪汪”,猫叫是“喵喵”,同时人还有一个自己的名字。 将上述场景 抽象出三个实体类&…...

Servlet与JSP:Java的秘密花园入口

1 Servlet概述 Servlet是Java Web应用中的一个核心组件,它是一个运行在服务器端的Java程序,可以响应客户端的请求并生成响应。Servlet为Web应用提供了一个统一的接口来处理HTTP请求。 2 Servlet的生命周期 Servlet的生命周期包括以下几个阶段&#xff…...

【Linux】Linux常见指令(上)

个人主页~ 初识Linux 一、Linux基本命令1、ls指令2、pwd命令3、cd指令4、touch指令5、mkdir指令6、rmdir指令7、rm指令8、man指令9、cp指令10、mv命令 Linux是一个开源的、稳定的、安全的、灵活的操作系统,Linux下的操作都是通过指令来实现的 一、Linux基本命令 先…...

ELFK日志采集实战

一、日志分析概述 日志分析是运维工程师解决系统故障,发现问题的主要手段 日志主要包括系统日志、应用程序日志和安全日志 系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因 经常分析日志可以了解服务器的负荷&#x…...

Kubernetes 使用自定义资源(CRD)扩展API

K8s CRD 即 Kubernetes CustomResourceDefinition,是 Kubernetes 提供的一种扩展机制,允许用户在 Kubernetes 集群中定义和使用自定义的资源类型。通过定义 CRD,用户可以在 Kubernetes 集群中创建、读取、更新和删除自定义资源对象&#xff0…...

用户使用LLM模型都在干什么?

Anthropic 对用户与 Claude 3.5 Sonnet 的大量匿名对话展开分析,主要发现及相关情况如下: 使用用途分布 软件开发主导:在各类使用场景中,软件开发占比最高,其中编码占 Claude 对话的 15% - 25%,网页和移动应…...

MySQL常用命令之汇总(Summary of Commonly Used Commands in MySQL)

MySQL常用命令汇总 简介 ‌MySQL是一个广泛使用的开源关系型数据库管理系统,由瑞典的MySQL AB公司开发,现属于Oracle公司。‌ MySQL支持SQL(结构化查询语言),这是数据库操作的标准语言,用户可以使用SQL进…...

六年之约day10

今日开心∶今天部门开了个颁奖大会,看着别人收获的荣誉,还真有些羡慕,什么时候,我也能拥有属于自己的荣誉啊. 今日不开心∶活没干多少,对业务也不是很懂 今日思考∶很多事情,存在即合理.工作,…...

springboot和vue配置https请求

项目场景: 代码发布到线上使用https请求需要配置ssl证书,前后端都需要修改。 问题描述 如图,我们在调用接口时报如下错误,这就是未配置ssl但是用https请求产生的问题。 解决方案: 前端:在vite.config.js文…...

selenium遇见伪元素该如何处理?

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 问题发生 在很多前端页面中,大家会见到很多::before、::after 元素,比如【百度流量研究院】: 比如【百度疫情大数…...

慧集通(DataLinkX)iPaaS集成平台-数据质量

1.什么是数据质量 介绍: 数据质量的主要作用就是记录组件写入的数据,及执行时的相关信息,如执行的最终状态(成功,失败,进行中等),执行的时间(创建时间,修改时…...

在rocky linux 9.5上在线安装 docker

前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

docker 部署发现spring.profiles.active 问题

报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

Kafka入门-生产者

生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

抽象类和接口(全)

一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...