zoukankan      html  css  js  c++  java
  • linux debain systemd 开机启动 nodejs 兼容原initd启动 forever 开机自启

    布署环境为debian 7.5

    布署到一台新机器,系统版本为debian 8.0

    原启动项

    /etc/init.d/mongo_service

    开机居然无法自起

    开机自启动不能用了,看页面输出就发觉不对劲,确定是systemd,之前搭建部署coreos(也是用的systemd) docker kubernetes接触过,很亲切,只是迁移要费点时间。

    原来debian升级8.0后,改为用systemd管理启动项。

    查资料知,兼容原启动管理,systemd 会自动生成 unit。

    输入

    systemctl enable mongo_service

    systemd 会根据原/etc/init.d/mongo_service的内容自动创建一个新的 service 内容如下

    root@debian:~# systemctl cat mongo_service.service 
    # /run/systemd/generator.late/mongo_service.service
    # Automatically generated by systemd-sysv-generator
    
    [Unit]
    SourcePath=/etc/init.d/mongo_service
    Description=LSB: An object/document-oriented database
    Before=runlevel2.target runlevel3.target runlevel4.target runlevel5.target shutdown.target
    After=network-online.target local-fs.target remote-fs.target nss-lookup.target
    Wants=network-online.target
    Conflicts=shutdown.target
    
    [Service]
    Type=forking
    Restart=no
    TimeoutSec=5min
    IgnoreSIGPIPE=no
    KillMode=process
    GuessMainPID=no
    RemainAfterExit=yes
    SysVStartPriority=1
    ExecStart=/etc/init.d/mongo_service start
    ExecStop=/etc/init.d/mongo_service stop

    reboot 启动 OK

    试了试forever 的开机自起。

    这东西曾经比较麻烦,写在rc里,执行不起来。

    一般的解决办法是是写个shell执行 foreve 再把这个shell加为service 并设置开机启动。

    到了systemd这里,非常简单。

    只要设个service就行。

    内容如下

    # /etc/systemd/system/hellowordweb.service
    [Unit]
    Description=hello wrod web site
    After=mongo_service.service
    Wants=network-online.target
    Conflicts=shutdown.target
    
    [Service]
    Type=forking
    Restart=no
    TimeoutSec=5min
    ExecStart=/bin/forever start /root/hellowordweb/bin/cluster.js 
    ExecStop=/bin/forever stop /root/hellowordweb/bin/cluster.js

    以下是启动日志

    root@debian:~# systemctl status hellowordweb.service

    hellowordweb.service - xiaoyun audit web site
       Loaded: loaded (/etc/systemd/system/hellowordweb.service; enabled)
       Active: active (running) since Mon 2015-06-01 06:22:49 EDT; 1s ago
      Process: 1128 ExecStart=/bin/forever start /root/hellowordweb/bin/cluster.js (code=exited, status=0/SUCCESS)
     Main PID: 1133 (node)
       CGroup: /system.slice/hellowordweb.service
               ├─1133 /root/node-v0.12.4-linux-x64/bin/node /lib/node_modules/forever/bin/monitor /root/hellowordweb/bin/cluster.js
               ├─1134 test-xiaoyun-data-api: master
               ├─1135 test-xiaoyun-data-api: worker 1
               └─1136 test-xiaoyun-data-api: worker 2
  • 相关阅读:
    将数据加载到内存中
    反射,Java开发者必须跨越的坎
    Eclipse中Java文件图标由实心J变成空心J的问题
    Maven项目 解决cannot be read or is not a valid ZIP file问题
    MyEclipse中SVN
    常用的 正则验证等
    前台传递数组后台通过json字符串承接和处理
    img标签图片与图片背景的区别和使用场景
    数据库的特性和事务的特性
    redis在EOS7上面进行开启和停止的命令
  • 原文地址:https://www.cnblogs.com/zihunqingxin/p/4544657.html
Copyright © 2011-2022 走看看