阅读视图

发现新文章,点击刷新页面。

部署和运行 DeepSeek R1-8b 大型语言模型 (LLM) 的两个简单命令


视频:油管/Youtube | B站/小破站 | 微博视频 | 西瓜视频 | 微信视频号 | X/推特 | 小红书

大型语言模型(LLMs)如 DeepSeek R1-8B 正在革新自然语言处理,使强大的 AI 驱动应用成为可能。然而,设置这些模型往往是一项艰巨的任务,需要复杂的配置。幸运的是,仅需两条简单的命令,您就可以使用 Ollama 在本地系统上轻松部署和运行 DeepSeek R1-8B——Ollama 是一个用于管理和运行开源 LLMs 的简化工具。

步骤 1:安装 Ollama

Ollama 让在本地运行大型语言模型变得更加简单。要安装它,请运行以下命令:

sudo apt install curl -y
curl -fsSL https://ollama.com/install.sh | sh

此命令执行以下操作:

  • 安装 curl,一个用于从互联网下载文件的命令行工具(如果本地没有安装的话)。
  • 下载并执行 Ollama 安装脚本,设置运行 LLMs 所需的一切。

步骤 2:运行 DeepSeek R1-8B

安装 Ollama 后,您可以立即运行 DeepSeek R1-8B 模型:

ollama run deepseek-r1:8b

此命令:

  • 从 Ollama 的存储库拉取 DeepSeek R1-8B 模型(如果尚未下载)。
  • 启动模型,使您可以通过命令行与其交互。

您还可以把deepseek-r1:8b换成llama3.2等,具体看模型列表

为什么使用 Ollama?

  • 易于使用:无需复杂的 Docker 设置或环境配置。
  • 本地推理优化:Ollama 旨在高效地在消费级硬件上运行。
  • 快速设置:整个过程仅需几分钟,让您专注于使用模型,而非配置它。

Ollama 是一个功能强大且用户友好的工具,专为在本地运行和管理开源大型语言模型(LLMs)而设计。它通过消除复杂的配置需求,简化了部署过程,使 AI 模型更易于开发者、研究人员和爱好者使用。借助 Ollama,用户只需使用简单的命令即可轻松下载、运行并与各种 LLMs 交互,确保流畅高效的使用体验。Ollama 针对本地推理进行了优化,能够在消费级硬件上高效运行,使用户无需依赖云端解决方案即可利用先进 AI 模型的强大能力。

结论

部署和运行像 DeepSeek R1-8B 这样的高级 LLM 并不复杂。只需两条简单的命令,您就可以在本地计算机上运行一个强大的 AI 模型。无论您是开发者、研究人员还是 AI 爱好者,这种简化的设置都让 LLMs 的实验变得更加轻松。

立即尝试,体验 DeepSeek R1-8B 的强大功能!

大语言模型 LLM = Large Language Model

英文:Two Simple Commands to Deploy and Run the DeepSeek R1-8b Large Language Model (LLM)

本文一共 714 个汉字, 你数一下对不对.
部署和运行 DeepSeek R1-8b 大型语言模型 (LLM) 的两个简单命令. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 部署和运行 DeepSeek R1-8b 大型语言模型 (LLM) 的两个简单命令 DeepSeek 人工智能 (AI) 技术 教育 程序员 计算机 计算机
The post 部署和运行 DeepSeek R1-8b 大型语言模型 (LLM) 的两个简单命令 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. 力扣刷题获得一件衣服奖励(Leetcode DCC Winner) 我每天都在力扣上刷题。力扣有国服和美服,我两边都会打卡。每天打卡可以获得积分,而积分可以兑换各种礼物,比如T恤、卫衣、水壶,甚至可以用来抵扣一个月的会员费用。 我从2018年8月开始刷题找工作(当时去伦敦面试亚马逊),从那时起每年都会续费会员,费用是159美元,相当于每月13.25美元。我觉得这是对自己最值得的投资。买了力扣会员,就会有动力刷题、思考,通过不断练习让自己熟能生巧,保持一定的竞争力。 到目前为止,我已经用积分兑换了7-8件力扣的衣服,其中有2-3件是卫衣。国内的礼物我都寄到姐姐家。 前不久,我收到了力扣的邮件,说我获得了DCC奖励。我也不知道为什么会获得这个奖,随手回了邮件。没多久,就收到了一件新版的力扣衬衫。 英文:Leetcode DCC Winner T-shirt 本文一共 291 个汉字, 你数一下对不对. 力扣刷题获得一件衣服奖励(Leetcode DCC Winner)....
  4. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  5. 老婆的配偶签证被拒 郁闷死了, 601镑签证费打水漂,一去不回!费钱费力. 去年12月份我请了律师拿到了永居.老婆是T1G签证的陪工签 (DEPENDENT VISA) 2016年4月份到期. 然后我就想说得趁早把她的签证转成配偶签(SPOUSE)这样她就可以尽快走五年永居的路线. 今天收到拒签信,原因是我没有提供 有工资进帐的那份银行帐单,我提供了我和我老婆的联名帐户, 但是工资并不是直接打到这个帐单上的.所以就这一点被拒了.完全不给解释,不给补材料的机会.601镑就这样再见了. 英国的签证寄出之后是先由另一个部门先收费, 收完费才正式审理,而且不管结果如何是不退钱的.后悔没让律师弄,也不至于到现在浪费这么多时间和金钱,签证还没过.由于原签证还没到期,所以还不能上述.估计只能等搬完家后年底请律师搞定这事. 真是郁闷, 600镑, 我可以再买一个IPHONE6,或者给我的新买的车换四个轮胎....
  6. 公司给配了台高配DELL笔记本 早上例会结束的时候我顺便说了一句 我的笔记本有点慢, 当时我并不知道我的经理远程用电话也参加会议了(他全程在听), senior staff SE 对着电话说, “peter, you hear that? btw, my disks are...
  7. 花钱让人换汽车钥匙的电池真是个智商税 今天想不到我这么聪明的人也被人狠狠的收了一把智商税. 今天被收智商税了, 去 Tesco 换车钥匙的电池. . 才发现如此的简单, 那人直接2分钟搞定2个, 然后收了我25英镑. . 服了. . 我还以为很复杂…… 网友说 “1....
  8. 优化设计 个人主页 并且 PageSpeed Insights 双项 100分 坛子的个人主页 www.tanzhijun.com 不错 很适合个人主页的模板. 而且是手机友好. 于是我照着把 我的主页改了改. https://steakovercooked.com 并且做了几点修改: 0. 使用 google mod_pagespeed 把 JS,...

