ʻO kaʻu ʻimi ʻewalu makahiki e hoʻoheluhelu i nā pahu wikiō 45. Mahele 2

Hōʻike ka ʻāpana mua i ka ʻimi paʻakikī e hoʻokaʻawale i nā wikiō ʻohana kahiko a wāwahi iā lākou i nā hiʻohiʻona ʻokoʻa.. Ma hope o ka hana ʻana i nā kiʻi āpau, makemake wau e hoʻonohonoho i kā lākou nānā ʻana ma ka pūnaewele e like me ka maʻalahi ma YouTube. No ka mea he mau hoʻomanaʻo pilikino kēia o ka ʻohana, ʻaʻole hiki ke kau ʻia ma YouTube ponoʻī. Pono mākou i kahi hoʻokipa pilikino ʻoi aku ka maʻalahi a me ka palekana.

KaʻAnuʻu 3: Hoʻopuka

ʻO ClipBucket, he kumu wehe YouTube clone hiki ke hoʻokomo ʻia ma kāu kikowaena ponoʻī

ʻO ka mea mua aʻu i hoʻāʻo ai ClipBucket, ka mea i kapa iā ia iho he open-source YouTube clone hiki iā ʻoe ke hoʻouka ma kāu kikowaena.

ʻO kaʻu ʻimi ʻewalu makahiki e hoʻoheluhelu i nā pahu wikiō 45. Mahele 2

ʻO ka mea kupanaha, ʻaʻohe ʻōlelo kuhikuhi hoʻonohonoho ʻo ClipBucket. Mahalo iā i ka hooponopono o waho я 'akomi i ke ka'ina ho'okomo me ke kōkuaʻana o ʻO ke kūpono, he mea paahana hoʻonohonoho hoʻonohonoho kikowaena.

ʻO kahi o ka paʻakikī ʻo ia ka haki ʻana o nā palapala hoʻonohonoho ClipBucket. I kēlā manawa hana ma Google a e like me nā ʻōlelo o ka ʻaelike, ʻaʻohe oʻu kuleana e hāʻawi i ka clone YouTube open source, akā ʻo wau hoʻopuka i kahi hōʻike kuhi, kahi e hiki ai ke hana maʻalahi nā hoʻoponopono e pono ai. Ua hala na mahina, aole nae lakou i maopopo i ke ano o ka pilikia. Ua hoʻohui lākou i nā mea a pau nui aʻe nā hewa i kēlā me kēia hoʻokuʻu.

Ua hoʻohana ʻo ClipBucket i kahi hoʻohālike kūkākūkā—ua hoʻokuʻu lākou i kā lākou code no ka manuahi a uku ʻia no ke kōkua hoʻolaha. Ua ʻike mālie iaʻu ʻaʻole makemake nui kahi hui e loaʻa kālā mai ke kākoʻo i uku ʻia i ka hoʻokomo ʻana o nā mea kūʻai i ka huahana iā lākou iho.

ʻO MediaGoblin, kahi koho hou aʻe

Ma hope o nā mahina o ka huhū me ClipBucket, ua nānā au i nā koho i loaʻa a loaʻa ʻO MediaGoblin.

ʻO kaʻu ʻimi ʻewalu makahiki e hoʻoheluhelu i nā pahu wikiō 45. Mahele 2
ʻO MediaGoblin he kahua kaʻana like pāpaho

He nui nā mea maikaʻi a MediaGoblin. ʻAʻole like me ClipBucket ma PHP maikaʻi ʻole, ua kākau ʻia ʻo MediaGoblin ma Python, he ʻōlelo aʻu i ʻike nui ai i ka coding. ʻAi laina kauoha, hiki iā ʻoe ke hoʻoiho maʻalahi i ka hoʻoiho wikiō. ʻO ka mea nui loa, hele mai ʻo MediaGoblin me Kiʻi Docker, ka mea e hoʻopau i nā pilikia hoʻokomo.

Docker he ʻenehana ia e hoʻokumu i kahi kaiapuni kūʻokoʻa no kahi noi e holo ma nā wahi āpau. Hoʻohana wau iā Docker i loko ka nui o kāna mau papahana.

