利用1panel部署前後端分離專案 Java程式碼打包 前端打包

浮半名生發表於2024-11-25

初次釋出於我的個人文件

參考:

1.1Panel 官方文件

本文介紹一下如何利用1panel部署一個簡單的前後端分離專案。

1,擁有一個Liunx伺服器

第一步是購買一個Linux伺服器,可以買一臺線下真實的機器+公網IP或買一個阿里雲、騰訊雲、京東雲、華為雲伺服器。

2.安裝1panel

參考1panel官方文件,安裝1panel。

在這裡以Ubuntu系統為例,只需執行

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

即可安裝,安裝完成後終端上有寫1panel的URL和賬號名密碼。

3.安裝執行環境

在虛擬機器中安裝java等執行環境。

然後,可以在1panel中安裝專案需要的中介軟體,如MySQL、minio、redis等。

4.打包後端專案

先介紹一下如何打包maven專案。

需要注意的是,你可能會發現在idea的maven選單裡,已經有一個package選項了,然而預設情況下這樣打的包是不帶專案依賴的。所以這樣的jar包不能獨立執行。

但是如果你用的是spring boot專案,則pom.xml中可能已經安裝了外掛spring-boot-maven-plugin

        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>

如果pom.xml有這樣的程式碼則說明maven有外掛spring-boot-maven-plugin。

這時直接在idea的maven選單執行package選項就得到帶依賴的jar包了,可以直接java -jar執行。

以部署筆者的teaai專案為例,打包後你會在target資料夾下看到teaai-backend-0.0.1-SNAPSHOT.jar,這就是打包後的jar檔案,直接執行即可啟動後端服務。

對於非spring boot專案又該如何打包呢?

需要安裝maven-assembly-plugin外掛,方法如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version><!-- 外掛版本號 -->
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>edu.zafu.teaai.MainApplication</mainClass>
                        <!-- 替換為你的主類的完整類名 -->
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

然後再執行package即可。

對於gradle專案,沒有什麼太大的區別。

這裡只介紹一般的gradle專案如何打帶依賴的jar包。

gradle依賴打包需要安裝shadow外掛,在build.gradle.kts中的plugins,增加這樣的程式碼:

plugins {
    id("com.gradleup.shadow") version "8.3.3"
}

然後增加shadow任務,同樣還是在build.gradle.kts中增加一下程式碼:

tasks {
    shadowJar {
        archiveBaseName.set("nocrud")
        archiveVersion.set("")
        manifest {
            attributes["Main-Class"] = "cn.cola.nocrud.MainKt"
        }
    }
}

這段程式碼以筆者的nocrud專案為例,在上面的程式碼中nocrud是你專案的名稱,attributes["Main-Class"] = "cn.cola.nocrud.MainKt"則規定了主類。

需要注意的是,如果你的主類是一個kotlin程式碼,則需要再原本的類名後面加上Kt,這是因為kotlin是一個jvm語言,編譯後你會發現kotlin編譯器會在所有的kotlin類名稱後面加上Kt。

完成了這些,重新整理一下專案,你會發現idea的gradle選單中新增了一個shadow任務,雙擊shadowJar命令執行即可打包。

打包完的jar包在build/libs目錄內。

5.啟動後端專案

在1panel-主機-檔案中上傳打包後的jar包。

然後到網站-執行環境-java中執行後端專案。

當然如果你的後端是go語言或php或nodejs那麼就去對應的頁面。

本文以java專案為例,選擇建立執行環境,設定名稱和java sdk版本,將執行目錄設定為jar包的上傳目錄。

在啟動命令一欄輸入完整的啟動命令,如

java -jar ./teaai-backend-0.0.1-SNAPSHOT.jar

然後注意,1panel和寶塔皮膚有所不同,1panel的後端專案也是基於容器化部署的,需要填寫應用在容器內的訪問埠和容器外的埠。

然後開啟埠外部訪問並設定容器名稱。

點選確定即可。

最後提醒一下,因為1panel是容器化部署,而在容器內localhost指向的是容器內部的地址,如果想訪問容器網外的本機的其他容器請使用本機的真實內網IP。

6.部署其他中介軟體

這裡需要根據中介軟體的不同進行部署,如關係型資料庫需要建表等。

7.打包前端專案

這裡以打包teaai專案為例,teaai是一個vue專案。

用WebStrom開啟teaai前端專案,一般而言當你利用vue-cli建立專案時,在package.json中有這樣的命令。

    "build": "run-p type-check \"build-only {@}\" --",

你可以直接點選WebStorm左邊的執行按鈕執行,也可以在終端中輸入

npm run build

打包專案。

當然,如果你用pnpm或yarn等執行這個命令也一樣。

打包後你將在dist目錄下看到打包後的結果。

8.啟動前端專案

進入1panel-網站-執行環境-php建立一個php執行環境,擴充模版選擇“預設”即可。

然後去你的DNS服務商配置域名解析(這個因服務商而不同,在此無法演示)。

接下來進入1panel皮膚-網站-網站,如果你沒有安裝OpenResty(你可以理解為nginx增強版)則1panel會提示你安裝。

在網站頁面選擇建立網站-執行環境-選擇剛剛建立的php執行環境

(如果你的網站是靜態網站也可以不建立php執行環境而直接選靜態網站)

輸入網站的域名和需要訪問的埠號,點選確定。

你會看到1panel頁面的表格中多了一條記錄,點選其中的網站目錄下的資料夾圖示,進入檔案介面上傳前端打包的dist目錄的內容。

接著。如果要設定代理和https服務的話,回到剛剛的1panel-網站-網站頁面,點選網站記錄右邊的配置,在這裡可以對網站進行限流、反向代理、配置HTTPS服務等操作。

如果開啟了https服務,記得在防火牆開啟443埠!

相關文章