[{"data":1,"prerenderedAt":294},["ShallowReactive",2],{"page-/post/imgx/pm2-with-bun-x":3,"surrounding-page":285},{"id":4,"title":5,"author":6,"body":7,"date":272,"description":273,"extension":274,"group":6,"lastmod":272,"meta":275,"navigation":276,"path":277,"rawbody":278,"seo":279,"showTitle":6,"stem":280,"tags":281,"versions":6,"__hash__":284},"content/post/imgx/pm2-with-bun-x.md","使用 pm2 启动 ipx 服务(bun运行时)",null,{"type":8,"value":9,"toc":270},"minimark",[10,23,26,37,44,76,87,250,259,266],[11,12,13,14,18,19,22],"p",{},"在给 ",[15,16,17],"code",{},"imgx"," 的预设静态化图片启动服务时，我使用了 ",[15,20,21],{},"unjs/ipx"," 来作为图片服务，这样可以直接进行格式转换和裁剪",[11,24,25],{},"后续图片操作（x）也必然涉及到要先把图片存储再操作，所以还是单独启动一个服务罢了",[11,27,28,29,32,33,36],{},"考虑到 ",[15,30,31],{},"bun"," 的吞吐量要比 ",[15,34,35],{},"node"," 大一些",[11,38,39,40,43],{},"于是使用此命令来启动 ",[15,41,42],{},"ipx"," 服务",[45,46,51],"pre",{"className":47,"code":48,"language":49,"meta":50,"style":50},"language-shell shiki shiki-themes github-light","bunx ipx serve --dir ./public\n","shell","",[15,52,53],{"__ignoreMap":50},[54,55,58,62,66,69,73],"span",{"class":56,"line":57},"line",1,[54,59,61],{"class":60},"s7eDp","bunx",[54,63,65],{"class":64},"sYBdl"," ipx",[54,67,68],{"class":64}," serve",[54,70,72],{"class":71},"sYu0t"," --dir",[54,74,75],{"class":64}," ./public\n",[11,77,78,79,82,83,86],{},"对应到 ",[15,80,81],{},"pm2"," 的 ",[15,84,85],{},"config.yml"," 上配置为",[45,88,92],{"className":89,"code":90,"language":91,"meta":50,"style":50},"language-yaml shiki shiki-themes github-light","apps:\n  - name: imgx-nitro\n    script: ./server/index.mjs\n    interpreter: node\n    exec_mode: fork\n    env:\n      PORT: 1234\n  - name: imgx-ipx\n    script: bunx\n    args: [\"ipx\", \"serve\", \"--dir\", \"./public\"]\n    exec_mode: fork\n    env:\n      PORT: 5678\n","yaml",[15,93,94,104,119,130,141,152,160,171,183,193,224,233,240],{"__ignoreMap":50},[54,95,96,100],{"class":56,"line":57},[54,97,99],{"class":98},"shJU0","apps",[54,101,103],{"class":102},"sgsFI",":\n",[54,105,107,110,113,116],{"class":56,"line":106},2,[54,108,109],{"class":102},"  - ",[54,111,112],{"class":98},"name",[54,114,115],{"class":102},": ",[54,117,118],{"class":64},"imgx-nitro\n",[54,120,122,125,127],{"class":56,"line":121},3,[54,123,124],{"class":98},"    script",[54,126,115],{"class":102},[54,128,129],{"class":64},"./server/index.mjs\n",[54,131,133,136,138],{"class":56,"line":132},4,[54,134,135],{"class":98},"    interpreter",[54,137,115],{"class":102},[54,139,140],{"class":64},"node\n",[54,142,144,147,149],{"class":56,"line":143},5,[54,145,146],{"class":98},"    exec_mode",[54,148,115],{"class":102},[54,150,151],{"class":64},"fork\n",[54,153,155,158],{"class":56,"line":154},6,[54,156,157],{"class":98},"    env",[54,159,103],{"class":102},[54,161,163,166,168],{"class":56,"line":162},7,[54,164,165],{"class":98},"      PORT",[54,167,115],{"class":102},[54,169,170],{"class":71},"1234\n",[54,172,174,176,178,180],{"class":56,"line":173},8,[54,175,109],{"class":102},[54,177,112],{"class":98},[54,179,115],{"class":102},[54,181,182],{"class":64},"imgx-ipx\n",[54,184,186,188,190],{"class":56,"line":185},9,[54,187,124],{"class":98},[54,189,115],{"class":102},[54,191,192],{"class":64},"bunx\n",[54,194,196,199,202,205,208,211,213,216,218,221],{"class":56,"line":195},10,[54,197,198],{"class":98},"    args",[54,200,201],{"class":102},": [",[54,203,204],{"class":64},"\"ipx\"",[54,206,207],{"class":102},", ",[54,209,210],{"class":64},"\"serve\"",[54,212,207],{"class":102},[54,214,215],{"class":64},"\"--dir\"",[54,217,207],{"class":102},[54,219,220],{"class":64},"\"./public\"",[54,222,223],{"class":102},"]\n",[54,225,227,229,231],{"class":56,"line":226},11,[54,228,146],{"class":98},[54,230,115],{"class":102},[54,232,151],{"class":64},[54,234,236,238],{"class":56,"line":235},12,[54,237,157],{"class":98},[54,239,103],{"class":102},[54,241,243,245,247],{"class":56,"line":242},13,[54,244,165],{"class":98},[54,246,115],{"class":102},[54,248,249],{"class":71},"5678\n",[11,251,252,253,255,256,258],{},"注意不需要指定 ",[15,254,31],{}," ，直接使用 ",[15,257,61],{}," 即可",[11,260,261,262,265],{},"系统为 ",[15,263,264],{},"Debian12.0"," ，供诸君参考",[267,268,269],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}",{"title":50,"searchDepth":106,"depth":106,"links":271},[],"2025-04-08T00:00:00.000Z","在给 imgx 的预设静态化图片启动服务时，我使用了 unjs/ipx 来作为图片服务，这样可以直接进行格式转换和裁剪","md",{},true,"/post/imgx/pm2-with-bun-x","---\ntitle: 使用 pm2 启动 ipx 服务(bun运行时)\ndate: 2025-04-08\nlastmod: 2025-04-08\ntags: [\"IMGX\", \"Bun\"]\n\n---\n在给 `imgx` 的预设静态化图片启动服务时，我使用了 `unjs/ipx` 来作为图片服务，这样可以直接进行格式转换和裁剪\n\n后续图片操作（x）也必然涉及到要先把图片存储再操作，所以还是单独启动一个服务罢了\n\n考虑到 `bun` 的吞吐量要比 `node` 大一些\n\n于是使用此命令来启动 `ipx` 服务\n\n```shell\nbunx ipx serve --dir ./public\n```\n\n对应到 `pm2` 的 `config.yml` 上配置为\n\n```yaml\napps:\n  - name: imgx-nitro\n    script: ./server/index.mjs\n    interpreter: node\n    exec_mode: fork\n    env:\n      PORT: 1234\n  - name: imgx-ipx\n    script: bunx\n    args: [\"ipx\", \"serve\", \"--dir\", \"./public\"]\n    exec_mode: fork\n    env:\n      PORT: 5678\n```\n\n注意不需要指定 `bun` ，直接使用 `bunx` 即可\n\n系统为 `Debian12.0` ，供诸君参考",{"title":5,"description":273},"post/imgx/pm2-with-bun-x",[282,283],"IMGX","Bun","eDqQoW4JbHuGN-6XoNwc3a3U-7tLzruf0H6IeSH3qQk",[286,290],{"title":287,"path":288,"stem":289},"OpenClaw 安装入门（Windows）","/post/zzao/openclaw/openclaw-install-windows","post/zzao/openclaw/openclaw-install-windows",{"title":291,"path":292,"stem":293},"假设你是AI，你的Skill应该是什么样的","/post/zzao/ai-skill-structure","post/zzao/ai-skill-structure",1779005085862]