虚拟机与开发环境配置踩坑记录

虚拟机与开发环境配置踩坑记录

经常需要搭建各种开发环境,VMware虚拟机用得比较多。记录一下Windows虚拟机安装、Redis配置等踩过的坑。

VMware虚拟机配置

Windows 11虚拟机

Windows 11对硬件有最低要求,虚拟机配置要注意。

最低配置要求

  • 内存:4GB(建议8GB+)
  • 处理器:2核(建议4核)
  • 磁盘:64GB(建议100GB+)
  • 显卡:支持DirectX 12

VMware配置步骤

  1. 创建新虚拟机,选择Windows 11 x64
  2. 处理器:2个处理器,每个2核
  3. 内存:8GB (8192 MB)
  4. 硬盘:100GB,单个文件
  5. 网络:NAT模式

坑1:Windows 11安装卡网络

安装Windows 11时,如果没有网络连接,会卡在”糟糕,你已断开Internet连接”。

绕过方法

1
2
3
4
5
6
# 按 Shift + F10 打开CMD
# 输入以下命令
oobe\bypassnro

# 系统重启后选择"我没有Internet连接"
# 选择"继续执行受限设置"

坑2:虚拟机文件锁定

错误信息:

1
2
另一个程序已锁定文件的一部分,进程无法访问
Cannot open the disk. The file is locked.

原因:虚拟机未正常关闭,锁文件未清除。

解决方法

1
2
3
4
5
6
7
8
# 1. 关闭VMware
# 2. 打开虚拟机目录
# 3. 删除所有 .lck 文件夹和文件

# Windows命令行
cd "虚拟机目录"
del /s /q *.lck
rmdir /s /q *.lck

性能优化

内存优化

  • 分配物理内存的50-75%
  • 优先级:抓取的输入内容设”高”
  • 高级设置:禁用内存页面修整

磁盘优化

  • 定期进行碎片整理
  • 压缩磁盘
  • 删除不必要的快照
  • 虚拟机文件放SSD

Windows开发环境

Windows安装Redis

下载https://github.com/tporadowski/redis/releases

下载 .msi 安装包,运行安装程序。

配置文件

Windows版本包含两个配置文件:

  • redis.windows.conf - 手动启动配置
  • redis.windows-service.conf - 服务启动配置

常用命令

1
2
3
4
5
6
7
8
9
# 启动Redis服务器
redis-server.exe redis.windows.conf

# 连接客户端
redis-cli.exe

# 测试连接
PING
# 返回 PONG 表示正常

配置为Windows服务

1
2
3
4
5
6
7
# 安装服务(管理员权限)
redis-server --service-install redis.windows-service.conf --loglevel verbose

# 启动/停止/卸载
redis-server --service-start
redis-server --service-stop
redis-server --service-uninstall

常用配置项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 绑定IP
bind 127.0.0.1

# 端口
port 6379

# 密码认证(生产环境必需)
requirepass your_password

# 持久化
save 900 1
save 300 10
save 60 10000

# 内存限制
maxmemory 256mb
maxmemory-policy allkeys-lru

Node.js版本管理

Windows上推荐用nvm-windows管理Node.js版本。

安装https://github.com/coreybutler/nvm-windows/releases

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看已安装版本
nvm list

# 安装新版本
nvm install 14.21.3
nvm install 16.13.1
nvm install 18.12.1

# 切换版本
nvm use 16.13.1

# 查看当前版本
node -v
npm -v

配置国内镜像

编辑 C:\Users\用户名\AppData\Roaming\nvm\settings.txt

1
2
3
4
arch: 64
proxy: none
node_mirror: http://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/

Git代理配置

查看当前配置

1
2
git config --global --get-all http.proxy
git config --global --get-all https.proxy

配置代理

1
2
3
4
5
6
7
# 配置HTTP/HTTPS代理
git config --global http.proxy http://代理IP:端口
git config --global https.proxy http://代理IP:端口

# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

SSH代理配置

编辑 ~/.ssh/config

1
2
3
4
Host github.com
Hostname github.com
User git
ProxyCommand connect -S 代理IP:端口 %h %p

