10.1 部署
部署应用到生成服务器中,则需要添加额外的可靠层,当应用崩溃时能够提供帮助。
端口号:80
基本:使用无限循环运行脚本。使用tee命令将标注输出写入到日志文件中。
#!/bin/bash
while true
do
node xxx.js | tee -a /var/server/logs/important.log
done
级别:Ninjia
10.2 多处理器部署:使用代理
使用http-proxy来构建代理服务器。
10.3 虚拟主机
在同一个服务器上运行多个网站。通过向HTTP请求中添加“Host:”头来实现虚拟主机,这是HTTP/1.1的主要特性之一。
内置支持:express直接内置了运行多虚拟主机的功能。
var express = require('express'),
evh = require('express-vhost'),
morgan = require('morgan');
var one = express();
one.get("/", function(req, res){
res.send("This is app one!")
});
// App two
var two = express();
two.get("/", function(req, res){
res.send("This is app two!")
});
// App three
var three = express();
three.get("/", function(req, res){
res.send("This is app three!")
});
// controlling app
var master_app = express();
master_app.use(morgan('dev'));
master_app.use(evh.vhost('app1', one))
master_app.use(evh.vhost('app2', two));
master_app.use(evh.vhost('app3', three));
master_app.listen(8080);
console.log('Listening on 8080 for three different hosts');
代理服务器支持:使用http-proxy模块,基于站点主机名的
10.4 使用HTTPS/SSL保障项目安全
为应用添加SSL/HTTPS支持,首先需要生成一些测试证书,并为应用程序添加加密传输的支持。
生成测试证书: 包括两个文件privkey.pem(私有密钥)和newcert.pem(对应的证书)
openssl genrsa -out privkey.pem 1024
openssl req -new -key privkey.pem -out certreq.csr
openssl x509 -req -days 3650 -in certreq.csr -signkey privkey.pem -out newcert.pem
内置支持:
var express = require('express'),
https = require('https'),
fs = require('fs');
// 1. Load certificates and create options
var privateKey = fs.readFileSync('privkey.pem').toString();
var certificate = fs.readFileSync('newcert.pem').toString();
var options = {
key : privateKey,
cert : certificate
}
// 2. Create express app and set up routing, etc.
var app = express();
app.get("*", function (req, res) {
res.end("Thanks for calling securely!\n");
});
// 3. start https server with options and express app.
https.createServer(options, app).listen(443, function(){
console.log("Express server listening on port " + 443);
代理服务器支持:
10.5 多平台开发