Windows 开发环境配置 + 软件配置。

一、环境配置

Windows 的环境变量配置比较简单,它是以键值对(key-value)的方式配置的。

在 Windows 系统中,有两种变量:用户变量和系统变量。

  • 用户变量:只有当前登录用户能可以使用的变量,类似于 Linux 系统中用户目录下的 .bashrc 文件;

  • 系统变量:对所有用户生效、所有用户可以使用的变量,类似于 Linux 系统中的 /etc/profile 文件;

本文都以配置 系统变量 为例,但是配置方式不限,配置的 value 路径要替换自己本机的安装路径。Windows 配置变量一般有两种方式:

  1. 直接在 Path 里编辑添加软件的执行文件所在的目录(一般是软件的 bin 目录)。
  2. 新建一个变量,设置变量名称(一般随便起,部分有约定,比如 JAVA_HOME,很多需要 java 环境的软件默认查询 JAVA_HOME 变量名)和路径(安装软件的根目录)的 key-value,然后在 Path 中引用 %key%

本文使用命令行测试时,工具可以是 PowerShell(PS)、cmd、Git Bash(推荐)、cmder 等。为了防止出错,最好使用 管理员身份 运行这些工具。

1. JDK

第一个配置附带了截图,后面的就不带了 😉,只是帮助理解一下上面的第二种配置说明。第一种是比较简单的,直接把软件执行程序路径添加在 Path 中。

key value
JAVA_HOME D:\software\java
CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

Path 配置 %JAVA_HOME%\bin

命令行测试:java -version

Tip: jdk1.5 以后 CLASSPATH 可以不用再进行设置;

2. Maven

Maven 官网下载特别慢,甚至打不开,可以在 https://archive.apache.org/dist/maven/maven-3/ 下载。

key value
M2_HOME D:\develop\software\maven-3.9.8

Path: %M2_HOME%\bin

命令行测试:mvn -version

配置 kuku 大佬的 镜像源

.../maven-3.9.8/conf/setting.xml
1
2
3
4
5
6
<mirror>
<id>nexus-kuku</id>
<mirrorOf>*</mirrorOf>
<name>Nexus kuku</name>
<url>https://nexus.kuku.me/repository/maven-public/</url>
</mirror>

3. Gradle

Gradle 推荐使用最新版的 IDEA(2023.3.x+),能够使得本地的 Gradle 的作用发挥出来。否则还是推荐配置 GRADLE_USER_HOME 环境变量来定义 Gradle 下载依赖和不同版本的路径,避免使用默认 C 盘的目录。

下载 后解压。配置环境变量:

key value
GRADLE_HOME D:\develop\software\gradle-8.8

PATH: %GRADLE_HOME%\bin

命令行测试:gradle -V

配置下载源,以下脚本来自 B 站霍老师的视频,且仅在 Gradle Version > 6.8 时可用:

.../gradle-8.8/init.d/init.gradle.kts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
fun RepositoryHandler.enableMirror() {
all {
if (this is MavenArtifactRepository) {
val originUrl = this.url.toString().removeSuffix("/")
urlMappings[originUrl]?.let {
logger.lifecycle("Repository[$url] is mirrored to $it")
this.setUrl(it)
}
}
}
}

val urlMappings = mapOf(
"https://repo.maven.apache.org/maven2" to "https://mirrors.cloud.tencent.com/nexus/repository/maven-public/",
"https://dl.google.com/dl/android/maven2" to "https://mirrors.cloud.tencent.com/nexus/repository/maven-public/",
"https://plugins.gradle.org/m2" to "https://mirrors.cloud.tencent.com/nexus/repository/gradle-plugins/"
)

gradle.allprojects {
buildscript {
repositories.enableMirror()
}
repositories.enableMirror()
}

gradle.beforeSettings {
pluginManagement.repositories.enableMirror()
dependencyResolutionManagement.repositories.enableMirror()
}
  • gradle 下载源查找顺序
