CentOS 系统安装 Node.js 步骤详解 – wiki基地


CentOS 系统安装 Node.js 步骤详解

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者可以使用 JavaScript 来构建服务器端应用、命令行工具以及桌面应用程序。因其高性能、事件驱动和非阻塞 I/O 的特性,Node.js 在现代 Web 开发和后端服务中扮演着越来越重要的角色。

对于运行 CentOS 操作系统的服务器或虚拟机来说,安装 Node.js 是部署许多现代应用服务的基础步骤。然而,由于 CentOS 的特性(尤其是其基于 Red Hat Enterprise Linux,倾向于稳定但软件包版本可能不是最新的),安装最新或指定版本的 Node.js 可能需要一些额外的步骤,而不仅仅是简单的 yum install 命令。

本文将详细介绍在 CentOS 系统上安装 Node.js 的几种主要方法,包括使用官方仓库、NodeSource 提供的最新仓库、以及使用 Node Version Manager (NVM) 进行多版本管理。我们将逐一探讨这些方法的优缺点,并提供详细的步骤和解释,帮助您选择最适合您需求的方式。

在开始安装之前,请确保您具备以下条件:

  1. 一台运行 CentOS 的服务器或虚拟机(本文主要基于 CentOS 7/8 进行说明,但大部分步骤也适用于 RHEL 或其衍生版如 AlmaLinux、Rocky Linux)。
  2. 拥有 root 用户权限或可以执行 sudo 命令的普通用户账户。
  3. 稳定的互联网连接,用于下载软件包。
  4. 对 Linux 命令行有基本的了解。

接下来,我们将深入探讨各种安装方法。

方法一:使用 CentOS 官方仓库或 EPEL 仓库安装 Node.js (不推荐用于最新版本)

CentOS 的官方软件仓库通常包含 Node.js 包,但这些包的版本往往比较旧,可能无法满足许多现代应用的需求。EPEL (Extra Packages for Enterprise Linux) 仓库提供了更多额外的软件包,其中也包含 Node.js,版本通常比官方仓库新一些,但也可能不是最新的 LTS (长期支持) 或 Current (当前) 版本。

优点:

  • 安装过程简单,依赖性管理由 yumdnf 处理。
  • 软件包经过维护,稳定性较高(虽然版本旧)。

缺点:

  • Node.js 版本通常非常旧,可能缺少新特性或存在已知漏洞。
  • 不适合需要特定新版本 Node.js 的开发或生产环境。

安装步骤:

  1. 安装 EPEL 仓库 (如果尚未安装):
    在 CentOS 7 上:
    bash
    sudo yum install epel-release

    在 CentOS 8 或更新版本上(使用 dnf):
    bash
    sudo dnf install epel-release

    EPEL 仓库会添加到系统中,提供额外的软件包源。

  2. 搜索可用的 Node.js 版本:
    bash
    sudo yum search nodejs
    # 或者在 CentOS 8/dnf 系统上:
    sudo dnf search nodejs

    这个命令会列出 EPEL 或官方仓库中所有与 nodejs 相关的软件包,您会看到类似 nodejs.x86_64 的条目,旁边可能会显示版本号。请注意观察版本号,它可能不是您期望的最新版本。

  3. 安装 Node.js 和 npm:
    bash
    sudo yum install nodejs npm
    # 或者在 CentOS 8/dnf 系统上:
    sudo dnf install nodejs npm

    执行此命令后,yumdnf 会下载并安装 Node.js 运行时以及 npm (Node Package Manager)。npm 是 Node.js 的包管理器,用于安装、管理和发布 Node.js 包。它通常随 Node.js 一起安装。

  4. 验证安装:
    安装完成后,您可以通过以下命令检查 Node.js 和 npm 的版本:
    bash
    node -v
    npm -v

    如果命令输出了版本号,说明安装成功。然而,如前所述,这些版本号很可能是较旧的。

总结: 使用 CentOS 官方仓库或 EPEL 仓库安装 Node.js 是最简单的方法,但不推荐用于需要最新版本 Node.js 的场景。对于大多数开发者和需要部署现代应用的场景,建议使用下面的方法二或方法三。

方法二:使用 NodeSource 仓库安装 Node.js (推荐用于生产环境)

