『亚马逊云科技产品测评』活动征文|基于Lightsail搭建私有匿名搜索引擎SearXNG

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

在这里插入图片描述

一、前言

随着互联网的发展,搜索引擎越来越智能,提供的信息也通过多种算法推荐,但是毕竟是商业公司在做,难免会有一些商业广告,通过关键字搜索往往前几都是广告联盟,并且还是跟你搜索关键字相匹配的,很多朋友搜索完之后莫名其妙就进入到了广告页面,这都是因为厂商收集了你的搜索所携带的信息,那怎么解决呢?最近看到一个开源的元搜索引擎 SearXNG,你可以理解成集众多主流搜索引擎优势于一身。当我搜索一个问题时,它不但能在GoogleBing找答案,还会同时帮我在其他搜索引擎里头翻翻,这样找到的信息会更丰富全面,而且可以保证你的搜索隐私,搜索请求全部由服务器发送,每次搜索也会生成随机浏览器指纹,这样我们的隐私泄露就大大降低。

然后最酷的一点就是,SearXNG不记录我们的搜索行为,也不会弹出烦人的广告。整个搜索过程很干净简单,你说这不香吗? 我们来一起研究研究如何部署一个吧!

二、SearXNG 介绍

  • 官方文:https://docs.searxng.org/index.html

以下介绍取自官方文档

SearXNG 是一个免费的互联网元搜索引擎,它聚合了 70 多个搜索服务的结果。用户既不会被跟踪,也不会被分析。此外,SearXNG 还可以通过 Tor 来实现在线匿名。

2.1 SearXNG 如何保护隐私?

无论实例类型如何(私有、公共),SearXNG 都以多种方式保护用户的隐私。从搜索请求中删除私人数据有以下三种形式:

  • 从发送至搜索服务的请求中删除私人数据
  • 不通过搜索服务转发来自第三方服务的任何内容(例如广告)
  • 从进入结果页面的请求中删除私有数据

删除私人数据意味着不向外部搜索引擎发送 cookie 并为每个请求生成随机浏览器配置文件。因此,公共实例还是私有实例处理请求并不重要,因为在这两种情况下它都是匿名的。IP 地址将是实例的 IP。但 SearXNG 可以配置为使用代理或 Tor。 也支持结果代理。

与大多数搜索服务不同,SearXNG 不提供广告或跟踪内容。因此,私人数据不会转发给可能将其货币化的第三方。除了保护用户免受搜索服务的影响之外,引用页面和搜索查询都对访问的结果页面隐藏。

三、启动Lightsail实例

我们要想私有化部署,首先得有一台云服务器,这里我使用了AWSLightsail ,因为Lightsail价格很便宜,而且启动的实例非常安全、可用性高

首先我们先进入到Lightsail的控制台,直接在浏览器输入地址,回车进入:

https://lightsail.aws.amazon.com/ls/webapp/home/instances

你会看到如下界面:

在这里插入图片描述
这里是管理实例的列表页,我们点击按钮 Create Instance 进行实例创建

在这里插入图片描述
Lightsail 是有两种启动方式可以选择,一种是 Apps + Os,另一种是 OS Only,对于需要部署自己开发的应用时我们会采用 Os Only,如果我们需要部署的软件在 Apps 中提供了,那么我们可以选择直接选择 Apps+Os,这样可以省去我们部署应用的时间,因为 SearXNG 是不在 Apps 中的,所以我们选择 Os Only

这里我最后的环境是:

  • Platform:Linux/Unix
  • blueprint: OS Only
  • OS: Ubuntu20.04

在这里插入图片描述
套餐我这里选择了专门免费的 2GB 2vCPUs 配置,配置好后滑到最下面点击 Create Instance 即可完成实例创建

四、安装宝塔环境

这里为了方便,我们直接选择集成环境宝塔,它提供了全套的LAMP环境,可以很方便我们部署一些其他应用,并且有可视化界面操作,失误率可以大大降低

大家可以根据自己的操作系统在文档中找到安装方式

  • 官方文档:https://www.bt.cn/new/download.html

如果大家不知道,或者不确定自己是什么系统,那么直接选择通用安装,即万能安装脚本,执行以下命令即可

if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec

完成安装后会弹出登录入口以及账户密码

在这里插入图片描述
登录后会提示安装软件,点击一键安装即可

在这里插入图片描述

五、部署SearXNG

安装好基本的LAMP环境后,我们要开始部署 SearXNG 了,因为我们是 Ubuntu,所以我们会使用 apt 管理工具进行依赖安装,Centos 的小伙伴需要注意

5.1 安装python运行环境

SearXNG 是通过 PythonFlask 框架提供服务的,所以我们需要先安装一下基础的 Python 环境

sudo -H apt-get install -y \
    python3-dev python3-babel python3-venv \
    uwsgi uwsgi-plugin-python3 \
    git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev

5.2 为SearXNG创建用户

为了保证每个用户的权限,以及安全问题,我们需要为 SearXNG 创建一个独立的用户,之后运行全部由这个独立用户操作

# 创建用 并设置家目录 用户名为 searxng
sudo -H useradd --shell /bin/bash --system \
    --home-dir "/usr/local/searxng" \
    --comment 'Privacy-respecting metasearch engine' \
    searxng

# 创建searxng项目目录
sudo -H mkdir "/usr/local/searxng"

# 将项目目录的权限给searxng用户
sudo -H chown -R "searxng:searxng" "/usr/local/searxng"

5.3 安装SearXNG

# 切换到 searxng用户
sudo -H -u searxng -i

#克隆searxng项目
git clone "https://github.com/searxng/searxng" \
                   "/usr/local/searxng/searxng-src"

5.4 安装项目依赖

注意:这个时候的操作都是在 searxng 用户下进行的

(searxng)$ python3 -m venv "/usr/local/searxng/searx-pyenv"
(searxng)$ echo ". /usr/local/searxng/searx-pyenv/bin/activate" \
                   >>  "/usr/local/searxng/.profile"

这里要注意,我们往 .profile 文件里面写内容了,默认是不生效在当前终端的,可以先通过 exit 退出
然后再执行

sudo -H -u searxng -i

然后开始我们的依赖安装

(searxng)$ command -v python && python --version
/usr/local/searxng/searx-pyenv/bin/python
Python 3.8.1

# update pip's boilerplate ..
pip install -U pip
pip install -U setuptools
pip install -U wheel
pip install -U pyyaml

# jump to SearXNG's working tree and install SearXNG into virtualenv
(searxng)$ cd "/usr/local/searxng/searxng-src"
(searxng)$ pip install -e .

在这里插入图片描述

5.5 将配置文件移入到/etc目录

我们把项目克隆下来的时候会有一份默认配置文件,文件地址在:

/usr/local/searxng/searxng-src/utils/templates/etc/searxng

文件名是:settings.yml

在这里插入图片描述
默认文件配置内容为:

# SearXNG settings

use_default_settings: true

general:
  debug: false
  instance_name: "SearXNG"

search:
  safe_search: 2
  autocomplete: 'duckduckgo'

server:
  # Is overwritten by ${SEARXNG_SECRET}
  secret_key: "ultrasecretkey"
  limiter: true
  image_proxy: true
  # public URL of the instance, to ensure correct inbound links. Is overwritten
  # by ${SEARXNG_URL}.
  # base_url: http://example.com/location

redis:
  # URL to connect redis database. Is overwritten by ${SEARXNG_REDIS_URL}.
  url: unix:///usr/local/searxng-redis/run/redis.sock?db=0

ui:
  static_use_hash: true

# preferences:
#   lock:
#     - autocomplete
#     - method

enabled_plugins:
  - 'Hash plugin'
  - 'Self Informations'
  - 'Tracker URL remover'
  - 'Ahmia blacklist'
  # - 'Hostname replace'  # see hostname_replace configuration below
  # - 'Open Access DOI rewrite'

# plugins:
#   - only_show_green_results

这里我们需要修改一下 secret_key,为了安全,SearXNG 不让使用默认的密钥,我们把它改成 123456 来测试

在这里插入图片描述
然后我们 exit 退出当前用户,使用 root 用户建立配置文件目录

