目录
本次主要是记述了怎么在腾讯云部署nodejs项目,并且nodejs开通了https的接口访问,可以使用https://ip:port的方式访问。这样做的目的主要是针对一些必须使用https的场合,比如小程序的发布上线时,如果不是https的访问,会使得功能无法正常使用。
1 前期准备
1.1 服务器
这里购买的是腾讯云服务器,购买完服务器后,还需要购买域名并进行域名备案,最后还要添加域名解析。整个流程网上有很多,就不再记述了。
1.2 在服务器里面安装宝塔
官网:https://www.bt.cn/btcode.html
官网建议安装前要确保是干净的操作系统,已有环境不可安装。
默认安装目录为 /www, 安装完成后终端会提示默认的访问入口和用户名、密码,打开浏览器按照访问入口输入地址栏即可打开登录界面。以下在ubuntu系统的按照命令:
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
安装完成宝塔后,初次打开时候会有推荐安装软件,直接安装一下就可以了。之后还要在宝塔里面安装pm2。具体可见:腾讯云服务器部署node.js——入门级_腾讯云部署node项目_B or D的博客-CSDN博客
2 SSL认证
2.1 打开链接
https://console.cloud.tencent.com/ssl
2.2 进行SSL认证
完成后,记得过段时间刷新一下
点击下载,选中相应的证书,这里以腾讯云宝塔面板为例进行说明
解压缩后,重点主要下红线框内的文件,一会要使用到
3 简单的nodejs
3.1 创建目录
创建名为demo01的文件夹,作为本次的项目所在目录,在使用前首先在当前目录下使用下面的命令,这样会生成一个package.json文件:
npm init -y
npm i express // 后边要用到,这里直接安装了
3.2 创建工程
创建一个js文件,名称是index.js,引入刚刚下载的SSL证书
const express = require('express')
const https = require('https')
const fs = require('fs')
const path = require('path')
// liuserver.top_nginx是目录名,和index.js在一个文件夹下(就是刚刚下载的SSL证书)
const credentials = {
// 同步读取文件 __dirname:当前目录,不随运行目录改变
key: fs.readFileSync(path.join(__dirname,'./liuserver.top_nginx/liuserver.top.key'),'utf8'),
cert: fs.readFileSync(path.join(__dirname,'./liuserver.top_nginx/liuserver.top_bundle.crt'),'utf8')
}
const app = express()
const httpsServer = https.createServer(credentials, app)
// 记得在服务器和宝塔都打开9999端口
const port = process.env.PORT || 9999
app.post("/", (req, res) => {
res.send('hello Post!')
})
app.get("/", (req, res) => {
res.send('hello Get!')
})
httpsServer.listen(port, () => {
console.log(`listening on port:${port}`)
})
3.3 部署后端
将刚刚建立的demo01里的内容传输到宝塔里面(宝塔自带的有上传文件功能),上传时,可以先在宝塔里面建立一个demo01目录,之后将除了node_modules、package-lock.json的所有东西都传输的宝塔里面新建的demo01里面。
打开宝塔内终端(初次的话可能需要登录,可以现在服务器那里配置下,实在不行就直接打开服务器的终端,进入到文件夹下(/www/.....))
执行npm i ,之后刷新当前页面,会出现node_modules、package-lock.json
4 运行测试
4.1 打开宝塔终端,执行程序
node index.js // node 执行文件名
4.2 使用浏览器打开
https://IP:port
也可以:
https://域名:port