From 46bea347f591eb557097944e6f91c4ae813bed23 Mon Sep 17 00:00:00 2001 From: neo Date: Thu, 10 Aug 2023 12:36:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E6=96=87=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dumi/theme/layout.tsx | 44 +++- .umirc.ts | 41 +--- docs/index.md | 4 + docs/install/nvm-for-nodejs.md | 266 +++++++++++++++++++++++++ docs/install/stable-diffusion-webui.md | 175 ++++++++++++++++ 5 files changed, 494 insertions(+), 36 deletions(-) create mode 100644 docs/install/nvm-for-nodejs.md create mode 100644 docs/install/stable-diffusion-webui.md diff --git a/.dumi/theme/layout.tsx b/.dumi/theme/layout.tsx index f4152eb..61e08ea 100644 --- a/.dumi/theme/layout.tsx +++ b/.dumi/theme/layout.tsx @@ -1,4 +1,4 @@ -import React, { useContext, useState, useEffect } from 'react'; +import React, { useContext, useState } from 'react'; import { IRouteComponentProps } from '@umijs/types'; import { context, Link } from 'dumi/theme'; import Navbar from 'dumi-theme-default/src/components/Navbar'; @@ -6,7 +6,9 @@ import SideMenu from 'dumi-theme-default/src/components/SideMenu'; import SlugList from 'dumi-theme-default/src/components/SlugList'; import SearchBar from 'dumi-theme-default/src/components/SearchBar'; import { Popover } from 'antd'; +import { Helmet } from 'dumi' import Notice from './Notice'; +import { useLocation } from 'react-router-dom' import './style/layout.less'; const Hero = hero => ( @@ -71,10 +73,18 @@ const Features = features => ( const Layout: React.FC = ({ children, location }) => { const { - config: { mode, repository }, + config, meta, locale, } = useContext(context); + + const { mode, repository, logo } = config + + const { pathname } = useLocation(); + + // todo 临时方案 + const hostname = 'https://brew.idayer.com' + const { url: repoUrl, branch, platform } = repository; const [menuCollapsed, setMenuCollapsed] = useState(true); const isSiteMode = mode === 'site'; @@ -94,9 +104,17 @@ const Layout: React.FC = ({ children, location }) => { }); const repoPlatform = { github: 'GitHub', gitlab: 'GitLab' }[ - (repoUrl || '').match(/(github|gitlab)/)?.[1] || 'nothing' + (repoUrl || '').match(/(github|gitlab)/)?.[1] || 'nothing' ] || platform; + if(!meta.img && logo) { + meta.img = logo + } + + if(meta.img.indexOf('https://') === -1) { + meta.img = hostname + meta.img + } + return (
= ({ children, location }) => { setMenuCollapsed(true); }} > + + {meta.title && {meta.title}} + {meta.title && } + {meta.description && } + {meta.description && ( + + )} + {meta.keywords && ( + + )} + {meta.keywords && + meta.keywords.map((keyword) => ( + + ))} + {/* */} + {hostname && } + {meta.img && ( + + )} + Powered by [Neo](https://github.com/ineo6) + +keywords: [Mac,Homebrew,macOS] +title: 快速安装Homebrew教程 +description: Homebrew是macOS上最强大的包管理工具,可以帮你安装众多软件,本站提供的一键安装脚本可以帮你快速安装Homebrew。 ---

镜像快速安装Homebrew教程

diff --git a/docs/install/nvm-for-nodejs.md b/docs/install/nvm-for-nodejs.md new file mode 100644 index 0000000..2de397d --- /dev/null +++ b/docs/install/nvm-for-nodejs.md @@ -0,0 +1,266 @@ +--- +nav: + title: 快系列 + +keywords: [nvm,node,前端,mac] +--- + +# nvm 快速安装教程 + +`nvm`作为一款`node`的版本管理工具,在前端开发中是必不可少的,但是因为`GitHub`的特殊性,导致很多人是无法用官方教程安装成功,本文旨在整理出如德芙般丝滑的安装教程。 + +本文介绍的安装方法,你可以理解为通过仓库镜像的方式安装。 + +如果你能正常稳定访问`GitHub`,则无需通过本文的加速方式安装,但是仍然可以借鉴安装流程。 + +## 安装 + +### 国内加速脚本 + +```sh +export NVM_SOURCE=https://gitee.com/mirrors/nvm.git +curl -o- https://gitee.com/mirrors/nvm/raw/master/install.sh | bash +``` + +### 检验安装是否成功 + +```sh +command -v nvm +``` + +执行后如果显示`nvm`则表示已经安装成功。 + +如果遇到`nvm`命令找不到的问题,请查阅文末的“FAQ”。 + +### 配置 + +#### 1. 设置为系统默认node + +因为`nvm`安装的结果都是下面这样的格式: + +```sh +/Users/neo/.nvm/versions/node/v14.17.4/bin/node +``` + +为了确保在所有的`shell`以及`ide`中都可以正常工作,我们需要设置把`nvm`安装的`node`设置为系统默认。 + +```sh +nvm alias default node +``` + +#### 2. 设置node镜像 + +这里是给安装`node`设置镜像。 + +```sh +export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node +nvm install node + +// 或者 +NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node nvm install 4.2 +``` + +长期替换可以使用下面的设置: + +```sh +echo 'export NVM_NODEJS_ORG_MIRROR="https://npmmirror.com/mirrors/node"' >> ~/.zshrc +``` + +*注意!* 上面脚本是把配置写入文件`.zshrc`,你如果对此不了解,请参考`FAQ`,确定是否更换为`.bash_profile`。 + +### 更新 + +重新执行安装脚本即可。 + +## 安装node + +安装最新版本: + +```shell +nvm install node # "node"代表最新版本 +``` + +安装指定版本: + +```shell +nvm install 14.16.1 # or 10.10.0, 8.9.1, etc +``` + +通过`ls-remote`可以查看所有可安装的版本列表: + +```shell +nvm ls-remote +``` + +然后使用`use`启用安装的版本: + +```shell +// 最新版本 +nvm use node + +// 指定版本 +nvm use 6.14.4 +``` + +你也可以通过`which`命令查看已安装`node`所在目录: + +```shell +nvm which 5.0 +``` + +通过以下命令可以安装最新版`npm`: + +```shell +nvm install-latest-npm +``` + +### 设置终端默认node + +`nvm`包含以下几个别名(alias): + +- node: 已安装的`node`最新版 +- iojs: 已安装的`io.js`最新版 +- stable: 已废弃,现在是`node`的别名 +- unstable: 已废弃 + +当我们安装了新版的`node`之后,`nvm`默认还会指向旧版本,通过执行以下命令将`node`别名指向到最新版。 + +这样可以解决`node`找不到的问题。 + +```shell +nvm alias default node +``` + +如果你不想指向已安装的最新版`node`,可以直接指向版本号,比如: + +```sh +nvm alias default 16.20.1 +``` + +## 多node环境下使用 + +### 在项目中使用不同版本node + +你可以在项目根目录中创建`.nvmrc`来指定`node`版本,文件写入想要的版本号。 + +``` +14.16.1 +``` + +然后在根目录使用`nvm use`即可,缺点就是每次都要手动执行,如果想实现自动化可以按照下面的设置。 + +#### bash + +把下面内容追加到`~/.bashrc`: + +```shell +cdnvm() { + cd "$@"; + nvm_path=$(nvm_find_up .nvmrc | tr -d '\n') + + # If there are no .nvmrc file, use the default nvm version + if [[ ! $nvm_path = *[^[:space:]]* ]]; then + + declare default_version; + default_version=$(nvm version default); + + # If there is no default version, set it to `node` + # This will use the latest version on your machine + if [[ $default_version == "N/A" ]]; then + nvm alias default node; + default_version=$(nvm version default); + fi + + # If the current version is not the default version, set it to use the default version + if [[ $(nvm current) != "$default_version" ]]; then + nvm use default; + fi + + elif [[ -s $nvm_path/.nvmrc && -r $nvm_path/.nvmrc ]]; then + declare nvm_version + nvm_version=$(<"$nvm_path"/.nvmrc) + + declare locally_resolved_nvm_version + # `nvm ls` will check all locally-available versions + # If there are multiple matching versions, take the latest one + # Remove the `->` and `*` characters and spaces + # `locally_resolved_nvm_version` will be `N/A` if no local versions are found + locally_resolved_nvm_version=$(nvm ls --no-colors "$nvm_version" | tail -1 | tr -d '\->*' | tr -d '[:space:]') + + # If it is not already installed, install it + # `nvm install` will implicitly use the newly-installed version + if [[ "$locally_resolved_nvm_version" == "N/A" ]]; then + nvm install "$nvm_version"; + elif [[ $(nvm current) != "$locally_resolved_nvm_version" ]]; then + nvm use "$nvm_version"; + fi + fi +} +alias cd='cdnvm' +cd $PWD +``` + +#### zsh + +把下面内容追加到`~/.zshrc`: + +```shell +# place this after nvm initialization! +autoload -U add-zsh-hook +load-nvmrc() { + local node_version="$(nvm version)" + local nvmrc_path="$(nvm_find_nvmrc)" + + if [ -n "$nvmrc_path" ]; then + local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")") + + if [ "$nvmrc_node_version" = "N/A" ]; then + nvm install + elif [ "$nvmrc_node_version" != "$node_version" ]; then + nvm use + fi + elif [ "$node_version" != "$(nvm version default)" ]; then + echo "Reverting to nvm default version" + nvm use default + fi +} +add-zsh-hook chpwd load-nvmrc +load-nvmrc +``` + + +### 安装时迁移全局npm包 + +执行时通过`reinstall-packages-from`参数指定旧的`node`版本,这样可以把指定版本内`npm`全局安装的包迁移到当前的`node`版本。 + +```shelo +nvm install v12.0.0 --reinstall-packages-from=10.0 +``` + + +## FAQ + +### nvm命令找不到(command not found) + +需要手动配置环境变量。 + +执行命令`echo $SHELL`,根据结果判断写入的文件: + +- /bin/zsh => zsh => .zshrc +- /bin/bash => bash => .bash_profile + +#### .zshrc + +```sh +echo 'export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.zshrc +source ~/.zshrc +``` + +#### .bash_profile + +```sh +echo 'export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bash_profile +source ~/.bash_profile +``` diff --git a/docs/install/stable-diffusion-webui.md b/docs/install/stable-diffusion-webui.md new file mode 100644 index 0000000..45a967b --- /dev/null +++ b/docs/install/stable-diffusion-webui.md @@ -0,0 +1,175 @@ +--- +nav: + title: 快系列 + +keywords: [stable diffusion,chatgpt,aigc,mac] +img: /images/16910608535268/16912211144978.jpg +--- + +# mac极速安装stable diffusion webui教程 + +本文介绍的安装教程不需要魔法,能够让你快速在`mac`上安装`stable diffusion webui`,并且支持`m1`、`m2`、`intel`所有芯片平台运行,让我们赶紧享受吧! + +注意:涉及到命令的执行请在终端执行。 + +## 安装 Homebrew + +使用`Homebrew`一键安装命令: + +```shell +/bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)" +``` + +请认准`Homebrew`快速安装教程:[https://brew.idayer.com](https://brew.idayer.com)。 + +安装完成后,在终端输入`brew -v`执行,如果返回版本号信息(如下),那恭喜你,完成万里长征最重要的一步。 + +```shell +❯ brew -v +Homebrew 4.1.0-27-g3dcf3db +Homebrew/homebrew-core (git revision 468745ba82c; last commit 2023-07-23) +Homebrew/homebrew-cask (git revision 4d3e61fae8; last commit 2023-07-23) +``` + +## 安装 stable diffusion webui 的依赖 + +在终端执行下面命令安装相关依赖。 + +```shell +brew install cmake protobuf rust python@3.10 wget +``` + +## pip设置镜像 + +这里一定要使用阿里云的源,清华大学的源存在问题,不能安装`GFPGAN`。 + +```shell +pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ +``` + +如果`pip`找不到,请把`pip`替换为`pip3`再执行。 + +## 下载 stable diffusion webui 代码 + +在你想放置`stable diffusion webui`的目录下执行下面命令: + +```shell +git clone https://gitee.com/ineo6/stable-diffusion-webui.git +``` + +成功后会出现一个`stable-diffusion-webui`目录,后面模型要放置的`model`就是在这里。 + +我们先进入到目录,以备后面操作使用: + +```shell +cd stable-diffusion-webui +``` + +## 下载模型 + +代码克隆下来后,还需要下载模型,一般模型文件后缀为`.ckpt`或者`.safetensors`,而且都比较大,是以`G`为单位。我们可以参照 [Wiki](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Installation-on-Apple-Silicon#downloading-stable-diffusion-models) 说明上的链接在[Hugging Face](https://huggingface.co/)上进行下载,这里一般下载 1.4 或者 1.5 版本的就行。 + +- [Stable DIffusion 1.4](https://huggingface.co/CompVis/stable-diffusion-v-1-4-original) ([sd-v1-4.ckpt](https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt)) +- [Stable Diffusion 1.5](https://huggingface.co/runwayml/stable-diffusion-v1-5) ([v1-5-pruned-emaonly.ckpt](https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt)) +- [Stable Diffusion 1.5 Inpainting](https://huggingface.co/runwayml/stable-diffusion-inpainting) ([sd-v1-5-inpainting.ckpt](https://huggingface.co/runwayml/stable-diffusion-inpainting/resolve/main/sd-v1-5-inpainting.ckpt)) +- [Stable Diffusion 2.0](https://huggingface.co/stabilityai/stable-diffusion-2) ([768-v-ema.ckpt](https://huggingface.co/stabilityai/stable-diffusion-2/resolve/main/768-v-ema.ckpt)) +- [Stable Diffusion 2.1](https://huggingface.co/stabilityai/stable-diffusion-2-1) ([v2-1_768-ema-pruned.ckpt](https://huggingface.co/stabilityai/stable-diffusion-2-1/resolve/main/v2-1_768-ema-pruned.ckpt)) + +不过如果你想要下面这些很好看的图片,就要在[Civitai](https://civitai.com/)下载各种模型了。 + +![](/images/16910608535268/16912211144978.jpg) + +比如模型[ChilloutMix](https://civitai.com/models/6424/chilloutmix),抖音 AI 小姐姐大多数都是基于这个模型生成的。 + +点击页面上的`Download`按钮进行下载。 + +![](/images/16910608535268/16912212998388.jpg) + +由于是`SafeTensor`类型的模型,所以下载的文件后缀为`.safetensors`,下载完成后,将该模型文件复制到下面的目录: + +```shell +stable-diffusion-webui/models/Stable-diffusion +``` + +## 启动 stable diffusion webui 本体 + +我提供的`stable-diffusion-webui`内部已经预设了加速处理,不需要使用加速工具。 + +执行下面命令启动: + +```shell +./webui.sh +``` + +当你看到有如下内容时,大概率是成功了: + +```shell +Running on local URL: http://127.0.0.1:7860 +``` + +### 切换加速源 + +注意:`GitHub`加速使用的是第三方免费的加速服务,稳定性难以保证,所以额外配置了一些备用线路。 + +如果执行`./webui.sh`后卡住很久或速度很慢,可以尝试切换加速源(在`stable-diffusion-webui`目录下执行): + +```shell +/bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/stable-diffusion-webui/raw/master/super-gh.sh)" +``` + +执行后会显示如下内容,输入要选择的数字即可。 + +```shell +请选择一个加速源: +1) ghproxy.com 3) gh.ddlc.top 5) gh.con.sh +2) ghps.cc 4) hub.gitmirror.com +#? +``` + + +### 针对intel + +如果你的`mac`是`intel`芯片,打开`webui-user.sh`文件,把`export COMMANDLINE_ARGS`前面的`#`删掉。 + +``` +# for intel +# export COMMANDLINE_ARGS="--skip-torch-cuda-test --upcast-sampling --no-half-vae --use-cpu interrogate --precision full --no-half" +``` + +## 设置中文 + +默认页面是全英文的,如果你想设置中文,可以根据如下步骤操作。 + +点开`Extensions`菜单,找到`Available`中的`localization`,默认是勾选上的,将勾选去掉,然后点击`Load from`按钮。 + +![](/images/16910608535268/16913325458458.jpg) + + +此时一直往下拉或者搜索`zh_CN`找到`zh_CN Localization`,点击右侧的`Install`按钮安装。 + +![](/images/16910608535268/16913325689866.jpg) + + +安装完成后点击上面的`Settings`菜单进入设置页面。 + +![](/images/16910608535268/16913325817555.jpg) + + +点击左侧`User interface`,往下拉,找到`Localization (requires restart)`,点击选择刚下载的`zh_CN`语言,如果看不到`zh_CN`,点击右侧的刷新图标。 + + +![](/images/16910608535268/16913326115608.jpg) + + +选择完`zh_CN`后页面拉到最上面点击`Apply settings`按钮保存设置,最后点击`Reload Ul`按钮。 + +![](/images/16910608535268/16913326271948.jpg) + + +页面会重新加载,中文界面就显示出来了。 + +## 提示 + +如果你苦于不知道`Prompt`怎么写,可以参考[Civitai](https://civitai.com/)上网友是怎么写的,找到你喜欢的风格后,复制图片上的提示词 + +![](/images/16910608535268/16913368869821.jpg)