bootstrap a CentOS 7 server
⚠️ CentOS 7 已于 2024-06-30 停止维护(EOL)
本文是 2023/2024 年在 CentOS 7 上的初始化实录,仅为历史参考 。
CentOS 7 的官方仓库已冻结于 vault.centos.org ,不再有安全更新;SCL/devtoolset、docker 的 el7 仓库等均处于"可用但停更"状态。
新装服务器请勿使用 CentOS 7 ,建议改用 Rocky Linux 9 / AlmaLinux 9 (RHEL 9 兼容,维护到 2032 年)或 Ubuntu 20.04 LTS+ 。
在 Rocky/Alma 9 上的等价操作(yum → dnf,SCL → 系统 GCC):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 sudo dnf install -y gcc gcc-c++ make git zshsudo dnf install -y nodejssudo dnf install -y python3curl -LsSf https://astral.sh/uv/install.sh | sh sudo dnf install -y dnf-plugins-coresudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
install gcc 11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 sudo yum install -y centos-release-sclsudo yum install -y devtoolset-11scl enable devtoolset-11 bash scl enable devtoolset-11 zsh echo "[ -f /opt/rh/devtoolset-11/enable ] && source /opt/rh/devtoolset-11/enable" >> ~/.bashrcecho "[ -f /opt/rh/devtoolset-11/enable ] && source /opt/rh/devtoolset-11/enable" >> ~/.zshrcgcc --version g++ --version
注:SCL(Software Collections)仓库随 CentOS 7 一并冻结,仍可从 vault 拉到 devtoolset-11,但不再有更新。
install zsh
1 2 3 4 5 6 7 8 9 10 11 sudo yum groupinstall -y "Development tools" sudo yum install -y gettext-devel openssl-devel perl-CPAN perl-devel zlib-devel ncurses-develwget --no-check-certificate https://www.zsh.org/pub/zsh-5.9.tar.xz tar -xf zsh-5.9.tar.xz cd zsh-5.9./configure make sudo make installecho "/usr/local/bin/zsh" | sudo tee -a /etc/shellschsh -s /usr/local/bin/zsh
install git
1 2 3 4 5 6 7 8 9 10 11 12 13 git --version sudo yum remove -y gitsudo yum remove -y git-*sudo yum install -y https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpmsudo yum install -y gitgit --version
install oh-my-zsh
Follow this link
install cmake
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CMAKE_VERSION=3.28.3 wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION} /cmake-${CMAKE_VERSION} .tar.gz tar -xf cmake-${CMAKE_VERSION} .tar.gz cd cmake-${CMAKE_VERSION} ./configure make -j 8 sudo make installcmake --version cd .. && rm -rf cmake-${CMAKE_VERSION} *
install docker
FYI: install docker
注:Docker 官方现已不再将 CentOS 7 列为支持平台(安装文档只剩 CentOS Stream 9/10);
el7 仓库冻结在 docker-ce 26.1.4(2024-06),get.docker.com 脚本对 el7 仍会给出 EOL 警告并继续安装。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.shsudo yum install -y docker-buildx-plugindocker --version docker buildx version sudo systemctl enable dockersudo systemctl start dockersudo /usr/sbin/groupadd dockersudo /usr/sbin/usermod -aG docker $USER newgrp docker
install java
1 2 3 4 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm sudo yum install -y ./jdk-17_linux-x64_bin.rpmrm -f jdk-17_linux-x64_bin.rpm
install go
Follow this link
install python from source
注:Python 3.8 已于 2024-10-07 停止安全维护(EOL) ,示例已改为仍受支持的 3.12.x。
3.12 需要 OpenSSL 1.1.1+ 才能编译出 _ssl 模块,而 CentOS 7 自带 openssl 1.0.2(不满足,
编译时会跳过 ssl 模块);如需 ssl 支持,请先升级 openssl(可用 SCL 的 openssl11)。
新系统上建议直接用 uv ,无需源码编译。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 PYTHON_VERSION=3.12.14 wget -O /var/tmp/python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION} /Python-${PYTHON_VERSION} .tar.xz" install -d /var/tmp/python; tar -xf /var/tmp/python.tar.xz -C /var/tmp/python --strip-components 1 cd /var/tmp/python./configure --enable-optimizations make -j 8 sudo make altinstallsudo ln -s /usr/local/bin/python3.12 /usr/local/bin/python3sudo ln -s /usr/local/bin/pip3.12 /usr/local/bin/pip3
install node
版本说明(2026-08 校正):
Node 16(lts/gallium)是最后一个官方二进制可直接跑在原生 CentOS 7(glibc 2.17)上的 LTS ;
Node 17 同样基于 glibc 2.17 构建,但并非 LTS 且早已 EOL。
Node 18+ 官方二进制要求 glibc >= 2.28 —— 需要先按
centos7-upgrade-libc 把 glibc 升到 2.31,
之后就能跑 Node 18/20/22:见
centos7-install-node-18-20 。
当前 Node 官方 LTS 线为 Node 24(active)/ Node 22(maintenance),均需更现代的系统(如 Rocky/Alma 9)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.6/install.sh | bash nvm ls-remote --lts nvm install lts/gallium node -v npm config set registry https://registry.npmmirror.com cat << EOF > ~/.npmrc home="https://npmmirror.com" registry="https://registry.npmmirror.com/" electron_mirror="https://npmmirror.com/mirrors/electron/" electron_custom_dir="{{ version }}" electron_builder_binaries_mirror="http://npmmirror.com/mirrors/electron-builder-binaries/" EOF
install nvim
版本说明:较新的 nvim 预编译包对 glibc 要求更高(官方为旧系统提供 "unsupported" 的 older-glibc 构建)。
在 CentOS 7 上保持 0.9.5 即可与当前 LunarVim release-1.4 配套使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 NVIM_VERSION=0.9.5 wget https://github.com/neovim/neovim/releases/download/v${NVIM_VERSION} /nvim.appimage chmod u+x nvim.appimage && ./nvim.appimagesudo mv nvim.appimage /usr/local/bin/nvim./nvim.appimage --appimage-extract ./squashfs-root/usr/bin/nvim sudo mv squashfs-root/usr/bin/nvim /usr/local/bin/nvimnvim --version
install LunarVim
1 2 3 4 5 LV_BRANCH='release-1.4/neovim-0.9' bash <(curl -s https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.4/neovim-0.9/utils/installer/install.sh) vim.opt.shiftwidth = 4 -- the number of spaces inserted for each indentation vim.opt.tabstop = 4 -- insert spaces for a tab
相关文章