Service-Funktion (z.B. als Windows Service) eingebaut
This commit is contained in:
parent
33b5e370ae
commit
6dd7fe8580
21
README.md
21
README.md
@ -30,8 +30,25 @@ Zum kompilieren folgende Go-Abhängigkeiten installieren:
|
|||||||
- `go get github.com/mandolyte/mdtopdf`
|
- `go get github.com/mandolyte/mdtopdf`
|
||||||
- `go get github.com/blevesearch/bleve`
|
- `go get github.com/blevesearch/bleve`
|
||||||
- `go get github.com/shuLhan/go-bindata`
|
- `go get github.com/shuLhan/go-bindata`
|
||||||
|
- `go get github.com/kardianos/service`
|
||||||
|
|
||||||
|
|
||||||
Die Build-Scripte liegen im Unterordner `build`
|
Die Build-Scripte liegen im Unterordner `build`
|
||||||
|
|
||||||
Download der Binaries unter: [https://nc.masilux.de/index.php/s/dGRdPsa6XPPiyQk](https://nc.masilux.de/index.php/s/dGRdPsa6XPPiyQk)
|
Download der Binaries unter: [https://nc.masilux.de/index.php/s/dGRdPsa6XPPiyQk](https://nc.masilux.de/index.php/s/dGRdPsa6XPPiyQk)
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
#### Installation als Dienst unter Windows:
|
||||||
|
```
|
||||||
|
sc create go-wiki-srv binpath="P:\Go\gowiki\gowiki_amd64.exe" start=delayed-auto DisplayName="GoWiki"
|
||||||
|
sc start go-wiki-srv
|
||||||
|
sc query go-wiki-srv
|
||||||
|
```
|
||||||
|
|
||||||
|
Deinstallation:
|
||||||
|
```
|
||||||
|
sc stop go-wiki-srv
|
||||||
|
sc delete go-wiki-srv
|
||||||
|
```
|
||||||
|
|
||||||
|
----
|
||||||
|
63
main.go
63
main.go
@ -18,12 +18,64 @@ import (
|
|||||||
"github.com/blevesearch/bleve"
|
"github.com/blevesearch/bleve"
|
||||||
"github.com/blevesearch/bleve/search/highlight/highlighter/html"
|
"github.com/blevesearch/bleve/search/highlight/highlighter/html"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
"github.com/kardianos/service"
|
||||||
"github.com/mandolyte/mdtopdf"
|
"github.com/mandolyte/mdtopdf"
|
||||||
"gopkg.in/src-d/go-git.v4"
|
"gopkg.in/src-d/go-git.v4"
|
||||||
"gopkg.in/src-d/go-git.v4/plumbing/object"
|
"gopkg.in/src-d/go-git.v4/plumbing/object"
|
||||||
)
|
)
|
||||||
|
|
||||||
var config = readConfig("")
|
//-------------------------------------------------------------------------------------------------
|
||||||
|
// Service Configuration
|
||||||
|
var logger service.Logger
|
||||||
|
|
||||||
|
type program struct{}
|
||||||
|
|
||||||
|
func (p *program) Start(s service.Service) error {
|
||||||
|
// Start should not block. Do the actual work async.
|
||||||
|
go p.run()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (p *program) run() {
|
||||||
|
wikimain()
|
||||||
|
}
|
||||||
|
func (p *program) Stop(s service.Service) error {
|
||||||
|
// Stop should not block. Return with a few seconds.
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
svcConfig := &service.Config{
|
||||||
|
Name: "GoWiki",
|
||||||
|
DisplayName: "GoWiki",
|
||||||
|
Description: "GoWiki Service",
|
||||||
|
}
|
||||||
|
|
||||||
|
prg := &program{}
|
||||||
|
s, err := service.New(prg, svcConfig)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
if len(os.Args) > 1 {
|
||||||
|
err = service.Control(s, os.Args[1])
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
logger, err = s.Logger(nil)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
err = s.Run()
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
var config *Configuration
|
||||||
|
|
||||||
type Configuration struct {
|
type Configuration struct {
|
||||||
Host string
|
Host string
|
||||||
@ -35,7 +87,12 @@ type Configuration struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// our main function
|
// our main function
|
||||||
func main() {
|
func wikimain() {
|
||||||
|
// Startverzeichnis auslesen und als Arbeitsverzeichnis setzen
|
||||||
|
dir, _ := filepath.Abs(filepath.Dir(os.Args[0]))
|
||||||
|
os.Chdir(dir)
|
||||||
|
|
||||||
|
config = readConfig(path.Join(dir, "config.json"))
|
||||||
|
|
||||||
// Ausgeben der Config-Optionen
|
// Ausgeben der Config-Optionen
|
||||||
fmt.Println("Host: " + config.Host)
|
fmt.Println("Host: " + config.Host)
|
||||||
@ -423,7 +480,7 @@ func readConfig(filename string) *Configuration {
|
|||||||
// initialize conf with default values.
|
// initialize conf with default values.
|
||||||
conf := &Configuration{Host: "http://127.0.0.1", Port: "8000", DataPath: "./data", DataPathFTS: "", WebUser: "", WebPasswd: ""}
|
conf := &Configuration{Host: "http://127.0.0.1", Port: "8000", DataPath: "./data", DataPathFTS: "", WebUser: "", WebPasswd: ""}
|
||||||
|
|
||||||
b, err := ioutil.ReadFile("./config.json")
|
b, err := ioutil.ReadFile(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return conf
|
return conf
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user