$ sudo -H mkdir -p "/etc/searxng"
$ sudo -H cp "/usr/local/searxng/searxng-src/utils/templates/etc/searxng/settings.yml" \
             "/etc/searxng/settings.yml"

5.6 运行SearXNG

  • 开启debug,为了更好调试
$ sudo -H sed -i -e "s/debug : False/debug : True/g" "/etc/searxng/settings.yml"
  • 切换searxng用户启动
$ sudo -H -u searxng -i
(searxng)$ cd /usr/local/searxng/searxng-src
(searxng)$ export SEARXNG_SETTINGS_PATH="/etc/searxng/settings.yml"
(searxng)$ python searx/webapp.py
  • 可选:如果想关闭debug可以使用如下命令
$ sudo -H sed -i -e "s/debug : True/debug : False/g" "/etc/searxng/settings.yml"

运行启动后我们发现这个 redis 好像连接不上,因为我们压根就没有安装 redis

在这里插入图片描述
通过查看配置文件发现通信是通过 sock 文件的,先不管啥通信吧,我们先把 redis安装一下
在这里插入图片描述

5.7 安装redis-server

  • 使用root用户安装
apt install redis-server
  • 检测是否安装成功并且启动
redis-cli -h 127.0.0.1

在这里插入图片描述
发现已经成功连接上了

5.8 再次启动SearXNG

sudo -H -u searxng -i
cd /usr/local/searxng/searxng-src
python searx/webapp.py

在这里插入图片描述
这次我们就发现没有任何报错了,SearXNG的默认端口是 8888,但是为了安全默认只开放给本地访问,大家可以通过 curl 127.0.0.1:8888 测试是否启动成功。

六、配置Nginx反向代理

为了更方便的管理入口流量和负载均衡,我们将配置一个 Nginx 的反向代理作为流量处理入口,而且作为热门的 web server,他的性能也比较可以,这里我们通过宝塔界面操作即可

找到站点列表,我们使用默认的 ip 站点进行反向代理配置:

  • 代理名称:searxng
  • 目标url:http://127.0.0.1:8888 是我们的searxng端口

在这里插入图片描述
提交保存后,我们通过公网IP就可以直接访问 SearXNG 服务了

在这里插入图片描述
这里我们尝试搜索一下 AWS,发现非常的干净,没有广告
在这里插入图片描述

七、总结

通过实践,发现Lightsail很适合小型个人或初创项目快速轻松上云,它由很多优点:

  • 简化管理:和传统VPS不同,Lightsail实例搭建和管理极其简单,不需要了解基础设施知识。
  • 无服务器:无需理会操作系统和应用程序安装、软件升级等管理工作,全由AWS自动完成。
  • 预配置程序:提供几种常见系统和应用环境(LAMP、Node.js 等)供直接使用,开箱即用。
  • 精细计费:按每个实例的实际使用量进行精确计费,没有额外费用。
  • 网络已就绪:内外网络接口、公网IP和防火墙规则已经配置完毕。
  • 安全可靠:AWS基础设施的安全和高可用水平提供基础,无需自己搭建网络和存储。
  • 易拓展缩放:随着业务需求的变化,可以随时调整实例的计算和存储资源。
  • 无服务器:无需自己搭建和管理后端服务器基础设施,全交由AWS自动化运行。
  • 成本低廉:较传统主机租用或自建服务成本更低,定价透明明确。

而对于我们这些个人开发者来说,Lightsail就非常适合我们日常项目的部署,既保证了安全也保证了性能、可用性等,希望未来还能体验到亚马逊云科技的更多优秀产品!

  • 55
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 44
    评论
