越是迷茫的時(shí)候,就越要去學(xué)習(xí)
本文是原創(chuàng)持續(xù)連載發(fā)布,這篇是SpringMVC + dubbo +zookeeper + oracle 單機(jī)版初級(jí)架構(gòu),這是基本系統(tǒng)雛形。以下文章順序是按本人實(shí)施順序來的。本人會(huì)盡可能不斷去完善細(xì)節(jié)點(diǎn),提高系統(tǒng)可行性及實(shí)用性。從前端的選擇、系統(tǒng)中單點(diǎn)問題、發(fā)布及部署、數(shù)據(jù)緩存及數(shù)據(jù)庫(kù)優(yōu)化等問題著手考慮。如有文中有書寫或部署問題,請(qǐng)留言指導(dǎo)修正,互相交流,共同進(jìn)步,本人QQ:417213902。
本文系統(tǒng)架構(gòu)圖

| 安裝軟件 | 版本 |
|---|---|
| linux虛擬機(jī) | CentOS-6.5-x86_64-bin-DVD1.iso |
tomcat | apache-tomcat-8.5.23.tar.gz
zookeeper | zookeeper-3.4.10.tar.gz
oracle | linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip
nginx | nginx/1.12.2
本人gitbub地址(含版本1.0的code 及 software)
https://github.com/huang7230468/ArchModel_1
一、項(xiàng)目運(yùn)行環(huán)境安裝
1.1 java運(yùn)行環(huán)境
1.1.1 JDK1.8安裝
- 第一步,上傳,解壓
# tar –zxvf jdk-8u112-linux-x64.tar.gz - 第二步,修改環(huán)境變量,在文末增加以下內(nèi)容,保存生效
# vi /etc/profile
JAVA_HOME=/opt/soft/jdk1.8.0_112
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
EXPORT JAVA_HOME
EXPORT PATH
EXPORT CLASSPATH
# source /etc/profile
- 第三步,測(cè)試
# java -version

1.2 項(xiàng)目容器
1.2.1 tomcat8安裝
- 第一步,上傳,解壓
# tar –zxvf apache-tomcat-8.5.23.tar.gz - 第二步,測(cè)試
# cd /opt/soft/apache-tomcat-8.5.23/bin
# sh startup.sh
# ps -ef | grep tomcat
image.png
啟動(dòng)成功,訪問http://www.192.168.1.110:8080/
若訪問不通,則嘗試檢查服務(wù)器的防火墻
# service iptables status
1.3 zookeeper分布式應(yīng)用程序協(xié)調(diào)服務(wù)
1.3.1 zookeeper 安裝
- 第一步,上傳,解壓
# tar –zxvf zookeeper-3.4.10.tar.gz - 第二步,修改配置文件,復(fù)制一份zoo_sample.cfg,同時(shí)命名為zoo.cfg
# cd /opt/soft/zookeeper-3.4.10/conf
# cp zoo_sample.cfg zoo.cfg 配置文件詳解,請(qǐng)查閱相關(guān)文檔 - 第三步,啟動(dòng)
# cd /opt/soft/zookeeper-3.4.10/bin
# sh zkServer.sh start
# ps -ef | grep zookeeper

表示成功

