學習node的時候也寫了一些demo。但是只是限於本地測試,從來沒有發布。今天嘗試發布項目。
需要准備的東西
- node 項目:為了突出重點,說明主要問題。我只是拿express 寫了很簡單的demo。
- 服務器:阿里雲或者其他的服務器
- lnmp 點擊查看簡介
- pm2 pm2 是一個帶有負載均衡功能的Node應用的進程管理器.
發布步驟
1. 項目准備
共計兩個文件
- index.js
- package.json
/**
* index.js
* 啟動: node index.js
* app 跨域訪問測試
* @type {[type]}
*/
var express = require('express');
//Post方式請求參數放在請求體里面,需引用body-parser解析body
var bodyParser = require("body-parser");
var app = express();
// 引用
app.use(bodyParser.urlencoded({
extended: false
}));
//設置跨域訪問
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By", ' 3.2.1');
res.header("Content-Type", "application/json;charset=utf-8");
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
//json數據
var data = {
"name": "Test",
"age": "19"
};
app.get('/', function(req, res) {
console.log('get..........');
console.log(req.query);
if (req.query && req.query.callback) {
var str = req.query.callback + "(" + JSON.stringify(data) + ")"; //jsonp
console.log('jsonp: ' + str);
res.end(str);
} else {
console.log('json: ' + JSON.stringify(data));
res.end(JSON.stringify(data));
}
});
app.post('/', function(req, res) {
console.log('post............');
console.log(req.body);
console.log('json: ' + JSON.stringify(data));
res.end(JSON.stringify(data));
});
app.listen(8085, function() {
console.log('Listening on port 8085...');
});
2. 服務器安裝 lnmp
登錄服務器,在根目錄下可以安裝。
- 打開lnmp-install
- 參考 下載並安裝LNMP一鍵安裝包: 復制
wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp
運行。估計20 分鍾。
3. 上傳項目
我們采用手動上傳(當然你可以使用git).
我用的是Mac,使用的工具是Cyberduck。我們上傳的位置是/home/wwwroot/default/LHAAPP
這是我配置好的文件,此時目錄應該只用index.js 和 package.json(不用理會index.html)
我們要安裝package,json里面的包文件。必須在服務器安裝node 我使用的centos系統
yum -y install nodejs
此時可以 npm i
,項目配置好了。
3. 配置域名
我們發布的項目肯定是需要別人訪問,就需要域名。現在我們來配置域名。
解析域名,找到要解析的域名
進入之后點擊 添加解析
4. 二級域名配置
我以下的域名,都使用example.com 代替
www.example.com 已經被占用了。我們需要一個二級域名,二級域名是app.example.com
在服務器下運行lnmp vhost add
根據提示填入信息
Please enter domain(example: www.lnmp.org):
app.example.com
Enter more domain name(example: lnmp.org *.lnmp.org):
enter
Default directory:
/home/wwwroot/LHAAPP/(你自己的目錄文件)
Allow Rewrite rule? (y/n)
n
Allow access log? (y/n)
y
Enter access log filename(Default:test.ibs-bj.com.log):
enter
Create database and MySQL user with same name (y/n)
n
Add SSL Certificate (y/n)
n
要按兩次enter
已經配置好了。我們測試一下,在LHAAPP 下配置一個index.html 測試一下。
5 反向代理
如果不明白反向代理
請自行百度。
用vim 打開usr/local/nginx/conf/nginx.conf
輸入
pstream app.example.com {
# Nodejs app upstream
server 127.0.0.1:8085;
keepalive 64;
}
server {
listen 80;
server_name app.example.com;
#charset koi8-r;
#access_log logs/host.access.log main;
保存,重新啟動nginx
停止 nginx -s quit
啟動 nginx -c /usr/local/nginx/conf/nginx.conf
5 pm2 發布
命令行進入 我們的項目目錄
運行
pm2 start index.js
我們看到
參考文章