Node.js搭建小程序后台服务
准备条件
一台服务器
SSL证书,小程序规定必须要https协议
服务器后台
Node.js
express
mongodb
pm2
下面以腾讯云主机(centos)为例
安装Node.js
yuminstallnodejs
也可以安装nvm,用nvm管理nodejs版本
安装git
yuminstallgit
连接到远程代码库
以github为例:
配置用户信息
gitconfig--globaluser.nameyouname gitconfig--globaluser.emailyouemail
生成ssh公钥
ssh-keygen-trsa-Cyouemail
默认生成目录为/root/.ssh
在目录中找到id_rsa.pub文件,复制里面的内容,在自己的github上添加ssh
安装mongodb和客户端shell
yuminstallmongodb-servermongodb-y
创建数据库文件存放目录
mkdir-p/data/mongodb mkdir-p/data/logs/mongodb
启动mongodb数据库服务
mongod--fork--dbpath/data/mongodb--logpath/data/logs/youlog.log
注意:
如果在启动mongodb服务时在命令后面加上--auth即会开启认证。
建议开启认证,如果不开会很容易被黑。
--port12345可以改变数据库的端口号,默认是27017。
--fork是以守护进程的方式启动数据库服务。
--dbpath/data/mongodb指定数据库文件存放的目录。
--logpath/data/logs/youlog.log指定日志文件目录。
mongodb的配置文件默认在/etc/mongod.conf
启动客户端shell
mongo //启动mongodb客户端shell默认连接test数据库
在shell里可以切换数据库连接,和进行相关操作。
在云服务器以守护进程的方式启动一次数据库服务之后,关闭终端,服务也不会被终止。所以下次不用再启动数据库服务,直接连接就可以。
关闭数据库服务
mongod--shutdown(--dbpath/data/mongodb)
如果启动时加了dbpath而且不是默认的/data/db,则关闭数据库服务时也应加上dbpath。
创建https服务
npminit //项目初始化
安装express
npminstallexpress--save
实现简单的https服务器
consthttps=require('https'); constfs=require('fs'); constexpress=require('express'); constapp=express(); letkey=fs.readFileSync('youssl.key'); letcert=fs.readFileSync('youssl.crt'); letoptions={ key:key, cert:cert }; consthttpsServer=https.createServer(options,app); httpsServer.listen(443,()=>{ console.log('listening443port'); }); app.get('/',(req,res,next)=>{ console.log('someonerequest'); });
.key和.cert文件为你的ssl认证文件,以腾讯云主机为例,可以有免费1年的ssl证书。
使用mongoose操作数据库
npminstallmongoose--save constmongoose=require('mongoose'); mongoose.connect('mongodb://127.0.0.1/dbname');//连接数据库 constconnection=mongoose.connection; connection.once('open',(err)=>{ if(err){ console.log('Databaseconnectionfailure'); }else{ console.log('Databaseopened'); } }); constSchema=mongoose.Schema; constYourSchema=newSchema({ name:String, age:Number, }); constyourModel=mongoose.model('yourtable',YourSchema);//在数据库中对应的表为yourtables letyourDoc=newyourModel({ name:'yourname', age:18, });
注意如果启动mongodb数据库服务时加上了--auth则使用mongoose连接数据库时,要加上认证的账户
mongoose.connect('mongodb://youraccount:pwd@127.0.0.1/dbname');
mongodb与关系型数据库的对应关系
Schema相当于表的结构,可以预定义文档的字段类型,不能进行数据库操作。Modle可以进行一系列数据库操作,相当于表。Model的实例就相当于表的一行。
使用pm2
安装pm2
npminstall -gpm2
启动应用
pm2startapp.js