# 服务器配置(推荐)

服务器类型数量 / 台CPU内存系统磁盘数据磁盘网络带宽操作系统
应用服务器18 核32G40G300G SSD4MUbuntu Server 16.04
接口服务器14 核16G40G300G SSD5MUbuntu Server 16.04
RDS 数据库 (高可用版)18 核32G/1T SSD/Mysql 5.7
基础服务器14 核16G40G500G SSD2MUbuntu Server 16.04
报表服务器14 核16G40G200G2MUbuntu Server 16.04
测试服务器14 核16G40G500G2MUbuntu Server 16.04
测试 RDS 数据库 (高可用版)14 核16G/500G SSD/Mysql 5.7

备注:如果有京东平台业务,还需加购一台同等配置京东云鼎 ECS 服务器、京东云鼎 RDS 服务器

# 服务器类型

服务器类型部署应用
应用服务器ofs
接口服务器各种 edi
RDS 数据库 (高可用版)mysql
基础服务器redis、mongoDB、rabbitMQ
报表服务器ofs (只给报表类功能使用)
测试服务器所有应用
测试 RDS 数据库 (高可用版)mysql

<font color=#DC143C> 以下流程仅以测试服务器做演示,生产服务器以上述表格为标准,具体根据项目情况进行改动 </font>

# 添加用户

系统必须在 ttx 用户下运行,所以需要为新系统添加 ttx 用户

以下操作以 root 用户权限执行

  • 新建用户并指定用户目录

    useradd -d /home/ttx -m ttx
    passwd ttx
    

    用户密码重启之后才会生效

  • 赋予 sudo 权限

    vi /etc/sudoers
    

    在 root 下添加一行,如下所示

    [注意] 此文件为只读文件,请保存时使用: wq! 命令

    # User privilege specification
    root    ALL=(ALL:ALL) ALL
    ttx     ALL=(ALL:ALL) ALL
    

    [可选] 修改新建用户的 Shell 类型

    找到 ttx 的一行,检查是否与下面一致,如不一致,修改

    root@iZ8vbeurni16yy34ptzcdzZ:/# vi /etc/passwd
    ttx:x:1000:1000::/home/ttx:/bin/bash
    
  • 创建应用主目录

    mkdir /home/ttx/app
    

# 挂载数据盘

仅针对数据盘默认未挂载的情况,比如阿里云。(这里以50G数据盘做演示)
以下操作以root用户权限执行
  • 查看设备目录,通常数据盘为 /dev/vdb

    fdisk -l
    

    image

  • 创建分区

    fdisk /dev/vdb
    

    根据提示,依次输入 n->p->1-> 回车 -> 回车 ->wq 成功后会有以下输出

    image

    检查分区是否创建成功

    fdisk -l
    

    image

  • 格式化

    mkfs.ext4 /dev/vdb1
    

    image

  • 挂载数据盘

    chown ttx:ttx home/ttx/app/
    mount /dev/vdb1 /home/ttx/app
    

    检查挂载结果 df -h

    image

  • 设置自动挂载(请根据实际挂载硬盘参数对下面命令做适当修改)

    echo '/dev/vdb1 /home/ttx/app ext4 defaults 0 0 ' >>/etc/fstab  
    

# 安装基础运行环境

# 准备工作

  • 以创建好的 ttx 身份进行登录
  • 创建存放安装包的目录: mkdir /home/ttx/installer
  • 准备好安装包