若后期出現(xiàn)這個(gè)問題,請(qǐng)到dataDir (zoo.cfg)中將 進(jìn)程文件刪除就好了,出現(xiàn)這個(gè)問題是因?yàn)樯弦淮畏钦jP(guān)閉程序
二、數(shù)據(jù)庫(kù)--Oracle 模塊
2.1 Oracle靜默安裝
- 第一步,創(chuàng)建所需的操作系統(tǒng)組和用戶
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle - 第二步,修改Linux服務(wù)器內(nèi)核參數(shù)
在/sbin/sysctl.conf 文件中,使用文本編輯器或vi命令增加或修改以下參數(shù)
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
修改后,使設(shè)置生效
# /sbin/sysctl –p
若出現(xiàn)報(bào)錯(cuò) 則執(zhí)行以下命令 </br>
# modprobe bridge // 加載bridge模塊
# lsmod | grep bridge //查看模塊加載
- 第三步,修改系統(tǒng)用戶限制
在/etc/security/limits.conf 文件中,使用文本編輯器或vi命令增加或修改以下參數(shù)
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
在/etc/pam.d/login 文件中,使用文本編輯器或vi命令增加或修改以下內(nèi)容
session required /lib/security/pam_limits.so
session required pam_limits.so
在/etc/profile 文件中,使用文本編輯器或vi命令增加或修改以下內(nèi)容
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
使設(shè)置生效
# source /etc/profile
- 第四步,創(chuàng)建安裝目錄(目錄可按需修改)
# mkdir -p /u01/app/
# chown -R oracle:oinstall /u01
# chown -R oracle:oinstall /u01/app/
# chmod -R 775 /u01/app/ - 第五步,創(chuàng)建/etc/oraInst.loc文件
nventory_loc=/u01/app/oracle/oraInventory
inst_group=oinstall
更改文件的權(quán)限
# chown oracle:oinstall /etc/oraInst.loc
# chmod 664 /etc/oraInst.loc
- 第五步,設(shè)置oracle環(huán)境變量
# su - oracle
# vi ~/.bash_profile
增加以下內(nèi)容
export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=orcl
使設(shè)置生效
# source /home/oracle/.bash_profile
以上安裝oracle的基本配置好了,下面開始安裝
- 第六步,解壓oracle安裝文件,并符合相應(yīng)配置文件
用oracle用戶,將安裝文件上傳到/home/oracle 目錄下,解壓
# unzip linux.x64_11gR2_database_1of2.zip
# unzip linux.x64_11gR2_database_2of2.zip
自動(dòng)解壓到當(dāng)前目錄下的database下,并復(fù)制出.rsp文件以備用
# mkdir etc
# cp /home/oracle/database/response/ /home/oracle/etc/
# su - root
# chmod 700 /home/oracle/etc/*.rsp - 第七步,修改配置靜默安裝的初始化文件
# su - oracle
修改安裝Oracle軟件的響應(yīng)文件
# vi /home/oracle/etc/db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY //29 行 安裝類型
ORACLE_HOSTNAME=WD_SERVER //37 行 主機(jī)名稱(自己對(duì)應(yīng)的主機(jī)名稱,可利用hostname查看)
UNIX_GROUP_NAME=oinstall //42 行 安裝組
INVENTORY_LOCATION=/u01/app/oraInventory //47 行 INVENTORY目錄 必須在ORACLE_BASE路徑以外
SELECTED_LANGUAGES=en,zh_CN,zh_TW //78 行 選擇語(yǔ)言
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 //83 行 oracle_home
ORACLE_BASE=/u01/app/oracle //88 行 oracle_base
oracle.install.db.InstallEdition=EE //99 行 oracle版本
oracle.install.db.isCustomInstall=true //108行 自定義安裝
oracle.install.db.DBA_GROUP=dba //142行 dba用戶組
oracle.install.db.OPER_GROUP=oinstall //147行 oper用戶組
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE //160行 數(shù)據(jù)庫(kù)類型
oracle.install.db.config.starterdb.globalDBName=orcl //165行 globalDBName
oracle.install.db.config.starterdb.SID=orcl //170行 SID
oracle.install.db.config.starterdb.memoryLimit=512 //192行 自動(dòng)管理內(nèi)存的最小內(nèi)存(M)(200行)
oracle.install.db.config.starterdb.password.ALL=oracle //233行 設(shè)定所有數(shù)據(jù)庫(kù)用戶使用同一個(gè)密碼
DECLINE_SECURITY_UPDATES=true //385行 設(shè)置安全更新
開始以靜默方式執(zhí)行剛剛配置的db_install.rsp
# cd /home/oracle/database
# ./runInstaller -silent -force -responseFile home/oracle/etc/db_install.rsp
稍等。。。。。。。
出現(xiàn) Successfully Setup Software. 成功
使用root用戶執(zhí)行root.sh
# su - root
sh /u01/app/oracle/product/11.2.0/db_1/root.sh
# su - oracle
# vi ~/.bash_profile
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export LIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib
export ORACLE_OWNER=oracle
export SPFILE_PATH=$ORACLE_HOME/dbs
export ORA_NLS10=$ORACLE_HOME/nls/data
export DISPLAY=127.0.0.1:0.0
使設(shè)置生效
# source /home/oracle/.bash_profile
到此,可以嘗試啟動(dòng)oracle
啟動(dòng)監(jiān)聽
# lsnrctl status
# sqlplus / as sysdba
修改下oracle默認(rèn)配置,可不操作
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database flashback on; (如果要啟用數(shù)據(jù)庫(kù)閃回功能則執(zhí)行)
SQL> alter database open;
SQL> execute utl_recomp.recomp_serial(); (重新編譯所有可能失效對(duì)象)
SQL> alter system archive log current; (手工歸檔測(cè)試)
以下以腳本模式創(chuàng)建表空間及用戶
# vi createuser.sql
define data_tablespace_postfix="_data"
define data_file_postfix="_data.dbf"
define tmp_tablespace_postfix="_temp"
define tmp_file_postfix="_temp.dbf"
create tablespace &2&data_tablespace_postfix logging datafile '&3/&2&data_file_postfix' size 20480m;
create temporary tablespace &2&tmp_tablespace_postfix tempfile '&3/&2&tmp_file_postfix' size 4096m;
create user &2 identified by &4 default tablespace &2&data_tablespace_postfix temporary tablespace &2&tmp_tablespace_postfix;
grant create session ,create any table ,create any view ,create any index,create any procedure ,create any trigger,create any sequence ,alter any table ,alter any procedure,alter any trigger,alter any sequence,select any table ,drop any table ,drop any view ,drop any trigger ,drop any sequence,drop any index,drop any procedure ,insert any table, update any table ,delete any table, unlimited tablespace to &2;
腳本說明:
&2 : 數(shù)據(jù)庫(kù)用戶
&3 :表空間路徑
&4 :用戶密碼
# sqlplus / as sysdba
SQL>@createuser.sql
到此為止,數(shù)據(jù)庫(kù)的安裝及用戶創(chuàng)建已經(jīng)完成,后續(xù)還會(huì)補(bǔ)充其他數(shù)據(jù)庫(kù)方面知識(shí),如雙機(jī)熱備等
三、項(xiàng)目部署
開發(fā)環(huán)境是在idea中進(jìn)行,可將github中代碼檢出,搭建起來,打包發(fā)布,此處代碼略過。
四、Nginx模塊
4.1 nginx搭建
CentOS6.5下配置yum安裝Nginx。
- 第一步,在/etc/yum.repos.d/目錄下創(chuàng)建一個(gè)源配置文件nginx.repo
# cd /etc/yum.repos.d/
# vim nginx.repo
填寫如下內(nèi)容:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
保存,則會(huì)產(chǎn)生一個(gè) /etc/yum.repos.d/nginx.repo 文件
- 第二步,執(zhí)行yum命令安裝nginx
# yum install nginx -y (加-y后自動(dòng)選擇所要安裝包名)
默認(rèn)安裝路徑到 /etc/nginx 下
安裝完成后,可以直接啟動(dòng) nginx - 第三步,啟動(dòng)nginx,并加載到開機(jī)自動(dòng)啟動(dòng)服務(wù)列表中
# chkconfig --add /etc/init.d/nginx (先將nginx服務(wù)加入chkconfig管理列表)
# service nginx start (啟動(dòng)nginx服務(wù))
# service nginx stop (停止nginx服務(wù)) -
第四步,訪問,出現(xiàn)以下表示成功,nginx默認(rèn)端口是80
image.png
未解決的問題
1、使用yum 安裝時(shí),想指定安裝目錄,網(wǎng)上使用這個(gè),但未成功
#yum --installroot=/opt/soft/nginx install nginx -y
4.2 nginx配置負(fù)載均衡服務(wù)器
- 第一步,新建自己的nginx配置文件
# vim app.conf
內(nèi)容如下
upstream ant.dubbo.com{ # 配置負(fù)載均衡
server 192.168.1.112:8080; #服務(wù)器地址
}
server{
listen 80; #端口監(jiān)聽
server_name ant.dubbo.com;
charset utf-8;
location / { #匹配所有
#root /www;
#index index.html index.htm;
#proxy_pass http://ant.dubbo.com;
#proxy_pass http://192.168.1.112:8080/;
#proxy_redirect default ;
}
location /dubbo-web/ {
# proxy_pass http://192.168.1.112:8080/dubbo-web/;
proxy_pass http://ant.dubbo.com; # 采用負(fù)載均衡,http:// + upstream 名稱
#proxy_redirect default ;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /a/{
#proxy_pass http://192.168.1.112:8080/dubbo-web/;
proxy_pass http://ant.dubbo.com;
#proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For ;
$proxy_add_x_forwarded_for;
}
location ~ ^/(WEB-INF)/ { #禁止訪問WEB-INF目錄
deny all;
}
}
- 第二步,在nginx.conf 配置文件中把a(bǔ)pp.conf 引用進(jìn)來
直接在http 內(nèi),增加以下語(yǔ)句,當(dāng)然如果你的文檔未放在conf.d下,需要
再此處配置;
include /etc/nginx/conf.d/*.conf;
在當(dāng)前配置文件中可以修改指定nginx的訪問日志 access.log 和 error.log
文件位置 - 第三步, 重啟nginx
# service nginx restart
地址欄訪問 http://192.168.1.110/dubbo-web/index?name=1,出現(xiàn)以下字樣,表示nginx跳轉(zhuǎn)成功

未完待續(xù)。。。
預(yù)告,下一版, 『使用Jenkins配置Git+Maven的自動(dòng)化構(gòu)建』

