項目部署到Linux

鏡像下載、域名解析荷愕、時間同步請點擊 阿里云開源鏡像站

項目部署

之前我們講解Linux操作系統(tǒng)時,就提到胰舆,我們服務端開發(fā)工程師學習Linux系統(tǒng)的目的就是將來我們開發(fā)的項目絕大部分情況下都需要部署在Linux系統(tǒng)中播演。那么在本章節(jié),我們將通過兩種方式贯底,來演示項目部署丰辣,分別是:手動部署項目 和 基于shell腳本自動部署。

3.1、手動部署項目

3.1.1笙什、在IDEA中開發(fā)SpringBoot項目并打包成jar包

創(chuàng)建一個簡單的項目飘哨,結構如下所示

file

項目運行結果

file

執(zhí)行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項目

  • 由于我們的項目已經(jīng)打成jar包上傳上來到Linux服務器,我們只需要運行這個jar包項目就啟動起來了臼闻,所以只需要執(zhí)行如下指令即可:
  • 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、手動部署項目優(yōu)化

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

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

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

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

  • 參數(shù)說明:

Command:要執(zhí)行的命令

Arg:一些參數(shù)策泣,可以指定輸出文件

&:讓命令在后臺運行

  • 舉例:

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

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

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

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

file

這樣的話,我們的項目就已經(jīng)啟動成功了火本,我們可以通過ps指令任洞,查看到系統(tǒng)的進程

file

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

file

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

停止項目

直接殺死進程:kill -9 pid

file

3.2交掏、基于Shell腳本自動部署

3.2.1、介紹

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

file

具體操作步驟如下

①见秽、在Gitee上創(chuàng)建遠程倉庫,并將本地的項目代碼推送到遠程倉庫中

②讨盒、在Linux中安裝Git解取,克隆代碼

③、在Linux中安裝maven

④返顺、編寫Shell腳本(拉取代碼禀苦、編譯、打包遂鹊、啟動)

⑤振乏、為用戶授予執(zhí)行Shell腳本的權限

⑥、執(zhí)行Shell腳本

3.2.2秉扑、推送代碼到遠程倉庫

1)創(chuàng)建遠程倉庫

自行創(chuàng)建

2)推送代碼到遠程倉庫

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

3.2.3慧邮、Git操作

1)Git軟件安裝

通過yum命令在線安裝git,執(zhí)行如下指令

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

通過上述指令舟陆,安裝好git之后误澳,我們就可以通過git --version去驗證git的環(huán)境

file

2)Git克隆代碼

先切換到指定的目錄,如/usr/local秦躯,執(zhí)行如下指令

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

3.2.4忆谓、Maven安裝

1)官網(wǎng)下載Maven的壓縮包

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

2)解壓Maven壓縮包

自行解壓到指定目錄即可

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

3)配置環(huán)境變量

在/etc/profile配置文件中配置環(huán)境變量

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

要讓配置的環(huán)境變量生效陪毡,還需要執(zhí)行如下指令

source /etc/profile

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

配置本地倉庫地址

切換目錄

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

編輯setting.xml配置文件

vim setting.conf

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

<localRepository>/usr/local/maven-reposity</localRepository>

file

同時在<mirrors>標簽中勾扭,配置阿里云的私服

<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系統(tǒng)中的腳本程序妙色。使用Shell腳本編程跟 JavaScript桅滋、Java編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執(zhí)行的腳本解釋器就可以了

本次測試不作為學習內容身辨,直接使用現(xiàn)成的demo即可
腳本解讀

3.2.6丐谋、Linux權限

根據(jù)上面步驟執(zhí)行完后,Shell腳本要想正常的執(zhí)行煌珊,還需要給Shell腳本分配執(zhí)行權限号俐。 由于linux系統(tǒng)是一個多用戶的操作系統(tǒng),并且針對每一個用戶定庵,Linux會嚴格的控制操作權限吏饿。接下來踪危,我們就需要介紹一下Linux系統(tǒng)的權限控制

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

2). Linux中的權限分為三種 :讀(r)、寫(w)猪落、執(zhí)行(x)

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

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

5). 要執(zhí)行Shell腳本需要有對此腳本文件的執(zhí)行權限(x)笨忌,如果沒有則不能執(zhí)行

file

解析當前腳本的權限情況

file

chmod命令可以使用八進制來指定權限(0 - 代表無蓝仲, 1 - 表示執(zhí)行x,2 - 寫w官疲, 4 - 讀r

file

舉例

  • chmod 777 bootStart.sh 為所有用戶授予讀袱结、寫、執(zhí)行權限
  • chmod 755 bootStart.sh 為文件擁有者授予讀袁余、寫擎勘、執(zhí)行權限咱揍,同組用戶和其他用戶授予讀颖榜、執(zhí)行權限
  • chmod 210 bootStart.sh 為文件擁有者授予寫權限,同組用戶授予執(zhí)行權限煤裙,其他用戶沒有任何權限

注意:

三個數(shù)字分別代表不同用戶的權限

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

3.2.7掩完、授權并執(zhí)行腳本

在測試階段,我們可以給所有的人都賦予執(zhí)行該shell腳本的權限硼砰。所以可以執(zhí)行如下指令

chmod 777 bootStart.sh

權限解讀:

A. 第一個7且蓬,代表當前文件所有者root用戶,對該文件具有讀寫執(zhí)行權限

B. 第二個7题翰,代表當前文件所有者所屬組的用戶恶阴,對該文件具有讀寫執(zhí)行權限

C. 第三個7,代表其他用戶豹障,對該文件具有讀寫執(zhí)行權限

執(zhí)行該shell版本

file

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

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

file

訪問項目

file

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

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末累魔,一起剝皮案震驚了整個濱河市摔笤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垦写,老刑警劉巖吕世,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異梯投,居然都是意外死亡命辖,警方通過查閱死者的電腦和手機渴析,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吮龄,“玉大人俭茧,你說我怎么就攤上這事±熘悖” “怎么了母债?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長尝抖。 經(jīng)常有香客問我毡们,道長,這世上最難降的妖魔是什么昧辽? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任衙熔,我火速辦了婚禮,結果婚禮上搅荞,老公的妹妹穿的比我還像新娘红氯。我一直安慰自己,他們只是感情好咕痛,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布痢甘。 她就那樣靜靜地躺著,像睡著了一般茉贡。 火紅的嫁衣襯著肌膚如雪塞栅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天腔丧,我揣著相機與錄音放椰,去河邊找鬼。 笑死愉粤,一個胖子當著我的面吹牛砾医,可吹牛的內容都是我干的。 我是一名探鬼主播科汗,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼藻烤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了头滔?” 一聲冷哼從身側響起怖亭,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坤检,沒想到半個月后兴猩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡早歇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年倾芝,在試婚紗的時候發(fā)現(xiàn)自己被綠了讨勤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡晨另,死狀恐怖潭千,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情借尿,我是刑警寧澤刨晴,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站路翻,受9級特大地震影響狈癞,放射性物質發(fā)生泄漏。R本人自食惡果不足惜茂契,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一蝶桶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧掉冶,春花似錦真竖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喂江。三九已至召锈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間获询,已是汗流浹背涨岁。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吉嚣,地道東北人梢薪。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像尝哆,于是被迫代替她去往敵國和親秉撇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內容