ʻO ka paʻakikī kamahaʻo o ka hana hou ʻana iā MediaGoblin

Ua manaʻo wau he hana koʻikoʻi ka lawe ʻana i ke kiʻi docker MediaGoblin. ʻAe, ʻaʻole i holo maikaʻi kēlā ala.

ʻAʻole i loaʻa i ke kiʻi i hoʻopau ʻia nā hana pono ʻelua:

  • Kalaukina
    • Hoʻokumu ʻo MediaGoblin i kahi puka pāpaʻi lehulehu ma ke ʻano maʻamau, a makemake wau i kahi ala e kaohi ai i ke komo ʻana i nā poʻe o waho.
  • Hoʻololi hoʻololi
    • I kēlā me kēia manawa āu e hoʻoiho ai i kahi wikiō, hoʻāʻo ʻo MediaGoblin e transcode ia no ke kahe ʻana maikaʻi loa. Inā mākaukau mua ka wikiō no ke kahe ʻana, hoʻohaʻahaʻa ka transcoding i ka maikaʻi.
    • Hāʻawi ʻo MediaGoblin hoʻopau i ka transcoding ma o nā koho hoʻonohonoho, akā ʻaʻole hiki ke hana i kēia ma kahi kiʻi Docker i loaʻa.

ʻAe, ʻaʻohe pilikia. Hele mai ke kiʻi Docker puna hāmama, no laila hiki kūkulu hou iā ʻoe iho.

ʻO ka mea pōʻino, ʻaʻole i kūkulu hou ʻia ke kiʻi Docker mai kēia manawa. waihona waihona MediaGoblin. Ua ho'āʻo wau e hoʻohui pū me ia me ka mana mai ke kūkulu kūleʻa hope loa, akā ua hāʻule nō hoʻi. ʻOiai ua hoʻohana wau i ke code like, ua loli nā mea hilinaʻi waho o MediaGoblin, e wāwahi ana i ke kūkulu. Ma hope o nā hola he nui, ua holo au i ke kaʻina hana MediaGoblin he 10-15 mau minuke a hiki i ka hopena.

He mau mahina ma hope mai, ua like ka mea. ʻO ka huina, ua uhaʻi ke kaulahao hilinaʻi MediaGoblin i kaʻu kūkulu ʻana i nā makahiki ʻelua i hala iho nei, a ʻo ka manawa hope loa i hana ʻia ʻo ia wale nō i koʻu kākau ʻana i kēia ʻatikala. Ua paʻi hope wau pono'ī o MediaGoblin c nā hilinaʻi paʻakikī a me nā mana o nā hale waihona puke. I nā huaʻōlelo ʻē aʻe, ma kahi o ka ʻōlelo kānalua e hana ʻo MediaGoblin me kekahi ʻano kaulana > = 3.0, ua kau wau i kahi hilinaʻi kikoʻī ʻolihi 4.2.1no ka mea, ua hoʻāʻo au iā MediaGoblin me kēia mana. Me he mea lā e pono ai ka huahana hana hana hou, akā ʻaʻole au i hana.

Eia nō naʻe, ma hope o nā hola he nui o ka hakakā, ua hiki iaʻu ke kūkulu a hoʻonohonoho iā MediaGoblin i kahi kiʻi Docker. Ua maʻalahi ma laila hoʻokuʻu i ka transcoding pono ʻole и e hoʻokomo iā Nginx no ka hōʻoia.

KaʻAnuʻu 4. Mea hoʻokipa

No ka mea e holo ana ʻo MediaGoblin iā Docker ma kaʻu kamepiula kūloko, ʻo ka hana aʻe ʻo ia ke kau ʻana iā ia i kahi kikowaena kapua i hiki i ka ʻohana ke nānā i ke wikiō.

ʻO MediaGoblin a me ka pilikia mālama wikiō

