1. 环境准备与系统配置

在开始部署NPS服务器端之前,我们需要确保CentOS系统已经做好充分准备。我推荐使用CentOS 7.6或更高版本,这个版本长期支持且稳定性经过验证。实际操作中我发现,新安装的纯净系统往往能避免很多依赖冲突问题。

首先更新系统基础组件是个好习惯:

yum update -y && yum install -y wget curl vim

内存和存储空间需要特别注意,NPS服务端虽然不占太多资源,但Docker运行至少需要2GB内存和20GB磁盘空间。我曾经在1GB内存的机器上尝试部署,结果容器频繁崩溃。检查资源使用这个命令很实用:

free -h && df -h

防火墙配置是另一个关键点。CentOS默认的firewalld会拦截Docker端口,建议先放行必要端口或暂时关闭防火墙测试:

systemctl stop firewalld && systemctl disable firewalld

如果系统开启了SELinux,可能会遇到权限问题。对于测试环境,可以将其设置为宽松模式:

setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config

2. Docker引擎安装与优化

Docker是容器化部署的基础,但在CentOS上安装有些特殊注意事项。官方推荐使用便捷脚本安装,但我会更建议分步骤操作以便更好控制过程。

先安装必要依赖:

yum install -y yum-utils device-mapper-persistent-data lvm2

添加Docker官方仓库(国内机器建议使用阿里云镜像加速):

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装指定版本Docker更稳妥,避免最新版可能的兼容问题:

yum install -y docker-ce-20.10.17 docker-ce-cli-20.10.17 containerd.io

配置Docker守护进程是很多人忽略的关键步骤。创建或修改/etc/docker/daemon.json文件:

{
  "registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

启动并设置开机自启:

systemctl daemon-reload
systemctl start docker && systemctl enable docker

验证安装时别只看版本号,实际运行个测试容器更可靠:

docker run --rm hello-world

3. Docker Compose部署实战

虽然可以直接用docker命令运行容器,但Docker Compose能更好地管理服务配置。在CentOS上安装需要注意Python环境兼容性。

先确保Python环境正常:

yum install -y python3 python3-pip

用pip安装时指定版本可以避免依赖冲突:

pip3 install docker-compose==1.29.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

验证安装成功后,建议创建软链接到/usr/bin目录:

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

准备NPS的工作目录时,结构清晰很关键。我习惯按服务分类存放:

mkdir -p /mnt/docker/nps/{conf,logs,data}

下载配置文件有个小技巧,先用curl检查URL有效性:

curl -I https://example.com/conf.zip
wget -O /mnt/docker/nps/conf.zip https://example.com/conf.zip
unzip -o /mnt/docker/nps/conf.zip -d /mnt/docker/nps/conf/

4. NPS服务配置详解

docker-compose.yaml文件是核心配置,我建议采用version 3.8语法以获得更好的兼容性。以下是个增强版配置示例:

version: '3.8'
services:
  nps:
    image: ffdfgdfg/nps
    container_name: nps
    restart: unless-stopped
    volumes:
      - /mnt/docker/nps/conf:/conf
      - /mnt/docker/nps/logs:/var/log/nps
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "8800:8080"  # 管理界面
      - "8024:8024"  # 客户端连接
      - "8890:8890"  # 域名解析
    environment:
      - TZ=Asia/Shanghai
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "3"

启动服务时添加--build参数可以强制重建容器,避免缓存问题:

docker-compose up -d --build

查看日志是排查问题的第一步,这个命令可以实时跟踪:

docker-compose logs -f --tail=100

5. 安全加固与日常维护

首次登录管理界面(IP:8800)后,立即修改默认密码admin/123是必须的。但更安全的做法是直接修改配置文件:

编辑/mnt/docker/nps/conf/nps.conf:

web_username=myadmin
web_password=StrongPass!2023
web_port = 8800

重启服务使配置生效:

docker-compose restart

定期备份配置和数据很重要,这个命令可以创建带时间戳的备份:

tar -czvf /backup/nps_$(date +%Y%m%d).tar.gz /mnt/docker/nps/conf

设置日志轮转可以防止磁盘爆满,在/etc/logrotate.d/下创建nps文件:

/mnt/docker/nps/logs/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 root root
}

更新NPS服务时,先拉取最新镜像再重建容器:

docker-compose pull && docker-compose up -d

更多推荐