2024-08-07

在CentOS 7环境下安装MySQL的步骤如下:

  1. 添加MySQL官方的Yum仓库



sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
  1. 安装MySQL服务器



sudo yum install mysql-community-server
  1. 启动MySQL服务



sudo systemctl start mysqld
  1. 查找临时生成的root密码



sudo grep 'temporary password' /var/log/mysqld.log
  1. 安全配置MySQL(设置root密码,移除匿名用户,禁止root远程登录等)



sudo mysql_secure_installation
  1. 开机自启MySQL服务



sudo systemctl enable mysqld
  1. 登录MySQL(使用第4步中的临时密码)



mysql -u root -p
  1. 更新密码(根据提示操作,设置你的密码)



ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';

以上步骤会安装MySQL 8.0,如果需要安装其他版本,请下载对应版本的Yum Repository包。

2024-08-07

CentOS 使用 yum 时可能遇到的常见错误和解决方法如下:

  1. Error: Cannot find a valid baseurl for repo: base

    • 原因:网络连接问题或者 YUM 仓库配置错误。
    • 解决方法:检查网络连接,确认 /etc/yum.repos.d/CentOS-Base.repo 文件中的仓库 URL 是否正确。
  2. GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

    • 原因:GPG 密钥文件丢失。
    • 解决方法:重新导入密钥。执行 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-*.
  3. Problem: package-name conflicts between attempted installs

    • 原因:尝试安装的软件包之间存在冲突。
    • 解决方法:检查冲突的软件包并解决依赖关系。
  4. No package package-name available

    • 原因:软件包不存在于配置的仓库中。
    • 解决方法:确认软件包名称正确,检查仓库配置是否包含所需的仓库。
  5. Error: rpmdb: BDB0113 Thread 136466451510656 failed to create a lock file on /var/lib/rpm/.rpm.lock

    • 原因:RPM 数据库被锁定。
    • 解决方法:删除锁定文件 rm -f /var/lib/rpm/.rpm.lock 并重新运行 yum 命令。
  6. Error: Failed to download metadata for repo 'repo-id'

    • 原因:无法从指定的仓库下载元数据。
    • 解决方法:检查网络连接,确认仓库的 URL 是否可达。
  7. Error: Failed to handle repo at /etc/yum.repos.d/repo-file.repo, skipping

    • 原因:仓库配置文件有错误。
    • 解决方法:检查 /etc/yum.repos.d/repo-file.repo 文件的语法错误,确保仓库配置正确。
  8. Error: Cannot find a valid baseurl for repo: epel

    • 原因:Extra Packages for Enterprise Linux (EPEL) 仓库配置错误或者 EPEL 仓库没有被启用。
    • 解决方法:安装并启用 EPEL 仓库,使用 yum install epel-release 命令。

这些是使用 CentOS 时可能遇到的一些常见 yum 错误及其解决方法。根据实际遇到的错误,选择相应的解决方案进行处理。

2024-08-07

在CentOS 7上安装PHP 7.4,你可以使用以下步骤:

  1. 启用 EPEL 和 Remi 仓库:



sudo yum install -y epel-release
sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
  1. 安装 Yum 工具来配置 Remi 仓库:



sudo yum install -y yum-utils
  1. 禁用默认的 PHP 仓库并启用 PHP 7.4 仓库:



sudo yum-config-manager --disable remi-php54
sudo yum-config-manager --enable remi-php74
  1. 安装 PHP 7.4:



sudo yum install -y php php-cli php-fpm php-common
  1. 启动 PHP-FPM 服务并设置开机自启:



sudo systemctl start php-fpm
sudo systemctl enable php-fpm
  1. 检查 PHP 版本确保安装成功:



php -v

这些步骤将在你的 CentOS 7 系统上安装 PHP 7.4 并启用 PHP-FPM。如果你需要额外的 PHP 模块,你可以使用 yum 来安装,例如:




sudo yum install -y php-mysqlnd php-opcache php-gd php-curl
2024-08-07

在CentOS 7上安装Node.js,可以采用以下步骤:

  1. 使用NodeSource仓库安装Node.js:



curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -
sudo yum install -y nodejs
  1. 验证安装是否成功:



node -v
npm -v

