簡體   English   中英

如何讓我的服務器應用程序在 EC2 實例上運行?

[英]How do I make my server application run on an EC2 instance?

我開發了一個 Java 服務器(使用 Spring)並使用 FileZilla 將最終的可執行文件 JAR 上傳到 EC2 實例。 現在我想讓它運行。

我已經通過 SSH 連接並使用java -jar server.jar來運行我的服務器,並且它有效(我已經嘗試訪問它)。 然而,一旦 SSH 連接關閉,服務器顯然也會停止運行。

我怎樣才能以這種方式啟動我的應用程序以使其保持運行?

編輯:使用此處解釋的命令screen ,我能夠在后台運行它,因此它一直在運行。

問題不在於雲,它取決於在系統中將jar作為服務運行所需的配置。 如果您使用的是Elastic Bean Stalk ,請在以下示例中將systemctl更改為initctl

  1. 將希望運行的腳本命令放在/usr/bin/demoscript.sh中
  2. 請記住使用chmod + x使腳本可執行。
  3. 創建以下文件:

/usr/lib/systemd/system/demo.service

[Unit]
Description=Demo Script

[Service]
Type=forking
ExecStart=/usr/bin/demoscript.sh
  1. 重新加載systemd服務文件:systemctl daemon-reload
  2. 檢查它是否與systemctl start demo一起使用

您需要使其在Linux中作為守護進程運行。

有許多教程/模板可用於創建守護程序shell腳本。 快速的Google搜索顯示github有很多模板,因此請檢查一下。

您可以嘗試使用 systemd,它是一個 Linux 服務管理器。 您可以使用它在后台運行您的服務。

為此,您需要首先創建一個描述 systemd 應如何管理您的服務的unit file (更多信息,請點擊此處)。

sudo vim /etc/systemd/system/your-application.service

您的文件可能看起來像這樣

[Unit]
Description=Java Application as a Service
[Service]
User=ec2-user
#change this directory into your workspace
#mkdir workspace 
WorkingDirectory=/home/ec2-user/workspace
#path to the executable bash script which executes the jar file
ExecStart=/bin/bash /home/ec2-user/workspace/your-script.sh
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target

然后在您的主目錄/home/ec2-user/workspace中,您可以創建 bash 腳本來運行您的 java 應用程序。

sudo nano your-script.sh

您的腳本可能如下所示

#!/bin/sh
java -jar your-application.jar

然后您需要做的就是使用命令啟動服務

sudo systemctl enable your-application.service
sudo systemctl start your-application.service

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM