『亚马逊云科技产品测评』活动征文|通过Lightsail搭建个人笔记

news2024/9/22 1:31:08

提示:授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道

在这里插入图片描述

文章目录

  • 前言
  • 实践知识储备
  • Lightsail介绍
  • Leanote介绍
  • 实践流程
  • 一、启动Lightsail实例
  • 二、开放Lightsail安全组
  • 三、下载 `leanote` 二进制版
  • 四、安装 `mongodb`
    • 4.1 测试`mongodb`安装
  • 五、导入初始数据
    • 六、配置`leanote`
    • 七、运行`leanote`
  • 总结
  • 部署常见问题
    • 1. no reachable server
    • 2. 修改Leanote运行端口
    • 3. 配置Nginx


前言

作为一个程序员,编写文档成为日常生活中必不可少的一件事情,有些是公司内部的文档资料,还有是希望写一些自己的学习笔记,我在撰写笔记的时候就发现那些笔记平台都渐渐走向付费模式了,图片上传要付费,同步也要付费,新增的功能更不必说,其实我只是想写个笔记而已,我一直在想能不能做一个自己的笔记平台。然后最近在开源社区发现了 Leanote,这是包含富文本编辑器和Markdown编辑器开源笔记系统,只要我们有自己的服务器就能搭建,可以把笔记和图片都放到自己的服务器,同时保障了隐私也避免了被笔记平台限制。刚好最近也注册了AWS,免费领取了12个月EC2和3个月Lightsail使用时间,于是我就把系统搭建在了 AWSLightsail 实例上,大家感兴趣的可以跟着我一起搭建!


提示:以下是本篇文章正文内容,下面案例可供参考

实践知识储备

在我们进行实践的时候,我们需要对AWSLightsail有一定了解,需要了解一些Linux的基本操作,如包管理、SSH连接等,因为笔记需要存储到数据库系统,所以你还需要了解一些关于MongoDB的基本操作

Lightsail介绍

AWS Lightsail是一项非常棒的云计算服务,可以帮助个人和小型企业快速启动和管理他们的应用程序和网站。

它提供了一种简单而强大的方式来启动虚拟服务器,并且我们可以选择多种不同的应用程序模板,比如WordPressGhost等,在几分钟内就能搭建起一个完整的网站。而且,AWS Lightsail还提供了一个直观的用户界面,让我们可以轻松管理服务器和网络设置。可以根据自己的需求选择不同的实例规格和存储选项,以及自动扩展功能来应对流量增长。

AWS Lightsail还具备出色的可靠性和安全性。它使用AWS云基础设施作为后盾,这意味着我们可以放心地将数据存储在高度安全的环境中,并且直接获得到可靠的性能和稳定性。

对于那些对成本敏感的朋友来说,AWS Lightsail也是一个不错的选择。它提供了灵活的计费模型,我们只需支付实际使用的资源,没有任何隐藏费用。而且,AWS Lightsail与其他AWS服务集成得非常方便快捷。

大家可以通过官网了解:https://aws.amazon.com/cn/lightsail/?nc2=h_ql_prod_fs_ls

在这里插入图片描述

Leanote介绍

介绍引用自官方开源文档

Leanote 是一个高效笔记开源系统,Leanote 有易操作的界面, 包含一款富文本编辑器和Markdown编辑器,让我们的笔记记录更轻松和高效。对高阶用户,还提供VimEmacs 编辑模式,助推写作速度更上层楼。

  • 知识管理: Leanote 灵活而强大的“笔记本-笔记-标签”系统,让它成为你个人知识管理的利器。
  • 分享: 你可以通过Leanote同好友分享知识、想法和经历, 邀请好友加入你的笔记簿,通过云端交流信息。
  • 协作: Leanote协助你与同事之间相互协作,激荡新思路,随时随地头脑风暴。
  • 博客: Leanote也可以作为你的个人博客, 把你的知识传播的更远!

其它特性

  • 支持Markdown编辑
  • 写作模式
  • VimEmacs 编辑模式
  • 支持PDF导出
  • 支持批量操作
  • 博客自定义主题, 实现高度定制化

一套完整的、全平台覆盖的软件套装,包括了web、桌面、安卓、IOS设备,而且全部开源!支持团队协同,企业级私有云部署。

  • 官方文档:https://leanote.com/

实践流程

  1. 启动Lightsail实例
  2. 开放Lightsail安全组
  3. 下载 leanote 二进制版。
  4. 安装 mongodb
  5. 导入初始数据。
  6. 配置 leanote
  7. 运行 leanote

一、启动Lightsail实例

