【SpringBoot搭建個人部落格】- 線上部署(十三)
部落格地址:ONESTARの客棧
原始碼領取方式一:
- 掃一掃文末二維碼,關注公眾號【程式設計日刊】,後臺回覆【部落格】,即可領取原始碼
原始碼領取方式二:
前端頁面原始碼地址:https://github.com/oneStarLR/myblog-page
以jpa為持久層原始碼地址:https://github.com/oneStarLR/myblog-jpa
以mybatis為持久層原始碼地址:https://github.com/oneStarLR/myblog-mybaits
歡迎給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,這裡就不講了。
好了,好不容易搭建好的部落格,大家就盡情的寫文章吧!
【點關注,不迷路,歡迎持續關注本站】