1. 环境准备与系统选择第一次接触Fog Project的朋友可能会被它强大的功能吓到但其实部署过程比想象中简单得多。作为一个用了5年Fog的老司机我建议新手从Ubuntu 20.04 LTS开始这个版本长期支持且社区资源丰富。上周我刚给本地一家30人规模的公司部署过整个过程只用了不到两小时。Fog本质上是个三合一解决方案它把PXE网络启动、镜像管理和资产跟踪这些功能打包在一起。想象一下你有个U盘启动盘但现在这个U盘变成了能同时给50台电脑装系统的超级工具还能记住每台电脑的硬件配置——这就是Fog的核心价值。硬件方面我给个实战建议普通企业环境用4核CPU8GB内存500GB硬盘就够用了。但要注意网络带宽上次我给学校机房部署时20台机器同时拉取Windows镜像直接把千兆交换机跑满了。如果预算允许建议服务器配双网卡一个用于管理流量一个专供镜像传输。2. 基础服务安装与配置2.1 系统初始设置安装前有五个必做操作都是血泪教训总结出来的禁用防火墙临时规则后面会专门配置sudo ufw disable确保系统时间准确sudo timedatectl set-ntp true关闭讨厌的SELinuxCentOS用户特别注意编辑/etc/selinux/config设置SELINUXdisabled更新软件源sudo apt update sudo apt upgrade -y安装编译工具链sudo apt install -y build-essential特别提醒Ubuntu 22.04用户新版默认使用PHP8.1但Fog目前对PHP7.4支持最好。需要先降级sudo apt install -y php7.4 php7.4-cli php7.4-curl php7.4-mysql sudo update-alternatives --set php /usr/bin/php7.42.2 网络服务部署Fog依赖的四大金刚服务需要特别注意DHCP建议用Fog自带的比系统原生的好配置。关键参数是next-server要指向TFTP地址TFTP配置文件在/etc/default/tftpd-hpa把TFTP_DIRECTORY改为/tftpbootNFS编辑/etc/exports添加/images *(ro,no_root_squash,async,no_subtree_check)Apache虚拟主机配置要注意AllowOverride All否则后台页面会报404有个坑我踩过三次Ubuntu默认安装的MySQL 8.0会与Fog的数据库初始化脚本冲突。解决方法是在安装Fog前先装MariaDBsudo apt install -y mariadb-server sudo mysql_secure_installation3. Fog核心安装流程3.1 源码获取与安装官方推荐用Git克隆最新代码但国内用户可能会遇到网络问题。这里分享两个备选方案使用Gitee镜像git clone https://gitee.com/mirrors/fogproject.git直接下载压缩包记得校验SHA256wget https://github.com/FOGProject/fogproject/archive/refs/tags/1.5.9.tar.gz tar -xzvf 1.5.9.tar.gz安装脚本installfog.sh运行时有几个关键选择当询问安装模式时小型环境选N标准服务器IP地址确认环节一定要核对清楚填错会导致PXE启动失败数据库密码要记在小本本上忘记的话得重装整个Fog语言包建议全选后期管理多语言设备时会感谢这个决定3.2 安装后必做检查跑完安装脚本别急着关终端先做这三件事检查服务状态systemctl status fog*应该看到至少5个活跃服务测试TFTP传输tftp localhost -c get pxelinux.0应该能下载到文件验证Web访问用浏览器打开http://服务器IP/fog/management应该看到登录页常见报错解决方案如果出现Database connection failed检查/opt/fog/.fogsettings里的密码是否与MySQL一致PXE启动卡在TFTP阶段可能是防火墙没开69端口sudo ufw allow 69/udpWeb界面白屏试试chown -R www-data:www-data /var/www/html/fog4. 实战配置技巧4.1 镜像管理进阶上传系统镜像时我总结了个三快法则快传先用dd if/dev/zero ofimage.img bs1M count10创建小文件测试传输速度快压Windows镜像建议用WIM格式而不是GHO体积能小40%快启在Host Configuration里勾选Quick Image可以跳过内存检测有个神级功能很多人不知道Fog支持镜像差分。比如先上传个纯净版Win10然后部署时自动打上最新补丁。具体操作是在Image Management里启用Diff选项能节省90%的存储空间。4.2 安全加固方案默认安装有三个安全隐患必须处理修改默认密码不仅改Web后台的还要改/opt/fog/.fogsettings里的数据库密码限制API访问编辑/var/www/html/fog/lib/api/api.json把restrictTo改成内网IP段启用HTTPS用Lets Encrypt免费证书Nginx配置示例server { listen 443 ssl; server_name fog.yourdomain.com; ssl_certificate /etc/letsencrypt/live/fog.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/fog.yourdomain.com/privkey.pem; root /var/www/html/fog; }4.3 批量部署优化给50设备同时部署时这些参数调整能让速度翻倍在FOG Configuration里把Storage Node指向SSD存储调整/images/dev/下的分块大小机械硬盘设4MBSSD设1MB启用多播传输在Task Management里创建多播任务时把客户端限速设为50Mbps最近发现个宝藏功能Fog可以和Ansible联动。在/opt/fog/postdownloadscripts目录下放playbook就能在系统部署完后自动配置软件。比如这个脚本能自动安装Chrome- hosts: all tasks: - name: Install Chrome apt: name: google-chrome-stable state: present5. 日常维护与排错Fog的日志系统很完善关键日志位置要记牢PXE启动日志/var/log/syslog | grep PXE镜像传输日志/opt/fog/log/upload.logWeb操作日志/var/www/html/fog/lib/log/下的日期文件定期维护建议每周执行/opt/fog/maintenance/backupDB.php备份数据库每月清理旧镜像find /images -type f -mtime 30 -delete每季度更新Fog版本git pull ./installfog.sh -y遇到奇葩问题时的终极解决方案先看/opt/fog/log/foginstall.log最后100行重启所有服务systemctl restart fog* apache2 mysql重跑安装脚本./installfog.sh -y不会影响现有数据