从首页进入控制台后,在搜索框输入:Lightsail,进入Lightsail控制台

在这里插入图片描述
进入到 instance 列表页后,我们会看到右上角有一个 Create instance,点击进入开始创建实例

在这里插入图片描述

根据我们擅长的系统进行选择,这里我们的环境是:

  • 平台:Linux
  • 系统:Ubuntu20.04LTS

在这里插入图片描述
选择套餐3,2GB 2CPU

滑到最下点击 Create instance 就可以开始创建实例,创建完成后返回列表页就可以看到我们的实例了

在这里插入图片描述

二、开放Lightsail安全组

为了保证笔记搭建起来能被公网访问,我们需要对防火墙进行开放,默认 Lightsail 是只开放了 8022 端口的

点击实例,然后点击 Networking

在这里插入图片描述
我们会看到有一个 IPv4 Firewall,是用来配置流量进出的,这里我们添加一个规则 Add rule,选择 All TCP ,点击 Create 即可,这样就把我们所有的流量开放了,但是在生产环境不建议咱们这么做,还是需要对每个服务需要开放的端口进行控制,而不是全部放开。

三、下载 leanote 二进制版

配置好Lightsail后,我们就可以对 leanote 进行部署了,我们需要先下载我们需要部署的应用代码,可以从这里下载 leanote 最新二进制版。

这里我们安装一个 v2.6.1 的最新版:

wget http://sourceforge.net/projects/leanote-bin/files/2.6.1/leanote-linux-amd64-v2.6.1.bin.tar.gz
tar -xzvf leanote-linux-amd64-v2.6.1.bin.tar.gz 

在这里插入图片描述

代码下载好后,因为运行起来还需要环境依赖,所以我们先接着往下进行配置

四、安装 mongodb

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

  • 64位 linux mongodb 5.0.22 下载链接: https://repo.mongodb.org/apt/ubuntu/dists/focal/mongodb-org/5.0/multiverse/binary-amd64/mongodb-org-server_5.0.22_amd64.deb
    在这里插入图片描述
  • 下载下来是一个 deb:
wget https://repo.mongodb.org/apt/ubuntu/dists/focal/mongodb-org/5.0/multiverse/binary-amd64/mongodb-org-server_5.0.22_amd64.deb
  • 通过 dpkg安装
dpkg -i mongodb-org-server_5.0.22_amd64.deb

4.1 测试mongodb安装

  • 先在/home/root下新建一个目录data存放mongodb数据:
mkdir /root/data
  • 用以下命令安装客户端启动mongod 测试:
# 需要先安装客户端
apt update
apt install mongodb-clients
mongod --dbpath /root/data

在这里插入图片描述

这时mongod已经启动,重新打开一个终端, 键入mongo进入交互程序:

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

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


五、导入初始数据

leanote 初始数据存放在 /root/leanote/mongodb_backup/leanote_install_data中。

  • 打开终端, 输入以下命令导入数据。
mongorestore -h localhost -d leanote --dir /root/leanote/mongodb_backup/leanote_install_data/

这里大家可能会出现: Command 'mongorestore' not found, but can be installed with ,我们需要先安装一下 mongo-tools,然后再重新运行导入数据

apt update
apt install mongo-tools
#重新导入数据
mongorestore -h localhost -d leanote --dir /root/leanote/mongodb_backup/leanote_install_data/

在这里插入图片描述

看到 done ,即表示完成了,现在在mongodb中已经新建了leanote数据库, 可用命令查看下leanote有多少张"表":

# 通过client连接
mongo

# 查看数据库
show dbs 

admin    0.000GB
config   0.000GB
leanote  0.002GB
local    0.000GB

# 切换到leanote数据库
use leanote

# 查看表
show collections 
album
sattachs
blog_comments
blog_likes
blog_singles
configs
email_logs
....

在这里插入图片描述

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

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

六、配置leanote

leanote的配置存储在文件 conf/app.conf 中。我们需要修改配置中的app.secret,这是一个密钥,不能用默认的, 否则会有安全隐患!我这里随便把他改成了一个字符

在这里插入图片描述

其他配置可以暂时不修改


七、运行leanote

注意: 在此之前请确保mongodb已在运行!

  • 执行以下命令:
cd /root/leanote/bin
bash run.sh

最后出现以下信息证明运行成功:

...
DEBUG 06:04:21  revel controller.go:523: RegisterController:Registered controller  section=controller controller=App\\memberuser
DEBUG 06:04:21  revel server.go:106: InitServerEngine: Found server engine and invoking  section=server name=go 
Listening on.. 0.0.0.0:9000

在这里插入图片描述