DeepSeek本地部署以及使用体验

最近,国内一家名为DeepSeek的初创公司通过技术迭代与升级,推出了全新一代大模型“DeepSeek-V3”。这款大模型因其卓越的性能和易用性,迅速在AI爱好者中引起了广泛关注。更令人瞩目的是,DeepSeek R1版本直接免费开源,这一举动迅速在AI发烧友圈中传播开来,并迅速扩散到海外社交平台和技术论坛。海外网友对此纷纷表示赞叹,称其为AI领域的一大突破。

它的研发成本大概600万美金,不到openai的1%,各项性能指标更是和OpenAI-o1 模型不相上下,甚至做到了小部分的超越,关键是开源的,我们可以本地部署使用。

本地部署,我们可以通过Ollama来进行安装

Ollama 官方版:点击前往

Web UI 控制端【点击安装

安装命令

1.5B Qwen DeepSeek R1

ollama run deepseek-r1:1.5b

7B Qwen DeepSeek R1

ollama run deepseek-r1:7b

8B Llama DeepSeek R1

ollama run deepseek-r1:8b

14B Qwen DeepSeek R1

ollama run deepseek-r1:14b

32B Qwen DeepSeek R1

ollama run deepseek-r1:32b

70B Llama DeepSeek R1

ollama run deepseek-r1:70b

DeepSeek和chatgpt比较,我就本地部署deepseek的时候想了一个问题,比较一下确实能分出高低,deepseek马上猜出我的电脑配置,而chatgpt没有,虽然我的电脑售卖的时候是有好几种内存和显卡配置的,当然,我的问题最好写得更具体,当我就应该是不懂的那种:

问题:

我的电脑是Lenovo Legion R7000 2020,帮我推荐安装哪个deepaeek模型:

DeepSeek回答:

根据 Lenovo Legion R7000 2020 的硬件配置(通常是 16GB 内存 + GTX 1650/1660 Ti 显卡),建议选择较小的模型,因为较大的模型需要更多的显存和计算资源。以下是适合你电脑配置的推荐:

推荐选择:

  1. 1.5B Qwen DeepSeek R1
    • 模型较小,适合 16GB 内存和 GTX 1650/1660 Ti 级别的显卡。
    • 运行速度快,对硬件要求较低。
    • 命令:ollama run deepseek-r1:1.5b
  2. 7B Qwen DeepSeek R1
    • 如果你的显卡显存较大(如 6GB 以上),可以尝试 7B 模型。
    • 可能需要降低批处理大小(batch size)以避免显存不足。
    • 命令:ollama run deepseek-r1:7b
  3. 8B Llama DeepSeek R1
    • 类似于 7B 模型,适合显存较大的配置。
    • 命令:ollama run deepseek-r1:8b

不推荐选择:

  • 14B、32B、70B 模型
    这些模型对显存和计算资源要求非常高,通常需要 24GB 以上显存的高端显卡(如 RTX 3090、A100 等),不适合你的电脑配置。

总结:

如果你的显卡显存较小(如 4GB),建议选择 1.5B 模型;如果显存较大(6GB 以上),可以尝试 7B 或 8B 模型。运行前请确保安装了最新的显卡驱动,并关闭不必要的后台程序以释放资源。

chatgpt回答:

要选择适合你 Lenovo Legion R7000 2020 配置的本地 AI 模型,主要需要考虑你的计算机硬件配置,尤其是显卡(GPU)和内存(RAM)的性能。你提供的机器大致配置应该包括较强的处理能力,但具体能跑哪些模型,取决于内存和显卡性能。

通常来说,模型越大,占用的显存和内存就越多。如果你的电脑配备了高性能的显卡(例如 NVIDIA RTX 3060 或更高),并且有足够的内存(16GB 或更高),可以考虑使用较大的模型。以下是对比这些模型的建议:

1. 1.5B Qwen DeepSeek R1

  • 适用条件:这是一个相对较小的模型,对显卡和内存要求较低。基本上,几乎所有配置的电脑都可以运行它,特别适合资源有限的机器。

2. 7B Qwen DeepSeek R1

  • 适用条件:虽然较大一些,但如果你的电脑有较强的 GPU(比如 RTX 3060 及以上)和至少 16GB 内存,它是一个可以运行的模型。

