1. 程式人生 > 實用技巧 >【SpringBoot搭建個人部落格】- 線上部署(十三)

【SpringBoot搭建個人部落格】- 線上部署(十三)

部落格地址:ONESTARの客棧

原始碼領取方式一:

  • 掃一掃文末二維碼,關注公眾號【程式設計日刊】,後臺回覆【部落格】,即可領取原始碼

原始碼領取方式二:

歡迎給star以鼓勵(^_−)☆


本文將從伺服器購買後遠端連線,環境搭建,專案部署執行和域名訪問來講述SpringBoot搭建個人部落格的線上部署

一、伺服器購買

博主是在618購買的騰訊雲伺服器,優惠力度比較大,入手了一個三年的,至於是選擇騰訊雲還是阿里雲,感覺對於個人部落格而言都差不多,由於之前用過騰訊雲,所以又買了騰訊的,這裡給個連線:

博主買的就是這個,新使用者288三年,八塊錢一個月,比學生價還便宜

二、遠端連線伺服器

1. 修改使用者名稱密碼

博主購買伺服器後直接就給我預設安裝了CentOS 7.5 64位系統,使用者名稱和密碼也都默認了,可能是我有些選項沒有選擇吧,不過不影響,進入例項控制檯修改密碼,點選更多操作,選擇重置密碼,驗證後進行重置,密碼儘量複雜些!

2.下載安裝FinalShell

別問我為什麼使用FinalShell, 用了你就知道,好用!給個下載地址:http://www.hostbuf.com/

下載後進行安裝,安裝後開啟如下,點選資料夾

新建SSH遠端連線,填寫伺服器資訊:

  • 名稱:可隨意,方便辨識用
  • 主機:複製伺服器的公網IP
  • 埠:伺服器埠,預設是22
  • 使用者名稱:沒修改就是root
  • 密碼:重置時設定的密碼

點選確定即可遠端連線伺服器

三、環境搭建

這裡主要是搭建部落格所需要的環境,只需要安裝jdk和MySQL資料庫,為了保證開發環境和部署環境一致,這裡安裝jdk1.8,MySQL5.7

1. jdk安裝

1.1 yum安裝

Linux上使用yum命令後,會將OpenJDK安裝到/usr/lib/jvm/目錄下

# 安裝OpenJDK
yum install java-1.8.0-openjdk java-1.8.0openjdk-devel

1.2 配置jdk環境變數

# 開啟配置檔案
vim /etc/profile

進入文字編輯狀態下,游標走到檔案最後一行末尾(shift+g 快速定位到檔案的最下方),鍵盤按下:i(英文狀態)

插入下面四行語句

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0.171
export JRE_HOME=/$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

:wq儲存退出

1.3 讓環境變數生效

source /etc/profile

1.4 檢查JDK是否安裝成功

java -version

可以看到jdk版本資訊,安裝成功

openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

2. MySQL5.7安裝

2.1 下載MySQL

#下載MySQL安裝包
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

#安裝yum源
rpm -Uvh mysql57-community-release-el7-11.noarch.rpm

#檢視yum倉庫MySQL的啟動列表
yum repolist enabled | grep mysql

#安裝MySQL資料庫
yum install mysql-community-server

2.2 啟動MySQL服務

#啟動MySQL服務
systemctl start mysqld 

#檢視MySQL啟動狀態
systemctl status mysqld

#設定開機啟動
systemctl enable mysqld
systemctl daemon-reload

2.3 登入重置密碼

MySQL安裝完成後,在/var/log/mysqld.log檔案中給root生成了一個預設密碼,可以通過命令檢視密碼:

grep "temporary password" /var/log/mysqld.log

然後可以使用這個密碼登陸MySQL

mysql -uroot -p

回車輸入密碼登陸資料庫,第一次登陸需要重置密碼,以下命令重置:

ALTER user 'root'@'localhost' identified by '123456';

重置後使用新密碼可以登陸,操作資料庫

注:這裡是將密碼修改為‘123456’,這裡只是示範,可別弄這麼簡單的密碼,要不然資料怎麼丟的都不知道

到這裡資料庫就安裝完成了,已經可以滿足部署專案的基本需求了,這裡再另外多講兩點:資料庫配置、資料庫授權

2.4 資料庫配置

資料庫配置是通過/etc/my.cnf檔案進行配置,這裡配置一下字符集為utf8mb4,開啟my.cnf檔案:vim /etc/my.cnf ,在檔案末尾新增:

# 設定資料庫字符集為utf8mb4
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
 
init_connect = 'SET NAMES utf8mb4'
 
lower_case_table_names = 1 # 表名不區分大小寫

修改完成後,重啟MySQL服務:

# 重啟MySQL
systemctl restart mysqld

通過配置my.cnf可以對資料庫進行配置,有一些基本的配置,這裡給一篇文章進行參考:mysql資料庫配置 my.cnf

2.5 資料庫授權

為了方便對資料庫進行操作,一般都是使用視覺化軟體對資料庫進行遠端連線,但如果任何一臺機子都可以對你的伺服器資料庫進行遠端連線,那就不安全了,這裡就需要對資料庫進行授權,指定可以遠端連線的資料庫,沒有授權就只能支援localhost本地訪問了。

# 登陸資料庫
mysql -uroot -p

# 使用資料庫
use mysql;

# 設定許可權
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

# 重新整理許可權
flush privileges;

#退出,重啟伺服器
service mysqld restart

設定許可權那一句:

  • *. *:表示 所有庫.所有表
  • 'root'@'%' identified by 'root':
    • 前一個root:表示使用者名稱,
    • %:是指所有訪問ip
    • 後一個root:表示資料庫密碼

通過這一句可以配置遠端訪問的資料庫和訪問的IP,博主一般是直接配置'%'所有IP都能訪問,因為有時候開發需求會改變IP,如果指定IP的話就不方便,所以配置了'%',一般情況下是將3306埠給關閉,需要遠端連線的時候再把3306埠開啟,用完就關閉,這樣安全些

為了方便操作,這裡可以將伺服器的安全組進行修改,咱們開啟伺服器的例項控制檯,找到安全組規則,點開編輯入站規則,可以看到伺服器有兩條預設規則,可以看到第一條是將所有服務埠都開放了,這樣不太安全,所以這裡將它關閉,然後開啟需要配置的埠

2.5.1 拒絕所有協議埠

點選第一條的編輯,將允許改為拒絕,然後儲存

2.5.2 新增22埠和3306埠

22埠是SSH遠端連線用的,3306是資料庫遠端連線用的

點選新增規則,新增如下兩條,點選完成,即可遠端連線資料庫

注:平時不用遠端連線資料庫的時候可以將3306埠給關了,用的時候再開啟

四、專案部署

伺服器環境搭建好後,就可以將專案打包部署到伺服器了,這裡採用jar包的方式部署,使用idea打成jar包,然後將jar包上傳到伺服器在後臺執行,就可以用IP進行訪問了

1. 打包

點選idea右邊的Maven Projects,雙擊clean,執行完後再雙擊package

不出意外,控制檯會顯示BUILD SUCCESS,並有jar包檔案的大小,在target資料夾下面會生成一個myblog-0.0.1-SNAPSHOT.jar的jar包,這個就是要上傳到伺服器進行部署的jar包。

2. 部署

將剛生成的jar包上傳到伺服器上,進行部署,這裡要注意上傳之前要將專案的資料庫配置換成伺服器的資料庫

2.1 上傳

這裡使用FinalShell上傳,先用FinalShell登陸伺服器,在伺服器中建立一個資料夾用來存放專案的

# 建立資料夾
mkdir myblog

# 進入目錄
cd myblog

在FinalShell下方有視覺化的目錄結構,點進剛建立的資料夾,右擊空白處,點選上傳,選擇myblog-0.0.1-SNAPSHOT.jar包,將jar包上傳

2.2 關閉防火牆,開放8080埠

伺服器需要將防火牆關閉才能訪問;我們的部落格專案配置的是8080埠,在之前將所有埠都關閉了,所以這裡要將8080埠開放

  • 防火牆相關
# 檢視防火牆狀態
systemctl status firewalld

# 開啟防火牆
systemctl start firewalld

# 關閉防火牆
systemctl stop firewalld
  • 開放8080埠

進入伺服器控制檯安全組規則,新增規則,開放8080埠,開放後如下:

3 執行jar包

這裡讓jar包在伺服器後臺執行,進入jar包資料夾,執行命令執行jar包

# 進入jar包資料夾
cd /home/myblog

# 後臺執行jar包
nohup java -jar myblog-0.0.1-SNAPSHOT.jar &

3.1 訪問

在瀏覽器中訪問伺服器的8080埠,Bingo!!!

五、配置域名訪問(http)

這裡預設讀者已經購買了域名,併成功備案

一般來說,一個伺服器不止跑一個服務(看自己需求,當然也可以只跑一個),每個服務都是使用一個二級域名來進行訪問,所以這裡配置二級域名進行訪問

1 新增解析

登入雲伺服器,在雲伺服器的控制檯找到DNS解析,騰訊雲可以在上面的雲產品中搜DNS,如下

點進去後如下,可以看到這裡是空的,因為沒有新增任何解析,咱們點選新增解析,然後新增自己的域名

新增後會有一條新增域名資訊,點選域名,這裡要新增三條記錄,以下三條:

注:如果只是要配置自己的網站能夠通過域名訪問,那就只需要配置下滿截圖中的第三條二級域名就可以了,但是一般來說,一個伺服器不只是通過二級域名訪問,還會有直接訪問和通過www訪問。

  • @:表示直接解析域名
  • www:解析域名通過www訪問
  • xxxx(二級域名):解析通過二級域名訪問,我這裡配置的是onestar二級域名

這裡新增後如下,記錄值為自己伺服器的公網IP

新增完成後就可以使用域名進行訪問了,But,這樣直接訪問的話,訪問的是伺服器預設訪問的80埠,而我們專案用的埠是8080,所以這裡要將埠進行轉發,將8080埠轉發到域名,這裡就要用到反向代理的技術了。

2 反向代理

反向代理(Reverse Proxy)方式是指以代理伺服器來接受internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時代理伺服器對外就表現為一個伺服器。這裡使用NGINX反向代理,將80埠轉發到8080埠,需要對NGINX進行配置,所以要先下載NGINX

2.1 下載安裝NGINX

# 下載NGINX:
yum install nginx

# 啟動nginx:
systemctl start nginx

# 加入開機啟動:
systemctl enable nginx

# 檢視nginx的狀態:
systemctl status nginx

2.2 配置NGINX

下載後需要對NGINX進行配置,這裡的配置檔案是nginx.conf,可以使用命令 find / -name "nginx.conf" 進行查詢,預設是在 /etc/nginx/nginx.conf,咱們來進行配置:

# 開啟nginx.conf配置檔案
vim /etc/nginx/nginx.conf

可以看到如下配置,這裡只講解兩個地方,也就是框出的部分

  • include:這是標頭檔案包含,可以看到這裡配置了 /etc/nginx/conf.d/*.conf,意思是包含/etc/nginx/conf.d/目錄下的所有.conf配置檔案,咱們可以在/etc/nginx/conf.d/ 資料夾下建立字尾為.conf 的檔案來新增配置,等會就要用到
  • sever:要修改的就是這個部分了,也就是服務配置,但是一般我們不直接在這裡修改,因為一個伺服器一般會有很多個服務要跑,如果直接在這裡修改的話就不方便拓展,可以看到我這裡將server註釋了,也就是不用這個server,而是在include另外新增配置檔案

注:咱們可以理解為nginx.conf是一個總配置檔案,include所包含的是子配置檔案,如果要新增一個服務,就可以再/etc/nginx/conf.d/目錄下去新增一個子配置檔案,這裡也是用的這種方式

在/etc/nginx/conf.d/目錄下建立*.conf檔案,我這裡命名為onestar.conf

# 建立開啟onestar.conf
vim /etc/nginx/conf.d/onestar.conf

新增如下配置:

server {
    listen       80;
    server_name  onestar.newstar.net.cn;
    location / {
        proxy_pass   http://81.68.734.422:8080;
        index  index.html index.htm;
        proxy_set_header Host $host;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
    access_log /logs/onestar.newstar.net.cn.access.log;
}

這裡我們瞭解一下幾點就可以了:

  • listen:監聽80埠
  • server_name:轉發到哪個地址,也就是前面配置的二級域名地址
  • proxy_pass:代理到哪個地址,也就是要訪問的伺服器埠地址
  • access_log:表示記錄日誌資訊,會在根目錄下建立onestar.newstar.net.cn.access.log日誌檔案,列印專案的日誌資訊

2.3 重啟NGINX

# 重啟:
nginx -s reload

重啟後服務就生效,可以使用域名進行訪問了:http://onestar.newstar.net.cn/

至此,整個部落格開發完成,可以進行域名訪問了,本來打算將https訪問也講述一下,但是要想把文章寫好,我一般會進行實操一遍,這樣的話就要將我的部落格專案給停掉,再重新部署https,現在我的部落格每天幾百上千的請求量,所以也就沒這樣做,https訪問大家可以查詢相關資料,也是用NGINX,這裡就不講了。

好了,好不容易搭建好的部落格,大家就盡情的寫文章吧!

【點關注,不迷路,歡迎持續關注本站】