1
2
3
4
5
6
7
8
9
10
11
12
# 排列顺序即加载顺序 * 代表可以为任意名称
~/.gradle/init.gradle
~/.gradle/init.d/*.gradle
GRADLE_HOME/init.d/*.gradle
GRADLE_USER_HOME/init.gradle
GRADLE_USER_HOME/init.d/*.gradle

# Gradle 查找依赖的顺序
# M2_HOME 是 Maven 的配置
~/.m2/settings.xml
M2_HOME/conf/settings.xml
~/.m2/repository

GRADLE_HOME 环境变量是配置的本地安装的 Gradle 软件目录。
若不配置 GRADLE_USER_HOME,默认位置为 ~/.gradle

4. MySQL8

使用安装文件(exe 或者 msi)安装一般没有什么问题,安装过程中会提示将安装路径加入环境变量。

这里只介绍使用 压缩包 的方式。

key value
MYSQL_HOME D:\software\MySQL8.0.36

Path: %MYSQL_HOME%\bin

命令行运行以下命令完成初始化:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# service-name 自己命名,如果不写默认为 mysql,只安装一个版本使用的话可以不指定
# 在安装多个不同版本 MySQL 的时候很有用
mysqld --install [service-name]
# 移除 MySQL 服务
mysqld --remove [service-name]

# 下面的命令二选一:分别是 无密码版 和 带密码版
# 使用不安全的初始化(即不生成初始密码)
mysqld --initialize-insecure --console
# 如果需要生成初始化密码,则使用以下命令。--console 选项把生成的密码打印到控制台(需要查看密码保存便于第一次登录)
mysqld --initialize --console

# 启动 MySQL 服务
net start [service-name]

# 开启远程访问
# 进入 MySQL bash
mysql -u root -p
use mysql;
update user set host = '%' where user = 'root' and host='localhost';
grant all privileges on *.* to 'root'@'%' with grant option;
# 刷新缓存
FLUSH PRIVILEGES;

TIP:安装多个不同 MySQL 版本的时候,需要先 新建/编辑 my.ini 文件先修改端口号再初始化(即生成 data 目录),避免端口冲突。

忘记密码

如果忘记了 root 用户的密码,尝试使用以下方式:

修改 MySQL /etc/my.cnf 配置文件:

1
2
3
4
...
[mysqld]
skip-grant-tables
...

进入 MySQL bash:

1
2
3
4
5
mysql -uroot

UPDATE mysql.user SET authentication_string=null WHERE user='root';
FLUSH PRIVILEGES;
exit;

然后再次进入 MySQL 终端:

1
2
3
mysql -u root

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';

修改完成后打开 /etc/my.cnf 文件移除 skip-grant-tables 配置,尝试使用新密码登录。

5. MariaDB

key value
MARIA_HOME D:\software\mariadb-11.0.2

Path: %MARIA_HOME%\bin

命令行运行以下命令完成初始化:

D:\software\mariadb-11.0.2\bin
1
2
3
4
5
6
# 名称自己起
mysqld.exe --install [service-name]
# 初始化数据库,生成 data 文件夹以及配置信息
mysql_install_db
# 启动
net start [service-name](上面安装时起的名称)

配置文件(如果本机安装之前还有 MySQL 数据库,推荐解压后先修改配置文件,更改默认端口):

.../mariadb-11.0.2/data/my.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[mysqld]
; 文件目录
datadir=D:/software/mariadb-11.0.2/data
port = 3333
; 字符集设置
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
skip-character-set-client-handshake

[client]
plugin-dir=D:/software/mariadb-11.0.2/lib/plugin
; 客户端连接端口
port=3333

[mariadb]
feedback=off
; 指定端口
port = 3333
; 默认创建数据库的类型
default-storage-engine = InnoDB
; 最大连接数
max_connections = 100
; 慢查询
slow_query_log_file = slow.log
slow_query_log = 0
log_queries_not_using_indexes = 1
long_query_time = 0.5
min_examined_row_limit = 100

6. PostgreSQL

Path:D:\software\pgsql\bin

命令行运行以下命令完成初始化(先创建 data 目录):

D:\software\pgsql\bin
1
2
3
4
5
6
7
8
9
10
11
# 初始化 initdb --help 查看帮助信息
# -D data 指定初始化的数据库目录(此处为当前目录的data文件夹)
# -E utf8 数据库编码格式
# -U postgres 超级管理员名称
# -A 使用密码授权
initdb.exe -D "D:\software\develop\pgsql\data" -E UTF8 -U postgres -W
# 注册服务 -N 指定服务名称
pg_ctl register -N "postgresql" -D "D:\software\develop\pgsql\data"

# 启动
pg_ctl -D "D:\software\develop\pgsql\data" -l logfile start
  • 推荐连接使用 Dbeaver、Dbgate 等开源数据库管理工具;
  • pgsql 的配置文件在 data 文件夹中 postgres.conf

7. Tomcat

Tomcat 有安装版和压缩包两种,如果是安装版,需要先配置好jdk。

key value
CATALINA_HOME D:\software\tomcat8.5

Path:%CATALINA_HOME%\bin

  • Tomcat启动的日志输出的默认字符集编码是 utf-8,但是 window 的 shell 是 gbk 编码,所以如果想要在 window 下正常输出,就要修改 Tomcat 的日志打印编码。
  • 编辑tomcat安装路径下的 conf/logging.properties 文件,设置 java.util.logging.ConsoleHandler.encoding = GBK,保存重启即可。

8. NodeJs

Windows 中安装的 nodejs.msi 中自带了 npm,而 Linux 需要单独安装(使用包管理器的时候)。另外,Windows 中安装后需要修改安装目录的权限,不然只有管理员才能操作该目录,对于当前用户是非常不方便的。

在安装目录即 nodejs 文件夹,单击右键,选择属性,点击 “安全” 标签,选择 “User” 用户,点击编辑,把权限都勾上,保存退出。

命令行做一些配置:

1
2
3
4
5
6
7
8
# 配置腾讯镜像源
npm config set registry https://mirrors.cloud.tencent.com/npm/
# 设置全局安装目录(需要先手动创建)
npm config set prefix "D:\software\develop\nodejs\node_global"
# 设置全局缓存目录(需要先手动创建)
npm config set cache "D:\software\develop\nodejs\node_cache"
# 查看修改是否成功
npm config list

Path:D:\software\develop\nodejs\node_global

  • 配置 Path 是为了使用 全局安装 的工具(例如 yarn、pnpm 等)。
  • 临时使用阿里镜像源:npm install --registry=https://registry.npmmirror.com

9. Jetty

下载后解压,之后进入 jetty 的安装目录。运行以下命令($JETTY_HOME 是安装目录):

1
2
3
4
5
6
7
8
9
10
# 为当前基目录添加标准文件及文件夹
java -jar $JETTY_HOME/start.jar --add-to-startd=http,deploy
# 创建demo演示,不然启动后是404页面
java -jar $JETTY_HOME/start.jar --add-module=demo
# 启动jetty服务
java -jar $JETTY_HOME/start.jar

# 如果不想用8080,可以使用以下命令在启动时动态修改
# 也可以修改配置文件,使其永久生效
java -jar $JETTY_HOME/start.jar jetty.http.port=9999

之后就可以在浏览器使用 localhost:9999 进行访问了。

10. Rust

创建 ~/.cargo/config.toml 文件,编辑填写以下内容,保存。

~/.cargo/config.toml
1
2
3
4
5
6
7
8
9
10
11
[source.crates-io]
replace-with = 'ustc'

[source.ustc]
registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"

# [source.crates-io]
# replace-with = 'mirror'

[source.bfsu]
registry = "sparse+https://mirrors.bfsu.edu.cn/crates.io-index/"
  • Rust 的很多源只负责更新索引,实际下载 crates 的时候还是很慢,实测使用 中科大 的镜像源无论是更新索引还是下载 crates 都很快。
  • 如果正在使用的 Rust 版本低于 1.38,则需要修改的文件为 config 文件,而不是 config.toml 文件。

11. Python

1
2
3
# 设置镜像源
python -m pip install -i https://mirrors.bfsu.edu.cn/pypi/web/simple --upgrade pip
pip config set global.index-url https://mirrors.bfsu.edu.cn/pypi/web/simple

二、软件

1. VsCode

自 VsCode 1.7x 版本之后 exe 安装文件也可以选择安装路径了,并且国内下载速度也很快,但是插件默认依然在 C 盘中,当然你可以打一个软连接映射,或者使用便携版本来自定义插件的安装位置。

2. Vivaldi

Vivaldi 官网在国内是访问不到的,可以在 hosts 文件中添加以下内容再次访问:

C:\Windows\System32\drivers\etc\hosts
1
172.67.21.227 vivaldi.com www.vivialdi.com update.vivaldi.com downloads.vivaldi.com help.vivaldi.com bifrost.vivaldi.com mimir.vivaldi.com

三、插件

插件在精不在多。

1. 油猴插件

  1. 网盘有效性检查
  2. 网盘直链下载助手(需要关注公众号,目前好用的不多了)
  3. Github 增强 - 高速下载
  4. 【增强版】CSDN/知乎/哔哩哔哩/简书免登录去除弹窗广告

2. Edge

  1. 可可翻译
  2. JSON Beautifier & Editor
  3. AdGuard
  4. Tampermonkey BETA

3. Firefox

  1. 可可翻译
  2. TWP
  3. Ads
  4. Aria2 Download Manager Integration 配合 motrix 或其它支持 rpc 的下载工具使用

四、其它

1. 命令操作

目标 操作
控制面板 win + r 输入 appwiz.cpl 回车
系统变量 win + r 输入 sysdm.cpl 回车
磁盘管理 win + r 输入 diskmgmt.msc 回车
服务 win + r 输入 services.msc 回车
电脑信息 win + r 输入 winver 回车

2、删除开机多余启动项

Win + R,输入 `msconfig`,点击确定,选择 “引导” 标签,选择 **非当前OS** 记录,点击删除并应用,按照提示重启即可。

管理员身份命令行运行:

1
2
3
4
# 查看启动项
efibootmgr
# 删除对应的项
efibootmgr -b 0001(序号) -B

3. PowerShell 运行脚本报错

管理员身份命令行运行

1
2
# 输入以下命令,选择 Y
set-executionpolicy RemoteSigned

PS 有四种策略:

策略 说明
Restricted 禁止运行任何脚本配置文件(默认)
AllSigned 可以运行发布签名的脚本和配置文件,包括本地计算机上编写的脚本
RemoteSigned 要求从网络上下载的脚本和配置文件由可信者发布签名,不要求本地计算机上编写的脚本进行签名
Unrestricted 可以运行未签名的脚本

4. Vmware 虚拟机配置双网卡

虽然 Win 下的 WSL 广受好评,但是浪子懒得折腾,不折腾使用还是不太方便。还是比较喜欢使用 Vmware 创建 Linux 环境,虽然它很吃内存。。。但也没办法 😌

使用 VMWare 时,推荐创建的虚拟机配置双网卡,默认的使用 NAT 模式,新添加一个使用 仅主机 模式,然后进行修改配置。这样就算以后连接无数个无线网,电脑依然能上网,但是使用 SSH 远程连接时依然不用修改 Linux 的网络配置文件。实现了一次配置,永久使用的效果。配置也很简单:

在 VMWare 里创建一个虚拟机后,打开改虚拟机的设置,硬件下方的”添加“,然后在弹出的列表里选择”网络适配器“,之后点击新添加的网络适配器,选择”仅主机“。

然后打开网络适配器修改 VMWare Network Adapter VMnet1 的 IP 为简单的地址,Linux 里的网络配置文件的 IP 地址不要和这个一样,因为 VM1 是本机和 Linux 虚拟机通信的 IP 地址,不能一样,推荐 VM1 10.0.0.1,Linux 配置为 10.0.0.2,简单好记。

注意: 如果是新建的虚拟机,在安装之前按照以上方法配置,安装后查看网络配置文件时或许会有两个不同的文件,比如:ens33,ens34。如果是之前已经安装过的单网卡想要配置双网卡,可以把已经存在网络配置文件复制一份,修改文件里面的内容即可。如果新建的虚拟机也是只有一个配置文件,也可以直接复制原有的文件进行修改。

另外,第一次安装后网络服务是正常的,之后换了一个无线网连接就出现了问题,可能是因为 NetworkManager 的问题,可以关闭此服务。然后重启网络。内网相通,但使用 xshell 等终端工具连不上虚拟机也连不上外网也可以尝试使用这个方法。

1
2
3
4
5
6
7
8
# 关闭服务
systemctl stop NetworkManager
# 禁止开机启动
systemctl disable NetworkManager
# chkconfig NetworkManager off

# 重启网络
systemctl restart network

CentOS

  1. 用的好好的虚拟机,之前内网都通,后面使用的时候使用 SSH 工具连不上虚拟机了,并且虚拟机也连不上外网
1
2
3
4
5
# 1.停止并关闭 networkmanager 服务
systemctl stop NetworkManager
systemctl disable NetworkManager
# 2.重启网络
systemctl restart network

参考原博客地址

其它问题

使用 VMWare 虚拟机时,如果本机开启着 VPN 时,使用其它远程工具是无法连接到本地虚拟机的,必须退出 VPN 的登录后才可以再次连接新的会话。


本站由 江湖浪子 使用 Stellar 1.29.1 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。