Skip to content

部署文档

部署准备

最低服务器配置

2核16G内存服务器一台(推荐使用 CentOS 7.6 64位)(如果基础中间件使用外部服务器的,则可以适量减少内存)

docker-compose环境安装

  • 安装docker-compose环境(已经安装的可以略过)
#安装git
sudo yum install -y git
#安装maven
sudo yum install -y maven
#安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#设置源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
#安装docker
sudo yum install -y docker-ce
#启动服务
sudo systemctl start docker
#安装docker-compose
curl -L https://github.com/docker/compose/releases/download/v2.17.1/docker-compose-linux-x86_64 > /usr/local/bin/docker-compose
#授权
sudo chmod +x /usr/local/bin/docker-compose
#检测版本号
docker-compose -v
  • docker脚本下载
git clone https://gitee.com/beijing_hongye_huicheng/docker.git
  • Rocketmq 需要特殊配制一下节点ip

    在 config/broker.conf 文件中,将brokerIP1修改为部署docker的局域网ip

  • 运行脚本

    必须保证es本地挂载目录权限为 777 否则es启动不成功。默认es本地挂载目录为docker项目上一级的volumes/data

docker-compose up -d
  • 校验 (查看进程是否启动,如果反复启动的程序,可以使用docker logs 镜像id 查看日志)
docker ps

API部署

  • 下载源码
cd /home/source
git clone https://gitee.com/beijing_hongye_huicheng/lilishop.git
  • 编辑运行API的脚本
vi start-api.sh

脚本内容:

#版本 注意,需要跟随版本号进行调整
version=4.3
#代码目录
code_path=/home/source/lilishop
#运行目录
run_path=/home/source/api/

mkdir -p ${code_path}
mkdir -p ${run_path}
cd ${code_path}
git checkout master
git pull
mvn clean install -DskipTests

ps -ef |grep java |grep buyer  |grep -v 'grep'|awk '{print $2}'  | xargs kill -9
ps -ef |grep java |grep seller  |grep -v 'grep'|awk '{print $2}'  | xargs kill -9
ps -ef |grep java |grep manager  |grep -v 'grep'|awk '{print $2}'  | xargs kill -9
ps -ef |grep java |grep common  |grep -v 'grep'|awk '{print $2}'  | xargs kill -9
ps -ef |grep java |grep consumer  |grep -v 'grep'|awk '{print $2}'  | xargs kill -9
ps -ef |grep java |grep im  |grep -v 'grep'|awk '{print $2}'  | xargs kill -9

rm -rf ${run_path}*.jar
mv ${code_path}/common-api/target/common-api-$version.jar ${run_path}
mv ${code_path}/buyer-api/target/buyer-api-$version.jar ${run_path}
mv ${code_path}/consumer/target/consumer-$version.jar ${run_path}
mv ${code_path}/manager-api/target/manager-api-$version.jar ${run_path}
mv ${code_path}/seller-api/target/seller-api-$version.jar ${run_path}
mv ${code_path}/im-api/target/im-api-$version.jar ${run_path}

cd ${run_path}

mkdir logs

nohup java -Xmx256m -Xms128m -Xss256k  -jar manager-api-$version.jar> logs/manager.out  &
nohup java -Xmx256m -Xms128m -Xss256k  -jar common-api-$version.jar> logs/common.out  &
nohup java -Xmx256m -Xms128m -Xss256k  -jar buyer-api-$version.jar> logs/buyer.out  &
nohup java -Xmx256m -Xms128m -Xss256k  -jar consumer-$version.jar> logs/consumer.out  &
nohup java -Xmx256m -Xms128m -Xss256k  -jar im-api-$version.jar> logs/im.out  &
nohup java -Xmx256m -Xms128m -Xss256k  -jar seller-api-$version.jar> logs/seller.out  &
  • 执行脚本
sh start-api.sh

UI部署

  • 下载源码
cd /home/source
git clone https://gitee.com/beijing_hongye_huicheng/lilishop-ui.git
  • 安装node yarn
yum update
yum install -y nodejs
yum install -y npm
npm install -g yarn
#   #设置镜像
#   yarn config set registry https://registry.npmmirror.com --global
#   yarn config set disturl https://registry.npmmirror.com/dist --global

# 升级node
npm install -g n
n install v14.16.0
  • 编辑脚本
vi start-ui.sh
  • 脚本内容:
#代码目录
code_path=/home/source/lilishop-ui

cd ${code_path}
git checkout master
git pull

cd ${code_path}/manager
yarn install
yarn build

cd ${code_path}/seller
yarn install
yarn build

cd ${code_path}/buyer
yarn install
yarn build
  • 执行脚本
sh start-ui.sh

Nginx

  • 安装nginx
