(本文刊发于《网络安全和信息化》2019年第3期)
Node.js作为一个新兴的前端框架,后台语言,发布于2009年5月,它并不是一个类似jQuery的JavaScript框架,而是一个运行环境(runtime environment),是一个让JavaScript运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。与其他编程语言有所不同的是,Node.js能快速地构建起WEB服务器,并可以与前端AJAX配合,以前后端分离的方式完成网站的功能。
LNMP代表的就是Linux系统下Nginx+MySQL+PHP这种网站服务器架构,在LNMP环境中,我们很轻松地就可以安装并运行Node.js。
一、在CentOs7服务器系统中安装LNMP。
在安装前先在终端执行命令:
# screen -S lnmp
如果提示找不到命令就yum安装 screen:
# yum install screen
然后就可以安装LNMP了:
# cd /usr/local/src
# wget -c http://soft.vpser.net/lnmp/lnmp1.5beta.tar.gz && tar zxf lnmp1.5beta.tar.gz && cd lnmp1.5 && ./install.sh lnmp
这个安装过程虽然时间很长,但按照一步一步的提示完全可以轻松完成。
二、安装Node.js。
# cd /usr/local/scr/
# wget https://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-x64.tar.xz
# xz -d node-v10.13.0-linux-x64.tar.xz
# tar -xf node-v10.13.0-linux-x64.tar
# ln -s ~/node-v10.13.0-linux-x64/bin/node /usr/bin/node
# ln -s ~/node-v10.13.0-linux-x64/bin/npm /usr/bin/npm
安装完成后,就可以用以下命令查看版本来验证是否安装成功。
# node -v
# npm -v
可以根据需要再安装一些Node.js的常用模块:
# npm install nodemailer #邮件发送模块
# npm install mysql #mysql数据库驱动模块
# npm install redis #内存数据库模块
三、在站点内server文件夹中建立server.js 来创建服务。
# cd /home/wwwroot/nodejs.qhdedu.com/server
# vi server.js
输入以下内容:
const http = require('http')
const hostname = '127.0.0.1'
const port = 8536
const server = http.createServer((req, res) =>
{
res.statusCode = 200
res.setHeader('Content-Type', 'text/plain; charset=utf-8')
var postData = "";
res.end(hostname +'服务器启动成功')
})
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`)
})
四、安装forever以此启动并持续运行server.js。
# npm install forever -g
# cd /etc/init.d/
# vi forever.sh
在新建的文forever.sh中输入以下内容:
#!/bin/sh
#下面是要启动服务的命令 同service forever start *.js
/root/node-v10.13.0-linux-x64/bin/forever start /home/wwwroot/nodejs.qhdedu.com /server/server.js
然后再把此脚本设置成服务。
# chmod +x forever.sh
# chkconfig --add forever.sh
五、前端页面生成AJAX提交。
# cd /home/wwwroot/nodejs.qhdedu.com
# vi index.html
以下为index.html页面内容:
<!DOCTYPE html>
<html>
<head>
<title>测试</title>
<script src="js/jquery-2.1.5.min.js" type="text/javascript"></script>
</head>
<body>
<div id="div1">正在读取</div>
<script charset="utf-8" type="text/javascript">
var strtemp="/server/?act=1234";
strtemp = encodeURI(strtemp);
$.ajax({
type: "Post",
url: strtemp,
data: {data1:'13D17C93EDB',},
cache: false,
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
success: function (tempstr) {
$("#div1").html("已经读取:" + tempstr);
}
});
</script>
</body>
</html>
六、Nginx中设置反向代理。
在Nginx中建立一个nodejs.qhdedu.com站点,在其对应的nodejs.qhdedu.com.conf配置文件中,要有以下设置:
listen 80; #侦听80端口
…………
location /server {
proxy_pass http://127.0.0.1:8536; #反向代理
}
…………
重新启动系统后,就可以用http://nodejs.qhdedu.com 来访问这个网站了,当然如果用http://nodejs.qhdedu.com:8536这个带端口号的地址访问会报错,因为Noejs创建的WEB服务器工作于127.0.0.1,一般用来在后端处理前端提交的AJAX。若想用http://nodejs.qhdedu.com:8536直接访问,请在server.js及nodejs.qhdedu.com.conf中把127.0.0.1换成其外网地址即可。
本文作者:赵学作,河北科技师范学院副教授,研究方向:网站建设及软件开发。