部署之前
部署前我們需要准備如下內容:
-
使用
FinalShell
連接你的CentOS 7服務器; -
將群文件里的
febs.tar
發送至服務器的\
(根)目錄下; -
在
\
目錄下執行命令tar -xvf febs.tar
解開壓縮包,你可以在根目錄下看到/febs
; -
安裝docker、docker-compose
-
為docker換源
1. CentOS7 服務器配置JDK8
-
JDK的位置放在
/febs/third-party/jdk
,我提供了原來的壓縮包; -
進入上述目錄,使用命令解壓
tar -xvf jdk-8u271-linux-x64.tar.gz
(輸到jdk的時候,可以按tab補全) -
接下來直接在
profile
配置JDK的絕對路徑,再手動生效即可:[root@localhost ~]# vim /etc/profile (若此時沒有vim命令,可以使用命令“yum install vim”安裝vim) ## --- ## 以下為/etc/profile的文件內容 ## 在文件最后添加下面四行內容保存即可 export JAVA_HOME=/febs/third-part/jdk/jdk1.8.0_271 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH [root@localhost ~]# [root@localhost ~]# source /etc/profile # 讓配置文件生效 [root@localhost ~]# java -version # 查看JDK版本 java version "1.8.0_271" Java(TM) SE Runtime Environment (build 1.8.0_271-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
2. Docker啟動第三方服務(MySQL、Redis、MongoDB)
進入/febs/third-party
目錄,可以看到里面有一個docker腳本docker-compose.yml
,腳本可以自動化下載鏡像、啟動容器,具體內容如下:
version: '3'
services:
mysql:
image: mysql:5.7.24 # 指定MySQL版本
container_name: mysql
restart: always # 啟動容器時,MySQL容器會自動啟動
environment:
MYSQL_ROOT_PASSWORD: 123456 # root密碼
ports:
- 3306:3306 # 映射端口
volumes:
- /febs/third-part/mysql/data:/var/lib/mysql # 掛載 MySQL數據
redis:
image: redis:4.0.14
container_name: redis
restart: always
command: redis-server /usr/local/etc/redis/redis.conf --appendonly yes
volumes:
- /febs/third-part/redis/data:/data # 掛載 Redis數據
- /febs/third-part/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf # 掛載 Redis配置
ports:
- 6379:6379
mongo:
image: mongo
container_name: mongodb
restart: always
ports:
- 27017:27017
volumes:
- /febs/third-part/mongodb:/data/db # 掛載 MongoDB數據
在/febs/third-party
目錄下,執行命令docker-compose up -d
,docker會自動拉取指定版本的鏡像,並按照腳本設定,啟動指定容器。等腳本執行完成,使用命令docker ps
可以查看當前正在運行的容器。
使用命令systemctl enable docker
,設置docker服務開機自啟,那么每當虛擬機啟動時,docker就啟動了,DB服務也就啟動了。
3. 導入數據庫表信息
完成上述步驟,我們在虛擬機已經啟動MySQL服務了,接下來我們使用Navicat去連接它。
接下來導入主系統數據,新建一個名稱為febs_cloud_base的數據庫,導入sql/febs_cloud_base.sql
按照同樣的方法,新建一個名稱為febs_nacos的數據庫,導入sql/febs_nacos.sql
,這里演示步驟省略。
4. 啟動第三方動態配置中心 Alibaba Nacos
由於Nacos本身也是Java程序,在做這一步前,確保JDK環境已經配置完成了。
進入/febs/third-part/nacos/conf
目錄,編輯application.properties
Nacos配置文件。
使用vim application.properties
進入編輯界面,將{xxxxx}
部分替換成你虛擬機的IP地址,例如我這里填寫192.168.2.131
。
修改完以后保存退出編輯界面,在FinalShell下面的”命令“工具欄,右擊”添加命令 “,添加內容如下:
編輯完成后確定,點擊剛剛創建的命令“啟動nacos”,即可啟動Nacos服務。此時訪問http://{虛擬機IP}:8001/nacos/index.html
即可進入Nacos管理頁面。賬戶:febs,密碼:123456。
(P.S. 若此時無法進入此頁面,請檢查防火牆是否啟動,若啟動則需要關閉,關閉的命令如下)
[root@localhost third-part]# systemctl status firewalld # 檢查防火牆是否啟動,若為active,即為啟動
[root@localhost third-part]# systemctl stop firewalld # 關閉防火牆
[root@localhost third-part]# systemctl disable firewalld # 關閉防火牆開機自啟服務
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
至此,配置中心的啟動完成。
5. 生成Docker鏡像,啟動FEBS-Cloud微服務系統
這一步是啟動系統的最后一步。
首先,我們需要為每個微服務組件生成鏡像,下面是整個工程在微服務架構中的功能名稱。
我們只需要為上述7個組件打包進行即可,下面我以febs-auth
微服務鑒權中心為例,其余6個組件的打包過程是一致的。
進入/febs/febs-auth
目錄,目錄下有一個名為Dockerfile
的文件,是自動化打包的預設腳本,其中的內容如下:
FROM openjdk:8u212-jre
MAINTAINER SuphxLin kiols6@aliyun.com
COPY febs-auth-2.2-RELEASE.jar /febs/febs-auth-2.2-RELEASE.jar
ENTRYPOINT ["java", "-Xmx512m", "-jar", "/febs/febs-auth-2.2-RELEASE.jar"]
使用命令對目錄下的jar包打包,docker build -t febs-auth .
,命令中的“febs-auth”即為鏡像的名稱,后序的6個鏡像,請嚴格按照文件夾的名字命名,這后序會影響微服務啟動使用的docker-compose.yml
。打包過程由Docker自動完成,例如jar包需要的Java依賴,在Dockerfile
中也以及指定了JDK版本,容器會自動創建一個JDK環境。之前換源的目的,也是為了在加快下載容器內的依賴。
以上,即完成了一個鏡像的打包,下面貼出其他鏡像打包的代碼,請到對應的文件夾下執行打包命令:
docker build -t febs-auth .
docker build -t febs-admin .
docker build -t febs-gateway .
docker build -t febs-server-system .
docker build -t febs-server-test .
docker build -t febs-tx-manager .
docker build -t febs-cloud-web .
(P.S. febs目錄下還有generator和job兩個服務,比較吃內存,我就沒有加入docker-compose.yml中,這里也沒有打包,如果有興趣嘗試,也可以參照上述的打包方式)
打包完成后,使用命令docker images
,查看所有鏡像:
最后,進入febs/febs-cloud/
目錄,根據你的虛擬機IP,你需要修改docker-compose.yml
的一些配置,使用命令vim docker-compose.yml
下面配置中所有含有IP地址的,均換成你自己虛擬機的IP地址即可:
version: '3'
services:
febs-admin:
image: febs-admin:latest
container_name: febs-admin
volumes:
- "/febs/log:/log"
command:
- "--nacos.url=192.168.2.131"
environment:
- "TZ=Asia/Shanghai"
ports:
- 8401:8401
febs-gateway:
image: febs-gateway:latest
container_name: febs-gateway
volumes:
- "/febs/log:/log"
command:
- "--febs-admin=192.168.2.131"
- "--mongo.url=192.168.2.131"
- "--nacos.url=192.168.2.131"
- "--redis.url=192.168.2.131"
environment:
- "TZ=Asia/Shanghai"
ports:
- 8301:8301
febs-auth:
image: febs-auth:latest
container_name: febs-auth
volumes:
- "/febs/log:/log"
command:
- "--febs-admin=192.168.2.131"
- "--nacos.url=192.168.2.131"
- "--mysql.url=192.168.2.131"
- "--redis.url=192.168.2.131"
environment:
- "TZ=Asia/Shanghai"
ports:
- 8101:8101
febs-server-system:
image: febs-server-system:latest
container_name: febs-server-system
volumes:
- "/febs/log:/log"
command:
- "--febs-admin=192.168.2.131"
- "--febs-gateway=192.168.2.131"
- "--nacos.url=192.168.2.131"
- "--mysql.url=192.168.2.131"
- "--febs-tx-manager=192.168.2.131"
environment:
- "TZ=Asia/Shanghai"
ports:
- 8201:8201
depends_on:
- febs-tx-manager
febs-server-test:
image: febs-server-test:latest
container_name: febs-server-test
volumes:
- "/febs/log:/log"
command:
- "--nacos.url=192.168.2.131"
- "--febs-admin=192.168.2.131"
- "--mysql.url=192.168.2.131"
- "--febs-tx-manager=192.168.2.131"
- "--febs-gateway=192.168.2.131"
environment:
- "TZ=Asia/Shanghai"
ports:
- 8202:8202
depends_on:
- febs-tx-manager
febs-tx-manager:
image: febs-tx-manager:latest
container_name: febs-tx-manager
volumes:
- "/febs/log:/log"
command:
- "--nacos.url=192.168.2.131"
- "--febs-admin=192.168.2.131"
- "--mysql.url=192.168.2.131"
- "--redis.url=192.168.2.131"
environment:
- "TZ=Asia/Shanghai"
ports:
- 8501:8501
- 8888:8888
febs-cloud-web:
image: febs-cloud-web
container_name: febs-cloud-web
volumes:
- "/febs/log:/log"
environment:
- "TZ=Asia/Shanghai"
ports:
- 9527:80
使用命令docker-compose up -d
,自動化啟動FEBS-Cloud微服務權限管理系統。
(P.S. 如出現:ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-4a3e20ec967f -j RETURN: iptables: No chain/target/match by that name. (exit status 1)),那應該是你剛剛關閉了防火牆,那么你需要使用命令 systemctl restart docker,重啟docker服務)
啟動后,你需要等待一會兒,等到FinalShell顯示的CPU降低后,訪問:http://{你虛擬機的IP}:9527,即可登錄到FEBS-Cloud微服務權限管理系統,賬戶:mrbird,密碼:1234qwer。
教程結束!