3. 8B Llama DeepSeek R1

  • 适用条件:这个模型对显卡要求更高,可能需要更多的显存和更快的 GPU。如果你的电脑配备了强大的显卡和 16GB 以上的内存,可以考虑。

4. 14B Qwen DeepSeek R1

  • 适用条件:这个模型较大,通常需要更强的 GPU 和较大的内存(可能需要 24GB 或更高的显存)。适合高端配置的机器。

5. 32B Qwen DeepSeek R1

  • 适用条件:32B 的模型非常庞大,可能需要顶级显卡和至少 32GB 内存。一般来说,普通玩家的机器可能难以运行此类模型。

6. 70B Llama DeepSeek R1

  • 适用条件:这是一个极为庞大的模型,只有配备顶级硬件的机器(例如 A100 GPU 或等效硬件)才能够高效运行此类模型。普通游戏笔记本不适合运行如此大的模型。

综合建议:

  • 如果你有较好的 GPU(例如 RTX 3060 或更高)和 16GB 或更多内存,7B Qwen DeepSeek R18B Llama DeepSeek R1 会是比较合适的选择。
  • 如果你是低端显卡或内存较少的配置,选择 1.5B Qwen DeepSeek R1 会更为合适。

最终选择哪个模型,还是要依据你电脑的具体硬件配置来决定。如果你不确定具体的硬件要求,可以先尝试运行小模型,看是否能够稳定运行,再逐步增加模型的规模。

代码测试:

对我来说,更多的是在编程方面的应用,这也是为什么,本来ai可以帮助写作的这段期间,写作应该更简单更快,但我的博客更新率反而降低,因为我最近几乎都在用ai编程,忙得停不下来,最近又做了一套预约系统(客户需求),一个不精通编程的人,因为有了ai便有了希望。

目前利用ai编程,尤其是我这样的水平,很多时候需要丢一大堆代码来进行功能的添加,为的也是不想拆分一段段的代码去解释和修改,虽然ai也能给你答案,但是折腾起来挺费时费力,所以一开始就要想好全部需要的功能,一次性让ai都考虑在内,当然,如果你的系统太复杂,目前有些ai免费版输出的代码有字数限制。

根据我目前的使用心得,在deepaeek还没出来的时候,claude.ai的编程能力最强,但由于字数限制,有经常还得把代码搬到kimi.ai那边去继续修复,kimi.ai主要特点是输出内容比较长,但是编程能力相对会低一些,现在由于deepseek的出现,经过测试,输出内容好像比kimi.ai更长,编程能力和claude不相上下,我测试过一段mercadopago的支付,写出来的代码可用,说明编程能力还是可以的,虽然感觉过去和claude还是有一丁点差距,不过已经非常好了,至少是免费而且没有限制,真的狂喜。

我也看到过做中文文案的人的评测,说DeepSeek的中文能力比chatgpt强,语言组织上更适合中国人的思维,这点也是做自媒体文案的人的总结。

这几天因为deepseek太火,以至于受到海外的网络攻击,也因为访问量太大,各种卡顿,所以本地部署也是一个选择,经过测试,配置选择越大效果会越好。

MinIO 的部署及与 Memos 的整合

之前杜老师将说说广场资源转存至缤纷云,没想到刚用没两天,免费的资源就被用光了。对于 CDN 这种无底洞,杜老师还是决定买个服务器,自行部署存储服务。这里整理了部署和整合步骤,供需要的小伙伴们参考。

MinIO 的介绍

MinIO 是种高性能、S3 兼容的对象存储。

专为大规模 AI/ML、数据湖和数据库工作负载而构建,并且它是由软件定义的存储。

无需购买任何专有硬件,就可以云上和普通硬件上拥有分布式对象存储。

MinIO 拥有开源 GNU AGPL v3 和商业企业许可证双重许可。

MinIO 的安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
services:
minio:
command: server /data --console-address :9001 --address :9000
container_name: minio
deploy:
resources:
limits:
cpus: 0
memory: 0
environment:
MINIO_BROWSER: "on"
MINIO_BROWSER_LOGIN_ANIMATION: "on"
MINIO_BROWSER_REDIRECT_URL: http://127.0.0.1:9001
MINIO_BROWSER_SESSION_DURATION: "12h"
MINIO_ROOT_PASSWORD: "minioadmin"
MINIO_ROOT_USER: "minioadmin"
MINIO_SERVER_URL: http://127.0.0.1:9000
image: minio/minio:RELEASE.2024-02-26T09-33-48Z
labels:
createdBy: Apps
logging:
driver: json-file
options:
max-file: "10"
max-size: 5M
ports:
- 9001:9001
- 9000:9000
restart: always
volumes:
- ./data:/data
- ./certs:/root/.minio/certs
version: "3"

注意:将上面的内容,根据实际需求略作调整「因为自定义项较多,杜老师就不一一标注了.如有问题可以自行搜索,或在评论区中留言」保存为 docker-compose.yml,之后使用命令 docker-compose -f docker-compose.yml up -d 启用就行了。

初始设置

打开浏览器输入 http://IP:9000/,输入 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 的值 minioadmin,登录到控制台:

目前暂无中文界面,不过好在配置简单,且不需要太多配置。点击左侧的 Buckets,再点击右侧 Create Bucket。在 Bucket Name 框中输入存储桶的名称,后点击 Create Bucket 即可:

待页面刷新后,点击刚创建好的存储桶,点击 Summary->Access Policy 项,将值设置为 Public:

之后点击左侧的 Access Keys 创建一个密钥。这里需要注意的是 Secret Key 项仅创建时可见,请保持好!如有遗忘可以重新创建:

与 Memos 整合

参考下图中的参数配置即可。需要注意的是,9000 是控制台的端口,API 的端口是 9001

Mattermost 开源社区部署及聊天广场推广

之前就有小伙伴问到杜老师有没有交流群。平时杜老师很少会使用到 QQ,微信也很少看,但为了能及时收到小伙伴反馈的信息,所以搭建交流社区「可惜没多少人」最近发现有个开源聊天社区,决定尝试一下!

服务介绍

Mattermost 是一个 Slack 开源替代品。Mattermost 采用 Go 语言开发,是一个开源的团队通讯服务。为团队带来跨平台消息、文件分享,提供归档以及搜索功能。运行界面如下:

部署过程

下面说下如何在 Linux 系统,通过 Docker 来部署,需要提前准备好 Git 运行环境。执行下面代码可实现一键部署 Docker 运行环境:

1
curl -fsSL https://get.docker.com | bash -s docker

使用 Git 下载 Mattermost 官方 Docker 部署代码库,并进入代码库:

1
2
git clone https://github.com/mattermost/docker
cd docker

复制环境变量模板文件,并修改其中的内容。将 DOMAIN 后的值改为自己的域名:

1
cp env.example .env

在上面的 docker 目录创建数据库映射目录,并修改目录所有者:

1
2
mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes}
sudo chown -R 2000:2000 ./volumes/app/mattermost

使用命令 mkdir -p ./volumes/web/cert 创建证书的保存目录,并自行申请 SSL 证书将其重命名放入以下路径中,注意上方是 CERT 证书、下方是 KEY 证书:

1
2
./volumes/web/cert/cert.pem
./volumes/web/cert/key-no-password.pem

使用命令 sudo docker-compose -f docker-compose.yml -f docker-compose.nginx.yml up -d 完成服务的自动部署,即可通过之前绑定的域名访问了。如需停止服务,可以使用以下命令:

1
sudo docker-compose -f docker-compose.yml -f docker-compose.nginx.yml down

服务推广

杜老师在一台临时服务器上搭建了该服务,方便小伙伴们体验,地址如下:

注意事项

国内对于即时通信平台都有严格审核机制,自行搭建平台可能触发运营商的监管,部署前请慎重考虑。

另外建议可使用境外云平台部署,部署时不要使用主域名,防止境内网络挟持。

需要的小伙伴也可直接使用杜老师的聊天广场托管,无意外会长期运行,

最后进行免责声明,以上内容仅供技术交流,聊天广场平台仅供程序测试,所有用户发言均与杜老师说无关!

用脚本部署 Bitwarden 密码管理平台

应海阔蓝童鞋的需求分享如何使用 Docker 部署 Bitwarden 密码管理平台的教程。因杜老师近期出差时间紧张,没有精力细致整理排版,但确保可成功部署,需要的小伙伴可以参考,如有建议可在评论区中留言!

准备工作

在开始部署 Bitwarden 之前,请确保已经安装 Docker。这里以 Ubuntu 为例,更新软件包索引并安装软件包以允许使用基于 HTTPS 存储库:

1
2
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

添加 Docker 官方 GPG 密钥:

1
2
3
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

使用以下命令设置软件包存储库:

1
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

更新索引:

1
sudo apt-get update

安装 Docker Engine 等相关组件:

1
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

通过运行映像以验证 Docker 引擎安装是否成功「可选」

1
sudo docker run hello-world

拉取源码

1
curl -Lso bitwarden.sh https://go.btwrdn.co/bw-sh && chmod +x bitwarden.sh

注意:将 Bitwarden 安装脚本 bitwarden.sh 下载到计算机上。

部署项目

1 为设置访问域名;2 为是否申请安全访问证书「为了演示,杜老师这里选择否」3 为设置数据库的名称「可自定义」4 输入安装 ID「申请页见下图」5 输入安装 KEY;6 是否自定义安全证书「为了演示,杜老师这里选择否,如果遇到问题,可在评论区中留言」7 是否配置自签名证书:

1
2
3
4
5
6
7
8
penn@penn-virtual-machine:~$ sudo ./bitwarden.sh install
(1) Enter the domain name for your Bitwarden instance (ex. bitwarden.example.com): bw.dusays.com
(2) Do you want to use Let's Encrypt to generate a free SSL certificate? (y/n): n
(3) Enter the database name for your Bitwarden instance (ex. vault): bitwarden
(4) Enter your installation id (get at https://bitwarden.com/host):
(5) Enter your installation key:
(6) Do you have a SSL certificate to use? (y/n): n
(7) Do you want to generate a self-signed SSL certificate? (y/n): n

安装 ID 和 KEY 的申请页面如下:

启动服务

使用下面命令启动服务:

1
sudo ./bitwarden.sh start

其它指令列表如下:

指令作用
restart重新启动所有容器「与 start 相同」
stop停止所有容器
update更新所有容器和数据库
updatedb更新、初始化数据库
updaterun更新运行脚本文件
updateself更新此主脚本
updateconf在不重新启动正在运行实例的情况下更新所有容器
uninstall在执行此命令之前,系统将提示保存数据库文件。将创建数据库的 tar 文件,包括最新备份。停止容器,删除目录及其所有内容,并删除临时卷。执行后系统将询问是否要清除所有 Bitwarden 镜像
renewcert续订证书
rebuild从 config.yml 中重建生成的安装资产
help列出所有命令

访问页面

项目启动后根据之前设置的域名访问:

写在最后

前端建议用 Nginx 反向代理,并通过 SSL 加密,以保证密码的安全。

后期杜老师也会进一步整理此文,并尽可能增加应用实例。

Nextcloud 生产环境部署保姆级教程

Nextcloud 是一个免费专业的私有云存储网盘开源项目,可以简单快速地在电脑、服务器甚至是树莓派等设备上架设一套属于自己或团队专属的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作功能。

CUE 下前篇

先前发布一篇名为《在 Docker 中部署 Nextcloud》教程,分享如何通过 Docker 快速部署 Nextcloud。

此种部署方式适合个人用户使用,如需部署在生产环境用,建议使用 LAMP 架构加源码部署,详见下文。

环境介绍

杜老师的实验环境为虚拟机加 CentOS7 系统,使用的 LAMP 脚本来自 https://lnmp.org,Nextcloud 为此文撰写时的最新版本。

这里需要注意的是:因 Nextcloud 需要 PHP7.3 以上的版本,所以必须 1G 以上的内存。

服务安装

使用官方命令进行环境部署:

1
wget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz -cO lnmp1.9.tar.gz && tar zxf lnmp1.9.tar.gz && cd lnmp1.9 && ./install.sh lamp

部署时的环境设置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
+------------------------------------------------------------------------+
| LNMP V1.9 for CentOS Linux Server, Written by Licess |
+------------------------------------------------------------------------+
| A tool to auto-compile & install LNMP/LNMPA/LAMP on Linux |
+------------------------------------------------------------------------+
| For more information please visit https://lnmp.org |
+------------------------------------------------------------------------+
You have 11 options for your DataBase install.
1: Install MySQL 5.1.73
2: Install MySQL 5.5.62 (Default)
3: Install MySQL 5.6.51
4: Install MySQL 5.7.38
5: Install MySQL 8.0.30
6: Install MariaDB 5.5.68
7: Install MariaDB 10.3.35
8: Install MariaDB 10.4.25
9: Install MariaDB 10.5.16
10: Install MariaDB 10.6.8
0: DO NOT Install MySQL/MariaDB
Enter your choice (1, 2, 3, 4, 5, 6, 7, 8, 9, 10 or 0): 4
Using Generic Binaries [y/n]: y
You will install MySQL 5.7.38 Using Generic Binaries.
===========================
Please setup root password of MySQL.
Please enter: Dusays@1234
MySQL root password: Dusays@1234
===========================
Do you want to enable or disable the InnoDB Storage Engine?
Default enable,Enter your choice [Y/n]: Y
You will enable the InnoDB Storage Engine
===========================
You have 9 options for your PHP install.
1: Install PHP 5.2.17
2: Install PHP 5.3.29
3: Install PHP 5.4.45
4: Install PHP 5.5.38
5: Install PHP 5.6.40 (Default)
6: Install PHP 7.0.33
7: Install PHP 7.1.33
8: Install PHP 7.2.34
9: Install PHP 7.3.33
10: Install PHP 7.4.30
11: Install PHP 8.0.20
12: Install PHP 8.1.7
Enter your choice (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12): 11
You will install PHP 8.0.20
===========================
You have 3 options for your Memory Allocator install.
1: Don't install Memory Allocator. (Default)
2: Install Jemalloc
3: Install TCMalloc
Enter your choice (1, 2 or 3): 1
You will install not install Memory Allocator.
===========================
Please enter Administrator Email Address: teacherdu@dusays.com
===========================
Server Administrator Email: teacherdu@dusays.com
===========================
===========================
You have 2 options for your Apache install.
1: Install Apache 2.2.34
2: Install Apache 2.4.53 (Default)
Enter your choice (1 or 2): 2
You will install Apache 2.4.53

Press any key to install...or Press Ctrl+c to cancel

环境部署完成后会出现如下提示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
+------------------------------------------------------------------------+
| LNMP V1.9 for CentOS Linux Server, Written by Licess |
+------------------------------------------------------------------------+
| For more information please visit https://lnmp.org |
+------------------------------------------------------------------------+
| lnmp status manage: lnmp {start|stop|reload|restart|kill|status} |
+------------------------------------------------------------------------+
| phpMyAdmin: http://IP/phpmyadmin/ |
| phpinfo: http://IP/phpinfo.php |
| Prober: http://IP/p.php |
+------------------------------------------------------------------------+
| Add VirtualHost: lnmp vhost add |
+------------------------------------------------------------------------+
| Default directory: /home/wwwroot/default |
+------------------------------------------------------------------------+
| MySQL/MariaDB root password: Dusays@1234 |
+------------------------------------------------------------------------+
+-------------------------------------------+
| Manager for LNMP, Written by Licess |
+-------------------------------------------+
| https://lnmp.org |
+-------------------------------------------+
Apache is running.
SUCCESS! MySQL running (89612)
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 128 [::]:3306 [::]:*
LISTEN 0 128 [::]:111 [::]:*
LISTEN 0 128 [::]:80 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 128 [::1]:631 [::]:*
Install lnmp takes 6 minutes.
Install lnmp V1.9 completed! enjoy it.

使用浏览器访问虚拟机的 IP,即可显示如下页面:

Nextcloud 的部署

直接在默认网站根目录中使用 Nextcloud 官方下载地址进行源码下载,然后对其进行解压操作,并修改对应文件的权限:

1
2
3
4
cd /home/wwwroot/default/
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
chown www. /home/wwwroot/default/nextcloud/ -R

在浏览器中使用 IP/nextcloud 打开网站,其中 nextcloud 是刚解压的目录,如有需要可以将其放入根目录中。依次设置管理员账号和密码,生产环境数据量比较大,数据库需要选择 MySQL,并输入数据库连接信息「这里用 root 用户连接,数据库不需要提前创建」

安装后的界面展示:

文件浏览器的界面展示:

媒体界面展示:

动态界面展示:

解决 gitlab-runner 部署时 Host key verification failed 的报错问题

服务器例行维护时,升级了所有的软件。当再次使用 gitlab-runner 部署时,出现了 Host key verification failed 问题,本文简单说下解决思路!

问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Running with gitlab-runner 14.6.0 (5316d4ac)
on iZ2ze3ifc44ezcec5t2nhrZ mzVoCiZK
Preparing the "shell" executor
00:00
Using Shell executor...
Preparing environment
00:01
Running on iZ2ze3ifc44ezcec5t2nhrZ...
Getting source from Git repository
00:00
Fetching changes with git depth set to 50...
Initialized empty Git repository in /home/gitlab-runner/builds/mzVoCiZK/0/penndu/dusays/.git/
Created fresh repository.
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
ERROR: Job failed: exit status 1

注意:上面是部署时报错。

解决

杜老师一开始以为是密钥的问题,曾尝试同步了客户端和服务端的密钥,但还是会报错,且报错的内容不变。

后来直接设置了 SSH 免密登录,问题仍然存在,但报错的内容变了。

提示是权限的问题,于是修改 gitlab-runner 的运行用户,成功搞定。

遇到同样问题的小伙伴,可以参考《修改 gitlab-runner 的执行用户》一文。

修改 gitlab-runner 的执行用户

安装 gitlab-runner 构建机默认会将用户设置为 gitlab-runner,该设置会导致.gitlab-ci.yml 脚本运行时出现一些权限问题。为了解决这些权限问题,杜老师将 gitlab-runner 构建机上的默认用户设置为 root。

写在最前

这种方式虽然简单粗暴,当然也会带来一些弊端,比如:通过.gitlab-ci.yml 脚本进行文件操作要格外小心。

另外要做好服务端安全设置,确保不要被恶意用户获取到操作权限。

操作步骤

通过下面命令可以查看到 gitlab-runner 的工作目录和默认用户等一系列相关信息:

1
ps aux | grep gitlab-runner

通过下面命令可以卸载掉 gitlab-runner 默认用户:

1
gitlab-runner uninstall

通过下面命令将 gitlab-runner 运行用户设置为 root:

1
gitlab-runner install --user root

最后重启 gitlab-runner 就行了:

1
systemctl restart gitlab-runner

杜老师说同款博客搭建

考虑网站运营成本,前段时间更换了服务器,所有服务环境需要重新部署,故写此文作为记录,也方便相同环境的朋友们做借鉴。如果有建议或遇到问题,欢迎在页面中评论与杜老师交流!

安装工具

1
2
apt update
apt -y install docker.io gdebi-core git npm

注意:docker.io 为评论后端所需,gdebi-core 用于安装 OSS 挂载工具,git 和 npm 是 Hexo 必备的工具。

评论后端

1
2
3
4
5
6
7
8
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
EOF
systemctl restart docker
docker run -d --restart=always -e MYSQL_HOST=HOSTNAME -e MYSQL_DB=DATABASE -e MYSQL_USER=USERNAME -e MYSQL_PASSWORD=PASSWORD -e SITE_NAME=杜老师说 -e SITE_URL=https://dusays.com -e IPQPS=0 -e SECURE_DOMAINS=dusays.com -e AKISMET_KEY=false -e AUTHOR_EMAIL=EMAILADDRESS -e SMTP_SERVICE=QQ -e SMTP_USER=EMAILADDRESS -e SMTP_PASS=PASSWORD -e GITHUB_ID=GITHUBID -e GITHUB_SECRET=GITHUBSECRET -p 8360:8360 lizheming/waline
docker run -d --restart=always --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower

注意:首先添加了阿里云的镜像加速器,加速 Docker 镜像的下载速度。然后运行评论后端,最后运行容器版本自动更新工具,感兴趣的可以参考《通过 Watchtower 实现 Docker 容器自动更新》一文。

挂载存储

1
2
3
4
5
6
7
8
9
10
11
12
wget https://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_ubuntu18.04_amd64.deb?spm=a2c4g.11186623.2.6.20e22315wihlec&file=ossfs_1.80.6_ubuntu18.04_amd64.deb
gdebi ossfs_1.80.6_ubuntu18.04_amd64.deb
echo BucketName:yourAccessKeyId:yourAccessKeySecret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
mkdir /dusays
ossfs BucketName mountfolder -o url=Endpoint
tee /etc/rc.local <<-'EOF'
#!/bin/bash
ossfs BucketName mountfolder -o url=Endpoint
exit 0
EOF
chmod +x /etc/rc.local

注意:杜老师说运行于阿里云的 OSS,并通过 CDN 加速,故需安装并挂载 OSS。

安装程序

1
2
npm i -g hexo-cli
hexo init blog

注意:安装 Hexo 并生成博客目录。

相关模块

1
2
cd blog/
npm i -S hexo-generator-baidu-sitemap hexo-generator-feed hexo-generator-json-content hexo-generator-search hexo-pdf hexo-wordcount

注意:进入博客目录,安装 Hexo 的相关模块。

下载文件

1
2
3
4
5
6
vim _config.yaml
git config --global http.proxy http://dusays.com
git config --global user.email EMAILADDRESS
git config --global user.name USERNAME
git clone ssh://git@dusays.com/penndu/dusays.git source/
git clone https://github.com/penndu/hexo-theme-volantis themes/volantis

注意:杜老师说的文章和模板都托管在 Git 上,通过 git clone 下载到服务器中。

添加缓存

1
2
echo '/swapfile none swap sw 0 0' > /etc/fstab
swapon -a

注意:为了保障服务器系统的稳定,添加交换分区,如果添加失败,可以参考《初始化 CentOS7 系统「上篇」》一文。

生成页面

1
2
ln -s /dusays/ public
hexo g

注意:将 OSS 挂载目录与 Hexo 页面生成目录建立链接,即可生成网站页面。

通过 Gitea 部署 Hexo 教程

应 Zero 童靴需求,杜老师更新一篇通过 Gitea 部署 Hexo 的教程,可以实现通过 git 命令自动部署 Hexo 博客,并支持 VS Code 或者网页编辑器等形式更新站点内容。其部署思路同样适用于 Hugo 等静态博客框架。

写在前面

近年来静态博客框架占比越来越高了,其一大特性是可以托管到 Vercel 这类的免费平台上,进一步减少了博主运营成本。

但随着免费的资源越发紧俏,加上越来越严峻的网络限制,很多小伙伴开始将站点,迁移至境内平台上。

奈何境内的免费资源非常少,很多功能需要自行购买主机搭建,无疑增加了我们的使用成本以及学习成本。

本篇教程主要说明如何通过 Gitea 实现类似 GitHub Actions 那种自动部署功能,实现在主机上博客的更新和部署。

准备工作

  1. 需要在服务器上安装 Gitea,可以参考《使用 Docker 部署 Gitea 新一代的代码托管平台》一文部署;

  2. 需要在服务器上安装 Act Runner,可以参考《使用 Docker 部署 Gitea Actions 的 Runner》一文部署;

  3. 需要在服务器上安装 Hexo,可以参考《运行在云主机的 Hexo》一文部署;

  4. 需要在服务器上安装 Web 引擎,可选项非常多,杜老师使用 OpenResty,这里不多说部署方式了。

部署过程

  1. 新建站点目录。这里以 1Panel 面板为例,添加一个域名为 dusays.com 站点:
  1. 使用终端程序登录该服务器,并切换到站点目录,以刚刚的域名为例,命令如下:
1
cd /opt/1panel/apps/openresty/openresty/www/sites/dusays.com/index/
  1. 删除站点目录下的所有文件,并通过 Hexo 创建站点数据,命令如下:
1
2
rm -rf *
hexo init
  1. 创建 Act Runner 部署文件.gitea/workflows/deploy.yml,添加以下内容:
1
2
3
4
5
6
7
8
9
10
name: Gitea Actions Demo
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on: [push]

jobs:
Explore-Gitea-Actions:
runs-on: self-hosted
steps:
- run: cd /opt/1panel/apps/openresty/openresty/www/sites/dusays.com/index/ && git pull origin main
- run: cd /opt/1panel/apps/openresty/openresty/www/sites/dusays.com/index/ && hexo generate
  1. 配置 git 上传的用户名和邮箱:
1
2
git config --global user.name "TeacherDu"
git config --global user.email "teacherdu@dusays.com"
  1. 生成 SSH 密钥并添加公钥到 Gitea,执行下面命令,然后一直回车,会生成 id_rsaid_rsa.pub。复制 id_rsa.pub 文件的内容并登录 Gitea,进入个人设置,添加到 SSH 公钥:
1
2
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
  1. 在 Gitea 上创建一个新仓库:
  1. 新建.gitignore 文件避免同步易变动文件,添加以下内容:
1
2
3
4
5
6
7
8
.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
_multiconfig.yml
  1. 提交并推送到远程仓库:
1
2
3
4
5
6
git init
git checkout -b main
git add .
git commit -m "first commit"
git remote add origin https://gitea.dusays.com/penn/hexo.git
git push -u origin main
  1. 将站点的运行目录设置为 public

注意事项

可以直接在 Gitea 修改站点内容,或者通过 VS Code 等工具接入进行编辑。

不要直接修改服务器中站点文件,如果出现内容冲突导致无法自动部署,可以从 Gitea 中重新拉取数据解决该问题。

使用 Docker 部署 Gitea Actions 的 Runner

Act Runner 是一个 Gitea 运行器,通过自行部署,可以实现类似于 GitHub Actions 的运行器,且可以兼容 GitHub Actions 配置文件,目前杜老师说站点就是基于 Gitea 托管与自动部署。

工具简介

Gitea Actions 是一个类似 GitHub Actions 的自动化工作流工具,可以帮助开发者在代码仓库中实现各种自动化任务。Runner 则是负责执行这些工作流任务的代理端。

在实际应用中,使用 Docker 部署 Gitea Actions 的 Runner 具有诸多优势。

首先,Docker 提供一致的运行环境,消除了因系统配置差异而导致的潜在问题。

其次,它简化了部署过程,使得安装、配置更加便捷高效。

获取密钥

登录到 Gitea 实例,转到存储仓库页面,点击页面上方设置,在左侧菜单选择 Actions,将在页面上看到 Runners 部分,后点击创建 Runner 按钮,将获得一个 REGISTRATION TOKEN,复制它并妥善保存:

准备工作

在完成准备工作后,可通过以下步骤创建 Docker 容器并配置 Runner。使用下面命令拉取所需的 Gitea Actions Runner 镜像:

1
docker pull gitea/act_runner:nightly

使用下面命令生成默认配置文件:

1
docker run --entrypoint="" --rm -it gitea/act_runner:latest act_runner generate-config > config.yaml

将下面内容保存到 docker-compose.yml 文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: "3.8"
services:
runner:
image: gitea/act_runner:nightly
environment:
CONFIG_FILE: /config.yaml
GITEA_INSTANCE_URL: "${INSTANCE_URL}"
GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}"
GITEA_RUNNER_NAME: "${RUNNER_NAME}"
GITEA_RUNNER_LABELS: "${RUNNER_LABELS}"
volumes:
- ./config.yaml:/config.yaml
- ./data:/data
- /var/run/docker.sock:/var/run/docker.sock

