打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
把Nodejs做成CentOS系统服务并开机启动
CentOS的Daemon机制
systemd守护一个进程的前提条件是它知道它要守护的进程的PID。Linux进程通讯有一个不成文的规则,一个进程告诉另外一进程自己的PID的一个方法是把自己的进程的PID这个数值以文本流写入文件。只写PID,其它的什么都不用写,大家约定俗成,把这样的文件的扩展名约定为pid,文件名没有要求,部署维护的人知道它是什么意思就行。PID文件一般保存到/run目录下。当进程启动的时候要判断这个PID文件是否存在,如果存在就把它删除。如果删除失败进告诉用户此进程无法被守护进程托管。当进程退出的时候要删除此PID文件。
启动Nodejs网站
下面一个示例,Nodejs代替Apache,随Linux系统开机启动,只托管一个网站。新建一个index.htm文件,源代码如下:
[html] view plain copy
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Daemon Demo</title>
</head>
<body>
<h1 align="center">
Daemon Demo
</h1>
</body>
</html>
这里引用Koa快速搭建一个静态网站,引用的组件是:Koa和Koa-Serve-Statis。网站只需要一个主程序app.js,它的源代码如下:
[javascript] view plain copy
var  Koa = require('koa') ;
var serveStatic=require('koa-serve-static');
var fs=require('fs');
var pidPath='/run/daemon-demo.pid';
var fd=fs.openSync(pidPath,'w+');
fs.writeSync(fd,process.pid.toString(),{flag:'w+'});
fs.closeSync(fd);
var app=new Koa();
app.use(serveStatic(__dirname,{}));
app.listen(2201);
fs.unlinkSync(pidPath);
运行:
[python] view plain copy
npm i -save koa koa-serve-static
node app.js
浏览器确认服务启动成功。随后关闭网站,准备让CentOS的守护进程启动服务。
增加一个CentOS系统服务
新建一个名称为daemon-demo.service的文本文件,写入以下代码:
[python] view plain copy
[Unit]
Description=daemon-demo.service
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/daemon-demo.pid
ExecStart=/bin/setsid /usr/bin/node /var/www/daemon-demo/app.js
Restart=/bin/pkill node && /bin/setsid /usr/bin/node /var/www/daemon-demo/app.js
ExecStop=/bin/pkill node
ExecReload=
PrivateTmp=true
RemainAfterExit=yes
ExecStartPre=
[Install]
WantedBy=multi-user.target
把daemon-demo.service上传到CentOS服务器,把它复制到以下位置:
[python] view plain copy
/usr/lib/systemd/system/
运行命令使服务开机自动启动:
[python] view plain copy
sudo systemctl enable daemon-demo
把网站的源代码上传到CentOS服务器,并保存到以下位置:[python] view plain copy
/var/www/daemon-demo
SELinux安全设置和防火墙的设置请参照文章:CentOS 7 在SELinux保护下安全打开端口。设置完毕后启动服务:[python] view plain copy
sudo systemctl start daemon-demo
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
编程语言PHP Daemon开发-使用QPM管理PID文件
进程PID文件
Linux 守护进程的编程方法
Linux 查看端口占用情况
linux守护进程的编写
Nginx主模块(一)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服