【1】下载安装服务端
【2】leanote导出PDF
【3】制作 leanote docker 镜像


【1】下载安装服务端
参考链接

###下载地址
    https://sourceforge.net/projects/leanote-bin/files/

###安装 MongoDB,Leanote 依赖 MongoDB 作为数据存储
    cd /home
    wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.1.tgz
    tar -xzvf mongodb-linux-x86_64-3.0.1.tgz
    mkdir -p /data/db	#创建用于存储的文件夹目录
    vim  /etc/profile	#配置 MongoDB 的环境变量
        export PATH=$PATH:/home/mongodb-linux-x86_64-3.0.1/bin
    source /etc/profile	
    mongod --bind_ip localhost --port 27017 --dbpath /data/db/ --logpath=/var/log/mongod.log --fork	#启动 MongoDB
###安装 Leanote
    cd /home
    wget https://iweb.dl.sourceforge.net/project/leanote-bin/2.4/leanote-linux-amd64-v2.4.bin.tar.gz
    tar -zxvf leanote-linux-amd64-v2.4.bin.tar.gz
    vim app.conf	#编辑 Leanote 配置文件,
        #修改app.secret= 项(官方说明文档里说用户必须要修改,要不然会有安全问题,随便改改就好),为:
        app.secret=qcloud666
        #修改site.url
    mongorestore -h localhost -d leanote --dir /home/leanote/mongodb_backup/leanote_install_data/ 	#导入初始化数据
    nohup /bin/bash /home/leanote/bin/run.sh >> /var/log/leanote.log 2>&1 &	#启动 Leanote 服务
###通过访问 http://<您的 CVM IP 地址>:9000 就可以了使用自己的笔记本。
    初始化账户: admin
    初始化密码: abc123

【2】leanote导出PDF
Leanote 蚂蚁笔记 自建私人云服务简单流程 Centos 7.4
Centos 7 安装 Wkhtmltopdf

###导出PDF需安装wkhtmltopdf
#wkhtmltopdf下载地址
    https://github.com/wkhtmltopdf/wkhtmltopdf/releases/
    wget --no-check-certificate  "https://github-production-release-asset-2e65be.s3.amazonaws.com/271714/3f90e5d2-6e42-11e8-9f4a-7d8d6460a726?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200416%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200416T060910Z&X-Amz-Expires=300&X-Amz-Signature=a46ac21285c3d69e7f1413c952a1fc73a3954fe7d6d62366106210e8e7797553&X-Amz-SignedHeaders=host&actor_id=25061151&repo_id=271714&response-content-disposition=attachment%3B%20filename%3Dwkhtmltox-0.12.5-1.centos7.x86_64.rpm&response-content-type=application%2Foctet-stream" -O wkhtmltox-0.12.5-1.centos7.x86_64.rpm  
#安装,centos7.4下默认安装路径就是/usr/local/bin/wkhtmltopdf
    rpm -ivh wkhtmltox-0.12.5-1.centos7.x86_64.rpm
    find / -name wkhtmltopdf
#测试wkhtmltopdf
    /usr/local/bin/wkhtmltopdf http://www.baidu.com ./test.pdf

###ubuntu 安装wkhtmltopdf
    sudo apt-get update
    sudo apt-get install xvfb
    sudo apt-get install wkhtmltopdf
    sudo pip install pdfkit	#pdfkit,在wkhtmltopdf基础之上,进行了更丰富的包装
常见问题
  • 生成的字符都是方块

安装standard PostScript fonts:yum install urw-fonts libXext openssl-devel

  • 中文显示为方块

将 windows下的字体,例如simsun.ttc ,或者msyh.ttf,或者msyhbd.ttf 复制到 linux系统 /usr/share/fonts 下

  • ubuntu 下wkhtmltopdf依赖于X server的解决方案
qt.qpa.screen: QXcbConnection: Could not connet to display
Cloud not connect to any X display

#解决方案
    #在 xvfb(X virtual framebuffer)中运行wkhtmltopdf, xvfb能够直接处理图形化功能,给应用程序提供一个虚拟的X server。
    sudo apt-get install xvfb
    #在xvfb中运行wkhtmltopdf
    xvfb-run wkhtmltopdf $source $destination

【3】制作 leanote docker 镜像
参考链接

leanote 使用 mongodb 存储数据,如果把 mongodb 单独做成一个镜像,初始化数据时比较麻烦,所以最后还是决定把 mongodb 和 leanote 放到同一个镜像里边。
docker容器启动后,必须有一个进程前台运行,这个前台进程结束时docker容器结束,docker stop 时会给前台进程发信号,所以前台进程可以正常结束,而后台进程不会收到结束信号,前台进程结束时后台进程会被强制结束。
如果只是简单的启动 mongodb 和 leanote,mongodb 后台运行,leanote前台运行,结束容器的时候,leanote会正常结束,而mongodb则会非法结束,引起mongodb数据不一致。
其中一个解决办法就是使用supervisor作为前台进程,其他进程作为supervisor的子进程。
  • 制作leanote docker镜像
