本文项目采用express为服务端,将指定访问路径指向某个页面的单页应用,内部路由由react-router管理
- 1、将项目除node_modules目录外压缩上传
sudo apt-get install unzip
unzip xxx.zip
- 2、
npm install -g cnpm --registry=https://registry.npm.taobao.org
将cnpm命令设为全局:ln -s xxxdir/bin/cnpm /usr/local/bin/cnpm
采用cnpm下载依赖包:cnpm install
- 3、用pm2来后台启动并管理项目:
npm install pm2 -g
ln -s xxxdir/bin/pm2 /usr/local/bin/pm2
原先的启动方式:
"scripts": {
"start": "node server.bundle.js"
}
执行:npm run start
pm2的方式:pm2 start server.bundle.js
由于pm2有许多有用的配置,因此可以单独再建一个配置文件如pm2.json
{
"apps": [{
"name": "duomaishop",
"script": "server.bundle.js",
"cwd": "./",
"watch": [
"build",
"public"
],//发现改变自动重启
"error_file": "./logs/app-err.log",
"out_file": "./logs/app-out.log",
"log_date_format": "YYYY-MM-DD HH:mm Z"
}]
}
scripts可以添加启动方式:
"scripts": {
"start": "node server.bundle.js",
"pm2": "pm2 start pm2.json"
}
执行:npm run pm2
pm2常用命令:
查看运行状态:pm2 list
资源实时运行情况:pm2 monit
应用详细部署状态:pm2 describe [appId]
查看日志:pm2 logs
重启应用:pm2 restart [appId]
停止应用:pm2 stop [appName|appId|all]
[使用 pm2-web 监控 pm2 服务运行状态](http://blog.csdn.net/dongshaoshuai/article/details/50292937)
- 4、server.js部分代码
var express = require('express')
var compression = require('compression')
var app = express()
var path = require('path')
app.use(compression());
app.use('/build', express.static(path.join(__dirname, 'build')))
app.set('views', path.join(__dirname, 'public'));
app.engine('html', require('consolidate').handlebars);
app.set('view engine', 'html');
app.get('*', function(req, res) {
res.render('index');
});
var PORT = process.env.PORT || 8080
app.listen(PORT, function() {
console.log('server running at localhost:' + PORT)
})