阿里云服务器部署日记(三),保姆级教程,实际nest测试项目部署,包括连接数据库

前面两篇文章已经按照阿里云服务器部署引导在云服务器上把node环境安装好并且把示例工程跑起来了,接下来尝试把我们自己的nestjs项目部署到云服务器实例上跑起来

1、mysql安装

由于我们项目中需要用到mysql数据库,所以要先安装mysql

  • 依次执行命令下载并安装MySQL数据库。回显信息显示Complete!,表示MySQL数据库安装成功。
  • wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
    sudo yum install -y mysql57-community-release-el7-10.noarch.rpm
    sudo yum install -y mysql-community-server --nogpgcheck
  • 完成 
  • 执行命令启动MySQL数据库。
  • sudo systemctl start mysqld.service
  • 执行命令查看MySQL数据库的运行状态。
  • systemctl status mysqld.service
  • 运行中
  • 执行命令查看MySQL数据库的初始密码。
sudo grep "password" /var/log/mysqld.log
  • 执行命令登录MySQL数据库。

mysql -u root -p

登录完成(密码输入可以在上一步输出内容里面复制粘贴过来)

  • 执行命令修改MySQL数据库的初始密码。

  • 密码必须同时包含大小写英文字母、数字和特殊符号中的三类字符。

  • 注意每条完整的SQL命令结尾都有一个半角分号(;),如果多行命令中间没有分号分隔,这些命令将不会执行,直至遇到一个分号。

ALTER USER 'root'@'localhost' IDENTIFIED BY '<新密码>';

查看现在有哪些库

show databases;

可以看到有以下四个库

再看我们测试工程里面用到的库叫db,没有同名库

 于是在数据库下创建db库

create database;

创建成功,可以看到已经有叫db的库了

现在回到项目中,不管怎样先npm i 一波,依赖安装完打包:npm run build,

对了,记得把nest项目中mysql配置中的用户名跟密码改成你服务端用的账号密码,还有端口号

查看端口号:

因为执行完之前的环境还处于sql命令行里面,所以先退出sql命令行

再执行以下命令:

mysql --help | grep port

可以看到端口号为0 

2、项目代码上传

回到项目,项目打包完成之后会打包到dist目录下,这时候就要用到文件上传工具

  • FileZilla
  • WinSCP
  • Cyberduck

我这里用的WinSCP,这个自己去搜一下下载一个就好了

安装好了之后第一次打开会弹出窗口让我们连接我们的主机

 主机名就是我们的弹性公网ip,端口号22,一般实例里面安全组里面入方向的22端口是默认有的,没有的话自己加上

用户名密码就是你在阿里云远程连接时的用户名跟密码(所以不要只用密钥对的方式登录,实例还是要设置密码,设置密码的方式阿里云上面也有提供),点击“登录”会弹出以下提示,点击“接受”

连接成功之后可以看到以下界面,可以看到右边是有我们之前创建的example.js文件的,所以很明显,右边就是远程服务端,左边是我们本地文件

从左边找到我们之前打包好的dist文件夹,直接往右边拖,按照提示往下走,不用动设置,就开始传输了

文件传输完成,右边多了一个文件夹

按照我们运行示例的例子,到此我们应该知道怎么做了,

3、启动服务

切换到dist目录,查看目录下有哪些文件,我们的主入口文件为main.js,直接node运行即可

好吗,第一个问题出现

换个方式试试,用pm2,先安装:

npm install pm2 -g

安装完成之后运行:

pm2 start main.js

 成功

尝试访问

看下服务端状态

好,失败了,去哪看日志呢

pm2 logs app_name -e err

说个蠢事,第一次我没把app_name换成我自己在运行的应用名,还不知道怎么退出。。。。。。,最后使用ctrl+c退出的,看结果是模块引入的问题

为啥,因为服务端没有安装npm依赖,所以我们换种方式,在远程服务器创建nest文件夹,直接把除了node_modules跟dist文件夹之外的其他文件跟文件夹拖进来

在服务端安装依赖

切换到nest目录,执行npm i

安装完依赖执行npm run build,继续报错

查了下,node版本问题,看nestjs官网

看我们之前安装的啥版本,v14,所以切换到V16

再npm run build构建一次,成功

 上我们的WinScp刷新下可以看到dist目录了,切换到dist目录

此时因为我们切换了node版本,所以需要重新安装pm2,安装好之后我们先把之前的应用停掉

启动成功,再试试

有了!!!!!!,这个错误信息已经进入到我们控制器里面写的东西里面了

 有个访问数据库数据的接口,我们试下

没问题,至此说明连接数据库也没问题了,由于我增删改查跟联表查询的东西还没写完全,后面会把这部分补上,再试着把前端静态资源一起部署上去跑通完整前后端流程

还有后续,有喜欢的小伙伴可以继续关注

对了,在这里不得不提一嘴kimi,这里面很多报错啊,各种命令行语句啊,sql语句啊,都可以问kimi,目前也还是免费的,很牛

  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NestJS项目中连接多个MySQL数据库,你可以按照以下步骤进行实现: 1. 首先,确保你已经安装了`@nestjs/typeorm`和`typeorm`包。 2. 创建一个名为`database.module.ts`的模块文件,用于管理数据库连接。 ```typescript import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; @Module({ imports: [ TypeOrmModule.forRoot({ name: 'db1', // 第一个数据库连接的名称 type: 'mysql', host: 'localhost', port: 3306, username: 'username1', password: 'password1', database: 'database1', entities: [__dirname + '/**/*.entity{.ts,.js}'], synchronize: true, }), TypeOrmModule.forRoot({ name: 'db2', // 第二个数据库连接的名称 type: 'mysql', host: 'localhost', port: 3306, username: 'username2', password: 'password2', database: 'database2', entities: [__dirname + '/**/*.entity{.ts,.js}'], synchronize: true, }), ], }) export class DatabaseModule {} ``` 在上述代码中,我们通过`TypeOrmModule.forRoot()`方法配置了两个不同的数据库连接,并为每个连接指定了一个唯一的名称。 3. 在需要访问数据库的模块中,通过使用`@InjectConnection()`装饰器来注入指定的数据库连接。 ```typescript import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Connection } from 'typeorm'; @Module({ imports: [TypeOrmModule.forFeature([YourEntity]), DatabaseModule], controllers: [YourController], providers: [YourService], }) export class YourModule { constructor( @InjectConnection('db1') private readonly connection1: Connection, @InjectConnection('db2') private readonly connection2: Connection, ) {} } ``` 在上述代码中,我们使用`@InjectConnection()`装饰器注入了名为`db1`和`db2`的两个不同的数据库连接。 现在,你可以在模块中使用`connection1`和`connection2`来执行数据库操作了。 这样,你就可以在NestJS项目中连接多个MySQL数据库了。请根据你的实际需求调整配置和命名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值