2017-08-15 37 views
2

所以我在Ubuntu LTS服务器上部署我的Spring Boot应用程序。它使用maven构建,并使用嵌入式Tomcat运行。弹出启动应用程序ssh注销后不工作

我还是新部署过程,我所做的就是:

  1. 登录到服务器通过SSH
  2. 使用scp上传my_application.zip
  3. 其解压到SSH
  4. java -jar my_application.jar

现在所有这些工作都非常好,我一直在使用它,这样安静一段时间。现在我必须让应用程序在注销shell后保持联机并可用。

我已经阅读了一些关于在Linux上运行进程的背景知识,我试过用nohup java -jar myApplication.jar &screen命令和bg。当我登录到ssh时,它们都运行良好。当我结束SSH会话的Web应用程序仍然是可用的(所以这个过程显然没有停止),但它只是看起来&行为很古怪

这才是我的问题。 CSS不适用,JS不起作用等。

我的猜测是某些路径或文件系统访问会搞砸,但我根本不知道如何来自ssh会话。

(当我重新登录SSH一切又做工精细)

将是巨大的,如果有人在这里的线索

+0

你有加密的家吗? – Jakuje

+0

如果你问我是否使用SSL,那么是的,我已经在SSL和标准SSL端口8443上配置了应用程序。 –

+1

我问你是否已将Ubuntu配置为加密连接到的用户的家。 – Jakuje

回答

1

如果您的服务器已加密主目录,则在您注销后它将重新加密,因此脚本将停止工作。在服务器上加密家庭没有多大意义,所以你可以禁用它。

或者只是从不同目录运行脚本,并避免使用主目录下的文件。

0

我认为你应该使用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

相关问题