服务器:阿里云轻量应用服务器 nodejs
- 进入控制台登陆服务器
解决nvm不是命令
source /root/nvm/nvm.sh // nvm可以帮助你下载nodejs
// nvm下载nodejs
nvm install 10.15.3
镜像帮助文档 包含nvm和下文中的pm2命令
代码管理
使用winSCP图形界面工具 + git 管理
WinSCP文档: https://help.aliyun.com/knowledge_detail/60132.html
下载git yum install git
可以用它创建目录,修改小文件等
本地创建简单demo上传至github,浏览器远程连接进入服务器 创建目录并
git clone
自动运行nodejs
pm2 start app.js // 即自动node app.js
mongodb部署
创建文件夹
下载安装包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.6.tgz
解压:tar -zxvf mongodb-linux-x86_64-4.0.6.tgz
根目录下创建 /data/db文件夹,跟windows上一样,如果不做配置
版本参考地址:https://www.mongodb.com/download-center/community
服务端运行mongodb
// 进入mongodb所在文件夹 下的bin目录,可以参考windows下的mongodb目录,也可以看winscp中的目录结构
./mongod // 可以在windows下尝试尝试
自动运行
/lib/systemd/system/
目录下新建mongodb.service
文件, 名字自己取
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/software/mongodb/bin/mongod
ExecStop=/software/mongodb/bin/mongod --shutdown
[Install]
WantedBy=multi-user.target
创建service文件
服务器重启使其生效
参考文章: https://www.jianshu.com/p/5a104184e010
- 应用
const mongodb = require("mongodb");
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
const express = require('express');
const app = express();
app.get('/', (req, res) => {
MongoClient.connect(url, function(err, client) {
client.db('yuyouxia').collection('music').find({}).toArray( (err, item) => {
res.send(item);
client.close();
})
});
})
app.listen(3000, () => {
console.log('port 3000');
})
创建连接,从yuyouxia
数据库中查询music
集合中查找所有文档,并返回数据
tips: 要先在数据库中插入数据啊
my result
- 其他
nodejs中post请求 中间件 body-parser
使用它可以帮你得到post请求发送过来的参数
const express = require('express');
const app = express();
const fs = require('fs');
const path = require('path');
const bodyParser = require('body-parser');
const interface = require('./interface/interface');
// 解析请求体
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
目前的项目结构
struct
index.js是启动项目的,test是小测试
index.js
const express = require('express');
const app = express();
const fs = require('fs');
const path = require('path');
const bodyParser = require('body-parser');
const interface = require('./interface/interface');
// 解析请求体
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
// 首页
app.get('/', (req, res) => {
const html = fs.readFileSync(path.resolve(__dirname, './index.html'), 'utf-8');
res.send(html);
});
// 接口请求
app.use('/api', interface);
// 找不到则404
app.use((req, res, next) => {
const html = fs.readFileSync(path.resolve(__dirname, './src/a.html'), 'utf-8');
res.send(html);
})
// 3000端口监听
app.listen(3000, () => {
console.log('port 3000');
});
新浪云的nodejs部署比阿里云的要方便,个人感觉