一区匣、?系統(tǒng)架構(gòu)3
二犹菱、?項目環(huán)境搭建3
1.?前端3
????1.1負(fù)載均衡3
????1.2?前端技術(shù)框架----Vue.js(開發(fā)環(huán)境搭建)3
????????1.2.1 node.js安裝3
????????1.2.2 cnpm安裝腳手架vue-cli5
????????1.2.3?構(gòu)建vue項目6
????????1.2.4?項目啟動6
2.?后臺6
????2.1 tomcat服務(wù)器6
????????2.1.1下載與安裝6
????????2.1.2?配置7
????2.2 Redis安裝與配置7
????????2.2.1 Redis安裝7
????????2.2.2 Redis配置8
3.數(shù)據(jù)庫8
????3.1安裝Mysql5.78
????????3.1.1?卸載centos7自帶的MariaDB8
????????3.1.2?添加Mysql yum倉庫9
????????3.1.3?安裝Mysql服務(wù)9
????????3.1.4 mysql自啟動配置9
????????3.1.5其他配置9
????3.2 Mysql主從服務(wù)器配置10
????????3.2.1 my.cnf配置10
????????3.2.2?主服務(wù)器配置12
????????3.2.3?從服務(wù)器配置13
????3.3 Mycat安裝與配置14
????????3.3.1?下載與安裝14
????????3.3.2?環(huán)境配置14
????????3.3.3文件配置15
????????3.3.4 mycat自啟動配置15
三脓诡、?項目部署17
????1.前端打包17
????2.?后臺打包18
????3.?項目部署19
本系統(tǒng)的環(huán)境部署和配置主要分為三大塊:前端,后端瘪松,數(shù)據(jù)庫咸作,圖一所示
圖一.?系統(tǒng)架構(gòu)圖
開發(fā)和測試環(huán)境中,負(fù)載均衡由兩臺代理服務(wù)器宵睦,采用nginx+keepalived實現(xiàn)雙機熱備份和Web服務(wù)器的負(fù)載均衡记罚。在生產(chǎn)環(huán)境中由醫(yī)院提供的F5服務(wù)器做負(fù)載均衡。
2.?Web服務(wù)器
兩臺Web服務(wù)器互為備份状飞,同時實現(xiàn)負(fù)載均衡毫胜,用于部署系統(tǒng)的后端程序,采用Redis解決前端訪問的session共享問題诬辈,安裝Tomcat作為Web服務(wù)軟件,采用Mycat作為數(shù)據(jù)庫服務(wù)器讀寫分離的中間件荐吉。
3.?數(shù)據(jù)庫服務(wù)器
數(shù)據(jù)庫服務(wù)器采用雙主從結(jié)構(gòu)焙糟,從服務(wù)器的數(shù)據(jù)與主服務(wù)器同步,數(shù)據(jù)的寫操作(增刪改)均在主服務(wù)器上進(jìn)行样屠,兩臺主數(shù)據(jù)庫服務(wù)器互為備份穿撮,數(shù)據(jù)庫的讀操作(查詢)均在從數(shù)據(jù)庫服務(wù)器上進(jìn)行,系統(tǒng)數(shù)據(jù)讀寫業(yè)務(wù)量增大時痪欲,可擴展住悦穿、從服務(wù)器數(shù)量實現(xiàn)擴容,前端Web服務(wù)器同過Mycat的配置實現(xiàn)讀寫操作的負(fù)載均衡业踢。
二栗柒、項目環(huán)境搭建
生產(chǎn)環(huán)境系統(tǒng)中負(fù)載均衡由醫(yī)院方提供F5服務(wù)器做負(fù)載均衡
1.2?前端技術(shù)框架----Vue.js(開發(fā)環(huán)境搭建)
1.進(jìn)入Node.js官網(wǎng):https://nodejs.org/en/,選擇下載并安裝Node.js(需較新版本)
2.驗證Node.js是否安裝好知举,在windows下瞬沦,win+r召喚出運行窗口太伊,輸入cmd打開命令行窗口。輸入node -v即可得到對應(yīng)的Node.js版本逛钻。
3.安裝cnpm
執(zhí)行命令?
npm install -g cnpm --registry=https://registry.npm.taobao.or
使用npm的國內(nèi)鏡像(npm?國內(nèi)鏡像?https://npm.taobao.org/)cnpm?命令代替默認(rèn)的npm命令僚焦,增加依賴包加載速度且避免資源限制
在命令行中運行如下命令,安裝腳手架曙痘。圖4所示
npm install -g @vue/cli
在命令行中鍵入vue create demo (demo是項目名)?即可完成創(chuàng)建
cd到demo(項目)目錄芳悲,先執(zhí)行cnpm install?安裝依賴,然后執(zhí)行npm run serve边坤,即可啟動項目名扛,瀏覽器中輸入localhost:8080出現(xiàn)以下頁面說明啟動成功。
1.cd到/usr/local目錄執(zhí)行?如下命令下載tomcat壓縮包(如圖6所示)
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.39/bin/apache-tomcat-8.5.39.tar.gz
2.執(zhí)行如下命令惩嘉,命令解壓tomcat壓縮包罢洲,完成安裝。
tar -zxvf apache-tomcat-8.5.39.tar.gz
1.?創(chuàng)建systemctl管理tomcat的配置文件?vim /lib/systemd/system/tomcat.service
2.?配置文件樣例文黎,?圖8所示惹苗。
圖8.?配置文件樣例
3.?啟動服務(wù)?
systemctl start tomcat.service
4.?查看服務(wù)狀態(tài)?
systemctl status tomcat.service?
5.?開機啟動?
systemctl enable tomcat.service?
重啟之后再查看服務(wù)狀態(tài)已經(jīng)啟動
(注意:由于系統(tǒng)架構(gòu)采用兩臺服務(wù)器并實現(xiàn)負(fù)載均衡,所以兩臺服務(wù)器tomcat安裝配置完全一致)
提出問題:在分布式系統(tǒng)中需要使用多臺服務(wù)器耸峭,用戶在客戶端第一次發(fā)送登錄請求(假定一次登陸成功)桩蓉,nginx負(fù)載均衡分配到服務(wù)器1,服務(wù)器1中生成session劳闹,并且響應(yīng)客戶端院究,客戶端中存儲了此session。接下來用戶再次發(fā)送請求本涕,就會產(chǎn)生以下兩種情況:
① nginx將請求分配給服務(wù)器1业汰,服務(wù)器檢測到有此用戶的session,響應(yīng)客戶端菩颖;
② nginx將請求分配給服務(wù)器2样漆,服務(wù)器檢測不到此用戶的session,無法響應(yīng)客戶端晦闰,此時就會報錯放祟。
即:一個請求,有時可以得到響應(yīng)呻右,有時得不到響應(yīng)跪妥。
解決問題:采用redis實現(xiàn)session共享。實現(xiàn)原理如下圖所示声滥,用戶登錄之后會將session寫入redis中眉撵,再次發(fā)送請求時,服務(wù)器2就會從客戶端發(fā)送過來的session中獲取sessionId,再用sessionId從redis中獲取session执桌。
1.?官網(wǎng)下載壓縮包
wget http://download.redis.io/releases/redis-4.0.6.tar.gz
2.?解壓
tar -zxvf redis-4.0.6.tar.gz
3. cd到redis-4.0.6目錄 執(zhí)行
make
redis-4.0.6目錄下會出現(xiàn)編譯后的redis服務(wù)程序redis-server,還有用于測試的客戶端程序redis-cli,兩個程序位于安裝目錄?src?目錄下鄙皇。
cd 到src目錄下執(zhí)行如下命令
make install
3.?下面啟動redis服務(wù)-----以后臺進(jìn)程方式啟dong修改redis.conf文件?daemonize no改為?daemonize yes
然后執(zhí)行
./redis-server /usr/local/redis-4.0.6/redis.conf
1.?開機自啟動
執(zhí)行
vim /etc/systemd/system/redis-server.service
添加如下內(nèi)容
[Unit]
Description=Redis Server Manager
After=syslog.target
After=network.target
[Service]
Type=simple
User=redis
Group=redis
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/redis-server /usr/local/redis/redis.conf
ExecStop=/usr/local/redis/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
保存退出執(zhí)行如下指令,完成開機自啟配置
systemctl daemon-reload
systemctl start redis-server.service
systemctl enable redis-server.service
執(zhí)行
rpm -qa|grep mariadb
rpm -e mariadb-libs-5.5.56-2.el7.x86_64 –nodeps
下載命令
curl -LO http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
下載后執(zhí)行
yum localinstall mysql57-community-release-el7-11.noarch.rpm
1.?執(zhí)行命令完成安裝
yum install mysql-community-server
vim /etc/rc.local
添加service mysqld start即可
圖12所示
圖12 mysql自啟動
1.修改密碼
查到密碼 grep 'temporary password' /var/log/mysqld.log
修改密碼ALTER USER test@'%' IDENTIFIED BY '123456';
2.?開啟遠(yuǎn)程連接端口
執(zhí)行 firewall-cmd --zone=public --add-port=3306/tcp --permanent 開放3306端口
執(zhí)行 firewall-cmd --reload 重啟防火墻
執(zhí)行 firewall-cmd --list-port 查看已開放的端口
主從關(guān)系說明:mysql服務(wù)器由兩臺主服務(wù)器(master1--71仰挣,master2--76)和兩臺從服務(wù)器(slave1--72伴逸,slave2--77)組成,master1與master2互為主從膘壶,slave1為master 1的從服務(wù)器,?slave2為master 2的從服務(wù)器错蝴。
1.?Master1?配置my.cnf文件?(/etc/my.cnf?下同),圖14所示
圖14?Master1?配置my.cnf
2.?Master2的my.cnf配置颓芭,圖15所示
圖15.?Master2?配置my.cnf
3.?Slave1配置my.cnf文件顷锰,圖16所示
圖16.?Slave1配置my.cnf文件
4.?Slave2配置my.cnf文件,圖17所示
圖17?Slave2配置my.cnf文件
1. master1配置
A.?查看master2狀態(tài) 執(zhí)行命令?show master status亡问,圖18所示官紫。
圖18.?查看master2狀態(tài)
B.?執(zhí)行配置命令,圖19所示
change master to master_host='192.168.1.222', master_user='master2',master_password='123456',master_log_file='mysql_bin.000018',master_log_pos=154;
master_host是master1的主服務(wù)器ip
master2是master1的主服務(wù)器
圖19. ?master1配置
2. master2配置
A.?查看master1狀態(tài) 執(zhí)行命令?show master status州藕,圖20所示束世。
圖20. maste1狀態(tài)
B.?執(zhí)行配置命令
change master to master_host=
'192.168.1.221', #master2的主服務(wù)器ip
master_user='master1', # master1是master2的主服務(wù)器
master_password='123456',
master_log_file='mysql_bin.000028',
master_log_pos=154;
圖21. master2配置
1. slave1配置(slave1和master2都是master1的從服務(wù)器,所以兩者配置一樣)圖22.?所示
change master to master_host=
'192.168.1.221',
master_user='master1',
master_password='123456',
master_log_file='mysql_bin.000028',master_log_pos=154;
圖22. slave1配置
2. slave2配置(slave2和master1都是master2的從服務(wù)器床玻,所以兩者配置一樣)
執(zhí)行配置命令(圖23所示)
change master to master_host=
'192.168.1.222', #slave2的主服務(wù)器ip
master_user='master2',
master_password='123456',
master_log_file='mysql_bin.000018',
master_log_pos=154;
圖23. slave2配置
1.首先進(jìn)入/usr/local目錄?cd /usr/local
2.從官網(wǎng)下載mycat(圖24所示)
wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
3毁涉、解壓mycat壓縮包
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
1.?mycat文件夾授權(quán)?
chmod -R 777 mycat
2.環(huán)境變量添加
vi /etc/profile
添加
export MYCAT_HOME=/usr/local/mycat
3.?使環(huán)境變量生效
source /etc/profile
4.?啟動mycat
1.?配置server.xml (Path: ?/usr/local/mycat/conf/server.xml)圖25所示
圖25.?配置server.xml
2.?配置?schema.xml ?(path: ?/usr/local/mycat/conf/schema.xml),圖26所示
圖26.?配置?schema.xml
1.?創(chuàng)建systemctl管理mycat的配置文件?vim /lib/systemd/system/mycat.service
2.?配置文件樣例锈死,圖27所示
圖27.?配置文件樣例
3.?啟動服務(wù)?s
ystemctl start mycat.service
4.?查看服務(wù)狀態(tài)
systemctl status mycat.service
5.?開機啟動?
systemctl enable mycat.service
重啟之后再查看服務(wù)狀態(tài)已經(jīng)啟動
在VSCode中打開終端,執(zhí)行如下命令,編譯完成之后根目錄下會生成dist文件夾(圖31所示)待牵,將dist更名為FlupPlatformWebpage其屏,并在vue.config.js中配置生產(chǎn)環(huán)境目錄,使其與包名相同缨该,配置如下漫玄。
npm run build
module.exports = {
? publicPath: process.env.NODE_ENV === 'production'
? ? ? '/FlupPlatformWebpage/'
? ? : '/'
}
圖31.?前端打包
首先在application.yml配置啟動文件
spring:
? profiles:
? ? active: prod
然后在application-prod.yml配置文件中配置數(shù)據(jù)庫連接及redis連接,詳細(xì)配置如下
spring:
? datasource:
? ? url: jdbc:mysql://localhost:8066/yaxin?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
? ? username: root
? ? password: Yaxin123456
? ? driver-class-name: com.mysql.jdbc.Driver
? redis:
? ? host: 133.0.5.65
? ? password: yaxin123456
? ? port: 6379
? ? database: 0
? ? timeout: 2400s
打開終端(terminal)cd到項目yaxin(module)目錄压彭,輸入mvn clean install -DMaven.test.skip=true,編譯完成之后會在yaxin目錄下生成target目錄渗常,此目錄下的FlupPlatformServer.war文件就是即將部署的war包壮不,相關(guān)操作及配置如下圖32所示。
圖32.?后臺打包
兩個服務(wù)器都要部署