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

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...