一、上传代码
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客户端,也可以远程管理服务器上的数据库。