第十四天:css
一、測試
a) 本地單元測試
b) 測試環境測試(1,2,3,4,5)
c) 用戶測試(仿真環境:UAT環境)
二、確認服務器的資源
a) 硬件資源(CPU、內存、硬盤)
b) 軟件資源(Linux、Windows)
c) 網絡資源(寬帶、機房、雲服務器)
三、相關參與的人員確認
a) 測試人員
b) 開發人員
四、數據庫腳本的準備
a) 初始化數據的sql腳本(DBA、運維)
b) 權限的sql腳本等
五、編寫發佈的文檔
a) 開發人員編寫各自負責的功能模塊的發佈文檔
信息
b) 測試的文檔(測試用例)
c) 全員參與
六、打包
a) 專門負責的人員進行打包處理(運維)
七、準備回滾方案
html
第一步:查看mysql是否安裝。java
rpm -qa | grep mysql
第二步:若是mysql的版本不是想要的版本。須要把原來的mysql卸載。mysql
yum remove mysql mysql-server mysql-libs mysql-common
rm -rf /var/lib/mysql
rm -f /etc/my.cnf
注意:使用yum命令卸載,由於yum命令能夠自動刪除與mysql相關的依賴;若是使用rpm命令卸載,則還須要手動去刪除和mysql相關的文件。
第三步:安裝mysql。須要使用yum命令安裝。在安裝mysql以前須要安裝mysql的下載源。須要從oracle的官方網站下載。linux
1)下載mysql的源包:
咱們是centos6.4對應的rpm包爲:mysql-community-release-el6-5.noarch.rpm
命令:wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
2)安裝mysql下載源:
yum localinstall mysql-community-release-el6-5.noarch.rpm
3)在線安裝社區版的mysql:
yum install mysql-community-server
或者在線安裝收費版本的mysql:
yum install mysql-server
兩種方式都可,建議安裝社區版。
rpm包位置:nginx
service mysqld start
第五步:須要給root用戶設置密碼。git
/usr/bin/mysqladmin -u root password 'new-password' #爲root帳號設置密碼
第六步:登陸mysql。github
[root@localhost temp]# mysql -uroot -pitcast
第七步:須要先登陸到mysql,遠程鏈接受權。web
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
注意:'myuser'
、'mypassword'
須要替換成實際的用戶名和密碼。
mysql安裝好了以後,啓動服務,創建鏈接,導入taotao數據庫文件。
詳細連接文章:https://www.cnblogs.com/chenmingjun/p/10192987.html面試
工程共13個,以下所示,本着高可用的原則,每一個工程至少有兩臺服務器。13個工程至少須要26臺服務器。
taotao-manager 8080
taotao-manager-web 8081
taotao-portal-web 8082
taotao-content 8083
taotao-search 8084
taotao-search-web 8085
taotao-item-web 8086
taotao-sso 8087
taotao-sso-web 8088
taotao-cart 8089
taotao-cart-web 8090
taotao-order 8091
taotao-order-web 8092
即淘淘商城在真實環境中要部署的話須要26臺服務器。
服務 | 服務器個數 |
---|---|
Mysql(主備) | 2 |
Solr(集羣3+4兩片) | 7 |
Redis(集羣3個節點) | 6 |
圖片服務器(T/S) | 2 |
Nginx(主備) | 2 |
zookeeper註冊中心(集羣) | 3 |
Activemq(集羣) | 2 |
總共須要26+24=50臺服務器。但咱們都知道,通常的小公司是毫不可能弄這麼多服務器的,太昂貴了,比較可行的是採用僞分佈式
。
以下圖所示,搭建服務原來須要24臺服務器,如今只須要7臺便可。
將全部服務精簡成一臺服務器
:
192.168.25.133
內存至少給2G以上。下圖是全部服務端口的規劃表:
將全部工程精簡成一臺服務器
:
192.168.25.133
內存至少給2G以上。下圖是全部工程端口的規劃表:
工程規劃表:
域名規劃表:
可使用maven的tomcat插件實現tomcat熱部署。即在tomcat啓動時部署工程
。
tomcat有個後臺管理功能
,能夠實現工程熱部署。部署完成後,咱們不須要啓動tomcat了,tomcat會自動把war包解壓到ROOT目錄下。tomcat後臺管理功能
有兩種方式能夠訪問,第一種是經過圖形化界面
的方式,第二種是經過命令行
的方式,這兩種方式須要配置相應的權限。
第一種方式須要將工程打成war包,再手動上傳,稍微有一些麻煩,第二種方式相對簡單些。咱們下面演示的是第二種方式。
這裏僅以taotao-content及taotao-portal-web爲例子演示:
演示使用的Linux的ip地址爲:192.168.25.133
在Linux下,咱們新建有13個tomcat放置13工程:
a) 部署taotao-content
linux系統上的配置:
第一步:須要修改linux系統中對應的tomcat9002的conf/tomcat-users.xml配置文件。添加用戶名、密碼、權限。
<role rolename="manager-gui" />
<role rolename="manager-script" />
<user username="tomcat" password="tomcat" roles="manager-gui, manager-script"/>
咱們要將war包放在對應的tomcat9002中的webapps目錄下的ROOT目錄下,因此咱們先在webapps目錄下建立ROOT目錄:
[root@localhost webapps]# mkdir ROOT
第二步:從新啓動對應的tomcat9002。
[root@localhost ~]# pwd
/usr/local/taotao-projects/tomcat9002/bin
[root@localhost bin]# ./startup.sh
第三步:查看tomcat9002的啓動日誌。
[root@localhost tomcat9002]# tail -f logs/catalina.out
開發機器上(windows系統)的配置:
第一步:修改配置文件。
修改taotao-content工程中的相應的配置文件db.properties
中數據庫的ip地址、端口、實例名、用戶名、密碼。以下:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.165.25.133:3306/taotao?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root
修改applicationContenxt-redis.xml
中的ip地址、端口。(即:將原來的localhost修改成mysql所在的服務器的IP地址。)
修改taotao-content工程中的發佈服務的配置文件applicationContenxt-service.xml
中註冊中心的地址,改爲linux系統中的zookeeper的地址192.168.25.167
以及暴露服務的端口。
第二步:配置maven的tomcat插件,須要修改taotao-content工程的pom.xml文件。
<build>
<plugins>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8083</port>
<path>/</path>
<url>http://192.168.25.133:9002/manager/text</url>
<username>tomcat</username>
<password>tomcat</password>
</configuration>
</plugin>
</plugins>
</build>
注意:添加了三行配置,<url>
裏面的tomcat熱部署地址的端口號有所變化,如今是9002。你們可能會有疑問,<url>
配置上面的那個<port>8083</port>
有什麼用?會不會對部署產生壞的影響。這個其實不用擔憂,這個port
對熱部署來講,沒有用,這裏之因此沒有把它刪掉是由於咱們在Windows系統下開發
的時候給這個工程規劃的端口是8083
,若是須要在Windows系統下啓動該工程的
話,這個port就是有用的,所以這個<port>8083</port>
配置咱們沒必要理會,擱那兒就行。
第三步:使用maven命令進行部署。
選中taotao-content工程,右鍵 --> Run As --> Maven build…
clean tomcat7:deploy #部署
clean tomcat7:redeploy #從新部署
部署的路徑是「/」
會把系統部署到webapps/ROOT目錄下
。
部署工程跳過測試
:
clean tomcat7:redeploy -DskipTests
第四步:在Linux下查看toamcat9002的日誌
[root@localhost tomcat9002]# tail -f logs/catalina.out
日誌輸出內容以下圖所示:
部署完服務後
,都會停在如上圖所示的位置上,須要咱們
從新啓動tomcat9002
。暫時不知道爲何。
dubbo服務治理
-->
服務頁面
,發現多了兩個服務,分別是com.taotao.content.service.ContentCategoryService和com.taotao.content.service.ContentService。說明咱們的taotao-content工程部署成功。
b) 部署taotao-portal-web
注意:首先要確保新的服務器192.168.25.133
上安裝的jdk是否與Eclipse開發時所用的jdk版本一致,我Eclipse開發時用的jdk1.7,所以服務器上的安裝的jdk版本也要是1.7才行。否則會出現問題!!!(是個坑)
Linux上安裝jdk過程連接:https://www.cnblogs.com/chenmingjun/p/9931593.html
linux系統上的配置:
第一步:須要修改linux系統中對應的tomcat9003的conf/tomcat-users.xml配置文件。添加用戶名、密碼、權限。
<role rolename="manager-gui" />
<role rolename="manager-script" />
<user username="tomcat" password="tomcat" roles="manager-gui, manager-script"/>
咱們要將war包放在對應的tomcat9003中的webapps目錄下的ROOT目錄下,因此咱們先在webapps目錄下建立ROOT目錄:
[root@localhost webapps]# mkdir ROOT
第二步:從新啓動對應的tomcat9003。
[root@localhost ~]# pwd
/usr/local/taotao-projects/tomcat9003/bin
[root@localhost bin]# ./startup.sh
第三步:查看tomcat9003的啓動日誌。
[root@localhost tomcat9003]# tail -f logs/catalina.out
開發機器上(windows系統)的配置:
第一步:修改配置文件。
修改taotao-portal-web工程中的引用服務的配置文件springmvc.xml中註冊中心的地址,改爲linux系統中的zookeeper的ip地址192.168.25.133
。
第二步:配置maven的tomcat插件,須要修改taotao-portal-web工程的pom.xml文件。
<build>
<plugins>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8082</port>
<path>/</path>
<url>http://192.168.25.133:9003/manager/text</url>
<username>tomcat</username>
<password>tomcat</password>
</configuration>
</plugin>
</plugins>
</build>
第三步:使用maven命令進行部署。
選中taotao-portal-web工程,右鍵 --> Run As --> Maven build…
tomcat7:deploy #部署
tomcat7:redeploy #從新部署
部署的路徑是「/」
會把系統部署到webapps/ROOT目錄下。
部署工程跳過測試
:
clean tomcat7:redeploy -DskipTests
第四步:在Linux下查看toamcat9003的日誌
[root@localhost tomcat9003]# tail -f logs/catalina.out
第五步:從新啓動tomcat9003。
第六步:查看dubbo監控中心。
部署完服務層工程taotao-portal-web後,咱們到dubbo服務治理
--> 應用頁面
,發現多了兩個應用,分別是taotao-content和taotao-portal-web。說明咱們的taotao-portal-web工程部署成功。
同上 a) 部署taotao-content
和 b) 部署taotao-portal-web
步驟。
注意1:在工程部署以前須要啓動全部的服務:zookeeper、redis、solr、mysql、activemq
注意2:每一個工程運行在不一樣的tomcat上,須要修改tomcat的端口號。
注意3:先部署服務層工程,再部署表現層工程。
注意4:當部署使用到activemq的工程時,須要將原來的pom.xml文件的activemq的依賴配置項修改成新的,以下:
原來的:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
</dependency>
新的:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
</dependency>
若是不修改爲新的在部署的時候會報錯,可是在開發使用原來的沒有問題。(這是一個坑
)
部署大體步驟以下:
第一步:修改工程中的服務器的地址都改成192.168.25.133(在全部的jsp和xml中)
第二步:修改全部localhost對應正確的域名
例如:http://localhost:8088 --> http://sso.taotao.com
第三步:修改全部db.properties中的localhost:3306/taotao
爲192.168.25.133:3306/taotao
,以及用戶名和密碼。
第四步:若是在數據庫中沒有建立taotao,須要建立一個,再導入數據。
第五步:反向代理配置以下3.六、反向代理的配置
所示:
第六步:測試,須要先將本地hosts切換爲以下圖所示配置:
linux系統上的配置:
Linux系統上nginx配置反向代理,反向代理配置的是表現層工程對應的端口
,注意:配置upstream時不要有空格。
[root@localhost conf]# pwd
/usr/local/nginx/conf
[root@localhost conf]# vim nginx.conf
nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream manager.taotao.com {
server 192.168.25.133:9001;
}
upstream www.taotao.com {
server 192.168.25.133:9003;
}
upstream search.taotao.com {
server 192.168.25.133:9005;
}
upstream item.taotao.com {
server 192.168.25.133:9006;
}
upstream sso.taotao.com {
server 192.168.25.133:9008;
}
upstream order.taotao.com {
server 192.168.25.133:9010;
}
upstream cart.taotao.com {
server 192.168.25.133:9012;
}
server {
listen 80;
server_name manager.taotao.com;
location / {
proxy_pass http://manager.taotao.com;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.taotao.com;
location / {
proxy_pass http://www.taotao.com;
index index.html index.htm;
}
}
server {
listen 80;
server_name search.taotao.com;
location / {
proxy_pass http://search.taotao.com;
index index.html index.htm;
}
}
server {
listen 80;
server_name item.taotao.com;
location / {
proxy_pass http://item.taotao.com;
index index.html index.htm;
}
}
server {
listen 80;
server_name sso.taotao.com;
location / {
proxy_pass http://sso.taotao.com;
index index.html index.htm;
}
}
server {
listen 80;
server_name order.taotao.com;
location / {
proxy_pass http://order.taotao.com;
index index.html index.htm;
}
}
server {
listen 80;
server_name cart.taotao.com;
location / {
proxy_pass http://cart.taotao.com;
index index.html index.htm;
}
}
}
注意:修改好以後,須要從新加載(reload)nginx的配置文件
。
開發機器上(windows系統)的配置:
測試時使用域名訪問網站,須要修改本地電腦(windows)hosts
文件。
全部的域名應該指向反向代理服務器nginx
。
配置hosts文件,內容以下:
192.168.25.133 manager.taotao.com
192.168.25.133 www.taotao.com
192.168.25.133 search.taotao.com
192.168.25.133 item.taotao.com
192.168.25.133 sso.taotao.com
192.168.25.133 cart.taotao.com
192.168.25.133 order.taotao.com
咱們可使用一個軟件來配置本地電腦(windows)hosts文件,以管理員身份運行SwitchHosts軟件:
項目中:執行查詢的命令要比修改、刪除、這些命令要多的多。因此爲了保證數據庫的讀寫性能
和數據庫的完整性
。須要作讀寫分離
。
什麼是讀寫分離?
通俗的講就是讀取的命令在一個數據庫中,而寫入的命令在另一個庫中。兩個庫中的數據必須同步
。
Mysql提供的解決方案:使用binlog進行數據庫同步
。須要配置mysql。
代碼中實現讀寫分類:
一、可使用aop實現一個切面。動態切換數據源。須要編程實現。
二、使用數據庫中間件實現讀寫分離
,分庫分表
。(學習這個)
mysql 2000萬以上
和
oracle11G 1億以上
時須要分庫分表。
數據庫中間件Mycat
。國產開源項目,前身是
cobar項目
。
簡單的說,Mycat就是:
Mycat的目標是:低成本的將現有的單機數據庫和應用平滑遷移
到「雲」端,解決數據存儲和業務規模迅速增加狀況下的數據瓶頸
問題。
官方網站:
http://www.mycat.org.cn/
github地址:
https://github.com/MyCATApache
數據庫準備,準備三個MySQL數據庫實例。
在Linux上安裝一個MySQL數據庫進行模擬,再設置三個數據庫,做爲集羣中的庫進行使用。
分片規則:
[root@localhost ~]# mv Mycat-server-1.4-release-20151019230038-linux.tar.gz /usr/local
[root@localhost ~]# cd /usr/local
[root@localhost local]# tar -zxf Mycat-server-1.4-release-20151019230038-linux.tar.gz
建立3個數據庫實例
[root@localhost local]# cd /usr/local/mycat/conf
[root@localhost conf]# ll
文件內容詳解以下圖:
[root@localhost conf]# vim server.xml
配置內容以下:
設置爲MySQL對大小寫不敏感
,不然可能會發生表找不到的問題。
lower_case_table_names = 1
配置schema.xml,配置的是物理數據庫的節點信息,包括:ip地址、端口、數據庫名稱、分片規則
[root@localhost conf]# vim schema.xml
配置內容以下:
[root@localhost conf]# vim rule.xml
配置內容以下:
rule.xml
配置分片算法
[root@localhost conf]# vim auto-id.txt
文件內容以下:
# K=1000,M=10000
0-127=0
128-255=1
256-511=2
建立3個數據庫實例,要求和mycat配置的schema.xml中的3個實例名稱一致。
啓動命令:./mycat start
中止命令:./mycat stop
重啓命令:./mycat restart
具體操做:
[root@localhost ~]# cd /usr/local/mycat/bin
[root@localhost bin]# ./mycat start
內容以下:
[root@localhost logs]# vim wrapper.log
注意:可使用mysql的客戶端直接鏈接mycat服務。默認服務端口爲8066
在mycat中建立數據庫表,發現使用的三個庫都建立了表。
在mycat中插入數據,發現按照規則給三個數據庫分別插入了數據。
https://blog.csdn.net/u012453843/article/details/73694543 https://blog.csdn.net/u012453843/article/details/73656590