AI服务器环境搭建指南,从裸机到“战斗”机(2):防火墙、Git、Docker、Python、多用户JupyterHub

科技   2025-01-11 12:34   中国香港  

目录

  • npm、node

  • Git

  • Docker

  • Python、conda

  • conda 多用户

  • Jupyterhub

    • 简介

    • 安装jupyterhub

    • jupyter-ai

本地运行大模型,要买什么显卡?

AI服务器环境搭建指南,从裸机到“战斗”机(上集)

大家好,我是章北海

这是大模型应用开发系列番外:

计划用3篇文章(上中下)介绍如何将一台裸机服务器打造成AI服务器

本文为中篇,内容包括:防火墙策略、开发工具(npm、node、git、java、docker)安装、多用户jupyterhub部署

后一篇再讲显卡驱动 cuda 机器学习环境 大模型等相关内容

防火墙策略

如果你的服务器在办公网或互联网,本节可以无视了。

仅需注意到,服务器本身的防火墙策略,比如放开jupyter notebook 的8888端口给指定ip(你也可以不指定ip,但不建议如此操作):

# 查看防火墙状态:

firewall-cmd --state

# 添加规则允许指定 IP 访问 8888 端口(假设指定 IP 为 192.168.1.100,也即管理机ip):

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="8888" accept'`

# 重新加载防火墙配置使规则生效:

firewall-cmd --reload`

# 验证规则是否添加成功:

firewall-cmd --list-all

# 或者管理机测试端口是否畅通


telnet <你的服务器IP> 8888

# 如果您需要删除这条规则,可以使用以下命令:

firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="8888" accept' firewall-cmd --reload`

服务器如果在内网(测试或生产),可能需要公司网络相关同事开通防火墙策略才能从自己的开发机或管理机ssh连过去。

为了避免麻烦可以一次性提交:

以下是可以提前开通的端口:

22,80,443,1212,2181,3000,3306,5000,5432,6006,6379-6381,6666,7077,7687,8000,8086,8080-8082,8265,8888,9000,9090,9092,9200,11434

这些端口用途如下:

  1. 基础连接端口:
  • SSH: 22/TCP (用于远程管理Linux系统)
  • HTTPS: 443/TCP (用于安全Web访问)
  • HTTP: 80/TCP (用于Web服务访问)
  1. 数据库相关端口:
  • MySQL/MariaDB: 3306/TCP
  • PostgreSQL: 5432/TCP
  • MongoDB: 27017/TCP
  • Redis: 6379/TCP
  1. 机器学习和深度学习框架端口:
  • Jupyter Notebook: 8888/TCP
  • TensorBoard: 6006/TCP
  • MLflow: 5000/TCP
  • Ray: 6379-6381/TCP, 8265/TCP
  • DVC (Data Version Control): 6666/TCP
  1. 分布式计算和大数据组件端口:
  • Hadoop: 9000/TCP, 50070/TCP
  • Spark: 7077/TCP, 8080-8081/TCP
  • ZooKeeper: 2181/TCP
  • Kafka: 9092/TCP
  1. 监控和管理端口:
  • Prometheus: 9090/TCP
  • Grafana: 3000/TCP
  • ElasticSearch: 9200/TCP, 9300/TCP

不同公司的网络安全要求等级不一,或许即便是测试区或开发区,也可以申请部分互联网权限。

以下是可以提前申请的网站:

pypi.org,repo.anaconda.com,conda.anaconda.org,tensorflow.org,pytorch.org,huggingface.co,kaggle.com,github.com,docker.com,mirrors.aliyun.com,mirrors.tuna.tsinghua.edu.cn,mirrors.ustc.edu.cn,pypi.tuna.tsinghua.edu.cn,mirrors.tuna.tsinghua.edu.cn,registry.npmjs.org,registry.npmmirror.com,cdn.jsdelivr.net,unpkg.com,fastly.jsdelivr.net,npm.taobao.org,cdnjs.cloudflare.com,fonts.googleapis.com,fonts.gstatic.com,ajax.googleapis.com,code.jquery.com,maxcdn.bootstrapcdn.com,stackpath.bootstrapcdn.com,cdn.bootcdn.net,cdn.bootcss.com,openrouter.ai,deepseek.com,siliconflow.cn,aliyun.com,aliyuncs.com,azure.com,amazon.com,amazonaws.com,ollama.com,docker.io,quay.io,ghcr.io,elastic.co,unstructured.io,opensearchproject.org,myscale.com,oracle.com

