网站标签该站未曾设置keywords
网站描述该站未曾设置description
上一篇:国际短信_短信群发平台_短信验证码平台-云通讯PaaS平台
下一篇:宁波天胜传动件有限公司-公司首页
网站快照捌 号 视 角 捌 号 视 角 B l e s s e d b i n B l o g 首 页 标 签 分 类 归 档 站 点 地 图 0 % J a v a S c r i p t 中 A s y n c / A w a i t 的 错 误 处 理 发 表 于 2 0 2 4 0 3 0 6 分 类 于 前 端 传 统 的 错 误 处 理 方 式 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 f u n c t i o n t h i s T h r o w s ( ) t r y c a t c h ( e ) f i n a l l y / / O u t p u t : / / E r r o r : T h r o w n f r o m t h i s T h r o w s ( ) / / . . . s t a c k t r a c e / / W e d o c l e a n u p h e r e 非 常 简 单 , 不 过 多 赘 述 一 个 包 装 在 A s y n c 中 的 T r y C a t c h 现 在 我 们 修 改 这 个 程 序 , 把 t h i s T h r o w s ( ) 函 数 标 记 为 a s y n c 。 此 时 抛 出 的 错 误 , 实 际 上 相 当 于 抛 出 一 个 R e j e c t 。 一 个 A s y n c 函 数 , 总 是 返 回 一 个 P r o m i s e 当 没 有 定 义 返 回 语 句 的 时 候 , 函 数 运 行 结 束 后 实 际 返 回 的 是 P r o m i s e , 相 当 于 r e t u r n P r o m i s e . R e s o l v e ( ) 当 有 定 义 返 回 语 句 的 时 候 , 相 当 于 返 回 了 一 个 带 有 值 的 P r o m i s e , 相 当 于 r e t u r n P r o m i s e . R e s o l v e ( M y r e t u r n S t r i n g ) 当 抛 出 错 误 的 时 候 , 相 当 于 r e t u r n P r o m i s e . R e j e c t ( e r r o r ) 看 下 面 的 代 码 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 a s y n c f u n c t i o n t h i s T h r o w s ( ) t r y c a t c h ( e ) f i n a l l y / / o u t p u t : / / W e d o c l e a n u p h e r e / / U n h a n d l e d P r o m i s e R e j e c t i o n W a r n i n g : E r r o r : T h r o w n f r o m t h i s T h r o w s ( ) t h i s T h r o w s 返 回 一 个 R e j e c t , 所 以 我 们 使 用 常 规 的 t r y . . . c a t c h 无 法 正 常 的 捕 捉 到 错 误 。 t h i s T h r w s 标 记 为 a s y n c , 所 以 我 们 调 用 的 时 候 , 代 码 不 会 等 待 , f i n a l l y 块 会 先 执 行 , 所 以 这 里 无 法 捕 捉 到 错 误 。 有 两 个 方 式 可 以 解 决 这 个 问 题 : 第 一 个 解 决 方 式 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 a s y n c f u n c t i o n t h i s T h r o w s ( ) a s y n c f u n c t i o n r u n ( ) c a t c h ( e ) f i n a l l y } r u n ( ) ; / / O u t p u t : / / E r r o r : T h r o w n f r o m t h i s T h r o w s ( ) / / . . . s t a c k t r a c e / / W e d o c l e a n u p h e r e 第 二 个 解 决 方 式 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 a s y n c f u n c t i o n t h i s T h r o w s ( ) t h i s T h r o w s ( ) . c a t c h ( c o n s o l e . e r r o r ) . t h e n ( ( ) = > c o n s o l e . l o g ( W e d o c l e a n u p h e r e ) ) ; / / O u t p u t : / / E r r o r : T h r o w n f r o m t h i s T h r o w s ( ) / / . . . s t a c k t r a c e / / W e d o c l e a n u p h e r e a s y n c / a w a i t 的 方 式 相 对 来 说 更 容 易 理 解 。 注 意 点 从 a s y n c 函 数 中 返 回 考 虑 下 下 面 代 码 会 输 出 什 么 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 a s y n c f u n c t i o n t h i s T h r o w s ( ) a s y n c f u n c t i o n m y F u n c t i o n T h a t C a t c h e s ( ) c a t c h ( e ) f i n a l l y r e t u r n N o t h i n g f o u n d ; } a s y n c f u n c t i o n r u n ( ) r u n ( ) ; 我 们 可 能 期 待 输 出 1 2 W e d o c l e a n u p h e r e N o t h i n g F o u n d 实 际 输 出 一 个 U n h a n d l e d P r o m i s e R e j e c t i o n 我 们 分 析 下 t h i s T h r o w s ( ) 是 异 步 方 法 ; 异 步 方 法 中 抛 出 了 一 个 错 误 , 实 际 返 回 的 是 P r o m i s e . R e j e c t m y F u n c t i o n T h a t C a t c h e s 中 返 回 了 这 个 P r o m i s e . R e j e c t 外 部 是 以 a w a i t 标 记 的 , 发 现 是 一 个 R e j e c t 的 P r m o i s e , 所 以 抛 出 u n l a n d l e d p r o m i s e r e j e c t i o n 我 们 可 以 在 返 回 中 增 加 a w a i t 解 决 这 个 问 题 ( 第 七 行 ) 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 a s y n c f u n c t i o n t h i s T h r o w s ( ) a s y n c f u n c t i o n m y F u n c t i o n T h a t C a t c h e s ( ) c a t c h ( e ) f i n a l l y r e t u r n N o t h i n g f o u n d ; } a s y n c f u n c t i o n r u n ( ) r u n ( ) ; / / O u t p t u t : / / E r r o r : T h r o w n f r o m t h i s T h r o w s ( ) / / . . . s t a c k t r a c e / / W e d o c l e a n u p h e r e / / N o t h i n g f o u n d 重 置 s t a c k t r a c e 在 代 码 中 , 经 常 会 看 到 有 人 捕 获 错 误 并 将 其 包 装 在 一 个 新 的 错 误 中 , 就 像 下 面 的 代 码 片 段 中 一 样 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 f u n c t i o n t h i s T h r o w s ( ) f u n c t i o n m y F u n c t i o n T h a t C a t c h e s ( ) c a t c h ( e ) f i n a l l y } a s y n c f u n c t i o n r u n ( ) c a t c h ( e ) } r u n ( ) ; / / O u t p u t s : / / W e d o c l e a n u p h e r e / / T y p e E r r o r : E r r o r : T h r o w n f r o m t h i s T h r o w s ( ) / / a t m y F u n c t i o n T h a t C a t c h e s ( / r e p o / e r r o r _ s t a c k t r a c e _ 1 . j s : 9 : 1 5 ) / / a t r u n ( / r e p o / e r r o r _ s t a c k t r a c e _ 1 . j s : 1 7 : 1 5 ) / / a t O b j e c t . ( / r e p o / e r r o r _ s t a c k t r a c e _ 1 . j s : 2 3 : 1 ) 注 意 我 们 的 堆 栈 跟 踪 仅 从 我 们 捕 获 原 始 异 常 的 地 方 开 始 。 当 我 们 在 2 行 创 建 错 误 并 在 9 行 捕 获 它 时 , 我 们 会 丢 失 原 始 的 堆 栈 跟 踪 , 因 为 我 们 现 在 创 建 了 一 个 新 的 T y p e E r r o r 类 型 的 错 误 , 只 保 留 原 始 的 错 误 消 息 ( 有 时 我 们 甚 至 都 不 保 留 ) 。 如 果 t h i s T h r o w s ( ) 函 数 中 有 更 多 的 逻 辑 , 在 该 函 数 的 某 个 地 方 抛 出 了 一 个 错 误 , 我 们 在 记 录 的 堆 栈 跟 踪 中 看 不 到 问 题 的 起 源 , 因 为 我 们 创 建 了 一 个 新 的 错 误 , 它 将 生 成 一 个 全 新 的 堆 栈 跟 踪 。 如 果 我 们 只 是 重 新 抛 出 原 始 错 误 , 我 们 就 不 会 遇 到 这 个 问 题 。 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 f u n c t i o n t h i s T h r o w s ( ) f u n c t i o n m y F u n c t i o n T h a t C a t c h e s ( ) c a t c h ( e ) f i n a l l y } a s y n c f u n c t i o n r u n ( ) c a t c h ( e ) } r u n ( ) ; / / O u t p u t s : / / W e d o c l e a n u p h e r e / / E r r o r : T h r o w n f r o m t h i s T h r o w s ( ) / / a t t h i s T h r o w s ( / r e p o / e r r o r _ s t a c k t r a c e _ 2 . j s : 2 : 1 1 ) / / a t m y F u n c t i o n T h a t C a t c h e s ( / r e p o / e r r o r _ s t a c k t r a c e _ 2 . j s : 7 : 1 6 ) / / a t r u n ( / r e p o / e r r o r _ s t a c k t r a c e _ 2 . j s : 1 8 : 1 5 ) / / a t O b j e c t . ( / r e p o / e r r o r _ s t a c k t r a c e _ 2 . j s : 2 4 : 1 ) 堆 栈 跟 踪 现 在 指 向 实 际 错 误 的 起 源 , 即 我 们 脚 本 的 第 2 行 。 处 理 错 误 时 要 意 识 到 这 个 问 题 是 很 重 要 的 。 有 时 这 可 能 是 可 取 的 , 但 通 常 这 会 掩 盖 问 题 的 来 源 , 使 得 调 试 问 题 的 根 源 变 得 困 难 。 如 果 你 为 包 装 错 误 创 建 自 定 义 错 误 , 请 确 保 跟 踪 原 始 的 堆 栈 跟 踪 , 以 免 调 试 变 成 一 场 噩 梦 。 总 结 我 们 可 以 使 用 t r y . . . c a t c h 来 处 理 同 步 代 码 。 我 们 可 以 使 用 t r y . . . c a t c h ( 与 a s y n c 函 数 结 合 使 用 ) 和 . c a t c h ( ) 方 法 来 处 理 异 步 代 码 的 错 误 。 在 t r y 块 中 返 回 一 个 p r o m i s e 时 , 如 果 你 希 望 t r y . . . c a t c h 块 捕 获 错 误 , 请 确 保 a w a i t 它 。 在 包 装 错 误 并 重 新 抛 出 时 , 请 注 意 , 您 会 丢 失 带 有 错 误 来 源 的 堆 栈 跟 踪 。 g i t 使 用 指 定 的 私 钥 p r i v a t e k e y 发 表 于 2 0 2 4 0 2 2 6 分 类 于 L i n u x U s i n g a S p e c i f i c S S H P r i v a t e K e y W h e n U s i n g G i t C o m m a n d 一 、 背 景 当 不 同 的 g i t 库 需 要 使 用 不 同 的 p r i v a t e k e y 的 时 候 , 可 在 运 行 g i t 命 令 的 时 候 指 定 私 钥 p r i v a t e k e y 。 二 、 两 种 方 式 使 用 S S H 配 置 文 件 我 们 可 以 通 过 S S H 配 置 文 件 来 指 定 在 g i t c l o n e 过 程 中 使 用 特 定 的 私 钥 。 具 体 来 说 , 我 们 可 以 在 ~ / . s s h / c o n f i g 文 件 中 为 不 同 的 私 钥 创 建 两 个 单 独 的 主 机 。 然 后 , 在 g i t c l o n e 期 间 , 根 据 我 们 想 要 使 用 的 密 钥 , 我 们 可 以 在 S S H 连 接 字 符 串 中 指 定 不 同 的 主 机 。 如 : 1 2 3 4 5 6 7 8 c a t ~ / . s s h / c o n f i g H o s t g i t h u b w o r k H o s t N a m e g i t h u b . c o m I d e n t i t y F i l e ~ / . s s h / i d _ r s a _ w o r k H o s t g i t h u b p e r s o n a l H o s t N a m e g i t h u b . c o m I d e n t i t y F i l e ~ / . s s h / i d _ r s a _ p e r s o n a l 现 在 , 可 以 通 过 i d _ r s a _ w o r k 私 钥 访 问 的 存 储 库 上 运 行 g i t c l o n e 命 令 , 我 们 可 以 使 用 g i t h u b w o r k 作 为 其 主 机 来 指 定 S S H 连 接 字 符 串 。 如 : 1 2 g i t c l o n e g i t @ g i t h u b w o r k : c o r p o r a t e A / w e b a p p . g i t g i t c l o n e g i t @ g i t h u b p e r s o n a l : b o b / b l o g . g i t 使 用 c o r e . s s h C o m m a n d G i t 仓 库 提 供 了 一 个 可 配 置 的 选 项 c o r e . s s h C o m m a n d 。 当 运 行 任 何 需 要 S S H 隧 道 的 命 令 时 , 此 配 置 将 覆 盖 默 认 的 S S H 命 令 。 配 置 c o r e . s s h C o m m a n d 1 g i t c l o n e c c o r e . s s h C o m m a n d = s s h i ~ / . s s h / i d _ r s a _ w o r k g i t @ g i t h u b . c o m : c o r p o r a t e A / w e b a p p . g i t 以 上 例 子 中 , 使 用 c 选 项 在 运 行 时 覆 盖 c o r e . s s h C o m m a n d 。 具 体 来 说 , 我 们 使 用 i 选 项 将 S S H 命 令 更 改 为 指 向 我 们 想 要 使 用 的 私 钥 。 在 存 储 库 级 别 上 持 久 化 c o r e . s s h C o m m a n d 我 们 可 以 使 用 g i t c o n f i g 命 令 将 配 置 覆 盖 持 久 化 到 存 储 库 级 别 , 而 不 是 每 次 重 复 配 置 覆 盖 1 g i t c o n f i g c o r e . s s h C o m m a n d s s h i ~ / . s s h / i d _ r s a _ w o r k 该 命 令 将 c o r e . s s h C o m m a n d 配 置 持 久 化 到 仓 库 中 。 这 意 味 着 G i t 将 在 后 续 的 调 用 中 使 用 该 S S H 命 令 。 可 以 使 用 以 下 命 令 验 证 是 否 配 置 成 功 1 2 $ g i t c o n f i g g e t c o r e . s s h C o m m a n d s s h i ~ / . s s h / i d _ r s a _ w o r k 如 何 部 署 私 有 D o c k e r R e g i s t r y 发 表 于 2 0 2 4 0 2 2 2 分 类 于 L i n u x H o w T o S e t U p a P r i v a t e D o c k e r R e g i s t r y D o c k e r R e g i s t r y 是 一 个 管 理 D o c k e r 容 器 镜 像 存 储 和 传 递 的 应 用 程 序 。 注 册 表 集 中 了 容 器 镜 像 , 减 少 了 开 发 人 员 的 构 建 时 间 。 D o c k e r H u b 是 一 个 免 费 的 公 共 注 册 表 , 可 以 托 管 您 的 自 定 义 D o c k e r 镜 像 , 但 有 些 情 况 下 您 可 能 不 希 望 您 的 镜 像 公 开 可 用 。 镜 像 通 常 包 含 运 行 应 用 程 序 所 需 的 所 有 代 码 , 因 此 在 使 用 专 有 软 件 时 , 使 用 私 有 注 册 表 可 能 更 可 取 。 1 . 安 装 和 配 置 D o c k e r R e g i s t r y 新 建 d o c k e r r e g i s t r y 目 录 , 存 储 i m a g e s 1 2 3 4 5 m k d i r ~ / d o c k e r r e g i s t r y c d ~ / d o c k e r r e g i s t r y m k d i r d a t a # 创 建 d o c k e r c o m p o s e 文 件 v i m d o c k e r c o m p o s e . y m l ~ / d o c k e r r e g i s t r y / d o c k e r c o m p o s e . y m l 1 2 3 4 5 6 7 8 9 1 0 1 1 v e r s i o n : 3 s e r v i c e s : r e g i s t r y : i m a g e : r e g i s t r y : l a t e s t p o r t s : 5 0 0 0 : 5 0 0 0 e n v i r o n m e n t : R E G I S T R Y _ S T O R A G E _ F I L E S Y S T E M _ R O O T D I R E C T O R Y : / d a t a v o l u m e s : . / d a t a : / d a t a 将 第 一 个 服 务 命 名 为 r e g i s t r y , 并 将 其 图 像 设 置 为 r e g i s t r y , 使 用 最 新 版 本 。 然 后 , 在 p o r t s 下 , 将 主 机 上 的 端 口 5 0 0 0 映 射 到 容 器 的 端 口 5 0 0 0 , 这 将 允 许 您 向 服 务 器 的 端 口 5 0 0 0 发 送 请 求 , 并 将 请 求 转 发 到 注 册 表 。 在 e n v i r o n m e n t 部 分 , 将 R E G I S T R Y _ S T O R A G E _ F I L E S Y S T E M _ R O O T D I R E C T O R Y 变 量 设 置 为 / d a t a , 指 定 它 应 该 存 储 数 据 路 径 。 然 后 , 在 v o l u m e s 部 分 , 您 将 主 机 文 件 系 统 上 的 / d a t a 目 录 映 射 到 容 器 中 的 / d a t a , 它 充 当 一 个 透 传 。 实 际 上 , 数 据 将 存 储 在 主 机 上 。 1 2 # 启 动 d o c k e r c o m p o s e u p 在 这 一 步 中 , 已 经 创 建 了 一 个 D o c k e r C o m p o s e 配 置 , 该 配 置 启 动 了 一 个 在 端 口 5 0 0 0 上 监 听 的 D o c k e r R e g i s t r y 。 在 接 下 来 的 步 骤 中 , 您 将 在 您 的 域 名 上 公 开 它 并 设 置 身 份 验 证 。 2 . 设 置 N G I N X 转 发 这 里 使 用 U b u n t u 2 2 . 0 4 设 置 , 不 同 的 发 行 版 本 配 置 路 径 会 有 不 同 1 s u d o v i m / e t c / n g i n x / s i t e s a v a i l a b l e / y o u r _ d o m a i n . c o n f N g i n x 配 置 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 s e r v e r p r o x y _ p a s s h t t p : / / l o c a l h o s t : 5 0 0 0 ; p r o x y _ s e t _ h e a d e r H o s t $ h t t p _ h o s t ; # r e q u i r e d f o r d o c k e r c l i e n t s s a k e p r o x y _ s e t _ h e a d e r X R e a l I P $ r e m o t e _ a d d r ; # p a s s o n r e a l c l i e n t s I P p r o x y _ s e t _ h e a d e r X F o r w a r d e d F o r $ p r o x y _ a d d _ x _ f o r w a r d e d _ f o r ; p r o x y _ s e t _ h e a d e r X F o r w a r d e d P r o t o $ s c h e m e ; p r o x y _ r e a d _ t i m e o u t 9 0 0 ; } e r r o r _ p a g e 5 0 0 5 0 2 5 0 3 5 0 4 / 5 0 x . h t m l ; l o c a t i o n = / 5 0 x . h t m l # l i s t e n [ : : ] : 4 4 3 s s l i p v 6 o n l y = o n ; # m a n a g e d b y C e r t b o t l i s t e n 4 4 3 s s l ; # m a n a g e d b y C e r t b o t s s l _ c e r t i f i c a t e / e t c / n g i n x / c e r t / x x x x . c e r t . p e m ; s s l _ c e r t i f i c a t e _ k e y / e t c / n g i n x / c e r t / x x x x x x . k e y . p e m ; } 注 : 这 里 配 置 了 H T T P S 的 证 书 , 需 要 自 己 进 行 签 名 重 启 N G I N X 1 s u d o s y s t e m c t l r e s t a r t n g i n x 访 问 h t t p s : / / y o u r _ d o m a i n / v 2 并 返 回 了 一 个 的 响 应 。 代 码 2 0 0 表 示 容 器 成 功 处 理 了 该 请 求 , 说 明 N G I N X 转 发 已 经 配 置 成 功 3 . 设 置 身 份 验 证 ( 可 选 ) 若 暴 露 在 公 网 中 , 建 议 增 加 身 份 验 证 N g i n x 允 许 您 为 其 管 理 的 站 点 设 置 H T T P 身 份 验 证 , 您 可 以 使 用 它 来 限 制 对 D o c k e r R e g i s t r y 的 访 问 。 为 了 实 现 这 一 点 , 您 将 创 建 一 个 带 有 h t p a s s w d 的 身 份 验 证 文 件 , 并 向 其 中 添 加 将 被 接 受 的 用 户 名 和 密 码 组 合 。 这 个 过 程 将 启 用 对 您 的 注 册 表 的 身 份 验 证 。 1 2 3 4 5 6 7 8 9 1 0 # 安 装 a p a c h e 2 u t i l s s u d o a p t i n s t a l l a p a c h e 2 u t i l s y # 在 ~ / d o c k e r r e g i s t r y / a u t h 下 存 储 带 有 凭 据 的 身 份 验 证 文 件 。 m k d i r ~ / d o c k e r r e g i s t r y / a u t h c d ~ / d o c k e r r e g i s t r y / a u t h # 创 建 第 一 个 用 户 , 将 u s e r n a m e 替 换 为 您 想 要 使 用 的 用 户 名 。 使 用 B 标 志 指 示 使 用 b c r y p t 算 法 , 这 是 D o c k e r 所 要 求 的 。 h t p a s s w d B c r e g i s t r y . p a s s w o r d u s e r n a m e # # 注 意 : 要 添 加 更 多 用 户 , 请 重 新 运 行 上 一 个 命 令 , 不 包 括 c , c 创 建 一 个 新 文 件 , 因 此 删 除 它 将 更 新 现 有 文 件 。 h t p a s s w d B r e g i s t r y . p a s s w o r d u s e r n a m e 编 辑 d o c k e r c o m p o s e 文 件 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 v e r s i o n : 3 s e r v i c e s : r e g i s t r y : i m a g e : r e g i s t r y : l a t e s t p o r t s : 5 0 0 0 : 5 0 0 0 e n v i r o n m e n t : R E G I S T R Y _ A U T H : h t p a s s w d R E G I S T R Y _ A U T H _ H T P A S S W D _ R E A L M : R e g i s t r y R E G I S T R Y _ A U T H _ H T P A S S W D _ P A T H : / a u t h / r e g i s t r y . p a s s w o r d R E G I S T R Y _ S T O R A G E _ F I L E S Y S T E M _ R O O T D I R E C T O R Y : / d a t a v o l u m e s : . / a u t h : / a u t h . / d a t a : / d a t a 指 定 使 用 H T T P 身 份 验 证 并 提 供 创 建 的 文 件 路 径 的 环 境 变 量 。 对 于 R E G I S T R Y _ A U T H , 您 指 定 了 h t p a s s w d 作 为 其 值 , 这 是 您 正 在 使 用 的 身 份 验 证 方 案 , 并 将 R E G I S T R Y _ A U T H _ H T P A S S W D _ P A T H 设 置 为 身 份 验 证 文 件 的 路 径 。 R E G I S T R Y _ A U T H _ H T P A S S W D _ R E A L M 表 示 h t p a s s w d 领 域 的 名 称 。 然 后 重 新 运 行 1 d o c k e r c o m p o s e u p 4 . 设 置 自 动 启 动 通 过 指 示 D o c k e r C o m p o s e 始 终 保 持 运 行 状 态 , 确 保 注 册 表 容 器 在 每 次 系 统 启 动 或 崩 溃 后 都 会 启 动 。 1 v i m d o c k e r c o m p o s e . y m l 1 2 3 4 . . . r e g i s t r y : r e s t a r t : a l w a y s . . . 将 r e s t a r t 设 置 为 a l w a y s 可 以 确 保 容 器 在 重 新 启 动 后 仍 然 存 在 。 完 成 后 , 请 保 存 并 关 闭 文 件 。 现 在 可 以 通 过 传 入 d 来 将 您 的 注 册 表 作 为 后 台 进 程 启 动 。 1 d o c k e r c o m p o s e u p d 5 . 设 置 N G I N X 上 传 文 件 的 大 小 在 将 i m a g e 推 送 到 r e g i s t e r 之 前 , 需 要 确 保 r e g i s t e r 能 够 处 理 大 文 件 上 传 。 N g i n x 中 文 件 上 传 的 默 认 大 小 限 制 是 1 m , 这 对 于 D o c k e r i m a g e 来 说 远 远 不 够 。 为 了 提 高 它 , 修 改 位 于 / e t c / n g i n x / n g i n x . c o n f 的 主 N g i n x 配 置 文 件 。 1 s u d o v i m / e t c / n g i n x / n g i n x . c o n f 增 加 1 2 3 4 5 6 . . . h t t p . . . 1 2 # 重 新 启 动 s u d o s y s t e m c t l r e s t a r t n g i n x 在 这 一 步 中 , 您 更 新 了 N g i n x 允 许 的 文 件 大 小 。 现 在 您 可 以 将 大 型 i m a g e 上 传 到 D o c k e r R e g i s t r y , 而 不 会 被 N g i n x 阻 止 传 输 或 出 现 错 误 。 6 . 发 布 i m a g e 到 D o c k e r r e g i s t e r 我 们 将 使 用 D o c k e r H u b 中 的 U b u n t u i m a g e 进 行 测 试 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 d o c k e r r u n t i u b u n t u / b i n / b a s h # i 和 t 标 志 为 您 提 供 对 容 器 的 交 互 式 s h e l l 访 问 。 # 一 旦 进 入 , 通 过 运 行 以 下 命 令 创 建 一 个 名 为 S U C C E S S 的 文 件 : t o u c h / S U C C E S S # 退 出 容 器 的 S h e l l e x i t # 从 刚 刚 自 定 义 的 容 器 中 创 建 一 个 新 图 像 : d o c k e r c o m m i t $ ( d o c k e r p s l q ) t e s t i m a g e # 登 录 到 你 的 私 有 D o c k e r r e g i s t e r ( 第 三 步 设 置 的 用 户 名 密 码 , 如 果 没 有 设 置 , 则 可 忽 略 这 步 ) d o c k e r l o g i n h t t p s : / / y o u r _ d o m a i n # 登 录 成 功 会 输 出 : L o g i n S u c c e e d e d # 重 命 名 I m a g e d o c k e r t a g t e s t i m a g e y o u r _ d o m a i n / t e s t i m a g e # 推 送 到 i m a g e d o c k e r p u s h y o u r _ d o m a i n / t e s t i m a g e 7 . 从 r e g i s t e r 中 拉 取 i m a g e 现 在 你 已 经 将 图 像 推 送 到 了 你 的 私 有 仓 库 , 你 将 尝 试 从 中 拉 取 。 1 2 3 4 5 # 登 录 d o c k e r l o g i n h t t p s : / / y o u r _ d o m a i n # p u l l d o c k e r p u l l y o u r _ d o m a i n / t e s t i m a g e 总 结 在 教 程 中 , 设 置 自 己 的 私 有 D o c k e r 注 册 表 并 将 D o c k e r 镜 像 发 布 到 其 中 。 如 介 绍 中 所 提 到 的 , 您 还 可 以 使 用 T r a v i s C I 或 类 似 的 C I 工 具 来 自 动 将 镜 像 推 送 到 私 有 注 册 表 。 通 过 在 工 作 流 程 中 利 用 D o c k e r 容 器 , 您 可 以 确 保 包 含 代 码 的 镜 像 在 任 何 机 器 上 ( 无 论 是 在 生 产 环 境 还 是 开 发 环 境 中 ) 都 会 产 生 相 同 的 行 为 。 有 关 编 写 D o c k e r 文 件 的 更 多 信 息 , 您 可 以 访 问 官 方 文 档 中 的 最 佳 实 践 部 分 。 如 何 在 J a v a S c r i p t 中 延 迟 1 S 发 表 于 2 0 2 3 1 1 0 9 分 类 于 前 端 如 何 在 J a v a S c r i p t 中 延 迟 1 S 在 J S 中 , 需 要 进 行 延 迟 的 话 , 通 常 的 做 法 是 使 用 * * s e t T i m e o u t , 更 好 的 方 式 是 使 用 P r o m i s e * * 有 很 多 方 法 可 以 让 J a v a S c r i p t 等 待 1 秒 。 有 些 比 其 他 更 好 , 有 些 只 能 在 特 定 情 况 下 使 用 。 1 . 使 用 s e t T i m e o u t 如 : 1 2 3 4 5 6 c o n s o l e . l o g ( E x e c u t e d n o w ) ; / / 1 s e c o n d d e l a y s e t T i m e o u t ( f u n c t i o n ( ) , 1 0 0 0 ) ; 需 要 特 别 注 意 的 是 , s e t T i m e o u t 是 在 异 步 运 行 的 , 延 迟 并 不 会 阻 止 正 常 程 序 的 流 程 , 如 1 2 3 4 5 6 7 8 9 c o n s o l e . l o g ( E x e c u t e d n o w ) ; / / 1 s e c o n d d e l a y s e t T i m e o u t ( f u n c t i o n ( ) , 1 0 0 0 ) ; / / N o t i c e t h i s ! c o n s o l e . l o g ( E x e c u t e d b e f o r e t h e d e l a y , b u t a f t e r t h e 1 s t c o n s o l e . l o g ) ; 输 出 : 1 2 3 E x e c u t e d n o w E x e c u t e d b e f o r e t h e d e l a y , b u t a f t e r t h e 1 s t c o n s o l e . l o g E x e c u t e d a f t e r 1 s e c o n d 如 果 你 想 在 同 一 个 延 迟 函 数 中 不 断 添 加 延 迟 , 我 们 很 容 易 遇 到 所 谓 的 回 调 地 狱 。 2 . 使 用 P r o m i s e 如 果 我 们 把 s e t T i m e o u t 函 数 和 p r o m i s e s 函 数 结 合 起 来 , 我 们 就 可 以 创 建 一 个 更 易 读 的 代 码 , 并 把 整 个 代 码 放 在 同 一 个 ( a s y n c ) 函 数 中 。 与 我 们 之 前 解 释 过 的 s e t T i m e o u t 方 法 相 比 , 它 的 主 要 优 点 是 我 们 可 以 重 用 延 迟 函 数 。 使 我 们 的 代 码 更 加 干 净 和 简 单 。 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 f u n c t i o n d e l a y ( m i l l i s e c o n d s ) ) ; } a s y n c f u n c t i o n i n i t ( ) i n i t ( ) ; c o n s o l e . l o g ( E x e c u t e d a f t e r t h e 1 s t l o g a n d b e f o r e t h e 2 d e l a y s ) ; 输 出 1 2 3 4 > E x e c u t e d n o w > E x e c u t e d a f t e r t h e 1 s t l o g a n d b e f o r e t h e 2 d e l a y s > E x e c u t e d a f t e r 1 s e c o n d w a i t > E x e c u t e d a f t e r 2 s e c o n d s w a i t 3 . 使 用 等 待 循 环 ( l o o p ) 这 是 唯 一 完 全 中 断 用 户 流 程 并 强 制 J a v a S c r i p t 进 行 同 步 暂 停 的 方 法 。 这 并 不 是 完 美 的 解 决 方 案 , 我 认 为 这 可 能 是 不 可 取 的 。 J a v a S c r i p t 是 一 种 异 步 语 言 , 我 们 应 该 利 用 它 , 而 不 是 使 用 巧 妙 的 解 决 方 案 使 我 们 的 代 码 变 成 同 步 的 。 1 2 3 4 5 6 7 8 9 1 0 1 1 v a r w a i t = ( m s ) = > } c o n s o l e . l o g ( E x e c u t e d n o w ) ; w a i t ( 1 0 0 0 ) ; c o n s o l e . l o g ( E x e c u t e d a f t e r 1 s e c o n d ) ; 我 们 基 本 上 使 用 D a t e 函 数 检 查 当 前 时 间 , 并 创 建 一 个 d o . . . w h i l e 循 环 , 只 有 在 我 们 开 始 循 环 后 超 过 1 0 0 0 毫 秒 才 会 退 出 。 最 大 的 问 题 就 是 ? 我 们 基 本 上 是 通 过 运 行 一 个 “ 无 意 义 ” 的 循 环 并 比 较 日 期 来 让 我 们 的 计 算 机 / 浏 览 器 忙 碌 , 只 是 为 了 延 迟 。 如 果 我 们 等 待 的 时 间 不 是 1 秒 , 那 么 我 们 的 浏 览 器 很 可 能 会 崩 溃 , 或 者 我 们 的 页 面 停 止 像 平 常 那 样 响 应 。 即 使 我 们 使 用 1 秒 的 数 值 , 事 情 也 可 能 不 会 总 是 按 我 们 的 期 望 工 作 。 D O M 渲 染 发 生 在 J a v a S c r i p t 函 数 栈 已 清 空 并 且 浏 览 器 可 以 接 受 新 事 件 之 后 。 并 且 为 了 证 明 这 一 点 , 请 看 以 下 示 例 , 在 这 个 示 例 中 , c o n s o l e . l o g 在 1 秒 后 被 触 发 ( 正 如 我 们 所 期 望 的 那 样 ) , 但 是 两 个 D O M 写 入 操 作 同 时 发 生 : 上 面 代 码 输 出 1 2 > E x e c u t e d n o w > E x e c u t e d a f t e r 1 s e c o n d 这 不 是 一 个 好 的 解 决 方 案 , 如 果 可 能 的 话 , 尽 量 避 免 采 用 这 个 解 决 方 案 , 而 是 选 择 前 两 种 方 案 。 U b u n t u 2 2 . 0 4 上 向 现 有 的 逻 辑 卷 管 理 ( L V M ) 中 添 加 额 外 的 磁 盘 发 表 于 2 0 2 3 0 8 0 2 分 类 于 L i n u x A d d n e w d i s k o n L V M f o r U b u n t u 2 2 . 0 4 L T S 这 些 说 明 将 帮 助 您 在 U b u n t u 2 2 . 0 4 上 向 现 有 的 逻 辑 卷 管 理 ( L V M ) 中 添 加 额 外 的 磁 盘 。 L V M 可 以 帮 助 您 轻 松 地 扩 展 存 储 空 间 跨 多 个 物 理 磁 盘 设 备 。 用 于 向 当 前 磁 盘 扩 展 空 间 找 出 要 分 配 给 L V M 的 磁 盘 1 2 3 4 s u d o p v s P V V G F m t A t t r P S i z e P F r e e / d e v / v d a 3 u b u n t u v g l v m 2 a / d e v / v d b u b u n t u v g l v m 2 a 查 看 详 细 信 息 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 $ s u d o p v d i s p l a y P h y s i c a l v o l u m e P V N a m e / d e v / v d a 3 V G N a m e u b u n t u v g P V S i z e A l l o c a t a b l e y e s ( b u t f u l l ) P E S i z e 4 . 0 0 M i B T o t a l P E 2 1 1 1 F r e e P E 0 A l l o c a t e d P E 2 1 1 1 P V U U I D 9 6 C n v s 1 r Y e x W k 8 l B 2 V c L S d A L q k 4 u j i P c P h y s i c a l v o l u m e P V N a m e / d e v / v d b V G N a m e u b u n t u v g P V S i z e 5 0 . 0 0 G i B / n o t u s a b l e 4 . 0 0 M i B A l l o c a t a b l e y e s ( b u t f u l l ) P E S i z e 4 . 0 0 M i B T o t a l P E 1 2 7 9 9 F r e e P E 0 A l l o c a t e d P E 1 2 7 9 9 P V U U I D H l e 3 g v 3 F N W j k o e d R F f C w W d p d J x M W y 3 A d 获 取 L V M 的 路 径 1 2 3 $ s u d o l v d i s p l a y L o g i c a l v o l u m e L V P a t h / d e v / u b u n t u v g / u b u n t u l v 省 略 了 其 他 信 息 找 到 要 添 加 的 新 磁 盘 1 2 3 4 5 6 7 8 9 1 0 $ s u d o f d i s k l | g r e p ^ D i s k / d e v / D i s k / d e v / l o o p 0 : 6 3 . 2 4 M i B , 6 6 3 1 4 2 4 0 b y t e s , 1 2 9 5 2 0 s e c t o r s D i s k / d e v / l o o p 1 : 6 3 . 2 3 M i B , 6 6 3 0 1 9 5 2 b y t e s , 1 2 9 4 9 6 s e c t o r s D i s k / d e v / l o o p 2 : 7 9 . 9 5 M i B , 8 3 8 3 2 8 3 2 b y t e s , 1 6 3 7 3 6 s e c t o r s D i s k / d e v / l o o p 3 : 1 0 2 . 9 8 M i B , 1 0 7 9 8 6 9 4 4 b y t e s , 2 1 0 9 1 2 s e c t o r s D i s k / d e v / l o o p 4 : 4 9 . 6 2 M i B , 5 2 0 3 1 4 8 8 b y t e s , 1 0 1 6 2 4 s e c t o r s D i s k / d e v / v d a : 1 0 G i B , 1 0 7 3 7 4 1 8 2 4 0 b y t e s , 2 0 9 7 1 5 2 0 s e c t o r s D i s k / d e v / v d b : 5 0 G i B , 5 3 6 8 7 0 9 1 2 0 0 b y t e s , 1 0 4 8 5 7 6 0 0 s e c t o r s D i s k / d e v / v d c : 5 0 0 G i B , 5 3 6 8 7 0 9 1 2 0 0 0 b y t e s , 1 0 4 8 5 7 6 0 0 0 s e c t o r s D i s k / d e v / m a p p e r / u b u n t u v g u b u n t u l v : 5 5 8 . 2 4 G i B , 5 9 9 4 0 3 7 9 0 3 3 6 b y t e s , 1 1 7 0 7 1 0 5 2 8 s e c t o r s 在 本 例 中 , 它 将 是 / d e v / v d c , 因 为 我 向 这 个 实 例 添 加 了 一 个 5 0 0 G B 的 磁 盘 驱 动 器 。 在 新 的 磁 盘 驱 动 器 上 创 建 物 理 卷 1 2 $ s u d o p v c r e a t e / d e v / v d c P h y s i c a l v o l u m e / d e v / v d c s u c c e s s f u l l y c r e a t e d . 扩 展 现 有 卷 组 以 包 含 这 个 新 的 磁 盘 驱 动 器 1 2 $ s u d o v g e x t e n d u b u n t u v g / d e v / v d c V o l u m e g r o u p u b u n t u v g s u c c e s s f u l l y e x t e n d e d 扩 展 L V 大 小 以 包 含 1 0 0 % 的 新 磁 盘 1 2 3 $ s u d o l v m l v e x t e n d l + 1 0 0 % F R E E / d e v / u b u n t u v g / u b u n t u l v S i z e o f l o g i c a l v o l u m e u b u n t u v g / u b u n t u l v c h a n g e d f r o m 5 8 . 2 4 G i B ( 1 4 9 1 0 e x t e n t s ) t o L o g i c a l v o l u m e u b u n t u v g / u b u n t u l v s u c c e s s f u l l y r e s i z e d . 现 在 需 要 调 整 文 件 系 统 的 大 小 以 匹 配 新 的 大 小 1 2 3 4 5 $ s u d o r e s i z e 2 f s p / d e v / u b u n t u v g / u b u n t u l v r e s i z e 2 f s 1 . 4 6 . 5 ( 3 0 D e c 2 0 2 1 ) F i l e s y s t e m a t / d e v / u b u n t u v g / u b u n t u l v i s m o u n t e d o n / ; o n l i n e r e s i z i n g r e q u i r e d o l d _ d e s c _ b l o c k s = 8 , n e w _ d e s c _ b l o c k s = 7 0 T h e f i l e s y s t e m o n / d e v / u b u n t u v g / u b u n t u l v i s n o w 1 4 6 3 3 8 8 1 6 ( 4 k ) b l o c k s l o n g . 现 在 可 以 用 d f k h 来 验 证 1 2 3 4 5 6 7 8 9 $ d f k h F i l e s y s t e m S i z e U s e d A v a i l U s e % M o u n t e d o n t m p f s 9 . 9 G 1 . 6 M 9 . 9 G 1 % / r u n / d e v / m a p p e r / u b u n t u v g u b u n t u l v 5 5 0 G 8 . 9 G 5 1 9 G 2 % / t m p f s 5 0 G 0 5 0 G 0 % / d e v / s h m t m p f s 5 . 0 M 0 5 . 0 M 0 % / r u n / l o c k t m p f s 5 0 G 0 5 0 G 0 % / r u n / q e m u / d e v / v d a 2 1 . 7 G 2 4 7 M 1 . 4 G 1 6 % / b o o t t m p f s 9 . 9 G 4 . 0 K 9 . 9 G 1 % / r u n / u s e r / 1 0 0 0 参 考 : A d d n e w d i s k o n L V M f o r U b u n t u 2 2 . 0 4 L T S | b y B o N e Z | L e v e l U p C o d i n g 使 用 F a s t a p i 实 现 s e r v e r s e n t e v e n t s ( S S E ) 发 表 于 2 0 2 3 0 3 2 5 更 新 于 2 0 2 3 0 8 0 2 分 类 于 P y t h o n 使 用 F a s t a p i 实 现 s e r v e r s e n t e v e n t s ( S S E ) 服 务 器 推 送 事 件 ( S S E ) 是 一 种 在 不 重 新 加 载 页 面 的 情 况 下 向 浏 览 器 发 送 数 据 的 方 式 。 这 使 得 您 可 以 使 用 流 式 数 据 并 构 建 可 用 于 各 种 情 境 的 实 时 应 用 程 序 。 在 本 教 程 中 , 我 们 将 使 用 F a s t A P I 创 建 一 个 简 单 的 S S E 服 务 器 , 该 服 务 器 将 每 秒 发 送 一 条 消 息 。 安 装 相 关 包 1 2 3 p i p i n s t a l l f a s t a p i [ a l l ] p i p i n s t a l l s s e s t a r l e t t e p i p i n s t a l l a s y n c i o 创 建 一 个 简 单 的 F a s t a p i 项 目 m a i n . p y 1 2 3 4 5 6 7 8 9 1 0 i m p o r t a s y n c i o i m p o r t u v i c o r n f r o m f a s t a p i i m p o r t F a s t A P I , R e q u e s t a p p = F a s t A P I ( ) @ a p p . g e t ( / ) a s y n c d e f r o o t ( ) : r e t u r n 使 用 u v i c o r n 运 行 1 u v i c o r n m a i n : a p p r e l o a d 这 将 在 8 0 0 0 端 口 上 运 行 服 务 器 。 – r e l o a d 标 志 将 自 动 重 新 加 载 服 务 器 当 你 对 代 码 进 行 更 改 时 , 这 样 你 就 不 必 每 次 更 改 时 都 重 新 启 动 服 务 器 。 增 加 S S E 逻 辑 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 S T R E A M _ D E L A Y = 1 # s e c o n d R E T R Y _ T I M E O U T = 1 5 0 0 0 # m i l i s e c o n d @ a p p . g e t ( / s t r e a m ) a s y n c d e f m e s s a g e _ s t r e a m ( r e q u e s t : R e q u e s t ) : d e f n e w _ m e s s a g e s ( ) : # A d d l o g i c h e r e t o c h e c k f o r n e w m e s s a g e s y i e l d H e l l o W o r l d a s y n c d e f e v e n t _ g e n e r a t o r ( ) : w h i l e T r u e : # I f c l i e n t c l o s e s c o n n e c t i o n , s t o p s e n d i n g e v e n t s i f a w a i t r e q u e s t . i s _ d i s c o n n e c t e d ( ) : b r e a k # C h e c k s f o r n e w m e s s a g e s a n d r e t u r n t h e m t o c l i e n t i f a n y i f n e w _ m e s s a g e s ( ) : y i e l d a w a i t a s y n c i o . s l e e p ( S T R E A M _ D E L A Y ) r e t u r n E v e n t S o u r c e R e s p o n s e ( e v e n t _ g e n e r a t o r ( ) ) N g i n x 配 置 B a s i c A u t h e n t i c a t i o n 认 证 发 表 于 2 0 2 3 0 3 0 6 更 新 于 2 0 2 3 0 8 0 2 分 类 于 后 端 , N g i n x 依 赖 N G I N X 认 证 文 件 创 建 工 具 , 这 里 演 示 的 是 使 用 a p a c h e 2 u t i l s 创 建 认 证 文 件 安 装 a p a c h e 2 u t i l s 1 s u d o a p t i n s t a l l a p a c h e 2 u t i l s 创 建 认 证 文 件 , c 是 创 建 新 的 文 件 1 2 3 4 s u d o h t p a s s w d c / e t c / a p a c h e 2 / . h t p a s s w d u s e r 1 # 按 提 示 输 入 u s e r 1 的 密 码 # 也 可 以 直 接 在 命 令 中 输 入 密 码 , 加 上 b 参 数 s u d o h t p a s s w d c b / e t c / a p a c h e 2 / . h t p a s s w d u s e r 1 p a s s w o r d 添 加 额 外 的 用 户 1 s u d o h t p a s s w d / e t c / a p a c h e 2 / . h t p a s s w d u s e r 2 查 看 / e t c / a p a c h e 2 / . h t p a s s w d 文 件 , 示 例 内 容 如 下 1 2 3 4 $ c a t / e t c / a p a c h e 2 / . h t p a s s w d u s e r 1 : $ a p r 1 $ / w o C 1 j n P $ K A h 0 S s V n 5 q e S M j T t n 0 E 9 Q 0 u s e r 2 : $ a p r 1 $ Q d R 8 f N L T $ v b C E E z D j 7 L y q C M y N p S o B h / u s e r 3 : $ a p r 1 $ M r 5 A 0 e . U $ 0 j 3 9 H p 5 F f x R k n e k l X a M r r / 配 置 N G I N X 在 要 加 认 证 的 路 径 中 , 增 加 a u t h _ b a s i c 配 置 1 2 3 4 l o c a t i o n / a p i 配 置 认 证 文 件 a u t h _ b a s i c _ u s e r _ f i l e 1 2 3 4 l o c a t i o n / a p i 同 样 , 也 可 以 配 置 在 整 个 s e r v e r 下 面 , 如 果 某 个 路 径 不 需 要 认 证 , 增 加 a u t h _ b a s i c : o f f 即 可 1 2 3 4 5 6 7 8 9 s e r v e r } B a s i c A u t h e n t i c a t i o n 与 I P 相 结 合 设 想 以 下 场 景 既 要 认 证 , 又 要 要 求 I P 白 名 单 才 可 以 访 问 认 证 或 者 I P 白 名 单 可 以 访 问 使 用 a l l o w 和 d e n y 指 令 1 2 3 4 5 6 7 l o c a t i o n / a p i 拒 绝 来 自 1 9 2 . 1 6 8 . 1 . 2 的 访 问 , 允 许 1 9 2 . 1 6 8 . 1 . 1 / 2 4 网 段 内 的 访 问 。 d e n y , a l l o w 按 顺 序 匹 配 。 结 合 s a t i s f y 指 令 , 如 果 设 置 为 a l l , 则 需 要 满 足 所 有 条 件 才 可 以 访 问 , 如 果 设 置 为 a n y , 则 i p 认 证 和 b a s i c a u t h 认 证 满 足 其 中 一 个 即 可 , 如 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 l o c a t i o n / a p i C U R L 的 u r l q u e r y 的 用 法 发 表 于 2 0 2 3 0 1 1 2 更 新 于 2 0 2 3 0 8 0 2 分 类 于 L i n u x C U R L 的 – u r l q u e r y 的 用 法 背 景 2 0 2 2 年 1 2 月 2 1 日 发 布 的 c u r l 7 . 8 7 . 0 版 本 中 , 新 增 了 – u r l q u e r y 参 数 , 详 见 c o m m i t 。 在 此 之 前 , 如 果 要 使 用 p o s t 方 法 发 送 数 据 , 可 以 使 用 d , 将 数 据 包 装 成 b o d y 发 送 出 去 。 1 c u r l d n a m e = m r s m i t h d c o l o r = b l u e h t t p s : / / e x a m p l e . c o m 如 果 转 变 为 G E T 方 式 , 可 以 使 用 G / – g e t 参 数 , 会 自 动 将 参 数 转 变 为 g e t 的 q u e r y 的 形 式 , 如 1 c u r l G d n a m e = m r s m i t h d c o l o r = b l u e h t t p s : / / e x a m p l e . c o m 将 U R L 转 为 : 1 h t t p s : / / e x a m p l e . c o m / ? n a m e = m r s m i t h g f g = 4 # p r i n t i n g o r i g i n a l s t r i n g p r i n t ( T h e o r i g i n a l s t r i n g i s : + s t r ( t e s t _ s t r ) ) # p a r s e _ q s g e t s t h e D i c t i o n a r y a n d v a l u e l i s t r e s = u r l l i b . p a r s e . p a r s e _ q s ( t e s t _ s t r ) # p r i n t i n g r e s u l t p r i n t ( T h e p a r s e d U R L P a r a m s : + s t r ( r e s ) ) # T h e p a r s e d U R L P a r a m s : 方 法 2 使 用 正 则 表 达 式 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 i m p o r t r e # i n i t i a l i z i n g s t r i n g t e s t _ s t r = g f g = 4 # p r i n t i n g o r i g i n a l s t r i n g p r i n t ( T h e o r i g i n a l s t r i n g i s : + s t r ( t e s t _ s t r ) ) # g e t t i n g a l l p a r a m s p a r a m s = r e . f i n d a l l ( r ( [ ^ = , t e s t _ s t r ) # a s s i g n i n g k e y s w i t h v a l u e s r e s = d i c t ( ) f o r k e y , v a l i n p a r a m s : r e s . s e t d e f a u l t ( k e y , [ ] ) . a p p e n d ( v a l ) # p r i n t i n g r e s u l t p r i n t ( T h e p a r s e d U R L P a r a m s : + s t r ( r e s ) ) 方 法 3 使 用 S p l i t ( ) 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 # p y t h o n p r o g r a m t o c o n v e r t # U R L p a r a m e t e r s t o d i c t i o n a r y i t e m s # i n i t i a l i z i n g s t r i n g t e s t _ s t r = g f g = 4 # p r i n t i n g o r i g i n a l s t r i n g p r i n t ( T h e o r i g i n a l s t r i n g i s : + s t r ( t e s t _ s t r ) ) # g e t t i n g a l l p a r a m s r e s = d i c t ( ) x = t e s t _ s t r . s p l i t ( & ) f o r i i n x : a , b = i . s p l i t ( = ) # a s s i g n i n g k e y s w i t h v a l u e s r e s [ a ] = [ b ] # p r i n t i n g r e s u l t p r i n t ( T h e p a r s e d U R L P a r a m s : + s t r ( r e s ) ) # T h e o r i g i n a l s t r i n g i s : g f g = 4 & i s = 5 & b e s t = y e s # T h e p a r s e d U R L P a r a m s : G i t + g i t h u b a c t i o n s + s s h 自 动 部 署 发 表 于 2 0 2 2 0 7 2 9 更 新 于 2 0 2 3 0 8 0 2 分 类 于 L i n u x 背 景 一 个 简 单 的 A P I 服 务 , 由 于 经 常 改 动 , 每 次 改 动 后 还 需 要 手 动 登 录 服 务 器 , p u l l 下 代 码 , 然 后 重 启 , 作 为 多 一 步 都 嫌 麻 烦 的 人 来 说 , 绝 对 不 能 接 受 。 功 能 设 想 由 于 代 码 仓 库 是 部 署 在 g i t h u b 上 的 , 想 到 了 g i t h u b a c t i o n , 由 于 之 前 没 有 了 解 过 g i t h u b a c t i o n , 不 知 道 能 否 实 现 , 于 是 开 始 了 学 习 g i t h u b a c t i o n 的 过 程 , 发 现 完 全 没 问 题 , 亦 有 种 相 见 恨 晚 的 感 觉 。 主 要 实 现 的 点 : 当 代 码 p u s h 到 m a s t e r 分 支 后 , 自 动 p u l l 下 来 代 码 ; 然 后 重 启 服 务 ; 就 是 这 么 简 单 的 几 个 步 骤 。 实 现 细 节 考 虑 到 服 务 不 复 杂 且 较 简 单 , 依 赖 不 多 , 本 着 怎 么 简 单 怎 么 来 , 直 接 使 用 s s h 登 录 到 服 务 器 执 行 命 令 即 可 。 前 期 准 备 准 备 s s h 免 密 登 录 的 p r i v a t e k e y , 我 这 里 直 接 用 我 自 己 机 器 的 k e y , 建 议 重 新 生 成 一 个 1 2 3 4 # 生 成 k e y s s h k e y g e n t r s a C g i t h u b a c t i o n s # 复 制 到 服 务 器 s s h c o p y i d i [ 公 钥 文 件 ] u s e r @ h o s t 在 g i t h u b 的 仓 库 中 设 置 思 考 , 处 于 安 全 性 的 考 虑 , 使 用 G i t H u b 的 S e c r e t s 。 在 项 目 的 S e t t i n g s S e c r e t s A c t i o n s 增 加 私 钥 , 我 这 边 将 服 务 器 的 H o s t , U s e r n a m e 都 配 置 进 去 了 , 方 便 修 改 。 A c t i o n s 文 件 存 储 在 项 目 目 录 的 . g i t h u b / w o r k f l o w s / d e p l o y . y m l , 文 件 名 可 以 随 便 起 , 路 径 必 须 对 。 a c t i o n s 文 件 示 例 如 下 : 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 n a m e : d e p l o y o n : p u s h : b r a n c h e s : [ m a s t e r ] p u l l _ r e q u e s t : b r a n c h e s : [ m a s t e r ] w o r k f l o w _ d i s p a t c h : j o b s : d e p l o y : r u n s o n : u b u n t u l a t e s t s t e p s : n a m e : e x e c u t i n g r e m o t e s s h c o m m a n d s t o d e v e l o p u s e s : a p p l e b o y / s s h a c t i o n @ m a s t e r w i t h : h o s t : $ } u s e r n a m e : $ } k e y : $ } s c r i p t : c d [ p a t h ] & & g i t p u l l & & s u d o s u p e r v i s o r c t l r e s t a r t p a r a m 我 这 里 用 的 是 s u p e r v i s o r 启 动 的 服 务 , 如 果 用 其 他 方 式 启 动 的 , 可 替 换 自 己 的 重 启 命 令 。 另 外 , 使 用 到 了 s s h a c t i o n , 其 中 : h o s t : 为 自 己 主 机 的 地 址 , 这 里 设 置 在 了 项 目 的 s e c r e t s 中 u s e r n a m e : 为 主 机 s s h 的 用 户 名 , 同 样 写 在 了 项 目 的 s e c r e t s 中 k e y : 为 登 录 主 机 的 私 钥 其 他 参 数 可 参 考 s s h a c t i o n 的 项 目 主 页 。 此 时 , 可 直 接 p u s h 到 m a s t e r 分 支 来 测 试 了 。 可 完 善 的 点 对 于 项 目 依 赖 , 没 有 自 动 安 装 , 可 增 加 p i p 3 i n s t a l l r r e q u i r e m e n t s 自 动 安 装 相 关 依 赖 , 需 要 做 好 错 误 处 理 ; 部 署 成 功 或 失 败 , 可 增 加 监 控 或 者 通 知 ; r e f e r e n c e 使 用 g i t h u b a c t i o n 部 署 代 码 G i t H u b A c t i o n s s s h a c t i o n s a w e s o m e a c t i o n s 1 2 文 章 目 录 站 点 概 览 B l e s s e d b i n 1 5 日 志 9 分 类 1 5 标 签 G i t H u b 冀 I C P 备 1 6 0 0 3 2 2 3 号 2 1 6 0 0 3 2 2 3 号 2 冀 公 网 安 备 1 3 1 0 0 2 0 2 0 0 0 7 9 7 © 2 0 2 4 B l e s s e d b i n 由 H e x o & N e x T . P i s c e s 强 力 驱 动
站点概括关于www.blessedbin.com说明:
www.blessedbin.com由网友主动性提交被整理收录的,仅提供www.blessedbin.com的基础信息并免费向大众网友展示,www.blessedbin.com的是IP地址:- 地址:-,www.blessedbin.com的百度权重为0、百度手机权重为0、百度收录为0条、360收录为0条、搜狗收录为0条、谷歌收录为0条、百度来访流量大约在-之间、百度手机端来访流量大约在-之间、www.blessedbin.com的备案号是-、备案人叫-、被百度收录的关键词有0个、手机端关键词有0个、该站点迄今为止已经创建未知。
内容声明:1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违规信息,如您发现违规内容,请联系我们进行清除处理!
4、本文地址:https://www.xingzitai.com/xxzddh/6d29714f27dfa3278c1a.html,复制请保留版权链接!
微秀场::微秀场http://www.sensan.icu/提供最新版仿易企秀移动场景应用自营销管家,免费为中小微企业或团队提供业务场景应用展示、潜在客户在线报名收集、管理和二次营销
南江生物_实验室整体方案专业服务商
尚展电商-尚展,上海尚展电商,尚展电商官网,尚展电商,品牌电商,电商服务,礼尚信息
尚展专注提供以品牌电子商务为核心的一站式商业解决方案,涉及店铺运营、数字营销、IT解决方案、仓储配送、客户服务等5大内容。
【张家界导游网】_张家界旅游__张家界世纪中旅国际旅行社__旅游团接待优秀旅行社__官网
张家界导游网提供湖南张家界市旅游线路、酒店、客栈、住宿、景点、图片的张家界旅游网站!预订张家界旅游首选品牌!热线:0744-8362888。
江苏苏州升降机_导轨式升降货梯_固定剪叉式升降平台_南京电动液压机械厂
江苏南京货梯升降机厂家(15253134653)主营货物提升机,工厂仓库货梯,厂房车间货梯,移动式自行走升降平台,电动登车桥,液压装卸平台,家用别墅电梯,残疾人无障碍升降机,卸猪台等.
该站暂未设置description...
乐清市中贝电气有限公司设立在外商投资环境良好的中国乐清,公司是一家集自行研制、开发、生产、销售为...
普鲁斯特国际网络有限公司是综合布线应用方面的重要制造商,也因其富有革新精神的产品总能以最低的总安装费用却提供最大的可靠性而著名。