部署:上传项目代码 配置数据库
一、上传代码
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的生命周期包括以下几个阶段ÿ…...

【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 集群中创建、读取、更新和删除自定义资源对象࿰…...

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

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...

Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...