FreeBSD服务器如何搭建?,需要注意什么?
- 云服务器
- 2026-07-24
- 4
系统安装
- 从 FreeBSD 官网 下载对应架构的安装镜像(推荐使用 memstick 或 disc1 ISO)。
- 启动安装程序,选择 Install,按提示选择键盘布局、主机名、网络接口。
- 磁盘分区建议使用 ZFS,自动配置即可,也可手动设置 swap 大小。
- 设置 root 密码,创建一个普通用户(可选加入 wheel 组以便使用 su)。
- 安装结束后重启,登录系统。
基本配置
-
主机名
编辑 /etc/rc.conf,添加或修改 hostname="server.example.com"。
-
网络配置
若使用 DHCP,通常自动配置;若需静态 IP,在 /etc/rc.conf 中设置:
ifconfig_em0="inet 192.168.1.10 netmask 255.255.255.0" defaultrouter="192.168.1.1"然后修改 /etc/resolv.conf 添加 DNS。

-
时区与时间同步
tzsetup # 选择时区 sysrc ntpd_enable=YES service ntpd start -
SSH 安全配置
编辑 /etc/ssh/sshd_config:
- PermitRootLogin no
- PasswordAuthentication no(若使用密钥)
- AllowUsers youruser
然后重启 sshd:service sshd restart

软件包管理
-
pkg 工具(推荐)
pkg update pkg upgrade pkg install nginx mysql80-server php82 -
ports 编译(可选)
portsnap fetch extract cd /usr/ports/www/nginx && make install clean
-
配置 pkg 仓库为 latest(获取最新版本)或 quarterly(稳定):
mkdir -p /usr/local/etc/pkg/repos echo 'FreeBSD: { url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest" }' > /usr/local/etc/pkg/repos/FreeBSD.conf
常见服务搭建
防火墙(pf)
- 启用 PF:sysrc pf_enable=YES
- 编辑 /etc/pf.conf, ext_if="em0" set skip on lo block all pass in on $ext_if proto tcp to port {22,80,443} pass out on $ext_if
- 启动:service pf start
Web 服务器(Nginx + PHP)
- 安装 nginx 和 php82(含 php-fpm)
- 配置 nginx 站点文件(/usr/local/etc/nginx/nginx.conf)
- 启动服务: sysrc nginx_enable=YES sysrc php_fpm_enable=YES service nginx start service php-fpm start
数据库(MySQL 8)
- 安装后执行: sysrc mysql_enable=YES service mysql-server start mysql_secure_installation
安全加固
- 系统更新:定期执行 freebsd-update fetch install
- 限制登录:使用 sudo 替代直接 root,安装 security/sudo
- 日志监控:配置 syslogd,使用 logwatch 或 security/audit
- Fail2ban:安装 security/py-fail2ban,配置过滤 SSH 等
- 定期检查:使用 periodic 脚本(每日/每周安全报告)
系统维护
- 查看系统日志:/var/log/messages、/var/log/security
- 监控磁盘:zpool status、df -h
- 备份:使用 dump、rsync 或 zfs send
- 使用 top、htop、vmstat 监控资源
相关问题与解答
FreeBSD 的 pkg 和 ports 有什么区别?如何选择?
解答:
- pkg 是预编译的二进制包管理系统,安装快速、依赖自动解决,适用于大多数场景。
- ports 是源码编译系统,可通过定制编译选项优化性能或启用特定功能,但编译耗时较长。
- 选择建议:普通用户或生产环境推荐使用 pkg;需要自定义编译选项、测试新功能或最小化安装时使用 ports,两者可以共存,但注意不要混合管理同一软件。
如何配置 FreeBSD 防火墙并仅允许 SSH 和 Web 访问?
解答:
使用 pf 防火墙,编辑 /etc/pf.conf,示例配置如下(假设外网接口为 em0):
ext_if = "em0" set skip on lo block all pass in on $ext_if proto tcp to port {22,80,443} pass out on $ext_if
然后执行:
sysrc pf_enable=YES service pf start
若要持久化,使用 service pf restart 并检查规则:pfctl -s rules,注意在启用前确认 SSH 端口已放行,以免自己被锁。