根据需求,修改 docker-compose.yml 文件中参数。${INSTANCE_URL}替换为实例的 URL,${REGISTRATION_TOKEN}替换为前面获得的 REGISTRATION TOKEN,${RUNNER_NAME}替换为 Runner 的名称,${RUNNER_LABELS}替换为 Runner 的标签「本机部署建议设置为 self-hosted」然后使用下面命令启动工具:

1
docker-compose up -d

配置文件

下面是个简单实例,可将内容保存为 .gitea/workflows/demo.yaml,生效后即可在 Actions 页面中看到运行结果:

1
2
3
4
5
6
7
name: Gitea Actions Demo
on: [push]
jobs:
Explore-Gitea-Actions:
runs-on: self-hosted
steps:
- run: echo dusays.com

杜老师首次运行时,提示缓存配置错误,将下面内容保存到 config.yaml 文件中即可:

1
2
3
4
cache:
enabled: false
host:
workdir_parent: /

使用 Docker 部署 Gitea 新一代的代码托管平台

Gitea 是新一代的代码托管平台,具备基于 Git 的核心代码托管能力和 DevSecOps 延伸能力,为广大软件开发者提供接近 GitHub 的使用体验,并且支持用户开展私有化部署。

介绍

Gitea 是一个轻量级的、自托管 Git 服务平台,对于小型团队、个人开发者或组织,Gitea 是一个经济实惠且灵活的代码托管解决方案,能够满足基本代码管理需求,并提供一定的可定制性和扩展性。

