摘要:本篇Node.js教程探讨了Node.js生产环境配置,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入。
本篇Node.js教程探讨了Node.js生产环境配置,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入。
1 理论部分
1.1 方案简介
本文部署了一个Linux + MySQL + Node.js + Express + PM2的生产环境下,我们需要借助PM2的群集模式的特征,PM2带负载均衡功能,是一个完美的Node.js进程管理器,可轻松实现Node.js的服务器多CPU并发,并保证进程永远活着,0秒重载,PM2可监视Node.js底层代码的修改,使得修改代码无需重启Node.js进程。
1.2 Node.js简介
- Node.js是运行在服务端的JavaScript
- Node.js是基于Chrome JavaScript运行时建立的一个平台
- Node.js是事件驱动I/O服务端JavaScript环境,基于Google的V8引擎
注:V8引擎执行Javascript的速度非常快,性能非常好
1.3 Express的简介
Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用(几行代码即可快速地搭建一个完整功能的网站)。
1.4 PM2的简介
PM2的群集模式带负载均衡功能,是一个完美的Node.js进程管理器,可轻松实现Node.js的服务器多CPU并发,并保证进程永远活着,0秒重载,PM2可监视Node.js底层代码的修改,使得修改代码无需重启Node.js进程。
2 Node.js生产环境配置
2.1 环境信息
2.1.1 环境配置
OS = CentOS 7.3 x86_64
IPAddress = 10.168.0.55
App Env = Linux + MySQL + Node.js + express + PM2
2.1.2 配置MySQL源
vim /etc/yum.repos.d/mysql56-community.repo
输入如下内容:
# Enable to use MySQL 5.6[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=//repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=//repo.mysql.com/RPM-GPG-KEY-mysql
2.1.3 配置Node.js源
yum install -y //rpm.nodesource.com/pub_8.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm
2.1.4 配置防火墙
firewall-cmd --permanent --add-port 8080/tcpfirewall-cmd --reload
firewall-cmd --list-all
2.1.5 配置SELinux
setenforce 0sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
2.2 配置MySQL服务
2.2.1 安装MySQL相关包
yum install -y mysql-community-server mysql-community-devel mysql-community-client
2.2.2 启动并配置服务自启动
systemctl start mysqldsystemctl enable mysqld
2.2.3 初始化MySQL服务
mysql_secure_installation
向导如下:
[…]Enter current password for root (enter for none):
[…]
Set root password? [Y/n] y
New password: dbAdminPassword1
Re-enter new password: dbAdminPassword1
[…]
Remove anonymous users? [Y/n] y
[…]
Disallow root login remotely? [Y/n] n
[…]
Remove test database and access to it? [Y/n] y
[…]
Reload privilege tables now? [Y/n] y
[…]
2.2.4 创建数据库
create database nodedb character set utf8;
2.2.5 数据库授权
grant all privileges on nodedb.* to 'nodeDBUser1'@'localhost' identified by 'nodeDBPassword1';
2.3 配置Node.js
2.3.1 安装Node.js包
yum install -y nodejs-8.1.3
2.3.2 配置运行环境
1) 配置运行用户
useradd npmsu - npm
注:如无特殊说明第3章节往下代码都使用npm用户身份执行,而非root
2) 查找npm默认路径
npm config get prefix
显示如下:
/usr
3) 新建npm全局目录
mkdir ~/.npm-global
4) 设置npm全局目录
npm config set prefix '~/.npm-global'
5) 配置npm环境变量
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bash_profilesource ~/.bash_profile
2.3.3 安装全局npm包并保存依赖关系
npm install -g --save express-generator mysql pm2
确认包的安装:
npm ls -g --depth=0
显示如下:
/home/npm/.npm-global/lib├── express-generator@4.15.0
├── mysql@2.13.0
└── pm2@2.6.1
2.3.4 配置express依赖环境
1) 新建项目文件夹
mkdir -p /var/www/project1chown npm:npm /var/www/project1
chmod 755 /var/www
chmod 770 /var/www/project1
注:1)使用root用户身份执行
2) 创建应用程序
su - npmcd /var/www/project1/
express .
3) 安装依赖关系
npm install
4) 建立演示文件
vim express_demo.js
输入如下内容:
var express = require('express')var app = express()
app.get('/', function (req, res) {
res.send('Hello World')
})
app.listen(8080)
5) 启动演示
node express_demo.js
注:【Ctrl+C】退出
6) 测试演示
curl 127.0.0.1:8080
显示如下:
Hello World
注:看到以上信息证明Express包的依赖关系正确。
2.3.5 配置MySQL依赖环境
1) 安装本npm地包
su - npmcd /var/www/project1/
npm install mysql
2) 建立测试演示
vim mysql_demo.js
输入如下内容:
var mysql = require('mysql');var connection = mysql.createConnection({
host : 'localhost',
user : 'nodeDBUser1',
password : 'nodeDBPassword1',
database : 'nodedb'
});
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});
connection.end();
3) 运行测试代码
node mysql_demo.js
显示如下:
The solution is: 2
注:看到以上信息证明MySQL包的依赖关系正确,数据库可正常连接。
2.3.6 配置PM2
1) 启动服务
pm2 start -i 4 express_demo.js --watch
显示如下:
参数解析:
"-i" 启动的应用程序实例数量(整数)"--" watch 监视文件变化并自动重启应用程序
2) 确认群集状态
pm2 list
显示如下:
3) 配置服务自启动
生成启动配置命令:
pm2 savepm2 startup
最后3行显示如下:
[PM2] Writing init configuration in /etc/systemd/system/pm2-npm.service[PM2] You have to run this command as root. Execute the following command:
sudo env PATH=$PATH:/usr/bin /home/npm/.npm-global/lib/node_modules/pm2/bin/pm2 startup systemd -u npm --hp /home/npm
执行配置命令:
exitsudo env PATH=$PATH:/usr/bin /home/npm/.npm-global/lib/node_modules/pm2/bin/pm2 startup systemd -u npm --hp /home/npm
注:以上行需要root身份执行
4)测试PM2服务命令
systemctl status pm2-npm.servicesystemctl stop pm2-npm.service
systemctl start pm2-npm.service
注:以上三行需要root身份执行,以上三条命令能正常运行即可证明PM2服务方式启动OK
5) 浏览器测试
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注WEB前端Node.js频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号