在局域网中访问 ServBay 本地开发环境
对于小型开发团队或需要跨设备测试的个人开发者而言,能够在局域网 (LAN) 内访问其他成员或设备上的 ServBay 本地开发环境是一项常见且重要的需求。ServBay 设计上支持大多数核心服务通过局域网访问,但某些服务需要进行额外的配置以确保安全和可用性。
本文将详细介绍如何在局域网中配置和访问 ServBay 中的网站和数据库服务。
前提条件
在尝试通过局域网访问 ServBay 服务之前,请确保满足以下条件:
- 网络连接: 提供 ServBay 服务的计算机(以下称为“宿主机”)与访问者计算机(以下称为“客户端”)位于同一个局域网内。
- 宿主机 IP 地址: 知道宿主机在局域网中的内部 IP 地址。您可以在宿主机的网络设置中找到此信息。
- 防火墙配置: 如果宿主机的操作系统开启了防火墙,您需要允许外部连接访问 ServBay 使用的关键端口(例如,HTTP 通常是 80,HTTPS 是 443,MySQL 是 3306,PostgreSQL 是 5432,Redis 是 6379 等)。请根据您需要对外开放的服务,在防火墙设置中打开相应的端口,并配置访问控制列表 (ACL) 以限制允许访问的 IP 范围(如果需要)。
网站 (Website)
通过 ServBay 配置的本地网站,默认情况下通常会监听宿主机的所有网络接口(即 0.0.0.0
或 *
),这使得它们天然就允许局域网内的其他设备访问。ServBay 使用 Caddy 或 Nginx 作为 Web 服务器,它们的默认配置通常就是如此。
然而,要在客户端浏览器中通过域名访问这些网站,访问者需要在其系统上正确配置域名的 DNS 解析。此外,如果您的本地网站使用了 ServBay 生成的 SSL 证书(强烈推荐),访问者还需要安装 ServBay 的根证书才能避免浏览器警告。
下面以一个示例来说明配置过程:
- 宿主机局域网 IP:
10.0.0.3
- ServBay 网站域名:
servbay.demo
- 网站根目录:
/Applications/ServBay/www/servbay.demo
配置域名解析 (DNS)
客户端计算机需要知道域名 servbay.demo
对应宿主机的 IP 地址 10.0.0.3
。有两种常见的配置方法:
修改客户端的 Hosts 文件: 这是最简单直接的方法,适用于少数几台客户端计算机。
- 在客户端计算机上找到 Hosts 文件。
- macOS/Linux:
/etc/hosts
- Windows:
C:\Windows\System32\drivers\etc\hosts
- macOS/Linux:
- 使用管理员权限打开 Hosts 文件,并在文件末尾添加一行:
10.0.0.3 servbay.demo
1 - 保存文件。现在,客户端计算机访问
servbay.demo
时就会指向10.0.0.3
。
- 在客户端计算机上找到 Hosts 文件。
在局域网 DNS 服务器上配置: 如果您的局域网有自己的 DNS 服务器(例如,路由器内置的 DNS 功能,或专门的 DNS 服务),您可以在 DNS 服务器上为
servbay.demo
添加一条 A 记录,指向宿主机的 IP 地址10.0.0.3
。这样,局域网内所有使用该 DNS 服务器的设备都能解析此域名。
分发和安装 ServBay 用户根证书 (SSL)
由于 ServBay 为本地开发环境提供了强大的 PKI 功能,包括生成自己的根证书(ServBay User CA)来签发本地网站的 SSL 证书,客户端计算机在访问使用这些证书的 HTTPS 网站时,需要信任 ServBay User CA 才能避免安全警告。
您需要将 ServBay User CA 导出,并分发给局域网内的访问者,指导他们在各自的操作系统或浏览器中安装和信任此根证书。
详细的证书导出和安装步骤,请参考 ServBay 文档中关于 SSL 证书管理的章节,特别是关于导出证书和在操作系统/浏览器中安装的部分。
数据库
ServBay 支持多种数据库服务,包括 MySQL、MariaDB、PostgreSQL 和 MongoDB,以及内存数据库 Redis 和 Memcached。不同数据库服务的默认网络监听设置和权限管理方式有所不同。
MySQL / MariaDB
MySQL 和 MariaDB 数据库服务在 ServBay 中的默认配置是监听所有网络接口 (0.0.0.0
),这意味着它们默认就允许来自局域网的连接。
然而,MySQL/MariaDB 具有严格的用户权限验证机制。即使网络连接是允许的,访问者也需要使用一个被授权从其 IP 地址连接到数据库的用户名和密码。
默认的 root
用户通常只允许从 127.0.0.1
或 localhost
连接。要允许从局域网访问,您需要创建一个新的数据库用户,或者修改现有用户的权限,使其可以从特定的局域网 IP 地址或任意地址 (%
) 进行连接。
例如,创建一个名为 servbay-demo
的用户,并允许其从局域网内的任意 IP (%
) 连接,并赋予相应的权限(如对某个数据库的所有权限):
-- 假设您已经以 root 用户或拥有足够权限的用户登录
CREATE USER 'servbay-demo'@'%' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON `your_database_name`.* TO 'servbay-demo'@'%';
FLUSH PRIVILEGES;
2
3
4
请根据实际需求替换 'your_strong_password'
和 your_database_name
。
重要提示: 允许用户从任意 IP (%
) 连接并赋予广泛权限存在安全风险。在生产环境或不完全受信任的局域网中,强烈建议限制用户只能从特定的、已知的 IP 地址连接(例如 'servbay-demo'@'10.0.0.5'
),或者使用 VPN 等更安全的连接方式。
ServBay 支持重置 MySQL 和 MariaDB 的 root
密码,如果需要管理用户权限,可以使用此功能或通过客户端工具进行操作。
Redis
Redis 在 ServBay 中的默认配置通常只监听本地回环地址 (127.0.0.1
),这意味着它默认不允许来自局域网的连接。这是出于安全的考虑,因为 Redis 默认情况下没有开启密码验证。
要允许局域网访问 Redis,您需要修改 Redis 的配置文件 redis.conf
。
您可以通过两种方式去实现:
1、通过 ServBay 的 UI 界面实现
- 打开 ServBay,在左侧导航中找到
数据库
-Redis
- 在右侧的配置界面中,把
Require Password
选上,然后在右侧的输入框中输入密码 - 点击
保存
2、通过手工修改redis.conf
文件实现(不建议)
- 在 ServBay 应用中找到 Redis 的配置文件路径(通常在 ServBay 的安装目录下,例如
/Applications/ServBay/etc/redis/redis.conf
)。 - 使用文本编辑器打开
redis.conf
。 - 找到
bind 127.0.0.1
这一行。 - 将其修改为
bind 0.0.0.0
,或者直接注释掉 (# bind 127.0.0.1
),这将使 Redis 监听所有可用的网络接口。 - 【极其重要】 找到
requirepass
这一行(可能被注释掉了)。取消注释,并设置一个强密码:切勿在未设置密码的情况下将 Redis 暴露在局域网甚至公共网络中,这会带来严重的安全风险!requirepass your_very_strong_redis_password
1 - 保存
redis.conf
文件。 - 在 ServBay 应用中重启 Redis 服务,使配置生效。
现在,客户端可以使用宿主机的局域网 IP 地址和您设置的密码来连接 Redis 服务了。
PostgreSQL
PostgreSQL 在 ServBay 中的默认配置通常也只监听本地回环地址 (127.0.0.1
),默认不允许局域网访问。
要允许局域网访问 PostgreSQL,您需要修改两个关键的配置文件:postgresql.conf
和 pg_hba.conf
。
在 ServBay 应用中找到 PostgreSQL 的配置文件路径(通常在 ServBay 的安装目录下,例如
/Applications/ServBay/etc/postgresql/postgresql.conf
和/Applications/ServBay/etc/postgresql/pg_hba.conf
)。修改
postgresql.conf
:- 使用文本编辑器打开
postgresql.conf
。 - 找到
listen_addresses
这一行(可能被注释掉了)。 - 取消注释,并将其值修改为
'*'
,这将使 PostgreSQL 监听所有可用的网络接口:listen_addresses = '*'
1 - 保存
postgresql.conf
文件。
- 使用文本编辑器打开
修改
pg_hba.conf
:- 使用文本编辑器打开
pg_hba.conf
。这个文件控制着哪些主机、哪些用户可以通过哪些数据库、使用哪些认证方法进行连接。 - 添加一行允许来自局域网的连接。例如,允许来自
10.0.0.0/24
网段的所有用户使用密码认证连接所有数据库:# TYPE DATABASE USER ADDRESS METHOD host all all 10.0.0.0/24 md5
1
2TYPE
:host
表示通过 TCP/IP 网络连接。DATABASE
:all
表示允许连接所有数据库。您可以指定特定的数据库名。USER
:all
表示允许所有数据库用户连接。您可以指定特定的用户名。ADDRESS
:10.0.0.0/24
是一个示例,表示允许来自10.0.0.1
到10.0.0.254
这个 IP 范围的连接。您也可以指定单个 IP 地址,或者使用0.0.0.0/0
允许所有 IPv4 地址(不推荐,除非您有其他防火墙保护)。METHOD
:md5
表示要求客户端提供 MD5 加密的密码进行认证。这是推荐的远程连接认证方法。其他选项如trust
(无密码信任,绝对不要用于远程连接)或password
(明文密码,不安全)应避免。
- 保存
pg_hba.conf
文件。
- 使用文本编辑器打开
在 ServBay 应用中重启 PostgreSQL 服务,使配置生效。
现在,客户端可以使用宿主机的局域网 IP 地址、有效的 PostgreSQL 用户名和密码来连接 PostgreSQL 服务了。
ServBay 支持重置 PostgreSQL 的 root
(postgres) 密码,如果需要管理用户权限,可以使用此功能或通过客户端工具进行操作。
Memcached
Memcached 是一个高性能的分布式内存对象缓存系统,它设计上非常简单,不提供内置的身份验证或授权机制。
因此,强烈不建议将 Memcached 服务直接暴露在局域网甚至公共网络中,除非您有其他网络安全措施(例如,将其限制在只有受信任的内部服务才能访问的网络段,并通过防火墙严格控制访问)。
在 ServBay 中,您可以配置 Memcached 监听局域网 IP,但请务必了解并接受由此带来的安全风险。默认配置通常只监听本地回环地址。修改监听地址的方法类似于 Redis,需要编辑 Memcached 的配置文件,但请记住它没有密码保护。
安全注意事项
在局域网中开放本地开发环境的服务确实方便团队协作和跨设备测试,但同时也引入了安全风险。请务必注意以下几点:
- 防火墙: 始终使用防火墙限制对 ServBay 宿主机上开放端口的访问。只允许来自您信任的局域网 IP 范围的连接。
- 强密码: 为数据库(MySQL/MariaDB/PostgreSQL)和 Redis 设置强密码。定期更换密码。
- 最小权限原则: 为数据库用户分配所需的最低权限。避免使用拥有所有权限的
root
或postgres
用户进行日常的远程连接。 - Memcached 安全: 再次强调,由于 Memcached 缺乏内置安全机制,请谨慎对待其局域网暴露。考虑使用 SSH 隧道或其他更安全的连接方式访问。
- 操作系统更新: 保持 ServBay 宿主机的操作系统和 ServBay 本身及其软件包处于最新状态,以获取安全补丁。
通过遵循这些步骤和安全建议,您可以更安全、有效地在局域网中共享和访问您的 ServBay 本地开发环境。