Node.js开发指南 Node.js生产环境配置解析
沉沙 2018-07-26 来源 : 阅读 1304 评论 0

摘要:本篇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/tcp

firewall-cmd --reload

firewall-cmd --list-all

   

2.1.5 配置SELinux

setenforce 0

sed -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 mysqld

systemctl 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 npm

su - 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_profile

source  ~/.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/project1

chown npm:npm /var/www/project1

chmod 755 /var/www

chmod 770 /var/www/project1

   

注:1)使用root用户身份执行

2) 创建应用程序

su - npm

cd /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 - npm

cd /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 save

pm2 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

   

执行配置命令:

exit

sudo 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.service

systemctl stop pm2-npm.service

systemctl start pm2-npm.service

   

注:以上三行需要root身份执行,以上三条命令能正常运行即可证明PM2服务方式启动OK

 

5) 浏览器测试

 

 本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注WEB前端Node.js频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程