目录
npm、node
Git
Docker
Python、conda
conda 多用户
Jupyterhub
简介
安装jupyterhub
jupyter-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
这些端口用途如下:
基础连接端口:
SSH: 22/TCP (用于远程管理Linux系统) HTTPS: 443/TCP (用于安全Web访问) HTTP: 80/TCP (用于Web服务访问)
数据库相关端口:
MySQL/MariaDB: 3306/TCP PostgreSQL: 5432/TCP MongoDB: 27017/TCP Redis: 6379/TCP
机器学习和深度学习框架端口:
Jupyter Notebook: 8888/TCP TensorBoard: 6006/TCP MLflow: 5000/TCP Ray: 6379-6381/TCP, 8265/TCP DVC (Data Version Control): 6666/TCP
分布式计算和大数据组件端口:
Hadoop: 9000/TCP, 50070/TCP Spark: 7077/TCP, 8080-8081/TCP ZooKeeper: 2181/TCP Kafka: 9092/TCP
监控和管理端口:
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也需要配置源,因为官方源速度有点慢,步骤如下:
查看当前源
可以使用命令 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
文件。如果文件不存在,可以使用文本编辑器(如vi
或nano
)创建一个新文件。在 .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/
安装必要的依赖:
sudo dnf install curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel gcc make
下载并解压源码:
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
编译和安装:
make prefix=/usr/local all
sudo make prefix=/usr/local install
安装完成后,检查Git版本:
git --version
Docker
官方安装教程:https://docs.docker.com/engine/install/rhel/#next-steps
卸载旧版:
$ sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
podman \
runc
添加 yum 源
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
更新缓存
sudo dnf clean all
sudo dnf clean packages
sudo dnf makecache
安装 Docker
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
运行 docker
sudo systemctl enable --now docker
重启docker
systemctldaemon-reload
systemctl restart docker
Docker 安装容易使用难,难就难在众所周知的原因
Docker 官方镜像源在国内N多年前被和谐了,24年中,国内主流加速镜像也全部下线
那么怎么拉取镜像呢,主要方式有三,大家可以根据情况选择:
基于CloudFlareWorker 或 Nginx 自建 Docker 镜像代理