杜老师之前使用 GitLab,托管在群晖上,因 GitLab 量级较大,运行后会大量占用资源,影响了群晖上其它套件使用。

奈何因托管的代码过多,迁移会占用大量的时间,所以此事一直拖着未能解决。

直到前段时间,GitLab 因版本升级失败导致崩溃,故杜老师决定迁移至 Gitea。

优势

轻量级和高效,Gitea 的设计简洁,资源消耗较低,更易于部署和运行,即使在资源有限的服务器上也能表现良好。

开源免费,遵循开源许可,用户可以自由使用、修改、分发,促进社区的参与和发展。

简单易用界面,提供直观、友好的 Web 界面,方便用户进行代码管理、创建仓库、提交代码、查看历史记录操作。

支持多种操作系统,可在 Windows/Linux/Mac 等多种操作系统上进行安装和运行。

丰富功能,包括用户管理、组织管理、权限控制、问题跟踪等常见的代码托管平台功能。

易于集成,可以与其它工具和服务进行集成,例如持续集成、持续部署系统。

自定义和扩展,通过插件系统,可实现自定义功能扩展和个性化配置。

版本控制支持,基于 Git 版本的控制系统,提供强大的版本管理和分支管理功能。

部署

创建一个目录,如 gitea,用于存储相关配置文件。在该目录中创建一个 docker-compose.yml 文件,添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '3'
services:
gitea:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- DB_TYPE=sqlite3
- RUN_MODE=prod
ports:
- "3000:3000"
- "222:22"
volumes:
- ./gitea-data:/data

在上述配置中,我们使用了最新的镜像。USER_UIDUSER_GID 应根据您的主机用户 ID 和组 ID 进行设置。DB_TYPE 选择了 sqlite3 作为数据库,如需要更强大的数据库,可选择 MySQL 或 PostgreSQL 并相应地配置。ports 部分将容器内部的 3000 端口和 22 端口映射到主机 3000222 端口。volumes 部分将数据存储在当前目录下的 gitea-data 文件夹中。保存 docker-compose.yml 文件后,在该目录中运行以下命令启动 Gitea:

1
docker-compose up -d

效果

登录后会显示仓库动态信息:

新版本 Gitea 支持 GitHub 同款 Actions,且支持相同的配置文件格式:

在仓库页可以查看提交数量、分支、仓库大小等等:

通过后台控制面板可以看到 Gitea 的运行情况,整理资源占用较小「于 GitLab 相比」

❌