0
点赞
收藏
分享

微信扫一扫

docker+nginx搭建私有云笔记leanote

小禹说财 2022-03-12 阅读 104

前提条件,部署docker;部署docker-compose

下载leanote源码

从github下载leanote源码

国内访问不到github的,可以下载我上传的文件,在资源库中,还有相关的主题

开始部署

解压源文件unzip leanote-master.zip
部署mongo服务,我还是倾向于使用docker管理,不知道怎么使用docker部署mongo的可以参看我其他的博客,有专门的介绍。这里也可以使用官方的部署mongo的方法
不管于倾向于哪种方式,能有一个可以访问的mongoDB数据库可以使用就好了

部署MongoDB

方式一:使用官网方法部署

到 mongodb 官网 下载相应系统的最新版安装包,或者从以下链接下载旧版本:

  • 64位 linux mongodb 3.0.1 下载链接: 64位 linux mongodb 3.0.1 下载链接: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.1.tgz

下载到 /home/user1下, 直接解压即可:

$> cd /home/user1
$> tar -xzvf mongodb-linux-x86_64-3.0.1.tgz/

为了快速使用mongodb命令, 可以配置环境变量。编辑~/.profile/etc/profile 文件, 将mongodb/bin路径加入即可:

$> sudo vim /etc/profile

/etc/profile中添加以下行,注意把用户名(user1)和相应的文件目录名(mongodb-linux-x86_64-3.0.1)替换成自己系统中的名称

export PATH=$PATH:/home/user1/mongodb-linux-x86_64-3.0.1/bin

保存修改后,在终端运行以下命令使环境变量生效:

$> source /etc/profile

测试mongoDb的安装

先在/home/user1下新建一个目录data存放mongodb数据:
mkdir /home/user1/data
用以下命令启动mongod:
mongod --dbpath /home/user1/data
这时mongod已经启动,重新打开一个终端, 键入mongo进入交互程序:

$> mongo
> show dbs
...数据库列表

mongodb安装到此为止, 下面为mongodb导入leanote初始数据。

导入初始数据

导入之前 如果存在leanote数据库,先将其删除
leanote初始数据存放在解压出来的源码leanote/mongodb_backup/leanote_install_data中。
打开终端, 输入以下命令导入数据。
mongorestore -h localhost -d leanote --dir /home/user1/leanote/mongodb_backup/leanote_install_data/
现在在mongodb中已经新建了leanote数据库, 可用命令查看下leanote有多少张"表":

$> mongo
> show dbs # 查看数据库
leanote	0.203125GB
local	0.078125GB
> use leanote # 切换到leanote
switched to db leanote
> show collections # 查看表
files
has_share_notes
note_content_histories
note_contents
....

初始数据的users表中已有2个用户:

user1 username: admin, password: abc123 (管理员, 只有该用户才有权管理后台, 请及时修改密码)
user2 username: demo@leanote.com, password: demo@leanote.com (仅供体验使用)

方式二:使用docker一键部署mongo

docker-compost.yml文件

version: "2"

services:
  mongo:
    image:  mongo:3.2.4
    container_name: mongo
    # command: mongod --auth
    mem_limit: 1g
    restart: always
    ports:
     - "7017:27017/tcp"
    volumes:
     - /etc/localtime:/etc/localtime
     - $PWD/data/db:/data/db

执行命令docker-compose up -d
docker ps 正常有mongo的容器,就表示Mongo创建成功
将源码的 mongodb_backup/leanote_install_data文件压包
tar -zcvf leanote_install_data.tar.gz ./leanote_install_data
复制到容器
docker cp leanote_install_data.tar.gz mongo:/ 将mongo文件复制到mongo容器的根目录
进入容器
docker exec -it mongo bash
tar -zxvf leanote_install_data.tar.gz
还原leanote数据库
mongorestore -h localhost -d leanote --dir ./leanote_install_data/
操作步骤
可以查看到数据库中默认给我们创建了两个用户,一个访客,一个admin
admin的邮箱这里初始化时,时默认的邮箱,且在UI上修改不了,这里顺便把admin的邮箱修改一下,后面方便进行邮箱验证,邮箱密码找回
db.users.update({"Username" : "admin"},{$set: { "Email" : "3xxx@qq.com"}})

部署leanote