# 安装 docker

  • 使用阿里解决方案 安装 docker-engine

    # [docker-engine已停止支持,请使用以下脚本安装]
    
    # step 1: 安装必要的一些系统工具
    sudo apt-get update
    sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    # step 2: 安装GPG证书
    curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    # Step 3: 写入软件源信息
    sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    # Step 4: 更新并安装 Docker-CE
    sudo apt-get -y update
    sudo apt-get -y install docker-ce
    
    # https://help.aliyun.com/document_detail/60742.html
    

    注意:如果 curl 不存在,请使用以下命令安装

    sudo apt-get install curl
    

    非必要流程 修改 daemon 配置文件 /etc/docker/daemon.json 来使用加速器

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-EOF
    {
      "registry-mirrors": ["https://gkhkf8gb.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

    image

  • 将用户 ttx 加入允许执行 docker 组

    sudo usermod -aG docker ttx
    

# 安装 docker-compose

  • 上传 docker-compose-Linux-x86_64.1.7.1 文件到 /home/ttx/installer 也可以下载最新版本

    sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose`
    
  • 执行以下脚本安装

    安装

    cd /home/ttx/installer
    #复制并重命名
    sudo cp docker-compose-Linux-x86_64.1.7.1 /usr/local/bin/docker-compose
    #更改文件权限使其可以执行 +x 代表执行权限
    sudo chmod +x /usr/local/bin/docker-compose  
    

    检查安装结果

    ttx@iZ8vbeurni16yy34ptzcdzZ:/# docker-compose --version
    docker-compose version 1.7.1, build 0a9ab35
    

# mongo、rabbit、redis、mysql

创建镜像存放目录

sudo mkdir /home/ttx/installer/images
sudo mkdir /home/ttx/installer/compose
  • 上传镜像

    • 上传对应的镜像文件到 /home/ttx/installer/images
    • 上传 compose.zip 到 /home/ttx/installer/compose
  • 安装镜像

    • 执行以下脚本装载镜像
    cd /home/ttx/installer/images
    sudo docker load < mongo_3.2.4.tar
    sudo docker load < rabbitmq_3.6.1-management.tar
    sudo docker load < redis_3.2.0.tar
    #仅当mysql在容器中运行时才运行以下命令
    sudo docker load < mysql_5.7.11.tar
    
  • 启动服务 分别进入每一个容器目录,执行以下脚本

    sudo docker-compose up -d
    

    检查镜像是否创建成功 docker ps

    image

    • 注意:MySql 参数设置在 /etc/my.cnf 中的 [mysqld] 后添加以下段:

      • 使用 utf-8 编码: character-set-server=utf8
      • 表不区分大小写: lower_case_table_names=1
      • 分组连接最大长度: group_concat_max_len=102400
      • 缓冲池字节大小: innodb_buffer_pool_size = 数据库内存一半
    • 注意:创建 rabbitMQ 的 虚拟主机(VirtualHost) 新安装的 rabbitMQ 必须新建主机,不允许使用默认的。新主机名称为 企业ID ,企业 ID 的格式为 4位项目编码 + ofs +xxxx ,其中 xxxx 为 prod 或者 test 登录 http://服务器地址:35673 进行创建,创建后将主机权限赋予 ttx 用户

# tomcat

以下操作以 ttx 用户权限执行

  • 上传 tomcat-deploy-1.6.zip 到 /home/ttx/installer 目录下
    • 解压缩

      sudo unzip ./tomcat-deploy-1.6.zip -d /home/ttx/app/tomcat-deploy
      
    • 创建系统环境

      运行前请检查 set_env.pyAPP_HOME 的目录是否正确,应为 /home/ttx/app/

      cd /home/ttx/app/tomcat-deploy
      python install_env.py
      

如果服务器上没有 python 命令,而只有 python3,则使用 python3 代替

# nginx

以下操作以 ttx 用户权限执行

  • 上传 nginx-1.11.6.tar.gz 到 /home/ttx/installer 目录下
  • 执行以下脚本安装
    sudo apt-get install build-essential  libpcre3-dev libssl-dev
    sudo tar -zxvf /home/ttx/installer/nginx-1.11.6.tar.gz -C /home/ttx/app/
    cd /home/ttx/app
    cd nginx-1.11.6
    #对nginx进行配置
    sudo ./configure --with-http_ssl_module --prefix=/home/ttx/app/nginx/
    #编译安装
    sudo make && make install
    cd /home/ttx/app/nginx
    # 备份配置文件
    sudo mv conf/nginx.conf conf/nginx.conf.backup
    sudo mkdir webapps
    

tar 命令如果不存在的话先下载

如果服务器上没有 python 命令,而只有 python3,则使用 python3 代替

  • 上传配置文件 nginx.confproxy.conf/home/ttx/app/nginx/conf/ 目录下

  • nexus 上下载对应的 cbt-web (这里以 cbt-web-2.5.12 做演示)

    • 搜索 cbt-web-2.5.12
      image

    • 点击对应版本
      image

    • 下载 cbt_web 压缩包
      image

    • 把压缩包上传到服务器 /home/ttx/app/nginx/webapps/ofs1_5/ 目录下

      cd /home/ttx/app/nginx/webapps/
      # 创建ofs1_5文件夹
      sudo mkdir ofs1_5
      
      # 执行上传操作 ... ...
      
      # 解压cbt-web
      sudo tar -zxvf cbt-web-2.5.12-20190718.063712-5.tar.gz
      
  • 测试并启动 nginx

     cd /home/ttx/app/nginx/sbin
     #测试nginx配置文件
     sudo ./nginx -t
     #启动 nginx
     sudo ./nginx
    

    Nginx 配置没问题会有以下输出

    image

    注意: 使用以下命令重启 Nginx 服务

    sudo ./nginx -s reload
    
  • 检查是否启动成功

    • 在浏览器输入 http://服务器地址:30001/
    • 有以下展示就说明 Nginx 已经配置成功了
      image

# 准备程序环境

准备程序的部署目录和运行目录 (下述以 ofs1_5license 演示)

cd /home/ttx/app/tomcat-deploy
python install_app.py license 30008
# 比如内存限制为最低1g,最高4g
python install_app.py ofs1_5 9005 1g 4g

注意:如果服务器上没有 python 命令,而只有 python3,则执行以下命令

cd /home/ttx/app/tomcat-deploy
python3 install_app.py license 30008
# 比如内存限制为最低1g,最高4g
python3 install_app.py ofs1_5 9005 1g 4g

# 安装 license 服务

  • 上传 license.zip 文件到 /home/ttx/app/license/upload 目录

  • 执行命令

    sudo chmod +x /home/ttx/app/jre/lib/amd64/*
    
  • 创建执行脚本

    cd /home/ttx/app/license
    sudo echo "export LD_LIBRARY_PATH=/home/ttx/app/jre/lib/amd64 && nohup /home/ttx/app/jre/bin/java -jar /home/ttx/app/license/upload/license.zip &" > run.sh
    sudo chmod +x run.sh
    
  • 启动 license 服务

    sh ./run.sh
    
  • 访问 license 页面: http://服务器地址:30008 , 点击注册文件进行下载
    license.png

  • 把下载的 cluster-blank.lic 给项目经理,进行授权

  • 得到授权者提供的正式 license 文件后,将文件(通常为 lic 文件 ( ttx.lic ))放在 licenses 目录下

    # 重启license服务
    ps -ef | grep license
    

    通常输出如下:

    ttx       9354     1  1 20:27 pts/1    00:00:15 /home/ttx/app/jre/bin/java -jar /home/ttx/app/license/upload/license.zip
    ttx       9632  1277  0 20:42 pts/0    00:00:00 grep --color=auto java
    

    找到含有 license.zip 的进程,杀掉进程;比如上例中,进程 ID 为 9354

    # 将9354替换为实际的进程ID
    sudo kill 9354
    cd /home/ttx/app/license
    ./run.sh
    
  • 访问 http://服务器地址:30008 ,正常情况应显示服务器的 license 信息

# Jenkins 构建

  • 进入 Jenkins 配置页面: http://ci.ittx.com.cn 进入对应文件夹 新建项目目录 (例如我的项目是 xxx )
    mainhtml.png
    dirs.png
    jenkinsdir.png

最后 save 保存就行

  • 新建一个项目,这里可以直接复制已有的项目,先找到对应项目的路径。 比如 ofs1_5 的路径是这个 xoms/OFS-1.5/ofs-1.5

新建项目,粘贴复制好的 xoms/OFS-1.5/ofs-1.5

jenkinsitem.png
jenkinsitem.png

根据项目进行修改 参与人 以及对应的 customerID , 然后 save 即可

jenkinsitem.png
jenkinsitem.png
jenkinsitem.png

  • 打包项目,获取对应的 下载脚本

jenkinsitem.png
jenkinsitem.png
jenkinsitem.png

  • 上传刚下载的 update-xxx-xofs-test.sh/home/ttx/app/tomcat-deploy
  • 配置阿里 oss (可选:具体看项目是否支持)
    • oss 地址:https://ttx-download.oss-cn-hangzhou.aliyuncs.com/projects
    • 修改 update-xxx-xofs-test.sh url (https://release.cybertrans.ittx.com.cn)oss地址
      jenkinsitem.png

# ofs 配置

  • 执行数据库初始化脚本
  • 上传 application.yml、application-xxx.yml/home/ttx/app/ofs/conf/default 目录下
    • 注意: xxx 的取值为:
      • 正式服务器: prod
      • 测试服务器: test
  • 根据项目情况配置对应的 mysql、redis、mongodb、rabbitmq 链接
  • 拉取 Jenkins 打好的包,编译并启动
    cd /home/ttx/app/tomcat-deploy
    sh update-xxx-xofs-test.sh
    
  • 启动完成之后检查日志输出是否正常, ctrl + c 退出查看模式
    tail -fn 100 /home/ttx/app/ofs1_5/catalina/9005/logs/catalina.out
    
  • 启动成功,访问 http://服务器地址:30001 进行访问页面

jenkinsitem.png
jenkinsitem.png

  • 启动、停止、编译、重启命令
    ./app_start.sh ofs1_5
    ./app.stop.sh ofs1_5
    ./app_deploy.sh ofs1_5
    ./app_restart.sh ofs1_5
    

# 参考信息

# 系统目录

|-/
  |- home
    |- ttx
      |- installer
        |- images
        |- compose
      |- app
        |- redis
        |- mongo
        |- mysql
        |- rabbitMQ
        |- tomcat-deploy
        |- nginx
        |- license
        |- ofs1_5
        |- scheduler
        |- edi-qimen
        |- edi-taobao

# 端口分配

服务端口备注
nginx80ofs 端口可转 80 端口
mysql33306当 mysql 为通天晓安装时,必须修改端口号
mongo37017生产服务器必须设定密码
rabbitMQ35672mq 连接端口
rabbitMQ-management35673消息队列管理可视化
redis36379生产服务器必须设定密码
ofs9005ofs 内部端口
ofs30001ofs 外部端口
scheduler30001使用到计划任务组件时使用
license30008仅当授权服务部署在客户服务器时使用
edi30012-30020多个端口为客户部署多套 edi 保留
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

vayi 微信支付

微信支付

vayi 支付宝

支付宝

vayi 贝宝

贝宝