恭喜你, 打开浏览器输入: http://localhost:9000 体验leanote吧!效果如下:

在这里插入图片描述
我们使用管理员账号登录一下:

  • 账号:admin, 密码: abc123

在这里插入图片描述

总结

实践到这里就已经是成功基于AWS Lightsail部署Leanote,并且实现了笔记的私有化。通过利用AWS Lightsail提供了简单而强大的云计算服务,让我们在几分钟内轻松搭建起Leanote实例。而且Leanote是一个开源的笔记应用程序,我可以完全控制我的笔记数据,数据存储也在高度安全的AWS云环境中,我再也不用担心隐私问题了。

AWS Lightsail 特别适合个人开发者进行快速测试和验证想法,可以让我们在几分钟内启动一个完整的应用程序。这大大加快了开发周期,能够迅速构建原型、测试功能和验证概念。AWS Lightsail 还提供了直观的用户界面和简化的管理工具,我们可以轻松管理他们的应用程序和服务器设置。通过几个简单的步骤启动、监控和扩展应用程序,而无需深入了解复杂的云基础设施。

部署常见问题

1. no reachable server

请确保数据库是否启动, 如果确定已启动 可以 尝试将 conf/app.conf db.host=localhost 改为 db.host=127.0.0.1

修改后请重新启动Leanote.

2. 修改Leanote运行端口

比如想以8080端口启动.

修改conf/app.conf:

http.port=8080
site.url=http://localhost:8080

请重启Leanote, 使用http://localhost:8080访问.

3. 配置Nginx

假设Leanote运行的端口是9000, 域名为a.com, 那么nginx.conf可以配置如下:

