起因是之前的博客架的是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文件,在阿里云后台申请得到
详情可见我之前关于证书申请的文章,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端可以用在小程序访问
小程序里配置域名白名单
即使我的接口api运行在3001端口,小程序还是认的,成功为我返回了数据。
在浏览器访问也显示是安全证书
最后,大家节日快乐