使用nodejs搭建文件目录结构的web服务器,以及node forever模块的使用

nodejs的安装和使用以及npm的使用方法自己查

目录

web服务器搭建

安装对应库

npm install express
npm install serve-index

获得https的ssl证书

购买域后进行实名认证,通过后即可下载

文件目录

cert:存放ssl证书
node_modules:nodejs的库
public:web页面的目录
server.js:web服务器代码

运行

sudo forever start server.js

forever可以不占用终端在后台运行

停止:

sudo forever stop server.js

说明:forever需要用npm下载


如果想临时使用或者查看log,可以使用node运行:

sudo node server.js

serve.js代码(web根目录)

'use strict'

var http = require('http');
var https = require('https');
var fs = require('fs');

var serveIndex = require('serve-index');

var express = require('express');
var app = express();

//顺序不能换
app.use(serveIndex('./public'));
app.use(express.static('./public'));

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

var https_server = https.createServer(options, app);
https_server.listen(443, '0.0.0.0');

var http_server = http.createServer(app);
http_server.listen(80, '0.0.0.0');

forever说明

forever Github地址

forever可以看做是一个nodejs的守护进程,能够启动,停止,重启我们的app应用。

forever的用途就是帮我们更好的管理我们node App服务,本质上就是在forever进程之下,创建一个node app的子进程。使用类似于service apache2 start这样的命令即可操作node后台运行。

更好的一点就是每次更改文件,它都可以帮你自动重启服务而不需要手动重启(需要配置持续监听-w)

forever安装和使用

安装

npm install forever -g  //-g 全局安装

使用

  1. 启动相关
    // 1. 简单的启动
    forever start app.js

    // 2. 指定forever信息输出文件,当然,默认它会放到~/.forever/forever.log
    forever start -l forever.log app.js

    // 3. 指定app.js中的日志信息和错误日志输出文件,
    // -o 就是console.log输出的信息,-e 就是console.error输出的信息
    forever start -o out.log -e err.log app.js

    // 4. 追加日志,forever默认是不能覆盖上次的启动日志,
    // 所以如果第二次启动不加-a,则会不让运行
    forever start -l forever.log -a app.js

    // 5. 监听当前文件夹下的所有文件改动,并重启服务
    forever start -w app.js

    // 6. 显示所有运行的服务
    forever list
  2. 停止
    // 1. 停止所有运行的node App
    forever stopall

    // 2. 停止其中一个node App
    forever stop app.js
    // 当然还可以这样
    // forever list 找到对应的id,然后:
    forever stop [id]
  3. 重启
    // 1. 启动所有
    forever restartall
    // 2. 重启其中一个node App
    forever restart app.js