可能遇到的问题及解决方法:

  • 问题: 无法找到NodeSource仓库配置脚本。

    解决方法: 确保你的系统能够正常访问互联网,并且已经安装了curlbash

  • 问题: 在执行配置脚本时遇到权限问题。

    解决方法: 确保你以root用户或使用sudo执行命令。

  • 问题: 安装过程中出现依赖问题。

    解决方法: 运行sudo yum update更新系统,然后重试安装。

  • 问题: 安装的Node.js版本不是你需要的。

    解决方法: 修改setup_14.x中的版本号,以安装你需要的版本,例如setup_12.x安装Node.js 12版本。

确保在执行上述命令时,你的系统已经安装了yum包管理器,如果没有,可以通过sudo yum install yum来安装。

2024-08-04

'# CentOS下卸载node.js

一、背景与问题

在CentOS系统中,node.js的安装通常通过三种主要方式:使用nvm(Node Version Manager)管理版本、通过yum仓库安装、或手动编译源码。不同安装方式会导致node.js及其依赖的残留文件分布在不同的路径中,形成复杂的清理链路。

典型问题包括:

  • nvm安装的node.js残留的版本目录
  • yum安装的nodejs包残留的配置文件
  • 手动编译产生的二进制文件
  • 环境变量未更新导致的路径污染
  • npm全局模块的残留

对于生产环境系统,彻底卸载node.js需要同时处理这些残留点,避免潜在的权限问题和安全风险。

二、基本原理

1. nvm安装机制

nvm通过在~/.nvm/目录下管理多个node.js版本,每个版本包含完整的运行环境。其核心原理是通过shell脚本动态切换版本,通过npm的全局安装会污染系统路径。

2. yum安装机制

yum安装的nodejs包会将二进制文件安装到/usr/bin/,配置文件存放在/etc/profile.d/,并通过systemd管理服务。其卸载需要处理系统级配置。

3. 手动编译原理

手动编译的node.js会生成/usr/local/bin/node等二进制文件,其配置文件通常存放在/usr/local/lib/node_modules/。这种安装方式更接近底层,需要更谨慎的清理。

三、环境准备

确保系统已安装必要的工具:

# 安装基础开发工具
sudo yum install -y git make gcc-c++ python3

# 安装nvm(如已安装可跳过)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

四、核心实现

1. nvm安装的node.js卸载

代码示例1:查找nvm安装的node.js版本

# 查找所有nvm管理的版本
nvm ls --no-color

# 查找当前使用的版本
node -v

代码示例2:卸载特定版本的node.js

# 查找要卸载的版本
nvm ls --no-color | grep "v14.17.0"

# 卸载指定版本
nvm uninstall v14.17.0

关键点解释:

  • nvm ls命令会列出所有已安装的版本
  • uninstall命令会删除对应版本的目录和配置
  • 卸载后需手动清理~/.npmrc等残留配置

代码示例3:清理nvm残留

# 查找nvm安装路径
which nvm | grep -oP 'nvm.*\K[^/]*'

# 清理残留文件
rm -rf ~/.nvm

2. yum安装的node.js卸载

代码示例4:查看已安装的nodejs包

# 查看yum安装的nodejs包
yum list installed | grep nodejs

代码示例5:卸载nodejs包

# 卸载nodejs包
sudo yum remove -y nodejs

关键点解释:

  • 需同时卸载nodejs和nodejs-devel等依赖
  • 卸载后需手动清理/etc/profile.d/中的nodejs.sh
  • 检查/usr/bin路径下的node命令是否残留

3. 手动编译的node.js卸载

代码示例6:查找手动编译的安装路径

# 查找node二进制文件
which node

# 查找所有node相关文件
find /usr/local -name "node*"

代码示例7:清理手动编译残留

# 删除二进制文件
sudo rm -f /usr/local/bin/node /usr/local/bin/npm

# 删除配置文件
sudo rm -rf /usr/local/lib/node_modules

五、完整案例

案例:生产环境node.js卸载流程

场景描述:某电商平台在CentOS服务器上运行着node.js服务,需因安全审计要求彻底卸载node.js。

执行步骤

  1. 检查安装方式
# 检查nvm安装
which nvm | grep -q nvm && echo "nvm installed"

# 检查yum安装
yum list installed | grep -q nodejs && echo "yum installed"

# 检查手动编译
which node | grep -q /usr/local && echo "manual install"
  1. 执行卸载
# 处理nvm安装
if [ $? -eq 0 ]; then
  nvm ls --no-color | grep -q "v14.17.0" && nvm uninstall v14.17.0
