初次釋出於我的個人文件
參考:
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埠!