#编写Dockerfile文件
    FROM registry.cn-hangzhou.aliyuncs.com/shuangmu/supervisor:1.0
    MAINTAINER shuangmu<120156206@qq.com>
    
    COPY init.sh /root/init.sh
    COPY mongodb.ini /etc/supervisord.d/
    COPY leanote.ini /etc/supervisord.d/
    COPY leanote-linux-amd64-v2.6.1.bin.tar.gz /root/
    COPY mongodb-linux-x86_64-3.2.9.tgz /root/
    COPY wkhtmltox-0.12.5-1.centos7.x86_64.rpm /root/
    COPY simsun.ttc /usr/share/fonts/
    
    RUN mkdir -p /root/db/ && \
        cd /root && \
        tar -xvf /root/mongodb-linux-x86_64-3.2.9.tgz && \
        tar -xvf /root/leanote-linux-amd64-v2.6.1.bin.tar.gz && \
        mv /root/mongodb-linux-x86_64-3.2.9 /root/mongodb && \
        yum -y update && yum  install -y fontconfig freetype libX11 libXext libXrender libjpeg libpng openssl xorg-x11-fonts-75dpi xorg-x11-fonts-Type1 && yum clean all && \
        rpm -ivh wkhtmltox-0.12.5-1.centos7.x86_64.rpm && \
        mkdir -p /root/conf_bak && \
        cp /root/leanote/conf/* /root/conf_bak && \
        chmod a+x /root/init.sh && \
        chmod a+x /root/leanote/bin/run.sh
    
    EXPOSE 9000
    
    CMD ["/usr/bin/supervisord"]
#编写supervisor文件
    vim mongodb.ini
        [program:mongodb]
        command=/root/mongodb/bin/mongod --dbpath /root/db
    vim leanote.ini
        [program:leanote]
        command=/bin/bash -c "/root/init.sh && /root/leanote/bin/run.sh"
#init.sh初始化数据库。通过判断是否存在文件/root/db/already-init-db来确定是否需要初始化数据库。数据库初始化时创建该文件。leanote的初始数据存放于/root/leanote/mongodb_backup/leanote_install_data/目录下
    #!/bin/bash
    #set -m
     
    # 如果数据库未初始化,则初始化数据库
    if [ ! -f "/root/db/already-init-db" ] ; then
    touch /root/db/already-init-db
    /root/mongodb/bin/mongorestore -h localhost -d leanote --dir /root/leanote/mongodb_backup/leanote_install_data/
    fi
     
    # 如果配置文件不存在,则复制配置文件
    if [ ! -f "/root/leanote/conf/app.conf" ] ; then
    cp /root/conf_bak/* /root/leanote/conf/
    fi
#生成镜像
    docker build -t leanote:2.6.1 --rm --no-cache .
#运行容器
    docker run --name leanote -d -v /etc/localtime:/etc/localtime:ro -v /docker/leanote/db:/root/db -v /docker/leanote/conf/:/root/leanote/conf/ -v /docker/leanote/files:/root/leanote/files -p 9000:9000 leanote:2.6.1
  • 容器启动后的操作
#修改conf/app.conf文件
#修改admin账户密码(初始密码 abc123)
#登录后台修改mongodb Tool 配置
    mongodump path:/root/mongodb/bin/mongodump
    mongorestore path:/root/mongodb/bin/mongorestore
#其他操作
  • 优化镜像
    FROM registry.cn-hangzhou.aliyuncs.com/shuangmu/supervisor:1.0
    MAINTAINER shuangmu<120156206@qq.com>
    
    COPY init.sh /root/init.sh
    COPY mongodb.ini /etc/supervisord.d/
    COPY leanote.ini /etc/supervisord.d/

    RUN yum -y update && yum  install -y wget fontconfig freetype libX11 libXext libXrender libjpeg libpng openssl xorg-x11-fonts-75dpi xorg-x11-fonts-Type1 && yum clean all && \
        wget http://172.18.0.1:8081/leanote_build/leanote-linux-amd64-v2.6.1.bin.tar.gz -O /root/leanote-linux-amd64-v2.6.1.bin.tar.gz && \
        wget http://172.18.0.1:8081/leanote_build/mongodb-linux-x86_64-3.2.9.tgz -O /root/mongodb-linux-x86_64-3.2.9.tgz && \
        wget http://172.18.0.1:8081/leanote_build/wkhtmltox-0.12.5-1.centos7.x86_64.rpm -O /root/wkhtmltox-0.12.5-1.centos7.x86_64.rpm && \
        wget http://172.18.0.1:8081/leanote_build/simsun.ttc -O /usr/share/fonts/simsun.ttc && \
        mkdir -p /root/db/ && \
        cd /root && \
        tar -xvf /root/mongodb-linux-x86_64-3.2.9.tgz && \
        tar -xvf /root/leanote-linux-amd64-v2.6.1.bin.tar.gz && \
        mv /root/mongodb-linux-x86_64-3.2.9 /root/mongodb && \
        rpm -ivh wkhtmltox-0.12.5-1.centos7.x86_64.rpm && \
        rm -f /root/leanote-linux-amd64-v2.6.1.bin.tar.gz && \
        rm -f /root/mongodb-linux-x86_64-3.2.9.tgz && \
        rm -f /root/wkhtmltox-0.12.5-1.centos7.x86_64.rpm && \
        mkdir -p /root/conf_bak && \
        cp /root/leanote/conf/* /root/conf_bak && \
        chmod a+x /root/init.sh && \
        chmod a+x /root/leanote/bin/run.sh
    
    EXPOSE 9000
    
    CMD ["/usr/bin/supervisord"]
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