From e866eb1a4db4536a16f9fcc6b2c794a372cc4029 Mon Sep 17 00:00:00 2001 From: gsw945 Date: Fri, 13 May 2022 17:19:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E5=8D=87Go=E7=89=88=E6=9C=AC,=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0Linux=E7=BC=96=E8=AF=91=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ .travis.yml | 6 +++--- Dockerfile | 4 ++-- README.md | 21 ++++++++++----------- appveyor.yml | 4 ++-- build_amd64.sh | 20 ++++++++++++++++++++ build_musl_amd64.sh | 20 ++++++++++++++++++++ docker-compose.yml | 2 +- go.mod | 39 ++++++++++++++++++++++++++++++++------- go.sum | 2 -- 10 files changed, 92 insertions(+), 28 deletions(-) create mode 100644 build_amd64.sh create mode 100644 build_musl_amd64.sh diff --git a/.gitignore b/.gitignore index d85afc98..5d6365ad 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,8 @@ _testmain.go *.exe *.exe~ mindoc +mindoc_linux_amd64 +mindoc_linux_musl_amd64 database *.test *.prof diff --git a/.travis.yml b/.travis.yml index ef2aab75..72b5fdac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,11 +25,11 @@ script: - rm conf/app.conf before_deploy: - - go mod tidy -v && GOARCH=amd64 GOOS=linux go build -o mindoc_linux_amd64 -ldflags="-w -X 'github.com/mindoc-org/mindoc/conf.VERSION=$TRAVIS_TAG' -X 'github.com/mindoc-org/mindoc/conf.BUILD_TIME=`date`' -X 'conf.GO_VERSION=`go version`'" + - go mod tidy -v && GOARCH=amd64 GOOS=linux go build -v -o mindoc_linux_amd64 -ldflags="-w -X 'github.com/mindoc-org/mindoc/conf.VERSION=$TRAVIS_TAG' -X 'github.com/mindoc-org/mindoc/conf.BUILD_TIME=`date`' -X 'conf.GO_VERSION=`go version`'" # remove files - - rm appveyor.yml docker-compose.yml Dockerfile .travis.yml .gitattributes .gitignore go.mod go.sum main.go README.md simsun.ttc start.sh + - rm appveyor.yml docker-compose.yml Dockerfile .travis.yml .gitattributes .gitignore go.mod go.sum main.go README.md simsun.ttc start.sh sync_host.sh build_amd64.sh build_musl_amd64.sh # remove dirs - - rm -rf cache commands controllers converter .git .github graphics mail models routers utils + - rm -rf cache commands controllers converter .git .github graphics mail models routers utils runtime - ls -alh - cp conf/app.conf.example conf/app.conf - zip -r mindoc_linux_amd64.zip conf static uploads views lib mindoc_linux_amd64 favicon.ico LICENSE.md diff --git a/Dockerfile b/Dockerfile index 573a8f8f..fba6bafa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM amd64/golang:1.13 AS build +FROM amd64/golang:1.18.1 AS build ARG TAG=0.0.1 @@ -16,7 +16,7 @@ WORKDIR /go/src/github.com/mindoc-org/mindoc # 编译 RUN go env RUN go mod tidy -v -RUN go build -o mindoc_linux_amd64 -ldflags "-w -s -X 'main.VERSION=$TAG' -X 'main.BUILD_TIME=`date`' -X 'main.GO_VERSION=`go version`'" +RUN go build -v -o mindoc_linux_amd64 -ldflags "-w -s -X 'main.VERSION=$TAG' -X 'main.BUILD_TIME=`date`' -X 'main.GO_VERSION=`go version`'" RUN cp conf/app.conf.example conf/app.conf # 清理不需要的文件 RUN rm appveyor.yml docker-compose.yml Dockerfile .travis.yml .gitattributes .gitignore go.mod go.sum main.go README.md simsun.ttc start.sh conf/*.go diff --git a/README.md b/README.md index d84ce8d3..7c9fd573 100644 --- a/README.md +++ b/README.md @@ -41,17 +41,17 @@ MinDoc 的前身是 [SmartWiki](https://github.com/lifei6671/SmartWiki) 文档 对于没有Golang使用经验的用户,可以从 [https://github.com/mindoc-org/mindoc/releases](https://github.com/mindoc-org/mindoc/releases) 这里下载编译完的程序。 -如果有Golang开发经验,建议通过编译安装,要求golang版本不小于1.18.1(需支持`CGO`和`go mod`)。 -> 注意: CentOS7上GLibC版本低,需要源码编译, 编译好的二进制文件无法运行。 +如果有Golang开发经验,建议通过编译安装,要求golang版本不小于1.15.1(需支持`CGO`、`go mod`和`import _ "time/tzdata"`)(推荐Go版本为1.18.1)。 +> 注意: CentOS7上GLibC版本低,常规编译版本不能使用。需要自行源码编译,或使用使用musl编译版本。 ## 常规编译 ```bash # 克隆源码 git clone https://github.com/mindoc-org/mindoc.git # go包安装 -go mod tidy +go mod tidy -v # 编译(sqlite需要CGO支持) -go build -ldflags "-w" -o mindoc.exe main.go +go build -ldflags "-w" -o mindoc main.go # 数据库初始化(此步骤执行之前,需配置`conf/app.conf`) ./mindoc install # 执行 @@ -88,14 +88,13 @@ export GOOS=linux export CC=/usr/local/musl/bin/musl-gcc # 设置版本 export TRAVIS_TAG=temp-musl-v`date +%y%m%d` -go build -o mindoc_linux_musl_amd64 --ldflags="-linkmode external -extldflags '-static' -w -X 'github.com/mindoc-org/mindoc/conf.VERSION=$TRAVIS_TAG' -X 'github.com/mindoc-org/mindoc/conf.BUILD_TIME=`date`' -X 'github.com/mindoc-org/mindoc/conf.GO_VERSION=`go version`'" +go build -v -o mindoc_linux_musl_amd64 -ldflags="-linkmode external -extldflags '-static' -w -X 'github.com/mindoc-org/mindoc/conf.VERSION=$TRAVIS_TAG' -X 'github.com/mindoc-org/mindoc/conf.BUILD_TIME=`date`' -X 'github.com/mindoc-org/mindoc/conf.GO_VERSION=`go version`'" # 验证 -./mindoc_linux_amd64 version +./mindoc_linux_musl_amd64 version ``` -```bash - +```ini #邮件配置-示例 #是否启用邮件 enable_mail=true @@ -129,17 +128,17 @@ HTTP_PORT 程序监听的端口号 MINDOC_ENABLE_EXPORT 开启导出(默认为false) ``` -### 举个栗子-当前(公开)镜像(信息页面: https://cr.console.aliyun.com/images/cn-hangzhou/mindoc-org/mindoc/detail , 需要登录阿里云账号才可访问列表) +#### 举个栗子-当前(公开)镜像(信息页面: https://cr.console.aliyun.com/images/cn-hangzhou/mindoc-org/mindoc/detail , 需要登录阿里云账号才可访问列表) ##### Windows ```bash set MINDOC=//d/mindoc -docker run -it --name=mindoc --restart=always -v "%MINDOC%":"/mindoc-sync-host" -p 8181:8181 -e MINDOC_ENABLE_EXPORT=true -d registry.cn-hangzhou.aliyuncs.com/mindoc-org/mindoc:v2.1-beta.5 +docker run -it --name=mindoc --restart=always -v "%MINDOC%":"/mindoc-sync-host" -p 8181:8181 -e MINDOC_ENABLE_EXPORT=true -d registry.cn-hangzhou.aliyuncs.com/mindoc-org/mindoc:v2.1-beta.6 ``` ##### Linux、Mac ```bash export MINDOC=/home/ubuntu/mindoc-docker -docker run -it --name=mindoc --restart=always -v "${MINDOC}":"/mindoc-sync-host" -p 8181:8181 -e MINDOC_ENABLE_EXPORT=true -d registry.cn-hangzhou.aliyuncs.com/mindoc-org/mindoc:v2.1-beta.5 +docker run -it --name=mindoc --restart=always -v "${MINDOC}":"/mindoc-sync-host" -p 8181:8181 -e MINDOC_ENABLE_EXPORT=true -d registry.cn-hangzhou.aliyuncs.com/mindoc-org/mindoc:v2.1-beta.6 ``` ##### 举个栗子-更多环境变量示例(镜像已过期,仅供参考,请以当前镜像为准) diff --git a/appveyor.yml b/appveyor.yml index 04fe5276..64195997 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -44,9 +44,9 @@ build_script: go mod tidy -v - go build -v -o "mindoc_windows_%GOARCH%.exe" -ldflags="-w -X github.com/mindoc-org/mindoc/conf.VERSION=%APPVEYOR_REPO_TAG_NAME% -X 'github.com/mindoc-org/mindoc/conf.BUILD_TIME=%date% %time%' -X 'conf.GO_VERSION=%GO_VERSION%'" + go build -v -o "mindoc_windows_%GOARCH%.exe" -ldflags="-w -X github.com/mindoc-org/mindoc/conf.VERSION=%APPVEYOR_REPO_TAG_NAME% -X 'github.com/mindoc-org/mindoc/conf.BUILD_TIME=%date% %time%' -X 'github.com/mindoc-org/mindoc/conf.GO_VERSION=%GO_VERSION%'" - 7z a -t7z -r mindoc_windows_%GOARCH%.7z conf/*.conf* conf/lang/* static/* mindoc_windows_%GOARCH%.exe views/* uploads/* + 7z a -t7z -r mindoc_windows_%GOARCH%.7z conf/*.conf* conf/lang/* static/* mindoc_windows_%GOARCH%.exe views/* uploads/* lib/* favicon.ico LICENSE.md test_script: - cmd: >- cd c:\gopath\src\github.com\mindoc-org\mindoc diff --git a/build_amd64.sh b/build_amd64.sh new file mode 100644 index 00000000..6d2f6239 --- /dev/null +++ b/build_amd64.sh @@ -0,0 +1,20 @@ +rm mindoc_linux_amd64 mindoc_linux_musl_amd64 +rm -rf ../mindoc_linux_amd64/ + +export GOARCH=amd64 +export GOOS=linux +export CC=/usr/bin/gcc + +export TRAVIS_TAG=v2.1-beta.6 + +go mod tidy -v +go build -v -o mindoc_linux_amd64 -ldflags="-linkmode external -extldflags '-static' -w -X 'github.com/mindoc-org/mindoc/conf.VERSION=$TRAVIS_TAG' -X 'github.com/mindoc-org/mindoc/conf.BUILD_TIME=`date`' -X 'github.com/mindoc-org/mindoc/conf.GO_VERSION=`go version`'" +./mindoc_linux_amd64 version + +mkdir ../mindoc_linux_amd64 +cp -r * ../mindoc_linux_amd64 +cd ../mindoc_linux_amd64 +rm -rf cache commands controllers converter .git .github graphics mail models routers utils runtime +rm appveyor.yml docker-compose.yml Dockerfile .travis.yml .gitattributes .gitignore go.mod go.sum main.go README.md simsun.ttc start.sh sync_host.sh build_amd64.sh build_musl_amd64.sh +zip -r mindoc_linux_amd64.zip conf static uploads views lib mindoc_linux_amd64 favicon.ico LICENSE.md +mv ./mindoc_linux_amd64.zip ../ diff --git a/build_musl_amd64.sh b/build_musl_amd64.sh new file mode 100644 index 00000000..c7f9441e --- /dev/null +++ b/build_musl_amd64.sh @@ -0,0 +1,20 @@ +rm mindoc_linux_musl_amd64 mindoc_linux_amd64 +rm -rf ../mindoc_linux_musl_amd64/ + +export GOARCH=amd64 +export GOOS=linux +export CC=/usr/local/musl/bin/musl-gcc + +export TRAVIS_TAG=v2.1-beta.6 + +go mod tidy -v +go build -v -o mindoc_linux_musl_amd64 -ldflags="-linkmode external -extldflags '-static' -w -X 'github.com/mindoc-org/mindoc/conf.VERSION=$TRAVIS_TAG' -X 'github.com/mindoc-org/mindoc/conf.BUILD_TIME=`date`' -X 'github.com/mindoc-org/mindoc/conf.GO_VERSION=`go version`'" +./mindoc_linux_musl_amd64 version + +mkdir ../mindoc_linux_musl_amd64 +cp -r * ../mindoc_linux_musl_amd64 +cd ../mindoc_linux_musl_amd64 +rm -rf cache commands controllers converter .git .github graphics mail models routers utils runtime +rm appveyor.yml docker-compose.yml Dockerfile .travis.yml .gitattributes .gitignore go.mod go.sum main.go README.md simsun.ttc start.sh sync_host.sh build_amd64.sh build_musl_amd64.sh +zip -r mindoc_linux_musl_amd64.zip conf static uploads views lib mindoc_linux_musl_amd64 favicon.ico LICENSE.md +mv ./mindoc_linux_musl_amd64.zip ../ diff --git a/docker-compose.yml b/docker-compose.yml index bdd22b2f..a46c4f19 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: "3" services: mindoc: - image: registry.cn-hangzhou.aliyuncs.com/mindoc-org/mindoc:v2.1-beta.5 + image: registry.cn-hangzhou.aliyuncs.com/mindoc-org/mindoc:v2.1-beta.6 container_name: mindoc privileged: false restart: always diff --git a/go.mod b/go.mod index e501c096..c6833120 100644 --- a/go.mod +++ b/go.mod @@ -4,25 +4,50 @@ go 1.18 require ( github.com/PuerkitoBio/goquery v1.4.1 - github.com/Unknwon/goconfig v0.0.0-20200908083735-df7de6a44db8 // indirect - github.com/andybalholm/cascadia v1.2.0 // indirect github.com/beego/beego/v2 v2.0.2-0.20210322114547-10ea897525a5 github.com/beego/i18n v0.0.0-20161101132742-e9308947f407 github.com/boombuler/barcode v1.0.0 - github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b // indirect github.com/howeyc/fsnotify v0.9.0 github.com/kardianos/service v1.1.0 - github.com/lib/pq v1.7.0 // indirect github.com/lifei6671/gocaptcha v0.1.1 github.com/mattn/go-runewidth v0.0.13 github.com/mattn/go-sqlite3 v2.0.3+incompatible github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 github.com/russross/blackfriday/v2 v2.1.0 - github.com/smartystreets/goconvey v1.6.4 // indirect - gopkg.in/asn1-ber.v1 v1.0.0-00010101000000-000000000000 // indirect gopkg.in/ldap.v2 v2.5.1 - gopkg.in/yaml.v2 v2.3.0 // indirect +) +require ( + github.com/Unknwon/goconfig v0.0.0-20200908083735-df7de6a44db8 // indirect + github.com/andybalholm/cascadia v1.2.0 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b // indirect + github.com/cespare/xxhash/v2 v2.1.1 // indirect + github.com/go-redis/redis/v7 v7.4.0 // indirect + github.com/go-sql-driver/mysql v1.5.0 // indirect + github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect + github.com/golang/protobuf v1.4.2 // indirect + github.com/gomodule/redigo v2.0.0+incompatible // indirect + github.com/hashicorp/golang-lru v0.5.4 // indirect + github.com/lib/pq v1.7.0 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect + github.com/mitchellh/mapstructure v1.3.3 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/prometheus/client_golang v1.7.0 // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/prometheus/common v0.10.0 // indirect + github.com/prometheus/procfs v0.1.3 // indirect + github.com/rivo/uniseg v0.2.0 // indirect + github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect + github.com/smartystreets/goconvey v1.6.4 // indirect + golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 // indirect + golang.org/x/image v0.0.0-20190227222117-0694c2d4d067 // indirect + golang.org/x/net v0.0.0-20201021035429-f5854403a974 // indirect + golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f // indirect + golang.org/x/text v0.3.3 // indirect + google.golang.org/protobuf v1.23.0 // indirect + gopkg.in/asn1-ber.v1 v1.0.0-00010101000000-000000000000 // indirect + gopkg.in/yaml.v2 v2.3.0 // indirect ) replace gopkg.in/asn1-ber.v1 => github.com/go-asn1-ber/asn1-ber v1.5.0 diff --git a/go.sum b/go.sum index 7140e3f5..25c3c5b0 100644 --- a/go.sum +++ b/go.sum @@ -51,7 +51,6 @@ github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3C github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/glendc/gopher-json v0.0.0-20170414221815-dc4743023d0c/go.mod h1:Gja1A+xZ9BoviGJNA2E9vFkPjjsl+CoJxSXiQM1UXtw= github.com/go-asn1-ber/asn1-ber v1.5.0 h1:/S4hO/AO6tLMlPX0oftGSOcdGJJN/MuYzfgWRMn199E= @@ -60,7 +59,6 @@ github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-redis/redis v6.14.2+incompatible h1:UE9pLhzmWf+xHNmZsoccjXosPicuiNaInPgym8nzfg0= github.com/go-redis/redis v6.14.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis/v7 v7.4.0 h1:7obg6wUoj05T0EpY0o8B59S9w5yeMWql7sw2kwNW1x4= github.com/go-redis/redis/v7 v7.4.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg=