关于www.phpdeployer.com说明: www.phpdeployer.com由网友主动性提交被为佳商机网整理收录的,为佳商机网仅提供www.phpdeployer.com的基础信息并免费向大众网友展示,www.phpdeployer.com的是IP地址:120.53.248.227 [中国北京北京 腾讯云],www.phpdeployer.com的百度权重为0、百度手机权重为0、百度收录为0条、360收录为0条、搜狗收录为0条、谷歌收录为0条、百度来访流量大约在-之间、百度手机端来访流量大约在-之间、www.phpdeployer.com的备案号是京ICP备20009444号、备案人叫北京众锐普斯信息技术有限公司、被百度收录的关键词有0个、手机端关键词有0个、迄今为止已经创建3年4个月6天。
Yii2的站点协议: 协议类型HTTP/1.1 200 OK 页面类型text/html 服务器类型nginx 是否压缩否 原网页大小27070 压缩后大小6173 压缩比77.2%
Yii2的站点快照: 1 b e s t y i i t o p i c 8 3 Y i i 2 c o m p o s e r 安 装 慢 的 解 决 办 法 在 y i i 中 引 用 p h p 的 开 源 项 目 用 c o m p o s e r 已 经 很 方 便 了 , 引 用 前 端 的 开 源 项 目 也 有 c o m p o s e r 的 插 件 如 : 1 . [ f x p a s s e t ] ( h t t p s : / / g i t h u b . c o m / f x p i o / c o m p o s e r a s s e t p l u g i n f x p a s s e t ) 2 . [ A s s e t P a c k a g i s t ] ( h t t p s : / / g i t h u b . c o m / h i q d e v / a s s e t p a c k a g i s t A s s e t P a c k a g i s t ) 以 前 y i i 默 认 采 用 前 者 , 现 在 新 的 y i i 2 模 版 默 认 采 用 后 者 , 后 者 的 作 者 就 很 厉 害 了 , 貌 似 是 个 重 度 y i i 用 户 , 看 来 是 被 f x p a s s e t 的 执 行 缓 慢 给 弄 急 眼 了 , 所 以 自 己 搞 了 个 更 新 的 方 法 。 * * 言 归 正 传 : * * 所 以 更 快 速 的 安 装 方 式 就 是 A s s e t P a c k a g i s t h t t p s : / / a s s e t p a c k a g i s t . o r g 其 实 就 是 2 步 : 1 . 在 c o n f i g 中 关 闭 f x p a s s e t 的 调 用 2 . 在 源 列 表 中 加 入 a s s e t p a c k a g i s t 库 的 配 置 ` ` ` c o n f i g : } , . . . r e p o s i t o r i e s : [ ] ` ` ` 如 果 c o m p o s e r 的 源 采 用 阿 里 云 镜 像 , 完 整 写 法 如 下 : ` ` ` r e p o s i t o r i e s : , p a c k a g i s t : } ` ` ` 需 要 注 意 的 是 , y i i 在 y i i \ \ \ \ b a s e \ \ \ \ A p p l i c a t i o n 中 定 义 v e n d o r 路 径 的 时 候 也 定 义 了 b o w e r 和 n p m 路 径 : ` ` ` p h p / * * * S e t s t h e d i r e c t o r y t h a t s t o r e s v e n d o r f i l e s . * @ p a r a m s t r i n g $ p a t h t h e d i r e c t o r y t h a t s t o r e s v e n d o r f i l e s . * / p u b l i c f u n c t i o n s e t V e n d o r P a t h ( $ p a t h ) ` ` ` 这 就 和 a s s e t p a c k a g i s t 的 默 认 安 装 路 径 有 了 差 别 解 决 办 法 : 重 新 定 义 y i i 中 的 b o w e r 和 n p m 路 径 ` ` ` p h p $ c o n f i g = [ . . . a l i a s e s = > [ @ b o w e r = > @ v e n d o r / b o w e r a s s e t , @ n p m = > @ v e n d o r / n p m a s s e t , ] , . . . ] ; ` ` ` c o m p o s e r , y i i 2 1 5 7 4 1 2 9 1 3 1 3 4 5 3 0 0 0 0 0 0 1 9 9 9 1 5 7 4 1 2 9 1 3 1 1 5 7 4 1 4 1 2 2 5 2 b e s t y i i t o p i c 8 3 Y i i 2 的 安 全 最 佳 实 践 ( B e s t P r a c t i c e s O f S e c u r i t y ) 下 面 , 我 们 将 会 回 顾 常 见 的 安 全 原 则 , 并 介 绍 在 使 用 Y i i 开 发 应 用 程 序 时 , 如 何 避 免 潜 在 安 全 威 胁 。 大 多 数 这 些 原 则 并 非 您 独 有 , 而 是 适 用 于 网 站 或 软 件 开 发 , 因 此 , 您 还 可 以 找 到 有 关 这 些 背 后 的 一 般 概 念 的 进 一 步 阅 读 的 链 接 。 基 本 准 则 = = = = = = = 无 论 是 开 发 何 种 应 用 程 序 , 我 们 都 有 两 条 基 本 的 安 全 准 则 : 过 滤 输 入 转 义 输 出 过 滤 输 入 过 滤 输 入 的 意 思 是 , 用 户 输 入 不 应 该 认 为 是 安 全 的 , 你 需 要 总 是 验 证 你 获 得 的 输 入 值 是 在 允 许 范 围 内 。 比 如 , 我 们 假 设 可 以 通 过 三 个 字 段 完 成 排 序 ` t i t l e , c r e a t e d _ a t 和 s t a t u s ` , 然 后 , 这 个 值 是 由 用 户 输 入 提 供 的 , 那 么 , 最 好 在 我 们 接 收 参 数 的 时 候 , 检 查 一 下 这 个 值 是 否 是 指 定 的 范 围 。 对 于 基 本 的 P H P 而 言 , 上 述 做 法 类 似 如 下 : ` ` ` p h p $ s o r t B y = $ _ G E T [ s o r t ] ; i f ( ! i n _ a r r a y ( $ s o r t B y , [ t i t l e , c r e a t e d _ a t , s t a t u s ] ) ) ` ` ` 在 Y i i 中 , 很 大 可 能 性 , 你 会 使 用 ` 表 单 校 验 器 ` 来 执 行 类 似 的 检 查 。 * * 进 一 步 阅 读 该 主 题 : * * h t t p s : / / w w w . o w a s p . o r g / i n d e x . p h p / D a t a _ V a l i d a t i o n h t t p s : / / w w w . o w a s p . o r g / i n d e x . p h p / I n p u t _ V a l i d a t i o n _ C h e a t _ S h e e t 转 义 输 出 转 义 输 出 的 意 思 是 , 根 据 我 们 使 用 数 据 的 上 下 文 环 境 , 数 据 需 要 被 转 义 。 比 如 : 在 H T M L 上 下 文 , 你 需 要 转 义 ` ` 之 类 的 特 殊 字 符 。 在 J a v a S c r i p t 或 者 S Q L 中 , 也 有 其 他 的 特 殊 含 义 的 字 符 串 需 要 被 转 义 。 由 于 手 动 的 给 所 用 的 输 出 转 义 容 易 出 错 , Y i i 提 供 了 大 量 的 工 具 来 在 不 同 的 上 下 文 执 行 转 义 。 * * 进 一 步 阅 读 该 话 题 : * * h t t p s : / / w w w . o w a s p . o r g / i n d e x . p h p / C o m m a n d _ I n j e c t i o n h t t p s : / / w w w . o w a s p . o r g / i n d e x . p h p / C o d e _ I n j e c t i o n h t t p s : / / w w w . o w a s p . o r g / i n d e x . p h p / C r o s s s i t e _ S c r i p t i n g _ ( X S S ) 避 免 S Q L 注 入 = = = = = = = S Q L 注 入 发 生 在 查 询 语 句 是 由 连 接 未 转 义 的 字 符 串 生 成 的 场 景 , 比 如 : ` ` ` p h p $ u s e r n a m e = $ _ G E T [ u s e r n a m e ] ; $ s q l = S E L E C T * F R O M u s e r W H E R E u s e r n a m e = $ u s e r n a m e ; ` ` ` 除 了 提 供 正 确 的 用 户 名 外 , 攻 击 者 可 以 给 你 的 应 用 程 序 输 入 类 似 ` ; D R O P T A B L E u s e r ; ` 的 语 句 。 这 将 会 导 致 生 成 如 下 的 S Q L : ` ` ` S E L E C T * F R O M u s e r W H E R E u s e r n a m e = ; D R O P T A B L E u s e r ; ` ` ` 这 是 一 个 合 法 的 查 询 语 句 , 并 将 会 执 行 以 空 的 用 户 名 搜 索 用 户 操 作 , 然 后 , 删 除 u s e r 表 。 这 极 有 可 能 导 致 网 站 出 错 , 数 据 丢 失 。 ( 你 是 否 进 行 了 规 律 的 数 据 备 份 ? ) 在 Y i i 中 , 大 部 分 的 数 据 查 询 是 通 过 ` A c t i v e R e c o r d ` 进 行 的 , 而 其 是 完 全 使 用 P D O 预 处 理 语 句 执 行 S Q L 查 询 的 。 在 预 处 理 语 句 中 , 上 述 示 例 中 , 构 造 S Q L 查 询 的 场 景 是 不 可 能 发 生 的 。 有 时 , 你 仍 需 要 使 用 ` r a w q u e r i e s ` 或 者 ` q u e r y b u i l d e r ` 。 在 这 种 情 况 下 , 你 应 该 使 用 安 全 的 方 式 传 递 参 数 。 如 果 数 据 是 提 供 给 表 列 的 值 , 最 好 使 用 预 处 理 语 句 : ` ` ` p h p / / q u e r y b u i l d e r $ u s e r I D s = ( n e w Q u e r y ( ) ) s e l e c t ( i d ) f r o m ( u s e r ) w h e r e ( s t a t u s = : s t a t u s , [ : s t a t u s = > $ s t a t u s ] ) a l l ( ) ; / / D A O $ u s e r I D s = $ c o n n e c t i o n c r e a t e C o m m a n d ( S E L E C T i d F R O M u s e r w h e r e s t a t u s = : s t a t u s ) b i n d V a l u e s ( [ : s t a t u s = > $ s t a t u s ] ) q u e r y C o l u m n ( ) ; ` ` ` 如 果 数 据 是 用 于 指 定 列 的 名 字 , 或 者 表 的 名 字 , 最 好 的 方 式 是 只 允 许 预 定 义 的 枚 举 值 。 ` ` ` p h p f u n c t i o n a c t i o n L i s t ( $ o r d e r B y = n u l l ) / / . . . } ` ` ` 如 果 上 述 方 法 不 行 , 表 名 或 者 列 名 应 该 被 转 义 。 Y i i 针 对 这 种 转 义 提 供 了 一 个 特 殊 的 语 法 , 这 样 可 以 在 所 有 支 持 的 数 据 库 都 使 用 一 套 方 案 。 ` ` ` p h p $ s q l = S E L E C T C O U N T ( [ [ $ c o l u m n ] ] ) F R O M } ; $ r o w C o u n t = $ c o n n e c t i o n c r e a t e C o m m a n d ( $ s q l ) q u e r y S c a l a r ( ) ; ` ` ` 你 可 以 在 Q u o t i n g T a b l e a n d C o l u m n N a m e s 中 获 取 更 多 的 语 法 细 节 。 * * 进 一 步 阅 读 该 话 题 : * * h t t p s : / / w w w . o w a s p . o r g / i n d e x . p h p / S Q L _ I n j e c t i o n 防 止 X S S 攻 击 = = = = = = = = = = = = X S S 或 者 跨 站 脚 本 发 生 在 输 出 H T M L 到 浏 览 器 时 , 输 出 内 容 没 有 正 确 的 转 义 。 例 如 , 如 果 用 户 可 以 输 入 其 名 称 , 那 么 他 输 入 ` ` 而 非 其 名 字 ` A l e x a n d e r ` , 所 有 输 出 没 有 转 义 直 接 输 出 用 户 名 的 页 面 都 会 执 行 J a v a S c r i p t 代 码 ` a l e r t ( H e l l o ! ) ; ` , 这 会 导 致 浏 览 器 页 面 上 出 现 一 个 警 告 弹 出 框 。 就 具 体 的 站 点 而 言 , 除 了 这 种 无 意 义 的 警 告 输 出 外 , 这 样 的 脚 本 可 以 以 你 的 名 义 发 送 一 些 消 息 到 后 台 , 甚 至 执 行 一 些 银 行 交 易 行 为 。 避 免 X S S 攻 击 在 Y i i 中 非 常 简 单 , 有 如 下 两 种 一 般 情 况 : 你 希 望 数 据 以 纯 文 本 输 出 。 你 希 望 数 据 以 H T M L 形 式 输 出 。 如 果 你 需 要 的 是 纯 文 本 , 你 可 以 如 下 简 单 的 转 义 : ` ` ` p h p ` ` ` 如 果 是 H T M L , 我 们 可 以 用 ` H t m l P u r i f i e r ` 帮 助 类 来 执 行 : ` ` ` p h p ` ` ` 注 意 H t m l P u r i f i e r 帮 助 类 的 处 理 过 程 较 为 费 时 , 建 议 增 加 缓 存 。 * * 进 一 步 阅 读 该 话 题 : * * h t t p s : / / w w w . o w a s p . o r g / i n d e x . p h p / C r o s s s i t e _ S c r i p t i n g _ ( X S S ) 防 止 C S R F 攻 击 = = = = = = = = = = = = C S R F 是 跨 站 请 求 伪 造 的 缩 写 。 这 个 攻 击 思 想 源 自 许 多 应 用 程 序 假 设 来 自 用 户 的 浏 览 器 请 求 是 由 用 户 自 己 产 生 的 , 而 事 实 并 非 如 此 。 例 如 , 网 站 a n . e x a m p l e . c o m 有 一 个 / l o g o u t 网 址 , 当 使 用 简 单 的 G E T 请 求 访 问 时 , 记 录 用 户 退 出 。 只 要 用 户 的 请 求 一 切 正 常 , 但 是 有 一 天 坏 人 们 故 意 在 用 户 经 常 访 问 的 论 坛 上 放 上 ` ` 。 浏 览 器 在 请 求 图 像 或 请 求 页 面 之 间 没 有 任 何 区 别 , 所 以 当 用 户 打 开 一 个 带 有 这 样 一 个 被 操 作 过 的 标 签 的 页 面 时 , 浏 览 器 将 G E T 请 求 发 送 到 该 U R L , 用 户 将 从 a n . e x a m p l e . c o m 注 销 。 这 是 C S R F 攻 击 如 何 运 作 的 基 本 思 路 。 可 以 说 用 户 退 出 并 不 是 一 件 严 重 的 事 情 , 然 而 这 仅 仅 是 一 个 例 子 , 使 用 这 种 方 法 可 以 做 更 多 的 事 情 , 例 如 触 发 付 款 或 者 是 改 变 数 据 。 想 象 一 下 如 果 某 个 网 站 有 一 个 这 样 的 ` h t t p : / / a n . e x a m p l e . c o m / p u r s e / t r a n s f e r ? t o = a n o t h e r U s e r u s e y i i \ \ w e b \ \ C o n t r o l l e r ; c l a s s S i t e C o n t r o l l e r e x t e n d s C o n t r o l l e r } ` ` ` 要 对 每 个 自 定 义 方 法 禁 用 C S R F 验 证 , 您 可 以 使 用 : ` ` ` p h p n a m e s p a c e a p p \ \ c o n t r o l l e r s ; u s e y i i \ \ w e b \ \ C o n t r o l l e r ; c l a s s S i t e C o n t r o l l e r e x t e n d s C o n t r o l l e r } ` ` ` 在 s t a n d a l o n e a c t i o n s 禁 用 C S R F 必 须 在 ` i n i t ( ) ` 方 法 中 设 置 。 不 要 把 这 段 代 码 放 在 b e f o r e R u n ( ) 方 法 中 , 因 为 它 不 会 起 任 何 作 用 。 ` ` ` p h p c o n t r o l l e r e n a b l e C s r f V a l i d a t i o n = f a l s e ; } p u b l i c f u n c t i o n r u n ( ) } } ` ` ` > ` 警 告 : ` 禁 用 C S R F 将 允 许 任 何 站 点 向 您 的 站 点 发 送 P O S T 请 求 。 在 这 种 情 况 下 , 实 施 额 外 验 证 非 常 重 要 , 例 如 检 查 I P 地 址 或 秘 密 令 牌 。 * * 进 一 步 阅 读 该 话 题 : * * h t t p s : / / w w w . o w a s p . o r g / i n d e x . p h p / C S R F 防 止 文 件 暴 露 = = = = = = = = = = = = 默 认 的 服 务 器 w e b r o o t 目 录 指 向 包 含 有 ` i n d e x . p h p ` 的 ` w e b ` 目 录 。 在 共 享 托 管 环 境 下 , 这 样 是 不 可 能 的 , 这 样 导 致 了 所 有 的 代 码 , 配 置 , 日 志 都 在 w e b r o o t 目 录 。 如 果 是 这 样 , 别 忘 了 拒 绝 除 了 w e b 目 录 以 外 的 目 录 的 访 问 权 限 。 如 果 没 法 这 样 做 , 考 虑 将 你 的 应 用 程 序 托 管 在 其 他 地 方 。 在 生 产 环 境 关 闭 调 试 信 息 和 工 具 在 调 试 模 式 下 , Y i i 展 示 了 大 量 的 错 误 信 息 , 这 样 是 对 开 发 有 用 的 。 同 样 , 这 些 调 试 信 息 对 于 攻 击 者 而 言 也 是 方 便 其 用 于 破 解 数 据 结 构 , 配 置 值 , 以 及 你 的 部 分 代 码 。 永 远 不 要 在 生 产 模 式 下 将 你 的 ` i n d e x . p h p ` 中 的 ` Y I I _ D E B U G ` 设 置 为 ` t r u e ` 。 你 同 样 也 不 应 该 在 生 产 模 式 下 开 启 G i i 。 它 可 以 被 用 于 获 取 数 据 结 构 信 息 , 代 码 , 以 及 简 单 的 用 G i i 生 成 的 代 码 覆 盖 你 的 代 码 。 调 试 工 具 栏 同 样 也 应 该 避 免 在 生 产 环 境 出 现 , 除 非 非 常 有 必 要 。 它 将 会 暴 露 所 有 的 应 用 和 配 置 的 详 情 信 息 。 如 果 你 确 定 需 要 , 反 复 确 认 其 访 问 权 限 限 定 在 你 自 己 的 I P 。 * * 进 一 步 阅 读 该 话 题 : * * h t t p s : / / w w w . o w a s p . o r g / i n d e x . p h p / E x c e p t i o n _ H a n d l i n g h t t p s : / / w w w . o w a s p . o r g / i n d e x . p h p / T o p _ 1 0 _ 2 0 0 7 I n f o r m a t i o n _ L e a k a g e 使 用 T L S 上 的 安 全 连 接 ( H T T P S 的 启 用 ) = = = = = = = = = = = = = = = = = = = Y i i 提 供 依 赖 c o o k i e 和 / 或 P H P 会 话 的 功 能 。 如 果 您 的 连 接 受 到 威 胁 , 这 些 可 能 会 很 容 易 受 到 攻 击 。 如 果 应 用 程 序 通 过 T L S 使 用 安 全 连 接 , 则 风 险 会 降 低 。 有 关 如 何 配 置 它 的 说 明 , 请 参 阅 您 的 W e b 服 务 器 文 档 。 现 在 各 大 云 平 台 都 提 供 免 费 的 单 域 名 S S L 证 书 , 如 阿 里 云 , [ 腾 讯 云 ] [ 2 ] 。 以 阿 里 云 部 署 N g i n x 下 的 S S L 证 书 为 例 : 修 改 n g i n x . c o n f 文 件 如 下 : ` ` ` # 以 下 属 性 中 以 s s l 开 头 的 属 性 代 表 与 证 书 配 置 有 关 , 其 他 属 性 请 根 据 自 己 的 需 要 进 行 配 置 。 s e r v e r } ` ` ` 设 置 h t t p 请 求 自 动 跳 转 h t t p s 。 ( 一 般 都 这 么 做 ) ` ` ` s e r v e r ` ` ` > 参 考 官 方 说 明 , 写 的 能 不 能 配 置 成 功 自 己 脑 补 > 腾 讯 云 [ N g i n x 服 务 器 证 书 安 装 ] [ 3 ] > 阿 里 云 [ 在 N g i n x / T e n g i n e 服 务 器 上 安 装 证 书 ] [ 4 ] 安 全 服 务 器 配 置 = = = = = = = = = = = = 本 节 的 目 的 是 强 调 在 为 基 于 Y i i 的 网 站 提 供 服 务 配 置 时 需 要 考 虑 的 风 险 。 除 了 这 里 涉 及 的 要 点 之 外 , 可 能 还 有 其 他 与 安 全 相 关 的 配 置 选 项 , 所 以 不 要 认 为 这 部 分 是 完 整 的 。 避 免 H o s t h e a d e r 攻 击 像 y i i \ \ w e b \ \ U r l M a n a g e r 和 y i i \ \ h e l p e r s \ \ U r l 这 样 的 类 会 使 用 c u r r e n t l y r e q u e s t e d h o s t n a m e 来 生 成 链 接 。 如 果 W e b 服 务 器 配 置 为 独 立 于 ` H o s t ` 标 头 的 值 提 供 相 同 的 站 点 , 这 个 信 息 并 不 可 靠 , 并 且 [ 可 能 由 发 送 H T T P 请 求 的 用 户 伪 造 ] [ 5 ] 。 在 这 种 情 况 下 , 您 应 该 修 复 您 的 W e b 服 务 器 配 置 以 便 仅 为 指 定 的 主 机 名 提 供 站 点 服 务 或 者 通 过 设 置 ` r e q u e s t ` 应 用 程 序 组 件 的 h o s t I n f o 属 性 来 显 式 设 置 或 过 滤 该 值 。 > ` 注 意 : ` 您 应 该 始 更 倾 向 于 使 用 w e b 服 务 器 配 置 h o s t h e a d e r a t t a c k 保 护 而 不 是 使 用 过 滤 器 。 仅 当 服 务 器 配 置 设 置 不 可 用 时 y i i \ \ f i l t e r s \ \ H o s t C o n t r o l 才 应 该 被 使 用 。 * * 以 N g i n x 为 例 : * * 方 法 一 : 修 改 n g i n x . c o n f 添 加 一 个 默 认 s e r v e r , 当 h o s t 头 被 修 改 匹 配 不 到 s e r v e r 时 会 跳 到 该 默 认 s e r v e r , 该 默 认 s e r v e r 直 接 返 回 4 0 3 错 误 。 例 子 如 下 : ` ` ` c o n f i g s e r v e r } ` ` ` 重 启 n g i n x 即 可 。 方 法 二 : 修 改 n g i n x . c o n f 在 目 标 s e r v e r 添 加 检 测 规 则 , 参 考 以 下 标 红 配 置 : ` ` ` c o n f i g s e r v e r . . . } ` ` ` 重 启 n g i n x 即 可 。 有 关 于 服 务 器 配 置 的 更 多 信 息 , 请 参 阅 您 的 w e b 服 务 器 的 文 档 : [ 在 W e b 服 务 器 防 止 H o s t 头 攻 击 ] [ 6 ] A p a c h e 2 : h t t p : / / h t t p d . a p a c h e . o r g / d o c s / t r u n k / v h o s t s / e x a m p l e s . h t m l # d e f a u l t a l l p o r t s N g i n x : h t t p s : / / w w w . n g i n x . c o m / r e s o u r c e s / w i k i / s t a r t / t o p i c s / e x a m p l e s / s e r v e r _ b l o c k s / * * ` 如 果 您 无 权 访 问 服 务 器 配 置 , 您 可 以 在 应 用 程 序 级 别 设 置 y i i \ \ f i l t e r s \ \ H o s t C o n t r o l 过 滤 器 , 以 防 此 类 的 攻 击 。 ` * * ` ` ` p h p / / W e b A p p l i c a t i o n c o n f i g u r a t i o n f i l e r e t u r n [ a s h o s t C o n t r o l = > [ c l a s s = > y i i \ \ f i l t e r s \ \ H o s t C o n t r o l , a l l o w e d H o s t s = > [ e x a m p l e . c o m , * . e x a m p l e . c o m , ] , f a l l b a c k H o s t I n f o = > h t t p s : / / e x a m p l e . c o m , ] , / / . . . ] ; ` ` ` 补 充 阅 读 = = = = = = = [ w e b 安 全 攻 防 思 维 导 图 ] [ 7 ] ! [ w e b 安 全 攻 防 思 维 导 图 ] [ 8 ] w e b 攻 击 及 防 御 技 术 ( 来 源 网 络 ) ! [ w e b 攻 击 及 防 御 技 术 ] [ 9 ] [ 1 ] : h t t p s : / / w w w . w 3 . o r g / P r o t o c o l s / r f c 2 6 1 6 / r f c 2 6 1 6 s e c 9 . h t m l [ 2 ] : h t t p s : / / c l o u d . t e n c e n t . c o m / d o c u m e n t / p r o d u c t / 4 0 0 / 8 4 2 2 [ 3 ] : h t t p s : / / c l o u d . t e n c e n t . c o m / d o c u m e n t / p r o d u c t / 4 0 0 / 3 5 2 4 4 [ 4 ] : h t t p s : / / h e l p . a l i y u n . c o m / d o c u m e n t _ d e t a i l / 9 8 7 2 8 . h t m l [ 5 ] : h t t p s : / / w w w . a c u n e t i x . c o m / v u l n e r a b i l i t i e s / w e b / h o s t h e a d e r a t t a c k [ 6 ] : h t t p s : / / w w w . f r e e b u f . c o m / a r t i c l e s / w e b / 1 7 8 3 1 5 . h t m l [ 7 ] : h t t p s : / / b l o g . c s d n . n e t / q q _ 4 2 6 3 6 4 3 5 / a r t i c l e / d e t a i l s / 8 9 2 2 2 3 7 2 [ 8 ] : / i m g / b V b w Z h 6 [ 9 ] : / i m g / b V b w Z l h > 本 文 由 [ m o n s t e r ] ( h t t p s : / / w w w . b e s t y i i . c o m / m e m b e r / m o n s t e r ) 创 作 , 采 用 [ 知 识 共 享 署 名 3 . 0 中 国 大 陆 许 可 协 议 ] ( h t t p : / / c r e a t i v e c o m m o n s . o r g / l i c e n s e s / b y / 3 . 0 / c n ) 进 行 许 可 。 可 自 由 转 载 、 引 用 , 但 需 署 名 作 者 且 注 明 文 章 出 处 。 y i i 2 1 5 7 4 1 4 2 7 8 4 1 7 7 4 0 0 0 0 0 0 1 9 9 9 1 5 7 4 1 4 2 7 8 4 1 5 7 4 1 4 2 7 8 4 3 b e s t y i i t o p i c 5 3 C e n t O S 7 s u p e r v i s o r d 进 程 管 理 服 务 简 介 = = = 官 网 h t t p : / / s u p e r v i s o r d . o r g / s u p e r v i s o r 是 一 个 允 许 用 户 监 视 和 控 制 在 l i n u x 操 作 系 统 的 进 程 数 量 的 客 户 端 / 服 务 器 系 统 。 由 p y t h o n 语 言 编 写 , 用 以 监 控 服 务 器 的 运 行 , 发 现 问 题 能 立 即 自 动 预 警 及 自 动 重 启 等 功 能 。 s u p e r v i s o r 还 要 求 管 理 的 程 序 是 非 d a e m o n 程 序 , s u p e r v i s o r d 会 帮 你 把 它 转 成 d a e m o n 程 序 。 组 件 = = = s u p e r v i s o r d 服 务 端 , 他 负 责 在 他 自 己 的 进 程 下 起 一 个 子 进 程 , 相 应 来 自 客 户 端 的 命 令 , 重 启 崩 溃 或 异 常 退 出 的 子 进 程 , 输 出 相 关 日 志 , 针 对 于 子 进 程 活 跃 期 间 的 时 间 进 行 生 成 和 管 理 配 置 文 件 位 置 : / e t c / s u p e r v i s o r d . c o n f 注 意 配 置 合 理 权 限 s u p e r v i s o r c t l 命 令 行 客 户 端 , 有 s u p e r v i s o r d 提 供 的 一 个 s h e l l l i k e 接 口 , 通 过 它 , 用 户 可 以 连 接 到 不 同 的 s u p e r v i s o r c t l 进 程 , 查 看 , 起 停 子 进 程 , 列 出 正 在 运 行 的 子 进 程 。 通 过 T C P 进 行 交 互 , 提 供 认 证 , 在 [ s u p e r v i s o r c t l ] 段 进 行 统 一 的 配 置 w e b s e r v e r s u p e r v i s o r c t l 的 w e b 管 理 界 面 , 通 过 访 问 h t t p : / / l o c a l h o s t : 9 0 0 1 / 来 管 理 子 进 程 状 态 , [ i n e t _ h t t p _ s e r v e r ] 这 段 进 行 配 置 安 装 = = = 前 提 条 件 是 要 有 p y t h o n 环 境 , l i n u x 一 般 自 带 p y t h o n 环 境 , 这 里 以 c e n t O S 为 例 。 y u m 安 装 ` ` ` y u m i n s t a l l y s u p e r v i s o r ` ` ` 启 动 = = = ` ` ` s y s t e m c t l s t a r t s u p e r v i s o r d ` ` ` 开 机 启 动 ` ` ` s y s t e m c t l e n a b l e s u p e r v i s o r d ` ` ` 配 置 文 件 解 析 = = = 生 成 配 置 文 件 : e c h o _ s u p e r v i s o r d _ c o n f > / t m p / s u p e r v i s o r d . c o n f 一 般 y u m 安 装 后 配 置 文 件 默 认 位 置 是 / e t c / s u p e r v i s o r / s u p e r v i s o r d . c o n f 。 其 中 注 释 是 以 分 号 开 头 ` ` ` [ u n i x _ h t t p _ s e r v e r ] # 这 段 是 通 过 s o c k e t 文 件 启 动 的 w e b s e r v e r , 这 个 要 有 , 因 为 命 令 行 s u p e r v i s o r c t l 是 通 过 这 个 实 现 的 。 f i l e = / t m p / s u p e r v i s o r . s o c k c h m o d = 0 7 7 7 c h o w n = n o b o d y : n o g r o u p u s e r n a m e = u s e r p a s s w o r d = 1 2 3 [ i n e t _ h t t p _ s e r v e r ] # 通 过 网 络 端 口 启 动 的 w e b s e r v e r p o r t = 1 2 7 . 0 . 0 . 1 : 9 0 0 1 u s e r n a m e = u s e r p a s s w o r d = 1 2 3 [ s u p e r v i s o r d ] # 这 块 是 服 务 配 置 l o g f i l e = / t m p / s u p e r v i s o r d . l o g 日 志 文 件 l o g f i l e _ m a x b y t e s = 5 0 M B 日 志 文 件 最 大 s i z e l o g f i l e _ b a c k u p s = 1 0 日 志 轮 询 下 备 份 数 l o g l e v e l = i n f o 日 志 级 别 p i d f i l e = / t m p / s u p e r v i s o r d . p i d p i d 文 件 位 置 n o d a e m o n = f a l s e 如 果 是 t r u e , s u p e r v i s o r 将 在 前 端 启 动 m i n f d s = 1 0 2 4 s u p e r v i s o r d 启 动 成 功 的 最 小 文 件 描 述 符 数 m i n p r o c s = 2 0 0 s u p e r v i s o r d 启 动 成 功 的 最 小 进 程 描 述 符 数 u m a s k = 0 2 2 u s e r = c h r i s m 启 动 用 户 , 这 块 要 注 意 , 这 个 用 户 要 有 相 应 的 目 录 权 限 i d e n t i f i e r = s u p e r v i s o r s u p e r v i s o r 进 程 的 i d e n t i f i e r 字 符 串 , 用 户 R P C 协 议 接 口 d i r e c t o r y = / t m p 当 s u p e r v i s o r d 服 务 d a e m o n i z e s 时 , 切 换 到 这 个 目 录 , 可 用 这 个 % ( h e r e ) s 变 量 来 扩 展 到 整 个 配 置 文 件 n o c l e a n u p = t r u e 禁 止 s u p e r v i s o r d 在 启 动 时 间 清 空 任 何 存 在 的 A U T O 子 日 志 文 件 c h i l d l o g d i r = / t m p A U T O 自 日 志 文 件 目 录 s t r i p _ a n s i = f a l s e 除 去 在 子 日 志 文 件 中 所 有 的 A N S I 转 义 序 列 e n v i r o n m e n t = K E Y 1 = v a l u e 1 , K E Y 2 = v a l u e 2 一 个 键 / 值 的 列 表 , 一 个 环 境 变 量 吧 ? [ s u p e r v i s o r c t l ] s e r v e r u r l = u n i x : / / / t m p / s u p e r v i s o r . s o c k u s e r n a m e = c h r i s p a s s w o r d = 1 2 3 p r o m p t = m y s u p e r v i s o r S t r i n g u s e d a s s u p e r v i s o r c t l p r o m p t . 作 为 s u p e r v i s o r c t l 提 示 字 符 串 。 ` ` ` 管 理 进 程 配 置 配 置 文 件 位 置 : / e t c / s u p e r v i s o r / c o n f . d / 一 般 有 如 下 配 置 项 : ` ` ` p r o c e s s _ n a m e = % ( p r o g r a m _ n a m e ) s # 进 程 名 称 , 默 认 是 程 序 名 称 c o m m a n d 启 动 程 序 命 令 n u m p r o c s = 1 # 进 程 数 量 d i r e c t o r y = / t m p # 路 径 u m a s k = 0 2 2 # 掩 码 p r i o r i t y = 9 9 9 # 优 先 级 , 越 大 被 开 起 的 越 早 a u t o r e s t a r t = t r u e # 自 动 重 启 s t a r t s e c s = 1 0 # 启 动 等 待 时 间 ( 秒 ) s t a r t r e t r i e s = 3 # 启 动 重 试 次 数 s t o p s i g n a l = T E R M # 关 闭 信 号 s t o p w a i t s e c s = 1 0 # 关 闭 前 等 待 时 间 u s e r = c h r i s m # 监 控 用 户 权 限 r e d i r e c t _ s t d e r r = f a l s e # 重 定 向 报 错 输 出 s t d o u t _ l o g f i l e = / a / p a t h # 输 入 重 定 向 为 日 志 s t d o u t _ l o g f i l e _ m a x b y t e s = 1 M B # 日 志 大 小 s t d o u t _ l o g f i l e _ b a c k u p s = 1 0 # 日 志 备 份 s t d o u t _ c a p t u r e _ m a x b y t e s = 1 M B s t d e r r _ l o g f i l e = / a / p a t h s t d e r r _ l o g f i l e _ m a x b y t e s = 1 M B s t d e r r _ l o g f i l e _ b a c k u p s = 1 0 s t d e r r _ c a p t u r e _ m a x b y t e s = 1 M B e n v i r o n m e n t = A = 1 , B = 2 # 预 定 义 环 境 变 量 s e r v e r u r l = A U T O # 系 统 U R L ` ` ` 示 例 为 了 更 好 的 展 示 , 我 这 边 写 了 一 个 简 单 的 服 务 。 下 面 的 具 体 的 代 码 : ` ` ` # ! / u s r / b i n / e n v p y t h o n i m p o r t s o c k e t H O S T , P O R T = , 8 0 8 0 l i s t e n _ s o c k e t = s o c k e t . s o c k e t ( s o c k e t . A F _ I N E T , s o c k e t . S O C K _ S T R E A M ) l i s t e n _ s o c k e t . s e t s o c k o p t ( s o c k e t . S O L _ S O C K E T , s o c k e t . S O _ R E U S E A D D R , 1 ) l i s t e n _ s o c k e t . b i n d ( ( H O S T , P O R T ) ) l i s t e n _ s o c k e t . l i s t e n ( 1 ) w h i l e T r u e : c l i e n t _ c o n n e c t i o n , c l i e n t _ a d d r e s s = l i s t e n _ s o c k e t . a c c e p t ( ) r e q u e s t = c l i e n t _ c o n n e c t i o n . r e c v ( 1 0 2 4 ) h t t p _ r e s p o n s e = \ \ H T T P / 1 . 1 2 0 0 O K H e l l o W o r l d ! c l i e n t _ c o n n e c t i o n . s e n d a l l ( h t t p _ r e s p o n s e ) c l i e n t _ c o n n e c t i o n . c l o s e ( ) ` ` ` 这 个 脚 本 是 一 个 简 单 的 w e b 服 务 器 , 8 0 8 0 端 口 , 所 有 访 问 都 会 返 回 H e l l o W o r l d ! 下 面 我 们 看 下 配 置 文 件 / e t c / s u p e r v i s o r / c o n f . d / w e b s e r v e r . c o n f ` ` ` [ p r o g r a m : w e b s e r v e r ] a u t o s t a r t = t r u e s t a r t r e t r i e s = 3 c o m m a n d = / o p t / w e b s e r v e r . p y ` ` ` 查 看 状 态 ` ` ` s h r o o t @ 0 c 1 f c 2 3 d 1 3 9 8 : ~ # s u p e r v i s o r c t l s t a t u s w e b s e r v e r R U N N I N G p i d 1 1 2 0 , u p t i m e 0 : 0 8 : 0 7 ` ` ` s u p e r v i s o r c t l 命 令 1 . 交 互 模 式 直 接 输 入 s u p e r v i s o r c t l 就 进 入 交 互 模 式 。 ` ` ` r o o t @ 0 c 1 f c 2 3 d 1 3 9 8 : ~ # s u p e r v i s o r c t l w e b s e r v e r R U N N I N G p i d 1 1 2 0 , u p t i m e 0 : 0 9 : 4 0 s u p e r v i s o r > ` ` ` 2 . 命 令 行 模 式 如 上 节 所 说 的 ` s u p e r v i s o r c t l s t a t u s ` 3 . 具 体 命 令 项 交 互 和 命 令 行 模 式 有 一 样 。 ` ` ` r e r e a d 重 新 加 载 配 置 文 件 u p d a t e 将 配 置 文 件 里 新 增 的 子 进 程 加 入 进 程 组 , 如 果 设 置 了 a u t o s t a r t = t r u e 则 会 启 动 新 新 增 的 子 进 程 s t a t u s 查 看 所 有 进 程 状 态 s t a t u s 查 看 指 定 进 程 状 态 s t a r t a l l 启 动 所 有 子 进 程 s t a r t 启 动 指 定 子 进 程 r e s t a r t a l l 重 启 所 有 子 进 程 r e s t a r t 重 启 指 定 子 进 程 s t o p a l l 停 止 所 有 子 进 程 s t o p 停 止 指 定 子 进 程 r e l o a d 重 启 s u p e r v i s o r d a d d 添 加 子 进 程 到 进 程 组 r e o m v e 从 进 程 组 移 除 子 进 程 , 需 要 先 s t o p 。 注 意 : 移 除 后 , 需 要 使 用 r e r e a d 和 u p d a t e 才 能 重 新 运 行 该 进 程 ` ` ` w e b s e r v e r 界 面 = = = = 还 记 得 “ 配 置 文 件 解 析 ” 一 节 关 于 w e b s e r v e r 段 的 配 置 吗 ? 不 记 得 可 以 回 去 看 一 眼 。 我 们 稍 微 展 示 下 w e b 界 面 。 浏 览 器 输 入 h t t p : / / : , 会 弹 出 输 入 用 户 名 和 密 码 的 弹 窗 , 输 入 信 息 后 可 以 看 到 界 面 了 。 ! [ 图 片 描 述 ] [ 1 ] w e b 界 面 从 界 面 中 可 以 看 到 , 服 务 的 状 态 , 进 程 i d 和 运 行 的 时 间 。 还 有 一 些 简 单 的 操 作 , 例 如 重 启 , 停 止 , 清 除 日 志 , 监 控 日 志 等 。 常 见 的 错 误 1 . 多 进 程 启 动 报 错 信 息 如 下 : ` ` ` S t a r t i n g s u p e r v i s o r : E r r o r : % ( p r o c e s s _ n u m ) m u s t b e p r e s e n t w i t h i n p r o c e s s _ n a m e w h e n n u m p r o c s > 1 i n s e c t i o n p r o g r a m : n g i n x ( f i l e : / e t c / s u p e r v i s o r / c o n f . d / n g i n x . c o n f ) F o r h e l p , u s e / u s r / b i n / s u p e r v i s o r d h ` ` ` 这 是 配 置 文 件 格 式 不 对 , 下 面 是 格 式 简 介 当 n u m p r o c s = 1 时 , p r o c e s s _ n a m e = % ( p r o g r a m _ n a m e ) s 当 n u m p r o c s > = 2 时 , % ( p r o g r a m _ n a m e ) s _ % ( p r o c e s s _ n u m ) 类 似 下 面 的 配 置 ` ` ` [ p r o g r a m : s l e e p t i m e ] a u t o s t a r t = t r u e s t a r t r e t r i e s = 3 c o m m a n d = / o p t / s l e e p t i m e . p y # 主 要 是 下 面 的 2 行 p r o c e s s _ n a m e = % ( p r o g r a m _ n a m e ) s % ( p r o c e s s _ n u m ) s n u m p r o c s = 4 ` ` ` 这 个 时 候 查 看 进 程 状 态 , 会 发 现 有 4 个 进 程 出 现 ` ` ` r o o t @ 0 c 1 f c 2 3 d 1 3 9 8 : / e t c / s u p e r v i s o r / c o n f . d # s u p e r v i s o r c t l s t a t u s s l e e p t i m e : s l e e p t i m e 0 R U N N I N G p i d 1 1 3 9 , u p t i m e 0 : 0 0 : 0 4 s l e e p t i m e : s l e e p t i m e 1 R U N N I N G p i d 1 1 4 0 , u p t i m e 0 : 0 0 : 0 4 s l e e p t i m e : s l e e p t i m e 2 R U N N I N G p i d 1 1 4 1 , u p t i m e 0 : 0 0 : 0 4 s l e e p t i m e : s l e e p t i m e 3 R U N N I N G p i d 1 1 4 2 , u p t i m e 0 : 0 0 : 0 3 w e b s e r v e r R U N N I N G p i d 1 1 2 0 , u p t i m e 0 : 3 0 : 0 0 ` ` ` 2 . 直 接 运 行 s u p e r v i s o r c t l s t a t u s 报 : ` ` ` E r r o r : S e r v e r r e q u i r e s a u t h e n t i c a t i o n F o r h e l p , u s e / u s r / l o c a l / b i n / s u p e r v i s o r c t l h ` ` ` 因 为 你 设 置 访 问 账 号 密 码 , 所 以 只 能 先 s u p e r v i s o r c t l 进 去 , 在 s t a t u s 。 主 要 还 是 看 日 志 信 息 , 和 程 序 本 身 的 日 志 。 [ 1 ] : / i m g / b V b w D e s > 本 文 由 [ s y s t e m o f d o w n ] ( h t t p s : / / w w w . b e s t y i i . c o m / m e m b e r / s y s t e m o f d o w n ) 创 作 , 采 用 [ 知 识 共 享 署 名 3 . 0 中 国 大 陆 许 可 协 议 ] ( h t t p : / / c r e a t i v e c o m m o n s . o r g / l i c e n s e s / b y / 3 . 0 / c n ) 进 行 许 可 。 可 自 由 转 载 、 引 用 , 但 需 署 名 作 者 且 注 明 文 章 出 处 。 c e n t o s 7 1 5 7 4 2 1 2 7 6 6 2 7 3 5 0 0 0 0 0 0 1 9 9 9 1 5 7 4 2 1 2 7 6 6 1 5 9 9 3 9 1 5 7 9 4 b e s t y i i t o p i c 5 3 C e n t O S 7 下 D o c k e r 升 级 到 最 新 版 本 # # 1 、 查 看 系 统 要 求 D o c k e r 要 求 C e n t O S 系 统 的 内 核 版 本 高 于 3 . 1 0 , 查 看 C e n t O S 的 内 核 版 本 。 ` ` ` u n a m e a ` ` ` # # 2 、 删 除 旧 版 本 ` ` ` y u m r e m o v e d o c k e r d o c k e r c o m m o n d o c k e r s e l i n u x d o c k e r e n g i n e ` ` ` # # 3 、 安 装 需 要 的 软 件 包 y u m u t i l 提 供 y u m c o n f i g m a n a g e r 功 能 , 另 外 两 个 是 d e v i c e m a p p e r 驱 动 依 赖 的 ` ` ` s u d o y u m i n s t a l l y y u m u t i l s d e v i c e m a p p e r p e r s i s t e n t d a t a l v m 2 ` ` ` # # 4 、 设 置 D o c k e r y u m 源 ` ` ` s u d o y u m c o n f i g m a n a g e r a d d r e p o h t t p s : / / d o w n l o a d . d o c k e r . c o m / l i n u x / c e n t o s / d o c k e r c e . r e p o ` ` ` 官 方 源 有 可 能 会 很 慢 , 不 愿 意 等 的 把 软 件 仓 库 地 址 替 换 腾 讯 云 的 镜 像 为 : ` ` ` s u d o s e d i s + d o w n l o a d . d o c k e r . c o m + m i r r o r s . c l o u d . t e n c e n t . c o m / d o c k e r c e + / e t c / y u m . r e p o s . d / d o c k e r c e . r e p o ` ` ` 别 忘 了 , 刷 新 y u m 缓 存 ` ` ` s u d o y u m m a k e c a c h e f a s t ` ` ` # # 5 、 查 看 所 有 仓 库 中 所 有 d o c k e r 版 本 可 以 查 看 所 有 仓 库 中 所 有 d o c k e r 版 本 , 并 选 择 特 定 的 版 本 安 装 。 ` ` ` y u m l i s t d o c k e r c e s h o w d u p l i c a t e s | s o r t r ` ` ` # # 6 、 安 装 d o c k e r ` ` ` s u d o y u m i n s t a l l d o c k e r c e ` ` ` 由 于 r e p o 中 默 认 只 开 启 s t a b l e 仓 库 , 故 这 里 安 装 的 是 最 新 稳 d o c k e r c e c l i 1 9 . 0 3 . 1 3 . e l 7 . x 8 6 _ 6 4 。 如 果 要 安 装 特 定 版 本 : ` ` ` s u d o y u m i n s t a l l d o c k e r c e 1 8 . 0 6 . 1 . c e ` ` ` # # 7 、 启 动 设 置 为 开 机 启 动 ` ` ` s y s t e m c t l e n a b l e d o c k e r ` ` ` 启 动 ` ` ` s y s t e m c t l s t a r t d o c k e r ` ` ` 查 看 启 动 状 态 ` ` ` s y s t e m c t l s t a t u s d o c k e r ` ` ` 查 看 版 本 ` ` ` d o c k e r v e r s i o n ` ` ` d o c k e r , c e n t o s 7 1 5 7 4 2 1 3 6 2 5 4 9 4 4 0 0 0 0 0 0 1 9 9 9 1 5 7 4 2 1 3 6 2 5 1 5 8 3 3 0 7 6 1 2 5 b e s t y i i t o p i c 1 1 3 关 于 P H P 文 件 包 含 目 录 配 置 o p e n _ b a s e d i r o p e n _ b a s e d i r 官 方 介 绍 = = = = = = = = = = = = = = = = = o p e n _ b a s e d i r s t r i n g 将 P H P 所 能 打 开 的 文 件 限 制 在 指 定 的 目 录 树 , 包 括 文 件 本 身 。 本 指 令 不 受 安 全 模 式 打 开 或 者 关 闭 的 影 响 。 当 一 个 脚 本 试 图 用 例 如 f o p e n ( ) 或 者 g z o p e n ( ) 打 开 一 个 文 件 时 , 该 文 件 的 位 置 将 被 检 查 。 当 文 件 在 指 定 的 目 录 树 之 外 时 P H P 将 拒 绝 打 开 它 。 所 有 的 符 号 连 接 都 会 被 解 析 , 所 以 不 可 能 通 过 符 号 连 接 来 避 开 此 限 制 。 特 殊 值 . 指 明 脚 本 的 工 作 目 录 将 被 作 为 基 准 目 录 。 但 这 有 些 危 险 , 因 为 脚 本 的 工 作 目 录 可 以 轻 易 被 c h d i r ( ) 而 改 变 。 在 h t t p d . c o n f 文 件 中 中 , o p e n _ b a s e d i r 可 以 像 其 它 任 何 配 置 选 项 一 样 用 “ p h p _ a d m i n _ v a l u e o p e n _ b a s e d i r n o n e ” 的 方 法 关 闭 ( 例 如 某 些 虚 拟 主 机 中 ) 。 在 W i n d o w s 中 , 用 分 号 分 隔 目 录 。 在 任 何 其 它 系 统 中 用 冒 号 分 隔 目 录 。 作 为 A p a c h e 模 块 时 , 父 目 录 中 的 o p e n _ b a s e d i r 路 径 自 动 被 继 承 。 用 o p e n _ b a s e d i r 指 定 的 限 制 实 际 上 是 前 缀 , 不 是 目 录 名 。 也 就 是 说 “ o p e n _ b a s e d i r = / d i r / i n c l ” 也 会 允 许 访 问 “ / d i r / i n c l u d e ” 和 “ / d i r / i n c l s ” , 如 果 它 们 存 在 的 话 。 如 果 要 将 访 问 限 制 在 仅 为 指 定 的 目 录 , 用 斜 线 结 束 路 径 名 。 例 如 : “ o p e n _ b a s e d i r = / d i r / i n c l / ” 。 > N o t e : 支 持 多 个 目 录 是 3 . 0 . 7 加 入 的 。 默 认 是 允 许 打 开 所 有 文 件 。 设 置 限 制 包 含 目 录 = = = = = = = = = = = = = 接 下 来 总 结 下 , 可 以 有 几 种 方 式 设 置 限 制 包 含 目 录 1 . p h p . i n i o p e n _ b a s e d i r = / h o m e / w w w r o o t / 2 . i n i _ s e t 注 意 : P H P > 5 . 2 . 3 + P H P _ I N I _ A L L , 不 建 议 使 用 , 这 么 设 置 太 随 意 了 。 3 . a p a c h e 的 h t t p d . c o n f 中 D i r e c t o r y 配 置 ` ` ` p h p _ a d m i n _ v a l u e o p e n _ b a s e d i r n o n e # 关 闭 p h p _ a d m i n _ v a l u e o p e n _ b a s e d i r / h o m e / w w w r o o t / : / t m p / : / v a r / t m p / : / p r o c / ` ` ` h t t p d . c o n f 中 V i r t u a l H o s t ` ` ` p h p _ a d m i n _ v a l u e o p e n _ b a s e d i r / h o m e / w w w r o o t / : / t m p / : / v a r / t m p / : / p r o c / ` ` ` 4 . n g i n x f a s t c g i . c o n f ` ` ` f a s t c g i _ p a r a m P H P _ V A L U E o p e n _ b a s e d i r = $ d o c u m e n t _ r o o t : / t m p / ; ` ` ` 5 . . u s e r . i n i 文 件 设 置 方 法 同 1 . p h p , 安 全 1 5 7 4 2 1 3 9 3 0 1 7 6 7 0 0 0 0 0 0 1 9 9 9 1 5 7 4 2 1 3 9 3 0 1 5 7 4 2 1 4 0 5 1 6 b e s t y i i t o p i c 5 3 C e n t O S 7 下 y u m 方 式 安 装 M y S Q L 5 . 7 > 在 C e n t O S 中 默 认 安 装 有 M a r i a D B , 这 个 是 M y S Q L 的 分 支 , 但 为 了 需 要 , 还 是 要 在 系 统 中 安 装 M y S Q L , 而 且 安 装 完 成 之 后 可 以 直 接 覆 盖 掉 M a r i a D B 。 # # 准 备 工 作 , 卸 载 M a r i a D B ` ` ` y u m r e m o v e m a r i a d b ` ` ` # # 安 装 M y s q l 5 . 7 # # # 1 . 下 载 并 安 装 M y S Q L 官 方 的 Y u m R e p o s i t o r y 使 用 下 面 的 命 令 就 直 接 下 载 了 安 装 用 的 Y u m R e p o s i t o r y ` ` ` w g e t i c h t t p : / / d e v . m y s q l . c o m / g e t / m y s q l 5 7 c o m m u n i t y r e l e a s e e l 7 1 0 . n o a r c h . r p m ` ` ` 最 新 版 的 参 考 m y s q l 官 方 下 载 地 址 : [ h t t p s : / / d e v . m y s q l . c o m / d o w n l o a d s / r e p o / y u m / ] ( h t t p s : / / d e v . m y s q l . c o m / d o w n l o a d s / r e p o / y u m / ) # # # 2 . 安 装 Y u m R e p o s i t o r y ` ` ` y u m y i n s t a l l m y s q l 5 7 c o m m u n i t y r e l e a s e e l 7 1 0 . n o a r c h . r p m ` ` ` # # # 3 . 安 装 M y S Q L 服 务 这 步 可 能 会 花 些 时 间 , 安 装 完 成 后 就 会 覆 盖 掉 之 前 的 m a r i a d b 。 ` ` ` y u m y i n s t a l l m y s q l c o m m u n i t y s e r v e r ` ` ` # # # 4 . 启 动 M y S Q L 启 动 m y s q l : ` ` ` s y s t e m c t l s t a r t m y s q l d . s e r v i c e ` ` ` 设 置 开 机 启 动 : ` ` ` s y s t e m c t l e n a b l e m y s q l d . s e r v i c e ` ` ` 查 看 M y S Q L 运 行 状 态 : ` ` ` s y s t e m c t l s t a t u s m y s q l d . s e r v i c e ` ` ` # # 初 始 化 m y s q l 超 级 用 户 ` r o o t @ l o c a l h o s t ` 被 创 建 的 时 候 , 同 时 也 设 置 了 默 认 密 码 , 这 个 密 码 明 文 方 式 存 储 在 ` e r r o r l o g ` 文 件 中 . 是 用 下 面 命 令 可 以 快 速 的 找 到 他 . ` ` ` s h e l l > s u d o g r e p t e m p o r a r y p a s s w o r d / v a r / l o g / m y s q l d . l o g ` ` ` 需 要 修 改 密 码 之 后 才 可 以 使 用 。 登 录 m y s q l 修 改 密 码 : ` ` ` s h e l l > m y s q l u r o o t p ` ` ` ` ` ` m y s q l > A L T E R U S E R r o o t @ l o c a l h o s t I D E N T I F I E D B Y M y N e w P a s s 4 ! ; ` ` ` y u m , c e n t o s 7 1 6 8 7 6 7 8 5 4 3 a t 1 4 5 6 3 2 8 2 7 1 9 0 1 0 0 0 0 1 9 9 9 1 5 7 4 2 1 4 3 9 1 1 6 8 7 6 7 8 5 4 3 7 b e s t y i i t o p i c 8 3 Y i i 2 q u e u e 的 队 列 使 用 少 废 话 主 要 看 文 档 [ 官 方 文 档 h t t p s : / / g i t h u b . c o m / y i i s o f t / y i i 2 q u e u e / b l o b / m a s t e r / d o c s / g u i d e / R E A D M E . m d ] ( h t t p s : / / g i t h u b . c o m / y i i s o f t / y i i 2 q u e u e / b l o b / m a s t e r / d o c s / g u i d e / R E A D M E . m d ) y i i 2 q u e u e 的 使 用 = = = = = = = = = = = = = = 1 . 安 装 ` ` ` c o m p o s e r r e q u i r e p r e f e r d i s t y i i s o f t / y i i 2 q u e u e ` ` ` 2 . 配 置 , 在 c o m m o n / c o n f i g / m a i n . p h p 中 配 置 r e d i s 作 为 驱 动 ` ` ` p h p r e t u r n [ b o o t s t r a p = > [ q u e u e , / / 把 这 个 组 件 注 册 到 控 制 台 ] , c o m p o n e n t s = > [ r e d i s = > [ c l a s s = > \ \ y i i \ \ r e d i s \ \ C o n n e c t i o n : : c l a s s , / / . . . ] , q u e u e = > [ c l a s s = > \ \ y i i \ \ q u e u e \ \ r e d i s \ \ Q u e u e : : c l a s s , a s l o g = > \ \ y i i \ \ q u e u e \ \ L o g B e h a v i o r : : c l a s s , / / 错 误 日 志 默 认 为 c o n s o l e / r u n t i m e / l o g s / a p p . l o g r e d i s = > r e d i s , / / 连 接 组 件 或 它 的 配 置 c h a n n e l = > q u e u e , / / Q u e u e c h a n n e l k e y ] , ] , ] ; ` ` ` F i l e 作 为 驱 动 ` ` ` p h p r e t u r n [ b o o t s t r a p = > [ q u e u e , / / 把 这 个 组 件 注 册 到 控 制 台 ] , c o m p o n e n t s = > [ q u e u e = > [ c l a s s = > \ \ y i i \ \ q u e u e \ \ f i l e \ \ Q u e u e : : c l a s s , a s l o g = > \ \ y i i \ \ q u e u e \ \ L o g B e h a v i o r : : c l a s s , / / 错 误 日 志 默 认 为 c o n s o l e / r u n t i m e / l o g s / a p p . l o g p a t h = > @ r u n t i m e / q u e u e , ] , ] , ] ; ` ` ` 3 . 新 建 f r o n t e n d / c o m p o n e n t s / D o w n l o a d J o b ` ` ` p h p c l a s s D o w n l o a d J o b e x t e n d s B a s e O b j e c t i m p l e m e n t s \ \ y i i \ \ q u e u e \ \ J o b I n t e r f a c e } ` ` ` 4 . 控 制 台 控 制 台 用 于 监 听 和 处 理 队 列 任 务 。 c m d 下 监 听 队 列 ` ` ` y i i q u e u e / l i s t e n ` ` ` 5 . 添 加 到 队 列 将 任 务 添 加 到 队 列 : ` ` ` p h p Y i i : : $ a p p q u e u e p u s h ( n e w f r o n t e n d \ \ c o m p o n e n t s \ \ D o w n l o a d J o b ( [ u r l = > h t t p : / / e x a m p l e . c o m / i m a g e . j p g , f i l e = > / t m p / i m a g e . j p g , ] ) ) ; ` ` ` 将 任 务 推 送 到 队 列 中 延 时 5 分 钟 运 行 : ` ` ` p h p Y i i : : $ a p p q u e u e d e l a y ( 5 * 6 0 ) p u s h ( n e w f r o n t e n d \ \ c o m p o n e n t s \ \ D o w n l o a d J o b ( [ u r l = > h t t p : / / e x a m p l e . c o m / i m a g e . j p g , f i l e = > / t m p / i m a g e . j p g , ] ) ) ; ` ` ` 6 . 测 试 执 行 5 中 的 程 序 , 控 制 台 监 听 到 , 便 会 后 台 自 动 下 载 h t t p : / / e x a m p l e . c o m / i m a g e . j p g 到 本 地 为 / t m p / i m a g e . j p g 启 动 w o r k e r = = = = = = = = 可 以 使 用 S u p e r v i s o r 或 S y s t e m d 来 启 动 多 进 程 w o r k e r , 也 可 以 使 用 C r o n , 我 们 这 里 主 要 说 一 下 S u p e r v i s o r c e n t o s 7 s u p e r v i s o r 的 使 用 = = = = = = = = = = = = = = = = = = = = = 1 . 安 装 s u p e r v i s o r ` ` ` y u m u p d a t e y u m i n s t a l l e p e l r e l e a s e y u m i n s t a l l y s u p e r v i s o r # 开 机 启 动 s y s t e m c t l e n a b l e s u p e r v i s o r d # 启 动 s y s t e m c t l s t a r t s u p e r v i s o r d ` ` ` 2 . s u p e r v i s o r 命 令 ` ` ` s u p e r v i s o r c t l s t a t u s 查 看 进 程 状 态 s u p e r v i s o r c t l r e l o a d 重 启 s u p e r v i s o r d s u p e r v i s o r c t l s t a r t | s t o p | r e s t a r t 启 动 关 闭 重 启 进 程 ` ` ` 3 . 添 加 配 置 文 件 S u p e r v i s o r 配 置 文 件 通 常 在 / e t c / s u p e r v i s o r d . d 目 录 下 . 你 可 以 创 建 一 些 配 置 文 件 在 这 里 . * * 注 : 文 件 名 是 . i n i 结 尾 * * 下 面 就 是 个 例 子 : ` ` ` [ p r o g r a m : y i i q u e u e w o r k e r ] p r o c e s s _ n a m e = % ( p r o g r a m _ n a m e ) s _ % ( p r o c e s s _ n u m ) 0 2 d c o m m a n d = / u s r / b i n / p h p / v a r / w w w / m y _ p r o j e c t / y i i q u e u e / l i s t e n v e r b o s e = 1 c o l o r = 0 a u t o s t a r t = t r u e a u t o r e s t a r t = t r u e u s e r = w w w d a t a n u m p r o c s = 4 r e d i r e c t _ s t d e r r = t r u e s t d o u t _ l o g f i l e = / v a r / w w w / m y _ p r o j e c t / l o g / y i i q u e u e w o r k e r . l o g ` ` ` > 本 文 由 [ s y s t e m o f d o w n ] ( h t t p s : / / w w w . b e s t y i i . c o m / m e m b e r / s y s t e m o f d o w n ) 创 作 , 采 用 [ 知 识 共 享 署 名 3 . 0 中 国 大 陆 许 可 协 议 ] ( h t t p : / / c r e a t i v e c o m m o n s . o r g / l i c e n s e s / b y / 3 . 0 / c n ) 进 行 许 可 。 可 自 由 转 载 、 引 用 , 但 需 署 名 作 者 且 注 明 文 章 出 处 。 y i i 2 , c e n t o s 7 1 5 7 4 2 1 4 7 8 2 3 1 0 5 0 0 0 0 0 0 1 9 9 9 1 5 7 4 2 1 4 7 8 2 1 5 7 4 2 1 4 7 8 2 8 b e s t y i i t o p i c 5 3 C e n t O S 7 下 G i t L a b 跨 大 版 本 升 级 备 份 # d e n y a c c e s s i n g p h p f i l e s f o r t h e / a s s e t s d i r e c t o r y l o c a t i o n ~ ^ / a s s e t s / . * \ \ . p h p $ l o c a t i o n ~ \ \ . p h p $ l o c a t i o n ~ * / \ \ . } ` ` ` > 使 用 该 配 置 时 , 你 还 应 该 在 ` p h p . i n i ` 文 件 中 设 置 ` c g i . f i x _ p a t h i n f o = 0 ` , 能 避 免 掉 很 多 不 必 要 的 s t a t ( ) 系 统 调 用 。 > 还 要 注 意 当 运 行 一 个 H T T P S 服 务 器 时 , 需 要 添 加 ` f a s t c g i _ p a r a m H T T P S o n ; ` 一 行 , 这 样 Y i i 才 能 正 确 地 判 断 连 接 是 否 安 全 。 测 试 以 下 配 置 文 件 是 否 正 确 ` ` ` n g i n x t ` ` ` 确 认 无 误 后 , 重 启 N i g n x 使 之 生 效 。 ` ` ` 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 的 多 年 发 展 , 自 身 的 安 全 漏 洞 比 较 少 , 一 般 利 用 软 件 包 管 理 器 ( y u m ) 升 级 一 下 就 好 了 。 现 在 侧 重 讲 述 如 何 利 用 n g i n x 来 加 固 w e b 应 用 , 干 一 些 应 用 防 火 墙 ( W A F ) 干 的 活 。 # # 默 认 参 数 重 置 软 件 本 身 会 有 一 些 默 认 参 数 , 往 往 这 些 参 数 会 暴 露 更 多 的 信 息 , 或 者 留 有 安 全 隐 患 。 所 以 我 们 要 合 理 的 调 整 系 统 参 数 。 # # # 防 止 H o s t 头 攻 击 访 问 网 站 时 如 果 访 问 路 径 中 缺 少 / , 大 多 数 中 间 件 都 会 自 动 将 路 径 补 全 , 返 回 3 0 2 或 3 0 1 跳 转 如 下 图 , L o c a t i o n 位 置 的 域 名 会 使 用 H o s t 头 的 值 。 > 这 种 情 况 实 际 上 风 险 较 低 , 难 以 构 成 H o s t 头 攻 击 。 但 是 由 于 大 多 漏 洞 扫 描 器 会 将 这 种 情 况 检 测 为 H o s t 头 攻 击 , 为 了 通 过 上 级 检 查 或 各 种 审 核 , 大 多 数 甲 方 单 位 会 要 求 修 复 漏 洞 , 彻 底 解 决 问 题 。 添 加 一 个 默 认 s e r v e r , 当 h o s t 头 被 修 改 匹 配 不 到 s e r v e r 时 会 跳 到 该 默 认 s e r v e r , 该 默 认 s e r v e r 直 接 返 回 4 0 3 错 误 。 ` ` ` s e r v e r } ` ` ` # # # 禁 用 a u t o i n d e x 确 保 n g i n x . c o n f 配 置 文 件 上 禁 用 a u t o i n d e x , 即 a u t o i n d e x o f f 或 者 没 有 配 置 a u t o i n d e x 。 # # # 关 闭 服 务 器 标 记 ` s e r v e r _ t o k e n s o f f ; ` 建 议 加 载 全 局 配 置 中 。 如 : ` ` ` h t t p . . . . . . ` ` ` # # # 封 杀 各 种 u s e r a g e n t u s e r a g e n t 也 即 浏 览 器 标 识 , 每 个 正 常 的 w e b 请 求 都 包 含 用 户 的 浏 览 器 信 息 , 除 非 经 过 伪 装 , 恶 意 扫 描 工 具 一 般 都 会 在 u s e r a g e n t 里 留 下 某 些 特 征 字 眼 , 比 如 s c a n , n m a p 等 。 我 们 可 以 用 正 则 匹 配 这 些 字 眼 , 从 而 达 到 过 滤 的 目 的 , 请 根 据 需 要 调 整 。 ` ` ` i f ( $ h t t p _ u s e r _ a g e n t ~ * j a v a | p y t h o n | p e r l | r u b y | c u r l | b a s h | e c h o | u n a m e | b a s e 6 4 | d e c o d e | m d 5 s u m | s e l e c t | c o n c a t | h t t p r e q u e s t | h t t p c l i e n t | n m a p | s c a n ) ` ` ` 这 里 分 析 得 不 够 细 致 , 具 体 的 非 法 u s e r a g e n t 还 得 慢 慢 从 日 志 中 逐 个 提 取 。 # # 封 杀 特 定 的 u r l 特 定 的 文 件 扩 展 名 , 比 如 . b a k ` ` ` l o c a t i o n ~ * \ \ . ( b a k | s a v e | s h | s q l | m d b | s v n | g i t | o l d ) $ ` ` ` 知 名 程 序 , 比 如 p h p m y a d m i n ` ` ` l o c a t i o n / ( a d m i n | p h p a d m i n | s t a t u s ) ` ` ` # # 强 制 网 站 使 用 域 名 访 问 可 以 逃 过 I P 扫 描 , 比 如 ` ` ` i f ( $ h o s t ! ~ * a b c . c o m ) ` ` ` # # u r l 参 数 过 滤 敏 感 字 ` ` ` i f ( $ q u e r y _ s t r i n g ~ * u n i o n . * s e l e c t . * \ \ ( ) i f ( $ q u e r y _ s t r i n g ~ * c o n c a t . * \ \ ( ) ` ` ` 在 头 信 息 中 定 义 安 全 参 数 ` ` ` # S e c u r i t y h e a d e r s a d d _ h e a d e r X F r a m e O p t i o n s S A M E O R I G I N a l w a y s ; a d d _ h e a d e r X X S S P r o t e c t i o n 1 ; m o d e = b l o c k a l w a y s ; a d d _ h e a d e r X C o n t e n t T y p e O p t i o n s n o s n i f f a l w a y s ; a d d _ h e a d e r R e f e r r e r P o l i c y n o r e f e r r e r w h e n d o w n g r a d e a l w a y s ; a d d _ h e a d e r S t r i c t T r a n s p o r t S e c u r i t y m a x a g e = 3 1 5 3 6 0 0 0 ; i n c l u d e S u b D o m a i n s ; p r e l o a d a l w a y s ; a d d _ h e a d e r C o n t e n t S e c u r i t y P o l i c y d e f a u l t s r c s e l f ; s t y l e s r c u n s a f e i n l i n e s e l f ; s c r i p t s r c u n s a f e i n l i n e s e l f * . b e s t y i i . c o m a n a l y s i s . b e s t y i i . c o m * . b a i d u . c o m * . g o o g l e a n a l y t i c s . c o m ; i m g s r c s e l f d a t a : o s s . b e s t y i i . c o m * . b a i d u . c o m * . g o o g l e a n a l y t i c s . c o m ; c o n n e c t s r c s e l f * . b a i d u . c o m ; ; # 按 需 配 置 ` ` ` > 本 文 由 [ e z ] ( h t t p s : / / w w w . b e s t y i i . c o m / m e m b e r / e z ) 创 作 , 采 用 [ 知 识 共 享 署 名 3 . 0 中 国 大 陆 许 可 协 议 ] ( h t t p : / / c r e a t i v e c o m m o n s . o r g / l i c e n s e s / b y / 3 . 0 / c n ) 进 行 许 可 。 可 自 由 转 载 、 引 用 , 但 需 署 名 作 者 且 注 明 文 章 出 处 。 安 全 , n g i n x , y i i 2 1 5 7 4 8 4 9 4 8 3 5 5 7 9 0 0 0 0 0 0 1 9 9 9 1 5 7 4 8 4 9 4 8 3 1 5 7 5 8 7 7 8 8 5 1 5 b e s t y i i t o p i c 5 4 C e n t O S 7 下 搭 建 L N M P 运 行 环 境 ( n g i n x , p h p , m a r i a d b ) # 环 境 搭 建 步 骤 # # 初 步 步 骤 # # # # 1 . 检 查 c e n t o s 版 本 执 行 命 令 ` ` ` c a t / e t c / c e n t o s r e l e a s e ` ` ` 执 行 结 果 ` ` ` # C e n t O S L i n u x r e l e a s e 7 . 6 . 1 8 1 0 ( C o r e ) ` ` ` # # # # 2 . 设 置 时 区 ` ` ` t i m e d a t e c t l l i s t t i m e z o n e s s u d o t i m e d a t e c t l s e t t i m e z o n e A s i a / S h a n g h a i ` ` ` d a t e 命 令 查 看 时 区 ` ` ` d a t e ` ` ` # # # # 3 . 更 新 操 作 系 统 软 件 包 ` ` ` s u d o y u m u p d a t e y ` ` ` 若 执 行 失 败 可 参 考 网 站 ( h t t p s : / / m i r r o r s . t u n a . t s i n g h u a . e d u . c n / h e l p / c e n t o s / ) # # # # 4 . 安 装 C e n t O S 操 作 系 统 基 本 管 理 所 需 的 一 些 基 本 软 件 包 ` ` ` s u d o y u m i n s t a l l y c u r l w g e t v i m g i t u n z i p s o c a t b a s h c o m p l e t i o n e p e l r e l e a s e ` ` ` # # 第 1 步 安 装 P H P 和 必 要 的 P H P 扩 展 # # # # 1 . 设 置 W e b t a t i c Y U M 源 : ` ` ` s u d o r p m U v h h t t p s : / / m i r r o r . w e b t a t i c . c o m / y u m / e l 7 / w e b t a t i c r e l e a s e . r p m ` ` ` # # # # 2 . 安 装 P H P , 以 及 必 要 的 P H P 扩 展 : ` ` ` s u d o y u m i n s t a l l y p h p 7 2 w p h p 7 2 w c l i p h p 7 2 w f p m p h p 7 2 w c o m m o n p h p 7 2 w m b s t r i n g p h p 7 2 w z i p p h p 7 2 w m y s q l p h p 7 2 w s q l i t e 3 p h p 7 2 w c u r l p h p 7 2 w x m l p h p 7 2 g d p h p 7 2 w i n t l ` ` ` 要 显 示 在 模 块 中 编 译 的 P H P , 您 可 以 运 行 : ` ` ` p h p m ` ` ` 运 行 结 果 ` ` ` [ P H P M o d u l e s ] b z 2 c a l e n d a r C o r e c t y p e c u r l d a t e d o m ` ` ` 检 查 P H P 版 本 : ` ` ` p h p v e r s i o n ` ` ` 运 行 结 果 ` ` ` # P H P 7 . 2 . 1 4 ( c l i ) ( b u i l t : J a n 1 2 2 0 1 9 1 2 : 4 7 : 3 3 ) ( N T S ) # C o p y r i g h t ( c ) 1 9 9 7 2 0 1 8 T h e P H P G r o u p # Z e n d E n g i n e v 3 . 0 . 0 , C o p y r i g h t ( c ) 1 9 9 8 2 0 1 7 Z e n d T e c h n o l o g i e s # w i t h Z e n d O P c a c h e v 7 . 2 . 1 4 , C o p y r i g h t ( c ) 1 9 9 9 2 0 1 8 , b y Z e n d T e c h n o l o g i e s ` ` ` # # # # 3 . 启 动 并 启 用 P H P F P M 服 务 : ` ` ` s u d o s y s t e m c t l s t a r t p h p f p m . s e r v i c e s u d o s y s t e m c t l e n a b l e p h p f p m . s e r v i c e ` ` ` 继 续 下 一 步 , 即 数 据 库 安 装 和 设 置 # # 第 2 步 安 装 数 据 库 和 设 置 # # # # 1 . 安 装 数 据 库 服 务 器 ` ` ` s u d o y u m i n s t a l l y m a r i a d b s e r v e r ` ` ` 检 查 数 据 库 版 本 ` ` ` m y s q l v e r s i o n ` ` ` 运 行 结 果 ` ` ` # m y s q l V e r 1 5 . 1 D i s t r i b 5 . 5 . 6 0 M a r i a D B , f o r L i n u x ( x 8 6 _ 6 4 ) u s i n g r e a d l i n e 5 . 1 ` ` ` 如 果 是 远 程 环 境 , 不 需 要 设 置 服 务 启 动 和 密 码 ( 进 行 2 , 3 步 骤 ) # # # # 2 . 启 动 服 务 ` ` ` s u d o s y s t e m c t l s t a r t m a r i a d b . s e r v i c e s u d o s y s t e m c t l e n a b l e m a r i a d b . s e r v i c e ` ` ` # # # # 3 . 数 据 库 密 码 设 置 ` ` ` s u d o m y s q l _ s e c u r e _ i n s t a l l a t i o n ` ` ` 回 答 每 个 问 题 : ` ` ` W o u l d y o u l i k e t o s e t u p V A L I D A T E P A S S W O R D p l u g i n ? N N e w p a s s w o r d : y o u r _ s e c u r e _ p a s s w o r d R e e n t e r n e w p a s s w o r d : y o u r _ s e c u r e _ p a s s w o r d R e m o v e a n o n y m o u s u s e r s ? [ Y / n ] Y D i s a l l o w r o o t l o g i n r e m o t e l y ? [ Y / n ] Y R e m o v e t e s t d a t a b a s e a n d a c c e s s t o i t ? [ Y / n ] Y R e l o a d p r i v i l e g e t a b l e s n o w ? [ Y / n ] Y ` ` ` 以 r o o t 用 户 身 份 连 接 到 m y s q l s h e l l : ` ` ` s u d o m y s q l u r o o t p # E n t e r p a s s w o r d ` ` ` 为 B o l t C M S 创 建 一 个 空 的 M a r i a D B 数 据 库 和 用 户 并 记 住 凭 据 : ` ` ` M a r i a D B > C R E A T E D A T A B A S E d b n a m e ; M a r i a D B > G R A N T A L L O N d b n a m e . * T O u s e r n a m e I D E N T I F I E D B Y p a s s w o r d ; M a r i a D B > F L U S H P R I V I L E G E S ; ` ` ` 退 出 M a r i a D B : ` ` ` M a r i a D B > e x i t ` ` ` 替 换 , 并 用 您 自 己 的 名 字 。 d b n a m e u s e r n a m e p a s s w o r d # # 第 三 步 安 装 n g i n x n g i n x 安 装 参 考 文 档 h t t p : / / n g i n x . o r g / e n / l i n u x _ p a c k a g e s . h t m l # R H E L C e n t O S # # # # 1 . 安 装 y u m u t i l s ` ` ` s u d o y u m i n s t a l l y u m u t i l s ` ` ` # # # # 创 建 一 个 文 件 , / e t c / y u m . r e p o s . d / n g i n x . r e p o 使 用 如 下 内 容 ` ` ` [ n g i n x s t a b l e ] n a m e = n g i n x s t a b l e r e p o b a s e u r l = h t t p : / / n g i n x . o r g / p a c k a g e s / c e n t o s / $ r e l e a s e v e r / $ b a s e a r c h / g p g c h e c k = 1 e n a b l e d = 1 g p g k e y = h t t p s : / / n g i n x . o r g / k e y s / n g i n x _ s i g n i n g . k e y [ n g i n x m a i n l i n e ] n a m e = n g i n x m a i n l i n e r e p o b a s e u r l = h t t p : / / n g i n x . o r g / p a c k a g e s / m a i n l i n e / c e n t o s / $ r e l e a s e v e r / $ b a s e a r c h / g p g c h e c k = 1 e n a b l e d = 0 g p g k e y = h t t p s : / / n g i n x . o r g / k e y s / n g i n x _ s i g n i n g . k e y ` ` ` 安 装 n g i n x ` ` ` s u d o y u m i n s t a l l n g i n x ` ` ` 检 查 n g i n x 的 版 本 ` ` ` n g i n x v ` ` ` 运 行 结 果 ` ` ` # n g i n x v e r s i o n : n g i n x / 1 . 1 2 . 2 ` ` ` # # # # 2 . 启 动 并 启 用 N g i n x 服 务 : ` ` ` s u d o s y s t e m c t l s t a r t n g i n x . s e r v i c e s u d o s y s t e m c t l e n a b l e n g i n x . s e r v i c e ` ` ` # # # # 3 . 通 过 运 行 以 下 命 令 为 P a g e k i t 配 置 N G I N X : ` ` ` s u d o v i m / e t c / n g i n x / c o n f . d / p a g e k i t . c o n f ` ` ` 并 使 用 以 下 配 置 填 充 文 件 : ` ` ` s e r v e r l o c a t i o n ~ \ \ . p h p $ } ` ` ` 如 果 是 y i i 框 架 , 参 考 网 站 h t t p s : / / w w w . y i i c h i n a . c o m / d o c / g u i d e / 2 . 0 / s t a r t i n s t a l l a t i o n 检 查 N G I N X 配 置 是 否 存 在 语 法 错 误 : ` ` ` s u d o n g i n x t ` ` ` # # # # 4 . 重 新 启 动 N G I N X 服 务 : ` ` ` s u d o s y s t e m c t l r e l o a d n g i n x . s e r v i c e ` ` ` 参 考 网 站 h t t p s : / / w w w . h o w t o f o r g e . c o m / h o w t o i n s t a l l p a g e k i t c m s o n c e n t o s 7 / p h p , y u m , n g i n x 1 5 7 4 9 2 4 8 4 5 2 6 6 0 0 0 0 0 0 0 1 9 9 9 1 5 7 4 9 2 4 8 4 5 1 5 7 4 9 2 9 7 7 0 1 6 b e s t y i i t o p i c 5 3 C e n t O S 7 安 装 最 新 版 N o d e J S 1 . 从 官 网 下 下 载 最 新 的 n o d e j s = = 下 载 地 址 : h t t p s : / / n o d e j s . o r g / e n / d o w n l o a d / 这 里 选 择 的 是 L i n u x B i n a r i e s ( x 6 4 ) ! [ ] ( h t t p s : / / s t a t i c s . b e s t y i i . c o m / r Z H 0 H j _ Z 4 J 6 _ a G m O . p n g ) ` ` ` c d / u s r / l o c a l / s r c w g e t h t t p s : / / n o d e j s . o r g / d i s t / v 1 2 . 1 3 . 1 / n o d e v 1 2 . 1 3 . 1 l i n u x x 6 4 . t a r . x z ` ` ` 2 . 解 压 = = ` ` ` t a r x v f n o d e v 1 2 . 1 3 . 1 l i n u x x 6 4 . t a r . x z ` ` ` 3 . 移 动 并 改 名 文 件 夹 = = ` ` ` m v n o d e v 1 2 . 1 3 . 1 l i n u x x 6 4 . . / n o d e j s ` ` ` 4 . 让 n p m 和 n o d e 命 令 全 局 生 效 = = ` ` ` l n s / u s r / l o c a l / n o d e j s / b i n / n p m / u s r / l o c a l / b i n / l n s / u s r / l o c a l / n o d e j s / b i n / n o d e / u s r / l o c a l / b i n / ` ` ` 5 . 查 看 n o d e j s 是 否 安 装 成 功 = = ` ` ` # n o d e v v 1 2 . 1 3 . 1 # n p m v 6 . 1 2 . 1 ` ` ` 大 功 告 成 ! c e n t o s 7 1 5 7 5 1 2 2 7 2 6 6 2 6 2 0 0 0 0 0 0 1 9 9 9 1 5 7 5 1 2 2 7 2 6 1 5 7 5 1 2 3 1 5 4 1 7 b e s t y i i t o p i c 8 3 Y i i 2 下 c o m p o s e r 安 装 本 地 开 发 E x t e n s i o n s ( 扩 展 包 ) 在 开 发 当 中 , 我 们 总 是 想 复 用 代 码 , 降 低 重 复 开 发 的 工 作 。 在 y i i 2 开 发 的 过 程 中 , 用 c o m p o s e r 管 理 依 赖 , 在 开 发 的 时 候 , 官 方 给 出 的 办 法 是 用 ` a l i a s e s ` 定 义 命 名 空 间 的 。 假 设 在 v e n d o r / m y c o m p a n y / m y e x t 目 录 中 安 装 了 一 个 扩 展 , 并 且 扩 展 类 的 命 名 空 间 为 m y e x t , 那 么 你 可 以 在 应 用 配 置 文 件 中 包 含 如 下 代 码 : ` ` ` [ a l i a s e s = > [ @ m y e x t = > @ v e n d o r / m y c o m p a n y / m y e x t , ] , ] ` ` ` 这 种 办 法 很 有 局 限 性 , 如 果 我 们 扩 展 本 身 也 想 引 用 依 赖 , 就 很 麻 烦 , 需 要 在 项 目 中 单 独 安 装 , 并 不 是 和 这 个 扩 展 进 行 关 联 。 使 用 G i i 创 建 扩 展 的 时 候 , 默 认 生 成 了 c o m p o s e r . j s o n , 那 我 们 可 以 把 需 要 的 依 赖 定 义 到 这 个 配 置 文 件 里 。 问 题 来 了 , 这 么 定 义 如 何 载 入 并 使 这 个 配 置 生 效 。 其 实 很 简 单 , 我 们 在 定 义 r e p o s i t o r i e s ( 仓 库 ) 的 时 候 会 有 多 种 模 式 ( 如 : c o m p o s e r , g i t , a r t i f a c t , p a t h 等 ) 。 我 们 只 需 要 在 项 目 的 c o m p o s e r . j s o n 配 置 文 件 中 增 加 对 应 本 地 扩 展 路 径 的 定 义 即 可 ` ` ` , l o c a l : } , p a c k a g i s t : } } ` ` ` > 为 了 开 发 方 便 , 我 们 安 装 的 时 候 采 用 软 连 接 的 形 式 。 避 免 开 发 的 目 录 与 实 际 运 行 的 目 录 文 件 不 能 同 步 。 安 装 需 要 的 扩 展 这 里 需 要 注 意 的 是 , 安 装 的 时 候 版 本 参 数 使 用 ` d e v m a s t e r ` 。 ` ` ` c o m p o s e r r e q u i r e g r a z i o / y i i 2 a d m i n u i : d e v m a s t e r v v v ` ` ` > 本 文 由 [ s y s t e m o f d o w n ] ( h t t p s : / / w w w . b e s t y i i . c o m / m e m b e r / s y s t e m o f d o w n ) 创 作 , 采 用 [ 知 识 共 享 署 名 3 . 0 中 国 大 陆 许 可 协 议 ] ( h t t p : / / c r e a t i v e c o m m o n s . o r g / l i c e n s e s / b y / 3 . 0 / c n ) 进 行 许 可 。 可 自 由 转 载 、 引 用 , 但 需 署 名 作 者 且 注 明 文 章 出 处 。 c o m p o s e r , y i i 2 1 5 7 5 1 3 4 4 3 8 2 2 9 5 0 0 0 0 0 0 1 9 9 9 1 5 7 5 1 3 4 4 3 8 1 5 7 6 1 1 2 5 9 0 1 8 b e s t y i i t o p i c 8 2 N g i n x 下 Y i i 2 程 序 开 启 h t t p 2 及 h t t p 2 _ p u s h 提 速 网 上 有 人 说 , 网 站 用 H T T P 2 推 送 接 口 请 求 极 大 的 加 快 的 网 站 访 问 速 度 。 其 实 也 没 有 什 么 极 大 的 提 速 , 也 就 是 5 % 左 右 。 不 过 积 少 成 多 也 得 干 。 三 步 搞 定 = = = 1 . 配 置 h t t p 2 H T T P 2 和 H T T P S 目 前 所 有 支 持 H T T P / 2 的 浏 览 器 都 是 基 于 T L S 1 . 2 协 议 之 上 构 建 H T T P / 2 的 , 所 以 要 使 用 H T T P / 2 ` 必 须 开 启 H T T P S ` . 开 启 H T T P 2 , 只 需 要 在 S S L 后 面 加 上 就 能 开 启 H T T P 2 . ` ` ` l i s t e n 4 4 3 s s l h t t p 2 ; ` ` ` 2 . 安 装 扩 展 y i i 2 h t t p 2 s e r v e r p u s h [ y i i 2 h t t p 2 s e r v e r p u s h ] ( h t t p s : / / g i t h u b . c o m / D e v G r o u p r u / y i i 2 h t t p 2 s e r v e r p u s h y i i 2 h t t p 2 s e r v e r p u s h ) , 其 功 能 是 自 动 解 析 页 面 中 可 以 被 推 送 的 文 件 , 并 把 L I N K 信 息 加 入 到 响 应 头 中 。 ` ` ` p h p c o m p o s e r . p h a r r e q u i r e d e v g r o u p / y i i 2 h t t p 2 s e r v e r p u s h ` ` ` 3 . n g i n x 中 开 启 h t t p 2 _ p u s h _ p r e l o a d 指 令 ` ` ` s e r v e r ` ` ` 用 c h r o m e 确 认 过 眼 神 , 就 是 他 没 错 的 。 ! [ 添 加 头 信 息 ] ( h t t p s : / / s t a t i c s . b e s t y i i . c o m / a J K x H k h R W b _ W Z v L F . p n g 添 加 头 信 息 ) ! [ P U S H 传 输 ] ( h t t p s : / / s t a t i c s . b e s t y i i . c o m / T 5 L v N e 6 f r D p Z Y g v . p n g ) 百 因 必 有 果 = = = = 原 理 很 简 单 , 减 少 请 求 次 数 , 利 用 P u s h 这 个 机 制 。 N g i n x 1 . 1 3 . 9 就 增 加 了 H T T P 2 _ P u s h 支 持 。 N g i n x 开 启 H T T P 2 推 送 有 两 种 方 法 。 1 . h t t p 2 _ p u s h 指 令 强 制 推 送 某 U R L 。 ` ` ` l o c a t i o n / ` ` ` 这 个 方 法 太 硬 了 , 我 们 需 要 灵 活 一 点 。 所 以 这 个 方 法 不 是 今 天 的 讨 论 重 点 。 2 . h t t p 2 _ p u s h _ p r e l o a d 指 令 N g i n x 会 解 析 预 加 载 L i n k 头 动 态 的 推 送 某 U R L 。 ` ` ` s e r v e r } ` ` ` > 本 文 由 [ e z ] ( h t t p s : / / w w w . b e s t y i i . c o m / m e m b e r / e z ) 创 作 , 采 用 [ 知 识 共 享 署 名 3 . 0 中 国 大 陆 许 可 协 议 ] ( h t t p : / / c r e a t i v e c o m m o n s . o r g / l i c e n s e s / b y / 3 . 0 / c n ) 进 行 许 可 。 可 自 由 转 载 、 引 用 , 但 需 署 名 作 者 且 注 明 文 章 出 处 。 n g i n x , y i i 2 1 5 7 5 3 4 2 3 2 7 2 2 0 6 0 0 0 0 0 0 1 9 9 9 1 5 7 5 3 4 2 3 2 7 1 5 7 5 3 4 2 4 6 3 1 9 b e s t y i i t o p i c 9 1 H t m l 5 中 图 片 利 用 i m g 标 签 s r c s e t 属 性 做 r e t i n a 屏 幕 适 配 ` s r c s e t ` 属 性 = = = 下 面 是 图 片 ( i m g ) 元 素 , 同 时 包 含 了 s r c 和 s r c s e t 属 性 . 当 浏 览 器 不 支 持 ` s r c s e t ` 属 性 的 时 候 ` s r c ` 属 性 的 值 作 为 默 认 图 片 . 标 准 分 辨 率 的 时 候 , s r c s e t 属 性 中 , 1 x 变 量 对 应 的 图 片 将 作 为 [ 1 倍 图 片 ] . 当 屏 幕 显 示 每 个 C S S 像 素 使 用 2 倍 设 备 像 素 时 , 2 x v 变 量 对 应 的 图 片 将 作 为 [ 2 倍 图 片 ] . 同 理 , 这 里 还 设 置 了 3 x 和 4 x 的 图 片 . ` ` ` h t m l ` ` ` 参 考 文 档 : 1 . [ w e b k i t : T h e s r c s e t A t t r i b u t e . ] ( h t t p s : / / w e b k i t . o r g / d e m o s / s r c s e t / ) 2 . [ W h a t I m g S r c s e t D o e s I n H T M L 5 : A Q u i c k ` ` ` 如 何 使 用 = = 写 入 文 件 写 入 字 符 串 到 文 件 ` ` ` Y i i : : $ a p p f s w r i t e ( f i l e n a m e . e x t , c o n t e n t s ) ; ` ` ` 使 用 文 档 流 方 式 写 入 文 件 ` ` ` $ s t r e a m = f o p e n ( / p a t h / t o / s o m e f i l e . e x t , r + ) ; Y i i : : $ a p p f s w r i t e S t r e a m ( f i l e n a m e . e x t , $ s t r e a m ) ; ` ` ` 更 新 文 件 T o u p d a t e f i l e ` ` ` Y i i : : $ a p p f s u p d a t e ( f i l e n a m e . e x t , c o n t e n t s ) ; ` ` ` T o u p d a t e f i l e u s i n g s t r e a m c o n t e n t s ` ` ` $ s t r e a m = f o p e n ( / p a t h / t o / s o m e f i l e . e x t , r + ) ; Y i i : : $ a p p f s u p d a t e S t r e a m ( f i l e n a m e . e x t , $ s t r e a m ) ; ` ` ` 写 入 或 更 新 T o w r i t e o r u p d a t e f i l e ` ` ` Y i i : : $ a p p f s p u t ( f i l e n a m e . e x t , c o n t e n t s ) ; ` ` ` T o w r i t e o r u p d a t e f i l e u s i n g s t r e a m c o n t e n t s ` ` ` $ s t r e a m = f o p e n ( / p a t h / t o / s o m e f i l e . e x t , r + ) ; Y i i : : $ a p p f s p u t S t r e a m ( f i l e n a m e . e x t , $ s t r e a m ) ; ` ` ` 读 取 文 件 T o r e a d f i l e ` ` ` $ c o n t e n t s = Y i i : : $ a p p f s r e a d ( f i l e n a m e . e x t ) ; ` ` ` T o r e t r i e v e a r e a d s t r e a m ` ` ` $ s t r e a m = Y i i : : $ a p p f s r e a d S t r e a m ( f i l e n a m e . e x t ) ; $ c o n t e n t s = s t r e a m _ g e t _ c o n t e n t s ( $ s t r e a m ) ; f c l o s e ( $ s t r e a m ) ; ` ` ` 检 查 文 件 是 否 存 在 T o c h e c k i f a f i l e e x i s t s ` ` ` $ e x i s t s = Y i i : : $ a p p f s h a s ( f i l e n a m e . e x t ) ; ` ` ` 删 除 文 件 T o d e l e t e f i l e ` ` ` Y i i : : $ a p p f s d e l e t e ( f i l e n a m e . e x t ) ; ` ` ` 读 取 后 并 删 除 文 件 T o r e a d a n d d e l e t e f i l e ` ` ` $ c o n t e n t s = Y i i : : $ a p p f s r e a d A n d D e l e t e ( f i l e n a m e . e x t ) ; ` ` ` 文 件 重 命 名 T o r e n a m e f i l e ` ` ` Y i i : : $ a p p f s r e n a m e ( f i l e n a m e . e x t , n e w n a m e . e x t ) ; ` ` ` 还 有 更 多 请 参 考 文 档 吧 h t t p s : / / g i t h u b . c o m / c r e o c o d e r / y i i 2 f l y s y s t e m > 本 文 由 [ e z ] ( h t t p s : / / w w w . b e s t y i i . c o m / m e m b e r / e z ) 创 作 , 采 用 [ 知 识 共 享 署 名 3 . 0 中 国 大 陆 许 可 协 议 ] ( h t t p : / / c r e a t i v e c o m m o n s . o r g / l i c e n s e s / b y / 3 . 0 / c n ) 进 行 许 可 。 可 自 由 转 载 、 引 用 , 但 需 署 名 作 者 且 注 明 文 章 出 处 。 对 象 存 储 , M i n I O , F l y s y s t e m , y i i 2 1 5 7 5 8 7 9 5 1 9 2 4 0 5 0 0 0 0 0 0 1 9 9 9 1 5 7 5 8 7 9 5 1 9 1 5 8 1 6 1 4 1 7 8 h t t p s : / / w w w . p h p d e p l o y e r . c o m / ? p a g e = 1 h t t p s : / / w w w . p h p d e p l o y e r . c o m / ? p a g e = 1 h t t p s : / / w w w . p h p d e p l o y e r . c o m / ? p a g e = 1 0 h t t p s : / / w w w . p h p d e p l o y e r . c o m / ? p a g e = 2 1 8 5 1 0 1 2 0