NodeSource 提供了为各种 Linux 发行版(包括 CentOS/RHEL)构建的最新 Node.js 二进制包。他们维护着 Node.js 的 LTS (长期支持) 版本和 Current (当前) 版本仓库,使得在 CentOS 上安装和更新最新或特定 LTS 版本的 Node.js 变得非常方便和可靠。这是在生产环境中安装特定 Node.js 版本的主流且推荐的方法。

优点:

  • 可以方便地安装 Node.js 的最新 LTS 或 Current 版本。
  • 安装过程相对简单,使用标准的包管理器 (yum/dnf)。
  • 软件包由 NodeSource 维护,质量有保障。
  • 更新 Node.js 版本也很方便。

缺点:

  • 需要添加第三方仓库。

安装步骤:

NodeSource 提供了方便的安装脚本,可以根据您选择的 Node.js 版本(LTS 或 Current)自动配置好相应的 yumdnf 仓库。

步骤 1:确定要安装的 Node.js 版本

Node.js 有两个主要的发布线:
* LTS (Long Term Support): 长期支持版本,适合绝大多数生产环境,提供较长时间的维护和更新,稳定性最好。
* Current: 当前版本,包含最新的特性,但生命周期较短,适合尝鲜或开发新特性。

您可以在 Node.js 官网上查看当前的 LTS 和 Current 版本。选择您需要的版本对应的 NodeSource 安装脚本。

步骤 2:下载并运行 NodeSource 安装脚本

NodeSource 提供了针对不同 Node.js 主版本的安装脚本。您需要使用 curl 下载脚本,然后使用 sudo bash 执行它。

  • 安装最新的 LTS 版本 (推荐):
    找到当前最新的 LTS 版本号,例如 Node.js 18 或 Node.js 20。NodeSource 的脚本名称通常包含版本号。例如,要安装 Node.js 20 (当前 LTS),可以使用以下命令:
    “`bash
    # CentOS/RHEL 7:
    curl -sL https://rpm.nodesource.com/setup_20.x | sudo bash –

    CentOS/RHEL 8 or newer (using dnf):

    curl -sL https://rpm.nodesource.com/setup_20.x | sudo bash –
    ``
    请根据 NodeSource 官方网站的最新推荐来调整
    setup_20.x中的版本号。例如,如果是 Node.js 18 LTS,则使用setup_18.x`。

  • 安装最新的 Current 版本:
    如果您需要最新的当前版本(例如 Node.js 21 或 22),可以使用对应的脚本:
    “`bash
    # CentOS/RHEL 7:
    curl -sL https://rpm.nodesource.com/setup_current.x | sudo bash –

    CentOS/RHEL 8 or newer (using dnf):

    curl -sL https://rpm.nodesource.com/setup_current.x | sudo bash –
    ``
    这里的
    setup_current.x` 通常会指向最新的 Current 版本。

解释命令:

  • curl -sL <URL>: 使用 curl 命令从指定的 URL 下载内容。
    • -s: 静默模式,不显示下载进度等信息。
    • -L: 允许跟随重定向,确保即使 URL 有变化也能下载到正确的内容。
  • |: 这是一个管道符,将 curl 命令的输出(即安装脚本的内容)作为输入传递给下一个命令。
  • sudo bash -: 使用 sudo 以 root 权限执行 bash 命令。- 表示 bash 会从标准输入读取命令,而标准输入正是 curl 通过管道传递过来的脚本内容。

这个脚本会检测您的系统信息,并自动在 /etc/yum.repos.d/ 目录下创建一个名为 nodesource-*.repo 的文件,这个文件配置了 NodeSource 的软件仓库地址。脚本执行成功后,系统就能够通过 yumdnf 访问 NodeSource 提供的 Node.js 包了。

步骤 3:安装 Node.js

在成功执行 NodeSource setup 脚本后,您现在可以使用系统的包管理器安装 Node.js。NodeSource 的包包含了 nodenpm

  • 在 CentOS 7 上 (使用 yum):
    bash
    sudo yum install nodejs

  • 在 CentOS 8 或更新版本上 (使用 dnf):
    bash
    sudo dnf install nodejs

yumdnf 会从 NodeSource 仓库下载 nodejs 包及其依赖项并进行安装。安装完成后,Node.js 和 npm 将可用。