Nui nā paepae e lawe i kahi kiʻi Docker a hoʻokipa iā ia ma kahi URL ākea. ʻO ka hopu ʻana, ʻo ka hoʻohui ʻana i ka app ponoʻī, pono e paʻi ʻia 33 GB o nā faila wikiō. Hiki ke hoʻopaʻa inoa iā lākou i kahi kiʻi Docker, akā paʻakikī a paʻakikī hoʻi. ʻO ka hoʻololi ʻana i hoʻokahi laina o ka hoʻonohonoho ʻana e koi hou i ka 33 GB o ka ʻikepili.

I koʻu hoʻohana ʻana iā ClipBucket ua hoʻoholo wau i ka pilikia me gcsfuse - he mea pono e hiki ai i ka ʻōnaehana hana ke hoʻouka i nā papa kuhikuhi i Google Cloud cloud storage ma ke ʻano he ala maʻamau i ka ʻōnaehana faila. Hoʻokipa au i nā faila wikiō ma Google Cloud a hoʻohana i ka gcsfuse e hōʻike iā lākou ma ClipBucket e like me nā faila kūloko.

ʻO ka ʻokoʻa, ua holo ʻo ClipBucket i kahi mīkini virtual maoli, ʻoiai ʻo MediaGoblin i holo i kahi pahu Docker. Ma ʻaneʻi, ʻoi aku ka paʻakikī o ka hoʻouka ʻana i nā faila mai ka waihona kapuaʻi. Ua hoʻohana au i mau hola he nui e hoʻoponopono i nā pilikia āpau a kākau wau e pili ana moʻomanaʻo moʻomanaʻo holoʻokoʻa.

ʻO kaʻu ʻimi ʻewalu makahiki e hoʻoheluhelu i nā pahu wikiō 45. Mahele 2
ʻO ka hoʻohui mua ʻana o MediaGoblin me Google Cloud storage, kaʻu e kamaʻilio nei i ʻōlelo ʻia ma 2018

Ma hope o kekahi mau pule o ka hoʻoponopono ʻana i nā ʻāpana āpau, ua hana nā mea a pau. Me ka ʻole o ka hoʻololi ʻana i ke code a MediaGoblin, ua hoʻopunipuni au iā ia i ka heluhelu ʻana a me ke kākau ʻana i nā faila media i Google cloud storage.

ʻO ka pilikia wale nō, ua lohi ʻo MediaGoblin. He 20 kekona piha no ka hoʻouka ʻana i nā kiʻi liʻiliʻi wikiō ma ka ʻaoʻao home. Inā ʻoe e lele i mua i ka nānā ʻana i ke wikiō, hoʻomaha ʻo MediaGoblin no 10 kekona pau ʻole ma mua o ka hoʻomaka ʻana i ka pāʻani.

ʻO ka pilikia nui ʻo ia ka lawe ʻana o nā wikiō a me nā kiʻi i kahi ala lōʻihi a puni i ka mea hoʻohana. Pono lākou e hele mai Google cloud storage ma o gcsfuse i MediaGoblin, Nginx - a laila wale nō lākou i hele ai i ka polokalamu kele pūnaewele. ʻO ka bottleneck nui ka gcsfuse, ʻaʻole i hoʻopaʻa ʻia no ka wikiwiki. Hoʻomaopopo nā mea hoʻomohala e pili ana i nā lohi nui i ka hana o ka pono ma ka ʻaoʻao nui o ka papahana:

ʻO kaʻu ʻimi ʻewalu makahiki e hoʻoheluhelu i nā pahu wikiō 45. Mahele 2
Nā ʻōhumu e pili ana i ka hana haʻahaʻa i ka palapala gcsfuse

ʻO ke kūpono, pono e kiʻi pololei ka polokalamu kele i nā faila mai Google Cloud, me ka ʻalo ʻana i nā papa waena. Pehea e hiki ai iā ʻoe ke hana i kēia me ka luʻu ʻole i ka codebase MediaGoblin a i ʻole ka hoʻohui ʻana i ka loiloi hoʻohui Google Cloud paʻakikī?

Hoʻopunipuni sub_filter ma nginx

