// startServer starts an s3 compatible cloud storage server func startServer(conf fsConfig) *probe.Error { minioAPI := getNewAPI(conf.Path, conf.Anonymous) apiHandler := getAPIHandler(conf.Anonymous, minioAPI) apiServer, err := configureAPIServer(conf, apiHandler) if err != nil { return err.Trace() } if err := minhttp.ListenAndServe(apiServer); err != nil { return err.Trace() } return nil }
// startServer starts an s3 compatible cloud storage server func startServer(conf minioConfig) *probe.Error { minioAPI := getNewAPI() apiHandler := getAPIHandler(minioAPI) apiServer, err := configureAPIServer(conf, apiHandler) if err != nil { return err.Trace() } rpcServer, err := configureServerRPC(conf, getServerRPCHandler()) // start ticket master go startTM(minioAPI) if err := minhttp.ListenAndServe(apiServer, rpcServer); err != nil { return err.Trace() } return nil }
func serverMain(c *cli.Context) { checkServerSyntax(c) conf, err := initServer() fatalIf(err.Trace(), "Failed to read config for minio.", nil) certFile := c.GlobalString("cert") keyFile := c.GlobalString("key") if (certFile != "" && keyFile == "") || (certFile == "" && keyFile != "") { fatalIf(probe.NewError(errInvalidArgument), "Both certificate and key are required to enable https.", nil) } minFreeDisk, err := parsePercentToInt(c.String("min-free-disk"), 64) fatalIf(err.Trace(c.String("min-free-disk")), "Invalid minium free disk size "+c.String("min-free-disk")+" passed.", nil) path := strings.TrimSpace(c.Args().Last()) // Last argument is always path if _, err := os.Stat(path); err != nil { fatalIf(probe.NewError(err), "Unable to validate the path", nil) } tls := (certFile != "" && keyFile != "") serverConfig := cloudServerConfig{ Address: c.GlobalString("address"), AccessLog: c.GlobalBool("enable-accesslog"), AccessKeyID: conf.Credentials.AccessKeyID, SecretAccessKey: conf.Credentials.SecretAccessKey, Path: path, MinFreeDisk: minFreeDisk, TLS: tls, CertFile: certFile, KeyFile: keyFile, } // configure API server. apiServer, err := configureAPIServer(serverConfig) errorIf(err.Trace(), "Failed to configure API server.", nil) Println("\nMinio Object Storage:") printServerMsg(apiServer) // configure Web server. webServer, err := configureWebServer(serverConfig) errorIf(err.Trace(), "Failed to configure Web server.", nil) Println("\nMinio Browser:") printServerMsg(webServer) Println("\nTo configure Minio Client:") if runtime.GOOS == "windows" { Println(" Download \"mc\" from https://dl.minio.io/client/mc/release/" + runtime.GOOS + "-" + runtime.GOARCH + "/mc.exe") Println(" $ mc.exe config host add myminio http://localhost:9000 " + conf.Credentials.AccessKeyID + " " + conf.Credentials.SecretAccessKey) } else { Println(" $ wget https://dl.minio.io/client/mc/release/" + runtime.GOOS + "-" + runtime.GOARCH + "/mc") Println(" $ chmod 755 mc") Println(" $ ./mc config host add myminio http://localhost:9000 " + conf.Credentials.AccessKeyID + " " + conf.Credentials.SecretAccessKey) } // Start server. err = minhttp.ListenAndServe(apiServer, webServer) errorIf(err.Trace(), "Failed to start the minio server.", nil) }