第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 ubuntu 14.04.1 上將 SpringBoot jar 作為服務(wù)部署后出現(xiàn)語法錯誤

在 ubuntu 14.04.1 上將 SpringBoot jar 作為服務(wù)部署后出現(xiàn)語法錯誤

胡子哥哥 2023-03-17 15:26:07
我有一個打包為 jar 文件的 springboot web 應(yīng)用程序。并且產(chǎn)品服務(wù)器是安裝了openjdk-8-jdk的Ubuntu 14.04.1。我可以使用以下方法成功運行應(yīng)用程序:sudo java -jar /home/myUser/my_web_app.jar然后我通過以下命令將此應(yīng)用程序作為 SystemV 服務(wù):sudo useradd webUsersudo passwd webUsersudo chown webUser:webUser /home/myUser/my_web_app.jarsudo chmod 500 /home/myUser/my_web_app.jarsudo ln -s /home/myUser/my_web_app.jar /etc/init.d/my_web_app之后,當(dāng)我運行時:sudo service my_web_app start錯誤引發(fā)為:/etc/init.d/my_web_app: 1: /etc/init.d/my_web_app: Syntax error: ")" unexpected.我想知道是什么原因?qū)е麓隋e誤以及如何解決它。謝謝。順便說一句,同樣的方法適用于我的開發(fā)機器(Ubuntu 14.04.6)。
查看完整描述

2 回答

?
Smart貓小萌

TA貢獻1911條經(jīng)驗 獲得超7個贊

問題是這兩行:

sudo chmod 500 /home/myUser/my_web_app.jar
sudo ln -s /home/myUser/my_web_app.jar /etc/init.d/my_web_app

問題 #1:常規(guī)可執(zhí)行 JAR 文件不是操作系統(tǒng)可識別的可執(zhí)行格式1。

在常規(guī) JAR 文件上設(shè)置執(zhí)行位無濟于事。操作系統(tǒng)內(nèi)核不知道如何運行它。要運行常規(guī) JAR,您必須執(zhí)行命令java -jar /path/to/the.jar。如有必要,您可以創(chuàng)建一個簡單的包裝器腳本來執(zhí)行此操作。

1 - 有一種方法可以生成一個特殊的“完全可執(zhí)行”的 SpringBoot JAR 文件,該文件前面有一個 shell 腳本;請參閱“安裝 Spring Boot 應(yīng)用程序”。這是解決此問題的一種方法,盡管文檔指出這些特殊的 JAR 文件會導(dǎo)致某些工具出現(xiàn)問題。

問題 #2:中的文件/etc/init.d應(yīng)該是服務(wù)腳本。

它們不僅僅是服務(wù)的可執(zhí)行文件。這些腳本應(yīng)該是能夠理解諸如startstop,restart等動詞的 shell 腳本reload。并且(AFAIK)它們必須編碼為sh兼容的 shell 腳本。這是一篇描述服務(wù)腳本結(jié)構(gòu)的文章:

(但請先閱讀問題 #4!?。?/p>

問題 #3:運行服務(wù)root可能存在安全風(fēng)險。

最好創(chuàng)建一個(非特權(quán))服務(wù)帳戶來運行該服務(wù)。如果服務(wù)暴露在網(wǎng)絡(luò)中,這一點尤其重要。(如果壞人可以通過網(wǎng)絡(luò)“破解”該服務(wù)并使其做出不受歡迎的事情,那么它以 root 身份運行的事實會使整個系統(tǒng)處于危險之中。)

問題 #4: /etc/init.d/腳本已過時。

如果您使用的是最新的 Ubuntu 版本(15.04 或更高版本),這些/etc/init.d/腳本是“傳統(tǒng)”配置方式。該initd機制的當(dāng)前迭代是systemd. 它使用systemd 單元文件文件而不是服務(wù)腳本。以下文章提供了更多信息:

systemd服務(wù)包括遺留服務(wù)腳本,但它們不如單元文件強大、靈活和……簡潔……。

問題 #5: Ubuntu 14.04 LTS 已停產(chǎn)。

您應(yīng)該升級到 16.04 LTS 或最好是 18.04 LTS。為您的生產(chǎn)服務(wù)器使用生命周期結(jié)束的操作系統(tǒng)是不明智的。


請注意,網(wǎng)絡(luò)上有很多文檔和很多文章都介紹了配置服務(wù)的新舊方法。(谷歌是你的朋友。)


查看完整回答
反對 回復(fù) 2023-03-17
?
ITMISS

TA貢獻1871條經(jīng)驗 獲得超8個贊

經(jīng)過一番搜索后,我發(fā)現(xiàn) spring boot為Ubuntu 和 CentOS提供了開箱即用的服務(wù)實踐。

我犯的主要錯誤是沒有將我的項目打包為可執(zhí)行 jar。

要使 springboot jar 可執(zhí)行,編輯 POM 文件,將<executbale>標(biāo)簽添加到<configuration>spring-boot-maven-plugin 的標(biāo)簽中,如下所示:

<project>

   ...

   <build>

      <plugins>

         <plugin>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-maven-plugin</artifactId>

            <configuration>

               <executable>true</executable>

            </configuration>

         </plugin>

         ...

      </plugins>

   </build>

   ...

</project>

打包上傳新的可執(zhí)行jar到服務(wù)器


chownjar 給 nologin 用戶,該服務(wù)將由它的所有者運行。


chmod 500jar 給它可執(zhí)行權(quán)限。


添加到 /etc/init.d 的軟鏈接以將其注冊為服務(wù)。


運行服務(wù),到目前為止一切順利。


但正如@Stephen C 所說,默認選項既不夠安全也不是最新的。我認為最好只打包一個 fat jar 并在生產(chǎn)環(huán)境中手動配置服務(wù)。


查看完整回答
反對 回復(fù) 2023-03-17
  • 2 回答
  • 0 關(guān)注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號