項目部署到Linux

来源:https://www.cnblogs.com/helong-123/archive/2022/07/27/16523961.html
-Advertisement-
Play Games

鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 項目部署 之前我們講解Linux操作系統時,就提到,我們服務端開發工程師學習Linux系統的目的就是將來我們開發的項目絕大部分情況下都需要部署在Linux系統中。那麼在本章節,我們將通過兩種方式,來演示項目部署,分別是:手動部署項目 和 基於sh ...


鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站

項目部署

之前我們講解Linux操作系統時,就提到,我們服務端開發工程師學習Linux系統的目的就是將來我們開發的項目絕大部分情況下都需要部署在Linux系統中。那麼在本章節,我們將通過兩種方式,來演示項目部署,分別是:手動部署項目 和 基於shell腳本自動部署。

3.1、手動部署項目

3.1.1、在IDEA中開發SpringBoot項目並打包成jar包

創建一個簡單的項目,結構如下所示

file

項目運行結果

file

執行package指令,進行打包操作,將當前的SpringBoot項目,打包成jar包

操作步驟

  • Step1
 <build>
        <!--指定jar的名字-->
        <finalName>helloworld</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
  • Step2
# 清理、打包 跳過測試
mvn clean package -Dmaven.test.skip=true
  • Step3
# 運行
java -jar xxx.jar
  • Step4

瀏覽器訪問:http://localhost:8080/hello

3.1.2、將jar包上傳到Linux並運行

將打好的jar包上傳至Linux伺服器的 /usr/local/app 目錄下

  • mkdir /usr/local/app

  • cd /usr/local/app

啟動SpringBoot項目

  • 由於我們的項目已經打成jar包上傳上來到Linux伺服器,我們只需要運行這個jar包項目就啟動起來了,所以只需要執行如下指令即可:
  • java -jar helloworld.jar
  • 運行結果

file

PS

由於前面安裝的Tomcat在啟動時,會占用埠號8080,而當前springboot項目我們沒有配置埠號,預設也是8080,所以我們要想啟動springboot項目,需要把之前運行的Tomcat停止掉

開放埠,確保埠對外開放,可以訪問SpringBoot項目

firewall-cmd --zone=public --list-ports

file

如果防火牆沒有開放對應的埠,還需要先開放埠

  • firewall-cmd --zone=public --add-port=8080/tcp --permanent
  • firewall-cmd --reload

訪問測試

http://192.168.222.135:8080/hello

file

成功運行項目後的問題

當前我們項目啟動的這個視窗被霸屏占用了,如果我們把這個視窗關閉掉(或ctrl+c),當前服務也就訪問不到了

3.1.3、手動部署項目優化

解決上述霸屏問題的解決方法就是讓部署的項目在後臺運行

這個時候我們需要使用到linux中的一個命令 nohup ,接下來,就來介紹一下nohup命令

  • nohup命令:英文全稱 no hang up(不掛斷),用於不掛斷地運行指定命令,退出終端不會影響程式的運行

  • 語法格式: nohup Command [ Arg … ][&]

  • 參數說明:

Command:要執行的命令

Arg:一些參數,可以指定輸出文件

&:讓命令在後臺運行

  • 舉例:

nohup java -jar boot工程.jar &> hello.log &

上述指令的含義為: 後臺運行 java -jar 命令,並將日誌輸出到hello.log文件

綜上所得,要想讓當前項目在後臺運行,就可以使用以下命令

nohup java -jar helloworld-1.0-SNAPSHOT.jar &> hello.log &

file

這樣的話,我們的項目就已經啟動成功了,我們可以通過ps指令,查看到系統的進程

file

接下來,我們再次訪問我們的項目,來看看服務是否可用

file

這時候可以查看以下hello.log文件是否正常輸出日誌

停止項目

直接殺死進程:kill -9 pid

file

3.2、基於Shell腳本自動部署

3.2.1、介紹

前面介紹的項目部署是手動部署,也就是部署過程中的每一步操作都需要我們手動操作。接下來,我們需要再講解一下項目的自動部署,從而來簡化項目部署的操作,那麼我們先來整體上瞭解一下項目自動部署的流程及操作步驟

file

具體操作步驟如下

①、在Gitee上創建遠程倉庫,並將本地的項目代碼推送到遠程倉庫中

②、在Linux中安裝Git,克隆代碼

③、在Linux中安裝maven

④、編寫Shell腳本(拉取代碼、編譯、打包、啟動)

⑤、為用戶授予執行Shell腳本的許可權

⑥、執行Shell腳本

3.2.2、推送代碼到遠程倉庫

1)創建遠程倉庫

自行創建

2)推送代碼到遠程倉庫

自行推送一個簡單示例項目即可

3.2.3、Git操作

1)Git軟體安裝

通過yum命令線上安裝git,執行如下指令

  • yum list git:列出git安裝包
  • yum install git:線上安裝git

通過上述指令,安裝好git之後,我們就可以通過git --version去驗證git的環境

file

2)Git克隆代碼

先切換到指定的目錄,如/usr/local,執行如下指令

