node连接mysql数据库并配置https访问

起因是之前的博客架的是php+mysql,现在要只想换语言为node,而不打算移数据。

参考文献:

http://www.cnblogs.com/zhongweiv/p/nodejs_mysql.html

上代码

const router = require('express').Router();
//mysql
var mysql = require('mysql');

var query = function() {
  //创建一个connection
  var connection = mysql.createConnection({
    host: 'www.***.com', //主机
    user: '***', //MySQL认证用户名
    password: '***', //MySQL认证用户密码
    port: '3306', //端口号
    database: 'blog'
  });
  //创建一个connection
  connection.connect(function(err) {
    if (err) {
      console.log('[query] - :' + err);
      return;
    }
    console.log('[connection connect]  succeed!');
  });

  // 查询文章表
  var articleSql = 'SELECT * FROM typecho_contents limit 0, 10';
  //查
  connection.query(articleSql, function(err, result) {
    if (err) {
      console.log('[SELECT ERROR] - ', err.message);
      return;
    }

    console.log('--------------------------SELECT----------------------------');
    cb(result);
    console.log('-----------------------------------------------------------------\n\n');
  });

  //关闭connection
  connection.end(function(err) {
    if (err) {
      return;
    }
    console.log('[connection end] succeed!');
  });
}

router.get('/list', function(req, res, next) {
  query(function (result) {
    res.json(result);
  });
});

module.exports = router;

这里使用了一个cb回调查询的结果,然后res.json渲染输出

上传到阿里云并部署https

先申请一个ca证书,然后在express启动一个https服务并配置key证书为.key文件,这里有个坑,我拿.pem去试半天一直报错。

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
    at Object.createSecureContext (_tls_common.js:90:19)

正确的配置如下

var app = require('express')();
app.get('/', function (req, res, next) {
    console.log('hi,u');
});

var https = require('https')
    ,fs = require("fs");

var options = {
    key: fs.readFileSync('./214104114130391.key'),
    cert: fs.readFileSync('./214104114130391.pem')
};

https.createServer(options, app).listen(3001, function () {
    console.log('Https server listening on port ' + 3001);
});

上述的214104114130391.key与.pem文件,在阿里云后台申请得到

node连接mysql数据库并配置https访问_第1张图片
ca

详情可见我之前关于证书申请的文章,http://blog.it577.net/archives/48/

使用forever让node进程后台运行

目前通过控制台远程到服务器,node app.js是可以跑通,但一断开远程连接,连同node一起断了。通过搜索,可以使用forever这也做后台进程守护。

npm install forever -g
forever app.js

这样断开远程连接也不影响node运行了。

这过程中我还使用了软连接将forever链到/usr/bin目录,方便全局使用forever命令

ln -s /usr/local/src/node-v8.4.0-linux-x64/bin/forever /usr/bin/forever

非80端可以用在小程序访问

小程序里配置域名白名单

node连接mysql数据库并配置https访问_第2张图片
white_list

即使我的接口api运行在3001端口,小程序还是认的,成功为我返回了数据。

node连接mysql数据库并配置https访问_第3张图片
api

在浏览器访问也显示是安全证书

node连接mysql数据库并配置https访问_第4张图片
https

最后,大家节日快乐

node连接mysql数据库并配置https访问_第5张图片
pay
node连接mysql数据库并配置https访问_第6张图片
mp

你可能感兴趣的:(node连接mysql数据库并配置https访问)