开发工具和环境:npm、node、git、docker

npm、node

如果跟着前篇已顺利配置好yum源,那么安装npm就简单很多,仅需注意npm版本即可:

在 Red Hat Enterprise Linux 8 (RHEL 8) 上安装 npm 通常会随 Node.js 一起安装。

以下是详细的步骤:

# dnf命令与yum命令几乎无区别
# 首先查看可用的 Node.js 模块流
dnf module list nodejs

# 重置之前的 nodejs 模块
dnf module reset nodejs

# 启用 nodejs:20 
dnf module enable nodejs:20

# 安装/更新 Node.js
dnf module install nodejs:20

# 验证安装
npm --version 
node --version`

现在你可以使用 npm 来安装和管理 Node.js 包。例如,安装一个全局包:

sudo npm install -g <package-name>

npm也需要配置源,因为官方源速度有点慢,步骤如下:

  1. 查看当前源

  • 可以使用命令npm config get registry来查看当前npm源的地址。默认情况下,npm源是https://registry.npmjs.org/
  • 切换到淘宝源(以淘宝源为例)

    • 执行命令npm config set registry https://registry.npm.taobao.org/
    • 这样就将npm源切换到了淘宝源。之后在安装npm包时,就会从淘宝源进行下载,下载速度通常会比默认源快很多。
  • 切换回官方源

    • 如果想切换回官方源,可以执行命令npm config set registry https://registry.npmjs.org/
  • 使用.npmrc 文件配置(更灵活的方式)

    registry=https://registry.npm.taobao.org/
    • 如果要使用其他源,只需将上述地址替换为相应源的地址即可。例如,使用华为云的npm源,可以将内容设置为registry = https://mirrors.huaweicloud.com/repository/npm/
    • 这种方式的好处是可以方便地管理和切换npm源,而且可以在团队环境中共享配置(将.npmrc文件添加到项目仓库中)。
    • 可以在用户主目录(~)下创建或编辑.npmrc文件。如果文件不存在,可以使用文本编辑器(如vinano)创建一个新文件。
    • .npmrc文件中添加以下内容来设置淘宝源:

    Git

    git官网:https://git-scm.com/downloads/linux

    git安装很简单,yum源正常情况下一行命令即可解决

    yum install git
    dnf install git

    但是RHEL直接安装的git版本较低,建议直接从官方镜像下载后手动安装(网络畅通的话,可以使用官方建议的IUS (Inline with Upstream Stable) 仓库,它提供了更新的Git版本。)。

    地址:https://www.kernel.org/pub/software/scm/git/

    1. 安装必要的依赖:

    sudo dnf install curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel gcc make

    1. 下载并解压源码:

    wget https://www.kernel.org/pub/software/scm/git/git-2.x.x.tar.gz

    tar -xzvf v2.x.x.tar.gz

    cd git-2.x.x

    1. 编译和安装:

    make prefix=/usr/local all

    sudo make prefix=/usr/local install

    1. 安装完成后,检查Git版本:

    git --version

    Docker

    官方安装教程:https://docs.docker.com/engine/install/rhel/#next-steps

    1. 卸载旧版:
    $ sudo dnf remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine \
                      podman \
                      runc
    1. 添加 yum 源
    sudo dnf -y install dnf-plugins-core
    sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
    1. 更新缓存
    sudo dnf clean all
    sudo dnf clean packages
    sudo dnf makecache

    1. 安装 Docker
    sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    1. 运行 docker
    sudo systemctl enable --now docker
    1. 重启docker
    systemctldaemon-reload
    systemctl restart docker

    Docker 安装容易使用难,难就难在众所周知的原因

    Docker 官方镜像源在国内N多年前被和谐了,24年中,国内主流加速镜像也全部下线

    那么怎么拉取镜像呢,主要方式有三,大家可以根据情况选择:

    1. 基于CloudFlareWorker 或 Nginx 自建 Docker 镜像代理

    机器学习算法与Python实战
    长期跟踪关注统计学、数据挖掘、机器学习算法、深度学习、人工智能技术与行业发展动态,分享Python、机器学习等技术文章。回复机器学习有惊喜资料。
     最新文章