git clone 要克隆的遠程倉庫地址(然後輸入個人的Git賬號密碼)

3.2.4、Maven安裝

1)官網下載Maven的壓縮包

如apache-maven-3.5.4-bin.tar.gz,自行選擇對應版本號在官網下載即可

2)解壓Maven壓縮包

自行解壓到指定目錄即可

tar -zxvf apache-maven-3.5.4-bin.tar.gz -C 指定目錄

3)配置環境變數

在/etc/profile配置文件中配置環境變數

vim /etc/profile

增加如下內容

MAVEN_HOME=/usr/local/apache-maven-3.5.4/
PATH=$JAVA_HOME\bin:$PATH:$MAVEN_HOME\bin
export JAVA_HOME PATH MAVEN_HOME

PS:這裡面的JAVA_HOME是之前配置的,忽略即可

file

要讓配置的環境變數生效,還需要執行如下指令

source /etc/profile

4)修改maven的settings.xml配置文件

配置本地倉庫地址

切換目錄

cd /usr/local/apache-maven-3.5.4/conf

編輯setting.xml配置文件

vim setting.conf

在其中增加如下配置,添加本地倉庫地址

/usr/local/maven-reposity

file

同時在標簽中,配置阿裡雲的私服

<mirror> 
    <id>alimaven</id> 
    <mirrorOf>central</mirrorOf> 
    <name>aliyun maven</name> 
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror> 

file

3.2.5、Shell腳本準備

Shell腳本(shell script),是一種Linux系統中的腳本程式。使用Shell腳本編程跟 JavaScript、Java編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執行的腳本解釋器就可以了

本次測試不作為學習內容,直接使用現成的demo即可
腳本解讀

3.2.6、Linux許可權

根據上面步驟執行完後,Shell腳本要想正常的執行,還需要給Shell腳本分配執行許可權。 由於linux系統是一個多用戶的操作系統,並且針對每一個用戶,Linux會嚴格的控制操作許可權。接下來,我們就需要介紹一下Linux系統的許可權控制

1). chmod(英文全拼:change mode)命令是控制用戶對文件的許可權的命令

2). Linux中的許可權分為三種 :讀(r)、寫(w)、執行(x)

3). Linux文件許可權分為三級 : 文件所有者(Owner)、用戶組(Group)、其它用戶(Other Users)

4). 只有文件的所有者和超級用戶可以修改文件或目錄的許可權

5). 要執行Shell腳本需要有對此腳本文件的執行許可權(x),如果沒有則不能執行

file

解析當前腳本的許可權情況

file