fi

# 处理yum安装
if [ $? -eq 0 ]; then
  sudo yum remove -y nodejs nodejs-devel
fi

# 处理手动安装
if [ $? -eq 0 ]; then
  sudo rm -f /usr/local/bin/node /usr/local/bin/npm
  sudo rm -rf /usr/local/lib/node_modules
fi
  1. 清理残留配置
# 清理环境变量
sudo sed -i '/node/d' /etc/profile.d/nodejs.sh

# 清理npm缓存
sudo rm -rf ~/.npm

验证步骤

# 检查node是否存在
which node

# 检查npm是否存在
which npm

# 检查配置文件
ls /etc/profile.d/ | grep -v nodejs.sh

六、源码解析

nvm卸载原理

nvm的卸载核心在于删除版本目录和配置文件:

# nvm卸载核心逻辑(简化版)
function uninstall() {
  local version=$1
  local NVM_DIR=${NVM_DIR:-$HOME/.nvm}
  local VERSION_DIR="$NVM_DIR/versions/node/$version"
  
  # 删除版本目录
  rm -rf "$VERSION_DIR"
  
  # 清理环境变量
  sed -i "/$version/d" "$NVM_DIR/_init.sh"
}

yum卸载原理

yum卸载通过删除rpm包实现:

# yum卸载核心逻辑(简化版)
function remove_package() {
  local package=$1
  sudo rpm -e --nodeps "$package"
}

七、进阶使用

1. 系统级卸载

# 系统级卸载node.js
sudo yum remove -y nodejs nodejs-devel nodejs-openssl nodejs-icu

2. 清理npm缓存

# 清理npm缓存
npm cache clean --force

3. 检查残留文件

# 检查残留文件
find / -name "node*" -o -name "npm*" 2>/dev/null

八、性能与工程实践

1. 性能优化

  • 卸载后应清理npm缓存:npm cache clean --force
  • 删除冗余的node.js版本:nvm ls --no-color | grep -v latest | xargs nvm uninstall

2. 安全风险

  • 残留的npm配置文件可能包含敏感信息
  • 权限设置不当可能导致任意用户执行node命令
  • 未清理的环境变量可能引发路径污染

3. 权限处理

# 修复权限问题
sudo chown -R root:root /usr/local/bin
sudo chown -R root:root /usr/local/lib

九、常见问题与踩坑

1. 常见错误

错误1:卸载后仍能执行node命令

# 错误示例
which node
/usr/local/bin/node

解决办法

  • 检查环境变量:echo $PATH
  • 修复/etc/profile.d/中的配置文件

错误2:权限不足导致无法删除文件

# 错误示例
rm: cannot remove '/usr/local/bin/node': Permission denied

解决办法

  • 使用sudo执行:sudo rm -f /usr/local/bin/node
  • 调整文件权限:sudo chmod 755 /usr/local/bin

2. 常见坑

坑1:nvm卸载后未清理环境变量

# 错误示例
source ~/.bashrc
node -v
v14.17.0

修复方法

  • 手动删除~/.bashrc中的nvm配置
  • 重新加载环境变量:source ~/.bashrc

坑2:yum卸载后残留服务

# 错误示例
systemctl list-units | grep node

解决办法

  • 删除服务文件:sudo rm /etc/systemd/system/nodejs.service

十、最佳实践

1. 推荐方案

  • 使用nvm安装时,卸载后应彻底清理环境变量
  • yum安装时,建议同时卸载相关依赖包
  • 手动编译安装时,应记录所有安装路径

2. 实际应用场景

  • 开发环境:适合使用nvm多版本管理
  • 生产环境:建议使用yum安装并严格控制依赖
  • 紧急修复:可使用手动清理方式快速处理

3. 不推荐场景

  • 生产环境使用nvm:可能引入版本管理复杂度
  • 未检查残留文件:可能导致系统漏洞
  • 未处理权限问题:可能引发安全风险

十一、总结

在CentOS系统中卸载node.js需要根据安装方式采取不同的策略。nvm安装需要处理版本目录和环境变量,yum安装要清理系统级配置,手动编译则需删除所有相关文件。在实际应用中,需要结合具体场景选择合适的卸载方案,同时注意处理残留文件和权限问题。对于生产环境,建议采用严格的卸载流程,确保系统安全和稳定性。通过本文的深入分析,希望能帮助开发者更好地理解和处理node.js的卸载问题。