坑3:dl.google.com无法访问

Android开发中经常遇到dl.google.com无法访问。

解决方法

  1. 访问 https://site.ip138.com/dl.google.com/ 查询可用IP
  2. 修改Hosts文件 C:\Windows\System32\drivers\etc\hosts
1
2
108.160.166.137 dl.google.com
108.160.166.137 dl-ssl.google.com
  1. 刷新DNS缓存:
1
ipconfig /flushdns

Linux开发环境

查看CentOS版本

1
2
3
4
5
6
7
8
9
# 查看CentOS版本
cat /etc/redhat-release
# 输出:CentOS Linux release 7.9.2009 (Core)

# 详细系统信息
uname -a

# 发行版信息
cat /etc/os-release

坑4:CentOS 8源配置错误

错误信息:

1
2
Error: Failed to download metadata for repo 'AppStream'
Cannot prepare internal mirrorlist: No URLs in mirrorlist

原因:CentOS 8已于2021年12月31日停止维护,官方源已不可用。

解决方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1. 进入源目录
cd /etc/yum.repos.d/

# 2. 备份原有配置
sudo mkdir backup
sudo mv *.repo backup/

# 3. 切换到阿里云镜像
sudo curl -o CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

# 4. 更新缓存
sudo yum clean all
sudo yum makecache

# 5. 测试
sudo yum update -y

进程内存监控

1
2
3
4
5
6
7
8
9
10
11
12
13
# 查看进程内存占用(按实际内存排序)
ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' --sort=-rsz | head -20

# 参数说明:
# pid: 进程ID
# comm: 命令名
# args: 完整命令
# pcpu: CPU使用率
# rsz: 实际内存占用(KB)
# vsz: 虚拟内存占用(KB)

# 查看特定端口连接数
netstat -nat | grep ESTABLISHED | grep -i "端口号" | wc -l

防火墙配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 启动防火墙
sudo systemctl start firewalld
sudo systemctl enable firewalld

# 查看状态
sudo systemctl status firewalld
sudo firewall-cmd --list-all

# 开放端口
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

# 移除端口
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload

# 临时关闭(测试用)
sudo systemctl stop firewalld

Docker容器环境

Docker安装

1
2
3
4
5
6
7
8
9
# CentOS安装Docker
sudo yum install -y docker

# 启动Docker
sudo systemctl start docker
sudo systemctl enable docker

# 验证
sudo docker --version

Redis容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 拉取镜像
docker pull redis:latest

# 运行容器
docker run -d \
--name redis \
-p 6379:6379 \
-v /data/redis:/data \
redis:latest \
redis-server --appendonly yes

# 查看状态
docker ps

# 连接Redis
docker exec -it redis redis-cli

MongoDB容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 拉取镜像
docker pull mongo:6.0

# 运行容器
docker run -d \
--name mongodb \
-p 27017:27017 \
-v /data/mongo:/data/db \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=password \
mongo:6.0

# 查看日志
docker logs mongodb

虚拟机备份策略

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
# 虚拟机备份脚本

VM_DIR="/vmware"
BACKUP_DIR="/backup/vmware"
DATE=$(date +%Y%m%d)

# 关闭虚拟机
vmrun stop $VM_DIR/开发环境/开发环境.vmx

# 备份虚拟机
tar -czf $BACKUP_DIR/dev-env-$DATE.tar.gz $VM_DIR/开发环境/

# 保留最近5个备份
ls -t $BACKUP_DIR/*.tar.gz | tail -n +6 | xargs rm -f

echo "Backup completed: dev-env-$DATE.tar.gz"

总结

开发环境配置经常遇到各种坑,记录一下最常见的:

  1. Windows 11安装要绕过网络检查,用oobe\bypassnro
  2. 虚拟机文件锁定就删除.lck文件
  3. CentOS 8官方源已挂,要换阿里云vault源
  4. dl.google.com被墙,改hosts解决
  5. Redis Windows版配置服务时注意区分conf文件
  6. nvm-windows配置国内镜像加速下载

建议虚拟机做好快照管理,关键节点备份,免得环境崩了从头再来。