119 lines
43 KiB
JSON
119 lines
43 KiB
JSON
{
|
||
"version": "https://jsonfeed.org/version/1",
|
||
"title": "Hito的公告栏",
|
||
"subtitle": "天下事有难易乎?为之,则难者亦易矣",
|
||
"icon": "https://blog.jingxiyuan.cn/images/favicon.ico",
|
||
"description": "hito的博客",
|
||
"home_page_url": "https://blog.jingxiyuan.cn",
|
||
"items": [
|
||
{
|
||
"id": "https://blog.jingxiyuan.cn/2022/09/27/nginx%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E9%85%8D%E7%BD%AE/",
|
||
"url": "https://blog.jingxiyuan.cn/2022/09/27/nginx%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E9%85%8D%E7%BD%AE/",
|
||
"title": "nginx负载均衡配置",
|
||
"date_published": "2022-09-27T06:45:00.000Z",
|
||
"content_html": "<h2 id=\"nginx负载均衡配置\"><a class=\"anchor\" href=\"#nginx负载均衡配置\">#</a> nginx 负载均衡配置</h2>\n<ol>\n<li>轮询(默认)</li>\n</ol>\n<p> <em>每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。</em></p>\n<pre><code class=\"language-yum\">upstream my_server {\n\tserver 192.168.0.2:8080;\n\tserver 192.168.0.3:8080;\n}\n\nserver {\n\tlisten 80;\n\tserver_name 192.168.0.1;\n\n\t# Path to the root of your installation\n\tlocation / {\n\t\tproxy_pass http://my_server;\n\t}\n\t\n}\n</code></pre>\n<ol start=\"2\">\n<li>weight 权重策略</li>\n</ol>\n<p> <em>weight 代表权重,默认为 1,权重越高被分配的客户端越多,指定轮询几率。weight 和访问比率成正比,用于后端服务器性能不均的情况。</em></p>\n<pre><code class=\"language-yum\">upstream my_server {\n\tserver 192.168.0.2:8080 weight=1;\n\tserver 192.168.0.3:8080 weight=2;\n}\n\nserver {\n\tlisten 80;\n\tserver_name 192.168.0.1;\n\n\t# Path to the root of your installation\n\tlocation / {\n\t\tproxy_pass http://my_server;\n\t}\n\t\n}\n</code></pre>\n<ol start=\"3\">\n<li>ip_hash</li>\n</ol>\n<p> <em>每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。</em></p>\n<pre><code class=\"language-yum\">upstream my_server {\n\tip_hash;\n\tserver 192.168.0.2:8080;\n\tserver 192.168.0.3:8080;\n}\n\nserver {\n\tlisten 80;\n\tserver_name 192.168.0.1;\n\n\t# Path to the root of your installation\n\tlocation / {\n\t\tproxy_pass http://my_server;\n\t}\n\t\n}\n</code></pre>\n<ol start=\"4\">\n<li>fair (第三方)</li>\n</ol>\n<p> <em>按后端服务器的响应时间来分配请求,响应时间短的优先分配。</em></p>\n<pre><code class=\"language-yum\">upstream my_server {\n\tserver 192.168.0.2:8080;\n\tserver 192.168.0.3:8080;\n\tfair;\n}\n\nserver {\n\tlisten 80;\n\tserver_name 192.168.0.1;\n\n\t# Path to the root of your installation\n\tlocation / {\n\t\tproxy_pass http://my_server;\n\t}\n\t\n}\n</code></pre>\n<ol start=\"5\">\n<li>动静分离</li>\n</ol>\n<p> <em>把静态的资源,比如图片,css,js 等先加载到 Nginx 的服务器里。</em></p>\n",
|
||
"tags": [
|
||
"技术分享",
|
||
"nginx",
|
||
"负载均衡"
|
||
]
|
||
},
|
||
{
|
||
"id": "https://blog.jingxiyuan.cn/2022/09/26/%E8%A7%A3%E5%86%B3Hexo-Shoka%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90%E6%97%A0%E6%B3%95%E6%92%AD%E6%94%BE%E7%9A%84%E9%97%AE%E9%A2%98/",
|
||
"url": "https://blog.jingxiyuan.cn/2022/09/26/%E8%A7%A3%E5%86%B3Hexo-Shoka%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90%E6%97%A0%E6%B3%95%E6%92%AD%E6%94%BE%E7%9A%84%E9%97%AE%E9%A2%98/",
|
||
"title": "解决Hexo+Shoka背景音乐无法播放的问题",
|
||
"date_published": "2022-09-26T11:30:00.000Z",
|
||
"content_html": "<p><em> 今天突然发现博客的音乐无法播放了。经过一顿查找,发现是因为 https://api.i-meto.com/meting/api 调用出错了。shoka 主题应该是通过这个网站提取音乐地址、图片等信息。通过断点发现网易播放列表还是能正常获取的,只是列表中的具体音乐、图片无法获取了。于是自己用获取的列表信息组装出正确的 url 问题基本解决。只针对网易播放列表,图片只能使用一张固定的。</em></p>\n<p><em> 解决方法如下:</em></p>\n<p><em> 到 themes\\shoka\\source\\js_app 目录下打开 player.js 文件,在最底部 init (config) 下加入 vendorJs ('fancybox');,然后找到 56 行用下面的代码替换即可。</em></p>\n<figure class=\"highlight js\"><figcaption data-lang=\"JavaScript\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token function-variable function\">fetch</span><span class=\"token operator\">:</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">source</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre> <span class=\"token keyword\">var</span> list <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span></pre></td></tr><tr><td data-num=\"3\"></td><td><pre></pre></td></tr><tr><td data-num=\"4\"></td><td><pre> <span class=\"token keyword\">return</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Promise</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">resolve<span class=\"token punctuation\">,</span> reject</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"5\"></td><td><pre> source<span class=\"token punctuation\">.</span><span class=\"token function\">forEach</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">raw</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"6\"></td><td><pre> <span class=\"token keyword\">var</span> meta <span class=\"token operator\">=</span> utils<span class=\"token punctuation\">.</span><span class=\"token function\">parse</span><span class=\"token punctuation\">(</span>raw<span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"7\"></td><td><pre> <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>meta<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"8\"></td><td><pre> <span class=\"token keyword\">var</span> skey <span class=\"token operator\">=</span> <span class=\"token constant\">JSON</span><span class=\"token punctuation\">.</span><span class=\"token function\">stringify</span><span class=\"token punctuation\">(</span>meta<span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"9\"></td><td><pre> <span class=\"token keyword\">var</span> playlist <span class=\"token operator\">=</span> store<span class=\"token punctuation\">.</span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span>skey<span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"10\"></td><td><pre> <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>playlist<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"11\"></td><td><pre>\t\t\t <span class=\"token comment\">// 自己修改 - start</span></pre></td></tr><tr><td data-num=\"12\"></td><td><pre>\t\t\t <span class=\"token keyword\">var</span> audioInfos <span class=\"token operator\">=</span> <span class=\"token constant\">JSON</span><span class=\"token punctuation\">.</span><span class=\"token function\">parse</span><span class=\"token punctuation\">(</span>playlist<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"13\"></td><td><pre>\t\t\t <span class=\"token keyword\">var</span> neteaseStartUrl <span class=\"token operator\">=</span> <span class=\"token string\">\"https://music.163.com/song/media/outer/url?id=\"</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"14\"></td><td><pre>\t\t\t <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>meta<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token string\">\"netease\"</span> <span class=\"token operator\">&&</span> audioInfos <span class=\"token operator\">&&</span> audioInfos<span class=\"token punctuation\">.</span>length<span class=\"token operator\">></span><span class=\"token number\">0</span> <span class=\"token operator\">&&</span> <span class=\"token operator\">!</span>audioInfos<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>url<span class=\"token punctuation\">.</span><span class=\"token function\">startsWith</span><span class=\"token punctuation\">(</span>neteaseStartUrl<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token comment\">// 如果是网易音乐就自己构建 url</span></pre></td></tr><tr><td data-num=\"15\"></td><td><pre>\t\t\t\t jQuery<span class=\"token punctuation\">.</span><span class=\"token function\">ajax</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"16\"></td><td><pre>\t\t\t\t\t <span class=\"token literal-property property\">url</span><span class=\"token operator\">:</span> audioInfos<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>url<span class=\"token punctuation\">,</span></pre></td></tr><tr><td data-num=\"17\"></td><td><pre>\t\t\t\t\t <span class=\"token literal-property property\">type</span><span class=\"token operator\">:</span> <span class=\"token string\">'get'</span><span class=\"token punctuation\">,</span></pre></td></tr><tr><td data-num=\"18\"></td><td><pre>\t\t\t\t\t <span class=\"token literal-property property\">async</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span><span class=\"token punctuation\">,</span></pre></td></tr><tr><td data-num=\"19\"></td><td><pre>\t\t\t\t\t <span class=\"token literal-property property\">timeout</span><span class=\"token operator\">:</span> <span class=\"token number\">5000</span><span class=\"token punctuation\">,</span></pre></td></tr><tr><td data-num=\"20\"></td><td><pre>\t\t\t\t\t <span class=\"token function-variable function\">complete</span> <span class=\"token operator\">:</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">XMLHttpRequest<span class=\"token punctuation\">,</span> status</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"21\"></td><td><pre>\t\t\t\t\t\t <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>XMLHttpRequest<span class=\"token punctuation\">.</span>status <span class=\"token operator\">!=</span> <span class=\"token number\">200</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"22\"></td><td><pre>\t\t\t\t\t\t\t audioInfos<span class=\"token punctuation\">.</span><span class=\"token function\">forEach</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">audioInfo</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"23\"></td><td><pre>\t\t\t\t\t\t\t\t <span class=\"token keyword\">var</span> id <span class=\"token operator\">=</span> audioInfo<span class=\"token punctuation\">.</span>url<span class=\"token punctuation\">.</span><span class=\"token function\">substring</span><span class=\"token punctuation\">(</span>audioInfo<span class=\"token punctuation\">.</span>url<span class=\"token punctuation\">.</span><span class=\"token function\">indexOf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"id=\"</span><span class=\"token punctuation\">)</span><span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">,</span> audioInfo<span class=\"token punctuation\">.</span>url<span class=\"token punctuation\">.</span><span class=\"token function\">indexOf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"&auth=\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"24\"></td><td><pre>\t\t\t\t\t\t\t\t audioInfo<span class=\"token punctuation\">.</span>url <span class=\"token operator\">=</span> neteaseStartUrl <span class=\"token operator\">+</span> id<span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"25\"></td><td><pre>\t\t\t\t\t\t\t\t audioInfo<span class=\"token punctuation\">.</span>pic <span class=\"token operator\">=</span> <span class=\"token string\">\"https://p3.music.126.net/Vji3PQJAZ2C7gS_6X51NFQ==/109951164723650033.jpg?param=200y200\"</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"26\"></td><td><pre>\t\t\t\t\t\t\t <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"27\"></td><td><pre>\t\t\t\t\t\t <span class=\"token punctuation\">}</span></pre></td></tr><tr><td data-num=\"28\"></td><td><pre>\t\t\t\t\t\t list<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">.</span><span class=\"token function\">apply</span><span class=\"token punctuation\">(</span>list<span class=\"token punctuation\">,</span> audioInfos<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"29\"></td><td><pre>\t\t\t\t\t\t <span class=\"token function\">resolve</span><span class=\"token punctuation\">(</span>list<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"30\"></td><td><pre>\t\t\t\t\t\t window<span class=\"token punctuation\">[</span><span class=\"token string\">'fancybox'</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"31\"></td><td><pre>\t\t\t\t\t <span class=\"token punctuation\">}</span></pre></td></tr><tr><td data-num=\"32\"></td><td><pre>\t\t\t\t <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"33\"></td><td><pre>\t\t\t <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"34\"></td><td><pre>\t\t\t\t list<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">.</span><span class=\"token function\">apply</span><span class=\"token punctuation\">(</span>list<span class=\"token punctuation\">,</span> audioInfos<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"35\"></td><td><pre>\t\t\t\t <span class=\"token function\">resolve</span><span class=\"token punctuation\">(</span>list<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"36\"></td><td><pre>\t\t\t <span class=\"token punctuation\">}</span></pre></td></tr><tr><td data-num=\"37\"></td><td><pre>\t\t\t <span class=\"token comment\">// 自己修改 - end</span></pre></td></tr><tr><td data-num=\"38\"></td><td><pre> <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"39\"></td><td><pre> <span class=\"token function\">fetch</span><span class=\"token punctuation\">(</span><span class=\"token string\">'https://api.i-meto.com/meting/api?server='</span><span class=\"token operator\">+</span>meta<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token operator\">+</span><span class=\"token string\">'&type='</span><span class=\"token operator\">+</span>meta<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token operator\">+</span><span class=\"token string\">'&id='</span><span class=\"token operator\">+</span>meta<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token operator\">+</span><span class=\"token string\">'&r='</span><span class=\"token operator\">+</span> Math<span class=\"token punctuation\">.</span><span class=\"token function\">random</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"40\"></td><td><pre> <span class=\"token punctuation\">.</span><span class=\"token function\">then</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">response</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"41\"></td><td><pre> <span class=\"token keyword\">return</span> response<span class=\"token punctuation\">.</span><span class=\"token function\">json</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"42\"></td><td><pre> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">then</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">json</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"43\"></td><td><pre> store<span class=\"token punctuation\">.</span><span class=\"token function\">set</span><span class=\"token punctuation\">(</span>skey<span class=\"token punctuation\">,</span> <span class=\"token constant\">JSON</span><span class=\"token punctuation\">.</span><span class=\"token function\">stringify</span><span class=\"token punctuation\">(</span>json<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"44\"></td><td><pre> list<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">.</span><span class=\"token function\">apply</span><span class=\"token punctuation\">(</span>list<span class=\"token punctuation\">,</span> json<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"45\"></td><td><pre> <span class=\"token function\">resolve</span><span class=\"token punctuation\">(</span>list<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"46\"></td><td><pre> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">catch</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">ex</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"47\"></td><td><pre> <span class=\"token punctuation\">}</span></pre></td></tr><tr><td data-num=\"48\"></td><td><pre> <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span></pre></td></tr><tr><td data-num=\"49\"></td><td><pre> list<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span>raw<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"50\"></td><td><pre> <span class=\"token function\">resolve</span><span class=\"token punctuation\">(</span>list<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></pre></td></tr><tr><td data-num=\"51\"></td><td><pre> <span class=\"token punctuation\">}</span></pre></td></tr><tr><td data-num=\"52\"></td><td><pre> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"53\"></td><td><pre> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span></pre></td></tr><tr><td data-num=\"54\"></td><td><pre> <span class=\"token punctuation\">}</span></pre></td></tr></table></figure>",
|
||
"tags": [
|
||
"技术分享",
|
||
"博客",
|
||
"Hexo",
|
||
"Shoka",
|
||
"背景音乐"
|
||
]
|
||
},
|
||
{
|
||
"id": "https://blog.jingxiyuan.cn/2022/09/23/%E8%A7%A3%E5%86%B3%E5%9F%9F%E5%90%8Dip%E5%8F%98%E5%8A%A8%E5%90%8E%E9%9C%80%E8%A6%81%E9%87%8D%E5%90%AFnginx%E7%9A%84%E9%97%AE%E9%A2%98/",
|
||
"url": "https://blog.jingxiyuan.cn/2022/09/23/%E8%A7%A3%E5%86%B3%E5%9F%9F%E5%90%8Dip%E5%8F%98%E5%8A%A8%E5%90%8E%E9%9C%80%E8%A6%81%E9%87%8D%E5%90%AFnginx%E7%9A%84%E9%97%AE%E9%A2%98/",
|
||
"title": "解决域名ip变动后需要重启nginx的问题",
|
||
"date_published": "2022-09-23T08:17:00.000Z",
|
||
"content_html": "<p><em>今天突然发现自己的网站不能访问了。经过一顿排查,发现是家里的外网 ip 变动后 nginx 解析的域名 ip 还是旧 ip 导致的。手动重启 nginx 后恢复正常。但这不是长久之计,如果每次 ip 变动都需要重启一次 nginx,想想都头大。于是查询资料后获得了解决办法,方法如下:</em></p>\n<pre><code class=\"language-yum\">location / {\t\n\tresolver 114.114.114.114 valid=60s; #自定义缓存有效时间间隔对变量中的域名进行解析\n\n\tset $my_server "https://ip:port";\n\n\tproxy_pass $my_server;\n}\n</code></pre>\n",
|
||
"tags": [
|
||
"技术分享",
|
||
"nginx"
|
||
]
|
||
},
|
||
{
|
||
"id": "https://blog.jingxiyuan.cn/2022/09/22/protobuf%E7%94%9F%E6%88%90js%E6%96%87%E4%BB%B6/",
|
||
"url": "https://blog.jingxiyuan.cn/2022/09/22/protobuf%E7%94%9F%E6%88%90js%E6%96%87%E4%BB%B6/",
|
||
"title": "protobuf生成js文件",
|
||
"date_published": "2022-09-22T02:30:00.000Z",
|
||
"content_html": "<h1 id=\"下载工具\"><a class=\"anchor\" href=\"#下载工具\">#</a> 下载工具</h1>\n<p><span class=\"exturl\" data-url=\"aHR0cHM6Ly92ZXJzYXdlYi5kbC5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9wcm90b2NvbC1idWZmZXJzLm1pcnJvci92My4xOS41L3Byb3RvYy0zLjE5LjUtd2luNjQuemlw\">protoc-3.19.5-win64.zip</span></p>\n<h1 id=\"生成js文件\"><a class=\"anchor\" href=\"#生成js文件\">#</a> 生成 js 文件</h1>\n<ol>\n<li>\n<p>把 xxx.proto 文件拷贝到解压的 protoc-3.19.5-win64\\bin 目录下</p>\n</li>\n<li>\n<p>cmd 到相同的 bin 目录下</p>\n</li>\n<li>\n<p>执行 protoc.exe --js_out=import_style=commonjs,binary:. ./xxx.proto 命令,就会在 bin 目录下生成 xxx_pb.js 文件</p>\n</li>\n</ol>\n",
|
||
"tags": [
|
||
"技术分享",
|
||
"protobuf",
|
||
"js"
|
||
]
|
||
},
|
||
{
|
||
"id": "https://blog.jingxiyuan.cn/2022/09/21/%E8%AE%B0%E4%B8%80%E6%AC%A1netty-socket-io%E6%9C%8D%E5%8A%A1%E7%AB%AF%E8%BF%9E%E6%8E%A5%E4%B8%8D%E4%B8%8A%E7%9A%84%E9%97%AE%E9%A2%98/",
|
||
"url": "https://blog.jingxiyuan.cn/2022/09/21/%E8%AE%B0%E4%B8%80%E6%AC%A1netty-socket-io%E6%9C%8D%E5%8A%A1%E7%AB%AF%E8%BF%9E%E6%8E%A5%E4%B8%8D%E4%B8%8A%E7%9A%84%E9%97%AE%E9%A2%98/",
|
||
"title": "记一次netty-socketio服务端连接不上的问题",
|
||
"date_published": "2022-09-21T01:46:00.000Z",
|
||
"content_html": "<p><em>今天前端开发跟我反馈用 vue 的 socketio 连接不上后台服务,连接无反应无任何报错。所以不清楚是前端代码问题还是后台服务的问题。由于框架为另一同事搭建,我只负责处理后端业务逻辑部分,所以第一时间我也不清楚具体的原因。于是我找了个第三方的 socket 工具尝试连接,果然有问题。但是只是提示连接不上,无明显错误原因。到后台查看发现有提示 Unknown transport for request 错误,最后通过调试发现 netty-socketio 的库中 AuthorizeHandler 类有段处理 transport 的代码只能接受大写的 WEBSOCKET 或者 POLLING,于是我在工具中按要求填上结果还是不行。然后我在网上搜索也未发现有相关问题,只发现有网友提示需要用 socketio 的库,不要自己写 socket 连接。于是我找了 socket.io.js 来连接,结果还是一样。经过大量调试改代码,最后突发奇想,有没有可能跟 netty-socketio 的版本有关系,于是我把版本从 1.7.20 升级到 1.7.21,结果就奇迹般的好了。</em></p>\n<h6 id=\"总结就好像大力出奇迹实在找不到原因的时候不妨升级一下版本说不定问题就解决了呢o_o\"><a class=\"anchor\" href=\"#总结就好像大力出奇迹实在找不到原因的时候不妨升级一下版本说不定问题就解决了呢o_o\">#</a> 总结:就好像大力出奇迹,实在找不到原因的时候不妨升级一下版本,说不定问题就解决了呢!O (∩_∩) O</h6>\n",
|
||
"tags": [
|
||
"经验分享",
|
||
"心得体会",
|
||
"netty",
|
||
"socketIO",
|
||
"踩坑"
|
||
]
|
||
},
|
||
{
|
||
"id": "https://blog.jingxiyuan.cn/2022/09/17/Hexo-Theme-Shoka-algolia%E6%90%9C%E7%B4%A2%E8%B8%A9%E5%9D%91-1/",
|
||
"url": "https://blog.jingxiyuan.cn/2022/09/17/Hexo-Theme-Shoka-algolia%E6%90%9C%E7%B4%A2%E8%B8%A9%E5%9D%91-1/",
|
||
"title": "Hexo + Theme.Shoka + algolia搜索踩坑",
|
||
"date_published": "2022-09-17T15:12:00.000Z",
|
||
"content_html": "<h1 id=\"hexo-themeshoka安装\"><a class=\"anchor\" href=\"#hexo-themeshoka安装\">#</a> Hexo + Theme.Shoka 安装</h1>\n<p><a href=\"https://blog.jingxiyuan.cn/2022/09/14/Hexo%E5%AE%89%E8%A3%85%E6%91%B8%E7%B4%A2/\">安装介绍</a></p>\n<h1 id=\"algolia注册\"><a class=\"anchor\" href=\"#algolia注册\">#</a> algolia 注册</h1>\n<ol>\n<li>\n<p><span class=\"exturl\" data-url=\"aHR0cHM6Ly93d3cuYWxnb2xpYS5jb20vdXNlcnMvc2lnbl9pbg==\">algolia</span> 不支持国内邮箱注册,而 google 和 github 由于国内被墙也没法使用。所以只能先注册<span class=\"exturl\" data-url=\"aHR0cHM6Ly9hcHAubmV0bGlmeS5jb20v\"> netlify</span> 然后通过 netlify 注册 algolia。</p>\n</li>\n<li>\n<p>登录 algolia 后创建一个 index,名字随意记住既可。</p>\n<p><img data-src=\"https://file.jingxiyuan.cn/images/2022/09/17/2022-09-17-23-32-20.png\" alt=\"2022-09-17-23-32-20.png\" /></p>\n</li>\n<li>\n<p>点击右上角红点,弹出窗口点 settings 按钮。</p>\n<p><img data-src=\"https://file.jingxiyuan.cn/images/2022/09/17/2022-09-17-23-35-04.png\" alt=\"2022-09-17-23-35-04.png\" /></p>\n</li>\n<li>\n<p>点击 API KEYS,获取 appId 和 adminApiKey 填入 hexo 的_config.yml 中 apiKey 暂时不填。</p>\n</li>\n</ol>\n<figure class=\"highlight yml\"><figcaption data-lang=\"YAML\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token key atrule\">algolia</span><span class=\"token punctuation\">:</span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre> <span class=\"token key atrule\">appId</span><span class=\"token punctuation\">:</span> <span class=\"token comment\">#Your appId</span></pre></td></tr><tr><td data-num=\"3\"></td><td><pre> <span class=\"token key atrule\">apiKey</span><span class=\"token punctuation\">:</span> <span class=\"token comment\">#Your apiKey</span></pre></td></tr><tr><td data-num=\"4\"></td><td><pre> <span class=\"token key atrule\">adminApiKey</span><span class=\"token punctuation\">:</span> <span class=\"token comment\">#Your adminApiKey</span></pre></td></tr><tr><td data-num=\"5\"></td><td><pre> <span class=\"token key atrule\">chunkSize</span><span class=\"token punctuation\">:</span> <span class=\"token number\">5000</span></pre></td></tr><tr><td data-num=\"6\"></td><td><pre> <span class=\"token key atrule\">indexName</span><span class=\"token punctuation\">:</span> blog <span class=\"token comment\">#\"shoka\"</span></pre></td></tr><tr><td data-num=\"7\"></td><td><pre> <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span></pre></td></tr><tr><td data-num=\"8\"></td><td><pre> <span class=\"token punctuation\">-</span> title <span class=\"token comment\">#必须配置</span></pre></td></tr><tr><td data-num=\"9\"></td><td><pre> <span class=\"token punctuation\">-</span> path <span class=\"token comment\">#必须配置</span></pre></td></tr><tr><td data-num=\"10\"></td><td><pre> <span class=\"token punctuation\">-</span> categories <span class=\"token comment\">#推荐配置</span></pre></td></tr><tr><td data-num=\"11\"></td><td><pre> <span class=\"token punctuation\">-</span> content<span class=\"token punctuation\">:</span>strip<span class=\"token punctuation\">:</span>truncate<span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span><span class=\"token number\">2000</span></pre></td></tr><tr><td data-num=\"12\"></td><td><pre> <span class=\"token punctuation\">-</span> gallery</pre></td></tr><tr><td data-num=\"13\"></td><td><pre> <span class=\"token punctuation\">-</span> photos</pre></td></tr><tr><td data-num=\"14\"></td><td><pre> <span class=\"token punctuation\">-</span> tags</pre></td></tr></table></figure><ol start=\"5\">\n<li>\n<p>点击 All Api Keys - New Api key 创建一个 api key,Indices 选先前让记住的 index,ACL 选下面图片中的选项。</p>\n<p><img data-src=\"https://file.jingxiyuan.cn/images/2022/09/17/2022-09-17-23-47-50.png\" alt=\"2022-09-17-23-47-50.png\" /></p>\n</li>\n<li>\n<p>把第 5 步中新建的 api key 填入到第 4 步中的配置中,到此已经完成了百分之九十,只需要重新编译发布即可。不过编译步骤多了一步,在 hexo g 后需要再执行 hexo algolia,至此搜索功能就大功告成了。</p>\n</li>\n</ol>\n",
|
||
"tags": []
|
||
},
|
||
{
|
||
"id": "https://blog.jingxiyuan.cn/2022/09/16/chevereto%E5%9B%BE%E5%BA%8A%E5%AE%89%E8%A3%85/",
|
||
"url": "https://blog.jingxiyuan.cn/2022/09/16/chevereto%E5%9B%BE%E5%BA%8A%E5%AE%89%E8%A3%85/",
|
||
"title": "极空间chevereto图床docker版安装",
|
||
"date_published": "2022-09-16T00:04:00.000Z",
|
||
"content_html": "<h1 id=\"安装准备\"><a class=\"anchor\" href=\"#安装准备\">#</a> 安装准备</h1>\n<ol>\n<li>\n<p>需要先安装好 mysql 数据库</p>\n</li>\n<li>\n<p>选择版本,1.5 版支持中文,之后被维护的团队删除只支持英文</p>\n</li>\n<li>\n<p>本文介绍使用的是<span class=\"exturl\" data-url=\"aHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2xpbnV4c2VydmVyL2NoZXZlcmV0bw==\"> linuxserver_chevereto</span> 的镜像</p>\n</li>\n<li>\n<p>需要预先创建好给 chevereto 使用的库、账户、密码</p>\n</li>\n</ol>\n<h1 id=\"容器配置\"><a class=\"anchor\" href=\"#容器配置\">#</a> 容器配置</h1>\n<ol>\n<li>\n<p>映射路径(不要放在高速盘,否则会有权限问题)<br />\n<img data-src=\"https://file.jingxiyuan.cn/images/2022/09/16/6150d69d9a170d96e66ca69420f8c4e8.png\" alt=\"6150d69d9a170d96e66ca69420f8c4e8.png\" /></p>\n</li>\n<li>\n<p>端口<br />\n<img data-src=\"https://file.jingxiyuan.cn/images/2022/09/16/08eafb3b30a7eb9b0c0be26ea7a1502a.png\" alt=\"08eafb3b30a7eb9b0c0be26ea7a1502a.png\" /></p>\n</li>\n<li>\n<p>环境(puid 和 pgid 使用 1000,不要使用 0,否则会报错)<br />\n<img data-src=\"https://file.jingxiyuan.cn/images/2022/09/16/01567ca9f31f87f832276be35cc4554b.png\" alt=\"01567ca9f31f87f832276be35cc4554b.png\" /></p>\n</li>\n</ol>\n<h1 id=\"初始化配置\"><a class=\"anchor\" href=\"#初始化配置\">#</a> 初始化配置</h1>\n<ol>\n<li>\n<p>使用 http:// 极空间 ip:81 (端口号使用上面配置的,我配置的是 81) 进行 web 访问(数据库配置)<br />\n<img data-src=\"http://file.jingxiyuan.cn/images/2022/09/15/0.png\" alt=\"0.png\" /></p>\n</li>\n<li>\n<p>管理员配置(注意 website 配置选择个人,除非需要提供给其它人注册)<br />\n<img data-src=\"http://file.jingxiyuan.cn/images/2022/09/15/1.png\" alt=\"1.png\" /><br />\n<img data-src=\"http://file.jingxiyuan.cn/images/2022/09/15/2.png\" alt=\"2.png\" /></p>\n</li>\n<li>\n<p>默认上传大小是 2M,可通过修改 php.ini 配置提升(路径 /etc/php7/php.ini 查找 upload_max_filesize 进行修改)。之后用管理员登录通过页面 http://xxx/dashboard/settings/image-upload 修改。</p>\n</li>\n</ol>\n<h1 id=\"安装完成\"><a class=\"anchor\" href=\"#安装完成\">#</a> 安装完成</h1>\n<ol>\n<li>功能少界面也很简单,只作为图片外部链接使用完全够用。图片链接 url 支持的很全。<br />\n<a href=\"https://file.jingxiyuan.cn/image/axw\"><img data-src=\"https://file.jingxiyuan.cn/images/2022/09/16/2022-09-16-14-52-29.png\" alt=\"2022-09-16-14-52-29.png\" /></a><br />\n<img data-src=\"https://file.jingxiyuan.cn/images/2022/09/16/2022-09-16-14-54-58.png\" alt=\"2022-09-16-14-54-58.png\" /><br />\n<img data-src=\"https://file.jingxiyuan.cn/images/2022/09/16/2022-09-16-14-56-13.png\" alt=\"2022-09-16-14-56-13.png\" /></li>\n</ol>\n",
|
||
"tags": [
|
||
"技术分享",
|
||
"心得体会",
|
||
"踩坑",
|
||
"docker",
|
||
"极空间",
|
||
"图床",
|
||
"图片上传"
|
||
]
|
||
},
|
||
{
|
||
"id": "https://blog.jingxiyuan.cn/2022/09/14/Hexo%E5%AE%89%E8%A3%85%E6%91%B8%E7%B4%A2/",
|
||
"url": "https://blog.jingxiyuan.cn/2022/09/14/Hexo%E5%AE%89%E8%A3%85%E6%91%B8%E7%B4%A2/",
|
||
"title": "Hexo安装摸索",
|
||
"date_published": "2022-09-14T04:23:55.000Z",
|
||
"content_html": "<h1 id=\"hexo博客安装\"><a class=\"anchor\" href=\"#hexo博客安装\">#</a> hexo 博客安装</h1>\n<ol>\n<li>\n<p><span class=\"exturl\" data-url=\"aHR0cHM6Ly9ub2RlanMub3JnL2VuLw==\">安装 nodejs</span></p>\n</li>\n<li>\n<p><span class=\"exturl\" data-url=\"aHR0cHM6Ly9naXQtc2NtLmNvbS8=\">安装 git</span></p>\n</li>\n<li>\n<p>安装 hexo(windows 需进入 git bash)</p>\n<p><code>npm install -g hexo-cli</code></p>\n</li>\n<li>\n<p>初始化博客目录</p>\n<p><code>hexo init blog</code></p>\n</li>\n<li>\n<p>进入博客目录</p>\n<p><code>cd blog</code></p>\n</li>\n<li>\n<p>初始化 hexo 到博客目录</p>\n<p><code>npm install</code></p>\n</li>\n</ol>\n<h1 id=\"shoka主题安装\"><a class=\"anchor\" href=\"#shoka主题安装\">#</a> shoka 主题安装</h1>\n<ol>\n<li>\n<p>下载主题 </p>\n<p><code>git clone </code> <span class=\"exturl\" data-url=\"aHR0cHM6Ly9naXRodWIuY29tL2FtZWhpbWUvaGV4by10aGVtZS1zaG9rYS5naXQ=\">https://github.com/amehime/hexo-theme-shoka.git</span> <code> ./themes/shoka</code></p>\n</li>\n<li>\n<p>卸载 hexo-renderer-marked 以及别的 markdown 文件渲染器 </p>\n<p><code>npm un hexo-renderer-marked --save</code></p>\n</li>\n<li>\n<p>安装(md 文件渲染器,压缩 css/js/html)</p>\n<p><code>npm i hexo-renderer-multi-markdown-it --save</code></p>\n</li>\n<li>\n<p>安装(给生成的 css 文件们添加浏览器前缀)</p>\n<p><code>npm i hexo-autoprefixer --save</code></p>\n</li>\n<li>\n<p>安装(站内搜索功能) </p>\n<p><code>npm i hexo-algoliasearch --save</code></p>\n</li>\n<li>\n<p>安装(文章或站点字数及阅读时间统计)</p>\n<p><code>npm i hexo-symbols-count-time --save</code></p>\n</li>\n<li>\n<p>安装(生成 Feed 文件)</p>\n<p><code>npm i hexo-feed --save</code></p>\n</li>\n</ol>\n<h1 id=\"hexo部分常用命令\"><a class=\"anchor\" href=\"#hexo部分常用命令\">#</a> Hexo 部分常用命令</h1>\n<ul>\n<li>\n<p>清除静态文件</p>\n<p><code>hexo clean</code></p>\n</li>\n<li>\n<p>生成静态文件</p>\n<p><code>hexo g</code></p>\n</li>\n<li>\n<p>安装 git 推送插件 </p>\n<p><code>npm install hexo-deployer-git --save</code></p>\n</li>\n<li>\n<p>推送静态文件到 git </p>\n<p><code>hexo d</code></p>\n</li>\n</ul>\n<h1 id=\"安装hexo-admin编写博客插件\"><a class=\"anchor\" href=\"#安装hexo-admin编写博客插件\">#</a> 安装 hexo-admin(编写博客插件)</h1>\n<ul>\n<li>\n<p><code>npm install hexo-admin --save</code></p>\n</li>\n<li>\n<p>hexo-admin 编辑 url</p>\n<p><a href=\"http://localhost:4000/admin\"> <code>http://localhost:4000/admin</code> </a></p>\n</li>\n<li>\n<p>settings 设置用户名、密码、Secret</p>\n<p><a href=\"http://localhost:4000/admin/#/settings\"> <code>http://localhost:4000/admin/#/settings</code> </a></p>\n</li>\n<li>\n<p>把底部生成的配置拷入 hexo 配合文件中 (_config.yml)</p>\n</li>\n</ul>\n<figure class=\"highlight yml\"><figcaption data-lang=\"YAML\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token key atrule\">admin</span><span class=\"token punctuation\">:</span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre><span class=\"token key atrule\">username</span><span class=\"token punctuation\">:</span> username</pre></td></tr><tr><td data-num=\"3\"></td><td><pre><span class=\"token key atrule\">password_hash</span><span class=\"token punctuation\">:</span> xxxxxx</pre></td></tr><tr><td data-num=\"4\"></td><td><pre><span class=\"token key atrule\">secret</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'my super secret phrase'</span> <span class=\"token comment\">#用单引号包裹</span></pre></td></tr><tr><td data-num=\"5\"></td><td><pre><span class=\"token key atrule\">deployCommand</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'hexo_publish.sh'</span> <span class=\"token comment\">#windows 用 hexo_publish.bat,linux 用 hexo_publish.sh</span></pre></td></tr></table></figure><h4 id=\"hexo_publishsh\"><a class=\"anchor\" href=\"#hexo_publishsh\">#</a> hexo_publish.sh</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre><span class=\"token shebang important\">#!/bin/bash</span></pre></td></tr><tr><td data-num=\"2\"></td><td><pre></pre></td></tr><tr><td data-num=\"3\"></td><td><pre>hexo clean</pre></td></tr><tr><td data-num=\"4\"></td><td><pre>hexo g</pre></td></tr><tr><td data-num=\"5\"></td><td><pre>hexo d</pre></td></tr></table></figure><h4 id=\"hexo_publishbat\"><a class=\"anchor\" href=\"#hexo_publishbat\">#</a> hexo_publish.bat</h4>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"></figcaption><table><tr><td data-num=\"1\"></td><td><pre>@echo off</pre></td></tr><tr><td data-num=\"2\"></td><td><pre><span class=\"token builtin class-name\">cd</span> D:<span class=\"token punctuation\">\\</span>blog</pre></td></tr><tr><td data-num=\"3\"></td><td><pre>d:</pre></td></tr><tr><td data-num=\"4\"></td><td><pre>@cmd /c <span class=\"token string\">\"hexo clean&& hexo g&&hexo d&&echo success\"</span></pre></td></tr></table></figure>",
|
||
"tags": [
|
||
"技术分享",
|
||
"心得体会",
|
||
"踩坑",
|
||
"博客",
|
||
"Hexo"
|
||
]
|
||
},
|
||
{
|
||
"id": "https://blog.jingxiyuan.cn/1970/01/01/hello-world/",
|
||
"url": "https://blog.jingxiyuan.cn/1970/01/01/hello-world/",
|
||
"title": "Hello World",
|
||
"date_published": "1970-01-01T00:00:00.000Z",
|
||
"content_html": "<p>Welcome to <span class=\"exturl\" data-url=\"aHR0cHM6Ly9oZXhvLmlvLw==\">Hexo</span>! This is your very first post. Check <span class=\"exturl\" data-url=\"aHR0cHM6Ly9oZXhvLmlvL2RvY3Mv\">documentation</span> for more info. If you get any problems when using Hexo, you can find the answer in <span class=\"exturl\" data-url=\"aHR0cHM6Ly9oZXhvLmlvL2RvY3MvdHJvdWJsZXNob290aW5nLmh0bWw=\">troubleshooting</span> or you can ask me on <span class=\"exturl\" data-url=\"aHR0cHM6Ly9naXRodWIuY29tL2hleG9qcy9oZXhvL2lzc3Vlcw==\">GitHub</span>.</p>\n<h2 id=\"quick-start\"><a class=\"anchor\" href=\"#quick-start\">#</a> Quick Start</h2>\n<h3 id=\"create-a-new-post\"><a class=\"anchor\" href=\"#create-a-new-post\">#</a> Create a new post</h3>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"><span>h</span></figcaption><table><tr><td data-num=\"1\"></td><td><pre>$ hexo new <span class=\"token string\">\"My New Post\"</span></pre></td></tr></table></figure><p>More info: <span class=\"exturl\" data-url=\"aHR0cHM6Ly9oZXhvLmlvL2RvY3Mvd3JpdGluZy5odG1s\">Writing</span></p>\n<h3 id=\"run-server\"><a class=\"anchor\" href=\"#run-server\">#</a> Run server</h3>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"><span>h</span></figcaption><table><tr><td data-num=\"1\"></td><td><pre>$ hexo server</pre></td></tr></table></figure><p>More info: <span class=\"exturl\" data-url=\"aHR0cHM6Ly9oZXhvLmlvL2RvY3Mvc2VydmVyLmh0bWw=\">Server</span></p>\n<h3 id=\"generate-static-files\"><a class=\"anchor\" href=\"#generate-static-files\">#</a> Generate static files</h3>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"><span>h</span></figcaption><table><tr><td data-num=\"1\"></td><td><pre>$ hexo generate</pre></td></tr></table></figure><p>More info: <span class=\"exturl\" data-url=\"aHR0cHM6Ly9oZXhvLmlvL2RvY3MvZ2VuZXJhdGluZy5odG1s\">Generating</span></p>\n<h3 id=\"deploy-to-remote-sites\"><a class=\"anchor\" href=\"#deploy-to-remote-sites\">#</a> Deploy to remote sites</h3>\n<figure class=\"highlight bash\"><figcaption data-lang=\"bash\"><span>h</span></figcaption><table><tr><td data-num=\"1\"></td><td><pre>$ hexo deploy</pre></td></tr></table></figure><p>More info: <span class=\"exturl\" data-url=\"aHR0cHM6Ly9oZXhvLmlvL2RvY3Mvb25lLWNvbW1hbmQtZGVwbG95bWVudC5odG1s\">Deployment</span></p>\n",
|
||
"tags": []
|
||
}
|
||
]
|
||
} |