[{"data":1,"prerenderedAt":4554},["ShallowReactive",2],{"sidebar-posts":3,"tag-posts":2558},[4,1004],{"_path":5,"path":5,"stem":6,"title":7,"description":8,"body":9,"meta":996,"date":997,"tags":1003,"draft":1001,"author":1002},"\u002Fposts\u002Flinux","posts\u002FLinuxユーザ作成","Linuxユーザ作成","Linuxのユーザ作成",{"type":10,"value":11,"toc":978},"minimark",[12,17,21,25,29,69,85,88,102,105,113,117,192,195,260,270,273,276,279,282,285,288,310,313,333,336,352,355,415,418,437,440,443,507,510,543,545,548,551,554,560,563,566,587,590,608,611,625,628,692,698,701,719,724,726,729,740,743,757,763,766,787,790,808,810,822,824,830,848,851,906,909,974],[13,14,16],"h1",{"id":15},"linux-ユーザー作成方法","Linux ユーザー作成方法",[18,19,20],"h2",{"id":20},"基本ユーザ",[22,23,24],"p",{},"通常のログイン用ユーザーを作成する。",[26,27,28],"h3",{"id":28},"コマンドライン",[30,31,36],"pre",{"className":32,"code":33,"language":34,"meta":35,"style":35},"language-bash shiki shiki-themes github-light github-dark","sudo useradd -m testuser\nsudo passwd testuser\n","bash","",[37,38,39,59],"code",{"__ignoreMap":35},[40,41,44,48,52,56],"span",{"class":42,"line":43},"line",1,[40,45,47],{"class":46},"sScJk","sudo",[40,49,51],{"class":50},"sZZnC"," useradd",[40,53,55],{"class":54},"sj4cs"," -m",[40,57,58],{"class":50}," testuser\n",[40,60,62,64,67],{"class":42,"line":61},2,[40,63,47],{"class":46},[40,65,66],{"class":50}," passwd",[40,68,58],{"class":50},[70,71,72,79],"ul",{},[73,74,75,78],"li",{},[37,76,77],{},"-m","：ホームディレクトリを作成する",[73,80,81,84],{},[37,82,83],{},"passwd","：ユーザーのパスワードを設定する",[22,86,87],{},"作成結果は以下で確認できる。",[30,89,91],{"className":32,"code":90,"language":34,"meta":35,"style":35},"getent passwd testuser\n",[37,92,93],{"__ignoreMap":35},[40,94,95,98,100],{"class":42,"line":43},[40,96,97],{"class":46},"getent",[40,99,66],{"class":50},[40,101,58],{"class":50},[22,103,104],{},"例：",[30,106,111],{"className":107,"code":109,"language":110,"meta":35},[108],"language-text","testuser:x:1001:1001::\u002Fhome\u002Ftestuser:\u002Fbin\u002Fbash\n","text",[37,112,109],{"__ignoreMap":35},[26,114,116],{"id":115},"ansible","Ansible",[30,118,122],{"className":119,"code":120,"language":121,"meta":35,"style":35},"language-yaml shiki shiki-themes github-light github-dark","- name: 基本ユーザーを作成\n  ansible.builtin.user:\n    name: testuser\n    create_home: true\n    shell: \u002Fbin\u002Fbash\n    state: present\n","yaml",[37,123,124,140,148,159,170,181],{"__ignoreMap":35},[40,125,126,130,134,137],{"class":42,"line":43},[40,127,129],{"class":128},"sVt8B","- ",[40,131,133],{"class":132},"s9eBZ","name",[40,135,136],{"class":128},": ",[40,138,139],{"class":50},"基本ユーザーを作成\n",[40,141,142,145],{"class":42,"line":61},[40,143,144],{"class":132},"  ansible.builtin.user",[40,146,147],{"class":128},":\n",[40,149,151,154,156],{"class":42,"line":150},3,[40,152,153],{"class":132},"    name",[40,155,136],{"class":128},[40,157,158],{"class":50},"testuser\n",[40,160,162,165,167],{"class":42,"line":161},4,[40,163,164],{"class":132},"    create_home",[40,166,136],{"class":128},[40,168,169],{"class":54},"true\n",[40,171,173,176,178],{"class":42,"line":172},5,[40,174,175],{"class":132},"    shell",[40,177,136],{"class":128},[40,179,180],{"class":50},"\u002Fbin\u002Fbash\n",[40,182,184,187,189],{"class":42,"line":183},6,[40,185,186],{"class":132},"    state",[40,188,136],{"class":128},[40,190,191],{"class":50},"present\n",[22,193,194],{},"パスワードも設定する場合：",[30,196,198],{"className":119,"code":197,"language":121,"meta":35,"style":35},"- name: パスワード付きユーザーを作成\n  ansible.builtin.user:\n    name: testuser\n    password: \"{{ 'Password123!' | password_hash('sha512') }}\"\n    create_home: true\n    shell: \u002Fbin\u002Fbash\n    state: present\n",[37,199,200,211,217,225,235,243,251],{"__ignoreMap":35},[40,201,202,204,206,208],{"class":42,"line":43},[40,203,129],{"class":128},[40,205,133],{"class":132},[40,207,136],{"class":128},[40,209,210],{"class":50},"パスワード付きユーザーを作成\n",[40,212,213,215],{"class":42,"line":61},[40,214,144],{"class":132},[40,216,147],{"class":128},[40,218,219,221,223],{"class":42,"line":150},[40,220,153],{"class":132},[40,222,136],{"class":128},[40,224,158],{"class":50},[40,226,227,230,232],{"class":42,"line":161},[40,228,229],{"class":132},"    password",[40,231,136],{"class":128},[40,233,234],{"class":50},"\"{{ 'Password123!' | password_hash('sha512') }}\"\n",[40,236,237,239,241],{"class":42,"line":172},[40,238,164],{"class":132},[40,240,136],{"class":128},[40,242,169],{"class":54},[40,244,245,247,249],{"class":42,"line":183},[40,246,175],{"class":132},[40,248,136],{"class":128},[40,250,180],{"class":50},[40,252,254,256,258],{"class":42,"line":253},7,[40,255,186],{"class":132},[40,257,136],{"class":128},[40,259,191],{"class":50},[261,262,263],"blockquote",{},[22,264,265,266,269],{},"Ansibleの ",[37,267,268],{},"password"," には、原則として平文ではなくハッシュ化されたパスワードを指定する。",[271,272],"hr",{},[18,274,275],{"id":275},"パスワード期限付き",[22,277,278],{},"パスワード自体に有効期限を設定する。",[22,280,281],{},"例えば「90日ごとにパスワード変更を要求する」といった設定が可能。",[26,283,28],{"id":284},"コマンドライン-1",[22,286,287],{},"ユーザー作成：",[30,289,290],{"className":32,"code":33,"language":34,"meta":35,"style":35},[37,291,292,302],{"__ignoreMap":35},[40,293,294,296,298,300],{"class":42,"line":43},[40,295,47],{"class":46},[40,297,51],{"class":50},[40,299,55],{"class":54},[40,301,58],{"class":50},[40,303,304,306,308],{"class":42,"line":61},[40,305,47],{"class":46},[40,307,66],{"class":50},[40,309,58],{"class":50},[22,311,312],{},"パスワードの最大有効日数を90日に設定：",[30,314,316],{"className":32,"code":315,"language":34,"meta":35,"style":35},"sudo chage -M 90 testuser\n",[37,317,318],{"__ignoreMap":35},[40,319,320,322,325,328,331],{"class":42,"line":43},[40,321,47],{"class":46},[40,323,324],{"class":50}," chage",[40,326,327],{"class":54}," -M",[40,329,330],{"class":54}," 90",[40,332,58],{"class":50},[22,334,335],{},"設定確認：",[30,337,339],{"className":32,"code":338,"language":34,"meta":35,"style":35},"sudo chage -l testuser\n",[37,340,341],{"__ignoreMap":35},[40,342,343,345,347,350],{"class":42,"line":43},[40,344,47],{"class":46},[40,346,324],{"class":50},[40,348,349],{"class":54}," -l",[40,351,58],{"class":50},[22,353,354],{},"主なオプション：",[356,357,358,371],"table",{},[359,360,361],"thead",{},[362,363,364,368],"tr",{},[365,366,367],"th",{},"オプション",[365,369,370],{},"意味",[372,373,374,385,395,405],"tbody",{},[362,375,376,382],{},[377,378,379],"td",{},[37,380,381],{},"-M 90",[377,383,384],{},"パスワードの最大有効日数を90日にする",[362,386,387,392],{},[377,388,389],{},[37,390,391],{},"-m 1",[377,393,394],{},"パスワード変更後、最低1日は再変更不可",[362,396,397,402],{},[377,398,399],{},[37,400,401],{},"-W 7",[377,403,404],{},"期限切れ7日前から警告",[362,406,407,412],{},[377,408,409],{},[37,410,411],{},"-d 0",[377,413,414],{},"次回ログイン時にパスワード変更を強制",[22,416,417],{},"例えば、初回ログイン時にパスワード変更を強制する場合：",[30,419,421],{"className":32,"code":420,"language":34,"meta":35,"style":35},"sudo chage -d 0 testuser\n",[37,422,423],{"__ignoreMap":35},[40,424,425,427,429,432,435],{"class":42,"line":43},[40,426,47],{"class":46},[40,428,324],{"class":50},[40,430,431],{"class":54}," -d",[40,433,434],{"class":54}," 0",[40,436,58],{"class":50},[26,438,116],{"id":439},"ansible-1",[22,441,442],{},"90日でパスワードを期限切れにする場合：",[30,444,446],{"className":119,"code":445,"language":121,"meta":35,"style":35},"- name: パスワード期限付きユーザーを作成\n  ansible.builtin.user:\n    name: testuser\n    create_home: true\n    shell: \u002Fbin\u002Fbash\n    password_expire_max: 90\n    state: present\n",[37,447,448,459,465,473,481,489,499],{"__ignoreMap":35},[40,449,450,452,454,456],{"class":42,"line":43},[40,451,129],{"class":128},[40,453,133],{"class":132},[40,455,136],{"class":128},[40,457,458],{"class":50},"パスワード期限付きユーザーを作成\n",[40,460,461,463],{"class":42,"line":61},[40,462,144],{"class":132},[40,464,147],{"class":128},[40,466,467,469,471],{"class":42,"line":150},[40,468,153],{"class":132},[40,470,136],{"class":128},[40,472,158],{"class":50},[40,474,475,477,479],{"class":42,"line":161},[40,476,164],{"class":132},[40,478,136],{"class":128},[40,480,169],{"class":54},[40,482,483,485,487],{"class":42,"line":172},[40,484,175],{"class":132},[40,486,136],{"class":128},[40,488,180],{"class":50},[40,490,491,494,496],{"class":42,"line":183},[40,492,493],{"class":132},"    password_expire_max",[40,495,136],{"class":128},[40,497,498],{"class":54},"90\n",[40,500,501,503,505],{"class":42,"line":253},[40,502,186],{"class":132},[40,504,136],{"class":128},[40,506,191],{"class":50},[22,508,509],{},"初回ログイン時にパスワード変更を強制する場合：",[30,511,513],{"className":119,"code":512,"language":121,"meta":35,"style":35},"- name: 初回ログイン時にパスワード変更を強制\n  ansible.builtin.command:\n    cmd: chage -d 0 testuser\n",[37,514,515,526,533],{"__ignoreMap":35},[40,516,517,519,521,523],{"class":42,"line":43},[40,518,129],{"class":128},[40,520,133],{"class":132},[40,522,136],{"class":128},[40,524,525],{"class":50},"初回ログイン時にパスワード変更を強制\n",[40,527,528,531],{"class":42,"line":61},[40,529,530],{"class":132},"  ansible.builtin.command",[40,532,147],{"class":128},[40,534,535,538,540],{"class":42,"line":150},[40,536,537],{"class":132},"    cmd",[40,539,136],{"class":128},[40,541,542],{"class":50},"chage -d 0 testuser\n",[271,544],{},[18,546,547],{"id":547},"有効期限あり",[22,549,550],{},"アカウントそのものに有効期限を設定する。",[22,552,553],{},"パスワード期限とは異なり、有効期限を過ぎると、そのユーザーアカウント自体が使用できなくなる。",[30,555,558],{"className":556,"code":557,"language":110,"meta":35},[108],"パスワード期限\n  └─ パスワードの交換期限\n\nアカウント有効期限\n  └─ ユーザー自体の利用期限\n",[37,559,557],{"__ignoreMap":35},[26,561,28],{"id":562},"コマンドライン-2",[22,564,565],{},"2026年12月31日を有効期限に設定：",[30,567,569],{"className":32,"code":568,"language":34,"meta":35,"style":35},"sudo useradd -m -e 2026-12-31 testuser\n",[37,570,571],{"__ignoreMap":35},[40,572,573,575,577,579,582,585],{"class":42,"line":43},[40,574,47],{"class":46},[40,576,51],{"class":50},[40,578,55],{"class":54},[40,580,581],{"class":54}," -e",[40,583,584],{"class":50}," 2026-12-31",[40,586,58],{"class":50},[22,588,589],{},"既存ユーザーに設定する場合：",[30,591,593],{"className":32,"code":592,"language":34,"meta":35,"style":35},"sudo chage -E 2026-12-31 testuser\n",[37,594,595],{"__ignoreMap":35},[40,596,597,599,601,604,606],{"class":42,"line":43},[40,598,47],{"class":46},[40,600,324],{"class":50},[40,602,603],{"class":54}," -E",[40,605,584],{"class":50},[40,607,58],{"class":50},[22,609,610],{},"確認：",[30,612,613],{"className":32,"code":338,"language":34,"meta":35,"style":35},[37,614,615],{"__ignoreMap":35},[40,616,617,619,621,623],{"class":42,"line":43},[40,618,47],{"class":46},[40,620,324],{"class":50},[40,622,349],{"class":54},[40,624,58],{"class":50},[26,626,116],{"id":627},"ansible-2",[30,629,631],{"className":119,"code":630,"language":121,"meta":35,"style":35},"- name: 有効期限付きユーザーを作成\n  ansible.builtin.user:\n    name: testuser\n    create_home: true\n    shell: \u002Fbin\u002Fbash\n    expires: 1798646400\n    state: present\n",[37,632,633,644,650,658,666,674,684],{"__ignoreMap":35},[40,634,635,637,639,641],{"class":42,"line":43},[40,636,129],{"class":128},[40,638,133],{"class":132},[40,640,136],{"class":128},[40,642,643],{"class":50},"有効期限付きユーザーを作成\n",[40,645,646,648],{"class":42,"line":61},[40,647,144],{"class":132},[40,649,147],{"class":128},[40,651,652,654,656],{"class":42,"line":150},[40,653,153],{"class":132},[40,655,136],{"class":128},[40,657,158],{"class":50},[40,659,660,662,664],{"class":42,"line":161},[40,661,164],{"class":132},[40,663,136],{"class":128},[40,665,169],{"class":54},[40,667,668,670,672],{"class":42,"line":172},[40,669,175],{"class":132},[40,671,136],{"class":128},[40,673,180],{"class":50},[40,675,676,679,681],{"class":42,"line":183},[40,677,678],{"class":132},"    expires",[40,680,136],{"class":128},[40,682,683],{"class":54},"1798646400\n",[40,685,686,688,690],{"class":42,"line":253},[40,687,186],{"class":132},[40,689,136],{"class":128},[40,691,191],{"class":50},[22,693,694,697],{},[37,695,696],{},"expires"," にはUnixエポック秒を指定する。",[22,699,700],{},"例えばLinuxでエポック秒を確認する場合：",[30,702,704],{"className":32,"code":703,"language":34,"meta":35,"style":35},"date -d '2026-12-31' +%s\n",[37,705,706],{"__ignoreMap":35},[40,707,708,711,713,716],{"class":42,"line":43},[40,709,710],{"class":46},"date",[40,712,431],{"class":54},[40,714,715],{"class":50}," '2026-12-31'",[40,717,718],{"class":50}," +%s\n",[261,720,721],{},[22,722,723],{},"Ansibleでは日付文字列ではなくエポック秒を指定するため、変数化して管理する場合は可読性に注意する。",[271,725],{},[18,727,728],{"id":728},"非対話シェル指定",[22,730,731,732,735,736,739],{},"SSHログインやターミナルからの対話操作をさせたくないユーザーには、ログインシェルとして ",[37,733,734],{},"\u002Fusr\u002Fsbin\u002Fnologin"," または ",[37,737,738],{},"\u002Fsbin\u002Fnologin"," を設定する。",[22,741,742],{},"主に以下のようなユーザーで利用する。",[70,744,745,748,751,754],{},[73,746,747],{},"WebサーバーやDBなどのミドルウェア実行ユーザー",[73,749,750],{},"バッチ処理専用ユーザー",[73,752,753],{},"監視エージェント用ユーザー",[73,755,756],{},"サービスアカウント",[30,758,761],{"className":759,"code":760,"language":110,"meta":35},[108],"通常ユーザー\n    │\n    ▼\n \u002Fbin\u002Fbash\n    │\n    └── 対話ログイン可能\n\n\nサービス用ユーザー\n    │\n    ▼\n \u002Fusr\u002Fsbin\u002Fnologin\n    │\n    └── 通常の対話ログイン不可\n",[37,762,760],{"__ignoreMap":35},[26,764,28],{"id":765},"コマンドライン-3",[30,767,769],{"className":32,"code":768,"language":34,"meta":35,"style":35},"sudo useradd -m -s \u002Fusr\u002Fsbin\u002Fnologin testuser\n",[37,770,771],{"__ignoreMap":35},[40,772,773,775,777,779,782,785],{"class":42,"line":43},[40,774,47],{"class":46},[40,776,51],{"class":50},[40,778,55],{"class":54},[40,780,781],{"class":54}," -s",[40,783,784],{"class":50}," \u002Fusr\u002Fsbin\u002Fnologin",[40,786,58],{"class":50},[22,788,789],{},"既存ユーザーのシェルを変更する場合：",[30,791,793],{"className":32,"code":792,"language":34,"meta":35,"style":35},"sudo usermod -s \u002Fusr\u002Fsbin\u002Fnologin testuser\n",[37,794,795],{"__ignoreMap":35},[40,796,797,799,802,804,806],{"class":42,"line":43},[40,798,47],{"class":46},[40,800,801],{"class":50}," usermod",[40,803,781],{"class":54},[40,805,784],{"class":50},[40,807,58],{"class":50},[22,809,610],{},[30,811,812],{"className":32,"code":90,"language":34,"meta":35,"style":35},[37,813,814],{"__ignoreMap":35},[40,815,816,818,820],{"class":42,"line":43},[40,817,97],{"class":46},[40,819,66],{"class":50},[40,821,58],{"class":50},[22,823,104],{},[30,825,828],{"className":826,"code":827,"language":110,"meta":35},[108],"testuser:x:1001:1001::\u002Fhome\u002Ftestuser:\u002Fusr\u002Fsbin\u002Fnologin\n",[37,829,827],{"__ignoreMap":35},[261,831,832],{},[22,833,834,836,837,839,840,843,844,847],{},[37,835,734],{}," と ",[37,838,738],{}," のパスはディストリビューションによって異なる場合があるため、",[37,841,842],{},"which nologin"," や ",[37,845,846],{},"\u002Fetc\u002Fshells"," で確認する。",[26,849,116],{"id":850},"ansible-3",[30,852,854],{"className":119,"code":853,"language":121,"meta":35,"style":35},"- name: 非対話ログインユーザーを作成\n  ansible.builtin.user:\n    name: testuser\n    create_home: true\n    shell: \u002Fusr\u002Fsbin\u002Fnologin\n    state: present\n",[37,855,856,867,873,881,889,898],{"__ignoreMap":35},[40,857,858,860,862,864],{"class":42,"line":43},[40,859,129],{"class":128},[40,861,133],{"class":132},[40,863,136],{"class":128},[40,865,866],{"class":50},"非対話ログインユーザーを作成\n",[40,868,869,871],{"class":42,"line":61},[40,870,144],{"class":132},[40,872,147],{"class":128},[40,874,875,877,879],{"class":42,"line":150},[40,876,153],{"class":132},[40,878,136],{"class":128},[40,880,158],{"class":50},[40,882,883,885,887],{"class":42,"line":161},[40,884,164],{"class":132},[40,886,136],{"class":128},[40,888,169],{"class":54},[40,890,891,893,895],{"class":42,"line":172},[40,892,175],{"class":132},[40,894,136],{"class":128},[40,896,897],{"class":50},"\u002Fusr\u002Fsbin\u002Fnologin\n",[40,899,900,902,904],{"class":42,"line":183},[40,901,186],{"class":132},[40,903,136],{"class":128},[40,905,191],{"class":50},[22,907,908],{},"ホームディレクトリも不要なサービスユーザーなら：",[30,910,912],{"className":119,"code":911,"language":121,"meta":35,"style":35},"- name: サービス専用ユーザーを作成\n  ansible.builtin.user:\n    name: appuser\n    create_home: false\n    shell: \u002Fusr\u002Fsbin\u002Fnologin\n    system: true\n    state: present\n",[37,913,914,925,931,940,949,957,966],{"__ignoreMap":35},[40,915,916,918,920,922],{"class":42,"line":43},[40,917,129],{"class":128},[40,919,133],{"class":132},[40,921,136],{"class":128},[40,923,924],{"class":50},"サービス専用ユーザーを作成\n",[40,926,927,929],{"class":42,"line":61},[40,928,144],{"class":132},[40,930,147],{"class":128},[40,932,933,935,937],{"class":42,"line":150},[40,934,153],{"class":132},[40,936,136],{"class":128},[40,938,939],{"class":50},"appuser\n",[40,941,942,944,946],{"class":42,"line":161},[40,943,164],{"class":132},[40,945,136],{"class":128},[40,947,948],{"class":54},"false\n",[40,950,951,953,955],{"class":42,"line":172},[40,952,175],{"class":132},[40,954,136],{"class":128},[40,956,897],{"class":50},[40,958,959,962,964],{"class":42,"line":183},[40,960,961],{"class":132},"    system",[40,963,136],{"class":128},[40,965,169],{"class":54},[40,967,968,970,972],{"class":42,"line":253},[40,969,186],{"class":132},[40,971,136],{"class":128},[40,973,191],{"class":50},[975,976,977],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":35,"searchDepth":61,"depth":61,"links":979},[980,984,988,992],{"id":20,"depth":61,"text":20,"children":981},[982,983],{"id":28,"depth":150,"text":28},{"id":115,"depth":150,"text":116},{"id":275,"depth":61,"text":275,"children":985},[986,987],{"id":284,"depth":150,"text":28},{"id":439,"depth":150,"text":116},{"id":547,"depth":61,"text":547,"children":989},[990,991],{"id":562,"depth":150,"text":28},{"id":627,"depth":150,"text":116},{"id":728,"depth":61,"text":728,"children":993},[994,995],{"id":765,"depth":150,"text":28},{"id":850,"depth":150,"text":116},{"date":997,"tags":998,"draft":1001,"author":1002},"2026-03-14",[999,1000],"Linux","ユーザ管理",false,"nmin",[999,1000],{"_path":1005,"path":1005,"stem":1006,"title":1007,"description":1008,"body":1009,"meta":2553,"date":997,"tags":2557,"draft":1001,"author":1002},"\u002Fposts\u002Fwordpress","posts\u002FWordPress 構築","WordPress（Multipass）の構築メモ","multipass+Wordpress",{"type":10,"value":1010,"toc":2526},[1011,1014,1017,1020,1024,1078,1080,1084,1088,1341,1345,1355,1382,1386,1392,1422,1426,1439,1448,1452,1459,1500,1506,1596,1617,1621,1627,1633,1635,1639,1643,1650,1701,1705,1711,1753,1757,1767,1817,1819,1823,1827,1855,1859,1880,1917,1921,1926,1950,1981,1986,2022,2232,2234,2238,2242,2347,2351,2357,2405,2422,2426,2438,2507,2509,2513,2523],[13,1012,1013],{"id":1013},"はじめに",[22,1015,1016],{},"MultipassでWordpressを作った時のメモ。",[13,1018,1019],{"id":1019},"手順",[18,1021,1023],{"id":1022},"_1-構成","1. 構成",[356,1025,1026,1036],{},[359,1027,1028],{},[362,1029,1030,1033],{},[365,1031,1032],{},"コンポーネント",[365,1034,1035],{},"バージョン",[372,1037,1038,1046,1054,1062,1070],{},[362,1039,1040,1043],{},[377,1041,1042],{},"Ubuntu (Multipass)",[377,1044,1045],{},"22.04.3",[362,1047,1048,1051],{},[377,1049,1050],{},"Nginx",[377,1052,1053],{},"1.18.0",[362,1055,1056,1059],{},[377,1057,1058],{},"PHP-FPM",[377,1060,1061],{},"7.4.33",[362,1063,1064,1067],{},[377,1065,1066],{},"MySQL",[377,1068,1069],{},"8.0.34",[362,1071,1072,1075],{},[377,1073,1074],{},"WordPress",[377,1076,1077],{},"6.3.2",[271,1079],{},[18,1081,1083],{"id":1082},"_2-nginx","2. Nginx",[26,1085,1087],{"id":1086},"_2-1-インストール","2-1. インストール",[30,1089,1091],{"className":32,"code":1090,"language":34,"meta":35,"style":35},"# 前提パッケージのインストール\nsudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring\n\n# 公式署名キーのインポート\ncurl https:\u002F\u002Fnginx.org\u002Fkeys\u002Fnginx_signing.key | gpg --dearmor \\\n    | sudo tee \u002Fusr\u002Fshare\u002Fkeyrings\u002Fnginx-archive-keyring.gpg >\u002Fdev\u002Fnull\n\n# キーの検証\ngpg --dry-run --quiet --no-keyring --import --import-options import-show \\\n    \u002Fusr\u002Fshare\u002Fkeyrings\u002Fnginx-archive-keyring.gpg\n\n# apt リポジトリの設定\necho \"deb [signed-by=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fnginx-archive-keyring.gpg] \\\nhttp:\u002F\u002Fnginx.org\u002Fpackages\u002Fubuntu $(lsb_release -cs) nginx\" \\\n    | sudo tee \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fnginx.list\n\n# インストール・起動\nsudo apt update\nsudo apt install nginx-full\nsudo systemctl start nginx\nsudo systemctl enable nginx\nsudo systemctl status nginx\n",[37,1092,1093,1099,1124,1130,1135,1156,1176,1180,1186,1212,1218,1223,1229,1241,1258,1270,1275,1281,1291,1303,1317,1329],{"__ignoreMap":35},[40,1094,1095],{"class":42,"line":43},[40,1096,1098],{"class":1097},"sJ8bj","# 前提パッケージのインストール\n",[40,1100,1101,1103,1106,1109,1112,1115,1118,1121],{"class":42,"line":61},[40,1102,47],{"class":46},[40,1104,1105],{"class":50}," apt",[40,1107,1108],{"class":50}," install",[40,1110,1111],{"class":50}," curl",[40,1113,1114],{"class":50}," gnupg2",[40,1116,1117],{"class":50}," ca-certificates",[40,1119,1120],{"class":50}," lsb-release",[40,1122,1123],{"class":50}," ubuntu-keyring\n",[40,1125,1126],{"class":42,"line":150},[40,1127,1129],{"emptyLinePlaceholder":1128},true,"\n",[40,1131,1132],{"class":42,"line":161},[40,1133,1134],{"class":1097},"# 公式署名キーのインポート\n",[40,1136,1137,1140,1143,1147,1150,1153],{"class":42,"line":172},[40,1138,1139],{"class":46},"curl",[40,1141,1142],{"class":50}," https:\u002F\u002Fnginx.org\u002Fkeys\u002Fnginx_signing.key",[40,1144,1146],{"class":1145},"szBVR"," |",[40,1148,1149],{"class":46}," gpg",[40,1151,1152],{"class":54}," --dearmor",[40,1154,1155],{"class":54}," \\\n",[40,1157,1158,1161,1164,1167,1170,1173],{"class":42,"line":183},[40,1159,1160],{"class":1145},"    |",[40,1162,1163],{"class":46}," sudo",[40,1165,1166],{"class":50}," tee",[40,1168,1169],{"class":50}," \u002Fusr\u002Fshare\u002Fkeyrings\u002Fnginx-archive-keyring.gpg",[40,1171,1172],{"class":1145}," >",[40,1174,1175],{"class":50},"\u002Fdev\u002Fnull\n",[40,1177,1178],{"class":42,"line":253},[40,1179,1129],{"emptyLinePlaceholder":1128},[40,1181,1183],{"class":42,"line":1182},8,[40,1184,1185],{"class":1097},"# キーの検証\n",[40,1187,1189,1192,1195,1198,1201,1204,1207,1210],{"class":42,"line":1188},9,[40,1190,1191],{"class":46},"gpg",[40,1193,1194],{"class":54}," --dry-run",[40,1196,1197],{"class":54}," --quiet",[40,1199,1200],{"class":54}," --no-keyring",[40,1202,1203],{"class":54}," --import",[40,1205,1206],{"class":54}," --import-options",[40,1208,1209],{"class":50}," import-show",[40,1211,1155],{"class":54},[40,1213,1215],{"class":42,"line":1214},10,[40,1216,1217],{"class":50},"    \u002Fusr\u002Fshare\u002Fkeyrings\u002Fnginx-archive-keyring.gpg\n",[40,1219,1221],{"class":42,"line":1220},11,[40,1222,1129],{"emptyLinePlaceholder":1128},[40,1224,1226],{"class":42,"line":1225},12,[40,1227,1228],{"class":1097},"# apt リポジトリの設定\n",[40,1230,1232,1235,1238],{"class":42,"line":1231},13,[40,1233,1234],{"class":54},"echo",[40,1236,1237],{"class":50}," \"deb [signed-by=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fnginx-archive-keyring.gpg] ",[40,1239,1240],{"class":54},"\\\n",[40,1242,1244,1247,1250,1253,1256],{"class":42,"line":1243},14,[40,1245,1246],{"class":50},"http:\u002F\u002Fnginx.org\u002Fpackages\u002Fubuntu $(",[40,1248,1249],{"class":46},"lsb_release",[40,1251,1252],{"class":54}," -cs",[40,1254,1255],{"class":50},") nginx\"",[40,1257,1155],{"class":54},[40,1259,1261,1263,1265,1267],{"class":42,"line":1260},15,[40,1262,1160],{"class":1145},[40,1264,1163],{"class":46},[40,1266,1166],{"class":50},[40,1268,1269],{"class":50}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fnginx.list\n",[40,1271,1273],{"class":42,"line":1272},16,[40,1274,1129],{"emptyLinePlaceholder":1128},[40,1276,1278],{"class":42,"line":1277},17,[40,1279,1280],{"class":1097},"# インストール・起動\n",[40,1282,1284,1286,1288],{"class":42,"line":1283},18,[40,1285,47],{"class":46},[40,1287,1105],{"class":50},[40,1289,1290],{"class":50}," update\n",[40,1292,1294,1296,1298,1300],{"class":42,"line":1293},19,[40,1295,47],{"class":46},[40,1297,1105],{"class":50},[40,1299,1108],{"class":50},[40,1301,1302],{"class":50}," nginx-full\n",[40,1304,1306,1308,1311,1314],{"class":42,"line":1305},20,[40,1307,47],{"class":46},[40,1309,1310],{"class":50}," systemctl",[40,1312,1313],{"class":50}," start",[40,1315,1316],{"class":50}," nginx\n",[40,1318,1320,1322,1324,1327],{"class":42,"line":1319},21,[40,1321,47],{"class":46},[40,1323,1310],{"class":50},[40,1325,1326],{"class":50}," enable",[40,1328,1316],{"class":50},[40,1330,1332,1334,1336,1339],{"class":42,"line":1331},22,[40,1333,47],{"class":46},[40,1335,1310],{"class":50},[40,1337,1338],{"class":50}," status",[40,1340,1316],{"class":50},[26,1342,1344],{"id":1343},"_2-2-アップロードサイズ制限の変更","2-2. アップロードサイズ制限の変更",[22,1346,1347,1350,1351,1354],{},[37,1348,1349],{},"\u002Fetc\u002Fnginx\u002Fnginx.conf"," の ",[37,1352,1353],{},"http"," ブロックに以下を追加する。",[30,1356,1360],{"className":1357,"code":1358,"language":1359,"meta":35,"style":35},"language-nginx shiki shiki-themes github-light github-dark","http {\n    client_max_body_size 32M;\n    ...\n}\n","nginx",[37,1361,1362,1367,1372,1377],{"__ignoreMap":35},[40,1363,1364],{"class":42,"line":43},[40,1365,1366],{},"http {\n",[40,1368,1369],{"class":42,"line":61},[40,1370,1371],{},"    client_max_body_size 32M;\n",[40,1373,1374],{"class":42,"line":150},[40,1375,1376],{},"    ...\n",[40,1378,1379],{"class":42,"line":161},[40,1380,1381],{},"}\n",[26,1383,1385],{"id":1384},"_2-3-ログフォーマットの変更","2-3. ログフォーマットの変更",[22,1387,1388,1389,1391],{},"同じく ",[37,1390,1349],{}," に以下を追加する。",[30,1393,1395],{"className":1357,"code":1394,"language":1359,"meta":35,"style":35},"log_format custom '[nginx] time:$time_iso8601 server_addr:$server_addr host:$host '\n                   'method:$request_method reqsize:$request_length uri:$uri '\n                   'query:$args status:$status size:$body_bytes_sent referer:$http_referer '\n                   'ua:$http_user_agent forwardedfor:$http_x_forwarded_for '\n                   'reqtime:$request_time apptime:$upstream_response_time';\n",[37,1396,1397,1402,1407,1412,1417],{"__ignoreMap":35},[40,1398,1399],{"class":42,"line":43},[40,1400,1401],{},"log_format custom '[nginx] time:$time_iso8601 server_addr:$server_addr host:$host '\n",[40,1403,1404],{"class":42,"line":61},[40,1405,1406],{},"                   'method:$request_method reqsize:$request_length uri:$uri '\n",[40,1408,1409],{"class":42,"line":150},[40,1410,1411],{},"                   'query:$args status:$status size:$body_bytes_sent referer:$http_referer '\n",[40,1413,1414],{"class":42,"line":161},[40,1415,1416],{},"                   'ua:$http_user_agent forwardedfor:$http_x_forwarded_for '\n",[40,1418,1419],{"class":42,"line":172},[40,1420,1421],{},"                   'reqtime:$request_time apptime:$upstream_response_time';\n",[26,1423,1425],{"id":1424},"_2-4-デフォルト設定ファイルの編集","2-4. デフォルト設定ファイルの編集",[22,1427,1428,1350,1431,1434,1435,1438],{},[37,1429,1430],{},"\u002Fetc\u002Fnginx\u002Fsites-available\u002Fdefault",[37,1432,1433],{},"index"," ディレクティブに ",[37,1436,1437],{},"index.php"," を追加する。",[30,1440,1442],{"className":1357,"code":1441,"language":1359,"meta":35,"style":35},"index index.php index.html index.htm index.nginx-debian.html;\n",[37,1443,1444],{"__ignoreMap":35},[40,1445,1446],{"class":42,"line":43},[40,1447,1441],{},[26,1449,1451],{"id":1450},"_2-5-バーチャルホストの設定","2-5. バーチャルホストの設定",[22,1453,1454,1455,1458],{},"設定ファイルを作成し、",[37,1456,1457],{},"sites-enabled"," にシンボリックリンクを張る。",[30,1460,1462],{"className":32,"code":1461,"language":34,"meta":35,"style":35},"sudo vim \u002Fetc\u002Fnginx\u002Fsites-available\u002Fdev.wp.me.conf\nsudo ln -s \u002Fetc\u002Fnginx\u002Fsites-available\u002Fdev.wp.me.conf \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F\nsudo systemctl restart nginx\n",[37,1463,1464,1474,1489],{"__ignoreMap":35},[40,1465,1466,1468,1471],{"class":42,"line":43},[40,1467,47],{"class":46},[40,1469,1470],{"class":50}," vim",[40,1472,1473],{"class":50}," \u002Fetc\u002Fnginx\u002Fsites-available\u002Fdev.wp.me.conf\n",[40,1475,1476,1478,1481,1483,1486],{"class":42,"line":61},[40,1477,47],{"class":46},[40,1479,1480],{"class":50}," ln",[40,1482,781],{"class":54},[40,1484,1485],{"class":50}," \u002Fetc\u002Fnginx\u002Fsites-available\u002Fdev.wp.me.conf",[40,1487,1488],{"class":50}," \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F\n",[40,1490,1491,1493,1495,1498],{"class":42,"line":150},[40,1492,47],{"class":46},[40,1494,1310],{"class":50},[40,1496,1497],{"class":50}," restart",[40,1499,1316],{"class":50},[22,1501,1502,1505],{},[37,1503,1504],{},"dev.wp.me.conf"," の内容：",[30,1507,1509],{"className":1357,"code":1508,"language":1359,"meta":35,"style":35},"server {\n    listen 80;\n    server_name dev.wp.me;\n    root \u002Fvar\u002Fwww\u002Fhtml\u002Fwordpress;\n    index index.php index.html index.htm index.nginx-debian.html;\n\n    access_log \u002Fvar\u002Flog\u002Fnginx\u002Faccess.log custom;\n    error_log  \u002Fvar\u002Flog\u002Fnginx\u002Ferror.log warn;\n\n    location \u002F {\n        try_files $uri $uri\u002F \u002Findex.php?$args;\n    }\n\n    location ~ \\.php$ {\n        include snippets\u002Ffastcgi-php.conf;\n        fastcgi_pass unix:\u002Fvar\u002Frun\u002Fphp\u002Fphp7.4-fpm.sock;\n    }\n}\n",[37,1510,1511,1516,1521,1526,1531,1536,1540,1545,1550,1554,1559,1564,1569,1573,1578,1583,1588,1592],{"__ignoreMap":35},[40,1512,1513],{"class":42,"line":43},[40,1514,1515],{},"server {\n",[40,1517,1518],{"class":42,"line":61},[40,1519,1520],{},"    listen 80;\n",[40,1522,1523],{"class":42,"line":150},[40,1524,1525],{},"    server_name dev.wp.me;\n",[40,1527,1528],{"class":42,"line":161},[40,1529,1530],{},"    root \u002Fvar\u002Fwww\u002Fhtml\u002Fwordpress;\n",[40,1532,1533],{"class":42,"line":172},[40,1534,1535],{},"    index index.php index.html index.htm index.nginx-debian.html;\n",[40,1537,1538],{"class":42,"line":183},[40,1539,1129],{"emptyLinePlaceholder":1128},[40,1541,1542],{"class":42,"line":253},[40,1543,1544],{},"    access_log \u002Fvar\u002Flog\u002Fnginx\u002Faccess.log custom;\n",[40,1546,1547],{"class":42,"line":1182},[40,1548,1549],{},"    error_log  \u002Fvar\u002Flog\u002Fnginx\u002Ferror.log warn;\n",[40,1551,1552],{"class":42,"line":1188},[40,1553,1129],{"emptyLinePlaceholder":1128},[40,1555,1556],{"class":42,"line":1214},[40,1557,1558],{},"    location \u002F {\n",[40,1560,1561],{"class":42,"line":1220},[40,1562,1563],{},"        try_files $uri $uri\u002F \u002Findex.php?$args;\n",[40,1565,1566],{"class":42,"line":1225},[40,1567,1568],{},"    }\n",[40,1570,1571],{"class":42,"line":1231},[40,1572,1129],{"emptyLinePlaceholder":1128},[40,1574,1575],{"class":42,"line":1243},[40,1576,1577],{},"    location ~ \\.php$ {\n",[40,1579,1580],{"class":42,"line":1260},[40,1581,1582],{},"        include snippets\u002Ffastcgi-php.conf;\n",[40,1584,1585],{"class":42,"line":1272},[40,1586,1587],{},"        fastcgi_pass unix:\u002Fvar\u002Frun\u002Fphp\u002Fphp7.4-fpm.sock;\n",[40,1589,1590],{"class":42,"line":1277},[40,1591,1568],{},[40,1593,1594],{"class":42,"line":1283},[40,1595,1381],{},[261,1597,1598],{},[22,1599,1600,1604,1605,1608,1609,1612,1613,1616],{},[1601,1602,1603],"strong",{},"Note:"," ",[37,1606,1607],{},"access_log"," のフォーマットを ",[37,1610,1611],{},"main"," から ",[37,1614,1615],{},"custom","（2-3 で定義）に変更している。",[26,1618,1620],{"id":1619},"_2-6-ローカルの-hosts-ファイルに追記","2-6. ローカルの hosts ファイルに追記",[22,1622,1623,1624,1391],{},"ローカル Mac の ",[37,1625,1626],{},"\u002Fetc\u002Fhosts",[30,1628,1631],{"className":1629,"code":1630,"language":110},[108],"192.168.64.xx  dev.wp.me\n",[37,1632,1630],{"__ignoreMap":35},[271,1634],{},[18,1636,1638],{"id":1637},"_3-php","3. PHP",[26,1640,1642],{"id":1641},"_3-1-php-fpm-74-のインストール","3-1. PHP-FPM 7.4 のインストール",[22,1644,1645,1646,1649],{},"Ubuntu 22.04 の標準リポジトリには PHP 7.4 が含まれないため、",[37,1647,1648],{},"ondrej\u002Fphp"," PPA を追加する。",[30,1651,1653],{"className":32,"code":1652,"language":34,"meta":35,"style":35},"sudo add-apt-repository ppa:ondrej\u002Fphp\nsudo apt update\nsudo apt install php7.4-fpm\n\nphp -v\n# PHP 7.4.33 (cli)\n",[37,1654,1655,1665,1673,1684,1688,1696],{"__ignoreMap":35},[40,1656,1657,1659,1662],{"class":42,"line":43},[40,1658,47],{"class":46},[40,1660,1661],{"class":50}," add-apt-repository",[40,1663,1664],{"class":50}," ppa:ondrej\u002Fphp\n",[40,1666,1667,1669,1671],{"class":42,"line":61},[40,1668,47],{"class":46},[40,1670,1105],{"class":50},[40,1672,1290],{"class":50},[40,1674,1675,1677,1679,1681],{"class":42,"line":150},[40,1676,47],{"class":46},[40,1678,1105],{"class":50},[40,1680,1108],{"class":50},[40,1682,1683],{"class":50}," php7.4-fpm\n",[40,1685,1686],{"class":42,"line":161},[40,1687,1129],{"emptyLinePlaceholder":1128},[40,1689,1690,1693],{"class":42,"line":172},[40,1691,1692],{"class":46},"php",[40,1694,1695],{"class":54}," -v\n",[40,1697,1698],{"class":42,"line":183},[40,1699,1700],{"class":1097},"# PHP 7.4.33 (cli)\n",[26,1702,1704],{"id":1703},"_3-2-phpini-の編集","3-2. php.ini の編集",[22,1706,1707,1710],{},[37,1708,1709],{},"\u002Fetc\u002Fphp\u002F7.4\u002Ffpm\u002Fphp.ini"," を以下の値に変更する。",[30,1712,1716],{"className":1713,"code":1714,"language":1715,"meta":35,"style":35},"language-ini shiki shiki-themes github-light github-dark","file_uploads        = On\nmax_execution_time  = 300\nmemory_limit        = 256M\npost_max_size       = 32M\nmax_input_time      = 60\nmax_input_vars      = 4440\nupload_max_filesize = 32M\n","ini",[37,1717,1718,1723,1728,1733,1738,1743,1748],{"__ignoreMap":35},[40,1719,1720],{"class":42,"line":43},[40,1721,1722],{},"file_uploads        = On\n",[40,1724,1725],{"class":42,"line":61},[40,1726,1727],{},"max_execution_time  = 300\n",[40,1729,1730],{"class":42,"line":150},[40,1731,1732],{},"memory_limit        = 256M\n",[40,1734,1735],{"class":42,"line":161},[40,1736,1737],{},"post_max_size       = 32M\n",[40,1739,1740],{"class":42,"line":172},[40,1741,1742],{},"max_input_time      = 60\n",[40,1744,1745],{"class":42,"line":183},[40,1746,1747],{},"max_input_vars      = 4440\n",[40,1749,1750],{"class":42,"line":253},[40,1751,1752],{},"upload_max_filesize = 32M\n",[26,1754,1756],{"id":1755},"_3-3-php-fpm-プロセスマネージャーのチューニング","3-3. PHP-FPM プロセスマネージャーのチューニング",[22,1758,1759,1762,1763,1766],{},[37,1760,1761],{},"\u002Fetc\u002Fphp\u002F7.4\u002Ffpm\u002Fpool.d\u002Fwww.conf"," を編集し、プロセスマネージャーを ",[37,1764,1765],{},"static"," に変更する。",[30,1768,1770],{"className":1713,"code":1769,"language":1715,"meta":35,"style":35},"pm                   = static\npm.max_children      = 50\npm.start_servers     = 50\npm.min_spare_servers = 50\npm.max_spare_servers = 50\npm.process_idle_timeout = 10s\npm.max_requests      = 100\nphp_admin_value[memory_limit] = 256M\nrequest_terminate_timeout = 180\n",[37,1771,1772,1777,1782,1787,1792,1797,1802,1807,1812],{"__ignoreMap":35},[40,1773,1774],{"class":42,"line":43},[40,1775,1776],{},"pm                   = static\n",[40,1778,1779],{"class":42,"line":61},[40,1780,1781],{},"pm.max_children      = 50\n",[40,1783,1784],{"class":42,"line":150},[40,1785,1786],{},"pm.start_servers     = 50\n",[40,1788,1789],{"class":42,"line":161},[40,1790,1791],{},"pm.min_spare_servers = 50\n",[40,1793,1794],{"class":42,"line":172},[40,1795,1796],{},"pm.max_spare_servers = 50\n",[40,1798,1799],{"class":42,"line":183},[40,1800,1801],{},"pm.process_idle_timeout = 10s\n",[40,1803,1804],{"class":42,"line":253},[40,1805,1806],{},"pm.max_requests      = 100\n",[40,1808,1809],{"class":42,"line":1182},[40,1810,1811],{},"php_admin_value[memory_limit] = 256M\n",[40,1813,1814],{"class":42,"line":1188},[40,1815,1816],{},"request_terminate_timeout = 180\n",[271,1818],{},[18,1820,1822],{"id":1821},"_4-mysql","4. MySQL",[26,1824,1826],{"id":1825},"_4-1-mysql-8-のインストール","4-1. MySQL 8 のインストール",[30,1828,1830],{"className":32,"code":1829,"language":34,"meta":35,"style":35},"sudo apt-get update\nsudo apt-get install mysql-server mysql-client\n",[37,1831,1832,1841],{"__ignoreMap":35},[40,1833,1834,1836,1839],{"class":42,"line":43},[40,1835,47],{"class":46},[40,1837,1838],{"class":50}," apt-get",[40,1840,1290],{"class":50},[40,1842,1843,1845,1847,1849,1852],{"class":42,"line":61},[40,1844,47],{"class":46},[40,1846,1838],{"class":50},[40,1848,1108],{"class":50},[40,1850,1851],{"class":50}," mysql-server",[40,1853,1854],{"class":50}," mysql-client\n",[26,1856,1858],{"id":1857},"_4-2-データベースユーザーの作成","4-2. データベース・ユーザーの作成",[30,1860,1862],{"className":32,"code":1861,"language":34,"meta":35,"style":35},"sudo mysql -u root -p\n",[37,1863,1864],{"__ignoreMap":35},[40,1865,1866,1868,1871,1874,1877],{"class":42,"line":43},[40,1867,47],{"class":46},[40,1869,1870],{"class":50}," mysql",[40,1872,1873],{"class":54}," -u",[40,1875,1876],{"class":50}," root",[40,1878,1879],{"class":54}," -p\n",[30,1881,1885],{"className":1882,"code":1883,"language":1884,"meta":35,"style":35},"language-sql shiki shiki-themes github-light github-dark","CREATE DATABASE wp_db CHARACTER SET utf8 COLLATE utf8_bin;\nCREATE USER 'wp-user'@'%' IDENTIFIED BY '任意のパスワード';\nGRANT ALL PRIVILEGES ON wp_db.* TO 'wp-user'@'%';\nFLUSH PRIVILEGES;\nGRANT PROCESS ON *.* TO 'root'@'localhost';\nQUIT;\n","sql",[37,1886,1887,1892,1897,1902,1907,1912],{"__ignoreMap":35},[40,1888,1889],{"class":42,"line":43},[40,1890,1891],{},"CREATE DATABASE wp_db CHARACTER SET utf8 COLLATE utf8_bin;\n",[40,1893,1894],{"class":42,"line":61},[40,1895,1896],{},"CREATE USER 'wp-user'@'%' IDENTIFIED BY '任意のパスワード';\n",[40,1898,1899],{"class":42,"line":150},[40,1900,1901],{},"GRANT ALL PRIVILEGES ON wp_db.* TO 'wp-user'@'%';\n",[40,1903,1904],{"class":42,"line":161},[40,1905,1906],{},"FLUSH PRIVILEGES;\n",[40,1908,1909],{"class":42,"line":172},[40,1910,1911],{},"GRANT PROCESS ON *.* TO 'root'@'localhost';\n",[40,1913,1914],{"class":42,"line":183},[40,1915,1916],{},"QUIT;\n",[26,1918,1920],{"id":1919},"_4-3-mysqlバックアップスクリプトの作成第5世代","4-3. MySQLバックアップスクリプトの作成（第5世代）",[22,1922,1923],{},[1601,1924,1925],{},"認証情報ファイル",[30,1927,1929],{"className":32,"code":1928,"language":34,"meta":35,"style":35},"sudo vim ~\u002Fsecrets.sh\nchmod 600 ~\u002Fsecrets.sh\n",[37,1930,1931,1940],{"__ignoreMap":35},[40,1932,1933,1935,1937],{"class":42,"line":43},[40,1934,47],{"class":46},[40,1936,1470],{"class":50},[40,1938,1939],{"class":50}," ~\u002Fsecrets.sh\n",[40,1941,1942,1945,1948],{"class":42,"line":61},[40,1943,1944],{"class":46},"chmod",[40,1946,1947],{"class":54}," 600",[40,1949,1939],{"class":50},[30,1951,1953],{"className":32,"code":1952,"language":34,"meta":35,"style":35},"# ~\u002Fsecrets.sh\nDB_USER=\"root\"\nDB_PASSWORD=\"パスワード\"\n",[37,1954,1955,1960,1971],{"__ignoreMap":35},[40,1956,1957],{"class":42,"line":43},[40,1958,1959],{"class":1097},"# ~\u002Fsecrets.sh\n",[40,1961,1962,1965,1968],{"class":42,"line":61},[40,1963,1964],{"class":128},"DB_USER",[40,1966,1967],{"class":1145},"=",[40,1969,1970],{"class":50},"\"root\"\n",[40,1972,1973,1976,1978],{"class":42,"line":150},[40,1974,1975],{"class":128},"DB_PASSWORD",[40,1977,1967],{"class":1145},[40,1979,1980],{"class":50},"\"パスワード\"\n",[22,1982,1983],{},[1601,1984,1985],{},"バックアップスクリプト",[30,1987,1989],{"className":32,"code":1988,"language":34,"meta":35,"style":35},"sudo mkdir -p \u002Ftmp\u002Fshell\u002Fmysql_bk\nsudo vim \u002Ftmp\u002Fshell\u002Fmysql_bk\u002Fmysql_backup.sh\nchmod +x \u002Ftmp\u002Fshell\u002Fmysql_bk\u002Fmysql_backup.sh\n",[37,1990,1991,2004,2013],{"__ignoreMap":35},[40,1992,1993,1995,1998,2001],{"class":42,"line":43},[40,1994,47],{"class":46},[40,1996,1997],{"class":50}," mkdir",[40,1999,2000],{"class":54}," -p",[40,2002,2003],{"class":50}," \u002Ftmp\u002Fshell\u002Fmysql_bk\n",[40,2005,2006,2008,2010],{"class":42,"line":61},[40,2007,47],{"class":46},[40,2009,1470],{"class":50},[40,2011,2012],{"class":50}," \u002Ftmp\u002Fshell\u002Fmysql_bk\u002Fmysql_backup.sh\n",[40,2014,2015,2017,2020],{"class":42,"line":150},[40,2016,1944],{"class":46},[40,2018,2019],{"class":50}," +x",[40,2021,2012],{"class":50},[30,2023,2025],{"className":32,"code":2024,"language":34,"meta":35,"style":35},"#!\u002Fbin\u002Fbash\n\n# 認証情報の読み込み\nsource ~\u002Fsecrets.sh\n\nDB_NAME=\"wp_db\"\nBACKUP_DIR=\"\u002Ftmp\u002Fshell\u002Fmysql_bk\"\nDATE=$(date +%F)\nBACKUP_FILE=\"$BACKUP_DIR\u002Fbackup_$DATE.sql\"\n\n# バックアップ作成\nmysqldump -u\"$DB_USER\" -p\"$DB_PASSWORD\" \"$DB_NAME\" > \"$BACKUP_FILE\"\n\n# 圧縮\ngzip \"$BACKUP_FILE\"\n\n# 5日より古いバックアップを削除\nfind \"$BACKUP_DIR\" -type f -name \"backup_*\" -mtime +5 -exec rm {} \\;\n",[37,2026,2027,2032,2036,2041,2048,2052,2062,2072,2090,2112,2116,2121,2162,2166,2171,2182,2186,2191],{"__ignoreMap":35},[40,2028,2029],{"class":42,"line":43},[40,2030,2031],{"class":1097},"#!\u002Fbin\u002Fbash\n",[40,2033,2034],{"class":42,"line":61},[40,2035,1129],{"emptyLinePlaceholder":1128},[40,2037,2038],{"class":42,"line":150},[40,2039,2040],{"class":1097},"# 認証情報の読み込み\n",[40,2042,2043,2046],{"class":42,"line":161},[40,2044,2045],{"class":54},"source",[40,2047,1939],{"class":50},[40,2049,2050],{"class":42,"line":172},[40,2051,1129],{"emptyLinePlaceholder":1128},[40,2053,2054,2057,2059],{"class":42,"line":183},[40,2055,2056],{"class":128},"DB_NAME",[40,2058,1967],{"class":1145},[40,2060,2061],{"class":50},"\"wp_db\"\n",[40,2063,2064,2067,2069],{"class":42,"line":253},[40,2065,2066],{"class":128},"BACKUP_DIR",[40,2068,1967],{"class":1145},[40,2070,2071],{"class":50},"\"\u002Ftmp\u002Fshell\u002Fmysql_bk\"\n",[40,2073,2074,2077,2079,2082,2084,2087],{"class":42,"line":1182},[40,2075,2076],{"class":128},"DATE",[40,2078,1967],{"class":1145},[40,2080,2081],{"class":128},"$(",[40,2083,710],{"class":46},[40,2085,2086],{"class":50}," +%F",[40,2088,2089],{"class":128},")\n",[40,2091,2092,2095,2097,2100,2103,2106,2109],{"class":42,"line":1188},[40,2093,2094],{"class":128},"BACKUP_FILE",[40,2096,1967],{"class":1145},[40,2098,2099],{"class":50},"\"",[40,2101,2102],{"class":128},"$BACKUP_DIR",[40,2104,2105],{"class":50},"\u002Fbackup_",[40,2107,2108],{"class":128},"$DATE",[40,2110,2111],{"class":50},".sql\"\n",[40,2113,2114],{"class":42,"line":1214},[40,2115,1129],{"emptyLinePlaceholder":1128},[40,2117,2118],{"class":42,"line":1220},[40,2119,2120],{"class":1097},"# バックアップ作成\n",[40,2122,2123,2126,2128,2130,2133,2135,2137,2139,2142,2144,2147,2150,2152,2154,2156,2159],{"class":42,"line":1225},[40,2124,2125],{"class":46},"mysqldump",[40,2127,1873],{"class":54},[40,2129,2099],{"class":50},[40,2131,2132],{"class":128},"$DB_USER",[40,2134,2099],{"class":50},[40,2136,2000],{"class":54},[40,2138,2099],{"class":50},[40,2140,2141],{"class":128},"$DB_PASSWORD",[40,2143,2099],{"class":50},[40,2145,2146],{"class":50}," \"",[40,2148,2149],{"class":128},"$DB_NAME",[40,2151,2099],{"class":50},[40,2153,1172],{"class":1145},[40,2155,2146],{"class":50},[40,2157,2158],{"class":128},"$BACKUP_FILE",[40,2160,2161],{"class":50},"\"\n",[40,2163,2164],{"class":42,"line":1231},[40,2165,1129],{"emptyLinePlaceholder":1128},[40,2167,2168],{"class":42,"line":1243},[40,2169,2170],{"class":1097},"# 圧縮\n",[40,2172,2173,2176,2178,2180],{"class":42,"line":1260},[40,2174,2175],{"class":46},"gzip",[40,2177,2146],{"class":50},[40,2179,2158],{"class":128},[40,2181,2161],{"class":50},[40,2183,2184],{"class":42,"line":1272},[40,2185,1129],{"emptyLinePlaceholder":1128},[40,2187,2188],{"class":42,"line":1277},[40,2189,2190],{"class":1097},"# 5日より古いバックアップを削除\n",[40,2192,2193,2196,2198,2200,2202,2205,2208,2211,2214,2217,2220,2223,2226,2229],{"class":42,"line":1283},[40,2194,2195],{"class":46},"find",[40,2197,2146],{"class":50},[40,2199,2102],{"class":128},[40,2201,2099],{"class":50},[40,2203,2204],{"class":54}," -type",[40,2206,2207],{"class":50}," f",[40,2209,2210],{"class":54}," -name",[40,2212,2213],{"class":50}," \"backup_*\"",[40,2215,2216],{"class":54}," -mtime",[40,2218,2219],{"class":50}," +5",[40,2221,2222],{"class":54}," -exec",[40,2224,2225],{"class":50}," rm",[40,2227,2228],{"class":50}," {}",[40,2230,2231],{"class":54}," \\;\n",[271,2233],{},[18,2235,2237],{"id":2236},"_5-wordpress","5. WordPress",[26,2239,2241],{"id":2240},"_5-1-インストール","5-1. インストール",[30,2243,2245],{"className":32,"code":2244,"language":34,"meta":35,"style":35},"cd \u002Ftmp\nwget https:\u002F\u002Fwordpress.org\u002Flatest.tar.gz\ntar -zxvf latest.tar.gz\n\n# Nginx のドキュメントルートに配置\nsudo mv wordpress \u002Fvar\u002Fwww\u002Fhtml\u002F\n\n# 所有者を Nginx の実行ユーザーに変更\nsudo chown -R www-data:www-data \u002Fvar\u002Fwww\u002Fhtml\u002Fwordpress\n\n# 設定ファイルを作成\ncd \u002Fvar\u002Fwww\u002Fhtml\u002Fwordpress\ncp wp-config-sample.php wp-config.php\n",[37,2246,2247,2255,2263,2274,2278,2283,2296,2300,2305,2321,2325,2330,2336],{"__ignoreMap":35},[40,2248,2249,2252],{"class":42,"line":43},[40,2250,2251],{"class":54},"cd",[40,2253,2254],{"class":50}," \u002Ftmp\n",[40,2256,2257,2260],{"class":42,"line":61},[40,2258,2259],{"class":46},"wget",[40,2261,2262],{"class":50}," https:\u002F\u002Fwordpress.org\u002Flatest.tar.gz\n",[40,2264,2265,2268,2271],{"class":42,"line":150},[40,2266,2267],{"class":46},"tar",[40,2269,2270],{"class":54}," -zxvf",[40,2272,2273],{"class":50}," latest.tar.gz\n",[40,2275,2276],{"class":42,"line":161},[40,2277,1129],{"emptyLinePlaceholder":1128},[40,2279,2280],{"class":42,"line":172},[40,2281,2282],{"class":1097},"# Nginx のドキュメントルートに配置\n",[40,2284,2285,2287,2290,2293],{"class":42,"line":183},[40,2286,47],{"class":46},[40,2288,2289],{"class":50}," mv",[40,2291,2292],{"class":50}," wordpress",[40,2294,2295],{"class":50}," \u002Fvar\u002Fwww\u002Fhtml\u002F\n",[40,2297,2298],{"class":42,"line":253},[40,2299,1129],{"emptyLinePlaceholder":1128},[40,2301,2302],{"class":42,"line":1182},[40,2303,2304],{"class":1097},"# 所有者を Nginx の実行ユーザーに変更\n",[40,2306,2307,2309,2312,2315,2318],{"class":42,"line":1188},[40,2308,47],{"class":46},[40,2310,2311],{"class":50}," chown",[40,2313,2314],{"class":54}," -R",[40,2316,2317],{"class":50}," www-data:www-data",[40,2319,2320],{"class":50}," \u002Fvar\u002Fwww\u002Fhtml\u002Fwordpress\n",[40,2322,2323],{"class":42,"line":1214},[40,2324,1129],{"emptyLinePlaceholder":1128},[40,2326,2327],{"class":42,"line":1220},[40,2328,2329],{"class":1097},"# 設定ファイルを作成\n",[40,2331,2332,2334],{"class":42,"line":1225},[40,2333,2251],{"class":54},[40,2335,2320],{"class":50},[40,2337,2338,2341,2344],{"class":42,"line":1231},[40,2339,2340],{"class":46},"cp",[40,2342,2343],{"class":50}," wp-config-sample.php",[40,2345,2346],{"class":50}," wp-config.php\n",[26,2348,2350],{"id":2349},"_5-2-環境変数による認証情報の管理","5-2. 環境変数による認証情報の管理",[22,2352,2353,2356],{},[37,2354,2355],{},"phpdotenv"," を使用し、認証情報をコードから分離する。",[30,2358,2360],{"className":32,"code":2359,"language":34,"meta":35,"style":35},"cd \u002Fvar\u002Fwww\u002Fhtml\u002Fwordpress\n\n# phpdotenv のインストール\ncomposer require vlucas\u002Fphpdotenv\n\n# .env ファイルの作成\nvim .env\n",[37,2361,2362,2368,2372,2377,2388,2392,2397],{"__ignoreMap":35},[40,2363,2364,2366],{"class":42,"line":43},[40,2365,2251],{"class":54},[40,2367,2320],{"class":50},[40,2369,2370],{"class":42,"line":61},[40,2371,1129],{"emptyLinePlaceholder":1128},[40,2373,2374],{"class":42,"line":150},[40,2375,2376],{"class":1097},"# phpdotenv のインストール\n",[40,2378,2379,2382,2385],{"class":42,"line":161},[40,2380,2381],{"class":46},"composer",[40,2383,2384],{"class":50}," require",[40,2386,2387],{"class":50}," vlucas\u002Fphpdotenv\n",[40,2389,2390],{"class":42,"line":172},[40,2391,1129],{"emptyLinePlaceholder":1128},[40,2393,2394],{"class":42,"line":183},[40,2395,2396],{"class":1097},"# .env ファイルの作成\n",[40,2398,2399,2402],{"class":42,"line":253},[40,2400,2401],{"class":46},"vim",[40,2403,2404],{"class":50}," .env\n",[30,2406,2410],{"className":2407,"code":2408,"language":2409,"meta":35,"style":35},"language-dotenv shiki shiki-themes github-light github-dark","DATABASE_USER=\"wp-user\"\nDATABASE_PASSWORD=\"パスワード\"\n","dotenv",[37,2411,2412,2417],{"__ignoreMap":35},[40,2413,2414],{"class":42,"line":43},[40,2415,2416],{},"DATABASE_USER=\"wp-user\"\n",[40,2418,2419],{"class":42,"line":61},[40,2420,2421],{},"DATABASE_PASSWORD=\"パスワード\"\n",[26,2423,2425],{"id":2424},"_5-3-wp-configphp-の編集","5-3. wp-config.php の編集",[30,2427,2429],{"className":32,"code":2428,"language":34,"meta":35,"style":35},"vim \u002Fvar\u002Fwww\u002Fhtml\u002Fwordpress\u002Fwp-config.php\n",[37,2430,2431],{"__ignoreMap":35},[40,2432,2433,2435],{"class":42,"line":43},[40,2434,2401],{"class":46},[40,2436,2437],{"class":50}," \u002Fvar\u002Fwww\u002Fhtml\u002Fwordpress\u002Fwp-config.php\n",[30,2439,2442],{"className":2440,"code":2441,"language":1692,"meta":35,"style":35},"language-php shiki shiki-themes github-light github-dark","\u003C?php\nrequire 'vendor\u002Fautoload.php';\n\n$dotenv = Dotenv\\Dotenv::createImmutable(__DIR__);\n$dotenv->load();\n\ndefine('DB_NAME',     'wp_db');\ndefine('DB_USER',     $_ENV['DATABASE_USER']);\ndefine('DB_PASSWORD', $_ENV['DATABASE_PASSWORD']);\ndefine('DB_HOST',     'localhost');\ndefine('DB_CHARSET',  'utf8');\ndefine('DB_COLLATE',  '');\n\u002F\u002F ...（その他の設定は省略）\n",[37,2443,2444,2449,2454,2458,2463,2468,2472,2477,2482,2487,2492,2497,2502],{"__ignoreMap":35},[40,2445,2446],{"class":42,"line":43},[40,2447,2448],{},"\u003C?php\n",[40,2450,2451],{"class":42,"line":61},[40,2452,2453],{},"require 'vendor\u002Fautoload.php';\n",[40,2455,2456],{"class":42,"line":150},[40,2457,1129],{"emptyLinePlaceholder":1128},[40,2459,2460],{"class":42,"line":161},[40,2461,2462],{},"$dotenv = Dotenv\\Dotenv::createImmutable(__DIR__);\n",[40,2464,2465],{"class":42,"line":172},[40,2466,2467],{},"$dotenv->load();\n",[40,2469,2470],{"class":42,"line":183},[40,2471,1129],{"emptyLinePlaceholder":1128},[40,2473,2474],{"class":42,"line":253},[40,2475,2476],{},"define('DB_NAME',     'wp_db');\n",[40,2478,2479],{"class":42,"line":1182},[40,2480,2481],{},"define('DB_USER',     $_ENV['DATABASE_USER']);\n",[40,2483,2484],{"class":42,"line":1188},[40,2485,2486],{},"define('DB_PASSWORD', $_ENV['DATABASE_PASSWORD']);\n",[40,2488,2489],{"class":42,"line":1214},[40,2490,2491],{},"define('DB_HOST',     'localhost');\n",[40,2493,2494],{"class":42,"line":1220},[40,2495,2496],{},"define('DB_CHARSET',  'utf8');\n",[40,2498,2499],{"class":42,"line":1225},[40,2500,2501],{},"define('DB_COLLATE',  '');\n",[40,2503,2504],{"class":42,"line":1231},[40,2505,2506],{},"\u002F\u002F ...（その他の設定は省略）\n",[271,2508],{},[18,2510,2512],{"id":2511},"_6-動作確認","6. 動作確認",[22,2514,2515,2516,2522],{},"ブラウザで ",[2517,2518,2519],"a",{"href":2519,"rel":2520},"http:\u002F\u002Fdev.wp.me",[2521],"nofollow"," にアクセスし、WordPress のインストールウィザードに従ってセットアップを完了させる。",[975,2524,2525],{},"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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":35,"searchDepth":61,"depth":61,"links":2527},[2528,2529,2537,2542,2547,2552],{"id":1022,"depth":61,"text":1023},{"id":1082,"depth":61,"text":1083,"children":2530},[2531,2532,2533,2534,2535,2536],{"id":1086,"depth":150,"text":1087},{"id":1343,"depth":150,"text":1344},{"id":1384,"depth":150,"text":1385},{"id":1424,"depth":150,"text":1425},{"id":1450,"depth":150,"text":1451},{"id":1619,"depth":150,"text":1620},{"id":1637,"depth":61,"text":1638,"children":2538},[2539,2540,2541],{"id":1641,"depth":150,"text":1642},{"id":1703,"depth":150,"text":1704},{"id":1755,"depth":150,"text":1756},{"id":1821,"depth":61,"text":1822,"children":2543},[2544,2545,2546],{"id":1825,"depth":150,"text":1826},{"id":1857,"depth":150,"text":1858},{"id":1919,"depth":150,"text":1920},{"id":2236,"depth":61,"text":2237,"children":2548},[2549,2550,2551],{"id":2240,"depth":150,"text":2241},{"id":2349,"depth":150,"text":2350},{"id":2424,"depth":150,"text":2425},{"id":2511,"depth":61,"text":2512},{"date":997,"tags":2554,"draft":1001,"author":1002},[2555,2556,999],"Wordpress","multipass",[2555,2556,999],[2559,3363],{"_path":5,"path":5,"stem":6,"title":7,"description":8,"body":2560,"meta":3360,"date":997,"tags":3362,"draft":1001,"author":1002},{"type":10,"value":2561,"toc":3342},[2562,2564,2566,2568,2570,2592,2602,2604,2616,2618,2623,2625,2677,2679,2739,2745,2747,2749,2751,2753,2755,2757,2779,2781,2797,2799,2813,2815,2859,2861,2877,2879,2881,2941,2943,2971,2973,2975,2977,2979,2984,2986,2988,3006,3008,3024,3026,3040,3042,3102,3106,3108,3122,3126,3128,3130,3136,3138,3148,3153,3155,3173,3175,3191,3193,3205,3207,3212,3224,3226,3278,3280,3340],[13,2563,16],{"id":15},[18,2565,20],{"id":20},[22,2567,24],{},[26,2569,28],{"id":28},[30,2571,2572],{"className":32,"code":33,"language":34,"meta":35,"style":35},[37,2573,2574,2584],{"__ignoreMap":35},[40,2575,2576,2578,2580,2582],{"class":42,"line":43},[40,2577,47],{"class":46},[40,2579,51],{"class":50},[40,2581,55],{"class":54},[40,2583,58],{"class":50},[40,2585,2586,2588,2590],{"class":42,"line":61},[40,2587,47],{"class":46},[40,2589,66],{"class":50},[40,2591,58],{"class":50},[70,2593,2594,2598],{},[73,2595,2596,78],{},[37,2597,77],{},[73,2599,2600,84],{},[37,2601,83],{},[22,2603,87],{},[30,2605,2606],{"className":32,"code":90,"language":34,"meta":35,"style":35},[37,2607,2608],{"__ignoreMap":35},[40,2609,2610,2612,2614],{"class":42,"line":43},[40,2611,97],{"class":46},[40,2613,66],{"class":50},[40,2615,58],{"class":50},[22,2617,104],{},[30,2619,2621],{"className":2620,"code":109,"language":110,"meta":35},[108],[37,2622,109],{"__ignoreMap":35},[26,2624,116],{"id":115},[30,2626,2627],{"className":119,"code":120,"language":121,"meta":35,"style":35},[37,2628,2629,2639,2645,2653,2661,2669],{"__ignoreMap":35},[40,2630,2631,2633,2635,2637],{"class":42,"line":43},[40,2632,129],{"class":128},[40,2634,133],{"class":132},[40,2636,136],{"class":128},[40,2638,139],{"class":50},[40,2640,2641,2643],{"class":42,"line":61},[40,2642,144],{"class":132},[40,2644,147],{"class":128},[40,2646,2647,2649,2651],{"class":42,"line":150},[40,2648,153],{"class":132},[40,2650,136],{"class":128},[40,2652,158],{"class":50},[40,2654,2655,2657,2659],{"class":42,"line":161},[40,2656,164],{"class":132},[40,2658,136],{"class":128},[40,2660,169],{"class":54},[40,2662,2663,2665,2667],{"class":42,"line":172},[40,2664,175],{"class":132},[40,2666,136],{"class":128},[40,2668,180],{"class":50},[40,2670,2671,2673,2675],{"class":42,"line":183},[40,2672,186],{"class":132},[40,2674,136],{"class":128},[40,2676,191],{"class":50},[22,2678,194],{},[30,2680,2681],{"className":119,"code":197,"language":121,"meta":35,"style":35},[37,2682,2683,2693,2699,2707,2715,2723,2731],{"__ignoreMap":35},[40,2684,2685,2687,2689,2691],{"class":42,"line":43},[40,2686,129],{"class":128},[40,2688,133],{"class":132},[40,2690,136],{"class":128},[40,2692,210],{"class":50},[40,2694,2695,2697],{"class":42,"line":61},[40,2696,144],{"class":132},[40,2698,147],{"class":128},[40,2700,2701,2703,2705],{"class":42,"line":150},[40,2702,153],{"class":132},[40,2704,136],{"class":128},[40,2706,158],{"class":50},[40,2708,2709,2711,2713],{"class":42,"line":161},[40,2710,229],{"class":132},[40,2712,136],{"class":128},[40,2714,234],{"class":50},[40,2716,2717,2719,2721],{"class":42,"line":172},[40,2718,164],{"class":132},[40,2720,136],{"class":128},[40,2722,169],{"class":54},[40,2724,2725,2727,2729],{"class":42,"line":183},[40,2726,175],{"class":132},[40,2728,136],{"class":128},[40,2730,180],{"class":50},[40,2732,2733,2735,2737],{"class":42,"line":253},[40,2734,186],{"class":132},[40,2736,136],{"class":128},[40,2738,191],{"class":50},[261,2740,2741],{},[22,2742,265,2743,269],{},[37,2744,268],{},[271,2746],{},[18,2748,275],{"id":275},[22,2750,278],{},[22,2752,281],{},[26,2754,28],{"id":284},[22,2756,287],{},[30,2758,2759],{"className":32,"code":33,"language":34,"meta":35,"style":35},[37,2760,2761,2771],{"__ignoreMap":35},[40,2762,2763,2765,2767,2769],{"class":42,"line":43},[40,2764,47],{"class":46},[40,2766,51],{"class":50},[40,2768,55],{"class":54},[40,2770,58],{"class":50},[40,2772,2773,2775,2777],{"class":42,"line":61},[40,2774,47],{"class":46},[40,2776,66],{"class":50},[40,2778,58],{"class":50},[22,2780,312],{},[30,2782,2783],{"className":32,"code":315,"language":34,"meta":35,"style":35},[37,2784,2785],{"__ignoreMap":35},[40,2786,2787,2789,2791,2793,2795],{"class":42,"line":43},[40,2788,47],{"class":46},[40,2790,324],{"class":50},[40,2792,327],{"class":54},[40,2794,330],{"class":54},[40,2796,58],{"class":50},[22,2798,335],{},[30,2800,2801],{"className":32,"code":338,"language":34,"meta":35,"style":35},[37,2802,2803],{"__ignoreMap":35},[40,2804,2805,2807,2809,2811],{"class":42,"line":43},[40,2806,47],{"class":46},[40,2808,324],{"class":50},[40,2810,349],{"class":54},[40,2812,58],{"class":50},[22,2814,354],{},[356,2816,2817,2825],{},[359,2818,2819],{},[362,2820,2821,2823],{},[365,2822,367],{},[365,2824,370],{},[372,2826,2827,2835,2843,2851],{},[362,2828,2829,2833],{},[377,2830,2831],{},[37,2832,381],{},[377,2834,384],{},[362,2836,2837,2841],{},[377,2838,2839],{},[37,2840,391],{},[377,2842,394],{},[362,2844,2845,2849],{},[377,2846,2847],{},[37,2848,401],{},[377,2850,404],{},[362,2852,2853,2857],{},[377,2854,2855],{},[37,2856,411],{},[377,2858,414],{},[22,2860,417],{},[30,2862,2863],{"className":32,"code":420,"language":34,"meta":35,"style":35},[37,2864,2865],{"__ignoreMap":35},[40,2866,2867,2869,2871,2873,2875],{"class":42,"line":43},[40,2868,47],{"class":46},[40,2870,324],{"class":50},[40,2872,431],{"class":54},[40,2874,434],{"class":54},[40,2876,58],{"class":50},[26,2878,116],{"id":439},[22,2880,442],{},[30,2882,2883],{"className":119,"code":445,"language":121,"meta":35,"style":35},[37,2884,2885,2895,2901,2909,2917,2925,2933],{"__ignoreMap":35},[40,2886,2887,2889,2891,2893],{"class":42,"line":43},[40,2888,129],{"class":128},[40,2890,133],{"class":132},[40,2892,136],{"class":128},[40,2894,458],{"class":50},[40,2896,2897,2899],{"class":42,"line":61},[40,2898,144],{"class":132},[40,2900,147],{"class":128},[40,2902,2903,2905,2907],{"class":42,"line":150},[40,2904,153],{"class":132},[40,2906,136],{"class":128},[40,2908,158],{"class":50},[40,2910,2911,2913,2915],{"class":42,"line":161},[40,2912,164],{"class":132},[40,2914,136],{"class":128},[40,2916,169],{"class":54},[40,2918,2919,2921,2923],{"class":42,"line":172},[40,2920,175],{"class":132},[40,2922,136],{"class":128},[40,2924,180],{"class":50},[40,2926,2927,2929,2931],{"class":42,"line":183},[40,2928,493],{"class":132},[40,2930,136],{"class":128},[40,2932,498],{"class":54},[40,2934,2935,2937,2939],{"class":42,"line":253},[40,2936,186],{"class":132},[40,2938,136],{"class":128},[40,2940,191],{"class":50},[22,2942,509],{},[30,2944,2945],{"className":119,"code":512,"language":121,"meta":35,"style":35},[37,2946,2947,2957,2963],{"__ignoreMap":35},[40,2948,2949,2951,2953,2955],{"class":42,"line":43},[40,2950,129],{"class":128},[40,2952,133],{"class":132},[40,2954,136],{"class":128},[40,2956,525],{"class":50},[40,2958,2959,2961],{"class":42,"line":61},[40,2960,530],{"class":132},[40,2962,147],{"class":128},[40,2964,2965,2967,2969],{"class":42,"line":150},[40,2966,537],{"class":132},[40,2968,136],{"class":128},[40,2970,542],{"class":50},[271,2972],{},[18,2974,547],{"id":547},[22,2976,550],{},[22,2978,553],{},[30,2980,2982],{"className":2981,"code":557,"language":110,"meta":35},[108],[37,2983,557],{"__ignoreMap":35},[26,2985,28],{"id":562},[22,2987,565],{},[30,2989,2990],{"className":32,"code":568,"language":34,"meta":35,"style":35},[37,2991,2992],{"__ignoreMap":35},[40,2993,2994,2996,2998,3000,3002,3004],{"class":42,"line":43},[40,2995,47],{"class":46},[40,2997,51],{"class":50},[40,2999,55],{"class":54},[40,3001,581],{"class":54},[40,3003,584],{"class":50},[40,3005,58],{"class":50},[22,3007,589],{},[30,3009,3010],{"className":32,"code":592,"language":34,"meta":35,"style":35},[37,3011,3012],{"__ignoreMap":35},[40,3013,3014,3016,3018,3020,3022],{"class":42,"line":43},[40,3015,47],{"class":46},[40,3017,324],{"class":50},[40,3019,603],{"class":54},[40,3021,584],{"class":50},[40,3023,58],{"class":50},[22,3025,610],{},[30,3027,3028],{"className":32,"code":338,"language":34,"meta":35,"style":35},[37,3029,3030],{"__ignoreMap":35},[40,3031,3032,3034,3036,3038],{"class":42,"line":43},[40,3033,47],{"class":46},[40,3035,324],{"class":50},[40,3037,349],{"class":54},[40,3039,58],{"class":50},[26,3041,116],{"id":627},[30,3043,3044],{"className":119,"code":630,"language":121,"meta":35,"style":35},[37,3045,3046,3056,3062,3070,3078,3086,3094],{"__ignoreMap":35},[40,3047,3048,3050,3052,3054],{"class":42,"line":43},[40,3049,129],{"class":128},[40,3051,133],{"class":132},[40,3053,136],{"class":128},[40,3055,643],{"class":50},[40,3057,3058,3060],{"class":42,"line":61},[40,3059,144],{"class":132},[40,3061,147],{"class":128},[40,3063,3064,3066,3068],{"class":42,"line":150},[40,3065,153],{"class":132},[40,3067,136],{"class":128},[40,3069,158],{"class":50},[40,3071,3072,3074,3076],{"class":42,"line":161},[40,3073,164],{"class":132},[40,3075,136],{"class":128},[40,3077,169],{"class":54},[40,3079,3080,3082,3084],{"class":42,"line":172},[40,3081,175],{"class":132},[40,3083,136],{"class":128},[40,3085,180],{"class":50},[40,3087,3088,3090,3092],{"class":42,"line":183},[40,3089,678],{"class":132},[40,3091,136],{"class":128},[40,3093,683],{"class":54},[40,3095,3096,3098,3100],{"class":42,"line":253},[40,3097,186],{"class":132},[40,3099,136],{"class":128},[40,3101,191],{"class":50},[22,3103,3104,697],{},[37,3105,696],{},[22,3107,700],{},[30,3109,3110],{"className":32,"code":703,"language":34,"meta":35,"style":35},[37,3111,3112],{"__ignoreMap":35},[40,3113,3114,3116,3118,3120],{"class":42,"line":43},[40,3115,710],{"class":46},[40,3117,431],{"class":54},[40,3119,715],{"class":50},[40,3121,718],{"class":50},[261,3123,3124],{},[22,3125,723],{},[271,3127],{},[18,3129,728],{"id":728},[22,3131,731,3132,735,3134,739],{},[37,3133,734],{},[37,3135,738],{},[22,3137,742],{},[70,3139,3140,3142,3144,3146],{},[73,3141,747],{},[73,3143,750],{},[73,3145,753],{},[73,3147,756],{},[30,3149,3151],{"className":3150,"code":760,"language":110,"meta":35},[108],[37,3152,760],{"__ignoreMap":35},[26,3154,28],{"id":765},[30,3156,3157],{"className":32,"code":768,"language":34,"meta":35,"style":35},[37,3158,3159],{"__ignoreMap":35},[40,3160,3161,3163,3165,3167,3169,3171],{"class":42,"line":43},[40,3162,47],{"class":46},[40,3164,51],{"class":50},[40,3166,55],{"class":54},[40,3168,781],{"class":54},[40,3170,784],{"class":50},[40,3172,58],{"class":50},[22,3174,789],{},[30,3176,3177],{"className":32,"code":792,"language":34,"meta":35,"style":35},[37,3178,3179],{"__ignoreMap":35},[40,3180,3181,3183,3185,3187,3189],{"class":42,"line":43},[40,3182,47],{"class":46},[40,3184,801],{"class":50},[40,3186,781],{"class":54},[40,3188,784],{"class":50},[40,3190,58],{"class":50},[22,3192,610],{},[30,3194,3195],{"className":32,"code":90,"language":34,"meta":35,"style":35},[37,3196,3197],{"__ignoreMap":35},[40,3198,3199,3201,3203],{"class":42,"line":43},[40,3200,97],{"class":46},[40,3202,66],{"class":50},[40,3204,58],{"class":50},[22,3206,104],{},[30,3208,3210],{"className":3209,"code":827,"language":110,"meta":35},[108],[37,3211,827],{"__ignoreMap":35},[261,3213,3214],{},[22,3215,3216,836,3218,839,3220,843,3222,847],{},[37,3217,734],{},[37,3219,738],{},[37,3221,842],{},[37,3223,846],{},[26,3225,116],{"id":850},[30,3227,3228],{"className":119,"code":853,"language":121,"meta":35,"style":35},[37,3229,3230,3240,3246,3254,3262,3270],{"__ignoreMap":35},[40,3231,3232,3234,3236,3238],{"class":42,"line":43},[40,3233,129],{"class":128},[40,3235,133],{"class":132},[40,3237,136],{"class":128},[40,3239,866],{"class":50},[40,3241,3242,3244],{"class":42,"line":61},[40,3243,144],{"class":132},[40,3245,147],{"class":128},[40,3247,3248,3250,3252],{"class":42,"line":150},[40,3249,153],{"class":132},[40,3251,136],{"class":128},[40,3253,158],{"class":50},[40,3255,3256,3258,3260],{"class":42,"line":161},[40,3257,164],{"class":132},[40,3259,136],{"class":128},[40,3261,169],{"class":54},[40,3263,3264,3266,3268],{"class":42,"line":172},[40,3265,175],{"class":132},[40,3267,136],{"class":128},[40,3269,897],{"class":50},[40,3271,3272,3274,3276],{"class":42,"line":183},[40,3273,186],{"class":132},[40,3275,136],{"class":128},[40,3277,191],{"class":50},[22,3279,908],{},[30,3281,3282],{"className":119,"code":911,"language":121,"meta":35,"style":35},[37,3283,3284,3294,3300,3308,3316,3324,3332],{"__ignoreMap":35},[40,3285,3286,3288,3290,3292],{"class":42,"line":43},[40,3287,129],{"class":128},[40,3289,133],{"class":132},[40,3291,136],{"class":128},[40,3293,924],{"class":50},[40,3295,3296,3298],{"class":42,"line":61},[40,3297,144],{"class":132},[40,3299,147],{"class":128},[40,3301,3302,3304,3306],{"class":42,"line":150},[40,3303,153],{"class":132},[40,3305,136],{"class":128},[40,3307,939],{"class":50},[40,3309,3310,3312,3314],{"class":42,"line":161},[40,3311,164],{"class":132},[40,3313,136],{"class":128},[40,3315,948],{"class":54},[40,3317,3318,3320,3322],{"class":42,"line":172},[40,3319,175],{"class":132},[40,3321,136],{"class":128},[40,3323,897],{"class":50},[40,3325,3326,3328,3330],{"class":42,"line":183},[40,3327,961],{"class":132},[40,3329,136],{"class":128},[40,3331,169],{"class":54},[40,3333,3334,3336,3338],{"class":42,"line":253},[40,3335,186],{"class":132},[40,3337,136],{"class":128},[40,3339,191],{"class":50},[975,3341,977],{},{"title":35,"searchDepth":61,"depth":61,"links":3343},[3344,3348,3352,3356],{"id":20,"depth":61,"text":20,"children":3345},[3346,3347],{"id":28,"depth":150,"text":28},{"id":115,"depth":150,"text":116},{"id":275,"depth":61,"text":275,"children":3349},[3350,3351],{"id":284,"depth":150,"text":28},{"id":439,"depth":150,"text":116},{"id":547,"depth":61,"text":547,"children":3353},[3354,3355],{"id":562,"depth":150,"text":28},{"id":627,"depth":150,"text":116},{"id":728,"depth":61,"text":728,"children":3357},[3358,3359],{"id":765,"depth":150,"text":28},{"id":850,"depth":150,"text":116},{"date":997,"tags":3361,"draft":1001,"author":1002},[999,1000],[999,1000],{"_path":1005,"path":1005,"stem":1006,"title":1007,"description":1008,"body":3364,"meta":4551,"date":997,"tags":4553,"draft":1001,"author":1002},{"type":10,"value":3365,"toc":4524},[3366,3368,3370,3372,3374,3416,3418,3420,3422,3608,3610,3616,3636,3638,3642,3666,3668,3676,3684,3686,3690,3724,3728,3804,3816,3818,3822,3827,3829,3831,3833,3837,3881,3883,3887,3919,3921,3927,3967,3969,3971,3973,3997,3999,4015,4043,4045,4049,4069,4093,4097,4127,4297,4299,4301,4303,4387,4389,4393,4433,4445,4447,4457,4513,4515,4517,4522],[13,3367,1013],{"id":1013},[22,3369,1016],{},[13,3371,1019],{"id":1019},[18,3373,1023],{"id":1022},[356,3375,3376,3384],{},[359,3377,3378],{},[362,3379,3380,3382],{},[365,3381,1032],{},[365,3383,1035],{},[372,3385,3386,3392,3398,3404,3410],{},[362,3387,3388,3390],{},[377,3389,1042],{},[377,3391,1045],{},[362,3393,3394,3396],{},[377,3395,1050],{},[377,3397,1053],{},[362,3399,3400,3402],{},[377,3401,1058],{},[377,3403,1061],{},[362,3405,3406,3408],{},[377,3407,1066],{},[377,3409,1069],{},[362,3411,3412,3414],{},[377,3413,1074],{},[377,3415,1077],{},[271,3417],{},[18,3419,1083],{"id":1082},[26,3421,1087],{"id":1086},[30,3423,3424],{"className":32,"code":1090,"language":34,"meta":35,"style":35},[37,3425,3426,3430,3448,3452,3456,3470,3484,3488,3492,3510,3514,3518,3522,3530,3542,3552,3556,3560,3568,3578,3588,3598],{"__ignoreMap":35},[40,3427,3428],{"class":42,"line":43},[40,3429,1098],{"class":1097},[40,3431,3432,3434,3436,3438,3440,3442,3444,3446],{"class":42,"line":61},[40,3433,47],{"class":46},[40,3435,1105],{"class":50},[40,3437,1108],{"class":50},[40,3439,1111],{"class":50},[40,3441,1114],{"class":50},[40,3443,1117],{"class":50},[40,3445,1120],{"class":50},[40,3447,1123],{"class":50},[40,3449,3450],{"class":42,"line":150},[40,3451,1129],{"emptyLinePlaceholder":1128},[40,3453,3454],{"class":42,"line":161},[40,3455,1134],{"class":1097},[40,3457,3458,3460,3462,3464,3466,3468],{"class":42,"line":172},[40,3459,1139],{"class":46},[40,3461,1142],{"class":50},[40,3463,1146],{"class":1145},[40,3465,1149],{"class":46},[40,3467,1152],{"class":54},[40,3469,1155],{"class":54},[40,3471,3472,3474,3476,3478,3480,3482],{"class":42,"line":183},[40,3473,1160],{"class":1145},[40,3475,1163],{"class":46},[40,3477,1166],{"class":50},[40,3479,1169],{"class":50},[40,3481,1172],{"class":1145},[40,3483,1175],{"class":50},[40,3485,3486],{"class":42,"line":253},[40,3487,1129],{"emptyLinePlaceholder":1128},[40,3489,3490],{"class":42,"line":1182},[40,3491,1185],{"class":1097},[40,3493,3494,3496,3498,3500,3502,3504,3506,3508],{"class":42,"line":1188},[40,3495,1191],{"class":46},[40,3497,1194],{"class":54},[40,3499,1197],{"class":54},[40,3501,1200],{"class":54},[40,3503,1203],{"class":54},[40,3505,1206],{"class":54},[40,3507,1209],{"class":50},[40,3509,1155],{"class":54},[40,3511,3512],{"class":42,"line":1214},[40,3513,1217],{"class":50},[40,3515,3516],{"class":42,"line":1220},[40,3517,1129],{"emptyLinePlaceholder":1128},[40,3519,3520],{"class":42,"line":1225},[40,3521,1228],{"class":1097},[40,3523,3524,3526,3528],{"class":42,"line":1231},[40,3525,1234],{"class":54},[40,3527,1237],{"class":50},[40,3529,1240],{"class":54},[40,3531,3532,3534,3536,3538,3540],{"class":42,"line":1243},[40,3533,1246],{"class":50},[40,3535,1249],{"class":46},[40,3537,1252],{"class":54},[40,3539,1255],{"class":50},[40,3541,1155],{"class":54},[40,3543,3544,3546,3548,3550],{"class":42,"line":1260},[40,3545,1160],{"class":1145},[40,3547,1163],{"class":46},[40,3549,1166],{"class":50},[40,3551,1269],{"class":50},[40,3553,3554],{"class":42,"line":1272},[40,3555,1129],{"emptyLinePlaceholder":1128},[40,3557,3558],{"class":42,"line":1277},[40,3559,1280],{"class":1097},[40,3561,3562,3564,3566],{"class":42,"line":1283},[40,3563,47],{"class":46},[40,3565,1105],{"class":50},[40,3567,1290],{"class":50},[40,3569,3570,3572,3574,3576],{"class":42,"line":1293},[40,3571,47],{"class":46},[40,3573,1105],{"class":50},[40,3575,1108],{"class":50},[40,3577,1302],{"class":50},[40,3579,3580,3582,3584,3586],{"class":42,"line":1305},[40,3581,47],{"class":46},[40,3583,1310],{"class":50},[40,3585,1313],{"class":50},[40,3587,1316],{"class":50},[40,3589,3590,3592,3594,3596],{"class":42,"line":1319},[40,3591,47],{"class":46},[40,3593,1310],{"class":50},[40,3595,1326],{"class":50},[40,3597,1316],{"class":50},[40,3599,3600,3602,3604,3606],{"class":42,"line":1331},[40,3601,47],{"class":46},[40,3603,1310],{"class":50},[40,3605,1338],{"class":50},[40,3607,1316],{"class":50},[26,3609,1344],{"id":1343},[22,3611,3612,1350,3614,1354],{},[37,3613,1349],{},[37,3615,1353],{},[30,3617,3618],{"className":1357,"code":1358,"language":1359,"meta":35,"style":35},[37,3619,3620,3624,3628,3632],{"__ignoreMap":35},[40,3621,3622],{"class":42,"line":43},[40,3623,1366],{},[40,3625,3626],{"class":42,"line":61},[40,3627,1371],{},[40,3629,3630],{"class":42,"line":150},[40,3631,1376],{},[40,3633,3634],{"class":42,"line":161},[40,3635,1381],{},[26,3637,1385],{"id":1384},[22,3639,1388,3640,1391],{},[37,3641,1349],{},[30,3643,3644],{"className":1357,"code":1394,"language":1359,"meta":35,"style":35},[37,3645,3646,3650,3654,3658,3662],{"__ignoreMap":35},[40,3647,3648],{"class":42,"line":43},[40,3649,1401],{},[40,3651,3652],{"class":42,"line":61},[40,3653,1406],{},[40,3655,3656],{"class":42,"line":150},[40,3657,1411],{},[40,3659,3660],{"class":42,"line":161},[40,3661,1416],{},[40,3663,3664],{"class":42,"line":172},[40,3665,1421],{},[26,3667,1425],{"id":1424},[22,3669,3670,1350,3672,1434,3674,1438],{},[37,3671,1430],{},[37,3673,1433],{},[37,3675,1437],{},[30,3677,3678],{"className":1357,"code":1441,"language":1359,"meta":35,"style":35},[37,3679,3680],{"__ignoreMap":35},[40,3681,3682],{"class":42,"line":43},[40,3683,1441],{},[26,3685,1451],{"id":1450},[22,3687,1454,3688,1458],{},[37,3689,1457],{},[30,3691,3692],{"className":32,"code":1461,"language":34,"meta":35,"style":35},[37,3693,3694,3702,3714],{"__ignoreMap":35},[40,3695,3696,3698,3700],{"class":42,"line":43},[40,3697,47],{"class":46},[40,3699,1470],{"class":50},[40,3701,1473],{"class":50},[40,3703,3704,3706,3708,3710,3712],{"class":42,"line":61},[40,3705,47],{"class":46},[40,3707,1480],{"class":50},[40,3709,781],{"class":54},[40,3711,1485],{"class":50},[40,3713,1488],{"class":50},[40,3715,3716,3718,3720,3722],{"class":42,"line":150},[40,3717,47],{"class":46},[40,3719,1310],{"class":50},[40,3721,1497],{"class":50},[40,3723,1316],{"class":50},[22,3725,3726,1505],{},[37,3727,1504],{},[30,3729,3730],{"className":1357,"code":1508,"language":1359,"meta":35,"style":35},[37,3731,3732,3736,3740,3744,3748,3752,3756,3760,3764,3768,3772,3776,3780,3784,3788,3792,3796,3800],{"__ignoreMap":35},[40,3733,3734],{"class":42,"line":43},[40,3735,1515],{},[40,3737,3738],{"class":42,"line":61},[40,3739,1520],{},[40,3741,3742],{"class":42,"line":150},[40,3743,1525],{},[40,3745,3746],{"class":42,"line":161},[40,3747,1530],{},[40,3749,3750],{"class":42,"line":172},[40,3751,1535],{},[40,3753,3754],{"class":42,"line":183},[40,3755,1129],{"emptyLinePlaceholder":1128},[40,3757,3758],{"class":42,"line":253},[40,3759,1544],{},[40,3761,3762],{"class":42,"line":1182},[40,3763,1549],{},[40,3765,3766],{"class":42,"line":1188},[40,3767,1129],{"emptyLinePlaceholder":1128},[40,3769,3770],{"class":42,"line":1214},[40,3771,1558],{},[40,3773,3774],{"class":42,"line":1220},[40,3775,1563],{},[40,3777,3778],{"class":42,"line":1225},[40,3779,1568],{},[40,3781,3782],{"class":42,"line":1231},[40,3783,1129],{"emptyLinePlaceholder":1128},[40,3785,3786],{"class":42,"line":1243},[40,3787,1577],{},[40,3789,3790],{"class":42,"line":1260},[40,3791,1582],{},[40,3793,3794],{"class":42,"line":1272},[40,3795,1587],{},[40,3797,3798],{"class":42,"line":1277},[40,3799,1568],{},[40,3801,3802],{"class":42,"line":1283},[40,3803,1381],{},[261,3805,3806],{},[22,3807,3808,1604,3810,1608,3812,1612,3814,1616],{},[1601,3809,1603],{},[37,3811,1607],{},[37,3813,1611],{},[37,3815,1615],{},[26,3817,1620],{"id":1619},[22,3819,1623,3820,1391],{},[37,3821,1626],{},[30,3823,3825],{"className":3824,"code":1630,"language":110},[108],[37,3826,1630],{"__ignoreMap":35},[271,3828],{},[18,3830,1638],{"id":1637},[26,3832,1642],{"id":1641},[22,3834,1645,3835,1649],{},[37,3836,1648],{},[30,3838,3839],{"className":32,"code":1652,"language":34,"meta":35,"style":35},[37,3840,3841,3849,3857,3867,3871,3877],{"__ignoreMap":35},[40,3842,3843,3845,3847],{"class":42,"line":43},[40,3844,47],{"class":46},[40,3846,1661],{"class":50},[40,3848,1664],{"class":50},[40,3850,3851,3853,3855],{"class":42,"line":61},[40,3852,47],{"class":46},[40,3854,1105],{"class":50},[40,3856,1290],{"class":50},[40,3858,3859,3861,3863,3865],{"class":42,"line":150},[40,3860,47],{"class":46},[40,3862,1105],{"class":50},[40,3864,1108],{"class":50},[40,3866,1683],{"class":50},[40,3868,3869],{"class":42,"line":161},[40,3870,1129],{"emptyLinePlaceholder":1128},[40,3872,3873,3875],{"class":42,"line":172},[40,3874,1692],{"class":46},[40,3876,1695],{"class":54},[40,3878,3879],{"class":42,"line":183},[40,3880,1700],{"class":1097},[26,3882,1704],{"id":1703},[22,3884,3885,1710],{},[37,3886,1709],{},[30,3888,3889],{"className":1713,"code":1714,"language":1715,"meta":35,"style":35},[37,3890,3891,3895,3899,3903,3907,3911,3915],{"__ignoreMap":35},[40,3892,3893],{"class":42,"line":43},[40,3894,1722],{},[40,3896,3897],{"class":42,"line":61},[40,3898,1727],{},[40,3900,3901],{"class":42,"line":150},[40,3902,1732],{},[40,3904,3905],{"class":42,"line":161},[40,3906,1737],{},[40,3908,3909],{"class":42,"line":172},[40,3910,1742],{},[40,3912,3913],{"class":42,"line":183},[40,3914,1747],{},[40,3916,3917],{"class":42,"line":253},[40,3918,1752],{},[26,3920,1756],{"id":1755},[22,3922,3923,1762,3925,1766],{},[37,3924,1761],{},[37,3926,1765],{},[30,3928,3929],{"className":1713,"code":1769,"language":1715,"meta":35,"style":35},[37,3930,3931,3935,3939,3943,3947,3951,3955,3959,3963],{"__ignoreMap":35},[40,3932,3933],{"class":42,"line":43},[40,3934,1776],{},[40,3936,3937],{"class":42,"line":61},[40,3938,1781],{},[40,3940,3941],{"class":42,"line":150},[40,3942,1786],{},[40,3944,3945],{"class":42,"line":161},[40,3946,1791],{},[40,3948,3949],{"class":42,"line":172},[40,3950,1796],{},[40,3952,3953],{"class":42,"line":183},[40,3954,1801],{},[40,3956,3957],{"class":42,"line":253},[40,3958,1806],{},[40,3960,3961],{"class":42,"line":1182},[40,3962,1811],{},[40,3964,3965],{"class":42,"line":1188},[40,3966,1816],{},[271,3968],{},[18,3970,1822],{"id":1821},[26,3972,1826],{"id":1825},[30,3974,3975],{"className":32,"code":1829,"language":34,"meta":35,"style":35},[37,3976,3977,3985],{"__ignoreMap":35},[40,3978,3979,3981,3983],{"class":42,"line":43},[40,3980,47],{"class":46},[40,3982,1838],{"class":50},[40,3984,1290],{"class":50},[40,3986,3987,3989,3991,3993,3995],{"class":42,"line":61},[40,3988,47],{"class":46},[40,3990,1838],{"class":50},[40,3992,1108],{"class":50},[40,3994,1851],{"class":50},[40,3996,1854],{"class":50},[26,3998,1858],{"id":1857},[30,4000,4001],{"className":32,"code":1861,"language":34,"meta":35,"style":35},[37,4002,4003],{"__ignoreMap":35},[40,4004,4005,4007,4009,4011,4013],{"class":42,"line":43},[40,4006,47],{"class":46},[40,4008,1870],{"class":50},[40,4010,1873],{"class":54},[40,4012,1876],{"class":50},[40,4014,1879],{"class":54},[30,4016,4017],{"className":1882,"code":1883,"language":1884,"meta":35,"style":35},[37,4018,4019,4023,4027,4031,4035,4039],{"__ignoreMap":35},[40,4020,4021],{"class":42,"line":43},[40,4022,1891],{},[40,4024,4025],{"class":42,"line":61},[40,4026,1896],{},[40,4028,4029],{"class":42,"line":150},[40,4030,1901],{},[40,4032,4033],{"class":42,"line":161},[40,4034,1906],{},[40,4036,4037],{"class":42,"line":172},[40,4038,1911],{},[40,4040,4041],{"class":42,"line":183},[40,4042,1916],{},[26,4044,1920],{"id":1919},[22,4046,4047],{},[1601,4048,1925],{},[30,4050,4051],{"className":32,"code":1928,"language":34,"meta":35,"style":35},[37,4052,4053,4061],{"__ignoreMap":35},[40,4054,4055,4057,4059],{"class":42,"line":43},[40,4056,47],{"class":46},[40,4058,1470],{"class":50},[40,4060,1939],{"class":50},[40,4062,4063,4065,4067],{"class":42,"line":61},[40,4064,1944],{"class":46},[40,4066,1947],{"class":54},[40,4068,1939],{"class":50},[30,4070,4071],{"className":32,"code":1952,"language":34,"meta":35,"style":35},[37,4072,4073,4077,4085],{"__ignoreMap":35},[40,4074,4075],{"class":42,"line":43},[40,4076,1959],{"class":1097},[40,4078,4079,4081,4083],{"class":42,"line":61},[40,4080,1964],{"class":128},[40,4082,1967],{"class":1145},[40,4084,1970],{"class":50},[40,4086,4087,4089,4091],{"class":42,"line":150},[40,4088,1975],{"class":128},[40,4090,1967],{"class":1145},[40,4092,1980],{"class":50},[22,4094,4095],{},[1601,4096,1985],{},[30,4098,4099],{"className":32,"code":1988,"language":34,"meta":35,"style":35},[37,4100,4101,4111,4119],{"__ignoreMap":35},[40,4102,4103,4105,4107,4109],{"class":42,"line":43},[40,4104,47],{"class":46},[40,4106,1997],{"class":50},[40,4108,2000],{"class":54},[40,4110,2003],{"class":50},[40,4112,4113,4115,4117],{"class":42,"line":61},[40,4114,47],{"class":46},[40,4116,1470],{"class":50},[40,4118,2012],{"class":50},[40,4120,4121,4123,4125],{"class":42,"line":150},[40,4122,1944],{"class":46},[40,4124,2019],{"class":50},[40,4126,2012],{"class":50},[30,4128,4129],{"className":32,"code":2024,"language":34,"meta":35,"style":35},[37,4130,4131,4135,4139,4143,4149,4153,4161,4169,4183,4199,4203,4207,4241,4245,4249,4259,4263,4267],{"__ignoreMap":35},[40,4132,4133],{"class":42,"line":43},[40,4134,2031],{"class":1097},[40,4136,4137],{"class":42,"line":61},[40,4138,1129],{"emptyLinePlaceholder":1128},[40,4140,4141],{"class":42,"line":150},[40,4142,2040],{"class":1097},[40,4144,4145,4147],{"class":42,"line":161},[40,4146,2045],{"class":54},[40,4148,1939],{"class":50},[40,4150,4151],{"class":42,"line":172},[40,4152,1129],{"emptyLinePlaceholder":1128},[40,4154,4155,4157,4159],{"class":42,"line":183},[40,4156,2056],{"class":128},[40,4158,1967],{"class":1145},[40,4160,2061],{"class":50},[40,4162,4163,4165,4167],{"class":42,"line":253},[40,4164,2066],{"class":128},[40,4166,1967],{"class":1145},[40,4168,2071],{"class":50},[40,4170,4171,4173,4175,4177,4179,4181],{"class":42,"line":1182},[40,4172,2076],{"class":128},[40,4174,1967],{"class":1145},[40,4176,2081],{"class":128},[40,4178,710],{"class":46},[40,4180,2086],{"class":50},[40,4182,2089],{"class":128},[40,4184,4185,4187,4189,4191,4193,4195,4197],{"class":42,"line":1188},[40,4186,2094],{"class":128},[40,4188,1967],{"class":1145},[40,4190,2099],{"class":50},[40,4192,2102],{"class":128},[40,4194,2105],{"class":50},[40,4196,2108],{"class":128},[40,4198,2111],{"class":50},[40,4200,4201],{"class":42,"line":1214},[40,4202,1129],{"emptyLinePlaceholder":1128},[40,4204,4205],{"class":42,"line":1220},[40,4206,2120],{"class":1097},[40,4208,4209,4211,4213,4215,4217,4219,4221,4223,4225,4227,4229,4231,4233,4235,4237,4239],{"class":42,"line":1225},[40,4210,2125],{"class":46},[40,4212,1873],{"class":54},[40,4214,2099],{"class":50},[40,4216,2132],{"class":128},[40,4218,2099],{"class":50},[40,4220,2000],{"class":54},[40,4222,2099],{"class":50},[40,4224,2141],{"class":128},[40,4226,2099],{"class":50},[40,4228,2146],{"class":50},[40,4230,2149],{"class":128},[40,4232,2099],{"class":50},[40,4234,1172],{"class":1145},[40,4236,2146],{"class":50},[40,4238,2158],{"class":128},[40,4240,2161],{"class":50},[40,4242,4243],{"class":42,"line":1231},[40,4244,1129],{"emptyLinePlaceholder":1128},[40,4246,4247],{"class":42,"line":1243},[40,4248,2170],{"class":1097},[40,4250,4251,4253,4255,4257],{"class":42,"line":1260},[40,4252,2175],{"class":46},[40,4254,2146],{"class":50},[40,4256,2158],{"class":128},[40,4258,2161],{"class":50},[40,4260,4261],{"class":42,"line":1272},[40,4262,1129],{"emptyLinePlaceholder":1128},[40,4264,4265],{"class":42,"line":1277},[40,4266,2190],{"class":1097},[40,4268,4269,4271,4273,4275,4277,4279,4281,4283,4285,4287,4289,4291,4293,4295],{"class":42,"line":1283},[40,4270,2195],{"class":46},[40,4272,2146],{"class":50},[40,4274,2102],{"class":128},[40,4276,2099],{"class":50},[40,4278,2204],{"class":54},[40,4280,2207],{"class":50},[40,4282,2210],{"class":54},[40,4284,2213],{"class":50},[40,4286,2216],{"class":54},[40,4288,2219],{"class":50},[40,4290,2222],{"class":54},[40,4292,2225],{"class":50},[40,4294,2228],{"class":50},[40,4296,2231],{"class":54},[271,4298],{},[18,4300,2237],{"id":2236},[26,4302,2241],{"id":2240},[30,4304,4305],{"className":32,"code":2244,"language":34,"meta":35,"style":35},[37,4306,4307,4313,4319,4327,4331,4335,4345,4349,4353,4365,4369,4373,4379],{"__ignoreMap":35},[40,4308,4309,4311],{"class":42,"line":43},[40,4310,2251],{"class":54},[40,4312,2254],{"class":50},[40,4314,4315,4317],{"class":42,"line":61},[40,4316,2259],{"class":46},[40,4318,2262],{"class":50},[40,4320,4321,4323,4325],{"class":42,"line":150},[40,4322,2267],{"class":46},[40,4324,2270],{"class":54},[40,4326,2273],{"class":50},[40,4328,4329],{"class":42,"line":161},[40,4330,1129],{"emptyLinePlaceholder":1128},[40,4332,4333],{"class":42,"line":172},[40,4334,2282],{"class":1097},[40,4336,4337,4339,4341,4343],{"class":42,"line":183},[40,4338,47],{"class":46},[40,4340,2289],{"class":50},[40,4342,2292],{"class":50},[40,4344,2295],{"class":50},[40,4346,4347],{"class":42,"line":253},[40,4348,1129],{"emptyLinePlaceholder":1128},[40,4350,4351],{"class":42,"line":1182},[40,4352,2304],{"class":1097},[40,4354,4355,4357,4359,4361,4363],{"class":42,"line":1188},[40,4356,47],{"class":46},[40,4358,2311],{"class":50},[40,4360,2314],{"class":54},[40,4362,2317],{"class":50},[40,4364,2320],{"class":50},[40,4366,4367],{"class":42,"line":1214},[40,4368,1129],{"emptyLinePlaceholder":1128},[40,4370,4371],{"class":42,"line":1220},[40,4372,2329],{"class":1097},[40,4374,4375,4377],{"class":42,"line":1225},[40,4376,2251],{"class":54},[40,4378,2320],{"class":50},[40,4380,4381,4383,4385],{"class":42,"line":1231},[40,4382,2340],{"class":46},[40,4384,2343],{"class":50},[40,4386,2346],{"class":50},[26,4388,2350],{"id":2349},[22,4390,4391,2356],{},[37,4392,2355],{},[30,4394,4395],{"className":32,"code":2359,"language":34,"meta":35,"style":35},[37,4396,4397,4403,4407,4411,4419,4423,4427],{"__ignoreMap":35},[40,4398,4399,4401],{"class":42,"line":43},[40,4400,2251],{"class":54},[40,4402,2320],{"class":50},[40,4404,4405],{"class":42,"line":61},[40,4406,1129],{"emptyLinePlaceholder":1128},[40,4408,4409],{"class":42,"line":150},[40,4410,2376],{"class":1097},[40,4412,4413,4415,4417],{"class":42,"line":161},[40,4414,2381],{"class":46},[40,4416,2384],{"class":50},[40,4418,2387],{"class":50},[40,4420,4421],{"class":42,"line":172},[40,4422,1129],{"emptyLinePlaceholder":1128},[40,4424,4425],{"class":42,"line":183},[40,4426,2396],{"class":1097},[40,4428,4429,4431],{"class":42,"line":253},[40,4430,2401],{"class":46},[40,4432,2404],{"class":50},[30,4434,4435],{"className":2407,"code":2408,"language":2409,"meta":35,"style":35},[37,4436,4437,4441],{"__ignoreMap":35},[40,4438,4439],{"class":42,"line":43},[40,4440,2416],{},[40,4442,4443],{"class":42,"line":61},[40,4444,2421],{},[26,4446,2425],{"id":2424},[30,4448,4449],{"className":32,"code":2428,"language":34,"meta":35,"style":35},[37,4450,4451],{"__ignoreMap":35},[40,4452,4453,4455],{"class":42,"line":43},[40,4454,2401],{"class":46},[40,4456,2437],{"class":50},[30,4458,4459],{"className":2440,"code":2441,"language":1692,"meta":35,"style":35},[37,4460,4461,4465,4469,4473,4477,4481,4485,4489,4493,4497,4501,4505,4509],{"__ignoreMap":35},[40,4462,4463],{"class":42,"line":43},[40,4464,2448],{},[40,4466,4467],{"class":42,"line":61},[40,4468,2453],{},[40,4470,4471],{"class":42,"line":150},[40,4472,1129],{"emptyLinePlaceholder":1128},[40,4474,4475],{"class":42,"line":161},[40,4476,2462],{},[40,4478,4479],{"class":42,"line":172},[40,4480,2467],{},[40,4482,4483],{"class":42,"line":183},[40,4484,1129],{"emptyLinePlaceholder":1128},[40,4486,4487],{"class":42,"line":253},[40,4488,2476],{},[40,4490,4491],{"class":42,"line":1182},[40,4492,2481],{},[40,4494,4495],{"class":42,"line":1188},[40,4496,2486],{},[40,4498,4499],{"class":42,"line":1214},[40,4500,2491],{},[40,4502,4503],{"class":42,"line":1220},[40,4504,2496],{},[40,4506,4507],{"class":42,"line":1225},[40,4508,2501],{},[40,4510,4511],{"class":42,"line":1231},[40,4512,2506],{},[271,4514],{},[18,4516,2512],{"id":2511},[22,4518,2515,4519,2522],{},[2517,4520,2519],{"href":2519,"rel":4521},[2521],[975,4523,2525],{},{"title":35,"searchDepth":61,"depth":61,"links":4525},[4526,4527,4535,4540,4545,4550],{"id":1022,"depth":61,"text":1023},{"id":1082,"depth":61,"text":1083,"children":4528},[4529,4530,4531,4532,4533,4534],{"id":1086,"depth":150,"text":1087},{"id":1343,"depth":150,"text":1344},{"id":1384,"depth":150,"text":1385},{"id":1424,"depth":150,"text":1425},{"id":1450,"depth":150,"text":1451},{"id":1619,"depth":150,"text":1620},{"id":1637,"depth":61,"text":1638,"children":4536},[4537,4538,4539],{"id":1641,"depth":150,"text":1642},{"id":1703,"depth":150,"text":1704},{"id":1755,"depth":150,"text":1756},{"id":1821,"depth":61,"text":1822,"children":4541},[4542,4543,4544],{"id":1825,"depth":150,"text":1826},{"id":1857,"depth":150,"text":1858},{"id":1919,"depth":150,"text":1920},{"id":2236,"depth":61,"text":2237,"children":4546},[4547,4548,4549],{"id":2240,"depth":150,"text":2241},{"id":2349,"depth":150,"text":2350},{"id":2424,"depth":150,"text":2425},{"id":2511,"depth":61,"text":2512},{"date":997,"tags":4552,"draft":1001,"author":1002},[2555,2556,999],[2555,2556,999],1787385988914]