如果是局域网,部署的电脑拥有固定ip(下文叫宿主机,切记)。电脑能打开cup的虚拟功能。如果部署到云主机,道理是一样的。
创新互联成立十载来,这条路我们正越走越好,积累了技术与客户资源,形成了良好的口碑。为客户提供网站设计制作、成都网站设计、网站策划、网页设计、域名注册、网络营销、VI设计、网站改版、漏洞修补等服务。网站是否美观、功能强大、用户体验好、性价比高、打开快等等,这些对于网站建设都非常重要,创新互联通过对建站技术性的掌握、对创意设计的研究为客户提供一站式互联网解决方案,携手广大客户,共同发展进步。
环境是win7以上,win10以下。Win10区别就是安装的docker软件不同而已。
第一步:确定电脑打开了cpu虚拟打开。https://jingyan.baidu.com/article/22fe7ced3b4c003002617f17.html
第二步:下载和安装docker toolbox,默认安装即可。下载地址http://get.daocloud.io/,下载支持旧版windows的docker toolbox,win10就直接下载docker了。
第三步:启动docker后在里面拉取Onlyoffice Document Server 的Docker镜像
拉取镜像sudo docker pull onlyoffice/documentserver
建议用离线的:
(存出命令Administrator@604TFALNDKDKJWCMINGW64 ~/winfont
$ dockersave -o onlyofficedocumentserver.tar onlyoffice/documentserver)
dockerload < onlyofficedocumentserver.tar
docker run-i-t-d-p9000:80onlyoffice/documentserver
//进入容器(运行的镜像)内
$ dockerexec -it 38e27 /bin/bash
root@38e27823ae92:/#dir或者ls –al
root@6dfa5705aaef:~#cd /usr/share/fonts/
root@6dfa5705aaef:/usr/share/fonts#ls
truetype X11
//删除文件夹X11
root@6dfa5705aaef:/usr/share/fonts#rm -R dir X11
rm:cannot remove dir: No such file or directory
root@6dfa5705aaef:/usr/share/fonts#ls
truetype
root@6dfa5705aaef:/usr/share/fonts#cd truetype
root@6dfa5705aaef:/usr/share/fonts/truetype#ls –al
root@6dfa5705aaef:/usr/share/fonts/truetype#ls -al
total462392
drwxr-xr-x11 root root 4096 Feb 19 04:17 .
………………
//删除trutype文件夹下所有文件
root@6dfa5705aaef:/usr/share/fonts/truetype#rm -R dir *.*
rm:cannot remove dir: No such file or directory
root@6dfa5705aaef:/usr/share/fonts/truetype#rm -R dir *
rm:cannot remove dir: No such file or directory
rm:cannot remove custom: Device or resource busy
root@6dfa5705aaef:/usr/share/fonts/truetype#ls
custom
root@6dfa5705aaef:/usr/share/fonts/truetype#ls -al
total 12
drwxr-xr-x10 root root 4096 Feb 19 10:14 .
drwxr-xr-x 6 root root 4096 Feb 19 10:12 ..
drwxr-xr-x 2 root root 4096 Feb 19 03:48 custom
……
root@6dfa5705aaef:/usr/share/fonts/truetype#exit
exit
Administrator@604TFALNDKDKJWCMINGW64 ~/winfont
//将当前文件夹C:\Users\Administrator\下的winfont文件夹内的字体全部拷贝到容器的文件夹/usr/share/fonts/truetype中
$ tar -cv* | docker exec -i 6df tar x -C /usr/share/fonts/truetype
kaiu.ttf
msjh.ttc
msjhbd.ttc
msjhl.ttc
msyh.ttc
msyh.ttf
msyhbd.ttc
msyhl.ttc
simfang.ttf
simhei.ttf
simkai.ttf
simli.ttf
simsun.ttc
simsunb.ttf
simyou.ttf
……
Administrator@604TFALNDKDKJWCMINGW64 ~/winfont
//进入容器内
$ dockerexec -it 6df /bin/bash
root@6dfa5705aaef:/#sudo mkfontscale
root@6dfa5705aaef:/#sudo mkfontdir
root@6dfa5705aaef:/#sudo fc-cache -fv
/usr/share/fonts:caching, new cache contents: 0 fonts, 1 dirs
…………
fc-cache:succeeded
root@6dfa5705aaef:/#exit
exit
//退出容器
Administrator@604TFALNDKDKJWCMINGW64 ~/winfont
$ dockerexec 6df /usr/bin/documentserver-generate-allfonts.sh
GeneratingAllFonts.js, please wait...Done
onlyoffice-documentserver:docservice:stopped
onlyoffice-documentserver:docservice:started
onlyoffice-documentserver:converter:stopped
onlyoffice-documentserver:converter:started
[html] view plain copy
//alert({{.Doc.FileName}});
window.docEditor = newDocsAPI.DocEditor("placeholder",
{
"document": {
"fileType": "{{.fileType}}",
"key": "{{.Key}}",//"Khirz6zTPdfd7"
"title": "{{.Doc.FileName}}",
"url": "http://运行engineercms电脑的ip/attachment/onlyoffice/{{.Doc.FileName}}"
},
"documentType":"{{.documentType}}",
"editorConfig": {
"callbackUrl": "http:// 运行engineercms电脑的ip /url-to-callback?id={{.Doc.Id}}",
"user": {
"id": "{{.Uid}}",
"name": "{{.Uname}}"
},
"lang": "zh-CN",//"en-US",
},
"height": "100%",
"width": "100%"
});
[plain] view plain copy
type Callback struct {
Key string `json:"key"`
Status int `json:"status"`
Url string `json:"url"`
Changesurl string `json:"changesurl"`
History history `json:"history"`
Users []string `json:"users"`
Actions []action `json:"actions"`
Lastsave string `json:"lastsave"`
Notmodifiedbool `json:"notmodified"`
}
type action struct {
Type int
userid string
}
type history struct {
changes []change
serverVersionstring
}
type change struct {
created string
User User1
}
type User1 struct {
id string
name string
}
//关闭浏览器标签后获取最新文档保存到文件夹
func (c *OnlyController) UrltoCallback() {
// pk1 :=c.Ctx.Input.RequestBody
id :=c.Input().Get("id")
//pid转成64为
idNum, err :=strconv.ParseInt(id, 10, 64)
if err != nil {
beego.Error(err)
}
//根据附件id取得附件的prodid,路径
onlyattachment,err := models.GetOnlyAttachbyId(idNum)
if err != nil {
beego.Error(err)
}
var callbackCallback
json.Unmarshal(c.Ctx.Input.RequestBody,&callback)
ifcallback.Status == 1 || callback.Status == 4 {
c.Data["json"]= map[string]interface{}{"error": 0}
c.ServeJSON()
} else ifcallback.Status == 2 {
resp, err :=http.Get(callback.Url)
if err != nil{
beego.Error(err)
}
body, err :=ioutil.ReadAll(resp.Body)
if err != nil{
beego.Error(err)
}
deferresp.Body.Close()
if err != nil{
beego.Error(err)
}
f, err :=os.OpenFile(".\\attachment\\onlyoffice\\"+onlyattachment.FileName,os.O_RDWR|os.O_CREATE|os.O_APPEND, os.ModePerm)
if err != nil{
beego.Error(err)
}
deferf.Close()
_, err =f.Write(body)
if err != nil{
beego.Error(err)
} else {
err =models.UpdateOnlyAttachment(idNum)
if err !=nil {
beego.Error(err)
}
}
c.Data["json"]= map[string]interface{}{"error": 0}
c.ServeJSON()
}
}