架構(gòu)源于實(shí)踐(基礎(chǔ)框架搭建篇)

越是迷茫的時(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)圖


image.png
安裝軟件 版本
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
image.png

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
image.png

表示成功

image.png

若后期出現(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)成功
image.png

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,535評(píng)論 19 139
  • 最近公司購(gòu)買了一臺(tái)新的服務(wù)器,我負(fù)責(zé)給這臺(tái)服務(wù)器安裝oracle ,磕磕絆絆的終于裝好了,但是卻花了不少時(shí)間,算起...
    testerPM閱讀 9,466評(píng)論 3 8
  • 背景: 閱讀新聞 12C CDB模式下RMAN備份與恢復(fù) [日期:2016-11-29] 來源:Linux社區(qū) 作...
    陽(yáng)屯okyepd閱讀 3,833評(píng)論 0 7
  • 近兩天在CentOS7上安裝了oracle,在網(wǎng)上找了一些資料,發(fā)現(xiàn)不是很全面,為了方便以后再次安裝,所以...
    即墨雨閱讀 6,985評(píng)論 1 11
  • 0、安裝基礎(chǔ)環(huán)境 yum -y install wget yum -y install setup yum -y ...
    Suncoffee_psw閱讀 793評(píng)論 0 1

友情鏈接更多精彩內(nèi)容