ssh注销

时间:2017-08-15 09:31:35

标签: java linux spring maven ssh

所以我在Ubuntu LTS服务器上部署我的Spring Boot应用程序。它使用maven构建并运行嵌入式Tomcat。

我仍然是部署过程的新手,我所做的是:

  1. 通过ssh登录服务器
  2. 使用scp上传my_application.zip
  3. 在ssh中解压缩
  4. java -jar my_application.jar
  5. 现在所有这些都完美无缺,而且我一直在使用它这样安静一段时间。现在,我必须在退出shell后使应用程序保持在线并可用。

    我已经阅读了一些关于在Linux后台运行流程的文档,我已经使用nohup java -jar myApplication.jar &命令和screen尝试了bg。当我登录ssh时,所有这些都工作正常。

    我的问题出现了:

    一旦我结束了ssh会话,Web应用程序仍然可用(因此该过程显然没有停止)但它只是看起来&表现得很奇怪。 CSS没有应用,JS不起作用等。

    我的猜测是某些路径或文件系统访问被搞砸了,但我完全不知道它是如何产生于ssh会话的。

    (当我重新登录ssh时,一切都恢复正常)

    如果有人在这里有线索会很棒

2 个答案:

答案 0 :(得分:1)

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

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

答案 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