專案部署到Linux

哈哈哈hh發表於2022-07-27

映象下載、域名解析、時間同步請點選  阿里雲開源映象站

專案部署

之前我們講解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

瀏覽器訪問:

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>
</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中的許可權分為三種 :讀®、寫(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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70003733/viewspace-2907790/,如需轉載,請註明出處,否則將追究法律責任。

相關文章