# 本配置只有http部分, 不全
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    
    upstream  a.com  {
        server   localhost:9000;
    }

    # http
    server
    {
        listen  80;
        server_name  a.com;
        
        # 强制https
        # 如果不需要, 请注释这一行rewrite
        rewrite ^/(.*) https://jp_linode2.com/$1 permanent;
        
        location / {
            proxy_pass        http://a.com;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }
    
    # https
    server
    {
        listen  443 ssl;
        server_name  a.com;
        ssl_certificate     /root/a.com.crt; # 修改路径, 到a.com.crt, 下同
        ssl_certificate_key /root/a.com.key;
        location / {
            proxy_pass        http://a.com;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1238019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何用CHAT写励志文章?

问CHAT:写一篇以《过了60岁要积极面对身体疾病的坎儿》为题目,写一篇300字励志文章 CHAT回复: 标题:《过了60岁要积极面对身体疾病的坎儿》 人生,有时会像一趟不期而遇的旅程,各自带着乐观或悲观、阳光或…

Transmit v5.10.3(FTP客户端)

Transmit 5是一款由Panic开发的功能强大的FTP(文件传输协议)客户端软件,专为 macOS 平台设计。它提供了简单、直观的界面和丰富的功能,使用户能够轻松地管理和传输文件。 在文件传输和同步方面,Transmit 5提供了强大的文件同步功能&#xff…

基于Android校园交流uniAPP+vue 微信小程序v7e1

本系统结合现今XX校园交流APP的功能模块以及设计方式进行分析,使用Android平台和Ssm框架进行开发设计,具体研究内容如下: (1) 系统管理员主要对用户管理、类型管理、娱乐天地管理、投诉举报管理、学习平台、我的收藏管理、系统管理等功能进…

小米智能摄像机云台版pro 拆解教程

拆解原因 因为设备提示无内存卡,摄像头手动调整方向到最上面,就可以看到内存卡插槽 但是这个摄像头因为内存卡弹出来了,导致无法插入也无法取出,所以决定拆开重新安装 第一步,拆开后即可拔出底座,拔掉摄像…

2023软件测试的4个技术等级,你在哪个级别?

最近,我们讨论了软件测试工程的的分级,大家都贡献了自己的想法,对于大家来说,软件测试人的分级其实也代表了我们的进阶方向,职业发展。总体来说,测试工程师未来发展有三个方向: 技术精英 行业专…

RK3568开发板在工控工业物联网网关方面的应用

在数字化转型的浪潮中,工控物联网关产品扮演着重要的角色。这些产品通过连接工业设备和网络,为数据传输和分析提供了便利。而迅为RK3568核心板作为一款高性能的芯片,为工控物联网关产品的性能提升和功能扩展提供了强大的支持。 迅为RK3568核心…

【Java】智慧工地管理系统源代码,支持二次开发,SaaS模式

智慧工地系统围绕工程现场人、机、料、法、环及施工过程中质量、安全、进度、成本等各项数据满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效。 一、行业现状 1、施工现场管理难:安全事故频发,人工巡检难度大,质量进度协同难等…

自动化发展趋势以及自动化测试常见问题解析

前言 ⾃动化接⼝测试会越来越受到重视 在移动互联⽹时代,对于质量的要求⽐PC时代⾼的多,⽽投⼊产出⽐最⾼的⾃动化接⼝测试,将会是⼤部分公司的⾸选⽅向,但需要严格掌握⼀门语⾔ 持续集成是⽬前⾮常流⾏的开发⽅式,…

在有springSecurity或者若依项目中获取当前系统登录的用户信息

方法一(springSecurity自带的) AuthenticationPrincipal 是 Spring Security 框架中的一个注解,用于获取当前已认证用户的 principal(即用户身份信息)。 方法二(若依项目自带的) (1…

最新AIGC创作系统ChatGPT网站源码,Midjourney绘画系统,支持最新GPT-4-Turbo模型,支持DALL-E3文生图

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

七、通过libfdk_aac编解码器实现aac音频和pcm的编解码

前言 测试环境: ffmpeg的4.3.2自行编译版本windows环境qt5.12 AAC编码是MP3格式的后继产品,通常在相同的比特率下可以获得比MP3更高的声音质量,是iPhone、iPod、iPad、iTunes的标准音频格式。 AAC相较于MP3的改进包含: 更多的采…

【Python】Vscode解决Python中制表符和空格混用导致的缩进问题

【Python】Vscode解决Python中制表符和空格混用导致的缩进问题 文章目录 【Python】Vscode解决Python中制表符和空格混用导致的缩进问题1. 问题来源2. 解决Reference 1. 问题来源 在python中使用缩进来进行代码块的分区,通常来说python的一个缩进包含4个空格&#…

微服务学习|Feign:快速入门、自定义配置、性能优化、最佳实践

RestTemplate方式调用存在的问题 先来看我们以前利用RestTemplate发起远程调用的代码 存在下面的问题 代码可读性差,编程体验不统一 参数复杂URL难以维护 Feign的介绍 Feign是一个声明式的http客户端,官方地址: https://github.com/OpenFeign/feign …

轻松整理文件夹,将视频文件全部归类到另一个文件夹!

如果你需要整理文件夹中的文件,将同一类别的文件归纳到一起,可以更加方便地管理和查找。现在,我们有一个简单而实用的方法,可以将文件夹中的所有视频文件归类到另一个文件夹中,让你的文件管理更加有序和高效。 首先&am…

《向量数据库指南》——向量数据库Milvus Cloud搭建Excel公式编辑器助手

引言 在日常工作中,Excel是我们经常使用的办公工具,而熟练应用Excel公式对于提高工作效率非常重要。然而,有时候我们会遇到一些复杂的需求,需要用到较为专业的Excel公式,而这正是Excel公式编辑器助手的用武之地。本文将介绍如何利用向量数据库Milvus Cloud搭建GPT大模型和…

【顺序表的应用-通讯录的实现】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、顺序表的应用 1. 基于动态顺序表实现通讯录 1、功能要求 2、代码实现 二、通讯录的代码实现 1.通讯录的底层结构(顺序表) (1)思路展示 (2)底层代码实现(顺序表…

如何有效解决UDP协议传输问题实现快速安全的文件传输

随着互联网技术的不断发展,UDP协议作为一种快速、简单的传输协议被广泛应用于文件传输领域。然而,UDP协议传输过程中也存在着一些问题,如传输速度不稳定、数据丢失等,这些问题会影响到文件传输的效率和安全性。本文将介绍UDP协议传…

为什么要学习 Linux?

为什么要学习 Linux? 用 Linus 本人的话来说,用户不需要接触到操作系统。操作系统的功能是给应用程序提供API,因而,只有开发人员才需要学习操作系统。 最近很多小伙伴找我,说想要一些Linux的资料,然后我根…

公众号留言功能怎么没有了?

为什么公众号没有留言功能?2018年2月12日之后直到现在,新注册公众号的运营者会发现一个问题:无论是个人还是企业的公众号,在后台都找不到留言功能了。这对公众号来说绝对是一个极差的体验,少了一个这么重要的功能&…

看图说话:对脏读、不可重复度、幻读进行总结

1、脏读 「事务B」将 id 为 1 的用户 name 修改为“小卡”,事务未提交。「事务A」查询 id 为 1 的用户数据,此时 name 已为“小卡”。 2、不可重复度 「事务A」第一次读取 id 为 1 的用户,name 是 “卡卡”。「事务B」将 id 为 1 的用户 nam…