ʻO ka pōmaikaʻi, ua loaʻa iaʻu kahi hopena maʻalahi, ʻoiai i kahi liʻiliʻi ʻinoʻino. Ua hoʻohui au i ka hoʻonohonoho default.conf ma Nginx he kānana:

sub_filter "/mgoblin_media/media_entries/" "https://storage.googleapis.com/MY-GCS-BUCKET/media_entries/";
sub_filter_once off;

I kaʻu hoʻonohonoho, ua hana ʻo Nginx ma ke ʻano he koho ma waena o MediaGoblin a me ka mea hoʻohana hope. ʻO ke kuhikuhi ma luna nei e kuhikuhi iā Nginx e ʻimi a hoʻololi i nā pane HTML MediaGoblin āpau ma mua o ka lawelawe ʻana iā lākou i ka mea hoʻohana hope. Hoʻololi ʻo Nginx i nā ala pili āpau i nā faila MediaGoblin me nā URL mai Google cloud storage.

No ka laʻana, hana ʻo MediaGoblin i HTML e like me kēia:

<video width="720" height="480" controls autoplay>
  <source
    src="/mgoblin_media/media_entries/16/Michael-riding-a-bike.mp4"
    type="video/mp4">
</video>

Hoʻololi ʻo Nginx i ka pane:

<video width="720" height="480" controls autoplay>
  <source
    src="https://storage.googleapis.com/MY-GCS-BUCKET/media_entries/16/Michael-riding-a-bike.mp4"
    type="video/mp4">
</video>

I kēia manawa ua holo nā mea a pau e like me ka mea i manaʻo ʻia:

ʻO kaʻu ʻimi ʻewalu makahiki e hoʻoheluhelu i nā pahu wikiō 45. Mahele 2
Hoʻopuka hou ʻo Nginx i nā pane mai MediaGoblin i hiki i nā mea kūʻai ke noi pololei i nā faila media mai Google cloud storage

ʻO ka mea maikaʻi loa e pili ana i kaʻu hoʻonā, ʻaʻole ia e koi i nā loli i ka code MediaGoblin. Hoʻohui maikaʻi ʻia nā kuhikuhi ʻelua laina a Nginx iā MediaGoblin a me Google Cloud, ʻoiai ʻaʻole ʻike kēia mau lawelawe i kekahi i kekahi.

i hoʻopuka: Pono kēia hoʻonā e hiki ke heluhelu ʻia nā faila ma Google cloud storage e nā mea a pau. No ka hōʻemi ʻana i ka pilikia o ke komo ʻana me ka ʻae ʻole, hoʻohana wau i kahi inoa bākeke lōʻihi (e.g. mediagoblin-39dpduhfz1wstbprmyk5ak29) a hōʻoia ʻaʻole ʻae ke kulekele hoʻokele komo o ka bākeke i nā mea hoʻohana ʻole e hōʻike i nā mea o ka papa kuhikuhi.

Huahana hope

I kēia manawa ua loaʻa iaʻu kahi hopena hana piha. Ua holo ʻoliʻoli ʻo MediaGoblin i kāna pahu ponoʻī ma ka paepae kapuaʻi o Google, no laila ʻaʻole pono e hoʻopili ʻia a hoʻonui pinepine ʻia. ʻO nā mea a pau i loko o kaʻu kaʻina hana i hana ʻia a hiki ke hana hou ʻia, e ʻae ana i nā hoʻoponopono maʻalahi a i ʻole nā ​​​​rollbacks i nā mana o mua.

Ua makemake nui koʻu ʻohana i ka maʻalahi o ka nānā ʻana i nā wikiō. Me ke kōkua o ka hack Nginx i hōʻike ʻia ma luna nei, ua wikiwiki ka hana ʻana me nā wikiō e like me YouTube.

Penei ke ano o ka pale nana.

ʻO kaʻu ʻimi ʻewalu makahiki e hoʻoheluhelu i nā pahu wikiō 45. Mahele 2
Nā maʻiʻo o ka waihona wikiō ʻohana ma ka tag "Best"

Ke kaomi ʻana i ka liʻiliʻi liʻiliʻi e lawe mai i kahi pale e like me kēia:

ʻO kaʻu ʻimi ʻewalu makahiki e hoʻoheluhelu i nā pahu wikiō 45. Mahele 2
Ke nānā ʻana i hoʻokahi kiʻi ma kahi kikowaena media

Ma hope o nā makahiki o ka hana, he mea maikaʻi loa ka hāʻawi ʻana i nā lālā o ka ʻohana i ka manawa e nānā i kā mākou wikiō ma ka hoʻohana like ʻana me YouTube-like interface aʻu i makemake mua ai.

Bonus: E ho'ēmi i nā kumukūʻai ma lalo o $ 1 i kēlā me kēia mahina

ʻAʻole ʻoe e nānā pinepine i nā wikiō home, i kēlā me kēia mahina wale nō. Ua hui pū koʻu ʻohana ma kahi o 20 mau hola o ke kaʻa i hoʻokahi makahiki, akā e holo ana ke kikowaena 15/99,7. Ua uku au i $XNUMX i kēlā me kēia mahina no kahi kikowaena i emi iho ma XNUMX% o ka manawa.

I ka hopena o 2018, ua hoʻokuʻu ʻo Google i ka huahana Holo Kapua. Ke holo wikiwiki nei ka hiʻohiʻona pepehi i nā pahu Docker i hiki i ka noi ke pane i nā noi HTTP. ʻO ia hoʻi, hiki i ke kikowaena ke noho ma ke ʻano standby a hoʻomaka wale i ka wā e makemake ai kekahi e komo. No ka hoʻohana pinepine ʻana i nā noi e like me kaʻu, ua emi ke kumukūʻai mai $15 i kēlā me kēia mahina a i kekahi mau keneta o ka makahiki.

No nā kumu ʻaʻole wau e hoʻomanaʻo hou, ʻaʻole i hana ʻo Cloud Run me kaʻu kiʻi MediaGoblin. Akā me ka hiki ʻana mai o Cloud Run ua hoʻomanaʻo wau i kēlā ʻO Heroku hāʻawi i ka lawelawe like no ka manuahi, a ʻoi aku ka maikaʻi o kā lākou mau mea hana ma mua o kā Google.

Me kahi kikowaena noi manuahi, ʻo ke kumukūʻai wale nō ka mālama ʻikepili. He 2,3 keneta/GB ke kumu kūʻai maʻamau a Google. Lawe ka waihona wikiō i 33 GB, no laila ke uku wale nei au i 77 keneta i ka mahina.

ʻO kaʻu ʻimi ʻewalu makahiki e hoʻoheluhelu i nā pahu wikiō 45. Mahele 2
He $0,77 wale nō ke kumukūʻai o kēia hoʻonā

Manaʻo kōkua no ka poʻe hoʻolālā e hoʻāʻo

