Node.js简介
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效,非常适合运行在分布式设备的数据密集型的实时应用。Node.js 的包管理器 npm,是全球最大的开源库生态系统
典型的应用场景包括:
- 实时应用:如在线聊天,实时通知推送等等(如socket.io)
- 分布式应用:通过高效的并行I/O使用已有的数据
- 工具类应用:海量的工具,小到前端压缩部署(如grunt),大到桌面图形界面应用程序
- 游戏类应用:游戏领域对实时和并发有很高的要求(如网易的pomelo框架)
- 利用稳定接口提升Web渲染能力
- 前后端编程语言环境统一:前端开发人员可以非常快速地切入到服务器端的开发(如著名的
纯Javascript全栈式MEAN架构)
node部署
wget https://nodejs.org/dist/v10.16.1/node-v10.16.1-linux-x64.tar.xz
tar xf node-v10.16.1-linux-x64.tar.xz -C /usr/local/
ln -s node-v10.16.1-linux-x64 node
配置node环境变量
vim /etc/profile.d/node.sh
export PATH=$PATH:/usr/local/node/bin
npm配置仓库源
npm config set registry https://registry.npm.taobao.org/
cat /root/.npmrc
registry=https://registry.npm.taobao.org/
测试项目hello world
vim example.js
const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
启动项目
node example.js &>/dev/null &
安装依赖项
Node包管理器(npm)是Node自带的工具,可以轻松安装第三方Node模块。
它用一行命令就能从package.json文件中读出依赖项,把它们都装好
在项目根目录下执行:
npm install
你应该能看到一个新创建的node_modules目录,这个目录中放的就是程序的依赖项
使用 NPM 安装 PM2
npm install pm2 -g
准备MySQL
create database firekylin character set utf8 collate utf8_general_ci;
grant all on firekylin.* to 'firekylin'@'127.0.0.1' identified by '123456';
mysql -h 127.0.0.1 -ufirekylin -p123456
Firekylin
FireKylin 开源博客系统,是由奇虎360公司Web前端工程师组成的专业团队 75Team 进行开发和维护
wget https://firekylin.org/release/latest.tar.gz
tar xf latest.tar.gz
cd firekylin
npm install
复制项目下的 pm2_default.json 文件生成新文件 pm2.json
cp pm2_default.json pm2.json
修改 pm2.json 文件中的 cwd 配置值为项目的当前路径
/opt/firekylin
vim pm2.json
{
"apps": [{
"name": "firekylin",
"script": "www/production.js",
"cwd": "/opt/firekylin",
"exec_mode": "fork",
"max_memory_restart": "1G",
"autorestart": true,
"node_args": [],
"args": [],
"env": {
}
}]
}
启动项目
pm2 startOrReload pm2.json
设置端口
firewall-cmd --zone=public --add-port=8360/tcp --permanent
访问
http://ip:8360/
后台
http://ip:8360/admin