# 项目 项目模块用于管理后端应用程序,支持 Go、Java、Node.js、PHP、Python 等多种语言。 项目会作为系统服务运行,支持自动重启、开机自启等功能。 ## 项目类型 | 类型 | 说明 | 适用场景 | | ------------------------------------------- | -------------------------- | ----------------------- | | [Go](./project/go) | Go 语言项目 | Gin、Echo、Fiber 等框架 | | [Java](./project/java) | Java 项目 | Spring Boot、Tomcat 等 | | [Node.js](./project/nodejs) | Node.js 项目 | Express、Koa、NestJS 等 | | [PHP](./project/php) | PHP 项目 | Laravel Octane、Swoole 等 | | [Python](./project/python) | Python 项目 | Django、Flask、FastAPI 等 | | [通用](./project/general) | 其他类型项目 | 任意可执行程序 | ![项目列表](/images/project/project-list.png) ## 项目 vs 网站 | 特性 | 项目 | 网站 | | ---- | -------- | ----------- | | 运行方式 | 独立进程 | 依赖 Web 服务器 | | 进程管理 | 项目自动重启 | 由 Web 服务器管理 | | 适用场景 | 后端服务、API | 传统 Web 应用 | | 对外访问 | 反向代理配置 | 直接访问 | ## 创建项目 1. 进入 **项目** 页面 2. 点击 **创建项目** ![创建项目](/images/project/project-create.png) ### 配置项 - **项目名**:项目标识,用作服务名称 - **项目目录**:项目文件所在目录 - **运行用户**:运行项目的系统用户,默认 www - **启动命令**:启动项目的命令 - 创建项目时开启「反向代理」,会自动创建一个反向代理网站。 ## 项目管理 项目列表显示以下信息: - **名称**:项目名称 - **描述**:项目描述 - **类型**:项目类型(Go/Java/Node.js 等) - **状态**:运行状态 - **自启动**:是否开机自启 - **目录**:项目目录 - **操作**:启动、停止、重启、日志等 ### 项目操作 - **启动**:启动项目 - **停止**:停止项目 - **重启**:重启项目 - 查看项目日志 - **编辑**:修改项目配置 - **删除**:删除项目 ## 编辑项目 点击项目列表中的 **编辑** 按钮,可以修改项目配置。 编辑对话框包含多个标签页: ### 基本设置 配置项目的基本信息: ![基本设置](/images/project/project-edit-basic.png) - **项目名**:项目标识,用作服务名称 - **描述**:项目描述信息 - **项目目录**:项目文件所在目录 - **工作目录**:程序运行时的工作目录,默认为项目目录 - **运行用户**:运行项目的系统用户 ### 在「运行设置」中配置: 配置项目的运行参数: ![运行设置](/images/project/project-edit-run.png) - **启动命令**:启动项目的命令 - 预启动命令 - **启动后命令**:启动后运行的命令(可选) - **停止命令**:自定义停止命令(可选) - **重载命令**:自定义重载命令(可选) - **重启策略**:失败时重启 / 总是重启 / 不重启 - **重启间隔**:两次重启之间的等待时间 - **最大重启次数**:防止无限重启 - 在项目启动前执行,如安装依赖: - lsof -i:3000 # 查看占用端口的进程 - **标准输出**:标准输出的处理方式 - **标准错误**:标准错误的处理方式 - **环境变量**:设置项目运行时的环境变量 ### 依赖 配置服务依赖关系以控制启动顺序: ![依赖](/images/project/project-edit-deps.png) - **Requires**:强依赖,如果这些服务不可用,项目将会失败 - **Wants**:弱依赖,如果这些服务失败,项目仍然会启动 - **After**:在指定服务之后启动此项目 - **Before**:在指定服务之前启动此项目 常见服务:`network.target`、`mysqld.service`、`postgresql.service`、`redis.service` ### 资源限制 设置资源限制以防止服务消耗过多系统资源: ![资源限制](/images/project/project-edit-resource.png) - **内存限制**:限制项目使用的最大内存,0 表示无限制 - **CPU 配额**:限制 CPU 使用率,100% = 1 个 CPU 核心 ### 安全设置 增强服务隔离的安全选项: ![安全设置](/images/project/project-edit-security.png) - **没有新权限**:防止进程获取新的权限 - **保护 /tmp**:为服务创建私有的 /tmp 目录 - **保护 /home**:限制对 /home 目录的访问 - **保护系统**:设置系统目录的只读保护级别 - `true`:/usr、/boot 为只读 - `full`:+ /etc 为只读 - `strict`:整个文件系统为只读 - **读写路径**:服务可以读写的路径 - **只读路径**:服务只能读取的路径 :::warning 注意 安全设置可能会影响某些功能, 请在启用之前进行充分测试。 ::: ## 进程管理 项目使用 systemd 进行进程管理,具有以下特性: - 项目启动失败 - **开机自启**:系统启动时自动启动项目 - **日志管理**:自动记录标准输出和错误输出 ## 下一步 - [Go 项目](./project/go) - 部署 Go 应用 - [Java 项目](./project/java) - 部署 Java 应用 - [Node.js 项目](./project/nodejs) - 部署 Node.js 应用 - [PHP 项目](./project/php) - 部署 PHP 应用 - [Python 项目](./project/python) - 部署 Python 应用 - [通用项目](./project/general) - 部署其他类型应用