如何开机自启 Seata Server 和 Nacos(或者说 Tomcat/基于 Tomcat 开发的程序),试了好多方案都不行 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
LxnChan
V2EX    Linux

如何开机自启 Seata Server 和 Nacos(或者说 Tomcat/基于 Tomcat 开发的程序),试了好多方案都不行

  •  
  •   LxnChan
    lxnchan 2022-12-06 13:51:53 +08:00 2478 次点击
    这是一个创建于 1042 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,Seata 和 Nacos 的自启问题。

    很久之前我提过一个类似的问题,t/887703 ,当时就是需要执行 Tomcat 的启动脚本,不过当时用 rc-local 解决了,现在却怎么也启动不了了。

    这种基于 tomcat 开发的程序大多是有一个启动脚本,执行该脚本后后会自动在后台启动对应的程序。


    现在已经尝试过的方案:

    1. rc-local ,无法启动且没法调试,不知道哪里出错;
    2. crontab(@reboot),同上;
    3. Systemd ,有报错,但是不知道如何解决

    systemd 的 service 文件:

    [Unit] Description = NacOS After = network.target syslog.target Wants = network.target [Service] Type=forking EnvirOnment= "JAVA_HOME=/usr/local/jdk1.8.0_291" EnvirOnment= "JRE_HOME=/usr/local/jdk1.8.0_291/jre" EnvirOnment= "CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib" EnvirOnment= "PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin" ExecStart=/opt/nacos/bin/startup.sh -m standalone #ExecStop=/opt/nacos/bin/shutdown.sh [Install] WantedBy = multi-user.target 

    报错:

    ● nacos.service - NacOS Loaded: loaded (/etc/systemd/system/nacos.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Tue 2022-12-06 13:35:11 CST; 1min 47s ago Process: 1048 ExecStart=/opt/nacos/bin/startup.sh -m standalone (code=exited, status=0/SUCCESS) Main PID: 1278 (code=exited, status=127) Dec 06 13:35:09 localhost.localdomain systemd[1]: Starting NacOS... Dec 06 13:35:09 localhost.localdomain startup.sh[1048]: /opt/nacos/bin/startup.sh: line 19: uname: command not found Dec 06 13:35:09 localhost.localdomain startup.sh[1048]: /opt/nacos/bin/startup.sh: line 108: sed: command not found Dec 06 13:35:11 localhost.localdomain startup.sh[1048]: /usr/local/jdk1.8.0_291/bin/java -Xms2048m -Xmx2048m -Xmn256m -Dnacos.st...:+Prin Dec 06 13:35:11 localhost.localdomain startup.sh[1048]: nacos is starting with standalone Dec 06 13:35:11 localhost.localdomain startup.sh[1048]: nacos is starting ,you can check the /opt/nacos/logs/start.out Dec 06 13:35:11 localhost.localdomain systemd[1]: Started NacOS. Dec 06 13:35:11 localhost.localdomain systemd[1]: nacos.service: main process exited, code=exited, status=127/n/a Dec 06 13:35:11 localhost.localdomain systemd[1]: Unit nacos.service entered failed state. Dec 06 13:35:11 localhost.localdomain systemd[1]: nacos.service failed. Hint: Some lines were ellipsized, use -l to show in full. 

    /opt/nacos/logs/start.out内容:

    /usr/local/jdk1.8.0_291/bin/java -Xms2048m -Xmx2048m -Xmn256m -Dnacos.standalOne=true -Dnacos.member.list= -Djava.ext.dirs=/usr/local/jdk1.8.0_291/jre/lib/ext:/usr/local/jdk1.8.0_291/lib/ext -Xloggc:/opt/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/opt/nacos/plugins/health,/opt/nacos/plugins/cmdb -Dnacos.home=/opt/nacos -jar /opt/nacos/target/nacos-server.jar --spring.config.additional-location=file:/opt/nacos/conf/ --logging.cOnfig=/opt/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288 /opt/nacos/bin/startup.sh: line 142: nohup: command not found 
    9 条回复    2022-12-07 01:42:10 +08:00
    vibbow
        1
    vibbow  
       2022-12-06 15:50:57 +08:00
    盲猜是环境变量不对
    roiding
        2
    roiding  
       2022-12-06 17:17:59 +08:00
    找不到 nohup 哇噢 好神奇
    zbatman
        3
    zbatman  
       2022-12-06 17:24:03 +08:00
    Description = NacOS
    看到这句话我还寻思又出什么新 OS 了
    wangyu17455
        4
    wangyu17455  
       2022-12-06 19:24:39 +08:00
    实在不行塞 docker 里用 docker 的自启?
    tairan2006
        5
    tairan2006  
       2022-12-06 19:54:09 +08:00
    应该就是环境变量问题,你手动能启动的话就不需要设置那么多环境变量啊。
    581996
        6
    581996  
       2022-12-06 23:21:25 +08:00
    我是直接 docker 省事
    yso
        7
    yso  
       2022-12-07 00:58:31 +08:00
    再写一个 shell 脚本,把环境变量放进去呢?
    ec0
        8
    ec0  
       2022-12-07 01:31:34 +08:00
    Environment 不支持变量,所以你的 4 个 Environment 只有前两个是正常的,后面两个 Environment 里的变量没有展开
    比如 PATH 的内容就是 “$PATH:$JAVA_HOME/bin:$JRE_HOME/bin” ,这会导致命令无法找到,从而报错

    所以你可以

    1. 不使用变量,手动展开变量,比如
    EnvirOnment= "CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib"
    改成
    EnvirOnment= "CLASS_PATH=.:/usr/local/jdk1.8.0_291/lib/dt.jar:/usr/local/jdk1.8.0_291/lib/tools.jar:/usr/local/jdk1.8.0_291/jre/lib"

    2. 如 7F 所说 ,再写一个 shell 脚本,把环境变量放进去,在新 shell 脚本调用 startup.sh ,或者直接修改 startup.sh ,在 startup.sh 的开头设置环境变量
    ec0
        9
    ec0  
       2022-12-07 01:42:10 +08:00
    还有,修改 Service 后需要 systemctl daemon-reload
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5494 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 07:35 PVG 15:35 LAX 00:35 JFK 03:35
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86