minio配置自启动(windows),环境配置
需要获取完整包下载地址:
链接: https://pan.baidu.com/s/1heVB_JVxgChR4GcL1_iklw?pwd=tyiv 提取码: tyiv
通过 PowerShell 启动脚本读取 minio.env,再用 NSSM 注册 Windows 服务。
最终目录
D:\minio\
├── bin\
│ ├── minio.exe
│ ├── mc.exe
│ └── nssm.exe
├── certs\
│ ├── public.crt
│ └── private.key
├── config\
│ ├── minio.env
├── data\
├── license\
│ └── minio.license
└── logs\
└── start-minio.ps1
- 本说明以D盘为例子,需要更换个位置的自行更改。
- 如果使用社区版且不需要许可证,可以不放
minio.license。- minio\bin\mc.exe 可以不需要,这个是客户端工具。
创建 minio.env
创建:
D:\minio\config\minio.env
内容如下:
MINIO_ROOT_USER=minio-root-admin
MINIO_ROOT_PASSWORD=替换成你的32位随机密码
MINIO_VOLUMES=D:\minio\data
MINIO_ADDRESS=:9000
MINIO_CONSOLE_ADDRESS=:9001
MINIO_CERTS_DIR=D:\minio\certs
MINIO_SERVER_URL=https://s3.example.com
MINIO_BROWSER_REDIRECT_URL=https://s3-console.example.com
MINIO_LICENSE=D:\minio\license\minio.license
注意:
- 等号左右不要留空格。
- 不要给值加反引号。
- 如果没有许可证要求,删除最后一行。
- 域名替换成你的实际域名。
- certs证书换成自己的证书。
创建启动脚本
创建:
D:\minio\start-minio.ps1
写入:
$ErrorActionPreference = 'Stop'
$MinioExe = 'D:\minio\bin\minio.exe'
$EnvFile = 'D:\minio\config\minio.env'
if (-not (Test-Path $MinioExe)) {
throw "找不到 MinIO 程序:$MinioExe"
}
if (-not (Test-Path $EnvFile)) {
throw "找不到配置文件:$EnvFile"
}
# 读取 minio.env,将变量加载到当前进程
Get-Content $EnvFile -Encoding UTF8 |
ForEach-Object {
$line = $_.Trim()
# 忽略空行和注释
if (-not $line -or $line.StartsWith('#')) {
return
}
if ($line -notmatch '=') {
throw "无效的配置行:$line"
}
$name, $value = $line -split '=', 2
$name = $name.Trim()
$value = $value.Trim()
[Environment]::SetEnvironmentVariable(
$name,
$value,
[EnvironmentVariableTarget]::Process
)
}
if (-not $env:MINIO_ROOT_USER) {
throw '未配置 MINIO_ROOT_USER'
}
if (-not $env:MINIO_ROOT_PASSWORD) {
throw '未配置 MINIO_ROOT_PASSWORD'
}
if (-not $env:MINIO_VOLUMES) {
throw '未配置 MINIO_VOLUMES'
}
$Arguments = @(
'server'
$env:MINIO_VOLUMES
'--address'
$env:MINIO_ADDRESS
'--console-address'
$env:MINIO_CONSOLE_ADDRESS
)
if ($env:MINIO_CERTS_DIR) {
$Arguments += @(
'--certs-dir'
$env:MINIO_CERTS_DIR
)
}
# 仅 AIStor 等需要许可证的版本使用
if ($env:MINIO_LICENSE) {
if (-not (Test-Path $env:MINIO_LICENSE)) {
throw "找不到许可证:$($env:MINIO_LICENSE)"
}
$Arguments += @(
'--license'
$env:MINIO_LICENSE
)
}
& $MinioExe @Arguments
exit $LASTEXITCODE
如果你的 MinIO 版本不支持 --license 参数,删除 minio.env 中的:
MINIO_LICENSE=D:\minio\license\minio.license
脚本就不会传递许可证参数。
手动测试
以管理员身份打开 PowerShell:
powershell.exe -NoProfile -ExecutionPolicy Bypass `
-File 'D:\minio\start-minio.ps1'
成功后通常可以访问:
S3 API:https://服务器地址:9000
管理控制台:https://服务器地址:9001
按 Ctrl+C 停止测试。
如果启动失败,先直接检查版本及参数:
D:\minio\bin\minio.exe --version
D:\minio\bin\minio.exe server --help
注册 Windows 服务
将 NSSM 的 nssm.exe 放到:
D:\minio\bin\nssm.exe
然后用管理员 PowerShell 执行:
$Nssm = 'D:\minio\bin\nssm.exe'
$PowerShell = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
& $Nssm install MinIO `
$PowerShell `
'-NoProfile -NonInteractive -ExecutionPolicy Bypass -File "D:\minio\start-minio.ps1"'
设置工作目录:
& $Nssm set MinIO AppDirectory 'D:\minio'
设置标准输出和错误日志:
& $Nssm set MinIO AppStdout 'D:\minio\logs\minio-stdout.log'
& $Nssm set MinIO AppStderr 'D:\minio\logs\minio-stderr.log'
开启日志轮转,单个日志最大约 100 MB:
& $Nssm set MinIO AppRotateFiles 1
& $Nssm set MinIO AppRotateOnline 1
& $Nssm set MinIO AppRotateBytes 104857600
设置服务自动启动及异常重启:
& $Nssm set MinIO Start SERVICE_AUTO_START
& $Nssm set MinIO AppExit Default Restart
& $Nssm set MinIO AppRestartDelay 5000
启动服务:
Start-Service MinIO
验证服务
查看状态:
Get-Service MinIO
正常结果应为:
Status Name DisplayName
------ ---- -----------
Running MinIO MinIO
查看监听端口:
Get-NetTCPConnection -State Listen |
Where-Object LocalPort -in 9000, 9001
测试健康检查:
Invoke-WebRequest `
'https://127.0.0.1:9000/minio/health/live' `
-SkipCertificateCheck
如果当前 Windows PowerShell 不支持 -SkipCertificateCheck,可以使用:
curl.exe -k https://127.0.0.1:9000/minio/health/live
服务管理命令
Start-Service MinIO
Stop-Service MinIO
Restart-Service MinIO
Get-Service MinIO
修改 minio.env 后重启即可:
Restart-Service MinIO
查看日志:
Get-Content 'D:\minio\logs\minio-stdout.log' -Tail 100
Get-Content 'D:\minio\logs\minio-stderr.log' -Tail 100
实时查看:
Get-Content 'D:\minio\logs\minio-stdout.log' -Tail 50 -Wait
文件权限
minio.env 包含管理员密码,建议限制访问:
icacls 'D:\minio\config\minio.env' /inheritance:r
icacls 'D:\minio\config\minio.env' /grant:r `
'Administrators:F' `
'SYSTEM:F'
保护私钥:
icacls 'D:\minio\certs\private.key' /inheritance:r
icacls 'D:\minio\certs\private.key' /grant:r `
'Administrators:F' `
'SYSTEM:F'
如果以后将服务改为专用账户运行,还需要给该账户授予:
D:\minio\bin:读取和执行D:\minio\config:读取D:\minio\certs:读取D:\minio\data:修改D:\minio\logs:修改
删除服务
如果需要重新注册:
Stop-Service MinIO -ErrorAction SilentlyContinue
D:\minio\bin\nssm.exe remove MinIO confirm
这样配置后,MinIO 会读取 D:\minio\config\minio.env 启动,并随 Windows 开机自动启动,异常退出后约 5 秒自动重启。
勇者无惧,强者无敌。


浙公网安备 33010602011771号