2024-05-09 10:58:26 +08:00
<!DOCTYPE html>
< html lang = "zh-CN" >
<!DOCTYPE html>
< html lang = "zh-CN" >
< head >
< meta http-equiv = "content-type" content = "text/html; charset=UTF-8" / >
< meta http-equiv = "X-UA-Compatible" content = "IE=edge" >
< meta name = "viewport" content = "width=device-width,initial-scale=1" >
< link rel = "icon" href = "/img/logo.png" >
< meta name = "author" content = "浪子" >
< meta name = "subtitle" content = "一个分享自己生活的博客" >
< meta name = "description" content = "曾梦想仗剑走天涯;因太胖放弃原计划." >
< meta name = "keywords" content = ",DIY,黑苹果,分享,自由" >
< link rel = "alternate" href = "/atom.xml " title = "提剑追梦" type = "application/atom+xml" >
< title > 提剑追梦< / title >
< link rel = "stylesheet" href = "/css/style.css" >
< link rel = "stylesheet" href = "/css/partial/dark.css" >
< link rel = "stylesheet" href = "/css/partial/highlight/atom-one-light.css" >
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" >
2024-05-09 11:25:52 +08:00
< link rel = "stylesheet" href = "https://cdnjs.sgcd.net/lxgw-wenkai-screen-webfont/lxgwwenkaigbscreen.css" >
2024-05-09 10:58:26 +08:00
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.css" >
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/gh/a2396837/CDN@latest/css/iconfont.css" >
< script src = "/js/todark.js" > < / script >
< meta name = "generator" content = "Hexo 6.3.0" > < / head >
< / html >
< div class = "nav index" style = "height: 60px;" >
< div class = "title animated fadeInDown" >
< div class = "layui-container" >
< div class = "nav-title" > < a href = "/" title = "提剑追梦" > 提剑追梦< / a > < / div >
< div class = "nav-list" >
< button > < span class = "" > < / span > < span style = "display: block;" > < / span > < span class = "" > < / span > < / button >
< ul class = "layui-nav" lay-filter = "" >
< li class = "layui-nav-item" >
< a href = "/search/ " >
< i class = " fas fa-search-plus " style = "color: rgb(3 169 244);" > < / i >
< span class = "layui-nav-item-name" > 搜索< / span >
< / a >
< / li >
< li class = "layui-nav-item" >
< a href = "/ " >
< i class = " fab fa-fort-awesome " style = "color: rgb(255 107 107);" > < / i >
< span class = "layui-nav-item-name" > 首页< / span >
< / a >
< / li >
< li class = "layui-nav-item" >
< a href = "/archives/ " >
< i class = " fas fa-archive " style = "color: rgb(10 189 227);" > < / i >
< span class = "layui-nav-item-name" > 归档< / span >
< / a >
< / li >
< li class = "layui-nav-item" >
< a href = "/tags/ " >
< i class = " fas fa-hashtag " style = "color: rgb(254 202 87);" > < / i >
< span class = "layui-nav-item-name" > 标签< / span >
< / a >
< / li >
< li class = "layui-nav-item" >
2024-05-09 11:25:52 +08:00
< a href = "/fcircle/ " >
< i class = " fas fa-heart " style = "color: rgb(29 209 161);" > < / i >
< span class = "layui-nav-item-name" > 朋友圈< / span >
2024-05-09 10:58:26 +08:00
< / a >
< / li >
< li class = "layui-nav-item" >
< a href = "/links/ " >
< i class = " fab fa-weixin " style = "color: hsl(152deg 73% 45%);" > < / i >
< span class = "layui-nav-item-name" > 友链< / span >
< / a >
< / li >
< li class = "layui-nav-item" >
< a href = "/memos/ " >
< i class = " fas fa-coffee " style = "color:#31c7c1;" > < / i >
< span class = "layui-nav-item-name" > 说说< / span >
< / a >
< / li >
< li class = "layui-nav-item" >
2024-05-09 11:25:52 +08:00
< a href = "/about/ " >
< i class = " fab fa-grav " style = "color: rgb(154 106 247);" > < / i >
< span class = "layui-nav-item-name" > 关于< / span >
2024-05-09 10:58:26 +08:00
< / a >
< / li >
< li class = "layui-nav-item" id = "btn-toggle-dark" > 🌙< / li >
< span class = "layui-nav-bar" style = "left: 342px; top: 78px; width: 0px; opacity: 0;" > < / span >
< / ul >
< / div >
< / div >
< / div >
< / div >
< header class = "header" >
< div class = "logo" >
< a href = "/" > < img src = "https://img.imsun.org/avatar.jpg" onerror = this.onerror=null,this.src="/img/loading.gif" > < / a >
< / div >
< / div >
< div class = "motto" >
< span > 曾梦想仗剑走天涯< / span >
< / div >
< div class = "social" >
< a class = "social-icon" href = "https://github.com/jkjoy" target = "_blank" title = "Github" >
< i class = "iconfont icon-GitHub" aria-hidden = "true" > < / i >
< / a >
< a class = "social-icon" href = "mailto:jkjoy@163.com" target = "_blank" title = "Email" >
< i class = "iconfont icon-email" aria-hidden = "true" > < / i >
< / a >
< a class = "social-icon" href = "/atom.xml" target = "_blank" title = "rss" >
< i class = "iconfont icon-rss" aria-hidden = "true" > < / i >
< / a >
< / div >
< / header >
< div id = "recent-posts" >
< div class = "recent-post-item" >
< div class = "post-title " >
< a href = "/posts/b5a1f33a.html" > EasyPanel:一款使用Docker部署的VPS面板< / a >
< / div >
< div class = "post-meta" >
< div class = "post-meta-item date" >
< span title = "发表于 2024.04.02" > < i class = "far fa-calendar-alt" > < / i > 2024.04.02< / span >
< / div >
< div class = "post-meta-item updated" >
< span title = "更新于 2024.05.09" > < i class = "far fa-calendar-check" > < / i > 2024.05.09< / span >
< / div >
< div class = "post-meta-item categories" >
< i class = "fas fa-inbox article-meta__icon" > < / i > < a href = "/categories/%E5%88%86%E4%BA%AB/" > 分享< / a >
< / div >
< div class = "post-meta-item wordcount" >
< i class = "fas fa-pencil-alt" > < / i > < span class = "post-count" > 588 字< / span >
< i class = "far fa-clock" > < / i > < span class = "post-count" > 2 分钟< / span >
< / div >
< / div >
< div class = "content" >
< h2 id = "EasyPanel" > < a href = "#EasyPanel" class = "headerlink" title = "EasyPanel" > < / a > EasyPanel< / h2 > < p > 官方网站 < code > EasyPanel.io< / code > < / p >
< p > < code > EasyPanel< / code > 是一款基于< code > docker< / code > 的可视化面板. 拥有< code > 付费< / code > 和< code > 免费< / code > 两种模式< / p >
< p > 本文介绍以免费模式为主(主要是收费不菲)< br > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112071321641777.webp" > < / p >
< p > 从首页的介绍可以看到他的特色就是通过直观的界面部署应用,管理数据库以及签发SSL证书.< / p >
< h3 id = "安装" > < a href = "#安装" class = "headerlink" title = "安装" > < / a > 安装< / h3 > < ul >
< li > 建议在纯净的linux系统下安装< / li >
< / ul >
< p > 通过命令行< / p >
< figure class = "highlight sh" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > curl -sSL https://get.easypanel.io | sh< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 即可完成安装,官方给出的配置要求内存大于2G,根据实测,1G的vps运行起来问题也不大.< / p >
< p > 由于是容器化的部署方式,各个应用之间独立运行.NICE.< / p >
< h3 id = "使用" > < a href = "#使用" class = "headerlink" title = "使用" > < / a > 使用< / h3 > < h4 id = "访问" > < a href = "#访问" class = "headerlink" title = "访问" > < / a > 访问< / h4 > < p > 安装之后通过< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > ip:3000< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 访问面板,初次访问会要求创建管理员账号和密码.< / p >
< h4 id = "登录" > < a href = "#登录" class = "headerlink" title = "登录" > < / a > 登录< / h4 > < p > 进入面板会发现很简洁< br > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112073049083915.webp" alt = "进入面板" > < / p >
< h4 id = "创建" > < a href = "#创建" class = "headerlink" title = "创建" > < / a > 创建< / h4 > < p > 创建项目点击< code > Create Project< / code > 填写项目名称,确定,进入该项目< / p >
< h4 id = "模板" > < a href = "#模板" class = "headerlink" title = "模板" > < / a > 模板< / h4 > < p > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112074114481559.webp" > < / p >
< p > 点击< code > templates< / code > 会发现这里有很多常用的应用模板,只要点击就可以部署.< / p >
< p > 譬如< code > memos< / code > < code > uptime< / code > < code > wordpress< / code > < code > Flarum< / code > < code > GoToSocial< / code > < code > Umami< / code > < code > Vaultwarden< / code > 等上百款应用< / p >
< h4 id = "服务" > < a href = "#服务" class = "headerlink" title = "服务" > < / a > 服务< / h4 > < p > 常见的模板应用大多都是全世界著名的应用.国内的某些应用,或者不是很常见的应用该如何部署< / p >
< p > 此处以< code > gatus< / code > 为例< / p >
< p > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112074948886487.webp" > < / p >
< p > 点击< code > APP< / code > ,填写名称,确认 < / p >
< p > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112075045277316.webp" > < / p >
< p > 点击< code > General< / code > < br > < code > gatus< / code > 的docker镜像为< code > twinproduction/gatus:latest< / code > < br > 在< code > Docker images< / code > 中填入< code > twinproduction/gatus:latest< / code > < br > 点< code > SAVE< / code > 保存.< br > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112075239607243.webp" > < br > 点击< code > Domain< / code > -< code > ADD Domain< / code > -< code > HOST< / code > 填写域名< / p >
< p > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112075722912648.webp" > < / p >
< p > 全部填写完成之后,点< code > SAVE< / code > 保存. < / p >
< p > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112080453993746.webp" > < / p >
< p > 点击< code > Advanced< / code > -< code > Mounts< / code > -< code > ADD VOLUME Mounts< / code > < / p >
< p > < code > Name< / code > 为宿主机名称可以自己设置 < / p >
< p > < code > Mount Path< / code > 为Docker< / p >
< p > 挂载目录 < code > /data< / code > < / p >
< p > 点击< code > ADD File Mounts< / code > ,其中 < code > Mount Path< / code > 为挂载路径,此处填写为< code > /config/config.yaml< / code > < / p >
< p > < code > Content< / code > 为yaml格式的配置文件 与 < code > config.yaml< / code > 内容对应 < / p >
< p > 以下为示例内容可自行修改< / p >
< figure class = "highlight yaml" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < span class = "line" > 3< / span > < br > < span class = "line" > 4< / span > < br > < span class = "line" > 5< / span > < br > < span class = "line" > 6< / span > < br > < span class = "line" > 7< / span > < br > < span class = "line" > 8< / span > < br > < span class = "line" > 9< / span > < br > < span class = "line" > 10< / span > < br > < span class = "line" > 11< / span > < br > < span class = "line" > 12< / span > < br > < span class = "line" > 13< / span > < br > < span class = "line" > 14< / span > < br > < span class = "line" > 15< / span > < br > < span class = "line" > 16< / span > < br > < span class = "line" > 17< / span > < br > < span class = "line" > 18< / span > < br > < span class = "line" > 19< / span > < br > < span class = "line" > 20< / span > < br > < span class = "line" > 21< / span > < br > < span class = "line" > 22< / span > < br > < span class = "line" > 23< / span > < br > < span class = "line" > 24< / span > < br > < span class = "line" > 25< / span > < br > < span class = "line" > 26< / span > < br > < span class = "line" > 27< / span > < br > < span class = "line" > 28< / span > < br > < span class = "line" > 29< / span > < br > < span class = "line" > 30< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > < span class = "attr" > storage:< / span > < / span > < br > < span class = "line" > < span class = "attr" > type:< / span > < span class = "string" > sqlite< / span > < / span > < br > < span class = "line" > < span class = "attr" > path:< / span > < span class = "string" > /data/data.db< / span > < / span > < br > < span class = "line" > < / span > < br > < span class = "line" > < span class = "attr" > ui:< / span > < / span > < br > < span class = "line" > < span class = "attr" > buttons:< / span > < / span > < br > < span class = "line" > < span class = "bullet" > -< / span > < span class = "attr" > name:< / span > < span class = "string" > " Home" < / span > < / span > < br > < span class = "line" > < span class = "attr" > link:< / span > < span class = "string" > " https://www.imsun.org" < / span > < / span > < br > < span class = "line" > < / span > < br > < span class = "line" > < span class = "attr" > endpoints:< / span > < / span > < br > < span class = "line" > < span class = "bullet" > -< / span > < span class = "attr" > name:< / span > < span class = "string" > bloghb< / span > < / span > < br > < span class = "line" > < span class = "attr" > group:< / span > < span class = "string" > core< / span > < / span > < br > < span class = "line" > < span class = "attr" > url:< / span > < span class = "string" > " https://blog.hb.cn" < / span > < / span > < br > < span class = "line" > < span class = "attr" > interval:< / span > < span class = "string" > 3m< / span > < / span > < br > < span class = "line" > < span class = "attr" > conditions:< / span > < / span > < br > < span class = "line" > < span class = "bullet" > -< / span > < span class = "string" > " [STATUS] == 200" < / span > < / span > < br > < span class = "line" > < / span > < br > < span class = "line" > < span class = "bullet" > -< / span > < span class = "attr" > name:< / span > < span class = "string" > blogcn< / span > < / span > < br > < span class = "line" > < span class = "attr" > group:< / span > < span class = "string" > core< / span > < / span > < br > < span class = "line" > < span class = "attr" > url:< / span > < span class = "string" > " https://blog.asbid.cn" < / span > < / span > < br > < span class = "line" > < span class = "attr" > interval:< / span > < span class = "string" > 3m< / span > < / span > < br > < span class = "line" > < span class = "attr" > conditions:< / span > < / span > < br > < span class = "line" > < span class = "bullet" > -< / span > < span class = "string" > " [STATUS] == 200" < / span > < / span > < br > < span class = "line" > < / span > < br > < span class = "line" > < span class = "bullet" > -< / span > < span class = "attr" > name:< / span > < span class = "string" > blogsd< / span > < / span > < br > < span class = "line" > < span class = "attr" > group:< / span > < span class = "string" > core< / span > < / span > < br > < span class = "line" > < span class = "attr" > url:< / span > < span class = "string" > " https://blog.sd.cn" < / span > < / span > < br > < span class = "line" > < span class = "attr" > interval:< / span > < span class = "string" > 3m< / span > < / span > < br > < span class = "line" > < span class = "attr" > conditions:< / span > < / span > < br > < span class = "line" > < span class = "bullet" > -< / span > < span class = "string" > " [STATUS] == 200" < / span > < / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 点击< code > SAVE< / code > 保存 < / p >
< p > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112081537297595.webp" > < / p >
< p > 点击< code > Deploy< / code > . < / p >
< p > 完成部署 别忘记在DNS处解析域名< / p >
< h3 id = "gatus演示" > < a href = "#gatus演示" class = "headerlink" title = "gatus演示" > < / a > gatus演示< / h3 > < p > < a target = "_blank" rel = "noopener" href = "https://status.0tz.top/" > https://status.0tz.top/< / a > < / p >
< h2 id = "总结" > < a href = "#总结" class = "headerlink" title = "总结" > < / a > 总结< / h2 > < p > 优势:不用折腾反代,不用担心证书到期,常用应用傻瓜式部署< / p >
< / div >
< / div >
< div class = "post-footer" >
< / div >
< div class = "recent-post-item" >
< div class = "post-title " >
< a href = "/posts/5f4f3026.html" > 巨械师X99主板/E5 2680 V4/RX5600XT 6G/1TB SSD/BCM94360CS[OpenCore引导]< / a >
< / div >
< div class = "post-meta" >
< div class = "post-meta-item date" >
< span title = "发表于 2024.03.15" > < i class = "far fa-calendar-alt" > < / i > 2024.03.15< / span >
< / div >
< div class = "post-meta-item updated" >
< span title = "更新于 2024.05.09" > < i class = "far fa-calendar-check" > < / i > 2024.05.09< / span >
< / div >
< div class = "post-meta-item categories" >
< i class = "fas fa-inbox article-meta__icon" > < / i > < a href = "/categories/%E5%88%86%E4%BA%AB/" > 分享< / a >
< / div >
< div class = "post-meta-item wordcount" >
< i class = "fas fa-pencil-alt" > < / i > < span class = "post-count" > 168 字< / span >
< i class = "far fa-clock" > < / i > < span class = "post-count" > 1 分钟< / span >
< / div >
< / div >
< div class = "content" >
< h2 id = "前言" > < a href = "#前言" class = "headerlink" title = "前言" > < / a > 前言< / h2 > < p > 年后配的黑苹果主机,主要是因为英特尔的12 13 14代CPU开始挤牙膏,且价格高居不下.< br > 于是攒出这套配置,用于处理多核心任务.< br > 总体价格2300左右,差不多一台M1 Macmini标配的价格.< / p >
< h2 id = "配置" > < a href = "#配置" class = "headerlink" title = "配置" > < / a > 配置< / h2 > < table >
< thead >
< tr >
< th align = "center" > 配件< / th >
< th align = "center" > 名称< / th >
< / tr >
< / thead >
< tbody > < tr >
< td align = "center" > 主板< / td >
< td align = "center" > 巨械师X99M< / td >
< / tr >
< tr >
< td align = "center" > CPU< / td >
< td align = "center" > E5 2680 V4< / td >
< / tr >
< tr >
< td align = "center" > 内存< / td >
< td align = "center" > 三星DDR4 64G ECC< / td >
< / tr >
< tr >
< td align = "center" > 硬盘< / td >
< td align = "center" > 梵想1TB SSD< / td >
< / tr >
< tr >
< td align = "center" > 显卡< / td >
< td align = "center" > 蓝宝石RX5600XT 6G< / td >
< / tr >
< tr >
< td align = "center" > 机箱< / td >
< td align = "center" > 鱼巢S5< / td >
< / tr >
< tr >
< td align = "center" > 电源< / td >
< td align = "center" > 长城额定700W金牌< / td >
< / tr >
< tr >
< td align = "center" > 网卡< / td >
< td align = "center" > BCM94360CS2< / td >
< / tr >
< tr >
< td align = "center" > 散热器< / td >
< td align = "center" > < / td >
< / tr >
< / tbody > < / table >
< h2 id = "说明" > < a href = "#说明" class = "headerlink" title = "说明" > < / a > 说明< / h2 > < p > BIOS 设置< / p >
< p > 需关闭< / p >
< p > [ ] - CFG LOCK< / p >
< p > [ ] - CSM 兼容< / p >
< p > 需打开< / p >
< p > [x] - Above 4G Decoding< / p >
< h2 id = "引导下载" > < a href = "#引导下载" class = "headerlink" title = "引导下载" > < / a > 引导下载< / h2 > < p > EFI< / p >
< p > < a target = "_blank" rel = "noopener" href = "https://pan.sgcd.net/189/%E5%B7%A8%E6%A2%B0%E5%B8%88X99EFI.zip" > https://pan.sgcd.net/189/%E5%B7%A8%E6%A2%B0%E5%B8%88X99EFI.zip< / a > < / p >
< / div >
< / div >
< div class = "post-footer" >
< / div >
< div class = "recent-post-item" >
< div class = "post-title " >
< a href = "/posts/b50cb9c4.html" > 关于网络发展的随笔< / a >
< / div >
< div class = "post-meta" >
< div class = "post-meta-item date" >
< span title = "发表于 2023.11.08" > < i class = "far fa-calendar-alt" > < / i > 2023.11.08< / span >
< / div >
< div class = "post-meta-item updated" >
< span title = "更新于 2024.05.09" > < i class = "far fa-calendar-check" > < / i > 2024.05.09< / span >
< / div >
< div class = "post-meta-item categories" >
< i class = "fas fa-inbox article-meta__icon" > < / i > < a href = "/categories/%E9%9A%8F%E7%AC%94/" > 随笔< / a >
< / div >
< div class = "post-meta-item wordcount" >
< i class = "fas fa-pencil-alt" > < / i > < span class = "post-count" > 922 字< / span >
< i class = "far fa-clock" > < / i > < span class = "post-count" > 3 分钟< / span >
< / div >
< / div >
< div class = "content" >
< p > 短视频的兴起其实是有迹可循的.< / p >
< p > 至少从我这个< code > 资深< / code > 网民的眼光来看,是这样的.< / p >
< p > 我觉得人类基本都是视觉生物,任何类型的刺激都不如视觉上带来的感官刺激更甚.< / p >
< p > 互联网< code > 毒药< / code > 从古早的文字到图片,然后到多媒体,最后到短视频.这些都是基于视觉带来的刺激升级.< / p >
< p > 当然这跟互联网的技术发展也是有很大的关系.< / p >
< p > 早先的互联网主要以文字为主.主要是因为当时的上网方式以电话线拨号为主,费用及其昂贵,带宽也是有限,于是有了多图杀猫的说法.< / p >
< p > 待到互联网普及的阶段,有了宽带,此时图片这种比文字还要刺激感官的方式便开始流行,各种论坛贴吧都充斥着各种类型的图片.还有当时各种资源网站发布的压缩视频文档.这时是P2P发展的黄金时期.< / p >
< p > 等到版权意识增加,此类资源网站渐渐退出主流视野,此时各大视频网站开始兴起,各种自制的短剧也取得了不错的口碑也收视.< / p >
< p > 最早的视频博客,就是现在的youtuber和up主.< / p >
< p > 当时土豆网就是其中翘楚.< br > 我记得当时有很多录播的当红的台剧偶像剧都在土豆网上可以看.都是由个人或者粉丝上传的.< br > 也有很多优秀的自制的视频,大多是搞笑的段子和模仿,恶搞.< br > 当时恶搞< code > 无极< / code > 的< code > 胡戈< / code > ,< code > 一个馒头引发的血案< / code > .< br > 后来还有结合实事的< code > 鸟笼山剿匪记< / code > .< / p >
< p > < code > 叫兽易小星< / code > 和< code > 杨迪< / code > 就是从这个时候横空出世的.< / p >
< p > 我记得当时过最屌的吐槽就是< code > 老湿< / code > 的 评西游记,还有< code > 卢正雨< / code > 的< code > 嘻哈四重奏< / code > .< / p >
< p > 优酷和土豆合并之后,< code > 叫兽易小星< / code > 和< code > 老湿< / code > 成立的< code > 万合天宜< / code > 的自制短剧< code > 万万没想到< / code > .< / p >
< p > 待到了4G 5G的普及,移动互联网成了网络大军的主力.< br > 手机这种更加便携更加简单的设备就成了人们网上冲浪的主要工具.< / p >
< p > 短视频的出现则利用了人们的碎片时间,加上更加成熟的大数据支持,更是让人愈发欲罢不能.< / p >
< p > 我有几个朋友以前是倾向于微博这种文字类社交媒体的.< br > 最早我们认识也是在论坛上.< br > 如今,都不怎么用< code > 微博< / code > 了.常用的APP也变成了< code > 小红书< / code > 和< code > 抖音< / code > .< / p >
< p > 现在短视频平台上集合了各类内容,更容易获取到信息,也容易被各种真真假假的视频误导.< / p >
< p > 如今最让人离谱的就是各种带货直播以各种形式出现,有的就是演一出小短剧.< / p >
< p > 有的直播象棋,突然就给你整一出卖酒的操作来.< / p >
< p > 我有个老叔已经六十多了整天看人下棋直播,天天听人卖酒带货,把我整不会了.< br > 图啥呢.明知道是假的,还整天看.< / p >
< p > 我外公八十多岁了,在抖音上到有老中医推荐什么偏方,他竟然用笔都抄下来了,然后当真去买了煮.< br > 若不是没有什么副作用,我都不敢想象.< / p >
< p > 平台若是不监管,出了什么事情,平台是要承担主要责任的.< br > 不能钱让平台赚了,出了事跟平台无关,这就说不过去了.< / p >
< / div >
< / div >
< div class = "post-footer" >
< / div >
< div class = "recent-post-item" >
< div class = "post-title " >
< a href = "/posts/ebf565b6.html" > 使用Docker快速部署mastodon实例< / a >
< / div >
< div class = "post-meta" >
< div class = "post-meta-item date" >
< span title = "发表于 2023.10.30" > < i class = "far fa-calendar-alt" > < / i > 2023.10.30< / span >
< / div >
< div class = "post-meta-item updated" >
< span title = "更新于 2024.05.09" > < i class = "far fa-calendar-check" > < / i > 2024.05.09< / span >
< / div >
< div class = "post-meta-item categories" >
< i class = "fas fa-inbox article-meta__icon" > < / i > < a href = "/categories/%E5%88%86%E4%BA%AB/" > 分享< / a >
< / div >
< div class = "post-meta-item wordcount" >
< i class = "fas fa-pencil-alt" > < / i > < span class = "post-count" > 308 字< / span >
< i class = "far fa-clock" > < / i > < span class = "post-count" > 1 分钟< / span >
< / div >
< / div >
< div class = "content" >
< h2 id = "如何使用Docker快速部署mastodon实例" > < a href = "#如何使用Docker快速部署mastodon实例" class = "headerlink" title = "如何使用Docker快速部署mastodon实例" > < / a > 如何使用Docker快速部署mastodon实例< / h2 > < p > 直接使用docker compose部署是不可行的,需要按照步骤进行< / p >
< h3 id = "创建目录" > < a href = "#创建目录" class = "headerlink" title = "创建目录" > < / a > 创建目录< / h3 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > mkdir -p /home/mastodon/mastodon< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h3 id = "进入目录" > < a href = "#进入目录" class = "headerlink" title = "进入目录" > < / a > 进入目录< / h3 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > cd /home/mastodon/mastodon< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h3 id = "拉取镜像" > < a href = "#拉取镜像" class = "headerlink" title = "拉取镜像" > < / a > 拉取镜像< / h3 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > docker pull ghcr.io/mastodon/mastodon< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h3 id = "修改docker-compose配置文件" > < a href = "#修改docker-compose配置文件" class = "headerlink" title = "修改docker compose配置文件" > < / a > 修改docker compose配置文件< / h3 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > wget https://raw.githubusercontent.com/mastodon/mastodon/main/docker-compose.yml< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 修改< code > docker compose< / code > 文件中的版本号< / p >
< h3 id = "初始化PostgreSQL" > < a href = "#初始化PostgreSQL" class = "headerlink" title = "初始化PostgreSQL" > < / a > 初始化PostgreSQL< / h3 > < ul >
< li > 重要!!!!!< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > docker run --name postgres14 -v /home/mastodon/mastodon/postgres14:/var/lib/postgresql/data -e POSTGRES_PASSWORD=设置数据库管理员密码 --rm -d postgres:14-alpine< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
进入数据库< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > docker exec -it postgres14 psql -U postgres< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
创建用户名mastodon的密码< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > CREATE USER mastodon WITH PASSWORD ' 数据库密码(最好和数据库管理员密码不一样)' CREATEDB;< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
停止docker< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > docker stop postgres14< / span > < br > < / pre > < / td > < / tr > < / table > < / figure > < / li >
< / ul >
< h3 id = "配置Mastodon" > < a href = "#配置Mastodon" class = "headerlink" title = "配置Mastodon" > < / a > 配置Mastodon< / h3 > < p > 在< code > /home/mastodon/mastodon< / code > 根文件夹中创建空白< code > .env.production< / code > 文件< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > cd /home/mastodon/mastodon< / span > < br > < span class = "line" > touch .env.production< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 运行引导< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > docker-compose run --rm web bundle exec rake mastodon:setup< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 按照提示进行操作< br > < code > Below is your configuration, save it to an .env.production file outside Docker:< / code > 之后会出现配置文件的数据,复制下来< br > 写入< code > .env.production< / code > 中< / p >
< p > 启动Mastodon< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > docker-compose down< / span > < br > < span class = "line" > docker-compose up -d< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 文件夹赋权< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < span class = "line" > 3< / span > < br > < span class = "line" > 4< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > chown 991:991 -R ./public< / span > < br > < span class = "line" > chown -R 70:70 ./postgres14< / span > < br > < span class = "line" > docker-compose down< / span > < br > < span class = "line" > docker-compose up -d< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 创建管理员< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > docker exec mastodon-web-1 tootctl accounts create USERNAME --email EMAIL --confirmed --role Owner< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 至此完成< / p >
< / div >
< / div >
< div class = "post-footer" >
< / div >
< div class = "recent-post-item" >
< div class = "post-title " >
< a href = "/posts/d29d6713.html" > 快速部署misskey实例< / a >
< / div >
< div class = "post-meta" >
< div class = "post-meta-item date" >
< span title = "发表于 2023.10.11" > < i class = "far fa-calendar-alt" > < / i > 2023.10.11< / span >
< / div >
< div class = "post-meta-item updated" >
< span title = "更新于 2024.05.09" > < i class = "far fa-calendar-check" > < / i > 2024.05.09< / span >
< / div >
< div class = "post-meta-item categories" >
< i class = "fas fa-inbox article-meta__icon" > < / i > < a href = "/categories/%E5%88%86%E4%BA%AB/" > 分享< / a >
< / div >
< div class = "post-meta-item wordcount" >
< i class = "fas fa-pencil-alt" > < / i > < span class = "post-count" > 368 字< / span >
< i class = "far fa-clock" > < / i > < span class = "post-count" > 1 分钟< / span >
< / div >
< / div >
< div class = "content" >
< h2 id = "使用官方推荐一键脚本" > < a href = "#使用官方推荐一键脚本" class = "headerlink" title = "使用官方推荐一键脚本" > < / a > 使用官方推荐一键脚本< / h2 > < p > 使用纯净的Ubuntu系统安装,推荐配置双核心四线程.< / p >
< h3 id = "更新软件" > < a href = "#更新软件" class = "headerlink" title = "更新软件" > < / a > 更新软件< / h3 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > sudo apt update; sudo apt full-upgrade -y; sudo reboot< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h3 id = "一键脚本" > < a href = "#一键脚本" class = "headerlink" title = "一键脚本" > < / a > 一键脚本< / h3 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > wget https://raw.githubusercontent.com/joinmisskey/bash-install/main/ubuntu.sh -O ubuntu.sh; sudo bash ubuntu.sh< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 按照提示输入内容< / p >
< h3 id = "更新misskey脚本" > < a href = "#更新misskey脚本" class = "headerlink" title = "更新misskey脚本" > < / a > 更新misskey脚本< / h3 > < p > 更新 Misskey 的脚本不会升级运行环境。 对于脚本的更新内容,另请参阅 “更新日志”< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > wget https://raw.githubusercontent.com/joinmisskey/bash-install/main/update.ubuntu.sh -O update.sh< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > sudo bash update.sh< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< ul >
< li > 使用 systemd 的小伙伴, 添加 -r 可以更新并重启系统。< / li >
< li > 使用 docker 的小伙伴, 可以特定软件包版本 repository:tag 来更新。< / li >
< / ul >
< h2 id = "使用docker-compose部署" > < a href = "#使用docker-compose部署" class = "headerlink" title = "使用docker compose部署" > < / a > 使用docker compose部署< / h2 > < h3 id = "环境" > < a href = "#环境" class = "headerlink" title = "环境" > < / a > 环境< / h3 > < ul >
< li > git< / li >
< li > docker< / li >
< li > nginx< / li >
< / ul >
< h3 id = "步骤" > < a href = "#步骤" class = "headerlink" title = "步骤" > < / a > 步骤< / h3 > < h4 id = "git克隆仓库" > < a href = "#git克隆仓库" class = "headerlink" title = "git克隆仓库" > < / a > git克隆仓库< / h4 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < span class = "line" > 3< / span > < br > < span class = "line" > 4< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > cd /opt< / span > < br > < span class = "line" > git clone -b master https://github.com/misskey-dev/misskey.git< / span > < br > < span class = "line" > cd misskey< / span > < br > < span class = "line" > git checkout master< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h4 id = "复制配置文件:" > < a href = "#复制配置文件:" class = "headerlink" title = "复制配置文件:" > < / a > 复制配置文件:< / h4 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < span class = "line" > 3< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > cp .config/example.yml .config/default.yml< / span > < br > < span class = "line" > cp .config/docker_example.env .config/docker.env< / span > < br > < span class = "line" > cp docker-compose.yml.example docker-compose.yml< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h4 id = "编辑default-yml中" > < a href = "#编辑default-yml中" class = "headerlink" title = "编辑default.yml中" > < / a > 编辑default.yml中< / h4 > < p > < code > url< / code > 设置为实例域名< br > db:< code > host< / code > 设置为< code > db< / code > < br > redis:< code > host< / code > 设置为< code > redis< / code > < / p >
< h4 id = "构建镜像" > < a href = "#构建镜像" class = "headerlink" title = "构建镜像" > < / a > 构建镜像< / h4 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > docker compose build< / span > < br > < span class = "line" > docker compose run --rm web yarn run init< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 完成之后< / p >
< h4 id = "启动容器" > < a href = "#启动容器" class = "headerlink" title = "启动容器" > < / a > 启动容器< / h4 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > docker compose up -d< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h4 id = "反向代理" > < a href = "#反向代理" class = "headerlink" title = "反向代理" > < / a > 反向代理< / h4 > < p > 参考以下< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < span class = "line" > 3< / span > < br > < span class = "line" > 4< / span > < br > < span class = "line" > 5< / span > < br > < span class = "line" > 6< / span > < br > < span class = "line" > 7< / span > < br > < span class = "line" > 8< / span > < br > < span class = "line" > 9< / span > < br > < span class = "line" > 10< / span > < br > < span class = "line" > 11< / span > < br > < span class = "line" > 12< / span > < br > < span class = "line" > 13< / span > < br > < span class = "line" > 14< / span > < br > < span class = "line" > 15< / span > < br > < span class = "line" > 16< / span > < br > < span class = "line" > 17< / span > < br > < span class = "line" > 18< / span > < br > < span class = "line" > 19< / span > < br > < span class = "line" > 20< / span > < br > < span class = "line" > 21< / span > < br > < span class = "line" > 22< / span > < br > < span class = "line" > 23< / span > < br > < span class = "line" > 24< / span > < br > < span class = "line" > 25< / span > < br > < span class = "line" > 26< / span > < br > < span class = "line" > 27< / span > < br > < span class = "line" > 28< / span > < br > < span class = "line" > 29< / span > < br > < span class = "line" > 30< / span > < br > < span class = "line" > 31< / span > < br > < span class = "line" > 32< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > map $http_upgrade $connection_upgrade { < / span > < br > < span class = "line" > default upgrade;< / span > < br > < span class = "line" > ' ' close;< / span > < br > < span class = "line" > } < / span > < br > < span class = "line" > < / span > < br > < span class = "line" > proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache1:16m max_size=1g inactive=720m use_temp_path=off;< / span > < br > < span class = "line" > < / span > < br > < span class = "line" > server { < / span > < br > < span class = "line" > listen 80;< / span > < br > < span class = "line" > listen [::]:80;< / span > < br > < span class = "line" > server_name misskey.example.com;< / span > < br > < span class = "line" > client_max_body_size 0;< / span > < br > < span class = "line" > < / span > < br > < span class = "line" > location / { < / span > < br > < span class = "line" > proxy_pass http://127.0.0.1:3000;< / span > < br > < span class = "line" > proxy_set_header Host $host;< / span > < br > < span class = "line" > proxy_http_version 1.1;< / span > < br > < span class = "line" > proxy_redirect off;< / span > < br > < span class = "line" > < / span > < br > < span class = "line" > proxy_set_header X-Real-IP $remote_addr;< / span > < br > < span class = "line" > proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;< / span > < br > < span class = "line" > proxy_set_header X-Forwarded-Proto https;< / span > < br > < span class = "line" > < / span > < br > < span class = "line" > proxy_set_header Upgrade $http_upgrade;< / span > < br > < span class = "line" > proxy_set_header Connection $connection_upgrade;< / span > < br > < span class = "line" > < / span > < br > < span class = "line" > proxy_cache cache1;< / span > < br > < span class = "line" > proxy_cache_lock on;< / span > < br > < span class = "line" > proxy_cache_use_stale updating;< / span > < br > < span class = "line" > add_header X-Cache $upstream_cache_status;< / span > < br > < span class = "line" > } < / span > < br > < span class = "line" > } < / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< / div >
< / div >
< div class = "post-footer" >
< / div >
< div class = "recent-post-item" >
< div class = "post-title " >
< a href = "/posts/1adc954a.html" > 测试xiuno2Sforum中遇到的各种问题< / a >
< / div >
< div class = "post-meta" >
< div class = "post-meta-item date" >
< span title = "发表于 2023.10.06" > < i class = "far fa-calendar-alt" > < / i > 2023.10.06< / span >
< / div >
< div class = "post-meta-item updated" >
< span title = "更新于 2024.05.09" > < i class = "far fa-calendar-check" > < / i > 2024.05.09< / span >
< / div >
< div class = "post-meta-item categories" >
< i class = "fas fa-inbox article-meta__icon" > < / i > < a href = "/categories/%E5%88%86%E4%BA%AB/" > 分享< / a >
< / div >
< div class = "post-meta-item wordcount" >
< i class = "fas fa-pencil-alt" > < / i > < span class = "post-count" > 499 字< / span >
< i class = "far fa-clock" > < / i > < span class = "post-count" > 2 分钟< / span >
< / div >
< / div >
< div class = "content" >
< p > 想把< code > xiuno< / code > bbs数据转换成< code > SForum< / code > ,由于最新版本的< code > SForum< / code > 没有转换工具支持< br > 于是采用< code > Sforum< / code > v2.2.2测试< / p >
< h1 id = "测试环境" > < a href = "#测试环境" class = "headerlink" title = "测试环境" > < / a > 测试环境< / h1 > < ul >
< li > Ubuntu 22.0.4< / li >
< li > php8.0< / li >
< li > mariadb10.6< / li >
< li > composer< / li >
< li > redis< / li >
< li > nginx or apache< / li >
< / ul >
< h2 id = "测试程序" > < a href = "#测试程序" class = "headerlink" title = "测试程序" > < / a > 测试程序< / h2 > < p > sforum v2.2.2< / p >
< p > xiuno2sforum v2.2.2< / p >
< h2 id = "PHP" > < a href = "#PHP" class = "headerlink" title = "PHP" > < / a > PHP< / h2 > < h3 id = "安装PPA-源" > < a href = "#安装PPA-源" class = "headerlink" title = "安装PPA 源" > < / a > 安装PPA 源< / h3 > < p > 需要使用 PPA 源安装:< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > sudo add-apt-repository ppa:ondrej/php< / span > < br > < span class = "line" > sudo apt-get update< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h4 id = "安装php8-0" > < a href = "#安装php8-0" class = "headerlink" title = "安装php8.0" > < / a > 安装php8.0< / h4 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > apt install php8.0< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > apt install -y php8.0-dev< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h4 id = "安装拓展" > < a href = "#安装拓展" class = "headerlink" title = "安装拓展" > < / a > 安装拓展< / h4 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > apt install php8.0-curl php8.0-xml php8.0-gd php8.0-mbstring php8.0-redis php8.0-swoole php8.0-bcmath< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h3 id = "查看php版本" > < a href = "#查看php版本" class = "headerlink" title = "查看php版本" > < / a > 查看php版本< / h3 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > php -v< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 查看拓展< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > php -m< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h3 id = "切换PHP版本" > < a href = "#切换PHP版本" class = "headerlink" title = "切换PHP版本" > < / a > 切换PHP版本< / h3 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > update-alternatives --config php< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 切换到< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > update-alternatives --set php /usr/bin/php8.0< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h3 id = "PHP-扩展-ZipArchive" > < a href = "#PHP-扩展-ZipArchive" class = "headerlink" title = "PHP 扩展 ZipArchive" > < / a > PHP 扩展 ZipArchive< / h3 > < p > 上传压缩包提示500错误,打开日志发现是缺少组件< / p >
< h4 id = "服务器上存在多个php版本, 手动指定php-config文件" > < a href = "#服务器上存在多个php版本, 手动指定php-config文件" class = "headerlink" title = "服务器上存在多个php版本, 手动指定php-config文件" > < / a > 服务器上存在多个php版本, 手动指定php-config文件< / h4 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > ./configure --with-php-config=/www/server/php/73/bin/php-config< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h4 id = "安装ZipArchive扩展" > < a href = "#安装ZipArchive扩展" class = "headerlink" title = "安装ZipArchive扩展" > < / a > 安装ZipArchive扩展< / h4 > < h5 id = "编译ZipArchive" > < a href = "#编译ZipArchive" class = "headerlink" title = "编译ZipArchive" > < / a > 编译< code > ZipArchive< / code > < / h5 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < span class = "line" > 3< / span > < br > < span class = "line" > 4< / span > < br > < span class = "line" > 5< / span > < br > < span class = "line" > 6< / span > < br > < span class = "line" > 7< / span > < br > < span class = "line" > 8< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > cd ~< / span > < br > < span class = "line" > wget http://pecl.php.net/get/zip< / span > < br > < span class = "line" > tar -zxvf zip< / span > < br > < span class = "line" > cd zip-x.x.x< / span > < br > < span class = "line" > phpize< / span > < br > < span class = "line" > ./configure< / span > < br > < span class = "line" > make< / span > < br > < span class = "line" > make install< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h4 id = "成功安装zip之后会返回一个路径: " > < a href = "#成功安装zip之后会返回一个路径: " class = "headerlink" title = "成功安装zip之后会返回一个路径: " > < / a > 成功安装zip之后会返回一个路径: < / h4 > < p > 类似< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > Installing shared extensions: /www/server/php/8/lib/php/extensions/no-debug-non-zts-20180731/< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h4 id = "加到php-ini中: " > < a href = "#加到php-ini中: " class = "headerlink" title = "加到php.ini中: " > < / a > 加到php.ini中: < / h4 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > extension=/www/server/php/8/lib/php/extensions/no-debug-non-zts-20180731/zip.so< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 或< br > 在< code > php.ini< / code > 中添加< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > extension=zip.so< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h4 id = "提示checking-for-libzip-not-found" > < a href = "#提示checking-for-libzip-not-found" class = "headerlink" title = "提示checking for libzip... not found" > < / a > 提示< code > checking for libzip... not found< / code > < / h4 > < h5 id = "编译libzip" > < a href = "#编译libzip" class = "headerlink" title = "编译libzip" > < / a > 编译< code > libzip< / code > < / h5 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < span class = "line" > 3< / span > < br > < span class = "line" > 4< / span > < br > < span class = "line" > 5< / span > < br > < span class = "line" > 6< / span > < br > < span class = "line" > 7< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > wget https://libzip.org/download/libzip-1.3.2.tar.gz< / span > < br > < span class = "line" > tar xvf libzip-1.3.2.tar.gz< / span > < br > < span class = "line" > cd libzip-1.3.2< / span > < br > < span class = "line" > ./configure< / span > < br > < span class = "line" > make< / span > < br > < span class = "line" > make install< / span > < br > < span class = "line" > export PKG_CONFIG_PATH=" /usr/local/lib/pkgconfig/" < / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h3 id = "在使用插件转换数据中一直报错无法使用的class-medoo" > < a href = "#在使用插件转换数据中一直报错无法使用的class-medoo" class = "headerlink" title = "在使用插件转换数据中一直报错无法使用的class medoo" > < / a > 在使用插件转换数据中一直报错无法使用的class medoo< / h3 > < p > 所以使用cpmposer安装< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > composer require catfan/Medoo< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h2 id = "mariadb" > < a href = "#mariadb" class = "headerlink" title = "mariadb" > < / a > mariadb< / h2 > < h3 id = "创建数据库" > < a href = "#创建数据库" class = "headerlink" title = "创建数据库" > < / a > 创建数据库< / h3 > < p > < a target = "_blank" rel = "noopener" href = "https://www.jkjoy.cn/2023/dfdf0a76.html" > Mariadb创建数据库、用户及授权< / a > < / p >
< h3 id = "数据导入" > < a href = "#数据导入" class = "headerlink" title = "数据导入" > < / a > 数据导入< / h3 > < p > 导入sql备份文件< / p >
< p > 进入数据库< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > mysql -uroot -p< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 使用数据库bbs< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > use bbs< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 导入sql路径< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > source /root/bbs.sql;< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h2 id = "安装-Redis" > < a href = "#安装-Redis" class = "headerlink" title = "安装 Redis" > < / a > 安装 Redis< / h2 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > apt install redis-server< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h2 id = "安装-Nginx" > < a href = "#安装-Nginx" class = "headerlink" title = "安装 Nginx" > < / a > 安装 Nginx< / h2 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > apt install nginx< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h2 id = "安装composer" > < a href = "#安装composer" class = "headerlink" title = "安装composer" > < / a > 安装composer< / h2 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < span class = "line" > 3< / span > < br > < span class = "line" > 4< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > apt install git zip unzip< / span > < br > < span class = "line" > curl -sS https://getcomposer.org/installer | php< / span > < br > < span class = "line" > mv composer.phar /usr/local/bin/composer< / span > < br > < span class = "line" > chmod +x /usr/local/bin/composer< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h2 id = "安装SForum-v2-2-2" > < a href = "#安装SForum-v2-2-2" class = "headerlink" title = "安装SForum v2.2.2" > < / a > 安装SForum v2.2.2< / h2 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > composer create-project zhuchunshu/sforum=v2.2.2 sforum< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 进入安装目录,< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > cd sforum< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 按照提示,连续执行命令即可完成安装(启动服务也是此命令):< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > php CodeFec CodeFec< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< / div >
< / div >
< div class = "post-footer" >
< / div >
< div class = "recent-post-item" >
< div class = "post-title " >
< a href = "/posts/dfdf0a76.html" > Mariadb创建数据库、用户及授权< / a >
< / div >
< div class = "post-meta" >
< div class = "post-meta-item date" >
< span title = "发表于 2023.10.06" > < i class = "far fa-calendar-alt" > < / i > 2023.10.06< / span >
< / div >
< div class = "post-meta-item updated" >
< span title = "更新于 2024.05.09" > < i class = "far fa-calendar-check" > < / i > 2024.05.09< / span >
< / div >
< div class = "post-meta-item categories" >
< i class = "fas fa-inbox article-meta__icon" > < / i > < a href = "/categories/%E5%88%86%E4%BA%AB/" > 分享< / a >
< / div >
< div class = "post-meta-item wordcount" >
< i class = "fas fa-pencil-alt" > < / i > < span class = "post-count" > 270 字< / span >
< i class = "far fa-clock" > < / i > < span class = "post-count" > 1 分钟< / span >
< / div >
< / div >
< div class = "content" >
< p > 在测试< code > SForum< / code > 程序中使用到的部分关于数据库的操作< / p >
< h2 id = "安装Mariadb服务器" > < a href = "#安装Mariadb服务器" class = "headerlink" title = "安装Mariadb服务器" > < / a > 安装Mariadb服务器< / h2 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > apt install mariadb-server-10.6< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h2 id = "初始化数据库" > < a href = "#初始化数据库" class = "headerlink" title = "初始化数据库" > < / a > 初始化数据库< / h2 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > mysql_secure_installation< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h2 id = "连接数据库" > < a href = "#连接数据库" class = "headerlink" title = "连接数据库" > < / a > 连接数据库< / h2 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > mysql -u root -p < / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h2 id = "创建数据库" > < a href = "#创建数据库" class = "headerlink" title = "创建数据库" > < / a > 创建数据库< / h2 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > CREATE DATABASE bbs;< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h2 id = "创建一个本地访问数据库的账户" > < a href = "#创建一个本地访问数据库的账户" class = "headerlink" title = "创建一个本地访问数据库的账户" > < / a > 创建一个本地访问数据库的账户< / h2 > < h3 id = "创建用户" > < a href = "#创建用户" class = "headerlink" title = "创建用户" > < / a > 创建用户< / h3 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > CREATE USER ' username' @' localhost' IDENTIFIED BY ' password' ;< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h3 id = "参数:" > < a href = "#参数:" class = "headerlink" title = "参数:" > < / a > 参数:< / h3 > < p > < code > username< / code > :数据库访问的账户;< code > localhost< / code > :数据库的访问方式,外网访问的时候用%替换localhost即可; < code > password< / code > :数据库访问密码,此处输入密码明文;< / p >
< h2 id = "给测试账户分配权限" > < a href = "#给测试账户分配权限" class = "headerlink" title = "给测试账户分配权限" > < / a > 给测试账户分配权限< / h2 > < h3 id = "分配所有权限" > < a href = "#分配所有权限" class = "headerlink" title = "分配所有权限" > < / a > 分配所有权限< / h3 > < p > 给用户分配所有的权限, 并且通过localhost访问< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > GRANT ALL ON bbs.* to username@' localhost' IDENTIFIED BY ' password' ;< / span > < br > < span class = "line" > FLUSH privileges;< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h3 id = "分配部分权限" > < a href = "#分配部分权限" class = "headerlink" title = "分配部分权限" > < / a > 分配部分权限< / h3 > < h4 id = "给账户分配部分的权限,并且通过外网访问" > < a href = "#给账户分配部分的权限,并且通过外网访问" class = "headerlink" title = "给账户分配部分的权限,并且通过外网访问" > < / a > 给账户分配部分的权限,并且通过外网访问< / h4 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > GRANT insert,delete,select,update ON test.* to username@' %' IDENTIFIED BY ' password' ;< / span > < br > < span class = "line" > FLUSH privileges;< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h4 id = "或则采用下面的代码,除了操作权限授权外,还赋予授权的权限。" > < a href = "#或则采用下面的代码,除了操作权限授权外,还赋予授权的权限。" class = "headerlink" title = "或则采用下面的代码,除了操作权限授权外,还赋予授权的权限。" > < / a > 或则采用下面的代码,除了操作权限授权外,还赋予授权的权限。< / h4 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > GRANT ALL ON test.* to username@' %' IDENTIFIED BY ' passowrd' WITH GRANT OPTION;< / span > < br > < span class = "line" > FLUSH privileges;< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< / div >
< / div >
< div class = "post-footer" >
< / div >
< div class = "recent-post-item" >
< div class = "post-title " >
< a href = "/posts/eb6a87ce.html" > centos在yum时出现Determining fastest mirrors< / a >
< / div >
< div class = "post-meta" >
< div class = "post-meta-item date" >
< span title = "发表于 2023.10.05" > < i class = "far fa-calendar-alt" > < / i > 2023.10.05< / span >
< / div >
< div class = "post-meta-item updated" >
< span title = "更新于 2024.05.09" > < i class = "far fa-calendar-check" > < / i > 2024.05.09< / span >
< / div >
< div class = "post-meta-item categories" >
< i class = "fas fa-inbox article-meta__icon" > < / i > < a href = "/categories/%E5%88%86%E4%BA%AB/" > 分享< / a >
< / div >
< div class = "post-meta-item wordcount" >
< i class = "fas fa-pencil-alt" > < / i > < span class = "post-count" > 252 字< / span >
< i class = "far fa-clock" > < / i > < span class = "post-count" > 1 分钟< / span >
< / div >
< / div >
< div class = "content" >
< h2 id = "问题1" > < a href = "#问题1" class = "headerlink" title = "问题1" > < / a > 问题1< / h2 > < p > 在< code > yum makecache< / code > 时,停在< code > Determining fastest mirrors< / code > , 一直在判断最快镜像, 由于已经指定了yum源, 所以不需要些插件, 可以用动禁用。< / p >
< p > 解决方法:< / p >
< p > 修改< code > /etc/yum/pluginconf.d/fastestmirror.conf< / code > 里面的< code > enabled=0< / code > ; < / p >
< p > 修改< code > /etc/yum.conf< / code > 里面的< code > plugins=0< / code > < / p >
< p > 问题解决。< / p >
< h2 id = "问题2" > < a href = "#问题2" class = "headerlink" title = "问题2" > < / a > 问题2< / h2 > < p > Could not retrieve mirrorlist < a target = "_blank" rel = "noopener" href = "http://mirrors.elrepo.org/mirrors-elrepo.el7" > http://mirrors.elrepo.org/mirrors-elrepo.el7< / a > error was< br > 12: Timeout on < a target = "_blank" rel = "noopener" href = "http://mirrors.elrepo.org/mirrors-elrepo.el7" > http://mirrors.elrepo.org/mirrors-elrepo.el7< / a > : (28, ‘ Connection timed out after 30001 milliseconds’ )< / p >
< p > 镜像列表< a target = "_blank" rel = "noopener" href = "http://mirrors.elrepo.org/mirrors-elrepo.el7" > http://mirrors.elrepo.org/mirrors-elrepo.el7< / a > 的地址无法访问< / p >
< p > 解决方法< / p >
< p > 更新ELRepo 软件仓库镜像< br > 首先按照官网的安装说明,配置 ELRepo: < / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 按照你的系统版本,运行:< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 接下来是换源,建议先备份 < code > /etc/yum.repos.d/elrepo.repo< / code > : < / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > cp /etc/yum.repos.d/elrepo.repo /etc/yum.repos.d/elrepo.repo.bak< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 然后编辑< code > /etc/yum.repos.d/elrepo.repo< / code > 文件,在 < code > mirrorlist= < / code > 后的地址替换为< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > https://mirrors.tuna.tsinghua.edu.cn/elrepo< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 最后,更新软件包缓存< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > yum makecache< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< / div >
< / div >
< div class = "post-footer" >
< / div >
< div class = "recent-post-item" >
< div class = "post-title " >
< a href = "/posts/57ea9005.html" > Docker部署Activity-Relay服务< / a >
< / div >
< div class = "post-meta" >
< div class = "post-meta-item date" >
< span title = "发表于 2023.10.03" > < i class = "far fa-calendar-alt" > < / i > 2023.10.03< / span >
< / div >
< div class = "post-meta-item updated" >
< span title = "更新于 2024.05.09" > < i class = "far fa-calendar-check" > < / i > 2024.05.09< / span >
< / div >
< div class = "post-meta-item categories" >
< i class = "fas fa-inbox article-meta__icon" > < / i > < a href = "/categories/%E5%88%86%E4%BA%AB/" > 分享< / a >
< / div >
< div class = "post-meta-item wordcount" >
< i class = "fas fa-pencil-alt" > < / i > < span class = "post-count" > 337 字< / span >
< i class = "far fa-clock" > < / i > < span class = "post-count" > 1 分钟< / span >
< / div >
< / div >
< div class = "content" >
< ul >
< li > 经过测试国内部署会有无法通讯的问题.< / li >
< / ul >
< h2 id = "测试环境" > < a href = "#测试环境" class = "headerlink" title = "测试环境" > < / a > 测试环境< / h2 > < p > centos7.9< / p >
< h2 id = "准备工作" > < a href = "#准备工作" class = "headerlink" title = "准备工作" > < / a > 准备工作< / h2 > < ul >
< li > git< / li >
< li > openssl< / li >
< li > nginx< / li >
< li > docker< / li >
< li > docker-compose< / li >
< / ul >
< h2 id = "从仓库Pull-a-repository" > < a href = "#从仓库Pull-a-repository" class = "headerlink" title = "从仓库Pull a repository" > < / a > 从仓库Pull a repository< / h2 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > git clone https://github.com/yukimochi/Activity-Relay.git -b v2.0.0< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h2 id = "复制编辑config-yml" > < a href = "#复制编辑config-yml" class = "headerlink" title = "复制编辑config.yml" > < / a > 复制编辑config.yml< / h2 > < p > 进入< code > Activity-Relay< / code > 目录< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > cd Activity-Relay< / span > < br > < span class = "line" > cp config.yml.example config.yml< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 修改相关配置< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > vim config.yml< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h2 id = "生成actor-RSA-证书-x2F-actor-pem" > < a href = "#生成actor-RSA-证书-x2F-actor-pem" class = "headerlink" title = "生成actor RSA 证书 ./actor.pem" > < / a > 生成actor RSA 证书 ./ actor.pem< / h2 > < p > ubuntu使用< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > openssl genrsa -traditional | tee actor.pem< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > centos使用< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > openssl genrsa -out actor.pem 1024 | tee actor.pem< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 赋予权限600< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > chmod 600 actor.pem< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h2 id = "构建镜像与运行服务" > < a href = "#构建镜像与运行服务" class = "headerlink" title = "构建镜像与运行服务" > < / a > 构建镜像与运行服务< / h2 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > docker-compose build< / span > < br > < span class = "line" > docker-compose up -d< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h2 id = "查看容器运行状态" > < a href = "#查看容器运行状态" class = "headerlink" title = "查看容器运行状态" > < / a > 查看容器运行状态< / h2 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > docker-compose ps< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h2 id = "停止服务" > < a href = "#停止服务" class = "headerlink" title = "停止服务" > < / a > 停止服务< / h2 > < figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > docker-compose down< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< h2 id = "相关参考" > < a href = "#相关参考" class = "headerlink" title = "相关参考" > < / a > 相关参考< / h2 > < p > docker-compose配置< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < span class = "line" > 3< / span > < br > < span class = "line" > 4< / span > < br > < span class = "line" > 5< / span > < br > < span class = "line" > 6< / span > < br > < span class = "line" > 7< / span > < br > < span class = "line" > 8< / span > < br > < span class = "line" > 9< / span > < br > < span class = "line" > 10< / span > < br > < span class = "line" > 11< / span > < br > < span class = "line" > 12< / span > < br > < span class = "line" > 13< / span > < br > < span class = "line" > 14< / span > < br > < span class = "line" > 15< / span > < br > < span class = "line" > 16< / span > < br > < span class = "line" > 17< / span > < br > < span class = "line" > 18< / span > < br > < span class = "line" > 19< / span > < br > < span class = "line" > 20< / span > < br > < span class = "line" > 21< / span > < br > < span class = "line" > 22< / span > < br > < span class = "line" > 23< / span > < br > < span class = "line" > 24< / span > < br > < span class = "line" > 25< / span > < br > < span class = "line" > 26< / span > < br > < span class = "line" > 27< / span > < br > < span class = "line" > 28< / span > < br > < span class = "line" > 29< / span > < br > < span class = "line" > 30< / span > < br > < span class = "line" > 31< / span > < br > < span class = "line" > 32< / span > < br > < span class = "line" > 33< / span > < br > < span class = "line" > 34< / span > < br > < span class = "line" > 35< / span > < br > < span class = "line" > 36< / span > < br > < span class = "line" > 37< / span > < br > < span class = "line" > 38< / span > < br > < span class = "line" > 39< / span > < br > < span class = "line" > 40< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > version: " 2.3" < / span > < br > < span class = "line" > services:< / span > < br > < span class = "line" > redis:< / span > < br > < span class = "line" > restart: always< / span > < br > < span class = "line" > image: redis:alpine< / span > < br > < span class = "line" > healthcheck:< / span > < br > < span class = "line" > test: [" CMD" , " redis-cli" , " ping" ]< / span > < br > < span class = "line" > volumes:< / span > < br > < span class = "line" > - " ./redisdata:/data" < / span > < br > < span class = "line" > < / span > < br > < span class = "line" > worker:< / span > < br > < span class = "line" > container_name: worker< / span > < br > < span class = "line" > build: .< / span > < br > < span class = "line" > image: yukimochi/activity-relay< / span > < br > < span class = "line" > working_dir: /var/lib/relay< / span > < br > < span class = "line" > restart: always< / span > < br > < span class = "line" > init: true< / span > < br > < span class = "line" > command: relay worker< / span > < br > < span class = "line" > volumes:< / span > < br > < span class = "line" > - " ./actor.pem:/var/lib/relay/actor.pem" < / span > < br > < span class = "line" > - " ./config.yml:/var/lib/relay/config.yml" < / span > < br > < span class = "line" > depends_on:< / span > < br > < span class = "line" > - redis< / span > < br > < span class = "line" > < / span > < br > < span class = "line" > server:< / span > < br > < span class = "line" > container_name: relay< / span > < br > < span class = "line" > build: .< / span > < br > < span class = "line" > image: yukimochi/activity-relay< / span > < br > < span class = "line" > working_dir: /var/lib/relay< / span > < br > < span class = "line" > restart: always< / span > < br > < span class = "line" > init: true< / span > < br > < span class = "line" > ports:< / span > < br > < span class = "line" > - " 8080:8080" < / span > < br > < span class = "line" > command: relay server< / span > < br > < span class = "line" > volumes:< / span > < br > < span class = "line" > - " ./actor.pem:/var/lib/relay/actor.pem" < / span > < br > < span class = "line" > - " ./config.yml:/var/lib/relay/config.yml" < / span > < br > < span class = "line" > depends_on:< / span > < br > < span class = "line" > - redis< / span > < br > < span class = "line" > < / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > Nginx设置< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < span class = "line" > 3< / span > < br > < span class = "line" > 4< / span > < br > < span class = "line" > 5< / span > < br > < span class = "line" > 6< / span > < br > < span class = "line" > 7< / span > < br > < span class = "line" > 8< / span > < br > < span class = "line" > 9< / span > < br > < span class = "line" > 10< / span > < br > < span class = "line" > 11< / span > < br > < span class = "line" > 12< / span > < br > < span class = "line" > 13< / span > < br > < span class = "line" > 14< / span > < br > < span class = "line" > 15< / span > < br > < span class = "line" > 16< / span > < br > < span class = "line" > 17< / span > < br > < span class = "line" > 18< / span > < br > < span class = "line" > 19< / span > < br > < span class = "line" > 20< / span > < br > < span class = "line" > 21< / span > < br > < span class = "line" > 22< / span > < br > < span class = "line" > 23< / span > < br > < span class = "line" > 24< / span > < br > < span class = "line" > 25< / span > < br > < span class = "line" > 26< / span > < br > < span class = "line" > 27< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > upstream relay { < / span > < br > < span class = "line" > server 127.0.0.1:8080;< / span > < br > < span class = "line" > } < / span > < br > < span class = "line" > server { < / span > < br > < span class = "line" > server_name relay.example.com;< / span > < br > < span class = "line" > < / span > < br > < span class = "line" > location / { < / span > < br > < span class = "line" > root /var/lib/relay;< / span > < br > < span class = "line" > try_files $uri $uri/index.html =404;< / span > < br > < span class = "line" > } < / span > < br > < span class = "line" > < / span > < br > < span class = "line" > location /inbox { < / span > < br > < span class = "line" > rewrite ^/inbox(.*) /$1 break;< / span > < br > < span class = "line" > proxy_pass http://relay/;< / span > < br > < span class = "line" > proxy_pass_request_headers on;< / span > < br > < span class = "line" > proxy_set_header Host $http_host;< / span > < br > < span class = "line" > } < / span > < br > < span class = "line" > < / span > < br > < span class = "line" > location /actor { < / span > < br > < span class = "line" > rewrite ^/inbox(.*) /$1 break;< / span > < br > < span class = "line" > proxy_pass http://relay/;< / span > < br > < span class = "line" > proxy_pass_request_headers on;< / span > < br > < span class = "line" > proxy_set_header Host $http_host;< / span > < br > < span class = "line" > } < / span > < br > < span class = "line" > < / span > < br > < span class = "line" > } < / span > < br > < span class = "line" > < / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< / div >
< / div >
< div class = "post-footer" >
< / div >
< div class = "recent-post-item" >
< div class = "post-title " >
< a href = "/posts/a116570f.html" > NEC M700黑苹果OC0.9.4引导< / a >
< / div >
< div class = "post-meta" >
< div class = "post-meta-item date" >
< span title = "发表于 2023.10.01" > < i class = "far fa-calendar-alt" > < / i > 2023.10.01< / span >
< / div >
< div class = "post-meta-item updated" >
< span title = "更新于 2024.05.09" > < i class = "far fa-calendar-check" > < / i > 2024.05.09< / span >
< / div >
< div class = "post-meta-item categories" >
< i class = "fas fa-inbox article-meta__icon" > < / i > < a href = "/categories/%E5%88%86%E4%BA%AB/" > 分享< / a >
< / div >
< div class = "post-meta-item wordcount" >
< i class = "fas fa-pencil-alt" > < / i > < span class = "post-count" > 94 字< / span >
< i class = "far fa-clock" > < / i > < span class = "post-count" > 1 分钟< / span >
< / div >
< / div >
< div class = "content" >
< h2 id = "NEC-M700黑苹果OC0-9-4引导" > < a href = "#NEC-M700黑苹果OC0-9-4引导" class = "headerlink" title = "NEC M700黑苹果OC0.9.4引导" > < / a > NEC M700黑苹果OC0.9.4引导< / h2 > < h3 id = "配置" > < a href = "#配置" class = "headerlink" title = "配置" > < / a > 配置< / h3 > < p > CPU QHPW 2.2Ghz 四核心八线程I7es魔改< br > 主板NEC< br > 内存8GB DDR4 2666Mhz< br > 硬盘512GB SSD< br > 无线网卡BCM943224pcieBT拆机< br > 有线网卡INTEL< br > 声卡ALC235< / p >
< h3 id = "准备工作" > < a href = "#准备工作" class = "headerlink" title = "准备工作" > < / a > 准备工作< / h3 > < p > U盘 16G以上< br > 解锁CFG LOCK工具< br > ami BIOS提取工具< br > opencore< br > OCAT< / p >
< h3 id = "解锁CFG-LOCK" > < a href = "#解锁CFG-LOCK" class = "headerlink" title = "解锁CFG LOCK" > < / a > 解锁CFG LOCK< / h3 > < p > 在WINDOWS系统下通过工具提取出BIOS.< br > 通过< code > UEFI TOOL< / code > 打开提取出的BIOS文件,查找< code > cfg lock< / code > < / p >
< / div >
< / div >
< div class = "post-footer" >
< / div >
< / div >
< nav class = "paginator" >
< a class = "next" href = "/page/2/" > 下一页 >< / a >
< / nav >
< a id = "gotop" href = "javascript:" title = "返回顶部" > < i class = "fa fa-arrow-up" > < / i > < / a >
< div id = "bottom-outer" >
< div id = "bottom-inner" >
© 2020 < i class = "fa fa-heart" id = "heart" > < / i > 浪子
< br >
Powered by
< a target = "_blank" rel = "noopener" href = "http://hexo.io" > hexo< / a > | Theme is < a target = "_blank" rel = "noopener" href = "https://github.com/a2396837/hexo-theme-blank/" > blank< / a >
< div class = "icp-info" >
< a href = "" target = "_blank" > < / a >
< / div >
< / div >
< / div >
< script src = "https://cdn.jsdelivr.net/npm/layui-src@2.5.5/dist/layui.min.js" > < / script >
< script src = "/js/script.js" > < / script >
< script src = "https://cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js" > < / script >
< script >
window.lazyLoadOptions = {
elements_selector: 'img',
threshold: 0
}
< / script >
< script src = "https://cdn.jsdelivr.net/npm/vanilla-lazyload/dist/lazyload.iife.min.js" > < / script >
< script >
var images = $('img').not('.nav-logo img').not('.card img').not($('a>img')).not('.reward-content img')
images.each(function (i, o) {
var lazyloadSrc = $(o).attr('data-src') ? $(o).attr('data-src') : $(o).attr('src')
$(o).wrap(`< a href = "${lazyloadSrc}" data-fancybox = "group" data-caption = "${$(o).attr('alt')}" class = "fancybox" > < / a > `)
})
< / script >
< script src = "https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.js" > < / script >
< script >
$().fancybox({
selector: '[data-fancybox]',
loop: true,
transitionEffect: 'slide',
protect: true,
buttons: ['slideShow', 'fullScreen', 'thumbs', 'close']
})
< / script >
< div id = "QPlayer" >
< div id = "pContent" >
< div id = "player" >
< span class = "cover" > < / span >
< div class = "ctrl" >
< div class = "musicTag marquee" >
< strong > Title< / strong >
< span > - < / span >
< span class = "artist" > Artist< / span >
< / div >
< div class = "progress" >
< div class = "timer left" > 0:00< / div >
< div class = "contr" >
< div class = "rewind icon" > < / div >
< div class = "playback icon" > < / div >
< div class = "fastforward icon" > < / div >
< / div >
< div class = "right" >
< div class = "liebiao icon" > < / div >
< / div >
< / div >
< / div >
< / div >
< div class = "ssBtn" >
< div class = "adf" > < i class = "fas fa-music" style = "color: #Fff;" > < / i > < / div >
< / div >
< / div >
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/gh/a2396837/CDN@latest/css/audio.css" >
< ol id = "playlist" > < / ol >
< / div >
< script src = "https://cdn.jsdelivr.net/npm/jquery.marquee@1.5.0/jquery.marquee.min.js" > < / script >
< script >
var playlist = [];
playlist.push({title:'我要开花',artist:'二手玫瑰',mp3:'https://xy07-1251893119.cos.ap-beijing-1.myqcloud.com/%E4%BA%8C%E6%89%8B%E7%8E%AB%E7%91%B0%20-%20%E6%88%91%E8%A6%81%E5%BC%80%E8%8A%B1.mp3',cover:'https://p1.music.126.net/DSTg1dR7yKsyGq4IK3NL8A==/109951163046050093.jpg'})
var isRotate = true;
var autoplay = false;
< / script >
< script src = "https://cdn.jsdelivr.net/gh/a2396837/CDN@latest/js/player.js" > < / script >
< script >
function bgChange(){
var lis= $('.lib');
for(var i=0; i< lis.length ; i + = 2 )
lis[i].style.background = 'rgba(246, 246, 246, 0.5)';
}
window.onload = bgChange;
< / script >
< script src = "https://cdn.jsdelivr.net/npm/instant.page/instantpage.min.js" type = "module" defer > < / script >
< script src = "https://cdn.jsdelivr.net/npm/clipboard@2.0.4/dist/clipboard.min.js" > < / script >
< script >
!function (e, t, a) {
var initCopyCode = function(){
var copyHtml = '';
copyHtml += '< button class = "btn-copy" data-clipboard-snippet = "" > ';
copyHtml += ' < i class = "fa fa-clipboard" > < / i > < span > 复制< / span > ';
copyHtml += '< / button > ';
$(".highlight .code pre").before(copyHtml);
new ClipboardJS('.btn-copy', {
target: function(trigger) {
return trigger.nextElementSibling;
}
});
}
initCopyCode();
}(window, document);
< / script >
< script >
var btntop = $('#gotop');
btntop.on('click', function (e) {
e.preventDefault();
$('html, body').animate({ scrollTop: 0 }, '300');
});
var $table = $('.content table').not($('figure.highlight > table'))
$table.each(function () {
$(this).wrap('< div class = "table-wrap" > < / div > ')
})
< / script >
< / html >