1、 系統架構3前端
2、 項目環境搭建3vue
1. 前端3node
1.1負載均衡3mysql
1.2 前端技術框架----Vue.js(開發環境搭建)3linux
1.2.1 node.js安裝3nginx
1.2.3 構建vue項目6spring
1.2.4 項目啓動6sql
2. 後臺6vue-cli
本系統的環境部署和配置主要分爲三大塊:前端,後端,數據庫,圖一所示
圖一. 系統架構圖
開發和測試環境中,負載均衡由兩臺代理服務器,採用nginx+keepalived實現雙機熱備份和Web服務器的負載均衡。在生產環境中由醫院提供的F5服務器作負載均衡。
兩臺Web服務器互爲備份,同時實現負載均衡,用於部署系統的後端程序,採用Redis解決前端訪問的session共享問題,安裝Tomcat做爲Web服務軟件,採用Mycat做爲數據庫服務器讀寫分離的中間件。
數據庫服務器採用雙主從結構,從服務器的數據與主服務器同步,數據的寫操做(增刪改)均在主服務器上進行,兩臺主數據庫服務器互爲備份,數據庫的讀操做(查詢)均在從數據庫服務器上進行,系統數據讀寫業務量增大時,可擴展住、從服務器數量實現擴容,前端Web服務器同過Mycat的配置實現讀寫操做的負載均衡。
生產環境系統中負載均衡由醫院方提供F5服務器作負載均衡
1.進入Node.js官網:https://nodejs.org/en/,選擇下載並安裝Node.js(需較新版本)
2.驗證Node.js是否安裝好,在windows下,win+r召喚出運行窗口,輸入cmd打開命令行窗口。輸入node -v便可獲得對應的Node.js版本。
3.安裝cnpm
執行命令
npm install -g cnpm --registry=https://registry.npm.taobao.or
使用npm的國內鏡像(npm 國內鏡像 https://npm.taobao.org/)cnpm 命令代替默認的npm命令,增長依賴包加載速度且避免資源限制
在命令行中運行以下命令,安裝腳手架。圖4所示
npm install -g @vue/cli
在命令行中鍵入vue create demo (demo是項目名) 便可完成建立
cd到demo(項目)目錄,先執行cnpm install 安裝依賴,而後執行npm run serve,便可啓動項目,瀏覽器中輸入localhost:8080出現如下頁面說明啓動成功。
1.cd到/usr/local目錄 執行 以下命令下載tomcat壓縮包(如圖6所示)
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.39/bin/apache-tomcat-8.5.39.tar.gz
2.執行以下命令,命令解壓tomcat壓縮包,完成安裝。
tar -zxvf apache-tomcat-8.5.39.tar.gz
1. 建立systemctl管理tomcat的配置文件 vim /lib/systemd/system/tomcat.service
2. 配置文件樣例, 圖8所示。
圖8. 配置文件樣例
3. 啓動服務
systemctl start tomcat.service
4. 查看服務狀態
systemctl status tomcat.service
5. 開機啓動
systemctl enable tomcat.service
重啓以後再查看服務狀態已經啓動
(注意:因爲系統架構採用兩臺服務器並實現負載均衡,因此兩臺服務器tomcat安裝配置徹底一致)
提出問題:在分佈式系統中須要使用多臺服務器,用戶在客戶端第一次發送登陸請求(假定一次登錄成功),nginx負載均衡分配到服務器1,服務器1中生成session,而且響應客戶端,客戶端中存儲了此session。接下來用戶再次發送請求,就會產生如下兩種狀況:
① nginx將請求分配給服務器1,服務器檢測到有此用戶的session,響應客戶端;
② nginx將請求分配給服務器2,服務器檢測不到此用戶的session,沒法響應客戶端,此時就會報錯。
即:一個請求,有時能夠獲得響應,有時得不到響應。
解決問題:採用redis實現session共享。實現原理以下圖所示,用戶登陸以後會將session寫入redis中,再次發送請求時,服務器2就會從客戶端發送過來的session中獲取sessionId,再用sessionId從redis中獲取session。
1. 官網下載壓縮包
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目錄 執行
make
redis-4.0.6目錄下會出現編譯後的redis服務程序redis-server,還有用於測試的客戶端程序redis-cli,兩個程序位於安裝目錄 src 目錄下。
cd 到src目錄下執行以下命令
make install
3.
下面啓動redis服務-----之後臺進程方式啓dong
修改redis.conf文件 daemonize no 改成 daemonize yes
而後執行
./redis-server /usr/local/redis-4.0.6/redis.conf
1. 開機自啓動
執行
vim /etc/systemd/system/redis-server.service
添加以下內容
[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
保存退出執行以下指令,完成開機自啓配置
systemctl daemon-reload
systemctl start redis-server.service
systemctl enable redis-server.service
執行
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
下載後執行
yum localinstall mysql57-community-release-el7-11.noarch.rpm
1. 執行 命令完成安裝
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.
開啓遠程鏈接端口
執行 firewall-cmd --zone=public --add-port=3306/tcp --permanent 開放3306端口
執行 firewall-cmd --reload 重啓防火牆
執行 firewall-cmd --list-port 查看已開放的端口
主從關係說明:mysql服務器由兩臺主服務器(master1--71,master2--76)和兩臺從服務器(slave1--72,slave2--77)組成,master1與master2互爲主從,slave1爲master 1的從服務器, slave2爲master 2的從服務器。
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狀態 執行命令 show master status,圖18所示。
圖18. 查看master2狀態
B. 執行配置命令,圖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的主服務器ip master2是master1的主服務器
圖19. master1配置
2. master2配置
A. 查看master1狀態 執行命令 show master status,圖20所示。
圖20. maste1狀態
B. 執行配置命令
change master to master_host=
'192.168.1.221', #master2的主服務器ip
master_user='master1', # master1是master2的主服務器
master_password='123456',
master_log_file='mysql_bin.000028',
master_log_pos=154;
圖21. master2配置
1. slave1配置(slave1和master2都是master1的從服務器,因此二者配置同樣)圖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的從服務器,因此二者配置同樣)
執行配置命令(圖23所示)
change master to master_host=
'192.168.1.222', #slave2的主服務器ip
master_user='master2',
master_password='123456',
master_log_file='mysql_bin.000018',
master_log_pos=154;
圖23. slave2配置
1.首先進入/usr/local目錄 cd /usr/local
2.從官網下載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文件夾受權
chmod -R 777 mycat
2.環境變量添加
vi /etc/profile
添加
export MYCAT_HOME=/usr/local/mycat
3. 使環境變量生效
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. 建立systemctl管理mycat的配置文件 vim /lib/systemd/system/mycat.service
2. 配置文件樣例,圖27所示
圖27. 配置文件樣例
3. 啓動服務 s
ystemctl start mycat.service
4. 查看服務狀態
systemctl status mycat.service
5. 開機啓動
systemctl enable mycat.service
重啓以後再查看服務狀態已經啓動
在VSCode中打開終端,執行以下命令,編譯完成以後根目錄下會生成dist文件夾(圖31所示),將dist改名爲FlupPlatformWebpage,並在vue.config.js中配置生產環境目錄,使其與包名相同,配置以下。
npm run build
module.exports = {
publicPath: process.env.NODE_ENV === 'production'
? '/FlupPlatformWebpage/'
: '/'
}
圖31. 前端打包
首先在application.yml配置啓動文件
spring:
profiles:
active: prod
而後在application-prod.yml配置文件中配置數據庫鏈接及redis鏈接,詳細配置以下
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包,相關操做及配置以下圖32所示。
圖32. 後臺打包
兩個服務器都要部署