创建leanote文件夹

  • 将leanote compose文件复制到leanote下面
  • 将leanote源码包的 conf 文件夹 拷贝到leanote下面
    • 修改 app.conf,配置mongodb的链接地址,site.url的地址(注意这里必须要是外网可访问的地址,是用来给系统上传文件,图片等使用的,用户头像,每次访问的是该地址)
    • 把app.secret=后面的代码修改其中一部分,官方提示,不修改,可能会有安全隐患
  • 将leanote源码包的public 拷贝到leanote/data/下面并在data目录下创建files文件夹,用来存放pdf文件

leanote 的 docker-compose文件

version: '2'
services:
  leanote:
    image: foolishflyfox/leanote:latest
    restart: always
    user: root
    mem_limit: 1g
    network_mode: "host"
    container_name: leanote
    ports:
      - "5001:9000"
    volumes:
      - ./data/public:/leanote/public
      - ./data:/leanote/data
      - ./conf/app.conf:/leanote/conf/app.conf
      - /etc/localtime:/etc/localtime

目录结构如下:
目录结构
执行docker-compose up -d
docker ps 看到leanote容器创建,表示启动成功
docker logs -f leanote 查看日志
出现监听端口即表示启动成功

DEBUG 12:41:28  revel server.go:106: InitServerEngine: Found server engine and invoking  section=server name=go 
Listening on.. 0.0.0.0:9000

访问云笔记系统,发现没有样式,查看docker里的public目录,发现没有把宿主机的静态文件挂载到容器里,是我之前的挂载配置有问题,修改docker-compose文件的挂载路径,即可。
浏览器直接访问ip:端口
默认admin账号的密码abc123登录后尽快修改密码

nginx配置<如有需要可以进行配置>

nginx.conf文件样例

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  10240;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

       log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';

    log_format json '{"time_iso8601":"$time_iso8601",'
    '"host":"$host",'
    '"uri":"$uri",'
    '"connection":$connection,'
    '"connection_requests":$connection_requests,'
    '"server_addr":"$server_addr",'
    '"server_port":$server_port,'
    '"remote_addr":"$remote_addr",'
    '"remote_user":"$remote_user",'
    '"http_x_user":"$http_x_user",'
    '"http_x_forwarded_for":"$http_x_forwarded_for",'
    '"http_user_agent":"$http_user_agent",'
    '"http_referer":"$http_referer",'
    '"body_bytes_sent":$body_bytes_sent,'
    '"request":"$request",'
    '"request_uri":"$request_uri",'
    '"request_length":$request_length,'
    '"request_time":$request_time,'
    '"request_method":"$request_method",'
    '"upstream_connect_time":"$upstream_connect_time",'
    '"upstream_header_time":"$upstream_header_time",'
    '"upstream_response_time":"$upstream_response_time",'
    '"upstream_addr":"$upstream_addr",'
    '"status":$status}';
	
    access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
	upstream leanote9000{
		server 127.0.0.1:9000;
	}

	  
server {
        listen       9001;
        server_name  localhost;
        client_max_body_size 10M;
        root  /root/app/compose/leanote/data/public;

        location / {
          proxy_read_timeout  600;
          proxy_pass http://leanote9000;
          #root   html;
          #index  index.html index.htm;
          proxy_set_header Host                $host:$server_port;
          proxy_set_header X-Real-IP           $remote_addr;
          proxy_set_header X-Forwarded-For     $proxy_add_x_forwarded_for;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "";
        }
        location ~ (/index.html|/html/loginPage.html|/css/wms/|/js/wms/|/images/packing/|/asset/media/audio/|/images/prod-logo.png|/images/prod-logo.svg|/images/wms/widgets/|/assets/media/audio/|/images/wms/returnReceipt/|/css/font-awesome-5.15.4/) {
          root /root/app/compose/leanote/data/public/;
        }
}
}

leanot系统的相关设置

配置发件箱

点击用户头像进入后台管理
在这里插入图片描述

修改admin密码

修改头像,这时候,就会用到 app.conf 里 site.url 的参数
验证邮箱,用到之前修改mongoDB中admin的邮箱,和上面配置的发件箱信息
修改admin密码,切记一定要把默认密码修改掉
在这里插入图片描述
还有一些到处路径什么的,大家就看着设置就好,不设置,就是默认路径了。
好了这就是今天的分享,整理博客花了3小时,珍惜,珍惜

举报

相关推荐

0 条评论