Loading... <strong>说明:</strong>最近博主对文档程序小有需求,找了很久发现都是单页,而且还不支持移动端,不是很理想,所以<a href="https://moejj.com/" target="_blank" rel="noopener noreferrer">萌JJ</a>大雕就专门花了半天时间,给博主写了一个,该文档程序基于<code>graphql</code>、<code>nuxtjs</code>、<code>mongodb</code>、<code>keystonejs</code>的实时在线文档编辑系统,可用作各种在线文档编辑和展示,支持<code>markdown</code>语法,对移动端特别友好,这里就开源分享出来,给对文档有需求的人。 <div data-unique="截图"></div> <h2>截图</h2> <a class="light-link" href="http://www.502435.com/usr/uploads/2020/04/c746a-TopDocs(1).png" data-fancybox="gallery" data-type="image" data-caption="请输入图片描述"><img title="请输入图片描述" src="http://www.502435.com/usr/uploads/2020/04/c746a-TopDocs(1).png" alt="请输入图片描述" style=""></a> <a class="light-link" href="http://www.502435.com/usr/uploads/2020/04/d03a0-TopDocs(2).png" data-fancybox="gallery" data-type="image" data-caption="请输入图片描述"><img title="请输入图片描述" src="http://www.502435.com/usr/uploads/2020/04/d03a0-TopDocs(2).png" alt="请输入图片描述" style=""></a> <div data-unique="安装"></div> <h2>安装</h2> <strong>Gitee地址:</strong><a href="https://gitee.com/quazero/topdocs" target="_blank" rel="noopener noreferrer">https://gitee.com/quazero/topdocs</a> <strong>所需环境:</strong><code>NodeJS</code>、<code>MongoDB</code>。 <strong>1、安装NodeJS</strong> <pre><code class="hljs nginx"><span class="hljs-comment">#Debian/Ubuntu系统</span> <span class="hljs-attribute">curl</span> -sL https://deb.nodesource.com/setup_10.x | bash - apt install -y git nodejs <span class="hljs-comment">#CentOS系统</span> curl -sL https://rpm.nodesource.com/setup_10.x | bash - yum install nodejs git -y </code></pre> <strong>2、安装Mongodb</strong> <pre><code class="hljs php"><span class="hljs-comment">#CentOS 6系统,将下面命令一起复制进SSH客户端运行</span> cat <<EOF > /etc/yum.repos.d/mongodb.repo [mongodb-org<span class="hljs-number">-4.0</span>] name=MongoDB Repository baseurl=https:<span class="hljs-comment">//repo.mongodb.org/yum/redhat/6/mongodb-org/4.0/x86_64/</span> gpgcheck=<span class="hljs-number">1</span> enabled=<span class="hljs-number">1</span> gpgkey=https:<span class="hljs-comment">//www.mongodb.org/static/pgp/server-4.0.asc</span> EOF yum -y install mongodb-org <span class="hljs-comment">#CentOS 7系统,将下面命令一起复制进SSH客户端运行</span> cat <<EOF > /etc/yum.repos.d/mongodb.repo [mongodb-org<span class="hljs-number">-4.0</span>] name=MongoDB Repository baseurl=https:<span class="hljs-comment">//repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/</span> gpgcheck=<span class="hljs-number">1</span> enabled=<span class="hljs-number">1</span> gpgkey=https:<span class="hljs-comment">//www.mongodb.org/static/pgp/server-4.0.asc</span> EOF yum -y install mongodb-org <span class="hljs-comment">#Debian 8系统</span> apt-key adv --keyserver hkp:<span class="hljs-comment">//keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4</span> <span class="hljs-keyword">echo</span> <span class="hljs-string">"deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/4.0 main"</span> | tee /etc/apt/sources.<span class="hljs-keyword">list</span>.d/mongodb-org<span class="hljs-number">-4.0</span>.<span class="hljs-keyword">list</span> apt update -y apt install -y mongodb-org <span class="hljs-comment">#Debian 9系统</span> curl https:<span class="hljs-comment">//www.mongodb.org/static/pgp/server-4.0.asc | apt-key add -</span> <span class="hljs-keyword">echo</span> <span class="hljs-string">"deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main"</span> | tee /etc/apt/sources.<span class="hljs-keyword">list</span>.d/mongodb-org<span class="hljs-number">-4.0</span>.<span class="hljs-keyword">list</span> apt-get update -y apt-get install -y mongodb-org <span class="hljs-comment">#Debian 10系统</span> curl https:<span class="hljs-comment">//www.mongodb.org/static/pgp/server-4.2.asc | apt-key add -</span> <span class="hljs-keyword">echo</span> <span class="hljs-string">"deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main"</span> | tee /etc/apt/sources.<span class="hljs-keyword">list</span>.d/mongodb-org<span class="hljs-number">-4.2</span>.<span class="hljs-keyword">list</span> apt update -y apt install -y mongodb-org <span class="hljs-comment">#Ubuntu 16.04系统</span> apt-key adv --keyserver hkp:<span class="hljs-comment">//keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4</span> <span class="hljs-keyword">echo</span> <span class="hljs-string">"deb https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse"</span> | tee /etc/apt/sources.<span class="hljs-keyword">list</span>.d/mongodb-org<span class="hljs-number">-4.0</span>.<span class="hljs-keyword">list</span> apt update -y apt install -y mongodb-org <span class="hljs-comment">#Ubuntu 18.04、18.10、19.04系统</span> apt-key adv --keyserver hkp:<span class="hljs-comment">//keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4</span> <span class="hljs-keyword">echo</span> <span class="hljs-string">"deb https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse"</span> | tee /etc/apt/sources.<span class="hljs-keyword">list</span>.d/mongodb-org<span class="hljs-number">-4.0</span>.<span class="hljs-keyword">list</span> apt update -y apt install -y mongodb-org </code></pre> 如果导入公匙时出现<code>gnupg, gnupg2 and gnupg1 do not seem to be installed</code>错误,使用<code>apt install -y gnupg2</code>,然后重新导入即可。 启动<code>Mongodb</code>并设置开机自启: <pre><code class="hljs nginx"><span class="hljs-comment">#CentOS 6系统</span> <span class="hljs-attribute">service</span> mongod start chkconfig mongod <span class="hljs-literal">on</span> <span class="hljs-comment">#CentOS 7、Debian、Ubuntu系统</span> systemctl start mongod systemctl enable mongod </code></pre> <strong>3、新建数据库</strong> <pre><code class="hljs css">#数据库用户名和密码均为<span class="hljs-selector-tag">topdocs</span>,将下面命令一起复制进<span class="hljs-selector-tag">SSH</span>客户端运行 <span class="hljs-selector-tag">cat</span> <<<span class="hljs-selector-tag">EOF</span> > <span class="hljs-selector-tag">createdb</span> <span class="hljs-selector-tag">use</span> <span class="hljs-selector-tag">topdocs</span> <span class="hljs-selector-tag">db</span><span class="hljs-selector-class">.createUser</span>( { <span class="hljs-attribute">user</span>: <span class="hljs-string">"topdocs"</span>, pwd: <span class="hljs-string">"topdocs"</span>, roles: [ { role: <span class="hljs-string">"readWrite"</span>, db: <span class="hljs-string">"topdocs"</span> } ] } ) <span class="hljs-selector-tag">EOF</span> <span class="hljs-selector-tag">mongo</span><<span class="hljs-selector-tag">createdb</span> && <span class="hljs-selector-tag">rm</span> <span class="hljs-selector-tag">-rf</span> <span class="hljs-selector-tag">createdb</span> </code></pre> <strong>4、安装TopDocs</strong> <pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash">拉取源码</span> git clone https://gitee.com/quazero/topdocs /opt/topdocs cd /opt/topdocs <span class="hljs-meta">#</span><span class="bash">安装yarn和依赖</span> npm i -g yarn yarn <span class="hljs-meta">#</span><span class="bash">编辑index.js</span> vi index.js</code></pre> 修改以下代码: <pre><code class="hljs python">endpoint: <span class="hljs-string">'http://127.0.0.1:3000/admin/api'</span>, <span class="hljs-comment">#如果我后面使用docs.502435.com域名反代本地地址127.0.0.1:3000,那么修改为:</span> endpoint: <span class="hljs-string">'http://docs.<span class="hljs-comment">502435</span>.com/admin/api'</span>, 或 endpoint: <span class="hljs-string">'https://docs.<span class="hljs-comment">502435</span>.com/admin/api'</span>, <span class="hljs-comment">#如果我后面直接使用ip地址1.2.3.4访问,那么修改为:</span> endpoint: <span class="hljs-string">'http://1.2.3.4:3000/admin/api'</span>,</code></pre> <code>vi</code>编辑步骤:使用<code>i</code>进入编辑状态,编辑完成使用<code>esc</code>退出编辑状态,再输入<code>:wq</code>,然后<code>Enter</code>确定退出。 开始打包并运行: <pre><code class="hljs sql">yarn build yarn <span class="hljs-keyword">start</span> #后台运行 nohup yarn <span class="hljs-keyword">start</span>& </code></pre> 这里访问地址为<code>index.js</code>中修改域名或<code>http://服务器ip:3000</code>。 对于<code>IP</code>访问的,如果<code>CentOS</code>系统打不开的话,可能还需要开启<code>3000</code>端口,使用命令: <pre><code class="hljs nginx"><span class="hljs-comment">#CentOS 6</span> <span class="hljs-attribute">iptables</span> -I INPUT -p tcp --dport <span class="hljs-number">3000</span> -j ACCEPT service iptables save service iptables restart <span class="hljs-comment">#CentOS 7</span> firewall-cmd --zone=public --add-port=<span class="hljs-number">3000</span>/tcp --<span class="hljs-literal">permanent</span> firewall-cmd --reload </code></pre> 像阿里云等服务器,还需要去安全组那里开放下端口。 <div data-unique="绑定域名"></div> <h2>绑定域名</h2> 如果你在上面编辑<code>index.js</code>的时候填的域名,那么就需要绑定下域名,反代下<code>http://127.0.0.1:3000</code>即可,反之,使用的<code>ip</code>就不用。 这里依旧使用<code>Caddy</code>,如果你安装过<code>Nginx</code>或者<code>Apache</code>,就自行搜索反代教程了。 安装<code>Caddy</code>: <pre><code class="hljs nginx"><span class="hljs-attribute">wget</span> -N --<span class="hljs-literal">no</span>-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh <span class="hljs-comment">#备用地址</span> wget -N --<span class="hljs-literal">no</span>-check-certificate https://www.502435.com/download/shell/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh </code></pre> 配置<code>Caddy</code>: <pre><code class="hljs bash"><span class="hljs-comment">#以下全部内容是一个整体,请修改域名后一起复制到SSH运行!</span> <span class="hljs-comment">#http访问,该配置不会自动签发SSL</span> <span class="hljs-built_in">echo</span> <span class="hljs-string">"docs.502435.com { gzip proxy / 127.0.0.1:3000 { websocket header_upstream Host {host} header_upstream X-Real-IP {remote} header_upstream X-Forwarded-For {remote} header_upstream X-Forwarded-Port {server_port} header_upstream X-Forwarded-Proto {scheme} } }"</span> > /usr/<span class="hljs-built_in">local</span>/caddy/Caddyfile <span class="hljs-comment">#https访问,该配置会自动签发SSL,请提前解析域名到VPS服务器</span> <span class="hljs-built_in">echo</span> <span class="hljs-string">"docs.502435.com { gzip tls admin@502435.com proxy / 127.0.0.1:3000 { websocket header_upstream Host {host} header_upstream X-Real-IP {remote} header_upstream X-Forwarded-For {remote} header_upstream X-Forwarded-Port {server_port} header_upstream X-Forwarded-Proto {scheme} } }"</span> > /usr/<span class="hljs-built_in">local</span>/caddy/Caddyfile </code></pre> <code>tls</code>参数会自动帮你签发<code>ssl</code>证书,如果你要使用自己的<code>ssl</code>,改为<code>tls /root/xx.crt /root/xx.key</code>即可。后面为<code>ssl</code>证书路径。 启动<code>Caddy</code>: <pre><code class="hljs sql">/etc/init.d/caddy <span class="hljs-keyword">start</span> </code></pre> 就可以打开域名进行访问了。 <div data-unique="开机自启"></div> <h2>开机自启</h2> 这里新建一个简单的<code>Systemd</code>配置文件,只适用于<code>CentOS 7</code>、<code>Debian 8+</code>、<code>Ubuntu 16+</code>等。 <pre><code class="hljs cs"><span class="hljs-meta">#新建systemd配置文件,将以下代码一起复制到SSH运行</span> cat > /etc/systemd/system/topdocs.service <<EOF [<span class="hljs-meta">Unit</span>] Description=topdocs After=network.target [<span class="hljs-meta">Service</span>] Type=simple WorkingDirectory=/opt/topdocs ExecStart=$(command -v yarn) start Restart=<span class="hljs-keyword">on</span>-failure [<span class="hljs-meta">Install</span>] WantedBy=multi-user.target EOF</code></pre> 如果你使用的宝塔,还需要做下软连接,不然启动可能会失败,反之不需要,使用命令: <pre><code class="hljs nginx"><span class="hljs-attribute">ln</span> -sf $(which node) /usr/bin/node </code></pre> 开始启动并设置开机自启: <pre><code class="hljs sql">systemctl <span class="hljs-keyword">start</span> topdocs systemctl <span class="hljs-keyword">enable</span> topdocs </code></pre> <div data-unique="使用教程"></div> <h2>使用教程</h2> 后台地址<code>/admin</code>,账号为<code>admin@admin.com</code>,密码为<code>adminadmin</code>,自己进后台修改。 设置中<code>index</code>中是首页的展示内容,需要注意的是: <pre><code class="hljs php">-logo-/logo.png-logo- -title-跨世代文档编辑系统-title- -subtitle-实时动态markdown文档编辑系统,基于graqhql、mongodb、keystonejs、nuxtjs开发的移动优先的服务端渲染文档系统。-subtitle- -button-查看文档$https:<span class="hljs-comment">//gitee.com/quazero/topdocs-button-</span> ===header=== header下面就是完全的markdown语法的编写区域,编辑完成之后,首页可查看变化。</code></pre> 参数大致意思: <pre><code class="hljs xml">-logo-之间的是LOGO图片,可链接也可路径。 -title-之间的是首页展示大标题。 -subtitle-之间的是首页展示的项目介绍。 -button-是首页展示按钮需要的内容。其中<span class="hljs-tag"><<span class="hljs-name">按钮名</span>></span>$<span class="hljs-tag"><<span class="hljs-name">链接</span>></span>,链接可链接也可路径,按需更改。 ===header===下面的就是正常的markdown语句,自己根据需要编写。</code></pre> 最后如果要上传图片或者文件的话,需要从后台左侧<code>Images</code>处上传并获取地址。 <div id="gtx-trans" style="position: absolute; left: 350px; top: 5760.83px;"> <div class="gtx-trans-icon"></div> </div> 最后修改:2022 年 08 月 02 日 © 允许规范转载 打赏 赞赏作者 赞 0 如果觉得我的文章对你有用,请随意赞赏