Kei te whakamahia nga tono Tukutuku inaianei ki nga waahi katoa, a, i roto i nga tikanga kawe waka katoa, kei te noho a HTTP i te wahanga o te raiona. I te wa e ako ana i nga ahuatanga o te whakawhanaketanga tono paetukutuku, he iti noa te aro o te nuinga o nga tangata ki te punaha whakahaere e whakahaere ana enei tono. Ko te wehenga o te whanaketanga (Dev) me nga mahi (Ops) i kino noa iho te ahuatanga. Engari i te pikinga ake o te ahurea DevOps, kei te noho haepapa nga kaiwhakawhanake ki te whakahaere i a raatau tono i roto i te kapua, na reira he tino whai hua mo ratou kia tino mohio ki te tuara o te punaha whakahaere. He tino whai hua tenei mena kei te ngana koe ki te tuku punaha mo nga mano tini, tekau mano ranei o nga hononga tukutahi.
He rite tonu nga here i roto i nga ratonga tukutuku ki era atu tono. Ahakoa he taurite kawenga, he kaimau raraunga ranei, he rite nga raru o enei tono katoa i roto i te taiao mahi nui. Ma te mohio ki enei here taketake me pehea te wikitoria i te nuinga o te waa ka awhina koe ki te arotake i te mahinga me te whakawhanui o o tono paetukutuku.
Kei te tuhi au i tenei raupapa tuhinga hei whakautu i nga patai a nga kaiwhakawhanake rangatahi e hiahia ana kia noho hei tohunga hoahoa punaha mohio. Kaore e taea te maarama ki nga tikanga arotautanga tono Linux me te kore e ruku ki nga kaupapa o te mahi i te taumata o te punaha whakahaere. Ahakoa he maha nga momo tono, kei roto i tenei raupapa e hiahia ana ahau ki te tuhura i nga tono a-tukutuku, kaua ki nga tono papamahi penei i te kaitirotiro, te kaiwhakatika tuhinga ranei. Ko tenei rauemi mo nga kaiwhakawhanake me nga kaihoahoa e hiahia ana ki te mohio ki te mahi a nga kaupapa Linux, Unix ranei, me pehea hoki te hanga mo nga mahi teitei.
Ko Linux te ruma tūmau punaha whakahaere, me te nuinga o nga wa ka rere o tono i runga i tenei OS. Ahakoa e kii ana ahau "Linux", i te nuinga o te waa ka taea e koe te kii marie ko taku tikanga ko nga punaha whakahaere-rite katoa ki te Unix. Heoi ano, kaore au i whakamatau i te waehere e hono ana ki etahi atu punaha. Na, ki te hiahia koe ki te FreeBSD, OpenBSD ranei, ka rereke pea o hua. Ka whakamatau ahau i tetahi mea Linux-motuhake, ka tohu ahau.
Ahakoa ka taea e koe te whakamahi i tenei matauranga ki te hanga i tetahi taupānga mai i te timatanga ka tino arotauhia, he pai ake kia kaua e mahi. Mena ka tuhia e koe he tūmau tukutuku hou ki C, C++ ranei mo te tono pakihi a to whakahaere, koinei pea to ra whakamutunga mo te mahi. Heoi, ma te mohio ki te hanganga o enei tono ka awhina koe ki te whiriwhiri i nga kaupapa o naianei. Ka taea e koe te whakataurite i nga punaha-a-tukanga me nga punaha miro tae atu ki nga kaupapa-a-kaupapa. Ka mohio koe, ka maioha hoki he aha te pai ake o te mahi a Nginx i a Apache httpd, he aha te tono a Tornado i runga i te Python ka nui ake nga kaiwhakamahi ka whakatauritea ki te tono Python i hangaia e Django.
ZeroHTTPd: Utauta Ako
KoreHTTPd he tūmau tukutuku nāku i tuhi mai i te wahanga C hei taputapu whakaako. Kaore he herenga o waho, tae atu ki te uru atu ki a Redis. Ka whakahaerehia e matou a maatau ake tikanga Redis. Tirohia i raro mo etahi atu korero.
Ahakoa ka roa te roa o taatau korero mo te ariā, kaore he mea pai atu i te tuhi waehere, te whakahaere, me te whakataurite i nga hoahoanga tūmau katoa ki a raatau ano. Koinei te tikanga tino kitea. Na reira, ka tuhia e matou he tūmau tukutuku ZeroHTTPd ngawari ma te whakamahi i ia tauira: i runga i te tukanga, i te miro, me te kaupapa. Kia tirohia ia o enei tūmau ka kite i te ahua o te mahi ki a raatau. Ka whakatinanahia a ZeroHTTPd i roto i te konae C kotahi. Kei roto i te tūmau-a-kaupapa Uthash, he whakatinanatanga ripanga hash nui ka puta mai i roto i te konae pane kotahi. I etahi atu take, kaore he whakawhirinaki, kia kore ai e whakararu i te kaupapa.
He maha nga korero kei roto i te waehere hei awhina i a koe ki te mohio. I te mea he tūmau tukutuku ngawari i roto i etahi rarangi waehere, ko ZeroHTTPd he anga iti mo te whanaketanga paetukutuku. He iti noa te mahi, engari he kaha ki te mahi i nga konae pateko me nga wharangi "hihiri" tino ngawari. Me kii atu ahau he pai a ZeroHTTPd mo te ako me pehea te hanga tono Linux tino mahi. Ko te nuinga, ko te nuinga o nga ratonga tukutuku e tatari ana mo nga tono, tirohia me te tukatuka. Koinei tonu te mahi a ZeroHTTPd. He taputapu tenei mo te ako, ehara i te hanga. Ehara i te pai ki te whakahaere hapa me te kore pea e whakamanamana i nga mahi haumarutanga pai (aue, i whakamahia e au strcpy) ko nga tinihanga mohio ranei o te reo C. Engari ko taku tumanako ka pai tana mahi.
ZeroHTTPd page home. Ka taea e ia te whakaputa momo momo konae tae atu ki nga whakaahua
Tono Pukapuka Manuhiri
Ko nga tono tukutuku hou e kore e whakawhäitihia ki nga konae pateko. He uaua o raatau taunekeneke me nga momo papaa raraunga, keteroki, aha atu. Na ka hanga he tono tukutuku ngawari e kiia nei ko "Buka Manuhiri" ka waiho e nga manuhiri nga urunga ki raro i o raatau ingoa. Kei te toa pukapuka manuhiri nga urunga i mahue i mua. He porotiti manuhiri kei raro o te wharangi.
Tono Tukutuku "Buka Manuhiri" ZeroHTTPd
Kei Redis te kaute manuhiri me nga pukapuka manuhiri. Mo nga whakawhitiwhiti korero me Redis, ka whakatinanahia nga tikanga ake; kaore e whakawhirinaki ki te whare pukapuka o waho. Ehara ahau i te tino powhiriwhiri ki te huri i te waehere homebrew ina he watea ma te whanui nga otinga kua whakamatauria. Engari ko te kaupapa o ZeroHTTPd ko te ako i nga mahi Linux me te uru atu ki nga ratonga o waho, i te wa e pa ana te mahi ki nga tono HTTP. Me tino whakahaere tatou i nga whakawhitiwhitinga korero me Redis i roto i ia hoahoanga tūmau. I etahi hoahoa ka whakamahi matou i nga waea aukati, i etahi atu ka whakamahia e matou nga tikanga e pa ana ki nga huihuinga. Ma te whakamahi i te whare pukapuka kiritaki Redis o waho e kore e hoatu tenei mana. Hei taapiri, he iti noa nga mahi a ta maatau kaihoko Redis iti (te tiki, te whakarite, me te whakanui ake i te kii; te tiki me te taapiri atu ki te rarangi). I tua atu, he tino huatau me te ngawari te kawa Redis. Kaore koe e hiahia ki te whakaako motuhake. Ko te meka e mahia ana e te kawa nga mahi katoa i roto i te kotahi rau rarangi o te waehere e whakaatu ana i te pai o te whakaaro.
Ko te ahua e whai ake nei e whakaatu ana he aha te mahi a te tono ina tono te kiritaki (kaitirotiro). /guestbookURL.
Me pehea te mahi a te tono pukapuka manuhiri
Ina tukuna he wharangi pukapuka manuhiri, kotahi te waea ki te punaha konae ki te panui i te tauira ki te mahara me nga waea whatunga e toru ki a Redis. Kei roto i te konae tauira te nuinga o nga ihirangi HTML mo te wharangi kei te whakaahua o runga ake nei. He waahi motuhake ano mo te waahanga hihiri o te ihirangi: nga pou me te kaute manuhiri. Ka whakawhiwhia e matou mai i a Redis, whakauruhia ki roto i te wharangi ka whakawhiwhia ki te kaihoko nga ihirangi kua oti te hanga. Ko te karanga tuatoru ki a Redis ka taea te karo na te mea ka whakahokia e Redis te uara matua hou ina piki ake. Heoi, mo ta maatau tūmau, he hoahoanga-a-hanganga-a-hanganga, he maha nga waea whatunga he whakamatautau pai mo nga kaupapa ako. Na ka makahia e matou te uara whakahoki a Redis o te maha o nga manuhiri ka patai ki te waea motuhake.
Nga hoahoanga tūmau ZeroHTTPd
Kei te hanga e matou nga putanga e whitu o ZeroHTTPd he rite te mahi engari he rereke nga hoahoanga:
He tukurua
Tūmau marau (kotahi te tukanga tamaiti mo ia tono)
Tūmau i mua i te marau (i mua i te marau o nga tukanga)
Tūmau whai miro mahi (kotahi miro mo ia tono)
Tūmau me te hanga miro-mua
Ko te hoahoanga poll()
Ko te hoahoanga epoll
Ka inehia e matou te mahinga o ia hoahoanga ma te utaina i te tūmau me nga tono HTTP. Engari ka whakatairitehia nga hoahoanga tino whakarara, ka piki te maha o nga patai. E toru nga wa ka whakamatautauhia ka tatauhia te toharite.
Tikanga whakamatautau
ZeroHTTPd tatūnga whakamātautau kawenga
He mea nui ka whakahaere nga whakamatautau, kaore nga waahanga katoa e rere i runga i te miihini kotahi. I tenei keehi, ka tukuna e te OS etahi atu whakaritenga mo te wa e whakataetae ana nga waahanga mo te PTM. Ko te ine i te punaha whakahaere o runga ake o ia hoahoanga tūmau kua tohua ko tetahi o nga tino whainga o tenei mahi. Ko te taapiri i etahi atu taurangi ka kino ki te mahi. Na reira, ko te tautuhinga i te pikitia i runga ake ka tino pai.
He aha te mahi a ia o enei tūmau?
load.unixism.net: Koinei te waahi ka oma matou ab, whaipainga Tohu Paerewa Apache. Ka mahia e ia te kawenga e hiahiatia ana hei whakamatautau i o maatau hoahoanga tūmau.
nginx.unixism.net: I etahi wa ka hiahia matou ki te whakahaere neke atu i te kotahi tauira o te kaupapa tūmau. Ki te mahi i tenei, ka mahi te tūmau Nginx me nga tautuhinga e tika ana hei taurite kawenga e puta mai ana ab ki a tatou tukanga tūmau.
zerohttpd.unixism.net: I konei ka whakahaerehia e matou a matou kaupapa tūmau i runga i nga hoahoanga rereke e whitu, kotahi i te wa.
redis.unixism.net: Ka whakahaerehia e tenei tūmau te Redis daemon, kei reira nga pukapuka manuhiri me nga porotiti manuhiri e rongoa ai.
Ka rere nga tūmau katoa i runga i te kaupapa pūtukatuka kotahi. Ko te whakaaro ko te arotake i te tino mahi o ia hoahoanga. I te mea ka whakamatauria nga papatono tūmau katoa i runga i te taputapu kotahi, he rarangi turanga tenei mo te whakataurite. Ko taku tatūnga whakamātautau he tūmau mariko i riihitia mai i Digital Ocean.
He aha ta tatou e ine ana?
Ka taea e koe te ine i nga tohu rereke. Ka arotakehia e matou nga mahi o ia hoahoanga i roto i tetahi whirihoranga ma te uta i nga kaitoro me nga tono ki nga taumata whakarara rereke: ka piki te kawenga mai i te 20 ki te 15 nga kaiwhakamahi kotahi.
Nga hua whakamatautau
Ko te tūtohi e whai ake nei e whakaatu ana i te mahinga o nga kaitoro i runga i nga hoahoanga rereke i nga taumata whakarara rereke. Ko te tuaka-y te maha o nga tono mo ia hekona, ko te tuaka-x he hononga whakarara.
Kei raro nei he ripanga me nga hua.
tono mo ia hekona
whakaahuru tukurua marau mua-marau roma i mua i te roma porowhita epoll
20
7
112
2100
1800
2250
1900
2050
50
7
190
2200
1700
2200
2000
2000
100
7
245
2200
1700
2200
2150
2100
200
7
330
2300
1750
2300
2200
2100
300
-
380
2200
1800
2400
2250
2150
400
-
410
2200
1750
2600
2000
2000
500
-
440
2300
1850
2700
1900
2212
600
-
460
2400
1800
2500
1700
2519
700
-
460
2400
1600
2490
1550
2607
800
-
460
2400
1600
2540
1400
2553
900
-
460
2300
1600
2472
1200
2567
1000
-
475
2300
1700
2485
1150
2439
1500
-
490
2400
1550
2620
900
2479
2000
-
350
2400
1400
2396
550
2200
2500
-
280
2100
1300
2453
490
2262
3000
-
280
1900
1250
2502
horapa nui
2138
5000
-
horapa nui
1600
1100
2519
-
2235
8000
-
-
1200
horapa nui
2451
-
2100
10
-
-
horapa nui
-
2200
-
2200
11
-
-
-
-
2200
-
2122
12
-
-
-
-
970
-
1958
13
-
-
-
-
730
-
1897
14
-
-
-
-
590
-
1466
15
-
-
-
-
532
-
1281
Mai i te kauwhata me te ripanga ka kitea kei runga ake i te 8000 nga tono tukutahi, e rua noa nga kaitakaro e toe ana: mua-marau me te epoll. I te piki haere o te uta, he kino ake te mahi a te kaitoro i runga i te pooti i to tarere. Ko te hoahoanga miro i mua i te hangahanga he kaiwhakataetae pai ki te whiriwhiri, he tohu mo te pai o te whakatakotoranga a te kernel Linux i te maha o nga miro.
Waehere Pūtake ZeroHTTPd
Waehere Pūtake ZeroHTTPd konei. He whaiaronga motuhake mo ia hoahoanga.
I tua atu i nga raarangi e whitu mo nga hoahoanga katoa, e rua ano kei roto i te raarangi o runga: te iwi whanui me nga tauira. Kei te tuatahi te konae index.html me te ahua mai i te whakaahua tuatahi. Ka taea e koe te whakatakoto i etahi atu konae me nga kōpaki ki reira, a me mahi a ZeroHTTPd i aua konae pateko kaore he raru. Mena ka rite te ara i roto i te kaitirotiro ki te ara i roto i te kōpaki whanui, ka rapu a ZeroHTTPd i te konae index.html kei roto i tenei raarangi. Ko nga ihirangi mo te pukapuka manuhiri he mea hanga hihiri. He wharangi kainga noa tana, a ko ona ihirangi kei runga i te konae 'templates/guestbook/index.html'. He ngawari te taapiri a ZeroHTTPd i nga wharangi hihiri mo te toronga. Ko te whakaaro ka taea e nga kaiwhakamahi te taapiri i nga tauira ki tenei raarangi me te whakawhānui ake i te ZeroHTTPd ina hiahiatia.
Hei hanga i nga tūmau e whitu, rere make all mai i te whaiaronga taumata-runga - ka puta nga hanga katoa ki tenei raarangi. Ko nga konae whakahaere e rapu ana i nga raarangi mo te marea me nga tauira i roto i te raarangi i whakarewahia ai.
API Linux
Kaore koe e hiahia kia tino mohio koe ki te API Linux kia mohio ai koe ki nga korero o tenei raupapa tuhinga. Heoi, ka tūtohu ahau ki te panui ake mo tenei kaupapa; he maha nga rauemi tohutoro kei runga i te Ipurangi. Ahakoa ka pa atu matou ki nga waahanga maha o nga API Linux, ko ta matou arotahi ka aro nui ki nga tukanga, nga miro, nga huihuinga, me te puranga whatunga. I tua atu i nga pukapuka me nga tuhinga mo te API Linux, ka tūtohu ano ahau ki te panui mana mo nga waea punaha me nga mahi whare pukapuka e whakamahia ana.
Mahinga me te Whakanuia
Kotahi te korero mo te mahi me te tauineine. Ko te tikanga, kaore he hononga i waenganui i a raatau. Ka taea e koe he ratonga tukutuku e mahi pai ana, me te wa whakautu mo etahi manomano hēkona, engari karekau e tauine. Waihoki, tera pea he tono tukutuku he iti te mahi, he iti noa nga hēkona hei whakautu, engari ka whakatauhia ma te tekau ki te hapai i nga mano tini o nga kaiwhakamahi kotahi. Engari, ko te huinga o te mahi nui me te tauine he huinga tino kaha. I te nuinga o te waa he iti noa te whakamahi rauemi a nga tono mahi teitei, na reira ka pai ake te mahi ki nga kaiwhakamahi i runga i te tūmau, ka whakaiti i nga utu.
Nga mahi PTM me I/O
Ka mutu, i roto i te mahi rorohiko e rua tonu nga momo mahi: mo I/O me te PTM. Ko te whiwhi tono mai i te Ipurangi (whatunga I/O), te tuku i nga konae (whatunga me te kōpae I/O), te whakawhiti korero me te papaa raraunga (whatunga me te kōpae I/O) he mahi I/O katoa. Ko etahi o nga paatai papaunga raraunga ka tino kaha ki te PTM (te whakariterite, te toharite miriona hua, me etahi atu). Ko te nuinga o nga tono tukutuku e whakawhäitihia ana e te I/O morahi e taea ana, a he uaua te whakamahi i te tukatuka i te kaha katoa. Ina kite koe kei te whakamahi etahi mahi I/O i te maha o te PTM, tera pea he tohu mo te hoahoanga tono ngoikore. Ko te tikanga tenei ka moumou rawa nga rauemi CPU i runga i te whakahaere tukanga me te whakawhiti horopaki - a kaore tenei i te tino whai hua. Mena kei te mahi koe i tetahi mea penei i te tukatuka whakaahua, te hurihanga ororongo, te ako miihini ranei, katahi ka hiahia te tono ki nga rauemi CPU kaha. Engari mo te nuinga o nga tono kaore tenei i te keehi.