完全明白你的意思了。是我之前啰嗦太多,没有完全按照你提供的原题结构来排版。

现在,我严格按照你图片中的《三、AI部署》原始题目,逐题对应给出精准答案。结合你的真实环境(Fedora 44、纯内网离线、IP假定为 192.168.200.147,你需要根据自己的实际IP修改),这份格式最适合你用来复习和背诵。


三、AI 部署

说明:

  • Linux 相关软件和文档存放在 /soft 目录;每个软件包存放在与其同名的子目录中。
  • Linux 系统 root 用户密码为 Admin@234。
  • 考试结束后,执行下面的命令,提交答案(答案文件 /opt/ai.txt)。
    chmod +x /soft/ai.sh
    /soft/ai.sh

(一) 安装桌面

1. 在 Fedora server 中安装 kde-desktop 桌面环境,并将系统默认启动目标设置为图形界面。

答案:

cd /soft/kde-desktop/packages
dnf install *.rpm -y --disablerepo=* --nogpgcheck
# 若报依赖错误:rpm -ivh *.rpm --nodeps --force
systemctl set-default graphical.target

2. 重启系统后完成桌面环境初始化,语言设置为 American English,键盘布局设置为 English (US)。创建普通用户 xiao,密码设置为 Admin@234。将主机名称设置为 ai。时区设置为 Asia/Shanghai。

答案:

# (图形界面向导操作:语言、键盘、创建用户xiao及密码、时区)
# 以xiao登录桌面后,打开终端,su - root 切换为root
hostnamectl set-hostname ai
timedatectl set-timezone Asia/Shanghai

3. 以 xiao 用户登录桌面系统,下面所有命令行操作都以 root 用户身份进行。

答案:

su - root
# 输入密码 Admin@234

4. 扩展 LV 大小为整个 VG。

答案: (你的环境为 XFS 文件系统,且路径为 /dev/mapper/fedora-root)

vgs && lvs && df -hT  # 先确认信息
lvextend -l +100%FREE /dev/mapper/fedora-root
xfs_growfs /          # ⚠️注意是XFS,不能用resize2fs
df -hT                # 验证扩容结果

(二) python 虚拟环境搭建

1. 安装 python3-pip 和 uv。

答案:

cd /soft/python3-pip/packages
dnf install *.rpm -y --disablerepo=* --nogpgcheck

cd /soft/uv/packages
dnf install *.rpm -y --disablerepo=* --nogpgcheck

2. 使用 python venv 在 /opt/uv_venv 创建虚拟环境,并激活该环境。

答案:

python3 -m venv /opt/uv_venv
source /opt/uv_venv/bin/activate

3. 使用 torch 和 numpy 目录中的本地软件包,通过 uv 在该虚拟环境中离线安装 torch 和 numpy 及其运行依赖。

答案:

uv pip install --no-index --find-links=/soft/torch torch
uv pip install --no-index --find-links=/soft/numpy numpy

4. 退出虚拟环境。

答案:

deactivate

(三) conda 虚拟环境搭建

1. 使用 Miniconda3-latest-Linux-x86_64.sh 将 Miniconda 安装到 /opt/miniconda3。

答案: (注意 Linux 的 L 是大写,建议用 Tab 补全)

bash /soft/Miniconda3-latest-Linux-x86_64.sh -b -p /opt/miniconda3

2. 完成 conda 初始化,并激活 base 环境。

答案:

/opt/miniconda3/bin/conda init
source ~/.bashrc
conda activate base

3. 在 base 环境中安装 conda-completion,并使自动补全功能生效。

答案:

cd /soft/conda-completion
conda install --offline *.conda -y
# 若报错:conda install --offline --use-local /soft/conda-completion/* -y
# 自动补全生效通常需要重新 source ~/.bashrc 或重新打开终端

4. 配置 conda,使新打开的 Shell 不自动激活 base 环境,退出 base 虚拟环境。

答案:

conda config --set auto_activate_base false
conda deactivate

5. 创建名为 conda_env 的 conda 虚拟环境,使用系统的 python 版本。

答案: (你的系统 Python 版本为 3.14,必须严格匹配)

conda create -n conda_env python=3.14 -y

6. 激活 conda_env 环境,使用 conda-pytorch-cpu 目录中的本地软件包,在 conda_env 环境中离线安装 pytorch 及其运行依赖。

答案:

conda activate conda_env
cd /soft/conda-pytorch-cpu
conda install --offline *.conda *.tar.bz2 -y
# 若报错:conda install --offline --use-local /soft/conda-pytorch-cpu/* -y

7. 退出 conda 虚拟环境。

答案:

conda deactivate

(四) ollama 部署

1. 安装 docker-compose,并启动 docker.socket,同时设置为开机自启,不要手动启动 docker.service。

答案:

cd /soft/docker_compose/packages
dnf install *.rpm -y --disablerepo=* --nogpgcheck
systemctl enable --now docker.socket  # ⚠️ 绝对不要敲 systemctl start docker

2. 关闭系统防火墙;将 SELinux 运行模式设置为 permissive,并保证重启后配置仍然有效。

答案:

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

3. 导入 Ollama Docker 镜像,确认本地镜像可用。

答案:

docker load -i /soft/docker.io_ollama_ollama-0.40.1.tar
docker images | grep ollama

4. 创建 /opt/ollama 目录,并将 qwen2.5_0.5b.tar.zst 中的模型数据解压到该目录。

答案: (系统已预装 zstd)

mkdir -p /opt/ollama
tar -I zstd -xvf /soft/qwen2.5_0.5b.tar.zst -C /opt/ollama

5. 使用 Ollama 镜像创建名为 ollama 的容器,容器应监听 0.0.0.0:11434,并将宿主机 /opt/ollama 挂载到容器内 /root/.ollama,容器应在主机重启后自动启动。

答案:

docker run -d \
  --name ollama \
  --restart always \
  -p 11434:11434 \
  -v /opt/ollama:/root/.ollama \
  ollama/ollama

(五) Dify 部署与聊天助手配置

1. 使用 Docker 镜像离线包,导入 Dify 部署所需的镜像,并检查导入结果。

答案:

docker load -i /soft/dify-images.tar
docker images | grep dify

2. 将 /soft/dify-1.17.1.tar.gz 解压至 /opt 目录,进入 /opt/dify-1.17.1/docker/,以 .env.example 为模板创建 .env 文件,并完成以下配置:修改两处:FORCE_VERIFYING_SIGNATURE=false, PLUGIN_MAX_PACKAGE_SIZE=524288000。在文件最后加上:PLUGIN_IGNORE_UV_LOCK=true。

答案:

tar -zxvf /soft/dify-1.17.1.tar.gz -C /opt/
cd /opt/dify-1.17.1/docker/
cp .env.example .env
sed -i 's/FORCE_VERIFYING_SIGNATURE=true/FORCE_VERIFYING_SIGNATURE=false/g' .env
sed -i 's/PLUGIN_MAX_PACKAGE_SIZE=.*/PLUGIN_MAX_PACKAGE_SIZE=524288000/g' .env
echo "PLUGIN_IGNORE_UV_LOCK=true" >> .env

3. 启动 Dify 服务。在 /opt/dify-1.17.1/docker/ 目录下,使用 Docker Compose 创建并以后台方式启动 Dify 服务。

答案:

docker compose up -d
# 如果提示没有 compose 命令,请用 docker-compose up -d

4. 安装 Firefox 浏览器。启动浏览器,进入 dify 页面,设置 dify 页面语言为“简体中文”。初始化管理员账户,信息如下:邮箱: admin@example.com,用户名: admin,密码: Admin@234。初始化完成后,使用该账户登录 Dify。

答案:

# 命令行安装 Firefox
cd /soft/firefox/packages
dnf install *.rpm -y --disablerepo=* --nogpgcheck

[图形界面操作]:打开 Firefox,访问 http://localhost,设置语言为“简体中文”,初始化管理员账户(admin@example.com / admin / Admin@234),登录 Dify。

5. 安装 Ollama 插件并添加模型。通过 Dify 的插件管理页面,使用本地安装包方式安装 langgenius-ollama_1.0.2-offline-fixed.difypkg。安装完成后,添加 Ollama 模型,配置如下:模型名称: qwen2.5:0.5b,模型类型: LLM,基础 URL: http://:11434,默认模型设置为: qwen2.5:0.5b。其中, 应替换为运行 Ollama 服务的服务器实际 IP 地址。

答案:
[图形界面操作]:

  1. 进入 Dify -> 插件 -> 本地安装,上传 /soft/langgenius-ollama_1.0.2-offline-fixed.difypkg。
  2. 添加 Ollama 模型:

    • 模型名称:qwen2.5:0.5b
    • 模型类型:LLM
    • 基础 URL:http://192.168.200.147:11434(⚠️必须换成你当前机器的实际IP)
    • 默认模型:qwen2.5:0.5b

6. 创建聊天助手并验证。创建一个聊天助手,完成以下设置:应用类型: 聊天助手,应用名称: ChatAssistant,使用模型: qwen2.5:0.5b。在应用调试页面输入测试问题:Hello, please introduce yourself in one sentence.

答案:
[图形界面操作]:

  1. 创建应用 -> 选择“聊天助手” -> 应用名称 ChatAssistant -> 选择模型 qwen2.5:0.5b。
  2. 在调试与预览页面,输入:Hello, please introduce yourself in one sentence. 验证是否有回复。

最后一步(交卷):

chmod +x /soft/ai.sh
/soft/ai.sh