步骤 4:验证安装

安装完成后,再次检查 Node.js 和 npm 的版本,确认安装的是您期望的版本:
bash
node -v
npm -v

您应该会看到与您选择的 NodeSource 脚本版本对应的 Node.js 版本号。

更新 Node.js:

使用 NodeSource 仓库安装 Node.js 后,更新也非常简单。只需运行标准的系统更新命令即可:
“`bash
sudo yum update nodejs

或者在 CentOS 8/dnf 系统上:

sudo dnf update nodejs
“`
这会将 Node.js 更新到 NodeSource 仓库中该版本系列 (如 LTS 或 Current) 的最新发布版本。

总结: 使用 NodeSource 仓库是 CentOS 上安装最新或指定 LTS 版本 Node.js 的推荐方法,过程简单、可靠,并且方便后续更新。适用于大多数开发和生产环境。

方法三:使用 Node Version Manager (NVM) 安装 Node.js (推荐用于开发环境和多版本管理)

Node Version Manager (NVM) 是一个命令行工具,允许您轻松地安装、切换和管理多个 Node.js 版本。它将 Node.js 安装在用户的主目录下,通常不需要 root 权限来安装不同版本的 Node.js。这对于需要在不同项目中使用不同 Node.js 版本的开发者来说非常有用。

优点:

  • 可以方便地安装任意多个 Node.js 版本,并在它们之间快速切换。
  • Node.js 版本安装在用户目录下,不影响系统全局环境。
  • 安装全局 npm 包通常不需要 sudo (因为它们安装在 NVM 管理的 Node.js 版本对应目录下)。
  • 非常适合开发环境,方便测试不同版本的兼容性。

缺点:

  • 安装过程稍微复杂一点,需要在用户的 shell 配置文件中添加配置。
  • Node.js 版本是按用户安装的,如果多个用户都需要使用 Node.js,每个用户都需要单独安装 NVM 和 Node.js 版本。
  • 不适合作为系统服务运行 Node.js 应用(尽管可以通过一些方法解决,但不如系统级安装直接)。