sudo yum install -y nginx
  • Nginx 示例配置文件
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    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  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    proxy_hide_header X-Powered-By;
    proxy_hide_header Server;
    # 开启gzip
    gzip on;

    # 启用gzip压缩的最小文件;小于设置值的文件将不会被压缩
    gzip_min_length 1k;

    # gzip 压缩级别 1-10 
    gzip_comp_level 2;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

  #http强制跳转 https
    server {
         listen 80;
         server_name pickmall.cn;
         rewrite ^(.*)$  https://$host$1 permanent;
         location ~ / {
            index index.html index.php index.htm;
         }
 }

    #管理端
    server {
        listen       443 ssl;
        ssl_certificate "/etc/nginx/ssl/pickmall.cn.pem";
        ssl_certificate_key "/etc/nginx/ssl/pickmall.cn.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        include /etc/nginx/default.d/*.conf;

        server_name  admin-b2b2c.pickmall.cn;
        try_files $uri $uri/ /index.html;

        root    /home/source/lilishop-ui/manager/dist;
    }

    #商家端
    server {
        listen       443 ssl;
        ssl_certificate "/etc/nginx/ssl/pickmall.cn.pem";
        ssl_certificate_key "/etc/nginx/ssl/pickmall.cn.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        include /etc/nginx/default.d/*.conf;

        server_name  store-b2b2c.pickmall.cn;
        try_files $uri $uri/ /index.html;
        root    /home/source/lilishop-ui/seller/dist;
    }

    #h5端
    server {
        listen       443 ssl;
        ssl_certificate "/etc/nginx/ssl/pickmall.cn.pem";
        ssl_certificate_key "/etc/nginx/ssl/pickmall.cn.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        include /etc/nginx/default.d/*.conf;

        server_name  m-b2b2c.pickmall.cn;
        try_files $uri $uri/ /index.html;
        root    /home/source/h5;
    }

    #PC端
    server {
        listen       443 ssl;
        ssl_certificate "/etc/nginx/ssl/pickmall.cn.pem";
        ssl_certificate_key "/etc/nginx/ssl/pickmall.cn.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        include /etc/nginx/default.d/*.conf;

        server_name  pc-b2b2c.pickmall.cn;
        try_files $uri $uri/ /index.html;
        root         /home/source/lilishop-ui/buyer/dist;
    }
    #IM
     server {
         listen       443 ssl;
         ssl_certificate "/etc/nginx/ssl/pickmall.cn.pem";
         ssl_certificate_key "/etc/nginx/ssl/pickmall.cn.key";
         ssl_session_cache shared:SSL:1m;
         ssl_session_timeout  10m;
         ssl_ciphers HIGH:!aNULL:!MD5;
         ssl_prefer_server_ciphers on;
      include /etc/nginx/default.d/*.conf;

         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header REMOTE-HOST $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

         server_name  im.pickmall.cn;
         try_files $uri $uri/ /index.html;
         root         /home/source/lili-shop-ui/im/dist;
     }

    #common-api
    server {
        listen       443 ssl;
        ssl_certificate "/etc/nginx/ssl/pickmall.cn.pem";
        ssl_certificate_key "/etc/nginx/ssl/pickmall.cn.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        include /etc/nginx/default.d/*.conf;

        server_name  common-api.pickmall.cn;
        location / {
            proxy_pass http://127.0.0.1:8890;
        }
    }
    #admin-api
    server {
        listen       443 ssl;
        ssl_certificate "/etc/nginx/ssl/pickmall.cn.pem";
        ssl_certificate_key "/etc/nginx/ssl/pickmall.cn.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        include /etc/nginx/default.d/*.conf;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        server_name  admin-api.pickmall.cn;
        location / {
            proxy_pass http://127.0.0.1:8887;
        }
    }
    #buyer-api
    server {
        listen       443 ssl;
        ssl_certificate "/etc/nginx/ssl/pickmall.cn.pem";
        ssl_certificate_key "/etc/nginx/ssl/pickmall.cn.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        include /etc/nginx/default.d/*.conf;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        server_name  buyer-api.pickmall.cn;
        location / {
            proxy_pass http://127.0.0.1:8888;
        }
    }
     #store-api
    server {
        listen       443 ssl;
        ssl_certificate "/etc/nginx/ssl/pickmall.cn.pem";
        ssl_certificate_key "/etc/nginx/ssl/pickmall.cn.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        include /etc/nginx/default.d/*.conf;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        server_name  store-api.pickmall.cn;
        location / {
            proxy_pass http://127.0.0.1:8889;
        }
    }
     #im-api
     server {
         listen       443 ssl;
         ssl_certificate "/etc/nginx/ssl/pickmall.cn.pem";
         ssl_certificate_key "/etc/nginx/ssl/pickmall.cn.key";
         ssl_session_cache shared:SSL:1m;
         ssl_session_timeout  10m;
         ssl_ciphers HIGH:!aNULL:!MD5;
         ssl_prefer_server_ciphers on;
         include /etc/nginx/default.d/*.conf;
         server_name  im-api.pickmall.cn;

         location / {
             proxy_http_version 1.1;    
             proxy_set_header Upgrade $http_upgrade;    
             proxy_set_header Connection "Upgrade";    
             proxy_set_header X-real-ip $remote_addr;
             proxy_set_header X-Forwarded-For $remote_addr;
             proxy_pass http://127.0.0.1:8885;
         }
     }

}
  • nginx 启动
service nginx restart

代码更新部署

cd /home/source
sh start-api.sh
sh start-ui.sh