ʻIke loa ua lōʻihi ka lōʻihi o ke kaʻina hana. Akā, manaʻolana wau e kōkua kēia ʻatikala iā ʻoe e mālama i ka 80-90% o ka hoʻoikaika ʻana i ka helu helu a me ka hoʻolaha ʻana i kāu wikiō home. Ma kahi ʻāpana ʻokoʻa hiki iā ʻoe ke loaʻa kuhikuhi ʻanuʻu aʻe i loko o ke kaʻina hana, akā eia kekahi mau ʻōlelo aʻoaʻo maʻamau:

  • I ka wā o ka helu helu a me ka hoʻoponopono ʻana, mālama i nā metadata e like me ka hiki.
    • Hoʻopaʻa pinepine ʻia ka ʻike koʻikoʻi ma nā lepili cassette wikiō.
    • E mālama pono i ke kiʻi i paʻi ʻia mai ka lipine hea a ma ke ʻano he aha.
    • Kākau i lalo i ka lā o ka pana ʻana, i ʻike ʻia ma ke wikiō.
  • E noʻonoʻo e uku no nā lawelawe hoʻopaʻa inoa ʻoihana.
    • E hana ʻoe nui he paʻakikī a he pipiʻi ke hoʻohālikelike iā lākou ma ke ʻano o ka maikaʻi o ka digitization.
    • Akā e haʻalele i kahi hui i kapa ʻia ʻo EverPresent (e leka mai iaʻu inā makemake ʻoe i nā kikoʻī).
  • Inā ʻoe e hoʻopili iā ʻoe iho, kūʻai i kahi HDD.
    • He 100-200 MB ka wikiō wehewehe maʻamau i hoʻopaʻa ʻole ʻia.
    • Ua mālama au i nā mea a pau ma kaʻu Synology DS412 + (10 TB).
  • E hoʻopaʻa i ka metadata ma kekahi ʻano maʻamau i pili ʻole i kahi noi kikoʻī.
    • Nā wehewehe kiʻi, nā code manawa, nā lā, etc.
    • Inā mālama ʻoe i ka metadata ma kahi ʻano kikoʻī noiʻi (a ʻoi aku ka maikaʻi, mai mālama ʻoe iā ia), ʻaʻole hiki iā ʻoe ke hana hou i ka hana inā hoʻoholo ʻoe e hoʻohana i kahi hopena ʻē aʻe.
    • Ke hoʻoponopono nei ʻoe, ʻike ʻoe i ka nui o nā metadata pono ma ke wikiō. E lilo ana iā ʻoe inā ʻaʻole ʻoe e mālama iā lākou.
      • He aha ka hana ma ke wikiō?
      • ʻO wai ka mea i kākau inoa ma laila?
      • I ka manawa hea i hoʻopaʻa ʻia ai kēia?
  • E kaha i kāu mau wikiō punahele.
    • ʻO kaʻoiaʻiʻo, ʻoluʻolu loa ka hapa nui o nā wikiō home.
    • Hoʻopili wau i ka inoa "maikaʻi loa" i kaʻu mau kiʻi punahele a wehe iā lākou ke makemake au e nānā i nā wikiō ʻakaʻaka.
  • E hoʻonohonoho i kahi hoʻonā piha i ka hikiwawe i hele pololei ke kaʻina hana mai ka hoʻomaka a i ka pau ʻana.
    • Ua hoʻāʻo au e hoʻolima mua i nā lipine a pau, a laila hoʻoponopono i nā lipine a pau, etc.
    • Makemake wau i hoʻomaka me hoʻokahi lipine a hana i nā hana a pau me ia. A laila e maopopo iaʻu nā hoʻoholo a me nā pae e pili ana i ka hopena hope.
  • E hoʻomau i ka hoʻopaʻa ʻana i ka liʻiliʻi.
    • I kēlā me kēia manawa āu e hoʻoponopono ai a hoʻopaʻa hou paha i kahi clip, hoʻemi ʻoe i kona maikaʻi.
    • E hoʻokaʻawale i kāu kiʻi kiʻi i ka maikaʻi loa, a laila e hoʻololi i kēlā me kēia kiʻi i hoʻokahi manawa i loko o ke ʻano i hana maoli ʻia e nā mea nānā.
  • E hoʻohana i ka hopena maʻalahi loa e hoʻopuka i nā kiʻi wikiō.
    • I ka nānā hou ʻana, ʻike ʻia ʻo MediaGoblin he mea paʻakikī loa no ke ʻano maʻalahi o ka hana ʻana i nā ʻaoʻao pūnaewele me kahi hoʻonohonoho paʻa o nā faila wikiō.
    • Inā wau e hoʻomaka hou ana, e hoʻohana wau i kahi mea hoʻoheheʻe pūnaewele static e like me Hugo, ʻO Iekyll ai ole ia, ʻAhaʻi.
  • Hana i ka hoʻokomo.
    • ʻO ka hoʻoponopono wikiō he ala leʻaleʻa e hoʻohui i nā manawa maikaʻi loa mai nā wikiō he nui.
    • ʻO ka mea nui i ka hoʻoponopono ʻana i ke mele. Eia kekahi laʻana, he mea kupaianaha ke kumuhana Hau lohi mai The National, ʻo kēia kaʻu ʻike pilikino.

Source: www.habr.com