MineAdmin 交流群

官方QQ群: 150105478

Skip to content

部署

本文将讲述如何在生产环境部署 MineAdmin 的前后端应用程序

后端

服务部署

一般来说,在新一代服务端应用程序。基本上都是由 docker 进行服务部署。 MineAdmin 也提供了开箱即用的 Dockerfile 以便你能够进行快速的服务部署 在某些情况可能需要面临裸装部署在服务器中。以下介绍两种部署方式。以便快速上手

直接部署在服务器中

如果你需要将 MineAdmin 直接部署在服务器中。那么首先服务器要满足以下系统条件

TIP

php 与扩展安装请自行搜索相关教程,本处不另行说明

  • PHP >= 8.1
  • cURL PHP 扩展
  • Fileinfo PHP 扩展
  • OpenSSL PHP 扩展
  • PDO 扩展
  • Redis 扩展
  • Json 扩展
  • PDO_MYSQL 扩展 (可选)
  • PDO_PGSQL 扩展 (可选)
  • Swoole >= 5.1 扩展 (可选)
  • Swow >= 1.5 or develop (可选)

进入项目目录执行

shell
php bin/hyperf.php start

即可启动成功

默认的程序不提供常驻进程选项,我们推荐使用第三方应用例如 supervisord来进行项目的进程持久化运行 如何使用请参考 Hyperf文档

以容器形式部署 (推荐)

如果你想要以容器服务形式向外提供应用服务。可以使用项目下的 Dockerfile,用法很简单。

首先要保证服务器已经安装完成 docker

然后进入你的项目目录

shell
cd yourProject

执行 docker build . -t mineadmin 来打包镜像

shell
# -t 参数具体请自行百度,此处不另行说明
docker build . -t mineadmin

接下来执行 docker run 来启动一个容器

shell
docker run -d --name mineadmin mineadmin

即可完成项目服务端的部署


TIP

以上两种部署方式的前提是已经配置好 .env 文件

反向代理

本文将列举几个反向代理示例

Nginx

如果你将程序部署在运行 nginx 的服务器上。你可以参考以下反向代理配置文件来作为站点的起点。

nginx

#PROXY-START/server

location ^~ /
{
    # 应用程序端口
    proxy_pass http://127.0.0.1:9501/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;
    # proxy_hide_header Upgrade;

    add_header X-Cache $upstream_cache_status;
    #Set Nginx Cache

    set $static_fileyqrHU0ll 0;
    if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
    {
        set $static_fileyqrHU0ll 1;
        expires 1m;
    }
    if ( $static_fileyqrHU0ll = 0 )
    {
        add_header Cache-Control no-cache;
    }
}
#PROXY-END/

K8s Ingress

如果你将程序部署在 k8s 集群中,你可以参考以下配置说明

创建服务
yaml
# Kubernetes API 的版本
apiVersion: v1
# 资源对象类型是服务(Service)
kind: Service
# 服务的元数据信息
metadata:
  # 为这个服务指定一个名称
  name: mineadmin-service
# 服务的规范部分
spec:
  # 用于选择与该服务关联的 Pod
  selector:
    app: mineadmin-server
  # 服务暴露的端口
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9501
创建 Ingress 资源
yaml
apiVersion: networking.k8s.io/v1
# 定义的资源对象类型是 Ingress
kind: Ingress
metadata:
  # 为这个 Ingress 资源指定一个名称
  name: mineadmin-ingress
  annotations:
    # 重写的目标路径
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  # Ingress 的路由规则列表
  rules:
      # 适用于主机名为 www.mineadmin.com 的请求
    - host: www.mineadmin.com
      # 处理 HTTP 请求
      http:
        paths:
          # 匹配的路径为根路径
          - path: /
            # 指定路径的匹配类型为前缀匹配
            pathType: Prefix
            # 定义了请求被路由到的后端服务
            backend:
              # 指定后端服务为一个 Kubernetes 服务
              service:
                # 指定后端服务的名称为 “mineadmin-service”,即前面定义的服务。
                name: mineadmin-service
                # 后端服务的端口号为 80。当请求被路由到后端服务时,将被转发到这个端口上。
                port:
                  number: 80

调试模式

config/config.php 配置文件中,调试选项决定了有多少错误信息实际上会展示给用户,默认情况下,该选项 设置遵守环境变量 APP_DEBUG 的值.该值存储在你的项目 .env 文件中.

WARNING

在生产环境中,该值应该永远为 false.如果在生产环境中设置为 true 将有可能把敏感信息返回给用户的风险

前端

服务部署

直接部署在服务器中

如果你想要将 MineAdmin 前端服务部署在服务器中,以经典的 Nginx 服务为例。

首先生成 静态资源,在你的项目 web 目录下执行 pnpm build 生成 PS: 可以在服务器进行生成, 也可以在本地预先生成好

将你的静态资源扔到站点目录。即可完成安装

以容器服务形式部署(推荐)

与后端一致,我们提供了前端打包的 Dockerfile, 进入你的 应用程序/web 目录下,执行

shell
docker build . -t frontend

即可打包成 nginx 镜像

根据该镜像即可启动一个容器服务

shell
docker run -d --name frontend frontend

配置站点反向代理到[容器IP:80] 端口即完成部署

致力于为品牌和企业创造价值