1Panel 服务器项目部署指南
本指南将详细介绍如何在 1Panel 服务器上部署不同类型的项目,包括静态网站、Node.js 项目和 Docker 项目,并涵盖反向代理、域名端口设置以及 Docker 网络模式的区别。
1. 静态网站部署
静态网站是最简单的部署类型,通常只包含 HTML、CSS、JavaScript 文件和图片等。
部署步骤
- 准备文件:将你的静态网站所有文件打包成
zip或tar.gz格式。 - 上传文件:登录 1Panel 面板,进入“文件”管理,找到你的网站存放目录(例如
/www/wwwroot/your_domain),将打包文件上传并解压。 - 创建网站:
- 在 1Panel 左侧菜单栏选择“网站” -> “网站列表” -> “创建网站”。
- 选择“静态网站”。
- 填写域名、根目录(指向你解压的网站文件目录,例如
/www/wwwroot/your_domain)。 - 配置 SSL 证书(如果需要)。
- 点击“创建”。
反向代理配置 (通常静态网站直接访问,但如果需要特定路径代理,可以在网站配置中修改)
- 在网站配置中,你可以添加反向代理规则,将特定路径映射到其他服务。
2. Node.js 项目部署
Node.js 项目需要运行环境来执行 JavaScript 代码。
部署步骤
- 准备项目:确保你的 Node.js 项目已完成本地构建(例如
npm install),并且知道启动命令(例如npm start或node app.js)。 - 上传文件:将你的 Node.js 项目文件上传到服务器的指定目录(例如
/www/wwwroot/your_node_app)。 - 安装 Node.js 环境:
- 在 1Panel 左侧菜单栏选择“应用商店”,搜索并安装“Node.js”应用。
- 安装完成后,进入“应用” -> “已安装应用”,找到 Node.js,点击“设置”进行版本管理和安装。
- 创建 Node.js 网站:
- 在 1Panel 左侧菜单栏选择“网站” -> “创建” -> “运行环境”。
- 类型选择“Node.js”。
- 填写域名、项目目录(你的 Node.js 项目根目录)、启动命令(例如
npm start)、端口(你的 Node.js 应用监听的端口)。 - 配置 SSL 证书(如果需要)。
- 点击“创建”。
反向代理配置
1Panel 会自动为 Node.js 网站配置反向代理,将外部请求转发到你的 Node.js 应用监听的端口。
- 你可以在网站配置中查看和修改反向代理规则。例如,你可以修改代理缓存、超时时间等。
3. Docker 项目部署
Docker 项目以容器化的方式运行,提供了环境隔离和易于部署的优势。
部署步骤 (通过 Docker Compose)
-
准备 Docker Compose 文件:在你的项目根目录准备一个
docker-compose.yml文件,定义你的服务、镜像、端口映射、卷挂载等。version: '3.8' services: my-app: image: your-docker-image:latest # 你的 Docker 镜像 container_name: my-app-container ports: - "8000:3000" # 宿主机端口:容器端口 volumes: - ./data:/app/data # 卷挂载 environment: NODE_ENV: production -
上传文件:将你的项目文件(包括
docker-compose.yml)上传到服务器的指定目录(例如/www/wwwroot/your_docker_app)。 -
安装 Docker:
- 在 1Panel 左侧菜单栏选择“应用商店”,搜索并安装“Docker”应用。
-
创建 Docker Compose 应用:
- 在 1Panel 左侧菜单栏选择“容器” -> “Compose” -> “创建 Compose”。
- 填写名称、选择项目目录(包含
docker-compose.yml的目录)。 - 1Panel 会自动读取
docker-compose.yml并显示服务信息。 - 点击“创建”并启动。
反向代理配置 (将 Docker 服务暴露给外部)
-
创建反向代理网站:
- 在 1Panel 左侧菜单栏选择“网站” -> “网站列表” -> “创建网站”。
- 选择“反向代理”。
- 填写域名。
- 代理地址:填写
http://127.0.0.1:YOUR_HOST_PORT,其中YOUR_HOST_PORT是你在docker-compose.yml中ports映射到宿主机的端口(例如上面的8000)。 - 配置 SSL 证书(如果需要)。
- 点击“创建”。
这样,当外部访问你的域名时,请求会被转发到 Docker 容器在宿主机上暴露的端口。
4. 反向代理的设置、域名和端口
域名设置
- DNS 解析:确保你的域名已正确解析到你的 1Panel 服务器的 IP 地址。这通常在你的域名注册商的 DNS 管理界面进行设置。
- 1Panel 网站绑定:在 1Panel 中创建网站时,需要填写正确的域名。
端口设置
- 应用监听端口:你的应用程序(Node.js、Docker 容器内部服务)会监听一个特定的端口。
- 宿主机端口:对于 Docker 项目,你可能需要将容器内部端口映射到宿主机的不同端口。
- 反向代理端口:默认情况下,反向代理会将外部请求(通常是 80 或 443 端口)转发到你的应用监听的端口。
如何设置反向代理
1Panel 在创建网站时会自动配置反向代理。如果你需要手动修改或为已有网站添加反向代理:
- 进入网站配置:在 1Panel 左侧菜单栏选择“网站” -> “网站列表”,点击需要配置的网站名称。
- 编辑反向代理:在网站配置页面,找到“反向代理”选项卡。
- 你可以添加新的代理规则。
- 代理地址:填写你的后端服务的实际地址和端口(例如
http://127.0.0.1:3000或http://your_docker_container_ip:8080)。 - 代理缓存、超时时间等高级设置也可以在此配置。
- 代理路径:如果你希望只有特定路径的请求才被代理,可以在这里设置。
5. Docker 网络模式
Docker 提供了多种网络模式,它们决定了容器如何与宿主机以及其他容器进行通信。
5.1 Host 模式
- 特点:容器与宿主机共享网络命名空间。这意味着容器直接使用宿主机的网络接口,容器内部暴露的端口直接映射到宿主机的相同端口。
- 优点:
- 性能好:没有额外的网络虚拟化层,性能接近原生应用。
- 简单:无需进行端口映射配置,容器内应用监听的端口就是宿主机上可访问的端口。
- 缺点:
- 端口冲突:如果多个容器都使用 Host 模式,并且监听相同的端口,就会发生冲突。
- 隔离性差:容器无法拥有独立的网络配置,安全性相对较低。
- 适用场景:对性能要求高,且能确保端口不冲突的单容器应用,或者需要直接访问宿主机网络的服务(如某些网络监控工具)。
5.2 Bridge 模式 (默认模式)
- 特点:Docker 会为宿主机创建一个名为
docker0的虚拟网桥。每个容器都会连接到这个网桥,并获得一个独立的 IP 地址。容器之间可以通过 IP 地址进行通信。 - 优点:
- 隔离性好:每个容器都有自己的网络命名空间和 IP 地址,彼此之间是隔离的。
- 端口映射:通过端口映射 (
-p或ports在docker-compose.yml中) 将容器内部端口暴露给宿主机,避免了端口冲突。 - 灵活性高:易于管理多个容器和服务。
- 缺点:
- 性能开销:由于存在网络虚拟化层,性能略低于 Host 模式。
- 需要端口映射:外部访问容器需要通过宿主机的端口映射。
- 适用场景:绝大多数 Docker 应用部署场景,推荐使用。
5.3 其他网络模式 (了解)
- None 模式:容器没有网络接口,完全隔离。
- Container 模式:一个容器共享另一个容器的网络命名空间。
- 自定义网络:用户可以创建自定义的 Bridge 网络,以便更好地组织和管理容器之间的通信。在
docker-compose.yml中定义networks部分即可使用。
总结
在 1Panel 中部署 Docker 项目时,默认情况下会使用 Bridge 模式。如果你通过 Docker Compose 部署,通常只需要在 docker-compose.yml 中配置 ports 映射,1Panel 的反向代理就会指向宿主机映射的端口。
希望这份指南能帮助你在 1Panel 服务器上顺利部署你的项目!