安装步骤:

  1. 下载并运行 NVM 安装脚本:
    NVM 的安装脚本通常托管在 GitHub 上。使用 curl 下载并执行它。访问 NVM 的 GitHub 页面 (https://github.com/nvm-sh/nvm) 可以找到最新的安装命令。通常是这样:
    bash
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

    请注意,v0.39.7 是一个版本号示例,请查看 NVM GitHub 页面获取最新的稳定版本号来替换它。

解释命令:

  • curl -o- <URL>: 使用 curl 下载内容,-o- 表示将输出写入标准输出。
  • | bash: 通过管道将下载的脚本内容传递给 bash 执行。

这个脚本会将 NVM 克隆到您的用户主目录下的 ~/.nvm 目录中,并会在您的 shell 配置文件(如 ~/.bashrc, ~/.profile, ~/.zshrc 等,取决于您使用的 shell)中添加一些行,以便在启动 shell 时加载 NVM。

  1. 加载 NVM 到当前 shell 会话:
    安装脚本会提示您关闭并重新打开终端,或者手动 source 您的 shell 配置文件,以便在当前会话中立即使用 nvm 命令。
    例如,如果您的 shell 是 Bash,并且脚本修改了 ~/.bashrc,则执行:
    bash
    source ~/.bashrc

    如果您不确定是哪个文件被修改,或者希望 NVM 对所有登录 shell 都可用,可以尝试 source ~/.profile 或查看安装脚本的输出。

  2. 验证 NVM 安装:
    加载配置后,输入 nvm 命令,如果安装成功,您会看到 NVM 的使用帮助信息。您也可以通过以下命令检查 NVM 的版本:
    bash
    nvm --version

  3. 使用 NVM 安装 Node.js 版本:
    现在,您可以使用 nvm install 命令安装任意 Node.js 版本。

    • 安装最新的 LTS 版本:
      bash
      nvm install --lts
    • 安装最新的 Current 版本:
      bash
      nvm install node
    • 安装特定版本 (例如 Node.js 18.17.1):
      bash
      nvm install 18.17.1

      NVM 会从官方源下载并安装指定的 Node.js 版本及其配套的 npm。这些版本将安装在 ~/.nvm/versions/node/ 目录下。
  4. 列出已安装的 Node.js 版本:
    bash
    nvm ls

    这个命令会显示所有通过 NVM 安装的 Node.js 版本,并用箭头 (->) 指出当前正在使用的版本。system 表示当前使用的是系统全局安装的 Node.js (如果有的话)。

  5. 切换 Node.js 版本:
    要切换到某个已安装的版本,使用 nvm use 命令:
    bash
    nvm use 18.17.1
    # 或者切换到最新的 LTS 版本:
    nvm use --lts
    # 切换回系统全局安装的版本 (如果存在):
    nvm use system

    切换后,当前的 shell 会话将使用指定版本的 nodenpm 命令。

  6. 设置默认 Node.js 版本:
    您可以设置一个默认版本,这样每次打开新的 shell 会话时都会自动使用该版本:
    bash
    nvm alias default 18.17.1
    # 或者设置最新的 LTS 版本为默认:
    nvm alias default --lts

  7. 验证当前使用的 Node.js 版本:
    切换或设置默认版本后,再次运行 node -vnpm -v 来确认当前使用的是正确的版本。

管理全局 npm 包时的注意事项:

使用 NVM 安装的 Node.js 版本,其对应的全局 node_modules 目录也在 ~/.nvm/versions/node/<version>/lib/node_modules/ 目录下。因此,当您使用 npm install -g <package> 安装全局包时,通常不需要 sudo,因为您对该目录有写入权限。这是 NVM 的一大优点。

总结: NVM 是管理多个 Node.js 版本的强大工具,特别适合开发者在不同项目之间切换 Node.js 环境。它提供了极大的灵活性,并将 Node.js 环境隔离在用户目录下。

方法四:从源码编译安装 Node.js (不推荐用于大多数场景)

从 Node.js 源码编译安装提供了最大的灵活性,您可以自定义编译选项,理论上可以获得最优化的性能。然而,这个过程相对复杂,需要安装编译工具和依赖库,并且后续的更新和维护也比较麻烦。除非您有非常特定的需求(例如需要在不受支持的架构上运行 Node.js,或者需要启用/禁用某些特定的编译选项),否则不建议使用此方法。

优点:

  • 最大限度的灵活性和定制性。
  • 可以在没有预编译二进制包的平台上安装。

缺点:

  • 过程复杂,容易出错。
  • 需要安装大量的编译依赖。
  • 更新和维护困难,需要重复编译步骤。
  • 不适合新手。

安装步骤:

  1. 安装编译所需的工具和依赖:
    您需要安装 C++ 编译器 (如 GCC)、make 工具以及 Python (用于执行 Node.js 的构建脚本)。CentOS 提供了一个方便的 “Development Tools” 组包,包含这些基本工具。
    bash
    sudo yum groupinstall "Development Tools"
    # 或者在 CentOS 8/dnf 系统上:
    sudo dnf groupinstall "Development Tools"

    此外,Node.js 编译还需要一些其他库,但通常 “Development Tools” 已经包含了大部分。如果编译过程中报错缺少某些库,您需要根据错误信息安装相应的 *-devel*-dev 包。

  2. 下载 Node.js 源码:
    访问 Node.js 官方网站 (https://nodejs.org/en/download/current/) 下载您想要编译的版本的源码 .tar.gz 包。您可以使用 curlwget 命令在服务器上直接下载。
    例如,下载某个版本的源码包:
    bash
    wget https://nodejs.org/dist/v18.17.1/node-v18.17.1.tar.gz
    # 或者使用 curl:
    curl -O https://nodejs.org/dist/v18.17.1/node-v18.17.1.tar.gz

    请将 v18.17.1 替换为您希望下载的实际版本号。

  3. 解压源码包:
    bash
    tar -zxvf node-v18.17.1.tar.gz

    这将在当前目录下创建一个名为 node-v18.17.1 的新目录,其中包含 Node.js 的源码。

  4. 进入源码目录:
    bash
    cd node-v18.17.1

  5. 配置编译选项:
    运行 ./configure 脚本来检查系统环境、依赖项,并生成 Makefile。您可以添加各种选项来定制构建过程。默认情况下,它会将 Node.js 安装到 /usr/local 目录。
    bash
    ./configure

    如果需要指定安装目录,可以使用 --prefix 选项,例如安装到 /opt/node
    bash
    ./configure --prefix=/opt/node

    如果 ./configure 过程中有依赖缺失,它会报错,您需要根据错误信息安装相应的开发库包。

  6. 编译源码:
    运行 make 命令开始编译 Node.js。这个过程可能需要一些时间,具体取决于您的服务器性能。
    bash
    make

    您可以使用 -j 选项利用多核 CPU 加快编译速度,例如使用 4 个核心:make -j 4

  7. 安装编译好的 Node.js:
    编译成功后,使用 make install 命令将编译好的二进制文件、库文件等安装到指定目录(默认为 /usr/local)。这个步骤通常需要 root 权限。
    bash
    sudo make install

    如果您在 configure 阶段指定了 --prefix,例如 /opt/node,则需要使用:
    bash
    sudo make install prefix=/opt/node

  8. 配置环境变量 (如果安装到非标准目录):
    如果 Node.js 被安装到 /usr/local/ 以外的目录(例如 /opt/node),您需要将该目录下的 bin 子目录添加到系统的 PATH 环境变量中,以便在任何地方都可以直接运行 nodenpm 命令。
    编辑您的 shell 配置文件(如 ~/.bashrc/etc/profile),添加如下行:
    bash
    export PATH="/opt/node/bin:$PATH"

    然后 source 该文件或重新登录使更改生效。

  9. 验证安装:
    检查 Node.js 和 npm 的版本:
    bash
    node -v
    npm -v

总结: 从源码编译安装 Node.js 提供了最大的灵活性,但过程复杂且维护困难。除非有特殊需求,否则建议使用 NodeSource 仓库或 NVM 进行安装。

安装后的验证和基本使用

无论您使用哪种方法安装 Node.js,都需要验证安装是否成功,并了解一些基本的使用方法。

验证安装:

成功安装后,您应该能够在终端中执行 nodenpm 命令。
bash
node -v
npm -v

这两个命令会分别输出安装的 Node.js 和 npm 的版本号。如果命令没有找到或输出错误,请检查您的安装步骤以及系统的 PATH 环境变量设置。

您还可以尝试运行一个简单的 Node.js 脚本来进一步验证:
1. 创建一个名为 hello.js 的文件:
bash
nano hello.js

2. 在文件中输入以下内容:
javascript
console.log("Hello from Node.js on CentOS!");

3. 保存并关闭文件。
4. 在终端中运行脚本:
bash
node hello.js

如果一切正常,您应该会看到输出:Hello from Node.js on CentOS!

基本使用 npm (Node Package Manager):

npm 是 Node.js 生态系统中最重要的工具之一,用于安装、共享和管理项目依赖。

  • 安装一个 Node.js 包:
    通常在项目目录下安装包作为项目依赖:
    bash
    npm install <package-name>

    例如,安装 Express 框架:
    bash
    npm install express

    这会将包安装到当前目录的 node_modules 子目录中。

  • 全局安装一个 Node.js 包:
    有些工具(如命令行工具)需要全局安装才能在任何地方使用。
    bash
    npm install -g <package-name>

    例如,全局安装 nodemon (一个用于开发时自动重启 Node.js 应用的工具):
    bash
    npm install -g nodemon

    注意: 如果您使用系统级别的 Node.js 安装(方法一或方法二),全局安装可能需要 sudo 权限:sudo npm install -g <package-name>。然而,不推荐 使用 sudo 进行全局安装,因为它可能导致权限问题。更好的做法是配置 npm 的全局安装目录,或者使用 NVM (NVM 环境下全局安装通常不需要 sudo)。

    如果遇到全局安装权限问题,可以考虑修改 npm 的全局安装目录,使其位于用户拥有写权限的路径下。具体步骤可以参考 npm 官方文档或其他教程,大致包括:
    1. 配置 npm 全局安装前缀:npm config set prefix '~/.npm-global'
    2. 创建该目录:mkdir ~/.npm-global
    3. 将该目录添加到 PATH 环境变量:export PATH=~/.npm-global/bin:$PATH 添加到 shell 配置文件中并 source

  • 更新 npm:
    npm 自身也可以通过 npm 来更新到最新版本:
    bash
    npm install -g npm@latest

    注意: 如果您在使用 NVM,通常不需要手动更新 npm,因为它随 Node.js 版本一起安装,切换 Node.js 版本会自动使用该版本配套的 npm。如果您确实想更新某个 NVM 版本下的 npm,请确保您已经 nvm use 到该版本,然后执行 npm install -g npm@latest (在此情况下,通常不需要 sudo)。

常见问题与故障排除

  • node: command not foundnpm: command not found:

    • 原因: Node.js 或 npm 的安装目录没有在系统的 PATH 环境变量中。
    • 解决方案:
      • 如果您使用 NVM 安装,请确保您已经 source 了 NVM 的初始化脚本,并且已经使用 nvm use 激活了一个 Node.js 版本。
      • 如果您从源码安装到非标准目录,请确保将该目录的 bin 子目录添加到了 PATH 环境变量中,并且您的 shell 会话已经加载了新的环境变量。
      • 如果您使用 yum/dnf 或 NodeSource 仓库安装,它们通常会将 Node.js 安装到 /usr/bin/usr/local/bin,这些目录通常已经在 PATH 中。如果仍然找不到命令,可能是安装过程本身出了问题,可以尝试重新安装。
  • Error: EACCES: permission denied (进行 npm install -g 时):

    • 原因: 您尝试在没有写入权限的系统目录下进行全局安装。
    • 解决方案:
      • 推荐: 使用 NVM。在 NVM 环境下,全局包安装在用户目录下,不需要 sudo
      • 次选: 更改 npm 的全局安装目录到您有写入权限的路径,并将其添加到 PATH 环境变量(如前面“基本使用 npm”部分所述)。
      • 不推荐但有时可行: 使用 sudo npm install -g <package>。这样做虽然可以安装,但会留下 root 拥有的文件,可能导致后续使用普通用户管理这些包时出现问题,应尽量避免。
  • 版本冲突或使用了错误的 Node.js 版本:

    • 原因: 系统中安装了多个 Node.js 版本,或者 PATH 环境变量顺序导致使用了非预期的版本。
    • 解决方案:
      • 最佳: 使用 NVM。NVM 专门设计用于解决多版本问题,通过 nvm use 可以轻松切换。
      • 如果您没有使用 NVM,检查您的 PATH 环境变量,确保您想要使用的 Node.js 版本所在的目录在 PATH 中靠前的位置。或者考虑卸载不需要的旧版本。
  • NodeSource setup 脚本下载失败或执行报错:

    • 原因: 网络问题、防火墙、或者 NodeSource URL 发生变化。
    • 解决方案:
      • 检查您的网络连接。
      • 确认防火墙没有阻止对 NodeSource 服务器的访问。
      • 访问 NodeSource 官方网站,获取最新的安装脚本 URL 和命令。

总结与选择建议

我们详细探讨了在 CentOS 系统上安装 Node.js 的四种主要方法:

  1. 使用 CentOS/EPEL 仓库: 最简单,但版本通常过旧,不适合现代应用。
  2. 使用 NodeSource 仓库: 推荐用于生产环境和大多数通用场景。提供最新 LTS 和 Current 版本,安装和更新方便可靠。
  3. 使用 NVM: 推荐用于开发环境和需要管理多个 Node.js 版本的用户。提供极高的灵活性和版本隔离,不需要 root 权限安装版本和全局包。
  4. 从源码编译: 最灵活,但过程复杂,维护困难,仅在有特殊需求时考虑。

对于大多数用户来说,选择 NodeSource 仓库或 NVM 是最明智的决定。

  • 如果您是系统管理员,需要在服务器上部署生产应用,并且只需要安装一个稳定、最新的 LTS 版本 Node.js,那么使用 NodeSource 仓库是最高效且推荐的方式。
  • 如果您是开发者,需要在不同的项目中使用不同版本的 Node.js,或者希望在不干扰系统环境的情况下自由切换 Node.js 版本并安装全局工具,那么使用 NVM 将是您的最佳选择。

安装 Node.js 仅仅是开始。一旦环境搭建好,您就可以开始构建、运行和部署各种 Node.js 应用了。熟练掌握 npm 的使用对于管理项目依赖和构建流程至关重要。

希望这篇详细的文章能帮助您顺利地在 CentOS 系统上安装并开始使用 Node.js!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部