弹出启动应用程序ssh注销后不工作
所以我在Ubuntu LTS服务器上部署我的Spring Boot应用程序。它使用maven构建,并使用嵌入式Tomcat运行。弹出启动应用程序ssh注销后不工作
我还是新部署过程,我所做的就是:
- 登录到服务器通过SSH
- 使用scp上传my_application.zip
- 其解压到SSH
- java -jar my_application.jar
现在所有这些工作都非常好,我一直在使用它,这样安静一段时间。现在我必须让应用程序在注销shell后保持联机并可用。
我已经阅读了一些关于在Linux上运行进程的背景知识,我试过用nohup java -jar myApplication.jar &
,screen
命令和bg
。当我登录到ssh时,它们都运行良好。当我结束SSH会话的Web应用程序仍然是可用的(所以这个过程显然没有停止),但它只是看起来&行为很古怪
:
这才是我的问题。 CSS不适用,JS不起作用等。
我的猜测是某些路径或文件系统访问会搞砸,但我根本不知道如何来自ssh会话。
(当我重新登录SSH一切又做工精细)
将是巨大的,如果有人在这里的线索
如果您的服务器已加密主目录,则在您注销后它将重新加密,因此脚本将停止工作。在服务器上加密家庭没有多大意义,所以你可以禁用它。
或者只是从不同目录运行脚本,并避免使用主目录下的文件。
我认为你应该使用systemd
这种情况。 也可以为您的应用程序添加新的系统用户。 您可以在这里找到更多的信息:
Spring Boot: 59.2.2 Installation as a systemd service
Ubuntu Wiki: Systemd For UpstartUsers
例如: 创建文件myunit.service
[Unit]
Description=MySpringService
After=syslog.target
After=network.target
After=mysql.service
[Service]
Type=forking
PIDFile=/work/www/myunit/shared/tmp/pids/service.pid
WorkingDirectory=/work/www/myunit/current
User=myunit
Group=myunit
Environment=RACK_ENV=production
OOMScoreAdjust=-1000
ExecStart=/usr/local/bin/bundle exec service -C /work/www/myunit/shared/config/service.rb --daemon
ExecStop=/usr/local/bin/bundle exec service -S /work/www/myunit/shared/tmp/pids/service.state stop
ExecReload=/usr/local/bin/bundle exec service -S /work/www/myunit/shared/tmp/pids/service.state restart
TimeoutSec=300
[Install]
WantedBy=multi-user.target
将文件复制到/etc/systemd/system/
运行: systemctl enable myunit
systemctl start myunit
你有加密的家吗? – Jakuje
如果你问我是否使用SSL,那么是的,我已经在SSL和标准SSL端口8443上配置了应用程序。 –
我问你是否已将Ubuntu配置为加密连接到的用户的家。 – Jakuje