chmod命令可以使用八進位來指定許可權(0 - 代表無, 1 - 表示執行x,2 - 寫w, 4 - 讀r

file

舉例

  • chmod 777 bootStart.sh 為所有用戶授予讀、寫、執行許可權
  • chmod 755 bootStart.sh 為文件擁有者授予讀、寫、執行許可權,同組用戶和其他用戶授予讀、執行許可權
  • chmod 210 bootStart.sh 為文件擁有者授予寫許可權,同組用戶授予執行許可權,其他用戶沒有任何許可權

註意:

三個數字分別代表不同用戶的許可權

  • 第1位表示文件擁有者的許可權
  • 第2位表示同組用戶的許可權
  • 第3位表示其他用戶的許可權

3.2.7、授權並執行腳本

在測試階段,我們可以給所有的人都賦予執行該shell腳本的許可權。所以可以執行如下指令

chmod 777 bootStart.sh

許可權解讀:

A. 第一個7,代表當前文件所有者root用戶,對該文件具有讀寫執行許可權

B. 第二個7,代表當前文件所有者所屬組的用戶,對該文件具有讀寫執行許可權

C. 第三個7,代表其他用戶,對該文件具有讀寫執行許可權

執行該shell版本

file

註意: 在執行maven指令進行打包時,第一次執行可能會耗時比較長,因為在進行maven工程的打包時,需要到中央倉庫下載工程依賴的jar包和插件(可以在settings.xml中配置阿裡雲私服加速下載)。

啟動完成之後,我們可以查看java進程

file

訪問項目

file

本文轉自:https://www.cnblogs.com/OnlyOnYourself-lzw/p/16519445.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我們知道,如果要對一個網站進行自動化測試,可以使用Python的selenium對獲取網頁的元素進行一系列操作。同樣,對於Windows應用,可以使用C#或者AutoIt(也是一種腳本語言,相比較與C#,AutoIt更適合做Windows應用的自動化腳本)捕獲窗體句柄進行操作。 今天主要記錄一下使用 ...
  • 所在單位有消息推送的需求,整理了一下,具體要求如下: 伺服器(ASP.NET)往桌面客戶端(WPF)單向推送; 客戶端消費消息分為一次性消費(如:掃面支付結果推送)、多次消費(如:訂單推送) ClientId線上狀態其他客戶端不能再用相同的ClientId連接 一開始使用了SingalR,缺點如下: ...
  • 分享如何使用WPF 製作 Windows 屏保 WPF 製作 Windows 屏保 作者:驚鏵 原文鏈接:https://github.com/yanjinhuagood/ScreenSaver 框架使用.NET452; Visual Studio 2019; 項目使用 MIT 開源許可協議; 更多 ...
  • ## 前言 在很多的場合我都遇到過一些群友提這樣的一些問題: 為什麼Java有GC調優而CLR沒有聽說過有GC調優呢? 到底是Java的JVM GC比較強還是C#使用的.NET CLR的GC比較強呢? 其實業內已經有幾位大佬的高贊文章和大家分享一下,主要討論JVM和CLR還有GC調優,今天就借用大 ...
  • 寫在前面 本系列的文章是博主邊學邊記錄的,可能不是特別的正確,因為會加上博主自己的理解,僅供參考。 正文 一、文件的物理組織方式 目前常用的外存組織方式有: 1.連續組織方式 為每個文件分配一篇連續的磁碟空間,稱為連續組織方式。 2.鏈接組織方式 在對文件採取鏈式組織方式時,可以為每個文件分配不連續 ...
  • 1. CentOS 7系統開機時選擇預設第一啟動項,按字母"e"鍵編輯啟動項;如圖1所示 圖1 2. 使用鍵盤上下左右方向鍵,往下找到 linux16 開頭的一行,定位到 ro (read only);如圖2所示 圖2 3. 編輯 ro 為 rw (read write),併在其後寫入 init=/ ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 前言 本環境通過使用VMware在Ubuntu20.04下通過VScode搭建docker環境,可通過遠程連接容器進行開發。(僅作參考) 一、環境準備 VMware 15 pro,Ubuntu20.04,VScode(Linux版本) 虛擬機搭建 ...
  • 寫在前面 本系列的文章是博主邊學邊記錄的,可能不是特別的正確,因為會加上博主自己的理解,僅供參考。 正文: 1.文件目錄 文件目錄是一種數據結構,用於標識系統中文件及其物理地址,供檢索的時候使用。對於目錄的管理有如下要求: 1.實現按名存取 2.提高對目錄的檢索速度 3.文件共用 在多用戶系統中,應 ...
一周排行
    -Advertisement-
    Play Games
  • 基於.NET Framework 4.8 開發的深度學習模型部署測試平臺,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等應用場景,同時支持圖像與視頻檢測。模型部署引擎使用的是OpenVINO™、TensorRT、ONNX runti... ...
  • 十年沉澱,重啟開發之路 十年前,我沉浸在開發的海洋中,每日與代碼為伍,與演算法共舞。那時的我,滿懷激情,對技術的追求近乎狂熱。然而,隨著歲月的流逝,生活的忙碌逐漸占據了我的大部分時間,讓我無暇顧及技術的沉澱與積累。 十年間,我經歷了職業生涯的起伏和變遷。從初出茅廬的菜鳥到逐漸嶄露頭角的開發者,我見證了 ...
  • C# 是一種簡單、現代、面向對象和類型安全的編程語言。.NET 是由 Microsoft 創建的開發平臺,平臺包含了語言規範、工具、運行,支持開發各種應用,如Web、移動、桌面等。.NET框架有多個實現,如.NET Framework、.NET Core(及後續的.NET 5+版本),以及社區版本M... ...
  • 前言 本文介紹瞭如何使用三菱提供的MX Component插件實現對三菱PLC軟元件數據的讀寫,記錄了使用電腦模擬,模擬PLC,直至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1. PLC開發編程環境GX Works2,GX Works2下載鏈接 https:// ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • 1、jQuery介紹 jQuery是什麼 jQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之後又一個優秀的JavaScript代碼庫(或JavaScript框架)。jQuery設計的宗旨是“write Less,Do More”,即倡導寫更少的代碼,做更多的事情。它封裝 ...
  • 前言 之前的文章把js引擎(aardio封裝庫) 微軟開源的js引擎(ChakraCore))寫好了,這篇文章整點js代碼來測一下bug。測試網站:https://fanyi.youdao.com/index.html#/ 逆向思路 逆向思路可以看有道翻譯js逆向(MD5加密,AES加密)附完整源碼 ...
  • 引言 現代的操作系統(Windows,Linux,Mac OS)等都可以同時打開多個軟體(任務),這些軟體在我們的感知上是同時運行的,例如我們可以一邊瀏覽網頁,一邊聽音樂。而CPU執行代碼同一時間只能執行一條,但即使我們的電腦是單核CPU也可以同時運行多個任務,如下圖所示,這是因為我們的 CPU 的 ...
  • 掌握使用Python進行文本英文統計的基本方法,並瞭解如何進一步優化和擴展這些方法,以應對更複雜的文本分析任務。 ...
  • 背景 Redis多數據源常見的場景: 分區數據處理:當數據量增長時,單個Redis實例可能無法處理所有的數據。通過使用多個Redis數據源,可以將數據分區存儲在不同的實例中,使得數據處理更加高效。 多租戶應用程式:對於多租戶應用程式,每個租戶可以擁有自己的Redis數據源,以確保數據隔離和安全性。 ...