TK-Mall 部署教程

DXing Blog

Github Copoilot AI 文档


1. 环境要求

  • 云服务器系统:
    • Ubuntu 22.04 LTS
    • Centos 9 Stream
  • 运行环境:
    • Nginx 1.20.1+
    • Redis 6.0.9+
    • MySQL 5.7
    • Tomcat 9
    • JDK 1.8

2. 搭建准备

  • 云服务器 4C8G+ (SSH root 账号密码)
  • 项目部署包(项目代码、数据库 SQL)

3. 环境搭建(以 CentOS 9 Stream 为例)

3-1 更新 Centos 系统软件包

  • 利用 SSH 工具连接服务器,输入以下命令更新系统软件包
    1
    yum update -y

3-2 安装宝塔(宝塔开心版企业版)

1
2
# Centos安装脚本
yum install -y wget && wget -O install.sh https://bt.cxinyun.com/install/install_6.0.sh && sh install.sh
  • 保存好 宝塔登录入口链接和账号密码

3-3 环境安装

  • 宝塔面板安装完成后,在软件商店安装:
    • Nginx 1.26+
    • Mysql 5.7
    • Redis 7.4
    • JDK 1.8 (网站->Java项目->Java环境管理->JDK管理) 设置命令行版本为 1.8
    • Tomcat 9 (网站->Java项目->Java环境管理->Tomcat管理)

3-4 传输项目部署包

  • 下载/上传 项目部署文件包进行解压 点击宝塔文件菜单可进行UI操作
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 进入 /www/wwwroot/ 目录下
    cd /www/wwwroot
    # 创建一个新的目录
    mkdir tkmall
    # 进入目录
    cd tkmall
    # 下载/上传 tkmall 部署包
    curl -LO https://tikmall.fun/uploads/tkmall_deploy_full_2025-04-11.tar.gz
    # 解压文件包到 tkmall 目录
    tar -zxvf tkmall_deploy_full_2025-04-11.tar.gz
    # 删除压缩包 (可选)
    rm -rf tkmall_deploy_full_2025-04-11.tar.gz

3-5 环境配置

  • MySQL 配置
    • MySQL管理->端口配置 改为 6306
    • 配置文件添加一下配置:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      # 是否忽略数据表大小写区分 (必改)
      lower_case_table_names = 1
      # 性能模式最大表实例 不同的上下文(如线程、对象)创建多个实例 MySQL 5.7+ 的默认值为 100
      # MySQL 8.0+ 的默认值为 400
      # 该值越大,性能越好,但会消耗更多的内存 (8g以上内存的机器推荐改,可选)
      performance_schema_max_table_instances = 400
      # 表定义缓存 (可选, 一般在服务器内存低于4G的机器下修改)
      # MySQL 5.7+:默认值为 2000; MySQL 8.0+:默认值为 4000(因 InnoDB 表元数据存储方式优化)
      table_definition_cache = 400
    • 修改完成后会默认启动MySQL,最好还是重新启动下服务
  • Redis 配置
    • Redis管理->性能调整->port 改为 6380
  • Tomcat 配置
    • 网站->Java项目->Java环境管理->Tomcat管理->端口改为 41879
    • 修改完成后会默认启动Tomcat,先停止运行服务
    • 修改 Tomcat 配置文件 /usr/local/bttomcat/tomcat9/conf/server.xml
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      <Server port="8098" shutdown="SHUTDOWN">
      <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
      <Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener" />
      <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
      <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
      <GlobalNamingResources>
      <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase" />
      </GlobalNamingResources>
      <Service name="Catalina">
      <!-- 这里改端口 已经在UI界面改过了就不用管 没改过的 port 默认是8080-->
      <Connector connectionTimeout="20000" port="41879" protocol="HTTP/1.1" redirectPort="8490" />
      <Engine defaultHost="localhost" name="Catalina">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />
      </Realm>
      <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
      <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log" suffix=".txt" />
      <!-- 添加项目路径 -->
      <!--用户端www-->
      <Context path="" docBase="/www/wwwroot/tkmall/pc/" reloadable="false"/>
      <!--商户端pc-->
      <Context path="/ww" docBase="/www/wwwroot/tkmall/spc/" reloadable="false"/>
      <!--商户端h5-->
      <Context path="/www" docBase="/www/wwwroot/tkmall/www/" reloadable="false"/>
      <!--下单页面-->
      <Context path="/download" docBase="/www/wwwroot/tkmall/download/" reloadable="false"/>
      <!--合同页面-->
      <Context path="/pact" docBase="/www/wwwroot/tkmall/pact/" reloadable="false"/>
      <!--平台产品属性页面-->
      <Context path="/attribute" docBase="/www/wwwroot/tkmall/attribute/" reloadable="false"/>
      <!--chat-->
      <Context path="/chat" docBase="/www/wwwroot/tkmall/chat/" reloadable="false"/>
      <!--落地页-->
      <Context path="/promote" docBase="/www/wwwroot/tkmall/ldy/" reloadable="false"/>
      <!--用户端h5和接口-->
      <Context path="/wap" docBase="/www/wwwroot/tkmall/api/" reloadable="false"/>
      <Context path="/admin" docBase="/www/wwwroot/tkmall/admin/" reloadable="false"/>
      <Context path="/data" docBase="/www/wwwroot/tkmall/data/" reloadable="false"/>
      </Host>
      </Engine>
      </Service>
      </Server>

3-6 创建 Nginx 网站代理

  • 网站->HTML项目->添加HTML项目->绑定域名(www.tkmall.com)->确定
  • 设置->配置文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    # 删除以下配置
    location ~ .*\\.(gif|jpg|jpeg|png|bmp|swf)$
    {
    expires 30d;
    error_log /dev/null;
    access_log /dev/null;
    }

    location ~ .*\\.(js|css)?$
    {
    expires 12h;
    error_log /dev/null;
    access_log /dev/null;
    }

    # 改为以下配置
    # 上传静态文件
    location /uploads {
    root /www/wwwroot/tkmall/;
    expires 12h;
    access_log /dev/null;
    }

    # 转发 Tomcat 端口
    location / {
    index index.html index.php;
    proxy_pass http://127.0.0.1:41879;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size 100m;
    }

    # api 接口
    location /api/ {
    index index.html index.php;
    proxy_pass http://127.0.0.1:8010;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size 100m;
    }

    #
    location /tks/ {
    index index.html index.php;
    proxy_pass http://127.0.0.1:8011;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size 100m;
    }
  • 修改完点击保存

3-7 创建数据库以及导入数据

  • 数据库->添加数据库
    • 数据库名:mall
    • 数据库字符集:utf8mb4
    • 用户名:默认同数据库名一样
    • 密码:vkLaQDEn%2BB2gcWrOjgK5PmNVcr%2F2vl7EyDXbF61cxt4%3D
    • 确定完成
  • 导入数据
    • mall数据库->导入
    • 选择文件:/www/wwwroot/tkmall/mall_2025-04-02_19-11-25_mysql_data_GzJef.sql.zip
    • 数据文件比较大,等几分钟
    • 命令行导入数据 需要把数据库文件压缩包解压出来为 .sql文件(可选)
      1
      2
      3
      4
      5
      6
      # 使用 mall 账号进入mysql
      mysql -u mall -p
      # 选定 mall 数据库
      use mall
      # 导入数据
      source /www/wwwroot/tkmall/mall.sql

3-8 一切准备就绪

  • 一键启动项目
    1
    2
    3
    4
    # 进入到 /www/wwwroot/tkmall/ 目录下
    cd /www/wwwroot/tkmall
    # 启动项目
    ./restart-tomcat.sh