### 回答1: 基于PHP开发的平台网络课堂教学学习互动平台设计应包括以下主要功能点: 1. 用户管理:包括学生、教师和管理员等角色的注册、登录和身份验证功能。 2. 课程管理:教师可以创建、编辑、发布和删除课程,并设定学习计划和教学资源。学生可以浏览、选择和加入感兴趣的课程。 3. 课堂互动:教师可以通过实时视频和音频进行在线授课,学生可以在课程页面上观看和参与课堂互动(如提问、回答问题、讨论、答题等)。 4. 学习资源:教师可以上传和管理各种学习资源,如课件、文档、视频、音频等,并与学生分享。 5. 作业与测试:教师可以布置和批改作业,学生可以在线提交作业和参与测试,并及时查看成绩和反馈。 6. 讨论与答疑:学生可以在课程讨论区提问和回答问题,教师和其他学生可以进行互动交流并提供答疑辅导。 7. 成绩管理:系统可以自动统计和记录学生的学习成绩,教师可以查询和导出成绩报表。 8. 系统管理:管理员可以对用户、课程和学习资源进行管理和维护,包括权限管理、数据备份等。 9. 页面设计:平台应具备简洁明了的界面设计,用户友好的操作交互和响应速度快的特点。 10. 数据安全与隐私保护:采取安全措施,保护用户的数据安全和隐私。 以上是基于PHP开发的平台网络课堂教学学习互动平台设计的基本要点,实现这些功能可以提高教学效果,促进教师和学生之间的互动和合作,提供便捷的在线学习体验。 ### 回答2: 基于PHP开发的平台网络课堂教学学习互动平台设计,可以包括以下几个方面的内容: 首先,平台应提供统一的用户管理系统,包括学生、教师和管理员三个角色的权限管理和信息管理。学生和教师可以注册账号并登录,管理员负责对系统进行维护和管理。 其次,平台需要具备在线课程管理功能,包括教师上传课程资料、发布作业和考试等功能,学生可以根据自己的需求选择课程并进行学习。教师可以根据学生的学习情况提供辅导和指导,与学生进行互动。 第三,平台应支持在线互动学习功能,如在线讨论区、实时问答等。学生和教师可以在课程学习过程中通过在线讨论区进行交流和讨论,解答疑问;同时,学生也可以通过实时问答功能向教师提问,并获得及时的回复。 另外,平台还应该具备学习辅助工具的功能,如课程表管理、学习进度跟踪等。学生可以通过平台查看自己的课程表,安排学习计划,并通过学习进度跟踪功能了解自己的学习进展情况。 最后,平台还需要提供在线考试与测评功能。教师可以设置在线考试和测评,并对学生的答题情况进行评分和统计,学生可以通过平台进行考试,并及时获得成绩和反馈。 综上所述,基于PHP开发的平台网络课堂教学学习互动平台设计应该具备用户管理、在线课程管理、在线互动学习、学习辅助工具和在线考试与测评等功能。通过这些功能,可以实现学生和教师之间的互动交流,提高教学质量,促进学生的学习效果。 ### 回答3: 基于PHP开发的平台网络课堂教学学习互动平台的设计主要包括以下几个方面: 1.系统架构:使用PHP作为后端开发语言,采用B/S架构,通过前端浏览器与后端服务器进行交互。后端使用PHP框架来优化开发流程,提高效率和稳定性。 2.用户管理:设计用户注册、登录、修改密码等功能,通过用户管理模块,用户可以根据自身身份(学生、教师、管理员等)进行登录和操作。 3.课程管理:教师可以创建、编辑和发布课程,包括课程介绍、课件、视频、练习题等资源。学生可以通过系统浏览和选择感兴趣的课程进行学习。 4.在线学习:提供在线学习的功能,学生可以在线观看课程视频、浏览课件,教师可以通过平台与学生进行互动交流,包括答疑、讨论等。 5.作业和考试:提供作业和考试功能,教师可以设置作业和考试题目,并选择提交方式和截止日期。学生可以在线提交作业并查看成绩。 6.互动交流:提供论坛和聊天室等互动交流功能,学生和教师可以在平台上进行问题讨论、经验分享等。 7.多媒体支持:支持多种多媒体形式的教学资源展示,包括图片、音频、视频等,以增加学习的趣味性和多样性。 8.数据统计和分析:对学生的学习情况进行统计和分析,为教师提供学生学习进度、知识点掌握情况等数据参考,以便更好地进行教学改进。 9.安全和权限管理:通过用户身份验证、数据加密等手段保障平台和用户信息的安全性,同时设置权限管理,确保用户只能访问到其具备权限的功能和资源。 以上是基于PHP开发的平台网络课堂教学学习互动平台的设计要点,通过良好的系统设计和功能实现,提供便捷的课堂教学和学习体验,推动教育的在线发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 44
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值