如果Linux里还没安装mysql数据库,可以参考这个链接:Linux安装配置mysql数据库
Linux版本:Linux CentOS7
目录
1、wegt 安装Nodejs
下载安装包
wget https://nodejs.org/dist/v12.16.3/node-v12.16.3-linux-x64.tar.xz
解压
tar -xvf node-v12.16.3-linux-x64.tar.xz
#移动到/usr/local,并重命名为node,方便
mv node-v12.16.3-linux-x64 /usr/local/node
由于node文件夹的 bin 目录底下包含了 node、npm 等命令,我们可以修改linux系统的环境变量(profile)来设置直接运行命令
打开文件
vi /etc/profile
在文件的最后面添加下面内容(添加环境变量)
export PATH=$PATH:/usr/local/node/bin
保存,并更新文件
source /etc/profile
然后判断是否成功
node -v
npm -v
2、安装mysql数据库驱动
在安装驱动前先说明一下:在执行下面的命令后,会在当前目录生成一个node_modules文件夹,而我们之后所创建js脚本,都必须和这个文件夹处在同一个目录下,或者在 这个node_modules目录的同级目录的子目录里,否则运行node 脚本.js就会报cannot find module 'mysql'错误,所以在安装的时候自己先选择好位置。此外,如果在其他目录要想执行脚本,那么就得重新再继续执行下面的命令,才能运行脚本,如果只是单纯的移动node_modules文件,也会出错的。
附:如果不需要数据库连接,就没有上面的限制,也就没必要安装数据库驱动了)
如图所示,mysqlTest.js的位置可以是在下面所写的位置【字有点丑ㄟ( ▔, ▔ )ㄏ 】
好了,了解了之后就可以安装驱动了
npm install mysql
成功后显示如下:
更新:如果下载后的输出不太一样没关系,你先看看能不能连接再说,我后面回滚重新尝试发现输出有一些提示警告,但都没什么问题。
3、创建脚本并测试连接
3.1 在当前目录创建脚本
vi mysqlTest.js
3.2 在文件添加一下内容(帐号、密码、数据库、sql语句根据自己地进行修改)
var http = require('http');
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root', //帐号
password : '123456', //密码
database : 'user' //数据库
});
connection.connect();//连接
var name="";
//sql语句根据自己需要进行修改
connection.query('SELECT * FROM student', function (error, results, fields) {
if (error) throw error; //错误则抛出异常
//这个是在命令行里显示的
console.log('The result is: ', results[0].name);
name=results[0].name;
});
//将内容显示到浏览器上
http.createServer(function (request, response) {
// 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain
response.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'});
// 发送响应数据
response.end("这是通过Nodejs访问数据库得到的\n这是我的名字:"+name);
}).listen(8888); //端口号
3.3 执行文件
node mysqlTest.js
终端显示如下 :
在浏览器输入公网ip:8888,显示如下:
3.4 结束命令
按ctrl+c结束此次执行
4 公网访问
4.1 &命令后台执行
但是这个一旦关闭终端或者与服务器失去连接时就会结束进程,所以只能被pass掉了。
在原来的命令后面加上&
node mysqlTest.js &
这样就可以将命令放在后台继续执行
4.2 nohup命令的引入
更新:这个命令虽然比之上一个稍微好一点,在关闭终端后可以访问,但好像持续时间不长,我前一天才刚弄好,关闭终端,测试后发现可以,以为成功了,第二天再来测试,发现又崩了,无奈又被pass掉。下面的是我关于nohup命令的测试过程,需要的可以看一下。
由于上面的命令不可行,我就继续查找资料,看到了nohup命令,看清楚,是nohup,而不是nohub,我就是一直看错了然后导致命令找不到。
如果发现命令找不到,那就先安装工具
yum install coreutils
然后通过命令查看是否有nohup
#两者皆可
whereis nohup
which nohup
nohup得用法就是
nohup command &
如果command命令里没有将输出重定向,那么系统会自己在当前目录自动生成一个nohup.out文件,然后重定向。
如果不想要保存输出消息,甚至不想输出提示,可以直接这样
nohup command 2>/dev/null &
/dev/null 文件相当于一个垃圾箱,所有不要的东西都可以扔到这里面去,他会自动清除掉。
2>/dev/null 表示将一些提示信息一起重定向到“垃圾箱”里
讲了这么多,下面的才是改进得命令
nohup node mysqlTest.js 2>/dev/null &
#然后按回车
#exit这一步一定要做,否则你关闭终端后还是会无法访问
exit
按照上面的操作做完后,就算关闭终端也可以直接去浏览器进行访问公网ip:8888了
重新打开终端,想要查看刚才得进程得话
ps -ef | grep mysqlTest.js
可以看到后台进程里那个node mysqlTest.js 命令还在执行
如果想要关闭进程
#pid为刚才ps -ef | grep MySQLTest.js 后显示出来得第二个字段的数字,即root后面跟着的数字
kill pid号
#如上图所示,那么就应该执行
kill 31355
4.3 pm2的引入
经过上面两个失败,我又找到了另一个pm2的命令,我一个朋友就是用了这个命令,然后成功了,但是不知道为什么,我在下载的时候,一直出错,不知道什么原因,所以只好放弃这个方法。不过还是记录一下过程
安装
npm install pm2
如果成功安装了的话,那么在/usr/local/node/bin里会出现pm2这个文件
如果按照我上面的操作做了的话
pm2 start mysqlTest.js
然后应该就可以了
4.4 forever的引入
在下载forever过程中,我下载的比较慢(可能是网速问题吧)
下载
npm install forever -g
下载成功后显示如下:
在/usr/local/node/bin里面就有了forever这个文件
使用forever启动js
forever start mysqlTest.js
r
停止js文件命令
forever stop mysqlTest.js
查看启动情况
forever list
5、开机自启动
我的思路是写一个运行脚本,然后在/etc/init.d/目录下添加自启动服务
首先先创建一个文件forever.sh(名字自己定,我这里是放在/root/node/service目录下,可以放在其他位置,但是下面的forever服务脚本也需要相对应的改掉),添加文件内容为
#!/bin/bash
# 定义一些字符串变量,在shell中字符串可以不需要加"",所以这里直接写路径【一定要绝对路径,避免路径问题执行出错】
PATH=/usr/local/node/bin
DEAMON=/root/node/mysqlTest.js
#下面的目录文件需要自己创建,或者自己可以根据自己需要更改
log_path=/root/node/logs
out_file=/root/node/logs/out_file_test.log
err_file=/root/node/logs/err_file_test.log
# 这里的$1 是当前shell文件执行命令传入的参数,比如执行【./nodej_test start】命令,自动会执行start匹配的命令
# 我这里没有使用pid进程管理,直接开启某个执行文件或停止所有即可【根据自己的需求来】
case "$1" in
start)
forever start -p $log_path -o $out_file $DEAMON
;;
stopall)
forever stopall
;;
restartall)
forever restartall
;;
list)
forever list
;;
*)
echo "Usage: /etc.init.d/node {start|stop|restart|reload|stopall|restartall|list}"
exit 1
;;
esac
exit 0
然后先运行一下脚本看看是否正确(这里是要加参数的,start/stopall...)
sh forever.sh start
看看是否能访问页面,或者输出和下面差不多,就表示脚本是ok的
接下来到/etc/init.d目录下创建一个系统服务,我这里命名为forever
vi /etc/init.d/forever
添加下面内容
#!/bin/bash
# chkconfig: 354 88 08
# description: Forever for Node.js
# 上面这段解释代码必须要,否则你添加到chkconfig会提示错误:service X does not support chkconfig
/bin/bash /root/node/service/forever.sh start
然后就修改文件权限,将这个文件添加到系统中开机启动
# 第一步:下面755这一步是别的文章介绍的,不知道用不用,不过加上也无所谓,所以我也一并执行了
chmod a+x forever
chmod 755 /etc/init.d/forever
# 第二步:把forever添加到系统服务器上开机启动
chkconfig --add /etc/init.d/forever
# 第三步:启动,开启forever服务
chkconfig forever on
#第四步:查看服务
chkconfig --list
最后重启服务器测试一下,就没问题了!!!
参考链接:
安装nodejs: https://blog.csdn.net/LittleSeedling/article/details/105907364
nodejs连接数据库: https://www.runoob.com/nodejs/nodejs-mysql.html
linux-node后台启动: https://blog.csdn.net/qxianx/article/details/80671416
forever开机自启动: https://blog.csdn.net/weixin_43343144/article/details/100030314