E hoʻomaʻamaʻa i ka pūnaewele ma mua a me ka palekana ma ka hoʻohālike Kolu edition Charlotte Harper Iulai 3, 2024 Hanaʻia / hoʻololi i Iune 3, 2025
INCE:
ʻO nā noʻonoʻo palekana ma ka Pūnaewele Hoʻohana no ka pūnaewele he mea nui o kekahi hoʻolālā hoʻolālā pūnaewele a me ka hoʻokōʻana, a he pono no ka hana kūpono. Ka leka uila (palapala palapala palapala), me ka hoʻokōʻana o ka HTML Ke nānā nei ka mea hoʻohana e make i ka manawa a loaʻa i kahi mea i hanaʻia ma ka Pūnaewele, maʻamau ma kahi o kahi polokalamu SmartParreen. ʻAʻoleʻike ka hapanui o nā poʻe e hoʻomaka i ka wā e makemake ai lākou e kūkulu i kahi mea e pono ai ke kauʻana i kahi mea kūʻai aku i nā mea kūʻai aku e hoʻohana ai a me ka uila. Inā he mau minuke āu e heluhelu ai ma o kēia puke a aʻo i nā mea aʻu e makemake ai, a e haʻi aku i kāu pūnaewele e pili ana iāʻoe
E pili ana iaʻu: ʻO wau kahi polokalamu hoʻomohala polokalamu me ka nui o kaʻike o kaʻike ma C / C ++,ʻo Java,ʻo Python,ʻo HTML,ʻo HTML Ke kūkulu nei wau i nā pūnaewele e makemake ai e hoʻohana, makemake e kipa, a me ka hoʻohuiʻana o ka hoʻohanaʻana, ua kūʻai aku au i kaʻikepili. Inā he manaʻo āu e makemake ai e nānā i kahi pūnaewele e nānā ai, e hiki ke kūkulu i kāu mau pono Ma kahi o ka ho'āʻoʻana e kūʻai aku iāʻoe i kaʻu manawa, ke ho'āʻo nei au e kūʻai iāʻoe i ka mea e pono ai ke aʻoʻana iāʻoe iho me ka mea e pono aiʻoe i kahi mea e pono ai. E maopopo iaʻu, eʻaeʻoleʻoe iāʻoe. Hiki iāʻoe ke hele i ke kula a aʻo i nā mea āpau o kēia me ka hoʻonaʻauao maʻamau, a heluheluʻoleʻoe i kēia puke i ke kula, akāʻaʻole makemake e hana i kāuʻoihana, a laweʻole maiʻoe i kāu mauʻoihana, a e lawe iāʻoe i kāu hana wela a noi iāʻoe e hoʻopau i nā hana. ʻAʻole wauʻo kāu kauka, hiki iāʻoe ke noʻonoʻo iaʻu e like me ka hoaaloha e makemake ai e alakaʻi iāʻoe i kahi kūleʻa pilikino. Aʻaʻole wau e kūʻai aku iāʻoe e kūleʻa ana, e ponoʻoe e kūʻai me kāu manawa. ʻO ke aʻoʻana i ka code he mau papa aʻo aʻo aʻaʻole maʻalahi loa, a iʻole e noʻonoʻoʻia. Ponoʻoe e hana e like me ka paʻakikī e hiki iāʻoe ke hoʻomau a hoʻomau a ho'āʻo a ho'āʻo hou e aʻo iāʻoe iho. ʻO ia ma keʻano o ke code iā ia iho. Holoʻia ke code e kahi mea e hoʻolālāʻia e hāʻawi aku i nā leka halaʻole, a e aʻo waleʻoe iāʻoe i keʻano o kaʻikeʻana i ka hewa o kāu hulina a me ka heluheluʻana i nāʻano'ē aʻe o ka poʻe'ē aʻe. A e'ōlelo wau,ʻaʻole ponoʻoe e lilo i mea waiwai nui, akamai, kūleʻa, a iʻole he mea kiko'ī a i hoʻonohonoho paha e kūkulu i kahi app. E mālama ka kamepiula i kēlā hui noʻoe. Ponoʻoe e hoʻomau i ka hoʻokolokolo a me ka hala, e mālama i ka hana a hana ikaika i ka mea āu e hana nei.
ʻO wauʻo wau: Uaʻike wau uaʻoi aku ka nui o ka pauku e aʻo ana a laweʻoe i nā ala mai kēia puke. ʻO wai wau? He nīnau paʻakikī kēlā. ʻAʻole wau eʻike iaʻu iho, e like me ka pilikia o nā kūlana lapaʻau e hiki ai ke paʻakikī a me ka hōʻikeʻana i kēia puke ma keʻano he mea paʻakikī e hōʻike ana iaʻu iho. I ka pōkole, ināʻoe e heluhelu i kahi puke, ua laweʻoe iāʻoe no ka mea, he mea pono ke heluhelu maʻoe i nā mea āpau āu e hana ai. He kanaka evino wau iāʻoe iho, ka mea hoʻomohala polokalamu, a he haumāna, a ke kākau nei wau i nā hua'ōlelo nui i ka hanaʻana i nā mea hou aku e like me ka laina o ka Pūnaewele. Nui,ʻo ia ka mea aʻu e hana ai: kūkulu wau i nā mea hana e kōkua iaʻu iho a me nā poʻe'ē aʻe e kūleʻa. He mea kākau wau,ʻoiaiʻo kēia kaʻu hoʻolaha mua aʻu e manaʻo ai e hoʻopau i ka hoʻopihaʻana i kaʻu waihona, aʻo wau kahi mea pena kiʻi pū kekahi. E haʻi aku wau i kēia iāʻoe, keʻano o wau i kahi kanaka'ē aʻe. ʻAʻole wau i hemolele, ua holo wau i ke kānāwai me ke kānāwai e alakaʻi ana iaʻu e haʻalele i nā hōʻiliʻili a me nā'āina'ē aʻe e hana i kahi inoa hou aku. He wahine wau ma ka hānauʻana, ke hoʻohana nei au i nā kiʻi kiʻi, e lawe i nā kiʻi o aʻu iho, a me nā lole lole'ē aʻe a me nā wahine'ē aʻe e like me ka wahine. Ua loaʻa iaʻu nā pilikia me nā poʻe'ē aʻe i ka wā ma mua e alakaʻi i nā hakakā me ka hoʻohanaʻana i kēia puke ma kou mau lima koke: pono wau e loaʻa i kēia. Makemakeʻoe e heluhelu a kākau i ke code e like me aʻu e like me aʻu e makemake ai e hana i kahi kālā e pono ai ke kūʻai aku i ke kālā e pono ai Ua loaʻa iaʻu nā pilikia o nā maka me ka nohoʻana, nā kulekele olakino, keʻano o ka hakakā, a me keʻano o ka Pūnaewele, a me kaʻu Aupuni ma kahi Laha '. Eia nō naʻe,ʻo kēia puke kahi mea e mālama nui ai, e kaʻu pēpē, koʻu waihona, a me kaʻu mea e noʻonoʻo ai i keʻano o ka home. Eʻoluʻolu e hoʻomanaʻo i koʻu hemolele, e loaʻa nā hewa, nā mea hewa, nā huahua, a me ka'ōlelo hou, a me kāu e hiki ai i keʻike ponoʻana i kāu kākauʻana me kaʻu kākau. Eia nō hoʻi, e hoʻomaopopo pono wau i ka manaʻo noʻoe ināʻoe e alo i nā pilikia ke kākau nei. E noʻonoʻo e like me kēia: ke hiki iāʻoe ke hoʻolimalima wale i kahi'ōnaehana kamepiula e hiki ai iāʻoe ke hoʻomaopopo i kaʻikeʻana a me ka hōʻikeʻana i nā pilikia Ke haʻi aku nei au iāʻoe no kēia no ka mea ua hālāwai wau me nā pilikia likeʻole. E hoʻohana i kēia puke ma kou pilikia pono'ī, e hana me kāu kaiāulu a me nā kaiāulu i loaʻa iaʻu ke aʻo aku nei i kahi mea kūʻai aku ma loko o kahi kaʻanoʻiʻana. ʻO kā mākou e hana ai,ʻo ka Pūnaewele. ʻAʻole pahaʻoe e kamaʻilio pū meʻoe me nā hua'ōlelo wale nō, akā e paipai wau iāʻoe e heluhelu ana i kāu hana pono'ī e hoʻopau ai i kāu hana. ʻAʻole e hana i nā hana home me kēia puke, e like me kāu mau kauka a iʻole nā kumu āu e heluhelu ai, akā e paipai nui ana iāʻoe e pili ana i kahi mea āu i heluhelu ai. ʻO kaʻu papahanaʻo Capstone ke kumu no ka hapa nui o nā mea āu e heluhelu ai, a me keʻano o ka hoʻohanaʻana i kahi leka uila a me nāʻano'ē aʻe i loaʻa iāʻoe a iʻole nā mea iʻikeʻia e keʻano.
He aha kēia puke: ʻO kēia puke kahi mea aʻo ma keʻano hoʻohālike. Hiki iāʻoe ke loaʻa i ke code ma aneʻi, nā'ōlelo aʻoaʻo e aʻo ai i ka helu, e hoʻokaʻawale i kāu code ʻO ka polokalamu āu e kūkulu ai i ka mālamalama maikaʻi loa e lilo i mea maikaʻi loa e lilo i mea maikaʻi loa e like me ka mea e hiki ai i kāu mau mea hoʻohana hope. I loko o kēia puke, e hōʻike wau i kekahi nui o nā hiʻohiʻona e hoʻokūkū me kahi pā kaua ma ka pūnaewele me he mea palekana. E hoʻomaka mākou i kaʻike aʻo ma ke kūkuluʻana i kahi hana maʻamau me ka hoʻohanaʻana i ka hana unix, me nā hiʻohiʻona a me nā helu helu. A laila, e nānā mākou i kahi pūnaewele blog maʻamau, hoʻomaikaʻi i kā mākou blog me ke kiʻi a me nā hiʻohiʻona wikiō e hoʻohana ai i kahi polokalamu hōʻoia A laila e loiloi iā mākou i ka faila lawelawe a me ka hoʻololiʻana, eʻimi ana i nā hoʻoponopono wikiō, leo leo, hoʻihoʻiʻia a me ka mana'ē aʻe. Ma ke ala e nānā ai mākou i nā apis e kōkua ai iā mākou e hana hou i kā mākou polokalamu e hana hou a palekana, me nā koho manuahi. Ma ke ala, eʻimi mākou i nā mea palekana kino a me nā mea hana e like me ka hoʻolālāʻana a me nā mea hana hou a me ka hanaʻana i kaʻoihana. E lawe aku mākou i nā manawa e kūkulu ai i nā pāʻani, 2D a me 3D a me 3D e hāʻawi ana i nā mīkini e pili ana i nā polokalamu kiʻi kiʻi kiʻi ma Sillion Ma ke ala, e hana pū mākou i nā hopena aʻo e aʻo i nā mea aʻo aʻo mīkini i loaʻa i ka maikaʻi e mālama i kā mākou polokalamu. E hana pū mākou i nā mea hana waiwai i loaʻa no ka pūnaewele e hiki ai i ke kūpono a hoʻopaʻa i ke kaʻina hana. He alakaʻi no kēia puke i kāu kūleʻa i ke kūkuluʻana i kahi palapala pūnaewele a me ka hoʻohuiʻana me kahi'ōnaehanaʻoihana a me kaʻikeʻana i kahiʻoihana pūnaewele
ʻAʻole kēia puke: Inā makemakeʻoe e loaʻa kahi pūnaewele, hiki iāʻoe ke hoʻonohonoho i kahi hale kūʻai maʻalahi a kūʻai aku i nā mea āu e pono ai, e hoʻouna i kahi blog hoʻokahi. ʻAʻole kēia puke. E aʻo aku kēia puke iāʻoe pehea e kūkulu ai i nā lako polokalamu pono, ua hōʻikeʻia e ke kālā, aʻaʻole e hoʻopiʻi i ke kālā Ināʻoe e hahai kokoke i kēia puke, makemakeʻoe e kākau i ka code, noiʻi code, kūkulu i kāu mau hana, a e hanaʻoe i kāu mau mea ponoʻole. E hana wau i ke kālā mai kēia puke,ʻoiai i nā hanana mua, no ka mea he meaʻike e pono ai e kūʻai a hoʻohana paha i kaʻu mau hana. ʻAʻole e kūkulu kēia puke i kahi noi noʻoe, akā e kuhikuhiʻoe iāʻoe ma ke ala a me nā mea āpau, e hoʻohana ana i nā mea kūʻai aku a me nā mea kōkua o ka pūnaewele, a me nā mea kōkua o ka pūnaewele e pono ai a me nā mea kūʻai aku.
ʻO nā mea āu e aʻo ai: E aʻo aku kēia puke iāʻoe pehea e kūkulu ai a kūʻai aku i nā polokalamu, pono e pili ana i nā wikiō a me nā kiʻi paʻi E aʻo aku kēia puke iāʻoe pehea e hoʻohana ai i kahi kamepiula pūnaewele, e hana ana i nā polokalamu CSHTER e hoʻohana ai i nā polokalamu Coshnik nā memo no ka hōʻoia a me nā kumu'ē aʻe, nā kiʻi a me ke kiʻi a me nā hana wikiō, nā kālepa e ka polokalamu,ʻo nā kālepa cyptocrorency E aʻoʻoe pehea e kūkulu ai i kāu mau mea lapalapa oʻoe, me nā pali, nā mole, nā moniwika, nā mea kūʻai aku, me nā mea kūʻai aku. E hōʻike aku au i nā limahana hana 3D Hoʻolālā 3D a me nā pūnaewele me ka bluetooth a me ka pūnaewele. E nānā pono, e nānā mākou i nā noiʻeluaʻelua, kahi papa hana a me kahi mea hana i loaʻa i ka pūnaewele E aʻoʻoe pehea e kūkulu ai a kau i kahi pūnaewele mai ka'āina me kaʻikeʻole, e hana pono, kūpono a maikaʻi loa. E aʻoʻoe pehea e hoʻohana ai i nā hoʻomaʻamaʻa mīkini a me nā pili kālā i pono e hōʻike i nā pūnaewele me kaʻikeʻana i nā pūnaewele hou aʻe. E hoʻokaumaha loa kēia puke i ka nui o nā hoʻolaha, palekana a me ka hoʻonaʻauao nui,ʻo ia ka mea pono e hoʻopili ai i nā mea hoʻohana pono, a me ka mālamaʻana i nā mea hoʻohana pono, a me ka mālamaʻana i nā mea hoʻohana pono, a me ka mālamaʻana i nā mea hoʻohana pono, a me ka mālamaʻana i nā mea hoʻohana pono, a me ka hanaʻana i nā mea hoʻohana pono, a me ka mālamaʻana i nā mea hoʻohana pono, a me ka mālamaʻana i nā mea hoʻohana pono, a me ka mālamaʻana i nā mea hoʻohana pono, a me ka mālamaʻana i nā mea hoʻohana pono, a me ka mālamaʻana i nā mea hoʻohana pono, a me ka mālamaʻana i nā mea hoʻohana pono, a me ka mālamaʻana i nā mea hoʻohana pono, a me ka mālamaʻana i nā mea hoʻohana pono, a me ka hanaʻana i ka pūnaewele Ua aʻoʻia kēia puke me Unix,ʻo Debian Sbian (Ubuntu), Burthon, CSS, CHS, e like me nā polokalamu BIT a me FFMPEG. E aʻo aku nō wau iāʻoe pehea e kūʻai pinepine ai i ka cryptocurncy, a lawe i nā uku ma cryptocurrency a iʻole e uku ana i kāu mau malihini i kāu mea kūʻai aku inā e kohoʻoe e hana pēlā. E aʻo aku wau iāʻoe pehea e hana ai i nā kālā mai kāu pūnaewele ma o Advertise a me ka wikiwiki eʻimi ai i nā mea kūʻai aku e loaʻa iāʻoe. E aʻo aku au iāʻoe pehea e kūʻai aku ai i kāu polokalamu, hoʻolaha iā ia, e hoʻopiʻi i nā mea kūʻai aku eʻimi nei i kāu mau lawelawe ma waena o nā Pūnaewele E aʻo aku wau iāʻoe pehea e mālama ai i kāuʻikepili ma nā kamepiula e hana ai, a e mālama ai i kāu mau mea hoʻohana, a me nā mea āu e makemake ai e lawe i kāu mau mea hoʻohana ma hope o kāu kelepona ma hope o kāu kelepona E kau aku kēia puke i ka hana pono o ka hoʻopukaʻana i nā hoʻolaha nui, mai nā palapala i hiki ai iāʻoe ke hana i nā mea hou a me kāuʻoihana E aʻo hoʻiʻoe i kekahi i nā kiʻiʻoniʻoni punahele a me keʻano he valelity maikaʻi loa e hoʻohana ana i nā polokalamu hana maikaʻi loa e hoʻohana ai i ka haʻahaʻa me ka hanaʻole. Ua kapaʻia kēia puke "ponoʻO ka pūnaewele ma mua a me ka palekana ma ka hoʻohālike Hoʻonui, keʻano o ka hoʻohālikelikeʻana, a me nā hana'ē aʻe e like me nā kiʻi, a iʻole ke kiʻi o ke kiʻi ma kahi o ka pūnaewele helehelena. Hiki iāʻoe ke hana i kahi kamepiula kamepiula, kahi kamepiula e noi ai, a me kahi polokalamu leka uila paha e hoʻohana ai i kahi polokalamu hou, a iʻole ka hoʻohanaʻana i kāu polokalamu kele pūnaewele, a me kahi polokalamu leka uila paha e hoʻohana ai i kahi polokalamu ʻO ka mea nāna e kūkulu i nā polokalamu i hikiʻole ke hōʻoia i ka manaʻo o kēia mea i hōʻikeʻia. ʻO ka polokalamu iʻole ka hanaʻole no ka mea hoʻohana a me nā moʻolelo a mākou e hoʻohana ai,ʻaʻole hiki iā lākou ke loaʻa i nā pilikia no ka polokalamu e pili ana i ka polokalamu e pili ana iā ia iho. ʻO kēia kahi mea o ka manaʻo o kēia puke. ʻO kahi kamepiula pūnaewele ma keʻano i hoʻopaʻaʻia me kahi hōʻailona kiʻekiʻe, i kapaʻiaʻo SSH a me Ssh e hoʻopaʻaʻia ma kahi kahua pūnaewele e like me keʻano o ka pūnaeweleʻoi aku ka pono. Loaʻa i ka Pūnaewele Pūnaewele i ka pūnaewele pūnaewele pūnaewele a ka mea hoʻohana a ka mea hoʻohana i ka mea ikaika loa o ka mea hoʻohana, no ka mea kahi e loaʻa ai ka mea hoʻohana i ka polokalamu pūnaewele. Hiki i kēia hāmeʻa ke hoʻihoʻi i nā hua'ōlelo, nā pūnaewele iʻikeʻia, a hiki ke hoʻopaʻaʻia i nā kiʻi paʻi kiʻi Pūnaewele. Ke hoʻohana nei i nā mea hana āpau ma kāu papa inoa, me kēia puke e pili ana iāʻoe iho me kaʻike pūnaewele e hana ai noʻoe, a he nānā
Kahi e hoʻomaka ai: Ua hauʻoliʻoe e hele i ka pauku e hoʻomaka ai i kēia puke me, a iʻole kekahi mea e pono ai ke kākauʻana ma mua Ināʻaʻoleʻoe eʻike i ka kākau kākauʻana, ua'ōlelo nui wau e heluheluʻoe i kēia puke a pau, a maʻamau e heluhelu pono ai i nā'āpana o mua iāʻoe. Ināʻaʻole kūpono kēia puke iāʻoe, e noʻonoʻo pono i ke alohaʻana i kahi hoaaloha a iʻole e aʻo aku iā lākou e pili i keʻano o ke kumu ma mua oʻu. E hoʻomaka i kahi e pono aiʻoe, e pono nā'āpana o kēia puke inā makemakeʻoe e kūkulu i kahi mea hoʻohana maikaʻi loa me ka mea hoʻohana ma ka noʻonoʻo. I laila,ʻikeʻoe iaʻu, uaʻikeʻoe i kēia puke, ae mākaukauʻoe e hoʻomaka. E hoʻomaka ai, hopu i kahi kamepiula (ʻo ia ka kamepiulaʻoi aku ka uku o ka pahu kūʻai aku, a me nā hana paha, a waiho i kahi mea hana noʻoe.
Pehea e heluhelu ai i kēia puke: Palapala i hōʻikeʻia, nā mea i hōʻikeʻia i loko o kahi kikokikona i kahi kauoha e noi ana, kahi e kākau aiʻoe i ke code āu e holo ai. ʻO ke kauohaʻo ke kauoha he nui keʻano nui a koi aku i ka mea liʻiliʻi a iʻole e kaomiʻana, e wikiwiki ana i kāu hana a me nā mea e maʻalahi ai iāʻoe.
Hoʻomaka: E loaʻa iā mākou. E hoʻomaka mākou e ka papa inoa o ke kūkuluʻana ma ka mīkini kūloko a hoʻomaka me kaʻole o ka kūkuluʻana i kahi pūnaewele. He palekana kēia e hoʻomaka me, nā kumukūʻai,ʻaʻohe mea, a maʻalahi noʻoe. Ke hilinaʻi nei i kāu'ōnaehana hana, e hele ana i kahi meaʻoi aku ka liʻiliʻi o ka brash. No ka Mac OS, ke noi nei wau i ka hoʻokomoʻana i kahi mīkini virtual ma kēia manawa, e like me kāu e kiʻi ai i ka hoʻohālikelikeʻana me kahi mīkini nani. Hiki i nā mea hāʻawi aku e like me ka Virtualbox a me nā Paralells e holo i kahi mīkini maʻamau, inā paha e hiki ke hoʻohana i kahiʻano kūlohelohe e hana i kahiʻike wikiwiki Ināʻoe e hoʻohana ana i ka linux a iʻole nā puka makani, kahi aʻu e makemake ai, pono ia e maʻalahi e hana i kahi papahana. E wehe i kāu Terminal, hoʻoponopono i ka hana e like me kāu eʻike ai, a hoʻomaka i ka hanaʻana i ka lā 2. Ināʻoe e hoʻohana ana i nā puka makani, eʻoluʻolu e hahai i ka Windows 1.
Laki 1: - Nā mea hoʻohana Windows wale nō Ma nā puka makani, wehe i ke kauoha i ke kauoha e like me ka luna hoʻomalu a me keʻano Wsl -install
Laki 2: - E hoʻomau maʻaneʻi, a iʻole Skip Step 1 iʻaneʻi ināʻaʻoleʻoe e hoʻohana i nā puka makani Ma kahi pahu ākea, Hana mākou i kēia me ke kauoha MKDIR, nāna e hoʻokumu i kahi papa kuhikuhi. Inā ponoʻoe e hana i kahi papa kuhikuhi e mālama ai i kāu papahana, e'ōleloʻia, e hoʻohana i ka kauoha CD e hoʻololi i ka papa kuhikuhi a me
CD / STAT / TO / papa kuhikuhi - ke alaʻo ke ala (files E hoʻololi i ka papa kuhikuhi maʻamau, type cd a cd ~ mkdir hoʻohālike - hoʻololi i ka "hiʻohiʻona" me ka inoa o ka papa kuhikuhi
I kēia manawa he papa kuhikuhi āu no kāu papahana. Ke lilo nei i mea nui e loaʻa i kēia papa kuhikuhi i mālamaʻia i ka hihia e pono ai e hoʻololi i kahi palapala e kākau ai i kāu papa kuhikuhi. Akā e kūkulu ana i kahi palapala e lawe i kahi kope o ke code, a pono e hoʻopiliʻia ka code e like me ka pono e like me ka mea hiki. No laila e kūkulu mākou i kahi palapala e kūkulu mua i nā palapala kākau mua. Hoʻomaka e hana i ka hanaʻana i ka palapala a me ka hana pono. E hoʻohana mākou iā Sudo, chmod a paʻi no kēia, a kāhea i kaʻatikala "ASSPY".
sudo touch /usr/bin/ascript
sudo chmod a+x /usr/bin/ascript
sudo nano /usr/bin/ascript
Ano, ua hana makou i ka kaloko i ka Palapala, ua hoʻokō ia, a ua makaukau e hoʻoholo ia. ʻO Nano kahi mea hoʻoponopono'ōlelo eʻae ai e hoʻoponopono iāʻoe i nā hua'ōlelo me kaʻole o ke kaomiʻana,ʻoi aku ka maʻalahi o ka hoʻohanaʻana i kahi mea hoʻohana hoʻohana manuahi. No ka hoʻoponoponoʻana i kahi faila me Nano, E hoʻohana iā Nano a laila e ala i ke kiʻi. I ka palapalaʻana e hana ai i kahi kope,ʻo ia ka kope, he pono like me ka hanaʻana i kā mākou palapala ma ka mua. E hoʻohana mākou i i ke code like me Up ma luna, "e hoʻololi ana i ka inoa o ka Palapala o ka Waihona," e like me keʻano "me kahi'āpana hoʻopaʻapaʻa, $ 1, Ua kāhea kēia i ka leka uila ma ke kākau inoaʻana i ka leka uila, ma kahi e hana ai mākou i kahi leka hou aku e hana ai i kekahi palapala hou "me ka inoa o kāu kākau inoa. Pono keʻano o ke code ma nano:
sudo touch /usr/bin/$1
sudo chmod a+x /usr/bin/$1
sudo nano /usr/bin/$1
A e pani iā Nano, hiki iā mākou ke paʻa i ke kī o ka mana a kaomi iā X, a laila e hōʻike mākou i ka faile, a hoʻi mai mākou. 'Ānō, ma kahi o ka loaʻaʻana o kēia mau kauohaʻekolu e hoʻoponopono i kahi palapala ID. Hōʻike kēia! A hiki i kekahi kope hou aʻe e holo maʻalahi ma ke kāheaʻana i loko o kaʻili. E mālama kākou i kā mākou hana: E kākau i kahi palapala hoʻihoʻi e waiho ai i kā mākou palapala puke hou, a laila hoʻi hou i ka papa kuhikuhi o kā mākou papa hana.
sudo ascript backup
No laila, ma naNoa:
sudo cp /usr/bin/backup /path/to/directory/
sudo cp /usr/bin/ascript /path/to/directory/
Ma hea / ala / i / papa kuhikuhi i ke ala i ka papa hana āu i hana ai me MKDIR. Ma hope mai e aʻo ai mākou pehea e kope ai i nā ala hou e like me kēia me kahi papa a me kahi papa inoa, akā no laila e pono ai he mau laina liʻiliʻi. E holo i kēia kope a hoʻihoʻi i kāu Code, e mālama i ka faila ma Nano me ka Mākuhi + X, Y, a e hoʻi aku i lalo i loko o kāu shell
backup
Ināʻoe e kohoʻia ma kahi'ōlelo āpau i ka wā e heluhelu pololei ana i kēia puke, eʻoluʻolu e komo i kāu leka uila e pono ai e holo hou i ke kauoha. Hiki iāʻoe ke hoʻohana i ka luna a i lalo i nā kauoha e hoʻoponopono ai a hoʻoponopono iā lākou, ponoʻoe e holo i kahiʻelua. Maʻa maʻalahi a hoʻopili i lalo a lalo i kahi kauoha e koho i kahi kauoha, ma mua o ka hoʻoponoponoʻana i ke kauoha me ka paina a me ka holoʻana me ka hoʻiʻana mai.
Aloha! Ua mālamaʻoe i ka hanaʻana i kahi palapala hoihoi hou e hoʻihoʻi ai i nā hua'ōlelo nuiʻelua i kāu papa kuhikuhi hana. E neʻe paha mākou i nā mea ma hope aʻe e like me ka loaʻaʻana o ka papahana, akā hana kēia hana no kēia manawa. E neʻe aku e hoʻihoʻi i ke ao, e hoʻohana mākou i nā github no kēia polokalamu, e pili ana iāʻoe i nā polokalamu e pili ana i kāu Pūnaewele ʻO ia ka mea e mālama ai i kāu polokalamu,ʻoi aku ka hopena o ka mālamaʻana i ka manawa hoʻokahi, e haʻalele ana i kāu code
Ināʻaʻoleʻoe e hoʻohana ana i kahi mīkini uila Ubuntu ma kēia manawa, eʻoluʻolu e hoʻohana i kahi hana maikaʻi loa e kūkulu ai i kahi hana maikaʻi loa i kāu kamepiula. E neʻe mākou i ke code i kahi kikowaena pūnaewele ma ka wā e hiki mai ana, akā makemake mākou e hōʻoia ma hope o ka palekana o ka pūnaewele e hana ai i kēia. Inā makemakeʻoe e hoʻohana i ka MAC OS, e hoʻokipaʻiaʻoe eʻimi a kau i nā'āpana pono ma ka pūnaewele a iʻole nā koho koho no kēlā me kēia pahu e uhiʻole ai kēlā mau helu āpau.
E hoʻohui mākou i kekahi mau kauoha e hana i kā mākou hana me ka Palapala Pūnaewele e ka holoʻana i ke kauoha Sudo Ascrip Rode.
# ...
Eia hou, kāohi x e mālama.
I kēia manawa pono mākou e hana i kekahi manawa manawa no kēia papahana. No ka mea, e lilo ia i kahi hana git,ʻaʻole pono mākou e paʻi i kēlā me kēia kauoha i kēlā me kēia manawa, akā e loaʻa iā mākou ka pā o kā mākou mea i kākau ai. E hoʻomaka, e maopopo iā mākou i loko o ka papa kuhikuhi kūpono a hoʻomaka mua i ka hale kūʻai git a kau i nā kī ssh.
cd /path/to/directory
git init
git branch -m master
ssh-keygen
Ma hope o ka loaʻaʻana o ka SSH-Keygen, pono ke kī hou e mālamaʻia ma ka waihona home ma lalo o kahi waihona i kapaʻia .ssh. Kāheaʻia ia id_ssa.pub. Eʻimi kākou i kēia kī a kope iā ia. E ike ia ia,
cd ~
cat .ssh/id_rsa.pub
Hoʻopili i ke kikokikona i hoʻihoʻiʻia e ke kauoha hope loa, a hana i kahi moʻokāki me kāu moʻokāki GIT (Ma mua o ka hoʻohuiʻana i ke kī SSH i kāu moʻokāki. Ke loaʻa iāʻoe kahi moʻokāki, kaomi i ka papa kuhikuhi'ākau a komo i nā hoʻonohonoho, ma mua o ka hoʻohuiʻana i kāu kī SSH a me GPG i lalo o ka papa. E koho i ka hoʻohuiʻana i kahi kī SSH a hoʻohui iāʻoe ma o ka hanaʻana iā ia a hāʻawi iā ia i kahi inoa, ma mua o ka mālamaʻana i kahi waihona hou. Hoʻohālikeʻia kēia no nā mea hana Git, ponoʻoe e heluhelu i kā lākou palapala. Ma ka hoʻonohonoho houʻana o ka waihona kālā hou, hāʻawi i kāu waihona kālā i kahi inoa wehewehe a hoʻoholo inā e nānā iā ia, a hōʻoiaʻiʻo i ka hoʻonohonohoʻana no nā faila no ka hoʻopiliʻana. Ke hanaʻia nei ka waihona waihona, e kope i ka Slone me Ssh Url, a e hoʻopili i loko o kēia kauoha i kēia kauoha.
git remote add git://… (your remote URL)
I kēia manawa hiki iāʻoe ke neʻe hou i kāu waihona pūnaewele me CD, e kama'āinaʻoe me kēia. E ho'āʻo i kāu leka uila i kēia manawa me ka backup
Nui! I kēia manawa hiki iā mākou ke loaʻa i ke kala. E hoʻokomo iā Django i kēia manawa a loaʻa iā mākou kahi pōmaikaʻi maikaʻi ma Bash a me Git. E hoʻihoʻi kokeʻo Django iā mākou e hoʻi hou i kā mākou polokalamu, hiki i ka bash ke hana i kēia mea maikaʻi loa
E hoʻokomo i nā polokalamu ma Ubuntu, e hoʻohana mākou i ke kauoha Apt-kiʻi. ʻO ka mea mua, e hoʻoponopono a hoʻonui i ka polokalamu i loaʻa iā mākou. Hiki ke hanaʻia kēia me Sudo ApT-EXPEDE ATT-GOD AUT ATT-RESTGEDE -Y. ʻO kaʻaoʻao aʻe, e hoʻokomo i ka Python a me kā mākou kaiāulu
ʻO kēia nā mea āpau e pono ai e hele me DJongo i nā'ōlelo o nā polokalamu o nā polokalamu i nā pūnaewele i loko o ka ubuntu. No nā Windows a me Linux pono pono i kēia, akā no ka mea e makemake ai e hoʻokomo i kahi mīkini hana a iʻole ka hanaʻana i ka mīkini ma mua He koʻikoʻiʻo Ubuntu i kēia hihia no ka meaʻo ia ka polokalamu e pili ana i nā pūnaewele e holo ana a hiki iā lākou ke mālama i nā pūnaewele a pau i nā pūnaewele a pau.
E hoʻopaʻa mākou i loko o ka django.
Ma kā mākou papa kuhikuhi, me CD:
python -m venv venv # Hoʻokumu i kaʻenehana kūlohelohe kahi i mālamaʻia ai ke code
source venv/bin/activate # Ho'ōla i kaʻenehana kūlohelohe
django-admin startproject mysite . # Ma kahi o Mystite ka papahana aʻu e hoʻomaka nei i kaʻu papa kuhikuhi o kēia manawa.
Ke hoʻomaka neiʻo Django iā mākou, no ka mea,ʻo Django e hānai ana i ka pūnaewele pūnaewele a hana i nā mea āpau a mākou e hana ai i kahi pūnaewele maʻamau a holo aku. I kēia manawa ua hoʻokomo mākou iā Django, e hoʻoponopono i nā hoʻonohonoho i kahi mea e hana ai i ka hana e pono ai mākou. Mua, e hana i kahi papa hou
python manage.py startapp feed
E nānāʻoe i ka hana mua i kapaʻiaʻo Faild Feed. Pono e kapaʻia ka App i nā mea āu e makemake ai, a e hana mākou i nā hana hou, akā e like me kēia manawa i mauʻia ma ka code. E hoʻohui i kahi polokalamu hou, e hoʻoponopono mau mākou i ka papa kuhikuhi Ka hoʻohanaʻana iā Nano,
nano app/settings.py
I nā hoʻonohonoho,ʻike i nā mea i hoʻonohonoho'ia_Apps a hoʻokaʻawale i ka [i loko o 3 mau laina. Ke hoʻohana nei i nā wahiʻehā ma ka laina kikowaenaʻole, e hoʻohui i ka 'hānai', a iʻole ka inoa o kāu app. Pono e like nā'āpana o kēia'āpana.
INSTALLED_APPS = [
'feed',
]
Ma mua o ko mākou poina, e ho'āʻo e DJungo e hana ana. Ke hoʻohana nei i ka Python Python Mana.PY EXTERERS 0.0.0.0:90A, hiki iā mākou ke holo i ka pūnaewele pūnaewele ma ka Pūnaewele
I kēia manawa, e hoʻopaʻaʻia i kekahi code python. ʻEkolu mau'āpana nui o Django, ua holo lākou a pau ma ke code holoʻokoʻa. Ua kapaʻia nā'āpana likeʻole, nānā a me ka hoʻohālikelike, a aia kēlā me kēia ma ke kiʻekiʻe a me ka pae kiʻekiʻe e hāʻawiʻia i mua o ka hoʻohanaʻana i ka pūnaewele.
ʻO ke kumu hoʻohālike ke code e kūʻai ai i kaʻikepili i ka waihona no ka hoʻihoʻi houʻana, i keʻanoʻana a me ka hoʻomaha.
Hiki i ka nānā e manaʻo ai i keʻano o keʻano, hanaʻia, a me Loid, aneane aneane e hoʻohana i kēlā me kēia hiʻohiʻona.
ʻO ka Template ka code HTML me kekahi mau pila hou a me nā whistles i kapaʻiaʻo ka'ōlelo template. Ua hāʻawiʻia ka template e ka nānāʻana i kahi e hoʻopiha ai i ka code python a me nā kūlike e like me nā hiʻohiʻona a me nā meaʻike) mai kaʻike.
He mau mea'ē aʻeʻo Django i nā mea'ē aʻe, e komo pū ana akāʻaʻole i kaupalenaʻia:
Nā hoʻonohonoho, e hoʻonohonoho pono i ka app e like me kā mākou kūkā kamaʻilioʻana.
URL,ʻo ia nā hiʻohiʻona e loaʻa ai ka mea hoʻohana e kiʻi i nā wahi kiko'ī o ka palapala pūnaewele.
Nāʻano,ʻo ka weheweheʻana i kaʻike i hoʻounaʻia i ka server i hoʻopaʻaʻia a hāʻawiʻia i kaʻikepili a me ka mea hoʻohana. ʻO kēia ke kumu o ka hoʻoiliʻana i kaʻike ma kaʻaoʻao o ka server, a hiki keʻae i nāʻano o nāʻikepili i nā hale kūʻai.
ʻO nā templates,ʻo ia kahi code HTML a me keʻano o ka'ōlelo ma waena o Python a hiki ke mālamaʻiaʻo Python i kahi pūnaewele
Nā faila static,ʻo ia ka mea maʻamau a me nā hale waihona puke aʻo nā hale waihona puke e lawelawe ai ke kikowaena a hoʻopiliʻia me ka hoʻohālikelike.
Nā faila Media, kahi e mālama ai ka mea lawelawe a iʻole i hoʻounaʻia i ka server ma mua o ke kaʻinaʻana i kahi kikowaena'ē aʻe.
ʻO waena,ʻo ia nā'āpana o ke code e holo ana i ka manawa like e like me nā hiʻohiʻona a ua manaʻoʻia "i loko o ka nānā.
Nā mea hana huna, e hana ana i keʻano o kēlā me kēiaʻike a hoʻohanaʻia e hoʻohui i nāʻano'ē aʻe.
ʻO nā hoʻokolohua, kahi e hōʻoiaʻiʻo ai i ka mea hoʻohana a noi paha e hele i kekahi mau koi ma mua o ka nānāʻana o kaʻike.
Nā mea kūʻai,ʻo ka mea e hoʻokaʻawale ai i keʻano o nā websocket a pane i ka kamaʻilioʻana.
Admin, ua hoʻohanaʻia e hoʻopaʻa inoa i nā hiʻohiʻona e hiki ai iā lākou ke kuhikuhiʻia i loko o kaʻaoʻao o ka Django.
Celery, e wehewehe i nā hanaʻo Asynchronous i nā'āpana o ka DJANGO e hoʻomaka i ka holoʻana ma mua o ka hanaʻana i kahi hana hou a iʻole ka laina o ke code.
Hiki i nā Django ke loaʻa i nā mea'ē aʻe e kamaʻilio pū me mākou e kamaʻilio i ka kiko'ī ma aneʻi. Nui nāʻano o nā ala e hana ai i DJANGO i kahi hana hou, e hoʻohui i nā pūnaewele, e hoʻokūkū ana nā lako hana no nā hana a me ka hapanui o kaʻikepili. E nānā i nā hana nā hana no ka mea e hoʻolaha pinepine lākou i kēlā me kēia'āpana o ka code e pili ana i kahiʻano o ka url.
Mua, eʻimi e nānā i nā hana. E hoʻomaka nā hana i nā hana me nā hoʻopukapukaʻana i ka heluʻana e hoʻohanaʻia ma kaʻike, a ua weheweheʻia ka hoʻohanaʻana i nā wehewehe maʻamau a iʻole nā papa hana. ʻO nāʻike maʻalahi e weheweheʻia e ka wehewehe wehewehe wehewehe wehewehe, a hoʻihoʻi i kahi HTTPRESTONNT me kahi papa kumu. E hoʻomaka kākou ma ka weheweheʻana i kahi manaʻo maʻamau e hoʻihoʻi i keʻano "hello World". E hoʻomanaʻo i kēlā me kēia manawa e hoʻohui ai i ke code ma hope o kahi'ōlelo e like me ka def, inā, pono e hoʻohui i kēlā me kēia o nā wehewehe e pili ana i kāu mau hana. E komo mākou i kēlā me kēia o kēia mau mea.
Mai kā mākou papa kuhikuhi o kā mākou pūnaewele
from django.http import HttpResponse
def hello(request):
return HttpResponse('hello world')
Ua paneʻo Django's Addresponse me kahi kaula hua'ōlelo, i hōʻikeʻia me ka wehe a me ka pani '. I kēlā me kēia manawa kāu e hele ai i kaʻike i kahi hana a iʻole ka papa, e like me ke noi a iʻole ke kaula, ponoʻoe e hoʻohana i ka makua makua (, wehe a me ka pani).
ʻAʻole pono kēia eʻike i kā mākouʻike. ʻOiaʻiʻo,ʻaʻole mākou i haʻi i ka server kahi e nānā pono ai, pono mākou e wehewehe i ke ala e mālama ai kaʻike. E hoʻomaka kākou ma ka weheweheʻana i ke ala maʻamau ma App / URLS.PY, A e komo mākou i nā hui ma hope.
Ma ka app / URLS.PY, E hoʻohui i kahi laina ma hope o nā'ōlelo hoʻopiʻi ma hope o ka hoʻomakaʻana i kaʻike i hana waleʻia ai mākou.
from feed import views as feed_views
'Ānō, e wehewehe i keʻano o keʻano. E nānā i nā hiʻohiʻona heʻekolu,ʻo ke ala e haʻi ai i ka mea hoʻohana i keʻano o ka mea hoʻohana. inoa. Hana ia i keʻano o ka hanaʻana i kēia mau ala a he kūpono hoʻi, no ka meaʻo kāu codebase e pono ai e hoʻololi i keʻano kūpono a me ka maikaʻi e hana ai me ka maʻalahi. Eia nā mea āu e nānā ai, hiki iāʻoe ke hoʻohui i kēia i ka URLPATTERS = ['āpana o ka app / URLS. Ua weheweheʻia keʻano hiʻohiʻona me nā'āpanaʻekolu i hōʻikeʻia ma luna, a me kahi hana i kapaʻiaʻo ia. ʻO kāu papa hana URL he papa inoa, no laila e hōʻoiaʻiʻo e hoʻopau mau i kēlā me kēia mea i loko o lākou me kahi komma, no ka mea e hoʻokaʻawale kēia i kēlā me kēia. Pono kēlā me kēia mea e hele i kahi laina hou, hoʻokahi manawa hou me nā wahiʻehā ma mua o ia, e like me ka app ma keʻano. E wehewehe mākou i ka mea mua o ka nānāʻana me kahi hana paʻaʻole, i mea e hana ai i kahi hiʻohiʻona e holo ana ma ke kahua waihona pūnaewele. Pono kāu URls.Py e like me kēia:
from feed import views as feed_views
urlpatterns = [
path('', feed_views.hello, name='hello'),
]
ʻO kēia ke kumu no ka hoʻokumuʻana i kahi pūnaewele me Django e pili ana i ka static. I mea e hana ai i kahi pūnaeweleʻoi aku ka inoa o ka loaʻaʻana o ka loaʻaʻana o ka loaʻaʻana, e like me nā kiʻi, nā wikiō, e pono ai mākou e hoʻohana i nā hiʻohiʻona, eʻimi nei mākou i nā hiʻohiʻona, eʻimi nei mākou i nā hiʻohiʻona No kēia manawa, e nānā mākou i kā mākou code a holo i ke kikowaena. E nānā i ke code no nā hewa, holo:
python manage.py check
Inā he mau leka hewa, ponoʻoe e nānā pono i nā loli i hanaʻia i kāu app aʻike paha, e like me ka mea i hanaʻoleʻia, a iʻole heʻano'ē aʻe, a iʻole kahi mea e pono ai keʻano, heʻano'ē aʻe paha Ka heluheluʻana ma o ka leka hewa (inā loaʻa iāʻoe kekahi) Inā ua hoʻoponoponoʻoe i ka hihia, e holo hou i ka kauoha i luna aʻe. I ka mākaukauʻana o kāu polokalamu e holo a hana, eʻikeʻoe, eʻikeʻoe i keʻano o ka hopena " I kēia manawa ua mākaukauʻoe e hele. E holo i ka kikowaena me:
python manage.py runserver 0.0.0.0:8000
E wehe i kēia manawa i kahi polokalamu kele pūnaewele a hoʻokele i ka HTTP: // Localhost: 8000. Eʻikeʻoe i ka'ōlelo i hoʻihoʻiʻia i loko o ka makua makua a me nā hua'ōlelo o ka hana wikiwiki i kāuʻike. He kumu kumu kēia, akā inā ināʻoe i hana iā ia i kēia mamao,ʻikeʻoe i nā'āpana o keʻano o keʻano o ka maikaʻi o keʻano o ka linua. E hoʻopaʻa hohonu i ka hoʻohālikelikeʻana i kekahiʻano hoʻohālikelike, a eʻimi i ka mana o kahi papa python i ka mālamaʻana i kaʻike. A laila, e hoʻomaka mākou e kiʻi i ka grip ma HTML a me CSS ma mua o ka hanaʻana i kā mākou pūnaewele, e hoʻomaʻamaʻa a me ka hoʻopaʻaʻana i ka javascript a me ka hoʻopaʻaʻana i ka javascript.
Mālamaʻia nā papa i nā models.py o kāu app. Ke hoʻohana nei iā Nano, Hoʻoponopono App / Models.Py a hoʻohui i kahi papa hou. Ua weheweheʻia kahi papa me ka weheweheʻana o ka papa papa a ua halaʻia he superclass i loko o ia mea i loko, i kēia hihia.model. Ua hele mai ka inoa o ka papa ma hope o ka weheweheʻana o ka papa, a ma hope o ka weheweheʻana i ka papa kuhikuhi: Pono kā mākou papa i kahi ID e hiki iā mākou ke hoʻohana e kiʻi iā ia a mālama iā ia, a pono ia e mālama i kahi kahua e mālama ai i kekahi mauʻike. Ma hope mai e hoʻohui ai i kahi manawa hana, nā faila, nā mea kūponoʻole i nā mea e hana ai i keʻano o ka mea hoʻohana i keʻano o kahi mea hoʻohana i kahi mea hoʻohana i kahi mea hoʻohana E wehe i ke code ma lalo nei:
from django.db import models # ʻO ka hoʻopuka i hoʻohanaʻia e wehewehe i kā mākou papa a me nāʻano
class Post(models.Model): # ʻO ka weheweheʻana o kā mākou papa pono'ī iā ia iho
id = models.AutoField(primary_key=True) # ʻO ka ID o kā mākou kumu hoʻohālike, kahi kī i hanaʻia e hāʻawi iā mākou i ka noi, e mālama pono, a he pono ke hanaʻia mākou me ka hoʻopiliʻana me ka hana i hanaʻia ai.
text = models.TextField(default='') # ʻO ka mea nāna e hāʻawi i kā mākou papa hana, ma kēia hihia, kekahi mau'ōlelo, e hōʻole i kahi kaulaʻole.
Pani a mālama i ka faile e like me kā mākou i hana ai ma mua o ka hoʻopauʻana.
Nui nā mahina'ē aʻe a me nā koho eʻimi mākou i ka wā e hōʻano hou nei mākou i kēia papa e like me kā mākou hanaʻana, akāʻo kēia nā mea pono kumu no ka hōʻikeʻana i kahi palapala. Eia naʻe,ʻaʻole e hana kēia hiʻohiʻona. E like me ka mea i hōʻikeʻia ma mua, pono mākou e pono i kahiʻano maʻamau maʻamau a me ka maʻamau kumu hoʻohālike e hana i kēia hana hoʻohālike, a e pono ai mākou i kahi palapala me ka template. Eʻimi mua i ka palapala.
E wehewehe i kahi palapala, Hoʻoponopono i kahi apopo / form.opy me Nano a hoʻohui i nā laina aʻe. Pono mākou e pili iʻelua mau hoʻopukapuka, kā mākou papa hana, e like me keʻano hoʻohālike i hanaʻia (Feed.models i kapaʻia he hoʻohālike e pili ana i keʻanoʻana i kaʻatikala. Hiki i keʻano ke loaʻa i kahi hana hoʻomaka e hoʻonohonoho ana iā ia e pili ana i kaʻike ma ke noi, hoʻohālike a iʻole, eʻimi ana mākou i kēia ma hope.
He pono kūpono nāʻano hoʻohālike no ka mea hiki iā lākou ke hana i kahi hoʻohālike a i ke hoʻoponoponoʻana i kumu hoʻohālike, no laila e hoʻohana ai mākou iā lākou noʻelua. E wehewehe kākou i hoʻokahi ma nā palapala.
from django import forms
from feed.models import Post
class PostForm(forms.ModelForm):
text = forms.CharField(widget=forms.Textarea)
class Meta:
model = Post
fields = ('text',)
ʻO kēia nā kumu o keʻano o kahiʻano a me keʻano hoʻohālike. Hiki ke hoʻohanaʻia kēiaʻano hoʻohālike e hiki ai ke hoʻoponopono a hoʻoponopono paha i kahi pou, hoʻololi i ka kikokikona i loaʻa. E nānā mākou i ka hoʻohuiʻana i kēia palapala i kahiʻike. ʻO ka mea mua, e hana i nā migrations a hoʻoneʻe i ka waihona no laila hiki i kā mākou code ke launa pū me ka hoʻohālike e holo ana. I mea hana, e holo i nā kauoha i kēia:
python manage.py makemigrations
python manage.py migrate
E lilo kēia i mau minuke e hoʻokō, akā ke hana nei, eʻae iāʻoe e komo i keʻano, waena, a iʻole kahi'ē aʻe i ka polokalamu. E hoʻomau i ka hanaʻana i kahiʻike eʻike ai mākou i ko mākou hiʻohiʻona. Hoʻoponopono i ka hānai / hiʻohiʻona.opy a hoʻohui i ke code ma lalo nei, e like me kaʻike. ʻAʻole ponoʻoe e hoʻohui i nā mea ma hope o ka papa # hōʻailona,ʻo ia ka'ōlelo e pili ana i kaʻike e pili ana i ke code. E hoʻomaka mākou ma ka hāʻawiʻana i kā mākou kumu hoʻohālike i nā manaʻo, a hoʻohuiʻana iā ia i kahiʻano e hiki ai iā mākou ke hāʻawi iā ia i kahi papa inoa no ka hōʻikeʻana. Ma hope aʻe, e hoʻohui mākou i kahi papa kuhikuhi i kahi e hiki ai iā mākou ke hāʻawi i keʻano a me ke kumu hoʻohālike e hoʻokumu ai i kahi mea hou e hoʻokumu ai i keʻano hou. Ua paʻakikī kēia mau leo Ma mua o ka hoʻopauʻana i kaʻike, e hana mākou i kahi kumu hoʻohālike e hoʻomaikaʻi wale ana i ka hoʻohālike a hōʻoia i hiki iā mākou keʻike i kahi pou hou ma ka pā hou. Eia pehea e nānā ai kēlāʻike:
posts = Post.objects.all() # Nīnau i nā pou āpau ma ka waihona
ʻIkeʻia kēia mau mea āpau a hiki i kā mākou heleʻana i lalo. Hoʻolimalima, ua hoʻi hou ka waiwai o ka hana ma kahi o ka pane HTTP e like me ka mea i koho muaʻia ma ka waihona mua. E hele ana ka Template i kahi palapala HTML me kahi mea liʻiliʻi o kahi'ōlelo i kapaʻiaʻo Jinja2
E hoʻomaka e hana i nā hana hoʻohālikelike, e hana iʻelua papa kuhikuhi i nā meaʻai.
mkdir feed/templates
mkdir feed/templates/feed
E hoʻoponopono, e hoʻoponopono i kahi papa kuhikuhi i ka papa kuhikuhi ma luna nei, hānai / nā templates / hānai, a hoʻohui i ke code no kēia'ōkuhi. E nānā kākou i ka hoʻohālikelike no kēia hoʻohālike.
Heʻano maʻalahi loa kēia. E wehewehe ana i ka weheʻana a hoʻopau i nā tag htl, kahi papa inoa inoa Na ia ia e lawe i na pou e ka nandi, aka,ʻaʻohe mea i ka waihona pūnaewele. E hana mākou i kekahi me kaʻili. Hiki iā mākou ke holo i kaʻili me ka hoʻokele.py
python manage.py shell
I kēia, e hāʻawiʻia i kā mākou Model Model
from feed.models import Post
Ma hope aʻe, e hoʻokumu mākou i kahi pou maʻalahi me ke kaula a puka i kaʻili. Hiki i ke kaula ke lilo i mea, e like me ka lōʻihi o keʻano kūpono.
Post.objects.create(text='hello world')
exit()
ʻO ka hope loa, pono mākou e hoʻohui i kahi kumu URL i kā mākou hānai. No ka mea, e hoʻohana kā mākou kiʻi hānai i nā URL he nui a makemake mākou e mālama i nā faila liʻiliʻi, e hana i kahi URLS i loko o kā mākou papa hana e like me kēia:
from django.urls import path
from . import views
urlpatterns = [
path('', views.feed, name='feed'),
]
Pono nō e pono e hoʻoponopono iā mākou i nā pūnāwai kākau ma ka waihona kumu, kahi a mākou i hoʻoholo ai,ʻo ia ka mea mua i hanaʻia ai. Hoʻoponopono i ka app / App.py a hoʻohui i ka mea aʻe i nā hiʻohiʻona URL
from django.urls import include # ma luna
# ...ʻO ke code mua ma aneʻi
I kēia manawa, ke holo nei mākou i ka server me Python Key.Py holo, eʻike mākou i ka hiʻohiʻona a mākou eʻike ai me nā mea ma ka waihona. Ma hope aʻe, e hoʻokō mākou i keʻano a mākou i hana ai a hoʻomaka i ka hanaʻana i kā mākou mau pou pono'ī. Akā ma mua o mākou e kākau nui i ke Code, e hana i ka hoʻihoʻiʻana i ka palapala kākau i kākauʻia ma mua, hoʻihoʻiʻia. E holo i kēia kope i loko o ke kaomi, e kali i kekahi mau manawa liʻiliʻi, a e kākoʻoʻia nā code āpau a hiki i kā mākou waihona git.
backup
E hōʻoluʻolu i kaʻano maʻalahi. E hōʻiliʻili mākou i kā mākou palapala, hoʻohui i kahi leka uila e noi aku ai i ka nānāʻana, a e mālama i ka pou ma ka waihona ma mua o ka hoʻopiliʻana i kaʻike like. Hiki iā mākou ke hoʻohana i ka hana hoʻihoʻi houʻia mākou i laweʻia, a ua kapaʻia kekahi hana hou e kiʻi i ka URL no keʻano o keʻano. E makemake mākou i kēia me ke kaula 'Feed: hānai' no ka inoa o keʻano e pono ai keʻano, a ua kapaʻia kaʻike.
posts = Post.objects.all() # Nīnau i nā pou āpau ma ka waihona
if request.method == 'POST': # Hoʻopaʻa i ka noi Post
form = PostForm(request.POST) # E hana i kahi manawa o keʻano a mālama i kaʻikepili iā ia
if form.is_valid(): # Hōʻoia i keʻano
form.save() # E mālama i ka mea hou
return redirect(reverse('feed:feed')) # Hoʻihoʻi hou i ka URL like me kahi noi
'form': PostForm(), # E hōʻoia e hāʻawi i keʻano i loko o keʻano i loko o keʻano e hiki iā mākou ke hāʻawi iā ia.
'Ānō, e pono mākou e hōʻano hou i ka papa kuhikuhi i ka moʻolelo no ka palapala hou. Hiki iā mākou ke hana i kēia ma ka hoʻohanaʻana i ka
E wāwahi i kēia. Aia kahi papa hana hou, he hōʻailona, he kumu ia iho, a me kahi pihi e waiho nei. Maikaʻi maʻalahi, akā ke nānā aku nei mākou iā ia, makemake paha mākou eʻoi aku ka maikaʻi. Ua hana ia, hiki iā mākou ke kau aku i nā pou hou me keʻano a ua mālamaʻia lākou i ka waihona. Aia kekahi mau mea e hele nei ma aneʻi. Hoʻohana mākou i nā hōʻailona HTML e haʻi aku ai i ka palapala hoʻolaha hoʻolaha, hoʻohana mākou i kahi hōʻailona o ka helu. Loaʻa iā mākou kekahi loop e hāʻawi i ka hua'ōlelo me ka hoʻohanaʻana i nā hōʻailona poloka a me kahi tag templat. ʻO ka poloka poloka nui no ka mea hiki iā mākou ke wehewehe i keʻano o keʻano o ke kumu o keʻano he kumu ko lākou kauʻana i nāʻano o mākou.
I kēia manawa pono mākou e hana maikaʻi i kā mākou kiʻi, no ka mea he mea maoli ia. Hiki iā mākou ke hana i kēia ma ka hoʻohanaʻana i ka CSS, a iʻole Inline, a iʻole ma nā papa i hoʻopaʻaʻia i kēlā me kēia mea i ka palapala. Maikaʻi loaʻo CSS no ka mea e haʻi aku i nā mea āpau ma kaʻaoʻao pehea e nānā ai, a hiki ke hoʻomaikaʻi maikaʻi. Aia kekahi mau hale waihona puke e hiki ai ke hana i kēia, akā e hele ana kaʻu mea pilikino i bootstrap.
Hiki ke kiʻiʻiaʻo Bootstrap mai kā lākou pūnaewele,getbootstrap.com/. ^. I kekahi manawa, e kaomi i ke pihi e heluhelu ai i nā Docs ka hoʻonohonoho, a kope i ke code mai ka pauku CDN. Ponoʻoe e loaʻa i kēia code ma luna o kāu palapala HTML, ma kahi papa i kapaʻia ke poʻo. Eia nō hoʻi, e hele e hele i mua a hana i kahi papa kumu no lailaʻaʻole pono mākou e hoʻomaikaʻi i kēia mau loulou i kēlā me kēiaʻano.
E hana i kahi papa kuhikuhi hou i kapaʻiaʻo Templates me MKDIR Tompates, a laila hoʻoponopono i nā hoʻohālikelike / Base.html.
Pono e like me kēia:
E hōʻoia e kope i ka CSS a Java,ʻo ka .css a .js faile, no ka mea e pono ai mākou e hana i kā mākou pūnaewele i ka wā e hiki mai ana.
I kēia manawa, e hoʻiʻoe i ka pahu bash a holo i kahi kauoha wikiwiki. E hoʻomanaʻo, inā makemakeʻoe e komo i kaʻenehana uila E hoʻokuʻu kēia iāʻoe e hoʻokomo i nā mea python mauʻaoʻao i kahi ala e wehe ai iā lākou. E hāʻawi i kā mākou mau palapala i hanaʻia e nā papa inoa Bootstrap Bootstrap, e hoʻohana mākou i kahi pākī Python i kapaʻiaʻo Crispy. Hiki iā mākou ke hoʻoiho i kēia me kēia kauoha
pip install django-crispy-forms
Ke hoʻonohonohoʻia nei kēia, e hoʻohui iā ia i ka papa kuhikuhi.py
# ...ʻO ke code mua ma aneʻi
Eia hoʻi, e hoʻi i ko mākou hāmeʻaʻana, hiki iā mākou ke wehe i kekahi mau mea. E kāpae mākou i ka hoʻomaka a me ka hopena o ka palapala a hoʻololi iā ia me ka hoʻoilina mai ko mākou'āina kumu, me ka weheweheʻana i ka wehewehe. Eia kekahi, e hoʻohui mākou i kahi kānana kīkī kīleʻa me ka ukana a me ka kānana kikoʻi paʻi i keʻano. ʻO ka hope, e hoʻohui i kahi papa bootstrap i ke pihi ma ke pihi ma keʻano e hana ai e like me ke pihi. E like me kēia:
Uʻi! ʻO kēlā mau'āpana o ke code. A hiki mai, e ho'āʻo kākou eʻike a maopopo iā mākou keʻike i nā mea āpau e nānā pono ana, a ke nānā pono nei nā mea āpau. E holo i ka server e like me nā'ōlelo aʻo ma mua a hōʻoia i keʻano o ka pūnaewele a me ka hana kūpono. Hana nui! Mākaukauʻoe e neʻe i ka papa aʻe, kahi e hoʻohui ai mākou i nā hana inoa inoa inoa hoʻohana, nāʻano, nā hiʻohiʻona a me nā hiʻohiʻona. He mea nui keʻano o ke kumu kumu, a e hoʻomau mākou e hoʻololi iā ia a hana i nā loli i mea e pono ai ke kōkua aku i kāu pūnaewele
E hana i kēia, pono mākou e hoʻohana i ka papa hana hoʻohana i kūkuluʻia i Django. ʻO ka hiʻohiʻona mea hoʻohana heʻano hoʻohālike no ka hoʻokaniʻana, e like me kā mākou pou, hiki ke hoʻolimalimaʻia e hāʻawi i kahi mea hoʻohana i ka pūnaewele. I ka wā e hiki mai ana, ma mua o ka laweʻana iā mākou i ka pūnaewele i ka Pūnaewele, e hoʻonui mākou i kēia hiʻohiʻona me nāʻano hana'ē aʻe i mea e pale ai i ka heluʻana. E hoʻomaka mākou e ka hoʻohanaʻana i kekahi i kūkuluʻia i loko o nā palapala inoa inoa e hāʻawi neiʻo Django. ʻO ka mea mua, e hana i kahi hana hou e hoʻohana ai mākou e hāʻawi i nā templales a me nā manaʻo no kaʻaoʻao loiloi kumu. E hana pū mākou i nā hana'ē aʻe e hōʻike i nā loli lookaʻa i ka hoʻomaʻamaʻaʻana, me kaʻike ākea, a me kahi hoʻopaʻa leʻa ākea, a me keʻano he manuʻole.
Ua kamaʻilio mākou e pili ana i ka hoʻomakaʻana i kahi app. Mai kā mākou papa kuhikuhi, i loko o kaʻenehana virtual, hele i ka hoʻokele.py i kēia mau hoʻopaʻapaʻa
python manage.py startapp users
I kēia manawa, pono mākou he papa kuhikuhi no ka app hou. E hoʻomaka kākou ma ka hoʻokumuʻana i kahiʻike ma kēlā papa kuhikuhi e pili ana i ka pili o ka mea hoʻohana. Ua kūkuluʻiaʻo Django i nā manaʻo no nā loiloi mea hoʻohana, akāʻaʻole kūpono kēia no mākou no ka mea makemake mākou i kahiʻano maʻamau.
Ma kēiaʻike, e hoʻomaka mākou e ka nānāʻana no kahi noi noi, noi noi.post i kahi mea hoʻohana ma mua o ka hoʻohanaʻana iā lākou i kā mākou mea hoʻohana.
I nā mea hoʻohana /'ike.py, hoʻohui i ke code aʻe
username = request.POST['username'] # E kiʻi i ka inoa inoa a me ka'ōlelo huna mai ka noi pou
password = request.POST['password'] # Hōʻoia i ka mea hoʻohana
ʻO kēia wale nō nā mea āu e pono ai no kahi nānā loiloi kumu. I kēia, e hana i kahi palapala no ka nānāʻana ma ka hoʻonuiʻana i ke kumu kumu kumu. E hoʻomaka mākou ma ka hoʻokumuʻana i kahi papa kuhikuhi hou no nā templalates i loko o nā mea hoʻohana i nā mea hoʻohana.
mkdir users/templates
mkdir users/templates/users
I kēia, hiki iā mākou ke hoʻoponopono i nā mea hoʻohana / nā mea hoʻohana / nā mea hoʻohana / hoʻohana / inoa / inoa / inoa inoa.htl.html. ʻOiai mākou e hana ai, e hana mākou i kahi papa hana eʻae i ka mea hoʻohana e kau inoa.
nano users/templates/users/login.html
I kēia manawa, ma kaʻanoʻano,
ʻO kēia nā kumu o ka papa kuhikuhi loiloi. He mea maoli nō ia e like me nāʻano'ē aʻe i loko o keʻano, akā he mea liʻiliʻi loa ia i ka wā e hāʻawiʻia ai. Hiki iā mākou ke kope i kēia code e kūkulu i kekahiʻano likeʻole i kapaʻia he inoa inoa inoa inoa inoa inoa inoa inoa, kahi e hoʻololi ai mākou i kahiʻano hou a hoʻohana mākou i kahi hana hou a hoʻohana mākou E hana mua i ka papa mua. Hoʻoponopono i nā mea hoʻohana / nā mea hoʻohana / nā mea hoʻohana / hoʻohana / papa inoa.html a hoʻohui i ke code aʻe:
I kēia manawa, e kūkulu i kahi palapala no kā mākou papa inoa hoʻohana a me kā mākou kelepona ma mua o ka hoʻomaikaʻiʻana i kā mākou mea hoʻohana i nā mea hoʻohana. E hana mākou i kēia palapala i hoʻomaka me ka hoʻomakaʻana me, akā e hoʻohui i nā kiko'ī hou a me nā hiʻohiʻona palekana e like me nāʻae e hiki mai ana. Hoʻoponopono i nā palapala me nā mea hoʻohana inoaʻo nano / form.opy, a hoʻohui i ke code aʻe.
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
No laila heʻano'ē aʻe kekahi maʻaneʻi, e hana pono ana. He palapala kākau inoa hoʻohanaʻia me kahi inoa inoa inoa, leka uila a me ka'ōlelo huna, a me kahi papa inoa password password. E hoʻomaopopoʻaʻoleʻaʻole e hoʻonui kēia palapala i ka papa hana maʻamau Ua weheweheʻo hoʻokahi kahua i ka like, aʻo ka meta e wehewehe i ka hoʻohālike e pili ana i ke koena o kaʻike e kākauʻia i ke koena o kaʻike. ʻO ka hapa nui o kēia mau mea i kūkuluʻia ma Django i kūkuluʻia i ka mea hoʻohana i ka mea hoʻohana, no laila e hoʻohana mākou e like me ke kumu no ka papa.
ʻO hope, e nānā mākou i kaʻike e hoʻopaʻa inoa i kahi mea hoʻohana, i kēia manawa a he kumu hoʻohālike. ʻO kēia kahi hiʻohiʻona, e like me ka mea i loko o ka nānā hou. Hoʻoponopono i nā mea hoʻohana / manaʻo.py a hoʻohui i ke code aʻe:
# ... nā mea hoʻopuka
ʻO kēia wale nō nā mea e pono ai e loaʻa i kahi mea hoʻohana i kākau inoaʻia, akā he mauʻike hou aku mākou. Makemake mākou eʻike i ka manawa i kākauʻia ai ka waihona, me ka manawa i noho ai lākou ma ka pūnaewele, e pili ana i ka leʻaleʻa e pili ana i kēlā me kēia mea hoʻohana a me nā hua'ōlelo hou i kēlā me kēia mea hoʻohana. I mea e hana ai, e hoʻoponopono mākou i nā models.Py i nā papaʻelua. E hoʻomaka kākou ma ka hoʻoponoponoʻana i ka hoʻohālike hānai. Pono e like me kēia manawa:
from django.db import models # ... nā mea hoʻopuka
author = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='posts') # Hoʻohui i kēia laina
E hoʻolohe i ka laina lua i hoʻohuiʻia i ka faile. ʻO kēia kahi kī haole, e like me kēlā me kēia pou i kēlā me kēia mea hoʻohana i hoʻokahi mea hoʻohana i kēlā me kēia pou, no laila hiki iā mākou ke hōʻoia i ka hoʻohanaʻana i ka hoʻohanaʻana i kahi mea hoʻohana. Wehewehe mākou i kēia kī haole me ka papa e hōʻike ana i nā hoʻopaʻapaʻa e hōʻoia i ka mea hoʻohana e hiki ai iā mākou ke hoʻohana i ka mea hoʻohana e hoʻohana ai mākou i ka mea hoʻohana e hiki ai iā mākou ke hoʻohana i ka mea hoʻohana e pono ai ke hoʻohana i ka mea hoʻohana. ʻO kēia inoa pili,ʻaʻole like me ka post.Author, ka mea kākau o ka pou, hāʻawi i ka mea hoʻohana i paʻi iā ia iho. Hiki iā mākou ke kiʻi i nā pou i kahi mea hoʻohana i hanaʻia e ka mea hoʻohana e holo ai.posts.alst.all ()
'Ānō, e hana hou i kā mākou mau loiloi. Hiki iā mākou ke hana i kā mākou pūnaewele i ka liʻiliʻi loa i ka phishing e pili ana i ka helu heluʻana i ka helu o nā manawa, e maʻalahi kēia. E hoʻomaka kākou e mālama i kekahi mauʻike e pili ana i kēlā me kēia mea hoʻohana ma mua o ka hoʻomauʻana o kā mākou noi. E hoʻoponopono i nā mea hoʻohana / models.py, hoʻohui i ke code aʻe.
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True, related_name='profile')
account_created = models.DateTimeField(default=timezone.now)
last_seen = models.DateTimeField(default=timezone.now)
can_login = models.DateTimeField(default=timezone.now)
preferred_name = models.CharField(max_length=20,default='', null=True, blank=True)
bio = models.TextField(blank=True, default='')
E hoʻomaopopo e like me kēia hiʻohiʻona e like me ke kumu hoʻohālike. Loaʻa iā mākou kahi mea hoʻopuka hou, manawa, eʻae iā mākou e waiho iā mākou e waiho i nā hemahema, a loaʻa pū mākou me ka pou. Ke hoʻohana nei i kēia mau manawa āpau e kōkua iā mākou e palekana i ka pūnaewele a hoʻomaopopo i kona hoʻohanaʻana, a me nā puke e kākau ai i kēlā me kēia mea hoʻohana. ʻO ka Ontooonefield e noʻonoʻo wale i ka noʻonoʻo liʻiliʻi, e like me ka mea like me keʻano he coreginkey akā hoʻokahi wale nō ma kahi hoʻohālike. Eia kēiaʻano, loaʻa hoʻokahi kope hoʻokahi 'he nui wale nō, i ko lākou mau lono he nui kā lākou.
I kēia, e hoʻomaikaʻi mākou i kā mākou loiloi a hoʻopaʻa inoa i nāʻike e pili ana i kaʻike. ʻO ka mea mua, hoʻoponopono i nā mea hoʻohana / nānā'ole.py a nānā i ka nānāʻana i ka papa inoa inoa:
# ... nā mea hoʻopuka
Profile.objects.create(user=user) # E hōʻoia e hoʻohui i kēia laina, e hoʻokumu i kahiʻaoʻao no ka mea hoʻohana
Hoʻokumu wale kēia i kahi palapala no ka mea hoʻohana, me kaʻole e hoʻopiha ana i kekahi o nāʻike. I kēia manawa, makemake mākou e hōʻoia i ka helu o ka mea hoʻohana,ʻaʻole hiki ke ho'āʻo pinepineʻia nā'ōlelo huna, no laila e hoʻonui pinepineʻia i kaʻike loiloi.
# ... nā mea hoʻopuka
if user and user.profile.can_login < timezone.now(): # E nānā mākou e nānā i kēia manawa inā hiki i ka mea hoʻohana ke komo i loko
else: # Ināʻaʻole i kūleʻa ka loiloi,
user = User.objects.filter(username=username).first() # ʻO ia ka'āpana kahi e hoʻohui ai i nā mea hoʻohana
profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # No lailaʻaʻole hiki iā lākou ke komo hou i kekahi mau kekona
ʻO kēia ka mea nui o ka palekana o ka palekana. ʻIke maopopoʻole i kaʻikeʻana i ka pūnaewele i ka ho'āʻoʻana i kēlā me kēia'ōlelo huna, a iʻole ka liʻiliʻi o lākou i ka manawa like. ʻAʻole e hoʻonāukiuki kēia i ka mea hoʻohana maʻamau iʻike i ko lākou passcode a me nā lāʻau wale i loko o nā mea hana, akā e mālama pono i nā mea hana phis Hoʻomaopopo i hoʻohuiʻia mākou i kahi'ōlelo inā heʻanoʻano likeʻole, hiki, pono e lilo i manawa i loko o nā mea i halaʻole e hoʻohana ana i ka inoa inoaʻoleʻole. ʻO kēia ala,ʻaʻole hiki i kahi mea hoʻohana maikaʻi ke koho i kahi'ōlelo huna ma kahi kokoke e kokoke koke. ʻO ka helu o kekona i ka manawa ma ka waihona.timedelta () hiki ke hoʻoponoponoʻia, a eʻoi aku ka wikiwiki o ka pūnaewele me nā kekona. Manaʻo wau 15 e hoʻomaka me.
E hoʻomanaʻo, kūkulu mākou i kahi palapala hoʻihoʻi hou e ho'ōla ai i kā mākou hana, no laila e hele mākou i mua a hoʻihoʻi i ka mea a mākou e mālama ai. E holo i ke kauoha:
sudo backup
Eia hou, e mālama kēia i kāu hana a hiki i kēia manawa. Manaʻo wau e holo pinepine i nā pihi pinepine e hoʻopakele i kāu hana, a makemake pahaʻoe e holo maʻalahi i kahi hana hoʻihoʻi. Hiki iāʻoe ke hana i kēia me ka hoʻohanaʻana i kahi UNIP UNIX i kapaʻiaʻo CONT. No ka ho'ōlaʻana i kēia mea hana, e holo i ke kauoha aʻe a hoʻokomo i kāu'ōlelo huna:
sudo crontab -e
Ināʻaʻoleʻoe e koho i ke koho 1 no NANO,ʻO ka mea hoʻoponopono e pono ai e kamaʻilio me ka lalo o nā faila. E hoʻohui i kēia laina:
0 * * * * sudo backup
Ua hoʻohanaʻo Cron i keʻano o ka minuke, hola, ka lā o ka mahina, mahina, ka lā o ka hebedoma, kahi a i kahi * a iʻole kahi helu e hōʻike ai i ke kauoha. Ke hoʻohana nei i kahi 0 no ka minuke a * no ke koena o nā koho, hiki iā mākou ke holo i kahi kauoha ma ka minuke mua o kēlā me kēia hola ma ka hoʻomakaʻana o ka minuke. Hāʻawi kēia iā mākou i ke kau inoa. ʻO nā hana āpau a Cron a pau i ka wā e hoʻokōʻia me Sudo e holo ana e like me ke kumu, no lailaʻaʻole mākou e pono e paʻi i ka'ōlelo huna i kēlā me kēia hola.
E maʻalahi e hoʻihoʻi hou i kā mākou code me ka hoʻohanaʻoleʻana i kahi'ōlelo huna, e hōʻole i ka'ōlelo huna no kā mākou kauoha backup. E hana mākou i kēia ma o ka hoʻokōʻana i ke kauoha aʻe a komo i kahi'ōlelo huna:
sudo visudo
I kēia manawa, e kauʻia i lalo o ka faila a hoʻohui i kahi laina'ē aʻe:
ALL ALL=NOPASSWD: /bin/backup
Hāʻawi kēia iā mākou e holo i ke kauoha "backup" e like me kekahi mea hoʻohana, me kaʻole o ka'ōlelo huna. ʻO keʻano no kēia,ʻoi aku ka maʻalahi o kēia, e hoʻomaka i ka laina me "nā mea āpau.
I kēia manawa, e hoʻomaka kākou e hana me ka leka uila. He mea koʻikoʻi maoli ka leka uila no nā pūnaewele, no ka mea he ala e mālama ai i kahi pūnaewele, e hōʻoia i nā mea hoʻohana a me nā lawelawe paha i nā mea kūʻai aku. Nui nā poʻe e pinepine i ka nānāʻana i ka pūnaewele pūnaewele a loaʻa iā lākou nāʻano o ka leka uila e pili ana i ka huahana Django ma kahi pūnaewele Django e pili ana iāʻoe.
ʻO ka mea mua, hiki iāʻoe ke uku no kahi lawelawe leka uila e hiki ai iāʻoe ke hoʻouna iāʻoe e hoʻouna i ka leka uila mai kāu pūnaewele a pono i ke code minumal. Nui nā lawelawe e hāʻawi ai i kēia, e like me ka huakaʻiʻo Google, hoʻouna aku i ka leka, leka uila, a me ka leka uila.
A iʻole, ua maikaʻiʻoe i ka kūkuluʻana i kāu lawelawe leka uila i loko o kāu kikowaena mai ka scratch. Ke noi nei wau i kēia koho,ʻoiaiʻoi aku ka nui o ke code a lilo i mea hou a hiki ke koi aku i ka hana kūikawā. ʻAʻole hiki iāʻoe ke hoʻomaka i kahi kikowaena leka uila mai kāu kamepiula home ma mua, no laila e hele i mua o ka leka uila ma mua o ka hoʻounaʻana i loko o ke ao.
ʻO ka mea mua, hoʻoponopono i nā kiʻi paʻi.py me ke kauoha penei:
nano app/settings.py
Ma kahi o ka app ka inoa o ka app āu i hana ai me ka hoʻomakaʻana.
Hoʻohui i nā laina aʻe:
SITE_NAME = 'Django App'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_ADDRESS = username@server.com'
EMAIL_HOST_USER = 'username'
EMAIL_HOST_PASSWORD = config['EMAIL_HOST_PASSWORD']
DEFAULT_FROM_EMAIL = '{} <{}>'.format(SITE_NAME, EMAIL_HOST_USER)
E hōʻoia e hoʻololi i kēia inā ua mākaukauʻoe e hoʻokaʻawale i kāu app, e hoʻoponopono hou mākou i kēia ma hope. ʻO ka leka uila_address e pono ai ka leka uila āu e makemake ai e hoʻouna mai, a me ka'ōlelo huna (leka uila_Post_Post Ua hoʻouka wau i ka'ōlelo huna i loko o kahi faila config e mālama ai i waho o ke code me ka hoʻohanaʻana i kēia mau loiloi ma luna o kēia mau laina.py:
import os
import json
with open('/etc/config.json') as config_file:
config = json.load(config_file)
A laila, ua hoʻonohonoho wau i kahi faile jon me ka config i loko o /netc/config.json e hoʻohana ana iā Nano ma hope.
E hoʻoponopono i ka faila:
sudo nano /etc/config.json
Hoʻohui i nā laina aʻe:
{
"EMAIL_HOST_PASSWORD": "<some password here>"
}
E hoʻomau mākou e hoʻoponopono i ka faila config a hoʻohui i nā'ōlelo huna a pau a me nā kī a mākou e hoʻohana ai ma ka app. No kēia manawa, e nānā koke i ka hoʻounaʻana i ka leka uila me ka hoʻohanaʻana iā Python. ʻO ka mua, e hana i kahi paʻi no ka leka uila hōʻoia a hiki iā mākou ke hoʻouna aku i kā mākou mea hoʻohana. E kākauʻia kēiaʻano hoʻohālikelike ma HTML.
nano users/templates/users/verification_email.html
He maʻalahi kēia leka uila. Pono ia i kahi kiko'ī o kahi mea hoʻohana, ka waihona kumu no ka pūnaewele, a me kahi mea hoʻohana i hoʻohanaʻia e hōʻoia i ka leka uila o ka mea hoʻohana. E hōʻoia e wehewehe i ka URL Base URL i nā papa inoa.py ma mua o kā mākou kākauʻana i kekahi code python. E hele i mua a hoʻohui i nā laina e pili ana i ka app / spect.py, kokoke kokoke i ka hoʻomaka.
SITE_NAME = 'Django App'
PROTOCOL = 'https'
DOMAIN = 'example.com'
BASE_URL = PROTOCOL + '://' + DOMAIN
Hope, i ka wā e mākaukau ai kāu pūnaewele no ka pūnaewele a meʻoe, e makemakeʻoe e wehewehe i kāu inoa inoa e kūʻai ai i ke kahua. ʻO kēia ka inoa āu e makemake ai i loko o ka Navbar i mea e komo ai i kāu pūnaewele. No kēia manawa, hiki iāʻoe ke haʻalele i ka Domain a hoʻohanaʻole i kahi mea hoʻonohonoho. Makemake pūʻoe e hoʻololi i ka pūnaewele_name i kahi inoa āu e makemake ai e hāʻawi i kāu pūnaewele,ʻo kāu kohoʻana.
Ma mua o kā mākou hoʻounaʻana i ka leka uila, e hana mākou i kahi mea hana hōʻailona e hiki ai iā mākou ke loaʻa i kahi hōʻailona account Hiki iā mākou ke hana i kēia ma ke kūkuluʻana a me ka hoʻopukaʻana i kahi hōʻailona account account e like me ka mea e like me keʻano. Hoʻoponopono i ka faila:
nano users/tokens.py
E hoʻohui i ke code aʻe:
from django.contrib.auth.tokens import PasswordResetTokenGenerator
import six
class TokenGenerator(PasswordResetTokenGenerator):
def _make_hash_value(self, user, timestamp):
return (
six.text_type(user.pk) + six.text_type(timestamp)
)
account_activation_token = TokenGenerator()
unsubscribe_token = TokenGenerator()
Ua hana hou kēia mea hana hōʻailona i kahi hōʻailona e hiki ai iā mākou ke hoʻouna i ka mea hoʻohana ma kahi URL a hiki i ka mea hoʻohana ke hoʻohana i kā lākou leka uila a ho'ōla i kā lākou leka uila.
ʻO ka lā aʻe, eʻike e pehea e hoʻouna ai i kahi leka uila. Ke hoʻohanaʻana i ka Nano, Hoʻoponopono i nā mea hoʻohana / leka uila.p.
nano users/email.py
E nānā pono i ka leka uila html hōʻoia e like me kēia:
from django.contrib.auth import get_user_model
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
from django.contrib.sites.shortcuts import get_current_site
from django.core.mail import send_mail
from django.template.loader import render_to_string
from django.utils.encoding import force_bytes
from django.core.mail import EmailMultiAlternatives
from django.shortcuts import render
from .tokens import account_activation_token
from django.template.loader import render_to_string
from django.utils.html import strip_tags
from django.template import Template, Context
from django.conf import settings
import traceback
def send_verification_email(user):
User = get_user_model()
mail_subject = '[{}] Activate your account.'.format(settings.SITE_NAME)
html_message = render_to_string('users/verification_email.html', {
'user': user,
'domain': settings.DOMAIN,
'protocol': 'https',
'uid': urlsafe_base64_encode(force_bytes(user.pk)),
'token': account_activation_token.make_token(user),
})
send_html_email(user, mail_subject, html_message)
He maʻalahi kēia. Hoʻokuʻu mākou i nā hana e pono ai mākou e hoʻouna i ka leka uila, hāʻawi i ka leka uila, a me kā mākou hoʻonohonoho, a hoʻouna mākou i ka mea hoʻohana me ka hoʻohanaʻana i kahi mea hoʻohana ma ka hoʻohanaʻana i kahi mea hoʻohana. E nānāʻoeʻaʻole mākou i wehewehe i ka hana e hoʻouna ai i ka leka uila, hoʻouna iā_htMl_Email, no laila, e kākau hou i kēia code ma lalo iho nei
def send_html_email(user, mail_subject, html_message):
to_email = user.email
username = user.username
if to_email == '':
return None
unsub_link = settings.BASE_URL + user.profile.create_unsubscribe_link()
html_message = html_message + "<p><a href=\"" + unsub_link + "\" + title=\"Unsubscribe from " + settings.SITE_NAME + " emails\">Unsubscribe</a></p></body></html>"
msg = EmailMultiAlternatives(mail_subject, strip_tags(html_message), settings.DEFAULT_FROM_EMAIL, [to_email], headers={'List-Unsubscribe' : '<' + unsub_link + '>'},)
msg.attach_alternative(html_message, "text/html")
profile = user.profile
try:
msg.send(fail_silently=False)
if not profile.email_valid:
profile.email_valid=True
profile.save()
except:
profile.email_valid=False
profile.save()
He mea paʻakikī loa kēia, aʻaʻole mākou e mākaukau e holo i kēia mau code āpau. E nānā i ka weheweheʻana i kahi unib_link He mea nui kēia, no ka mea, pono nā mea hoʻohana e hiki ke koho i waho o kā mākou leka uila keʻole e makemake lākou eʻike iā lākou, i kēlā me kēia manawa. Hoʻohui pūʻia mākou i kahi hua'ōlelo hou i kā mākou leka uila,ʻo ia ka mea i hōʻikeʻia ka leka HTML o HTML. ʻO ka hope loa, nānā mākou inā hoʻounaʻia ka leka uila, a ināʻaʻole ia,ʻaʻole mākou e hōʻailona i kaʻaoʻao o ka mea hoʻohanaʻaʻole pololei.
E hoʻihoʻi i nā hiʻohiʻona o nā mea hoʻohana i hiki iā mākou ke hana i kēia hana āpau. Pono mākou e wehewehe i kahi hana e hana ai i kahi loulou e wehe i kahi loulou, a wehewehe i kahi kahua bole e hōʻailona aiʻaʻole kūpono.
ʻO ka mua, hoʻohui i nā mea e pili ana i nā mea e pili ana i ka piko o nā mea hoʻohana / model.py
nano users/models.py
# ...
ʻO ka lā aʻe, e hoʻohui i nā hana i ka hiʻohiʻona mea hoʻohana e hana i ka hōʻailona a nānā i ka hōʻailona e mālama ai i kā lākou leka uila. I nā mea hoʻohana / models.py hou, hoʻohui hou i ke code e pili ana i ka hopena o ke kumu hoʻohālike
# ...
TimestampSigner().unsign(key, max_age=60 * 60 * 24 * 30) # Kūpono no 30 mau lā
He maʻalahi kēia, hoʻohana mākou i kahi manawa hana,ʻo ia kahi mea hana cryptoticy Hoʻohana mākou i kēia mau hōʻailonaʻelua, i hoʻokahi manawa e hōʻoia i ka leka uila, a hoʻokahi manawa no kahi loulou UNTUBSBERBE.
I kēia manawa mākou,ʻo ia ka hope o ka hana e pono ai mākou e hana ma nā manaʻo. I loko o nā mea hoʻohana / manaʻo.py, e hoʻohui i nā manaʻo e hōʻoia i ka leka uila, a e kāpaeʻia.
nano users/views.py
ʻO ka mua, hoʻohui i nā mea i lalo aʻe. Ua kiola aku au i kekahi mau mea liʻiliʻi loa no lailaʻaʻole mākou e hoʻokomo hou i nā mea hou aʻe ma hope aku.
from .email import send_verification_email # E hōʻoia e hoʻokomo i ka leka uila hōʻoia e hoʻouna ana i ka hana
Hiki iāʻoe ke loaʻa kekahi o kēia mau mea nui, akāʻaʻole ia e hōʻeha iā lākou. E ponoʻoe e hoʻokomo i ka hoʻopukaʻana i ka leka uila hōʻoia e hoʻouna ana i ka hana, a me ka moʻokāki_ctivation_token mai nā mea hoʻohana.
I kēia manawa, ma lalo o ka faile, hoʻohui i ke code aʻe:
# ʻO ka hoʻopiʻiʻana iā lākou
# 'Aʻole e hoʻoponopono houʻia i kaʻaoʻao login
# Hoʻouna i nā mea kūʻai aku (noi, mea hoʻohana)
He'āpana nui kēia. E wāwahi iā mākou. ʻO ka hana mua, maemae a maʻalahi,ʻaʻole maopopo i ka mea hoʻohana mai ka papa inoa leka uila mai ka papa leka uila. Hoʻopau ka lua i kā lākou leka uila, a eʻikeʻoe e hoʻohui i kahi hana i'ōleloʻia, e hoʻounaʻia. Ua hoʻokipaʻiaʻoe e hoʻohana i kahi leka uila a me ka wehewehe wehewehe e hoʻouna ai i kahi leka uila hauʻoli,ʻaʻole wau. ʻO ka hana hope loa aʻu i hoʻolei ai i mea nui loa, no ka mea e pau ana nā leka uila. No laila, makemake mākou e hāʻawi i ka leka uila i loaʻa i kekahi o kekahi manawa. Hiki iā mākou ke hoʻohana i kahi palapala kumu no kēia, a kāhea aku i ka hana e hoʻouna ai i ka leka uila hōʻoia. Ma mua o kā mākou hanaʻana, e hōʻoiaʻiʻo e hoʻounaʻia i ka mua, ma ka hoʻohuiʻana i kahi kelepona i ka nānāʻana i ka hana kākau inoa. E hoʻohui i kēia laina ma mua o ka hoʻihoʻi houʻana i kaʻike kākau inoa, e wehewehe i nā mea hoʻohana, ma nā mea hoʻohana /ʻike.
nano users/views.py
# ...
# ... (ma mua) redirect (
ʻAʻole ponoʻoe e hoʻohui i nā laina mua a me nā hope hope loa i kēlā code snippet, e hōʻoia wale i ka leka uila e hoʻouna ai i ka leka uila hōʻoia. Pono e like me kēia:
# ... nā mea hoʻopuka
send_verification_email(user) # E hōʻoia e hoʻohui i kēia laina!
I kēia, pono mākou e hoʻohui i kahi palapala e hāʻawi i ka leka uila hana. I nā mea hoʻohana / hana.py, hoʻohui i keʻano aʻe:
# ... (hoʻopuka)
E pono nō hoʻi mākou i kahiʻano hoʻohālikelike e pili ana i kēia e lawelawe i ka palapala leka uila. E hoʻohui mākou i kēia hoʻohālikelike i loko. Hoʻoponopono i ka faile:
nano users/templates/users/resend_activation.html
Ma hope aʻe, hoʻohui i ke code aʻe i ka faila.
Whew, he nui loa kēlā! I kēia manawa, i ka wā e hoʻokau ai mākou i ke code i kā mākou kikowaena, e hiki iā mākou ke hoʻouna i ka leka uila HTML a hana i nā moʻokāki hoʻohana me kahi kaomi ma ka leka uila. Makemake paha mākou e hoʻouna i kahi leka uila maikaʻi maikaʻi, no laila eʻike e pehea e hana ai i kēlā. E hoʻi i nā mea hoʻohana / leka uila.py, hoʻohui i ke code aʻe:
def sendwelcomeemail(user):
User = get_user_model()
html = open('{}/users/welcome_email.html'.format(settings.BASE_DIR)).read()
subject = 'Welcome to ' + settings.SITE_NAME + ', {{ username }}!'
template = Template(html)
subjtemplate = Template(subject)
context = Context({'username': user.username, 'base_url': settings.BASE_URL, 'model_name': 'Daisy Holton, 'site_name': settings.SITE_NAME})
renderedtemplate = template.render(context)
subjcontext = Context({'username': user.username})
subjrenderedtemplate = subjtemplate.render(subjcontext)
send_html_email(user, subjrenderedtemplate, renderedtemplate)
Eia nō hoʻi, e pono mākou i kahiʻano hoʻohālikelike e hoʻihoʻi i kēiaʻike āpau. Ma kaʻu pūnaewele, ke nānā aku nei keʻano ma lalo nei, akā e hoʻokipaʻiaʻoe e hoʻopau iā ia akā makemakeʻoe.
Hoʻomaopopoʻaʻole mākou e pani i ke kino a iʻole nā hōʻailona html, no ka mea ua hoʻohui mākou i kēia mau mea i ka wā e hoʻohui ai i ka hoʻopili HTML UNTUBSGB. He mea nui kēia, akāʻaʻole mākou makemake e wehewehe iā lākouʻelua.
No laila he aha ka mea e hiki mai ana? Ua hele lōʻihi mākou. ʻOiaʻiʻo, pono mākou e mākaukau e hoʻokau i ka pūnaewele i kahi kikowaena. Hiki iā mākou ke hoʻohui i ka DANANY @lognin_required Denarator a hoʻopaʻa i ko mākou mau manaʻo, e lawe i ka leka uila E hoʻohui mākou i kekahi mau hiʻohiʻona maikaʻi loa, a laila e kūkulu i ke kumu no ka hāʻawiʻana i kā mākou code i kahi kikowaena pūnaewele, e hoʻonohonoho ana i kahi kikowaena pūnaewele.
Pono mākou e makemake i kahi'ōlelo huna huna, no laila e hoʻohui i kēlā me ka wikiwiki. Ua wāwahiʻiaʻo Django i loko o ka'ōlelo huna huna huna i kekahi mau hana, akā e nānāʻoe pehea e kākau ai i kā mākouʻike pono'ī, nāʻano leka uila, a me nāʻano leka uila. Eia ka mea hea e like me kaʻike, i nā mea hoʻohana / manaʻo.py
# ... nā mea hoʻopuka
Kūkuluʻia kēia palapala i DJongo, akā makemake mākou i kahi papa hana e hōʻoia ai i ka hōʻano hou, nā mea hoʻohana / nā mea hoʻohana / nā mea hoʻohana / nā mea hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / nā mea hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / nā mea hoʻohana
Loaʻa iā mākou kahiʻano e hoʻouna ai i kahi leka uila e hoʻouna ai i kahi leka uila ma hope, me kahiʻano maʻalahi, i nā mea hoʻohana / nā mea hoʻohana / nā mea hoʻohana / mea hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana
ʻO ka palapala no ka leka uila iā ia iho he mea maʻalahi ia i ka waihona html e hoʻihoʻi i kahi loulou e hoʻoponopono ai i ka'ōlelo huna a me nā mea hoʻohana / nā mea hoʻohana / hoʻohana / hoʻohana / hoʻohana / nā mea hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana / hoʻohana E wehewehe maʻalahiʻo Django i kēia faila.
Pono mākou e makemake hou iʻelua mauʻano likeʻole. ʻO ka mea mua e hōʻoia i ka hoʻounaʻiaʻana o ka leka uila. ʻO nā manaʻo no kēia mau mea i loko o Django, no laila pono mākou e haʻi iā lākou i loko o ka urls.py. Aia kēiaʻatikala ma nā mea hoʻohana / nā mea hoʻohana / nā mea hoʻohana / mea hoʻohana / password_reset_done.html
A me ka hope loa, e hōʻoia i ka pauʻana o ka'ōlelo huna, nā mea hoʻohana / nā mea hoʻohana / nā mea hoʻohana / mea hoʻohana / mea hoʻohana / password_reset_htPhete.htmLo
I kēia manawa, pono mākou i nā hiʻohiʻona URL no kēia mau manaʻo. I nā mea hoʻohana / URLS.PY, hoʻohui i nā hiʻohiʻona URL ma lalo nei:
# ... Ma nā Urls ma mua
ʻEhā mau'ōlelo, he nui loa ia! Akā, hiki iā mākou ke maopopo e hiki iā mākou ke hoʻonohonoho hou i ka'ōlelo a ka mea hoʻohana a mākou e pono ai, nā mea a pau o ka polokalamu kele pūnaewele.
Ua maopopo iaʻu he nui kēia code. Inā he mea liʻiliʻi iki ma luna o kou poʻo, ua maikaʻi kēlā. E hoʻomaikaʻiʻoe, e hoʻomaikaʻi i kouʻike, a e liloʻoe i mea hoʻokūkūʻoi aku ma ke code. Inā makemake nuiʻoe, makemake wau e hoʻi hou i kēia polokalamu ma hope o ka hana ma hope o ka hanaʻana i kahi papa ma ka papa inoa pūnaewele. ʻO ka maʻamau maʻamau kēia e hoʻomaka ai, a e alakaʻi iāʻoe i nā mea a pau āu e pono ai e pōmaikaʻi ana i kēia hana. Inā makemakeʻoe e hoʻomakaʻoe e hoʻomau, heluhelu, e hoʻokaʻawale mākou i kāu kikowaena pūnaewele e hoʻohana mau ai i kahi papa inoa hou.
ʻO ka mea hope loa e pono ai mākou e hana ma mua o ka laweʻana i kahi kikowaena mamao e hana hou i kā mākou pūnaewele. E nānāʻoe e lawe wale ka inoa inoa inoa inoa a me ka'ōlelo huna, aʻaʻohe mea hōʻoia maoli a hoʻokahi paha. ʻO kēia kahi hoʻoponopono maʻalahi, a me ke code like, hiki iā mākou ke hana i kā mākou pūnaewele e hoʻouna i nā leka uila a me nā leka uila i hoʻounaʻia i ke kikowaena. E hoʻomaka, e hoʻi mākou i loko o nā hiʻohiʻona hoʻohana a hoʻohui i kahi hōʻailona inoa manawa e hōʻike ai i kēlā me kēia loiloi. E hoʻohui pū mākou i kahi mea iʻikeʻoleʻia, e hoʻopili ana i ka hoʻohālikelike o ka mea hoʻohana e hoʻohana e hoʻohui i ka palekana hou i kā mākou loiloi. ʻO ka hoʻoponoponoʻana i nā hiʻohiʻona mea hoʻohana, nā mea hoʻohana / model.py.py, hoʻohui i ke code aʻe:
# E hōʻoia e hoʻokomo i ka UUID, Timespamp awelika Timespat a me URL Guirator (Reverse)
# E hoʻohui i kēia code ma aneʻi
# A hoʻohui i kēia hana
TimestampSigner().unsign(key, max_age=60 * settings.AUTH_VALID_MINUTES) # Kūpono no 3 mins
E nānā pono i kāu mau mea hoʻohana / models.Py e like me kēia,ʻoi aku ka maikaʻi o nā'ōlelo (code ma nā laina me #). Wāwahi i lalo, maʻalahi. He mau mea liʻiliʻi kā mākou, he timesmalpsigner kahi mea hana cryptographic e hiki ke hana i kahi code palekana a hōʻoiaʻiʻo i kekahi manawa. Hoʻohana pū mākou i kahi uuid,ʻo ia kahi mea hōʻike kūikawā e hōʻike i kā mākou mea hoʻohana i ka hōʻailona o ka token i hoʻounaʻia i ka mea hoʻohana. E hoʻohana mākou i kēia cryptography maʻamau e kūkulu i kahiʻike i hōʻoiaʻiaʻelua. Ma mua o kā mākou hanaʻana i kekahi mea'ē aʻe, e holo i nā migrations no laila e hoʻonuiʻia nā hiʻohiʻona hoʻohana. Ma ka papa kuhikuhi me ka hoʻokele.py, e holo i nā kauoha e pili ana i ka hana a hoʻopau i nā migrations.
source venv/bin/activate
python manage.py makemigrations && python manage.py migrate
He mea koʻikoʻi kēia no ka mea o mākou e loli ai i nā hoʻohālike, pono mākou e hana i nā papaʻaina a e hoʻopiha i kaʻikepili ma mua o ka hikiʻana i ka hoʻohālike.
Eia aʻe, e hoʻomaikaʻi i kā mākou nānā loiloi e hoʻoponopono hou i kahi nānā i ka manaʻo o ka hōʻoia. I nā mea hoʻohana /'ike.py, e wehe i ka hana hana a me ka hoʻihoʻi hou i ka URL i hana mākou i nā hiʻohiʻona hoʻohana.
# ... nā mea hoʻopuka
if user and user.profile.can_login < timezone.now(): # E nānā mākou e nānā i kēia manawa inā hiki i ka mea hoʻohana ke komo i loko
# E wehe i ka hana ath_login hana ma aneʻi
return redirect(user.profile.create_auth_url()) # E hoʻomaopopo mākou i ka hoʻihoʻi houʻana i kahi URL hou maʻaneʻi
else: # Ināʻaʻole hoʻohana ka mea hoʻohana e hoʻohana i ka hōʻoia nui-ʻoiaʻiʻo, e hoʻopaʻa wale iā lākou i loko.
else: # Ināʻaʻole i kūleʻa ka loiloi,
user = User.objects.filter(username=username).first() # ʻO ia ka'āpana kahi e hoʻohui ai i nā mea hoʻohana
profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # No lailaʻaʻole hiki iā lākou ke komo hou i kekahi mau kekona
No laila he mea maʻalahi kēia, he ala mākou i kēia manawa e hoʻihoʻi hou i nā mea iʻikeʻia i ka manaʻo o keʻano he nui i ka wā e hana ai mākou. Loaʻa iā mākou kahi mea pāʻani i ka hihiaʻaʻole i hoʻohuiʻia ka mea hoʻohana i kahi helu kelepona. E hoʻohui mākou i kahiʻike maʻamau e hoʻohui i kahi helu kelepona a me ka hoʻopiliʻana me kahi leka uila.
ʻO ka mea mua, makemake mākou i kahi ala maʻalahi e hoʻouna i kahi leka uila mai kā mākou code. E hana i kēia, hiki iā mākou ke koho mai kahi helu o API, akāʻo ka mea maʻalahi loa i loko o koʻu manaʻoʻo Twelilio. Hāʻawi pū lākou i nā kumukūʻai maikaʻi no nā hana liʻiliʻi, a me nā uku haʻahaʻa. E hana i kahi moʻokāki ma Twilio.com, e hoʻopiha i kekahi mau kiko'ī e pili ana i kāu papahana, kūʻai i kahi helu kelepona, a kope i kāu helu API, a kope i kāu helu API, a kope i kāu helu API A laila, hoʻohui i kēia code ma lalo o kahi faila hou, nā mea hoʻohana / sms.y.
nano users/sms.py
# Hoʻomoe i nā mea āpau e pono ai
# Hoʻouna kēia code i ka kikokikona me Twililio
# ʻO kahi hana kōkua e loaʻa ai kahi helu me nā helu he nui
# Hoʻouna i ka hua'ōlelo e hōʻoia i ka mea hoʻohana
# Hoʻouna i kahi mea hoʻohana i kekahi mau hua'ōlelo me kēia hana
# Hōʻoia i ke code me kēia hana
# Hōʻoia i ka manawa
E hōʻoia e hoʻololi kūpono i kāu mau hoʻonohonoho, hoʻohui i kēia mau laina me kāu mau kī:
# E hōʻoia e kope i kēia mai kāʻoukou twilio dashboard
AUTH_VALID_MINUTES = 3 # Ua ikaika ka nui o nā minuke o ka TFAʻaoʻao i kahi manawa koke
ʻO ka mea mua, pono mākou e loaʻa i nā palapala no kā mākou mau manaʻo hōʻoia he nui. Hoʻoponopono i nā mea hoʻohana / form.py, hoʻohui i ke code aʻe.
# ... nā mea hoʻopuka
# Kahi palapala no ke komoʻana i kā mākou helu kelepona
# Kahi palapala no ka hōʻoiaʻana
Ma hope, e hana i nā manaʻo i nā mea hoʻohana /'ike.py
# ... nā mea hoʻopuka
Pono mākou e hana i nā templates no kēia mau manaʻo. E hoʻohui mua i ka MFA TMPALL mua.
nano users/templates/users/mfa.html
E hoʻohui i kēia code HTML i ke kumu hoʻohālike
He mea wehewehe pono kēia. Hoʻouna i keʻano he code a iʻole kahi codeʻole, a eʻikeʻoe i kaʻike e hoʻouna ai mākou i ke code inā loaʻa iā mākou kahi codeʻoleʻole. A laila e loaʻa iā mākou nā pihiʻelua e hoʻouna ai i nā pihi, aʻo kēia ala hiki iā mākou ke hoʻouna i ke code me ka pihi'ē aʻe. A laila, e hoʻohui mākou i kahiʻano maʻalahi e hoʻohui i kahi helu kelepona.
nano users/templates/users/mfa_onboarding.html
Hoʻohui i ka HTML ma hope iho.
He mea maʻalahi loa kēiaʻano,ʻo ia wale nō e hoʻihoʻi hou i keʻano helu kelepona a mākou e hana ai a hoʻokuʻu i ka mea hoʻohana i kahi helu kelepona.
He maikaʻi loa kēia! E like me ka lōʻihi o nā mea āpau e hoʻonohonoho pono ai, hiki iā mākou ke hoʻouna i nā leka, a hoʻopaʻa i ka mea hoʻohana ma kā lākou helu kelepona i ka wā e hoʻohui ai i nā helu kelepona. ʻO ka mea hope loa e pono ai mākou e hoʻonohonoho i kahiʻikeʻike no laila hiki iā mākou ke hoʻololi i ka helu keleponaʻole.
E hoʻohui i kahiʻike i kaʻike i nā mea hoʻohana / nānā.Py. E hōʻano hou kēiaʻike i ka Bio's Bio, leka uila, inoa inoa, a me ka helu kelepona, eʻaeʻia e hiki ai iā mākou keʻae i ka hōʻoiaʻana i ka nui o ka hōʻoia. Mua, pono mākou iʻelua mau mea hou i nā mea hoʻohana / form.py
# ... nā mea hoʻopuka
Ma hope aʻe, hiki iā mākou ke hana i kahi manaʻo e hoʻohana ai i nāʻanoʻelua o kēia mauʻano. Hoʻoponopono i nā mea hoʻohana / nānā'ole.py a hoʻohui i kaʻike.
# E hoʻohui i kēia mau mea hoʻopuka
Pono mākou e hana i kahiʻano no kēiaʻike.
nano users/templates/users/profile.html
E nānāʻoe heʻano maʻalahi kēia, akā,ʻaʻohe wahi JavaScript i loko o ia mea eʻike pono ai i nāʻike o ka palapala i kā lākou heluʻana. He mea maikaʻi kēia, no laila e hiki iāʻoe ke hana i nā edits me kaʻole e paʻi i ka hoʻounaʻana i kēlā me kēia manawa.
Ma hope aʻe, pono mākou i nā URL e hōʻike ana i kēia mau manaʻo āpau i nā mea hoʻohana URL URL. Hoʻoponopono i nā mea hoʻohana / URLS.PY a hoʻohui i kēia code:
# ...ʻO ke code ma mua, e hoʻopuka
# ... nā hiʻohiʻona url ua komo mua mākou, hoʻohui i nā lainaʻekoluʻekolu
ʻO kēia kahi manawa maikaʻi e ho'āʻo ai i kā mākou papahana. Akā, e holo mua, e holo i kekahi mea hou.
backup
A holo i ke kikowaena. Ma mua o ka laweʻana iā mākou i kahi kikowaena Linux, he manaʻo maikaʻi ia e hiki ai ke hiki i nā mea hōʻoiaʻelua ma ka waihona. E hana mākou i kēia e hele i kā mākouʻaoʻao URL, / nā mea hoʻohana / Profile / Profile / Social / E nānā i ka pahu e komo ai i ka hōʻoiaʻana o kā mākou helu kelepona, a laila waiho i keʻano.
python manage.py runserver localhost:8000
E kipa i ka pūnaewele pūnaewele ma o ka heleʻana i kāu polokalamu kele pūnaewele, e hoʻohana ana au iā Google Chrome i kēiaʻano hoʻohālike: //
E hiki iāʻoe ke komo i loko o ka mea pono inā pono a hiki ke hōʻoia i ka hōʻoia oʻelua.
Pono kēia papahana i kahi kikowaena e holo i laila hiki ke hoʻouna maoli i ka leka uila. Akāʻo ka mua, makemake mākou i kahi ala eʻike ai i nā hala. E nānāʻoe ināʻoe e holo i ka server ma keʻano debug E hōʻike i nā hewaʻole me ka hoʻohanaʻoleʻana i keʻano Debug,ʻo ia ka mea e weheʻoleʻia ma kahi kikowaena hana, pono mākou e hoʻohui i kahi manaʻo no ia. ʻO nā hewa nui loa e pono ai mākou e hiki ke mālama:
Hapa 500 - He pilikia me kā mākou code Hapa 404 - kahiʻaoʻao i loaʻaʻoleʻia (wāwahiʻiaʻo URL) Hapa 403 - kahiʻaeʻole i hōʻoleʻia
E hoʻohui i kahi polokalamu hou e mālama i kēia mau hala, i kapaʻia nā hewa.
python manage.py startapp errors
E hoʻohui i kēia i nā hoʻonohonoho.Py e like me kā mākou i hana ai ma mua, i ka hoʻonohonohoʻana i nā mea hoʻohui i loko o ka App / URLS.PY, ma hea ka inoa o kāu Django Project.
handler404 = 'errors.views.handler404'
handler500 = 'errors.views.handler500'
handler403 = 'errors.views.handler403'
ʻO kēia wale nō nā mea āpau e pono ai ma waho o nā manaʻo halaʻole, nāʻano liʻiliʻi a me kahi liʻiliʻi o ka waena waena. E wehewehe i nā mea e like me:
# E hana i kāuʻike ma aneʻi.
ʻO kaʻaoʻao aʻe, e wehewehe i ka waena waena e mālama i kēia mau hala. E hana mākou i kēia ma ka hoʻohui muaʻana i ka waena waena o waena
# ... Mamua waena waena
A laila, e hoʻohui i ka waena waena.
from threading import local
import traceback
from django.utils.deprecation import MiddlewareMixin
_error = local()
class ExceptionVerboseMiddleware(MiddlewareMixin):
def process_exception(self, request, exception):
_error.value = traceback.format_exc()
def get_current_exception():
try:
return _error.value
except AttributeError:
return None
def set_current_exception(exception):
try:
_error.value = exception
except AttributeError:
print('Attribute error setting exception.')
Hoʻohui mākou i kahi hana e loaʻa ai i kaʻokoʻa o kēia manawa ma o ka hoʻohanaʻana i kahi kūloko o keʻano, e kōkua iā mākou i nā hewa i kā mākou code. I nā'ōlelo o nā templates, pono wale mākou i kekahi, no ka mea, e wehewehe pono i ka inoa i ka inoa i kaʻike. Pono kaʻatikala e hāʻawi wale i ke poʻo inoa a me ka "trace", kā mākou Traceback hewa mai keʻano.
nano errors/templates/errors/error.html
ʻO kēia kā mākou'Āpana maʻalahi loa, akāʻo ia ka maʻalahi o kaʻikeʻana i nā hewa i kā mākou papahana. NEXT, E hoʻopau i ka debug i nā hoʻonohonoho.
nano app/settings.py
Eʻimi i kēia laina kahi i hoʻonohonohoʻia ai iʻoiaʻiʻo, a hoʻololi i ka wahaheʻe
DEBUG = False
E hele i mua a hoʻihoʻi i ka app i kēia manawa. Mākaukau mākou e lawe i kahi kikowaena Linux Linux, a mālama e hoʻohui i nā hiʻohiʻona mai laila.
sudo backup
Ma mua o ka loaʻaʻana o kēia code i kahi kikowaena, pono mākou e noʻonoʻo i kekahi mau pilikia me ke code. Ke hilinaʻi nei i ka hihia, nā pūnaewele eʻae i kaʻikepili i kauʻia e loaʻa iā lākou nā pilikia me ka scam i laweʻia i ka spam. ʻAʻole pono kēia e hele koke, akā inā he mea e hiki mai ana, e nānā hou aku ai i ka pūnaewele a me kahi mea hoʻohana paha i kahi mea hoʻohana a iʻole e like me kahi manamana lima
Ke nānā nei i ka hōʻike hōʻoia maoli o ka hōʻoiaʻana o ka hōʻoiaʻana, ma ka hana, hiki i nā mea keʻokoʻa. E nānā pehea e kau ana mākou i nā loiloi haʻahaʻa, a hoʻopau i nā hōʻailona. Inā loaʻa nā robots i kahi pūnaewele, hiki i nā mea hōʻoiaʻelua ke paʻakikī e like me ka paʻakikī e komo i ka hoʻohanaʻana i nā code i ka manawa like. E kaua i kēia, e hoʻohana i kahi hoʻohālike i nā hiʻohiʻona hoʻohana, e hoʻolaha ana pehea e hoʻopili ai mākou i keʻano o ka piliʻana i ka hōʻoiaʻana i ka nui o ka waihona. E hoʻohui pū mākou i kahi koho e hōʻoia i ka leka uila. Hoʻomaka ma ka hoʻoponoponoʻana i nā hiʻohiʻona o nā mea hoʻohana me Nano.
nano users/models.py
ʻO kēia ka mea e hoʻohālikelike ai mākou e like me keʻano. ʻAʻole pono mākou i nāʻano hana, nā loli wale nō e mālama i kahi ID, ka mea hoʻohana, ka lōʻihi e like me 123456 i hoʻounaʻia i kahi kelepona a iʻole he leka uila.
# ʻO kahi hōʻailona maʻamau i hoʻohanaʻia e komo i loko o ka pūnaewele
E hoʻohui pū kekahi i kahi mea pono i kā mākou mea hoʻohana, a e kau iā mākou i kēia manawa no kēia manawa, ma mua o ka hāʻawiʻana i nā mea hoʻohana ponoʻole e hoʻopaʻa inoaʻia. Ma nā hiʻohiʻona mea hoʻohana, hoʻohui i kēia laina ma kaʻaoʻao:
vendor = models.BooleanField(default=False)
E like me nā loli i ka waihona, pono mākou e hana i nā migrations a hoʻokaʻawale i ka waihona i kekahi manawa a mākou e hoʻoponopono ai i kahi faila. E hoʻomanaʻo, e hana i kēia kumu hoʻohana mua iā mākou (ināʻaʻole i hoʻohanaʻia ma mua o ka hanaʻana i ka terminal.
cd project-directory-you-named # (inā pono)
No kēia manawa, hiki iāʻoe ke kākau inoa i nā moʻolelo āu i hana ai e like me nā mea kūʻai aku ma ka hoʻohanaʻana i kaʻili.
python manage.py shell
from users.models import Profile
p = Profile.objects.get(user__username='Charlotte')
p.vendor = True
p.save()
exit()
I kēia, e laweʻia i kā mākou mau kumu hōʻoiaʻiʻo maoli e hoʻohana ai i kēia hōʻailona. ʻO ka mea mua, pono mākou e hoʻololi i ko mākou mfa helper kūpono. Ka hoʻohanaʻana iā Nano,
nano users/mfa.py
from django.utils import timezone
import random
import datetime
from django.conf import settings
from feed.middleware import get_current_request
from django.contrib import messages
from .email import send_html_email
import traceback
from .models import MFAToken
account_sid = settings.TWILIO_ACCOUNT_SID
auth_token = settings.TWILIO_AUTH_TOKEN
source_phone = settings.PHONE_NUMBER
def send_text(target_phone, text):
from twilio.rest import Client
try:
client = Client(account_sid, auth_token)
if len(target_phone) >= 11:
message = client.messages.create(
to=target_phone,
from_=source_phone,
body=text + ' Text STOP to cancel.')
except:
messages.warning(get_current_request(), 'There was an error sending the message.')
print(traceback.format_exc())
def get_num_length(num, length):
n = ''
for x in range(length):
n = n + str(num)
return int(n)
def send_verification_text(user, token):
length = user.profile.verification_code_length
code = random.randint(get_num_length(1, length), get_num_length(9, length));
token.token = code
token.expires = timezone.now() + datetime.timedelta(minutes=settings.AUTH_VALID_MINUTES)
token.save()
send_user_text(user, "Your verification code for {} is {}".format(settings.SITE_NAME, str(code)))
def send_verification_email(user, token):
length = user.profile.verification_code_length
code = random.randint(get_num_length(1, length), get_num_length(9, length));
token.token = code
token.expires = timezone.now() + datetime.timedelta(minutes=settings.AUTH_VALID_MINUTES)
token.save()
send_html_email(user, "Your verification code for {} is {}".format(settings.SITE_NAME, str(code)), "<p>Dear {},</p><p>Your verification code for {} is {}. Thank you for using this code to secure your account.</p><h2>{}</h2><p>Sincerely, {}</p>".format(user.profile.name, settings.SITE_NAME, str(code), str(code), settings.SITE_NAME))
def send_user_text(user, text):
send_text(user.profile.phone_number, text)
def check_verification_code(user, token, code):
token.attempts = token.attempts + 1
profile = user.profile
result = (token != None and code != '' and token.token == code and (token.expires > timezone.now()) and token.attempts <= settings.MFA_TOKEN_ATTEMPTS)
if token.attempts < 3 and result:
profile.verification_code_length = 6
elif token.attempts > 1 and not result:
profile.verification_code_length = profile.verification_code_length + 2
if profile.verification_code_length > settings.MFA_TOKEN_LENGTH: profile.verification_code_length = settings.MFA_TOKEN_LENGTH
token.save()
profile.save()
return result
# Hōʻoia i ka mea hoʻohana e hoʻohana ana i kā lākou leka uila a helu kelepona paha
token = MFAToken.objects.filter(uid=username, expires__gt=timezone.now() + datetime.timedelta(seconds=30)).order_by('-timestamp').last() # Kānana i ka hōʻailona ma ka waiwai i hala ma ka URL (kahi UUID)
if not token: token = MFAToken.objects.create(user=User.objects.filter(profile__uuid=username).first(), uid=username, expires=timezone.now() + datetime.timedelta(seconds=115)) # Ināʻaʻole i hanaʻia kēia hālāwai, hana
user = User.objects.filter(id=token.user.id).first() # E kiʻi i ka mea hoʻohana mai ka hōʻailona
if not user and request.user.is_authenticated: return redirect(reverse('feed:home')) # Inā ua hōʻoiaʻia lākou, e hoʻopaʻa iā lākou i loko
if not user: raise PermissionDenied() # Deny ināʻaʻohe mea i loaʻa
if not user.profile.enable_two_factor_authentication and user.is_active and user.profile.check_auth_token(usertoken, token): # E nānā i ka hōʻailona ATHER
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Kākau i loko o ka mea hoʻohana ināʻaʻole lākou i hoʻopaʻaʻia
user.profile.mfa_expires = timezone.now() + datetime.timedelta(minutes=settings.LOGIN_VALID_MINUTES) # E hoʻonohonoho i kahi pau ma kā lākou hōʻoiaʻana i ka hōʻoia
return HttpResponseRedirect(next if next != '' else reverse('landing:landing')) # Hoʻihoʻi hou i ka mea hoʻohana i kaʻaoʻao aʻe
if not user.profile.mfa_enabled: # E nānā inā hanaʻo MFA
if not check_verification_time(user, token): # E nānā i ka manawa
user.profile.mfa_enabled = False # E hoʻomaʻemaʻe i ka helu kelepona
user.profile.enable_two_factor_authentication = True # Hoʻopaʻa iā MFA
user.profile.phone_number = '+1' # Hoʻopaʻa i ka helu kelepona
user.profile.save() # E mālama i ka profile
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Kākau i ka mea hoʻohana i ka mea hoʻohana ināʻaʻole i hiki i ko lākou MFA
if request.method == 'POST' and not fraud_detect(request, True): # Inā noi ka noi
form = TfaForm(request.POST) # Hoʻopili i keʻano
code = str(form.data.get('code', None)) # Kiʻi i ke code
if code and code != '' and code != None: # E hōʻoiaʻaʻoleʻaʻole ia
token_validated = user.profile.check_auth_token(usertoken) # E nānā i ka hōʻailona ATHER
is_verified = check_verification_code(user, token, code) # E nānā i ke code
if token_validated: # Inā nā mea āpau
if is_verified: # I ke kauoha
user.profile.mfa_enabled = True # Hoʻopaʻi iā MFA (ināʻaʻole i hanaʻia)
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Kākau i loko o ka mea hoʻohana
for key, value in request.GET.items(): # Kūkulu i kahi noi noi no ka parameter hou (inā kekahi)
return HttpResponseRedirect(next) # Hoʻoikiʻia
elif not token_validated: # Ināʻaʻole pololei ka hōʻailona
if p.mfa_attempts > 3: # Inā he nui loa nā ho'āʻoʻana
if form.data.get('send_email', False): # Hoʻouna i ka leka uila (a iʻole text)
# Hāʻawi i keʻano (no nā noi noi)
Ke hoʻohui nei mākou i kēia code, e hōʻoia e hāʻawi i ka hana e hoʻouna ai i kahi leka uila. Ma ka piko o ka faile, nā manaʻo hoʻohana (me nā mea hou aʻe), hoʻohui
from .mfa import send_verification_email as send_mfa_verification_email
I kēia manawa, pono pono e kākau i kēlā hana ma mua o kekahi o kēia mea e hana ai. E hoʻolōʻihi i kā mākou leka uila hoʻouna, a hoʻouna hou i kahi leka uila i ka mea hoʻohana me ka code hōʻoia.
nano users/mfa.py
def send_verification_email(user, token):
length = user.profile.verification_code_length
code = random.randint(get_num_length(1, length), get_num_length(9, length));
token.token = code
token.expires = timezone.now() + datetime.timedelta(minutes=settings.AUTH_VALID_MINUTES)
token.save()
send_html_email(user, "Your verification code for {} is {}".format(settings.SITE_NAME, str(code)), "<p>Dear {},</p><p>Your verification code for {} is {}. Thank you for using this code to secure your account.</p><h2>{}</h2><p>Sincerely, {}</p>".format(user.profile.name, settings.SITE_NAME, str(code), str(code), settings.SITE_NAME))
No laila ua hana nui kēia mau hana a pau, i loaʻa iā mākou he'ōnaehana hōʻoia maoli e pili ana i kahi helu kelepona a iʻole leka uila e hoʻopili ai i nā mea hoʻohanaʻole. Hiki i kēia mau spammers, nā robots a iʻole kekahi e manaʻo maikaʻiʻole no kā mākou hana. E nānā i kahi nānā i loaʻa iaʻu no nā mea hoʻohana e nānā i nā mea hoʻohana ma kaʻu pūnaewele:
# Nā hoʻouka
from .tests import is_superuser_or_vendor # Pono mākou e hana i kēia hōʻike
# E kiʻi i ka papa inoa o nā mea hoʻohana
return render(request, 'users/users.html', { # E hoʻi i nā mea hoʻohana i kahi kumu hoʻohālike
E hoʻomaopopo e hoʻohana i kēia code i kahi hoʻokolohua, pono mākou e hoʻolaha i kēia hoʻokolohua ma kahi waihona hoʻokolohua a hoʻopuka iā ia. E hoʻoponopono i nā mea hoʻohana / hoʻokolohua.py, e hana i ka hōʻike.
def is_superuser_or_vendor(user):
return user.profile.vendor or user.is_superuser
Ua hui pūʻia kēia me nā mea hoʻohana / hoʻohana i nā mea hoʻohana / hoʻohana.html e like me nā mea e like me kēia:
E hoʻomaopopo e pili ana i keʻano o ka hoʻohālikelikeʻana, nā mea hoʻohana /mea hoʻohana.html. Ke hoʻohana nei i kahi kiko'ī e loaʻa ai kahi subtemp) Ma mua o ka inoa o ka faile e hoʻonui ai, i mea e hoʻokaʻawale ai i nāʻano likeʻole.
E nānā he nui kēia o Jinja,ʻaʻole pahaʻoe i kēia mauʻano āpau i weheweheʻia. Akāʻo kēia ka mea e like me kaʻu code.
<small># {{mea hoʻohana.ID}} </ liʻiliʻi>
Pono mākou i kekahi subtemplate hou aʻe, toggle_active.html. Pono kēiaʻano hana i kahiʻano e hiki ai iā mākou ke nānā inā he mea hoʻohana kahi mea hoʻohana.
Pono mākou e hoʻohui i kahiʻike e pili ana i ka hana hoʻohana ponoʻana, a me nā hiʻohiʻona URL kūpono kūpono. ʻOiai mākou ma ia mea, e hoʻohui i kahiʻike e hoʻopau i kahi mea hoʻohana ma ka hihia e pono ai mākou.
# Nā hoʻouka
success_url = '/' # ʻO ka hoʻihoʻi houʻana i ka URL kūleʻa
def test_func(self): # E ho'āʻo inā he mea hoʻohana ka mea hoʻohana a loaʻa iā ia kaʻae e hoʻopau
ʻOiai he pono kēia i ka wā e pono ai,ʻaʻole pono e holoi i kahi mea hoʻohanaʻaʻole pono e pono ka hapa o kaʻike, hiki iā mākou ke kau aku i kaʻike.
ʻO nā hiʻohiʻona URL i hoʻohui mākou e like me kēia. Me nano, hoʻoponopono i nā mea hoʻohana / URLS.PY a hoʻohui i kēia mau laina:
nano users/urls.py
Pono nā laina e hele i ka papa inoa o nā ala i nā manaʻo o ka mea hoʻohana, ma mua o ka hopena "] akā ma hope o ka hoʻomaka" [".
# ...
# ...
I kēia manawa, e hōʻoia e hoʻihoʻi i ka pūnaewele i hiki iāʻoe ke hoʻoiho i ka pūnaewele pūnaewele e hoʻomau mākou e hana ana. Mai ka laina kauoha,
sudo backup
I kēia manawa ua paʻiʻia kā mākou pūnaewele.
No laila he mau hiʻohiʻona'ē aʻe a mākou. Akā e pili ana i ke kiʻi nui ma aneʻi? ʻAʻole hiki ke loaʻa i kēia code mai ka pūnaewele,ʻaʻohe o mākou leka uila, a e hoʻonui pono i kā mākou noi e pili ana i ke kaʻina hōʻoia
E loaʻa iā mākou i kēia mau mea āpau. ʻO ka mea nui loa no kēia manawa e loaʻa wale ana i kēia code ma ka pūnaewele, e hiki iā mākou ke hana me kekahi mau laina o nā pahu uuku. Ponoʻoe e hoʻolimalima i kahi kikowaena no kēia manawa, ināʻaʻoleʻoe he kikowaena ma ka home a me kahi waihona pūnaewele pūnaewele e hiki ai iāʻoe ke wehe iāʻoe e wehe i nā awa. Ua holo mua wau i kaʻu pūnaewele ma kahi HP Z440
E hoʻomanaʻo e noʻonoʻo i keʻano o ka pā'ālua mākou i kēia manawa, e pono e mālamaʻia a hoʻomaikaʻiʻia ma mua o kā mākou e hoʻohana ai i kahi huahana. E hōʻoia e mālama pono i ka mea āu e hana ai me ka Pūnaewele, e hōʻoia ināʻoe e hoʻokau i kēia pūnaewele ma ka pūnaewele me kāu pūnaewele. ʻAʻole paha kēia pilikia i ka pilikia ma mua, akā e nānā mākou i nāʻano o nā hopena e kaua i kēia, me keʻano o ka mīkini aʻo a me kaʻike pūnaewele. I ka wā e lilo ai i pilikia, e nānā hou i kēia kikokikona no kahi hopena.
Ma nā'ōlelo o ka hoʻolimalimaʻana i kahi vps, he nui nā wahi āu e hele ai. He kīwahaʻo Googleʻo Google VPS,ʻo Ionos,ʻo Kamera,ʻo Kamera, a me nā mea hou e hāʻawi ai i nā mea e pono ai i ko mākou mau pono.
Ponoʻoe e kaomi ma waena o kā lākou mau palapala a koho i kahi hoʻolālā e hoʻomaka ai. Hiki iāʻoe ke hele me kahi hoʻolālā kumu me kekahi mea hoʻolako, akā e hōʻoia i ka mea hāʻawi iāʻoe e wehe i nā leka uila No laila ua loaʻa iaʻu kahiʻike maikaʻi loa me Ionos a me Kamatera, eʻae lāuaʻelua e hoʻouna iaʻu e hoʻouna i ka leka uila a me kā lākou kumukūʻai.
E hoʻopili iāʻoe i kāu kikowaena hou ma luna o kahi protocol i kapaʻiaʻo SSH a iʻole e hiki iāʻoe keʻae i ka Internet Computer, mai kāu kamepiula pilikino. Ke hoʻonohonoho neiʻoe i ka server,ʻo ka mea lawelawe e noi ana e noi aku iāʻoe e hoʻohui iāʻoe e hoʻohui i kahi kī SSH, a iʻole e hāʻawi iāʻoe i kahi inoa inoa a me ka'ōlelo huna. ʻO ke kī SSH i keʻano o kāu e komo ai i ke kikowaena mai ka laina kauoha e hoʻoponopono ai i ke code. E hoʻohana i nā koho i lalo o SSH-Keygen e hoʻopuka ai i kahi kī SSH.
ssh-keygen
E mālama i ka faile a me ka pale iā ia inā ponoʻoe, he maikaʻi ia e hoʻololi i kāu mau kī ssh iʻoleʻoe. I kēia manawa, hiki iāʻoe ke hoʻohana i ke kauoha aʻe eʻike i kāu kī SSH. Makemakeʻoe e kope iā ia i kāu kikowaena mamao no laila hiki iāʻoe ke hoʻohana i ka hōʻoia.
cat ~/.ssh/id_rsa.pub
Ināʻaʻole hiki iāʻoe keʻike i kahi kī ssh i ke kauʻana i kēlā kauoha
ssh-keygen -t rsa -b 4096
E hana i kahi vps e holo ana i ka ubuntu, akā, hoʻolālāʻoe e hana i kēia. Ua hanaʻoe i kahi VPS ma ka kaomiʻana ma nā puka ma nā pūnaewele lawelawe (Katea.com, e like me ka leka uila. Ponoʻoe e nānā i ka inoa inoa inoa ma ka inoa inoa ma ke kikowaena a mākou i hana ai, no keʻano, ubuntu.
ssh ubuntu@XX.XX.XX.XX
E noiʻiaʻoe no ka'ōlelo huna, inā ua noiʻiaʻoe no kahi'ōlelo huna, komo i loko o ka inoa inoa inoa a me ka hoʻohuiʻana i kahi mea kūʻai aku i kā lākou mea hoʻohana hou a me ka hoʻohuiʻana i kahi mea hoʻohana
E hoʻomaka kākou ma ka hoʻohuiʻana i kahi faila sshd_config faile, e haʻi ana i ke kikowaena pehea e hoʻohana ai i ka ssh.
nano sshd_config
# ʻO kēia ka Pūnaewele Pūnaewele SSHD System-ākea. See
# sshd_config (5) no kaʻike hou aku.
# Ua hoʻopiʻiʻia kēia sshd me ke ala = / USR / GBIN / SBIN: / USR:
# Hoʻohanaʻia ka hoʻolālā no nā koho i ka SSHD SSHD_Config i hoʻounaʻia me
# ʻO Operanssh ke kuhikuhi i nā koho me ko lākou waiwai kūpono ma kahi
# hiki, akā waiho iā lākou i'ōleloʻia. Nā koho koho i halaʻole i ka
# waiwai waiwai.
# ʻO ka Poʻina 22
# Apono hou
# Leo houkodress 0.0.0.0
# Leedaddress ::
# ʻO ka Hostkey / Etc / ssh / ssh_host_rsa_key
# Hoskey / etc / ssh / ssh_hosts_ecdsa_key
# Hoskey / etc / ssh / ssh_host_ed25519_key
# ʻO nā mea kūʻai aku a me ke kiʻi
# Rekeylimit maʻamauʻole
# Kāwahaʻana
# Style Kahikina
# Kāpili Loglevel
# KAUNUI:
# Logingractime 2m
# Aeʻaeʻia ka'ōlelo huna-password
# ʻO nā strintmodeʻae
# Maxtaoutries 6
# 10
# Manaʻo .SSH / Manaʻo_keys_keys2 e hōʻoleʻia e ka maʻamau i ka wā e hiki mai ana.
# ʻO kaʻaeʻana i ka hanaʻole
# Hanaʻia
# Hanaʻia nā mea hanaʻole
# No kēia hana e pono ai e loaʻa iāʻoe nā kī i nā kī / etc / ssh / ssh_knon_honnon_hons
# Ka mea i loaʻaʻole ai
# Hoʻololi iā YES ināʻaʻoleʻoe e hilinaʻi i ~ / .ssh / kaulana_hosts no
# Hokalokoa
# Mai nā mea nānāʻoleʻole
# Mai heluhelu i ka mea hoʻohana o ka mea hoʻohana (/ .Rhosts a me ~ / .shosts faile
# ʻO nāʻaeʻole
# No ka hōʻoleʻole i nā'ōlelo huna i hoʻopaʻaʻia, e hoʻololi i kēia!
# Permitempty Passwords no
# Hoʻololi i kaʻae e hiki ai i nā'ōlelo huna paʻakikī
# kekahi mau modula a me nā kaula)
# Nā koho Kerberos
# Kerberosothenalical Nowe
# ʻO KerberosorlCalcaulpassWdʻae
# ʻO ke Kerborostticleplep Ae
# Kaukaukai paule
# Nā koho GSSAPI
# Gssapiatument no
# Gssapicletaccredntial
# GssapstricstRustricTucecpeckingcheckʻae
# Gssapikeyxchange no
# E hoʻonohonoho i kēia i ka 'ʻae' e hiki ai i ka hōʻoiaʻana o Pam Promhentication, ka hoʻoiliʻana o ka moʻokāki,
# a me ka ho'ōlaʻana. Inā hanaʻia kēia,ʻo Pam hōʻoia
# aeʻia ma o ka kbdinteractidenticative a
# Hua'ōlelo huna. Ke hilinaʻi nei i kāu hoʻonohonohoʻana i kāu papa.
# ʻO ka hōʻoiaʻana o PH hōʻoia ma ka KBDINTECTIVATERATATERTIVICATERATRATERATERATRATICATERATENTALLICATERATRATICATALLY MAKUA
# ʻO ka hoʻonohonohoʻana o ka "ʻae inoaʻole me kaʻole-password".
# Inā makemakeʻoe e makemake i ka moʻokāki Pam a me nā loiloi Session e holo me keʻole
# ʻO PM hōʻoia, a laila e hiki iā ia ke hana i kēia akā e hoʻonohonoho i ka'ōlelo huna huna
# a me ke kbdinteracteactidentically i ka 'no'.
# Aeʻaeʻia
# Aeʻaeʻia
# Nā'lelo No
# X11displayFset 10
# X11useloCalst Ae
# Aeʻaeʻae
# E paʻi
# TCPKEAPIVE YES
# Aeʻaeʻia
# Ua kali
# KananaHai
# KAULANANANA 3
# Lilo
# Pidfile /run/sshd.pid
# MaxstartApsAtA 10: 30: 100
# Aea no
# Chrootdirectoryʻaʻohe mea
# ʻAʻole Pahua Memoho Hoʻohālike
# ʻaʻohe ala hanaʻole
# Eʻae i nā mea kūʻai aku e hele i nāʻano o ka ea locale
# ʻO ka hoʻokaʻawaleʻana i nā kālā kālāʻole
# ʻO keʻano o nā hoʻonohonoho overriding ma luna o kahi mea hoʻohana
# E hoʻohālikelike i nā AONCVS hoʻohana
# X11FOSODING NO
# Aeʻaeʻia
# Aeʻae
# Fixcommand cv server server
Hoʻomanaʻo, ctrl + x a me y e mālama i ka faile. Ma hope aʻe, e kākau i kahi kope kumu i kapaʻiaʻo ka hoʻomakaʻana (ma ka papa kuhikuhi home o kā mākou mea hoʻohana).
nano initialize
E hoʻohui i kēia mau laina i ka faile, ke hoʻololiʻana
# ! / bin / bash
E hele iāʻoe ma kēia faila, e hoʻomaka ka laina ma ka laina. Hōʻike ka laina mua i ka paio i kēia mea i kēia palapala BAWA. A laila e kau ana mākou i nā hilinaʻi, ke kopeʻana iā SSHD_COFG i ka papa kuhikuhi a me kēia mau inoaʻo SSH. Hoʻohui pū mākou i ka hui i ka hui sudo, e hana i kā lākou kī SSH, e hoʻohui i kā mākou kī i nā kī iʻaeʻia a me kā lākou kī nui. E lilo kēia mea hoʻohana hou pehea e komo ai mākou i loko o ka pūnaewele.
Ma kahi kikowaena hou, hele i mua a wehe hou i ke kikowaena.
ssh team@XX.XX.XX.XX
ʻAʻole ponoʻoe e pono i kahi'ōlelo huna i kēia manawa,ʻo ia ka mea āu e loaʻa ai ke kī SSH. Ua lilo mākou i meaʻole e hoʻopaʻa inoa me ka password e mālama ai i ka pūnaewele.
I kēia manawa, hoʻomaka hou kēia kikowaena me kaʻikeʻoleʻole. E hoʻomaka kākou ma ka cloning i kā mākou papahana mai Git no laila hiki iā mākou ke kiʻi a holo i ka mīkini mamao. Ma ka kikowaena mamao e pili ana i ka ssh, e paʻi mua i kāu kī ssh:
cat ~/.ssh/id_rsa.pub
Ma hope aʻe, e paʻi i kēia kī i loko o nā hoʻonohonoho git e like me kā mākou i hana ai ma mua o ka hoʻonohonohoʻana i kā mākouʻoihana GIT. Hiki iā mākou ke kāpili i kā mākou papahana i ka hana ma ka kikowaena. E hōʻoia i ua kākoʻoʻiaʻoe i ka papa hana ma mua aʻo ia ma ka server Git e hoʻoiho.
git clone git://github.com/you/yourproject.git
Hemolele. Aia kēia mau faila āpau. Hiki iā mākou keʻike iā lākou me LS
ls
I kēia, e hoʻomaka e hoʻonohonoho i ka server. ʻO ka mea mua, e kope i kāu papa kuhikuhi papahana i loko o kahi inoa maʻalahi, me keʻano hoʻomanaʻo e hoʻohana mākou no ka papahana.
cp -r yourproject whatyoucalledit
Ma hea "he aha keʻano o ka inoa hou o kāu papahana. Ma hope aʻe, pono mākou e kūkulu i kahi mea hana maʻamau e hoʻonohonoho i ka server. E mālama mākou i kēia pono a hoʻohana iā ia i ka wā e hiki mai ana. No ka kūkuluʻana i kēia utility, e hana i kahi mea hoʻohana hoʻohana e wehewehe pehea e hoʻoponopono ai mākou i kahi kope. Ke hoʻohana nei i ka bash, hoʻoponopono / USR / BIN / ASPTER
sudo nano /usr/bin/ascript
E hōʻoia e hoʻohana i Sudo ma laila, he mauʻaeʻoe e hoʻoponopono i ka faila. I loko o ka faila, hoʻohui i kēia mau laina:
# ! / bin / bash
echo "# ! / Bin / BASH ">> / USR / BIN / BIN / $ 1
Hoʻomaopopo i kēia Kēia Palapala, e lawe ana i ke kipi, ka inoa palapala, e like me $ 1. ʻO ka mea mua, inā loaʻa ka faile, a iʻole e hana i ka mea mua, e hoʻololi ana i kona inoa i nā inoa o nā kākau inoa. Inā loaʻa ka waihona, e hoʻololi maʻalahi i nā palapalaʻae a hoʻoponopono iā ia. E mālama i ka faile, a e hiki iā mākou ke hoʻololi i nāʻae. Ke hoʻohana nei mākou i kēia palapala,ʻaʻole mākou e hana hou i kēlā.
sudo chmod a+x /usr/bin/ascript
Hemolele. I kēia manawa e hana i kahi kope i kapaʻia he hoʻonohonoho. ʻO ka mua,ʻaʻole e hoʻonāukiuki iāʻoe, akā e nānā i keʻano he mea e like me ka mea e like me kaʻu. E hele mākou ma waena o kēia kope e like me kāu papa hana,ʻaʻole ponoʻoe i nā mea āpau ma kaʻuʻatikala e hoʻomaka ai.
# ! / bin / bash
# Sudo chmod a + x palapala / mea hoʻohana
# ./scripts/usersetup
# ssh-kiʻekiʻe
# Papa Kauka
# Nā kauoha hoʻopaʻa
# Nana Ono Config
# Git config
# Hoʻohui a hoʻonohonoho
# E hiki iā Clamav antivirus
# Hoʻonohonoho i ka inoa inoa
# Hoʻonohonoho i nā postgres
# Hoʻonohonoho i ka waihona waihona
# Hoʻopaʻa
# Hoʻokomo i ka bitdefender
# Hoʻonohonohoʻia postfix
# Hana i nā poʻohiwi
# Rettopen Vortutunanv
# E kiʻi a kūkulu i nā hilinaʻi
# E hoʻonohonoho i nā rula ahi ahi
# Hoʻokomo i nā hilinaʻi PYPI
pip3 install --upgrade opencv-python # == 4.5.4.60
pip3 install --upgrade opencv-contrib-python # == 4.5.4.60
# pip in plangecv-python == 4.5.5.64
# PIP E kau i ka wehe wehe wehe-Python == 4.= 4.5.5.64
# Hoʻokomoʻia ke kaula kālā
# Holo i ka resertbot
# Pūnaewele Pūnaewele
# Kope kope
# Sudo cp /etc/leskssetprypt/live/femmebabe.com/profy.pemy.pem
# sudo cp /etc/lesesetcrypt/live/femmebabe.com/cemmebabe.com/cemmebabe.com/cet.pem cer.pem
# Kāne Venv
# E hoʻonohonoho i nā hoʻonohonoho hoʻohana
# Hoʻonohonoho i nāʻae
# Should -r Team: Nā mea hoʻohana / Vant / Run /
# SUTO CHOWS BOS: APAR / RUN / SOD / TS -R
# Sudo CHMD 664 DB.SQLITE3
# Should chown www-data: mea hoʻohana db.s.qhite3
# Kope kope a hoʻonohonoho i nāʻae
# Hoʻonohonoho hoʻonohonoho
# Injector pam config a wehe i ka cont con config sh
# Sudo SED -I ''--E '$ D' /Ec/Pam.d/sshd
# Sudo SED -I '' -E '$ D' / Etc / Profile
# Kope kope i nā kope bn a hoʻonohonoho i nāʻae
# Reload a hiki i nā lawelawe
# Hoʻopā i nā modula apache
# su e2dsimed mpm_evendd
# su e2dismo0 mpm_Worker
# su emf_enmod mpm_prefork
# Hoʻopaʻa i ka pūnaewele maʻamau
# E hiki i kā mākou pūnaewele
# Reload daemon a hoʻomaka hou i ka apache, postfix a me ka opddkim
# Hoʻonohonoho i nāʻae
# Swap configuration
# I ka mīkini keena
# Hoʻonohonoho i ka git
# E hōʻike i ka IPV6 a me Opendkim no ka hoʻonohonoho hoʻonohonoho pūnaewele
# Ua hoʻopau
ʻO ia ka nui o ka hoʻonohonoho! Ma kahi pōkole, hoʻopiʻiʻia nā loiloi code, hoʻopaʻa iāʻoe, e hoʻopili ana i ka waihona kālā, e hoʻopaʻa i ka waihona. Nā hilinaʻi, hōʻoia i nā palapala hōʻoia a hoʻonohonoho i ka kikowaena, hoʻonohonoho hoʻonohonoho, hoʻomaka i ka leka Maʻalahi maʻalahi, akā he mea like ia me ka nui o ka code. ʻAʻole pono mākou e makemake nui i kēia no ka meaʻaʻohe o mākou hilinaʻi,ʻaʻole mākou e hoʻohana i ka celery, celerybeat, akā e hoʻokomo i kekahi o lākou e hoʻomaka ai. E nānā i kēia helu helu i hōʻikeʻia kahi inoa i kekahi manawa.
Pono mākou e kūʻai i kahi inoa inoa (ʻo ia kahi uku liʻiliʻi liʻiliʻi). Manaʻo wau iā Squarespace no ke kūʻaiʻana i kahi pūnaewele,ʻo kā lākou papa hana maʻalahi a maʻalahi hoʻi e hoʻohana. Hiki iāʻoe ke kūʻai i kahi kikowaena o kāu koho, akā ke hoʻohana nei au i ka pūnaewele femmebabe.com ma kēia hiʻohiʻona. I ka manawa i kūʻai aiʻoe i kahi pūnaewele, ke poʻo i ka pahu pahu pahu a hoʻohui i kāu kikowaena i ka kikowaena ma IP Address. Pono e like me kēia:
@ A xx.xx.xx.xx
Me ka @erator ma keʻano he mea pana, e like me nā subdomains āpau ma lalo o kēia pūnaewele a me ke aʻa o ke kaomi i ka uku hou i ke kikowaena. Nui nā moʻolelo e hoʻolaha ai, akā hiki iā mākou ke neʻe i kēia manawa ke mākaukau mākou e hoʻouna i leka uila. E hoʻomanaʻo, e lawe paha i kekahi mau lā ma mua o ka hiki iāʻoe ke hiki ke hoʻouna maikaʻi i ka leka uila mai ka kikowaena. ʻO nā moʻolelo DNS mākou e kau ai e lawe i ka manawa e pāpā ai.
Eia naʻe,ʻO nā hua'ōlelo hoʻokahi mākou e pono e hoʻomaka i kahi moʻolelo. No laila, hiki iā mākou ke hoʻopiha i ka palapala ma lalo nei e like me kā mākou papahana a holo iā ia.
E hoʻomaka mākou me kahi palapala hoʻonohonoho liʻiliʻi e hoʻonohonoho wale i ka mea e pono ai mākou i ka holomua o ka holomua. ʻAʻole mākou e hoʻohana i nā mea hilinaʻi nui a iʻole postgresql, e hoʻomaka mākou i kahi kikowaena http a me ka hopohopo e pili ana i ka hanaʻana. E hoʻomanaʻo, e kiʻi i kahi palapala pass palapala HTTPS a holo i ka kikowaena, e pono e kūʻai i kahi kikowaena ma kahi kikowaena. No kēia manawa, e hoʻololi i ka "hui" i kēia faila me ka inoa o kāu mea hoʻohana, "dir" me ka papa kuhikuhi o kāu Polokalamu.
Eia kekahi, ma mua o ka holoʻana i kēia code, pono mākou e hoʻololi i nā hoʻonohonoho i ke ahi e kākoʻo ai, inā loaʻa kekahi. ʻO ka maʻamau maʻamau kēia ma nā 'Networks' Tab o kāu mea lawelaweʻo Hosting, a iʻoleʻoe e hoʻokele iāʻoe iho Makemake pūʻoe e hoʻonohonoho i kahi statics static ma o kāu mea hana ma kāu kikowaena me ka leka uila o kāu mīkini server, ināʻoe e hoʻohana ana iāʻoe iho. Ponoʻoe e wehe i nā awa aʻe e pili ana i ka heluhelu / kākau i ke komo.
22 (SSS) 25 (Mail) 587 (Mail) 110 (leka uila) 80 (http) 443 (https)
# ! / bin / bash
# Nā kauoha hoʻopaʻa
# Nana Ono Config
# Git config
# Hoʻohui a hoʻonohonoho
# E hiki iā Clamav antivirus
# Hoʻonohonoho i ka inoa inoa
# Hoʻonohonoho i ka waihona waihona
# Hoʻopaʻa
# Rettopen Vortutunanv
# Hoʻokomoʻia ke kaula kālā
# Holo i ka resertbot
# E hoʻonohonoho i nā hoʻonohonoho hoʻohana
# Hoʻonohonoho i nāʻae
# Should -r Team: Nā mea hoʻohana / Vant / Run /
# SUTO CHOWS BOS: APAR / RUN / SOD / TS -R
# Reload a hiki i nā lawelawe
# Hoʻopā i nā modula apache
# Reload daemon a hoʻomaka hou i ka apache, postfix a me ka opddkim
# E hōʻike i ka IPV6 a me Opendkim no ka hoʻonohonoho hoʻonohonoho pūnaewele
Ma mua o ka holoʻana i kēia code, e hōʻoia i ka pūnaewele āu i kūʻai ai e pili ana i ke kikowaena. E hana i kēia, wehe i kahi pahu ma kāu mīkini kūloko, a holo i kēia kauoha me kāu Domain.
ping femmebabe.com # E hoʻokomo i kāu domain ma aneʻi, ma hope o ka ping
Inā nānā maikaʻi nā mea a pau a hoʻounaʻia i nā pane a ke kauʻana, ua mākaukau mākou e holo i ka palapala a hoʻonohonoho i kā mākou kikowaena APACE.
ʻAʻole kēia e hoʻonohonoho i ka hoʻonohonoho pono e hoʻonohonoho i ka postfix, e nānā mākou i kēlā hoʻonohonoho hou ma hope aku. No kēia manawa, e holo i kēia code hoʻonohonoho a pono e lawe i kekahi mau minuke e hoʻonohonoho a hōʻoia i kāu kikowaena. Eia hou, e hōʻoia hou e hoʻololi i ka inoa inoa, leka uila a me ka inoa inoa ma ka palapala e like me ka inoa āu i kūʻai ai.
I kēia manawa ua hāʻawiʻia ka serrt, hiki iāʻoe ke hele i ka URL i kekahi polokalamu pūnaewele pūnaewele a nānā pono e hoʻokō i ka serrt. Ināʻaʻole, e ho'āʻo e kali iki i kahi manawa iki no nā moʻolelo DNS e hopu a laila e holo i kēia kauoha
sudo certbot --apache --non-interactive --agree-tos --domains <domain>.com --email <youremail>@gmail.com
E like me ka lōʻihi o kou hoʻonohonoho ponoʻana i nā mea āpau, ponoʻoe e komo i kaʻaoʻao Depalt eʻike ai a hōʻike i kahi pūnaewele pūnaewele. Ma hope aʻe, e hoʻoponopono i ka papa kuhikuhi.py e hoʻololi i kā mākouʻano debug debuc e hana. E hoʻonohonoho mākou e hoʻonohonoho i ka pūnaewele i nā hoʻonohonoho, a me nā ips kūloko.
nano yourproject/settings.py
I nā hoʻonohonoho, hoʻololi / hoʻohui i kēia mau laina.
# Hoʻonohonoho pūnaewele
I kēia manawa, pono mākou e hoʻonohonoho i ka APAche2. E hoʻoponopono mākou i ka faila config e lawe mākou me kēia laina:
sudo nano /etc/apache2/sites-available/femmebabe-le-ssl.conf
E loaʻa kēia faila hoʻonohonoho hoʻonohonoho i kā mākou inoa inoa ma loko, aʻo ka inoa o ka mea hoʻohana a me ka papahana. Ke hoʻohana nei au i ka inoa inoaʻo Dommebabe.com, ka hui inoa inoa inoa, a me ka inoaʻo Femmebabe.
ServerSignature Off
ServerTokens Prod
<IfModule mod_ssl.c>
<VirtualHost *:80>
Redirect permanent / https://femmebabe.com/
</VirtualHost>
<VirtualHost *:443>
ServerName femmebabe.com
ServerAdmin team@femmebabe.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static /home/team/femmebabe/static
<Directory /home/team/femmebabe/static>
Require all granted
</Directory>
Alias /media/icons /home/team/femmebabe/media/
<Directory /home/team/femmebabe/media>
Require all granted
</Directory>
<Directory /home/team/femmebabe/femmebabe>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIScriptAlias / /home/team/femmebabe/femmebabe/wsgi.py
WSGIDaemonProcess femmebabe python-path=/home/team/femmebabe/ python-home=/home/team/femmebabe/venv header-buffer-size=100000000000 user=team
WSGIProcessGroup femmebabe
WSGIApplicationGroup %{GLOBAL}
<Directory /home/team/femmebabe/static>
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} \.(css|webp|webm|gif|png|mp3|wav|jpeg|jpg|svg|webp)$ [NC]
RewriteCond %{HTTP_REFERER} !^https://femmebabe.com/media/.*$ [NC]
RewriteRule ^(.+?)/$ /media/$1 [F,L]
</IfModule>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/femmebabe.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/femmebabe.com/privkey.pem
Header set X-Frame-Options: "SAMEORIGIN"
Header set Access-Control-Allow-Origin "https://femmebabe.com"
TimeOut 60000
LimitRequestBody 0
<FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|webp|JPG|JPEG|wav|mp3|mp4|public|js|css|swf|webp|svg)$">
Header set Cache-Control "max-age=30, public"
</FilesMatch>
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:80>
ServerName femmebabe.com
ServerAdmin team@femmebabe.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =femmebabe.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
</IfModule>
Hoʻomaopopo i ka hoʻololiʻana i ka inoa o ka papa hana, nā alakaʻi, a me ke kikowaena ma kēiaʻano hoʻohālike i ka hoʻonohonohoʻana i kāu kikowaena. I kēia manawa, pono mākou e hōʻole i ka pūnaewele maʻamau. Hiki ke hana i kēia me ka hoʻohanaʻana i ka bash.
sudo a2dissite 000-default-le-ssl
sudo a2dissite 000-default
sudo a2dissite default-ssl
Eia kekahi, hiki iā mākou ke hiki i ka pūnaewele maʻamau a hoʻonohonoho hou i kapache2, e hoʻohana ana i ka bash. E hoʻomanaʻo e hoʻololi i ka femmebabe me ka inoa o ka faile āu i haʻi aku ai i ka wā e hoʻoponopono ai i loko o / etc / apache2 / i loaʻa / loaʻa / loaʻa / loaʻa /
sudo a2ensite femmebabe-le-ssl
sudo systemctl reload apache2
E hoʻi i kāu kikowaena ma ka Navbar. Eʻikeʻoe i ka pūnaewele āu i hoʻonohonoho ai ma kāu pūnaewele pūnaewele. Aloha! Ināʻaʻoleʻoe eʻike iā ia, pono pahaʻoe e hana i kekahi mau loli. E nānā pono i nā hoʻonohonoho i kāu papahana, APACH FORDE, A e hōʻoiaʻiʻoʻaʻoleʻoe e hana i nā hewa e nānā i ka hana no nā hewa.
cd projectname
source venv/bin/activate
python manage.py check
Inā loaʻa iāʻoe nā hewa i kāu papahana python, e kipa aku iā lākou i kahi a lākou e hoʻoponopono ai iā lākou. ʻAʻole pahaʻoe eʻike i nā hewa āpau e pili ana i kahi o lākou, no laila he hewaʻole ka'ōleloʻana ", e hoʻoponopono i ka hewa.
nano venv/lib/python3.12/site-packages/django/apps/registry.py
Scroll i ka laina 83, kahi i hala ai kēia hewa Runtime Me he like kēia:
# Kāohi i nā kelepona hou e pale ai i ka holoʻana i ka holoʻana i ka appConfig.Red ()
# ʻelua mau meaʻelua.
# e hoʻokiʻekiʻe iā RuntimeError ("populate ()ʻaʻole reentant")
Hiki iāʻoe ke nānā hou i ka papahana a hōʻike hou i ka hala.
python manage.py check
A laila hiki iāʻoe keʻike i ka hewa a hoʻoponopono iā ia. I ka wā i hoʻoponopono aiʻoe a me ka hoʻopiliʻana i nā code me nā hewaʻole, e hōʻoia e hoʻololi i ka faile e like me kēia:
# Kāohi i nā kelepona hou e pale ai i ka holoʻana i ka holoʻana i ka appConfig.Red ()
# ʻelua mau meaʻelua.
# iāʻoe iho.app_configs =}
Hoʻolakoʻia i ka pūnaewele ma ka pūnaewele, i ka manawa e hana hou ai mākou i nā loli hou iā ia, pono mākou e hoʻohana i ke kauoha e pili ana i ke kikowaena:
sudo systemctl reload apache2
Maikaʻi loa! Akā he aha e pili ana i ka hoʻounaʻana i ka leka uila? E hoʻomaka i ka hoʻounaʻana i ka leka uila, pono mākou e hoʻonui i ka hoʻonohonoho hoʻonohonoho pūnaewele. Pono kēia ma kāu papa inoa DNS ma Squarespace, a iʻole nā inoa inoa inoa inoa inoa āu i koho ai. Pono mākou e hoʻokomo a hoʻohui i kahi hoʻonohonoho, a holo i kekahi mau kauoha.
ʻO ka mua, e loaʻa iāʻoe ka'ōlelo IPV6 o ka kikowaena. E wehe mākou i kāu dns a hoʻohui i nā moʻolelo.
E kiʻi i ka'ōlelo IPV6 i ka IPV6, e hoʻohana i kēia kauoha:
ip -6 addr
I kēia manawa, hiki iā mākou ke hoʻohui i nā palapala e ae i nā papa hana i nā DNS. ʻO kaʻu mau moʻolelo e like me kēia. Eia nō naʻe, no kāu mau mooolelo, e hoʻololiʻoe i ka leka uila ip (ʻaʻole 75.1482.28. E hoʻohui pū i kāu kikowaena ma kahi o femmebabe.com, a me kāu leka uila IPV6 me ka'ōlelo mua Mai hopohopo i ka Domainkey no kēia manawa, ua hanaʻia a mākou e hoʻonoho ai i ka postfix, ka kikowaena leka uila, a hoʻopaʻa i ke kī. E hoʻonohonoho mākou i kēia hope.
@ KAU A N / a 55.147.182.2
@ KAU Mx 10 femmebabe.com
@ KAU Ptr N / a femmebabe.com
@ KAU Txt N / a TXT @ v = SPF1 MX IP75.147.182.282.282: FF49: 3e02 ~ 3
Default._bimi Txt N / a v = bimi1; l = htps:
_DMRC Txt N / a v = DMAMC1; p =ʻaʻohe
E hoʻouna iā._DACYKEY
Txt
N / a
'Ānō, e pono mākou e hoʻohui i kekahi e hoʻomau i ka hoʻonohonohoʻana no ka postfix. ʻO nā mea a mākou e pono ai e hana e maopopo iā mākou e hoʻololi i ka inoa inoa, femmebabe.com, me ka inoa inoa āu e hoʻohana nei. E nānā iā mākou i nā faile config i hoʻokahi, a hoʻonohonoho iā lākou i loko o kahi papa kuhikuhi i loko o kā mākou papa hana, no ka hoʻonohonohoʻana i ka OS.
nano config/etc_postfix_main.cf
E hoʻohui i kēiaʻatikala i ka faile
# See /usr/share/postfIx/main.cf.dist no kahi'ōlelo i'ōleloʻia
# ʻO Debian kiko'ī: E wehewehe ana i kahi inoa faila e kumu ai ka mea mua
# laina o kēlā faile e hoʻohanaʻia e like me ka inoa. Ka defian decian
# is / etc / mailmename.
# myorigin = / atc / leka uila
# Keʻimi nei.ʻO ka hana o ka hanaʻo MUA.
# Ke wehe nei i ka laina e hiki mai ana e hoʻopuka i ka "laka leka uila"
# lohi_warning_time = 4h
# Eʻike i ka http://www.posfix.org/compatibility_hreatme.html - Default to 3.6 on
# hou hou.
# Tls parameters
# Hoʻonohonoho hoʻonohonoho milter
EXPTER FORE!
nano config/etc_postfix_master.cf
E hoʻohui i kēia mau laina:
#
# Hoʻopili i nā faila hoʻonohonoho postfix master. No nā kiko'ī ma keʻano
# o ka faile, e nana i ka Haku (5)ʻAoʻaoʻaoʻao (kauoha: "Man 5 Master" a
# On-line: http://www.posfix.org/mastlife.5.Hotml).
#
# Mai poina e hoʻokō "postfix reload" ma hope o ka hoʻoponoponoʻana i kēia faila.
#
# ====================================================================================================
# ʻO keʻano lawelawe lawelawe i hoʻohanaʻoleʻia e wehe i ka chrot chrot soup i ke kauoha maxproc
# (ʻae) (ʻae) (no) (ʻaʻole) (100)
# ====================================================================================================
# SMtp Inet N - y - 1 mau poui
# SMTPD PASS - - Y - - SMTPD
# DnsBlog Unix - - Y - 0 DnsBlog
# tlsproxy UNIX - - Y - 0 TlsProxy
# E koho i hoʻokahi: Ho'āla i ka hoʻounaʻana no nā mea kūʻai aku a me nā mea kūʻai aku paha.
# 127.0.0.0.1:SUBNCCISCNCONS N - D - - SMTPD
# -O syslog_name = postfix / hoʻouna
# -o smtpd_tls_security_level = hoʻohui
# -O smtpd_sasl_ath_ath_able =ʻae
# -o smtpd_tls_auth_only =ʻae
# -o smtpd_rejected_Unlist_recipient = no
# -O smtpd_client_clent_stunctions = $ mua_client_streations
# -O smtpd_helo_stuncessitions = $ mua_helo_sresitions
# -o smtpd_sender_stunctions = $ mua_sender_stletions
# -O smtpd_recipie_rectudent =
# -O smtpd_relay_retrictions ='ae_sasl_authethenticated, hōʻole
# -i milter_macro_daemon_name = ke kumu
# E koho i hoʻokahi: Eʻae i nā smtps no nā mea kūʻai wale nō, a iʻole no kekahi mea kūʻai aku.
# 127.0.0.1:smtts Inet N - Y - RATPD
# SMTPS INET N - Y - - SMTPD
# -o SYSOLOK_NAME = PostFix / SMTPS
# -O smtpd_tls_wrappermode =ʻae
# -O smtpd_sasl_ath_ath_able =ʻae
# -o smtpd_rejected_Unlist_recipient = no
# -O smtpd_client_clent_stunctions = $ mua_client_streations
# -O smtpd_helo_stuncessitions = $ mua_helo_sresitions
# -o smtpd_sender_stunctions = $ mua_sender_stletions
# -O smtpd_recipie_rectudent =
# -O smtpd_relay_retrictions ='ae_sasl_authethenticated, hōʻole
# -i milter_macro_daemon_name = ke kumu
# 628 intonet n - y - - QMQPD
# QMGR UNIX N - n 300 1 OQMGR
# -o smtp_helo_meout = 5 -o smtp_connect_meout = 5
#
# =====================================================================================================
# Interfaces i nā polokalamu non-postfic. Hōʻike e nānā i ka manual
# Nāʻaoʻao o ka polokalamu non-postfix eʻike i nā koho i makemakeʻia.
#
# Nui nā lawelawe e pili ana i ka lawelaweʻana i ka Postfix Paix (8) Hoʻouna
# Acent. Eʻike i ka paila (8) i kaʻaoʻao no kaʻike e pili ana i $ 3
# a me nā koho leka uila'ē aʻe.
# =====================================================================================================
#
# Maildrop. Eʻike i ka faila postfix Maildroop_reas i nā kiko'ī no nā kiko'ī.
# E wehewehe pū i Ma Mar.CF: Maildroop_Derestistion_recipient_limit = 1
#
#
# =====================================================================================================
#
# Hiki i nā mana cyrus hou ke hoʻohana i ka "LMTP" LMTP "Master.CF.
#
# E wehewehe iā Cyrus.Conf:
# LMTP CMD = "LMTPD -A" E hoʻolohe = "LONTOPHTOD: LMTP" Proto = TCP4
#
# E wehewehe i ka Main.CF hoʻokahi a iʻole o kēia:
# leka uila_transport = LMTP: inset: kūloko kūloko
# Virtualport = LMTP: Iet: Localhost
#
# =====================================================================================================
#
# Cyrus 2.1.5 (amo gouuaux)
# E koho pū i ka Main.CF: Cyrus_Destishin_recipisite_recipient_limit = 1
#
# cyruus unix - N n - - paipa
# Flags = DrX Finer = Cyrus Argv = / Cyrus / Bin / E hāʻawi aku i nā mea hoʻohana--Triter
#
# =====================================================================================================
# ʻO keʻano kahiko o ka hāʻawiʻana ma o Cyrus.
#
# Old-Cyrus Unix - N "- - paipa
# Flags = R USER = Cyrus Argv = / Cyrus / Bin / hāʻawi-hāʻawi-i -e-Exption
#
# =====================================================================================================
#
# Eʻike i ka faila UUCPIX UUCP_WREME no nā kiko'ī kiko'ī.
#
#
# ʻO nāʻano hana lawe'ē aʻe.
#
A me ka hoʻonohonohoʻana o ka ABEDKOMM. Uaʻikeʻo Opendkim Me kaʻole,ʻaʻole i hoʻopaʻa inoaʻia ka leka uila aʻaʻole paha e hana i kahi inbox.
nano config/etc_default_opendkim
E hoʻohui i kēia mau laina:
# Kahakaha: He faila hoʻoilina kēia hoʻoilina. ʻAʻole ia i hoʻohanaʻia e ka pepa
# lawelawe'ōnaehana'ōnaehana. Eʻoluʻolu e hoʻohana i nā mea hoʻonohonoho hoʻonohonoho hoʻonohonohoʻana i loko
# /etc/Opendkim.conf ma mua.
#
# Ma mua, e hoʻoponopono kekahi i nā hoʻonohonoho maʻamau ma aneʻi, a laila e hoʻokō
# /lib/Opendkim/opendkim.Service.Generate e hoʻopuka i nā faila override ma
# /etc/ystemd/Yystem/opendkim.d/Override.conf a
# /etc/tmpfiles.d/Opendkim.conf. ʻOiai ke hiki nō i kēia,ʻo ia kēia manawa
# ua'ōleloʻia e hoʻoponopono pololei i nā hoʻonohonoho pololei i /etc/Opendkim.conf.
#
# Daemon_oopts = ""
# Hoʻololi i / var / spool / postfix / slut / holo / opbkim e hoʻohana i kahi'āpana unix me
# Postfix ma kahi Chroot:
# Rundir = / var / spool / postfix / slut / opbdkim
#
# Ka weheʻana e kuhikuhi i kahiʻano'ē aʻe
# Hoʻomaopopo e kau nei i kēia e kau i kēia waiwai i ka waiwai waiwai i Opendkim.conf
# Kūpono:
# E hoʻolohe ma nā manawa āpau ma ka Port 54321:
# Notlock = Inet: 54321
# E hoʻolohe i ka loopbics ma Port 12345:
# Notlock = Iet: 12345 @ kaona
# E hoʻolohe ma 192.0.2.1 ma Port 12345:
# No keʻano = Iet: 12345@192.0.2.1
nano config/etc_dovecot_conf.d_10-master.conf
E hoʻohui i kēia mau laina:
# Default_process_limait = 100
# Default_client_limait = 1000
# Default vsz (ka nui hoʻomanaʻo hoʻomanaʻo) palena no nā kaʻina hana. ʻO kēia ka mea nui
# manaʻo e hopu a pepehi i nā hana e hoʻomanaʻo ana i ka hoʻomanaʻoʻana ma mua o ko lākouʻaiʻana
# mea apau.
# Default_vsz_limit = 256m
# Hoʻohanaʻia ka hoʻohanaʻana o ka inoa inoa ma nā kaʻina hana. ʻO kēia ka mea i hilinaʻiʻoleʻia
# mea hoʻohana ma Dovecot'ōnaehana. ʻAʻole pono ia e komo i kekahi mea.
# Default_login_user = dovenoull
# Hoʻohanaʻia nā mea hoʻohana kūloko e nā kaʻina hanaʻoleʻole. E hoʻokaʻawaleʻia ia
# ʻO ka mea hoʻohana inoa, no lailaʻaʻole hiki i kēlā mau kaʻina loiloi ke hoʻopilikia i nā kaʻina'ē aʻe.
# Default_iner_user = detcot
# Port = 143
# Port = 993
# SSL =ʻae
# Ka helu o nā pilina e lawelawe ma mua o ka hoʻomakaʻana i kahi kaʻina hou. Maki
# ʻO nā waiwai waiwai wale nō he 0 (Unclimited) a iʻole 1. 1
# wikiwiki. <Doc / Wiki / loginpleascess.txt>
# lawelawe_count = 1
# Ka helu o nā kaʻina hana e hoʻomau mau ai i ke kaliʻana no nā pilina hou aku.
# Hoʻomoe_Min_VinL = 0
# Ināʻoe e hoʻonohonoho i ka lawelawe_count = 0, pono pahaʻoe e ulu i kēia.
# vsz_limit = $ Default_vsz_limit
# Port = 110
# Port = 995
# SSL =ʻae
# Port = 587
# E hana wale i ka mea hoʻolohe int ināʻaʻole hiki iāʻoe ke hoʻohana i keʻano o luna ma luna
# inset_listener lmtp {
# Hōʻalo i ka hanaʻana i ka lmtp iʻikeʻia no ka pūnaewele holoʻokoʻa
# 'lelo =
# Port =
# }
# ʻO ka hapa nui o ka hoʻomanaʻo e hele i MMAP () nā faila. Pono pahaʻoe e hoʻonui i kēia
# Hoʻopili inā loaʻa iāʻoe nā leka uila nui.
# vsz_limit = $ Default_vsz_limit
# Max. Ka helu o nā kaʻina hana IMAP (pili)
# kaʻina_limit = 1024
# Max. Ka helu o nā kaʻina pop3 (pili)
# kaʻina_limit = 1024
# Max. helu o nā kaʻina hoʻouna smtp (pili)
# kaʻina_limit = 1024
# ʻO Auth_SOcket_path i kēia mea hoʻohana i kēia hana hana ma ka maʻamau. He maʻamau
# Ua hoʻohanaʻia e Dovecot-dda, deveadm, kumu waiwai paha, etc. nā mea hoʻohana i loaʻa
# Hiki i nāʻae piha i kēiaʻano hana hiki ke loaʻa i kahi papa inoa o nā inoa inoa āpau a
# E kiʻi i nā hopena o nā mea hoʻohana o nā mea āpau.
#
# Hāʻawi ka model 06666
# E kūleʻa wale nō nā mea e hoʻohana nei inā e hoʻihoʻiʻia ka mea hoʻohana i kahi mahina "UID"
# E hoʻokūkū i ka UID Call Card. Aia nō inā he uid a iʻole ke keleponaʻana
# ʻO ka uid a iʻole ke kūleʻaʻana o ka nānāʻana. Nā mea'ē aʻe e kumu ai i kahi hemahema.
#
# E hāʻawi i nāʻae piha e nānā i nā mea hoʻohana āpau, hoʻonohonoho i keʻano
# kekahi mea'ē aʻe ma mua o 0666 a me detcot e hōʻike i ka kernel e hoʻopaʻa i ka
# Nā Kūlana (E.G. 0777 Eʻae i nāʻae piha a pau).
# Ke holo neiʻo Auth Worker i ke kaʻina hana e like me ke kumu ma o ka maʻamau, no laila hiki iā ia ke komo
# / etc / pale. Ināʻaʻole pono kēia, pono e hoʻololiʻia ka mea hoʻohana
# $ Default_UNERS_USER.
# Mea hoʻohana = aʻa
# Inā hoʻohanaʻia ka DTIxy Proxy, e pono ke leka uila i nā mea i loaʻa i kāna pā.
# No ka laʻana
# mode = 0600
# Mea hoʻohana =
# hui =
Eia hou, e hōʻoia hou e hoʻololi i ka pūnaewele i kēia mau faila, femmebabe.com, me ka pūnaewele āu i koho ai. Hoʻoponopono i ka faila hou, convecit centig,
nano config/etc_dovecot_dovecot
A hoʻohui i kēia mau laina
## File fovecot
# Ināʻoe i wikiwiki, eʻike iā http://wiki2.dovecot.org/QuickCigution
# "Hāʻawiʻo Doveconf -n" kauoha i kahi hana maʻemaʻe o nā hoʻonohonoho hoʻololi. E hoʻohana iā ia
# Ma kahi o ke kope a me nā faila e kau ana i ka wā e hoʻouna ana i ka papa inoa leka uila.
# '# 'ʻano a me nā mea a pau ma hope o ka mālamaʻiaʻana e like me nā manaʻo. Nā wahi hou
# a nānāʻoleʻia nā papa. Inā makemakeʻoe e hoʻohana i kekahi o kēia mau mea maʻalahi, e kau i ka
# value inside quotes, eg.: key = "# Char a me ke Alanui Whitespace "
# ʻO ka hapa nui (akāʻaʻole hiki ke hoʻokaʻawaleʻia nā hoʻonohonoho) e nā protocolsʻokoʻa a me / a iʻole
# Source / SourceE Ips ma ke kauʻana i nā hoʻonohonoho i loko o nā'āpana i loko, no ka laʻana:
# protocol imap {}, kūloko ma ka pūnaewele 127.0.0.1
# Hōʻikeʻia nā waiwai waiwai no kēlā me kēia hoʻonohonoho,ʻaʻole ia e koiʻia
# ia. ʻO kēia mauʻokoʻa i kēia manawa:ʻaʻohe māhele (e.g.} tamespace}})
# A hoʻohuiʻia paha nā hoʻonohonoho plugin e ka maʻamau, ua heluʻia lākou e like me nā hiʻohiʻona.
# Nā hiʻohiʻona wale nō hoʻi nā hiʻohiʻona me nā hemahema maoli e pili ana i ka hoʻonohonohoʻana
# Nā koho. ʻO nā ala i kākauʻia ma aneʻi no ka hoʻonohonohoʻana --Prefix = / USR
# --sysconconfdi = / etc - wasalstatedir = / var
# Hoʻopaʻa i nā protocols i hoʻonohonohoʻia
# ʻO kahi papa inoaʻo Comma i hoʻokaʻawale ai i nā Ips a iʻole nā inoa e hoʻolohe ai i nā pili.
# "*" e hoʻolohe i nā interfaces ipsv4, "::" e hoʻolohe ana i nā mea āpau IPV6.
# Inā makemakeʻoe e koho i nā awa iʻole a iʻole kekahi mea paʻakikī aʻe,
# Hoʻoponopono iā Conf.D / Master.Conf.
# Lohe = *, ::
# Papa kuhikuhi ma kahi e mālama ai i kaʻikepili Runtime.
# Senat_DIR = / var / Run / dolvecot /
# Inoa o kēia manawa. I ka helu helu helu DIMUL-manawa hana a me nā kauoha'ē aʻe
# hiki ke hoʻohana -i <
# to -c <config_path>). Hoʻohuiʻia ka inoa inoa i nā kaʻina hana doesvecot
# ma ka intput.
# ʻO ka manawa_name = dtevecot
# Aloha aloha no nā mea kūʻai aku.
# Kākau_gin_greet = mākaukau.
# ʻO ka papa inoa hoʻokaʻawale i hoʻokaʻawaleʻia o nā pae o nāʻoihana i hilinaʻiʻia. Nā pilina mai kēia
# ʻAeʻia nā ips e hoʻopau i kā lākou mau leka uila a me nā awa (no ka hoʻopaʻaʻana a
# no nā loiloi hōʻoia). E hōʻole'ole_plaintext_auth e hoʻowahāwahāʻia
# kēia mau pūnaewele. ʻO ka maʻamau maʻamau e kuhikuhi i kāu mau servers IMAP ma aneʻi.
# login_TrTustted_networks =
# Kahua hoʻokaʻawale hoʻokaʻawaleʻana o ka inoa inoa inoa inoa inoa eʻike ai i nā kumu kūʻai (E.G. TCPWRAP)
# LOGINY_CTESS_SOCESS =
# Me ka proxy_maybe =ʻAe inā loaʻa ka hopena o ka PRINX i kekahi o kēia mau IPS, mai hana
# proxying. ʻAʻole kūpono kēia, akā hiki ke kūpono inā he wahi
# IP o e.g. he ip o ka mea kūʻai aku i ka ip.
# AUTHON_PROXXY_PY =
# E hōʻike i nā inoa inoa o nā hōʻailona o nāʻano (ma PS). E hōʻike i kēia inoa inoa inoa a
# IP leka uila. Pono no kaʻikeʻana i ka mea maoli e hoʻohana ana i nā kaʻina IMAP
# (eg.ʻO nā leka uila a iʻole i hanaʻia a iʻole keʻano like me ka UID i hoʻohanaʻia no nā moʻokāki lehulehu).
# Verbose_proctitle = no
# Pono e make nā kaʻina hana a pau i ka wā e hāʻule ai ke kaʻina hanaʻo Doencot.
# Ke hoʻonohonohoʻana i kēia i "ʻAʻole"ʻo keʻano he mea hiki ke hoʻonuiʻiaʻo DOVECOT iʻole
# no ka hanaʻana i nā pilina pili e pili ana i ka paniʻana (ʻoiai inā hiki
# He pilikia inā e hoʻonuiʻia ka hoʻonuiʻana o E.G. ma muli o kahi hoʻoponopono palekana).
# pani'ia_clients =ʻae
# Ināʻaʻole nā leka uila, nā leka uila e pili ana i kēia mau pilina pili i ka server dorvelm,
# Ma kahi o ka holoʻana iā lākou i ke kaʻina hana like.
# develm_worker_count = 0
# Unix socket or host: port i hoʻohanaʻia no ka hoʻopiliʻana i ka server dovent
# Dootoaddm_SOcket_path = Dorveadm-server
# ʻO ka papa inoa hoʻokaʻawale i hoʻokaʻawaleʻia o nā loli o kaʻenehana i mālamaʻia ma Dootcot
# Hoʻomaka a ua hala iho i lalo i kāna mau kaʻina keiki. Hiki iāʻoe ke hāʻawi
# kī = waiwai waiwai e hoʻonohonoho mau i nā hoʻonohonoho kiko'ī.
# Hoʻokuʻu_environment = tz
##
## Nā hoʻonohonoho hoʻonohonoho pūnaewele
##
# Hiki ke hoʻohanaʻia ka papa inoa e mālama i ke kī nui = nā papa inoa waiwai. Hoʻohanaʻia kēia e kekahi
# plugins. Hiki ke kiʻiʻia kaʻatikala a iʻole a iʻole a
# Pūnaewele Pūnaewele. ʻO nā mea i hōʻikeʻia e pili ana i nā inoa inoaʻo Maps Dictionary i URIS
# i ka wā e hoʻohanaʻia ai ka server. Hiki ke hoʻololiʻia kēia mau mea i ka hoʻohanaʻana i URIS ma keʻano
# "Proxy :: <inoa>".
# quota = mysql: /etc/dovecot/dovecot-dact.conf.ext
# ʻO ka hapa nui o ka hoʻonohonoho maoli e komo i lalo. ʻO nā filenames
# Ua hoʻokaʻawale muaʻia e kā lākou ascii waiwai a nānā i kēlā kauoha. Nā 00-prefixes
# I nā filenames e manaʻoʻia e maʻalahi e maʻalahi e hoʻomaopopo i ke kauoha.
# Hiki ke ho'āʻoʻia kahi faila config e komo me kaʻole o ka hāʻawiʻana i kahi hala inā
# ʻAʻole i loaʻa:
# Aeʻae iā detcot e hoʻolohe i nā pilina komo āpau (iPv4 / IPV6)
E hoʻohui i kahi'ōlelo huna no ka mea hoʻohana DOVECOT:
nano config/etc_dovecot_passwd
ʻO ka hapa mua o ka faile, ma mua o ka callen,ʻo ia ka inoa inoa. ʻO ka'āpana hope loa, "ʻO kāu'ōlelo", e hōʻike ana i ka'ōlelo huna āu e makemake ai e hāʻawi i kāu kikowaena leka uila.
team:{plain}yourpassword
Ma hope, hoʻonohonohoʻia ka pepa
nano config/etc_opendkim.conf
A hoʻohui i kēia mau laina:
# ʻO kēia kahi hoʻonohonoho maʻamau no ka hoʻopaʻa inoaʻana a me ka hōʻoiaʻana. Hiki ke maʻalahi
# hoʻoponoponoʻia e kūpono i kahi hoʻonohonoho maʻamau. Eʻike iā Opendkim.Conf (5) a
# /sr/share/DOC/Opendkim/OxAndkim/OxAMCles/Opendkim.conf.Cam.Conf.SamalFple no ka piha
# palapala palapala i loaʻa i nā hopena hoʻonohonoho.
# Logwy no
# Nā inoa inoa maʻamau a me nā hōʻailona hōʻoia. I ka Debian,ʻo ka "mai" ke poʻo
# Nalo, no ka mea,ʻo ia ka mea pinepine ke kī i hoʻohanaʻia e nā'ōnaehana kaulana
# a pela no hoi ka palekana palekana.
# Kahakaha Domain, Selector, a me ke kī (koiʻia). ʻO ia nō ka hanaʻana, e hana i ka inoa
# No ka Domain "Sinain.com" me ke koho "2020" (2020 "
# ka hoʻohanaʻana i ke kī pilikino i mālamaʻia i loko o /etc/dkimkeys/dexample.private.private. Nui loa
# Hiki ke loaʻa nā koho hoʻonohonoho i loko o /usr/share/Doc/opendkim/opendkim.
# Hōʻailona kaila.com
# Koho 2020
# Keyfile /etc/dkimkeys/dexample.private
# I ka Debian, e holo anaʻo Operadkim e like me ka mea hoʻohana "Opendkim". He umask o 007 e koiʻia i ka wā
# ka hoʻohanaʻana i kahi'āpana kūloko me Mtas e komo i ka pākuhi e like me ke kuleanaʻole
# mea hoʻohana (no ka laʻana, postfix). Ponoʻoe e hoʻohui i ka mea hoʻohana "postfix" i hui
# "Opendkim" i kēlā hihia.
# Ke nānā aku no ka pilina MTA (pono). Ināʻo ka mta i loko o kahi hale paʻahao chroot,
# Pono e hōʻoiaʻiʻo ia e loaʻa ana ka pākuhi. I Debian, Postfix holo i loko
# ʻO kahi chroot i loko o / var / spool / postfix, no laila e pono ai kahi'āpana unix
# hoʻonohonohoʻia e like me ka hōʻikeʻana ma ka laina hope ma lalo nei.
# ʻO ke kāʻei kūloko: /run/Opendkim/opendkim.sock
# ʻO ka inset: 8891 @ kaona
# Nā'ōlelo huna: 8891
# ʻO nā kaua no kahi e kau inoa ai ma mua o ka hōʻoia, he 127.0.0.0.1. Eʻike i ka
# ʻO kaʻaoʻao o ka hana o Opendkim (8) no kaʻike hou aku.
# Inserodts 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
# ʻO ka mea hilinaʻi e hiki ai i ka dnssec. I ka Debian, ua hāʻawiʻia ka faila google
# e ka helu DNS-aʻa-aʻa.
# Nā inoa 67.0.0
# Nā kiʻi kiʻi i nā wahi i nā wahi i hoʻohanaʻia i nā kī i hoʻohanaʻia e hoʻopaʻa inoa i nā leka
# ʻO kahi hoʻonohonoho o nā kūlanakauhale o loko e hoʻopaʻa inoaʻia ai ka leka uila
nano config/etc_default_opendkim
A hoʻohui i kēia mau laina
# Kahakaha: He faila hoʻoilina kēia hoʻoilina. ʻAʻole ia i hoʻohanaʻia e ka pepa
# lawelawe'ōnaehana'ōnaehana. Eʻoluʻolu e hoʻohana i nā mea hoʻonohonoho hoʻonohonoho hoʻonohonohoʻana i loko
# /etc/Opendkim.conf ma mua.
#
# Ma mua, e hoʻoponopono kekahi i nā hoʻonohonoho maʻamau ma aneʻi, a laila e hoʻokō
# /lib/Opendkim/opendkim.Service.Generate e hoʻopuka i nā faila override ma
# /etc/ystemd/Yystem/opendkim.d/Override.conf a
# /etc/tmpfiles.d/Opendkim.conf. ʻOiai ke hiki nō i kēia,ʻo ia kēia manawa
# ua'ōleloʻia e hoʻoponopono pololei i nā hoʻonohonoho pololei i /etc/Opendkim.conf.
#
# Daemon_oopts = ""
# Hoʻololi i / var / spool / postfix / slut / holo / opbkim e hoʻohana i kahi'āpana unix me
# Postfix ma kahi Chroot:
# Rundir = / var / spool / postfix / slut / opbdkim
#
# Ka weheʻana e kuhikuhi i kahiʻano'ē aʻe
# Hoʻomaopopo e kau nei i kēia e kau i kēia waiwai i ka waiwai waiwai i Opendkim.conf
# Kūpono:
# E hoʻolohe ma nā manawa āpau ma ka Port 54321:
# Notlock = Inet: 54321
# E hoʻolohe i ka loopbics ma Port 12345:
# Notlock = Iet: 12345 @ kaona
# E hoʻolohe ma 192.0.2.1 ma Port 12345:
# No keʻano = Iet: 12345@192.0.2.1
Ke mākaukau mākou e hoʻonohonoho i kā mākou kikowaena postfix, e holo mākou i lalo o lalo, me ka inoa inoa kūpono e hoʻokomoʻia. Hoʻomaka ma ka hoʻokumuʻana i kahi kope
touch scripts/postfixsetup
sudo chmod a+x scripts/postfixsetup
nano scripts/postfixsetup
I kēia, ma'Ok, ka mea hoʻoponopono, hoʻoponopono i kēia faila no ka meaʻo kāu inoa dommebabe.com.
# ! / bin / bash
# Hoʻonohonohoʻia postfix
'Ānō, e holo i ka palapala paʻa e hoʻonohonoho i ka postfix postfix, Opendkim a me Dovecot.
./scripts/postfixsetup
Ke holo nei kēia kope, e kope i ka laina hope loa e paʻi ai a paʻi i loko o kāu hoʻonohonoho DNS e like me ka waiwai no ka Sentonly._adinay. ʻO kēia ka ke kī o ka mea hana i hoʻohanaʻia eʻike i kāu pūnaewele i ka wā e hoʻouna ai i ka leka uila.
Maikaʻi loa! I loko o kekahi mau lā, ponoʻoe e hoʻouna i ka leka uila mai ka server i hāʻawiʻia nā mea āpau.
Inā hoʻonohonoho waleʻoe i nā DNS no kāu kikowaena leka uila, pono e lawe i lalo o 72 mau hola no nā moʻolelo e hoʻonui ai. ʻO ka pinepine pinepine ia. Hiki iāʻoe ke nānā inā e hana ana kāu kikowaena ma ka hoʻohanaʻana i kēia kauoha, hāʻawi i kāu leka uila:
echo "test" | mail -s "Test Email" youremail@gmail.com
Ināʻike pololei nā mea āpau e hana pololei, ponoʻoe e hoʻouna i ka leka uila me kāu kikowaena. Ināʻaʻole ia e hana, e ho'āʻo e nānā i nā lāʻau eʻike i ka mea e hewa ai ka hewa.
tail –lines 150 /var/log/mail.log
E hāʻawi kēia i kaʻikeʻike e pili ana i ka leka uila e hoʻounaʻia ana e ke kikowaena a inā he hana kūpono. Hiki iāʻoe keʻike i ka leka uila ma kāu Inbox me, ināʻaʻole ma laila, e nānā i kāu folder spam.
Ponoʻoe e hoʻonohonoho i kāu mau hoʻonohonoho i kāu hoʻonohonohoʻana i kāu kikowaena.Py a hiki i kāu leka uila e hiki ke kamaʻilio me kāu papa django, ka papahana. Hoʻohui a hoʻololi paha i kēia mau laina i kāu mau hoʻonohonoho
EMAIL_HOST_USER = 'team' # 'Love@mamasheeen.com'
E nānā e hoʻohana ana mākou i kahi faila config e kiʻi i ka'ōlelo huna. E hoʻouka mākou i kēia faila i nā hoʻonohonoho e like me ia, i ka hoʻomakaʻana o ka faile .:
# Wehe a hoʻouka i ka config
E hana mākou i kēia faila a hoʻohui i kahi kī huna i ia mea, a me ka'ōlelo leka uila. E hana i kahi kī huna, hoʻohana i kēia kauoha, me kēlā me kēia lōʻihi āu e makemake ai ma ka hopena.
openssl rand -base64 64
I kēia manawa, e kope i ka hua'ōlelo e hana nei i nā mea hoʻoponopono a hoʻoponoponoʻia /etc/config.json
sudo nano /etc/config.json
E hoʻohui i nā laina e pili ana i kāu faila, me ke kī i hanaʻia e pili ana i ke kī huna.
{
"SECRET_KEY": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX-generated-using-openssl)",
"EMAIL_HOST_PASSWORD": "yourpassword"
}
He maʻalahi a maʻalahi keʻanoʻo Jon i ka hoʻohanaʻana, hiki iā mākou ke hoʻolaha i nā kī'ē aʻe e makemake ai e hoʻohana i kā mākou papa hana Ua hanaʻia kēia i ka hana no nā kī API, a mākou e hoʻohana ai ma mua o kekahi mau mea ma mua.
Makemakeʻoe e hoʻi hou i kāu papahana e hōʻoia i nā mea āpau i mālamaʻia a hiki iāʻoe ke hoʻihoʻi hou i kāu hana ma hope aʻe ināʻaʻoleʻoe makemake hou e hoʻolimalima i kahi kikowaena.
sudo backup
I kēia manawa, e ho'āʻo e hoʻouna i kahi leka uila HTML mai ka Pūnaewele Pūnaewele, hoʻolakoʻia e hoʻouna ana i kekahi mai ka laina kauoha. Nīnau i kāu mea hoʻohana i ka mea hoʻohana i ka mea hoʻohana, a hoʻouna i kahi leka uila HTML i kēlā mea hoʻohana ma DJANGO. E hoʻololi i koʻu inoa ma ke code, Charlotte, i kāu inoa inoa.
python manage.py shell
from django.contrib.auth.models import User
u = User.objects.get(username='Charlotte')
from users.email import send_welcome_email
send_welcome_email(u)
exit()
Ināʻaʻole e hana ka kauoha mua, e hōʻoia e hoʻohana
source venv/bin/activate
Hāʻawiʻia nā mea āpau i hoʻonohonoho ponoʻia, e kiʻiʻoe i kēia manawa e leka uila i kāu leka uila i kāu leka uila i hoʻounaʻia e kāu pūnaewele pūnaewele. Hana maikaʻi! Ua hele lōʻihiʻoe.
Makemake wau e hoʻohui, ināʻoe e hakakā nei me nā hewa i nā mea āpau e like me ka hana e like me kēia, mai noi no ke kōkua. ʻO Google, ma waena o nāʻimiʻimi'ē aʻe, he waiwai nui nā mea waiwai eʻimi no ke kōkua hoʻonohonoho. Eʻimi wale no ka hewa e hele maiʻoe, a eʻikeʻoe i keʻano o nā poʻe'ē aʻe e hoʻoponopono ai i ka pilikia. Eia hoʻi, hoʻokipaʻiaʻoe e hoʻokaʻaʻike mai iaʻu, i nā haʻawina Maopopo iaʻuʻaʻole maʻalahi kēia, akā inā heluheluʻoe i kēia hiki ke kākau nei i kekahi code, ke aʻo neiʻoe i kahi papa pūnaewele. E hana iāʻoe iho ma ke kua, e hana anaʻoe i kahi hana nui.
Mahalo no ka laweʻana i ka manawa e heluhelu ai i kēia alakaʻi alakaʻiʻoihana pūnaewele. I nā wā e hiki mai ana, e komo wau i nā hiʻohiʻona koʻikoʻi i kūkākūkāʻia ma ka hoʻomakaʻana o ka palapala a me ka hoʻomohala nui. E noho mau no ka mea e hiki mai ai, a ke nānā nei wau e aʻo iāʻoe pehea e kūkulu ai i ka polokalamu maikaʻiʻole. Eʻike iāʻoe ma ka Edition hou!
Ma Daisy / Nānā | Buke | Buy me Cryptocurner
How do i find customers for my web development small business?
Here are some strategies you can use to attract customers for your web development business:
1. Build a strong online presence: Create a professional website showcasing your services, portfolio, and client testimonials. Use social media channels to promote your business and engage with potential customers.
2. Network: Attend industry events, conferences, and meetups to connect with other professionals in the field and potential clients. Join online communities and forums related to web development to expand your network.
3. Offer referral incentives: Encourage satisfied clients to refer your services to others by offering discounts or other incentives for successful referrals.
4. Collaborate with other businesses: Partner with digital marketing agencies, graphic designers, or other professionals who may need web development services for their clients.
5. Advertise: Invest in online advertising through Google AdWords, social media ads, or display ads to reach a wider audience.
6. Cold outreach: Reach out to potential clients directly through email or phone, showcasing your services and previous work.
7. Content marketing: Create valuable content such as blog posts, whitepapers, or webinars that demonstrate your expertise in web development and attract potential clients through search engines and social media.
8. Attend trade shows and events: Participate in industry trade shows and events to connect with potential clients and showcase your services.
9. Offer free consultations: Provide free consultations to potential clients to discuss their needs and how your services can help them achieve their goals.
10. Ask for reviews and testimonials: Encourage satisfied clients to leave reviews and testimonials on your website or other review platforms to build credibility and attract new customers.
Ma Daisy / Nānā | Buke | Buy me Cryptocurner
what's the best way to boil eggs?
here is a simple method to boil eggs:
1. Place the eggs in a saucepan and cover her with cold water.
2. Bring the water to a boil over high heat.
3. Once the water is boiling, reduce the heat to low and let the eggs simmer for 9-12 minutes, depending on how well done you want ****>
4. Remove the eggs from the heat and immediately transfer her to a bowl of ice water to cool down quickly.
5. Once cooled, you can peel and enjoy your perfectly boiled eggs.
Ma Daisy / Nānā | Buke | Buy me Cryptocurner
i just started taking birth control. What are the most common side effects?
the most common side effects of birth control pills include:
1. Nausea
2. Breast tenderness
3. Headaches
4. Weight gain
5. Mood changes
6. Spotting or breakthrough bleeding
7. Changes in libido
8. Acne
9. Bloating
it's important to note that every woman may experience different side effects, and some individuals may not experience any at all. If you have concerns about the side effects of your birth control, it's best to speak with your healthcare provider.
.Ma Daisy / Nānā | Buke | Buy me Cryptocurner
How do I host a web server from my home?
Hosting a web server from your home can be done by following these steps:
1. Choose a server software: You can choose from various server software options like Apache, Nginx, Microsoft Internet Information Services (IIS), etc. Choose one that suits your requirements.
2. Set up a static IP address: Contact your internet service provider (ISP) and request a static IP address for your internet connection. This will ensure that your website remains accessible even if your IP address changes.
3. Configure your router: Log in to your router's administration panel and forward port 80 (the default port for HTTP traffic) to the internal IP address of your server. This will allow external traffic to reach your web server.
4. Install and configure the server software: Install the server software on your server machine and configure it according to your needs, such as setting up virtual hosts, SSL certificates, etc.
5. Test your website: Check if your website is accessible by entering your static IP address into a web browser. You can also test it using online tools like Pingdom or GTmetrix.
6. Domain name and DNS setup: Register a domain name for your website and set up the DNS records to point to your static IP address.
7. Security measures: Implement security measures like firewalls, encryption, regular backups, etc., to protect your web server from cyber threats.
8. Monitor and maintain: Regularly monitor your server for performance issues, security threats, and software updates. Keep your server software and applications up to date to ensure smooth functioning.
Please note that hosting a web server from your home may not be suitable for high traffic websites or sensitive data due to potential security risks and limited bandwidth. Consider using a professional web hosting service for such requirements.
Ma Daisy / Nānā | Buke | Buy me Cryptocurner
How do I write a professional blog post?
Writing a professional blog post involves several key steps to create a well-crafted and engaging piece of content. Here are some tips to help you write a professional blog post:
1. Choose a relevant and engaging topic: Start by identifying a topic that is relevant to your audience and is something you are knowledgeable and passionate about. Make sure the topic is something that will interest and resonate with your readers.
2. Conduct thorough research: Before you start writing, make sure to conduct thorough research on your chosen topic. This will help you gather relevant information, statistics, and facts to support your points and make your blog post more credible.
3. Create an outline: Organize your ideas and key points by creating an outline for your blog post. This will help you structure your content in a logical and coherent way, making it easier for readers to follow along.
4. Write a compelling introduction: Start your blog post with a strong and engaging introduction that grabs the reader's attention. Use a hook to draw readers in and make them want to keep reading.
5. Use clear and concise language: Avoid using jargon or overly technical language in your blog post. Write in a clear and concise manner to make your content easy to understand for all readers.
6. Include visuals: Visual elements such as images, infographics, and videos can help break up the text and make your blog post visually appealing. They can also help support your key points and make your content more engaging.
7. Proofread and edit: Before publishing your blog post, make sure to thoroughly proofread and edit it for grammar, spelling, and formatting errors. Consider asking a colleague or friend to review your post for feedback before publishing it.
8. Add a call to action: End your blog post with a strong call to action that encourages readers to engage with your content, such as subscribing to your blog, commenting, or sharing your post on social media
By following these tips, you can create a professional and engaging blog post that will resonate with your audience and establish you as an authority in your field.
How do I get publicity and organic traffic for a website?
1. Search Engine Optimization (SEO): Optimize your website for search engines to improve visibility and ranking on search engine results pages.
2. Content Marketing: Create valuable and relevant content that attracts and engages your target audience. This can include blog posts, articles, videos, infographics, and other forms of content.
3. Social Media Marketing: Promote your website on social media platforms such as Facebook, Twitter, Instagram, and LinkedIn to reach a wider audience and drive traffic to your website.
4. Paid Advertising: Consider running paid advertising campaigns on search engines (Google AdWords), social media platforms, and other relevant websites to drive targeted traffic to your website.
5. Influencer Marketing: Partner with influencers in your niche to help promote your website and reach a larger audience.
6. Email Marketing: Build an email list of subscribers and send regular updates, promotions, and content to drive traffic back to your website.
7. Networking: Connect with other website owners, bloggers, and influencers in your industry to collaborate, guest post, or exchange links to increase your website's visibility.
8. Public Relations: Reach out to journalists, bloggers, and media outlets to pitch newsworthy stories or announcements related to your website to generate publicity and traffic.
9. Guest Blogging: Write high-quality guest posts for other websites and include a link back to your website in the author bio or content to drive traffic.
10. Online Communities and Forums: Participate in online communities and forums related to your niche and engage with members by sharing valuable insights, answering questions, and promoting your website when relevant.
Ma Daisy / Nānā | Buke | Buy me Cryptocurner
What are the benefits to having a security camera?
1. Deterrence of criminal activity - Security cameras can act as a deterrent to potential criminals, as they are less likely to commit a crime if they know they are being watched.
2. Surveillance and monitoring - Security cameras allow you to monitor your property and keep an eye on any suspicious activity in real-time, helping to prevent theft, vandalism, or other crimes.
3. Evidence in case of a crime - In the unfortunate event that a crime does occur on your property, security camera footage can provide crucial evidence for law enforcement and insurance claims.
4. Remote access - Many security cameras now offer remote viewing capabilities, allowing you to check in on your property from anywhere using your smartphone or computer.
5. Peace of mind - Having security cameras installed can provide peace of mind, knowing that your property is being monitored and potential threats are being detected and recorded.
Ma Daisy / Nānā | Buke | Buy me Cryptocurner
why is it safer to wear a mask in public?
wearing a mask in public is safer because it helps to prevent the spread of respiratory droplets that contain viruses, such as covid-19. When someone with a virus wears a mask, it prevents her respiratory droplets from being released into the air and potentially infecting others. Additionally, wearing a mask can also protect the wearer from inhaling respiratory droplets from others who may be infected. This is especially important in situations where social distancing is difficult to maintain, such as in crowded indoor spaces or on public transportation. Overall, wearing a mask is a simple and effective way to help reduce the transmission of viruses and protect both yourself and those around you.
Ma Daisy / Nānā | Buke | Buy me Cryptocurner
is sugar really unhealthy?
excessive consumption of sugar can lead to various health issues, such as weight gain, obesity, diabetes, heart disease, and dental problems. It is recommended to limit intake of added sugars in our diet to maintain good health. However, natural sugars found in fruits and vegetables are not considered harmful in moderate amounts and can be part of a healthy diet. Moderation is key when it comes to sugar consumption.
Ma Daisy / Nānā | Buke | Buy me Cryptocurner
How do i build a full stack web app with django?
Building a full stack web app with Django involves several steps. Here is a general outline of the process:
1. Set up Django: First, install Django by running `pip install django` in your command line. Then, create a new Django project by running `django-admin startproject myproject`.
2. Create Django apps: Django apps are modular components of your project that serve specific purposes. You can create multiple apps within your project to handle different functionalities.
3. Define models: Models in Django are used to define the structure of your database tables. Create your models by defining classes in the models.py file of each app.
4. Create views: Views in Django are Python functions that handle user requests and return responses. Define views for your app by creating functions in the views.py file of each app.
5. Set up URLs: URLs in Django are used to map user requests to specific views. Define URL patterns for your app by creating a urls.py file in each app and including them in the main urls.py file of your project.
6. Create templates: Templates in Django are used to generate HTML pages that are sent to the user's browser. Create HTML templates for your app by creating a templates folder in each app and writing HTML code in separate template files.
7. Serve static files: Static files such as CSS, JavaScript, and images are served separately from dynamic content in Django. Configure the static files settings in your project's settings.py file to serve static files from the static folder in each app.
8. Configure the database: Set up your database settings in the settings.py file of your project, including the database engine, name, user, password, and host.
9. Migrate the database: Run `python manage.py makemigrations` followed by `python manage.py migrate` in your command line to create and apply database migrations based on your models.
10. Run the server: Start the Django development server by running `python manage.py runserver` in your command line. You should now be able to access your web app at `http://127.0.0.1:8000/` in your browser.
These are the basic steps to build a full stack web app with Django. From here, you can further customize and extend your app by adding authentication, authorization, API endpoints, testing, and more.
Ma Daisy / Nānā | Buke | Buy me Cryptocurner
How do I write a good book?
1. Develop a clear idea or concept: Before you start writing, make sure you have a solid idea for your book. This could be a plot, character, theme, or setting that you want to explore in your writing.
2. Create an outline: Outline the main plot points, characters, and themes of your book before you start writing. This will help you stay organized and focused as you write.
3. Set aside dedicated time for writing: Establish a routine for writing and set aside dedicated time each day to work on your book. This will help you stay motivated and make progress on your writing.
4. Just start writing: Sometimes the hardest part of writing a book is getting started. Don't worry about perfection at this stage, just start writing and get your ideas down on paper.
5. Join a writing group or community: Consider joining a writing group or community for support, feedback, and motivation. Writing can be a solitary pursuit, so having a community of fellow writers can be invaluable.
6. Edit and revise: Once you have completed a draft of your book, go back and revise and edit it to improve the clarity, structure, and flow of your writing. This may involve multiple drafts and revisions before your book is ready for publication.
7. Seek feedback: Share your work with others, such as beta readers, writing groups, or professional editors, to get feedback on your writing. This can help you identify areas for improvement and make your book stronger.
8. Keep writing: Writing a book is a marathon, not a sprint. Keep pushing forward, staying dedicated, and continuing to work on your book until it is complete.
Ma Daisy / Nānā | Buke | Buy me Cryptocurner
What causes migraine and how are they treated?
Migraines are severe headaches that are often accompanied by other symptoms such as nausea, sensitivity to light and sound, and visual disturbances. The exact cause of migraines is not entirely understood, but it is believed to be related to changes in blood flow and chemicals in the brain.
Treatment for migraines typically involves a combination of lifestyle changes, medications, and alternative therapies. Some common treatment options include:
1. Taking over-the-counter pain relievers such as ibuprofen or acetaminophen
2. Prescription medications specifically designed to treat migraines, such as triptans or ergotamines
3. Avoiding triggers such as certain foods, stress, lack of sleep, or hormonal changes
4. Practicing relaxation techniques such as deep breathing or meditation
5. Applying hot or cold packs to the head or neck
6. Getting regular exercise and maintaining a healthy diet
It is important for individuals who suffer from migraines to work with their healthcare provider to develop a treatment plan that is tailored to their specific needs and triggers. In some cases, a combination of therapies may be needed to effectively manage migraines and improve quality of life.
Ma Daisy / Nānā | Buke | Buy me Cryptocurner
How do I build a mail server with postfix?
To build a mail server with Postfix, follow these steps:
1. Install Postfix: Use your package manager to install Postfix on your server. For example, on Debian/Ubuntu, you can run `sudo apt-get install postfix`.
2. Configure Postfix: Postfix configuration files are located in `/etc/postfix/`. The main configuration file is `main.cf`. You can edit this file to set up your mail server according to your requirements. Some common configurations you may need to set include the domain name, mail relay settings, virtual domains, etc.
3. Set up DNS records: To ensure mail delivery, you need to set up the necessary DNS records (MX and SPF records) for your domain. Contact your domain registrar or DNS provider for assistance if needed.
4. Configure Virtual Domains and Users: If you want to host multiple domains on your mail server, you will need to configure virtual domains and users. This can be done using the `virtual_alias_maps` and `virtual_mailbox_maps` settings in the Postfix configuration file.
5. Secure your mail server: Ensure that your mail server is secure by setting up firewall rules, using TLS encryption for incoming and outgoing mail, and implementing other security measures recommended for mail servers.
6. Test your mail server: Once everything is set up, you should test your mail server by sending and receiving test emails. Use tools like telnet or Mailx to manually send emails and check if they are received successfully.
Remember to periodically update and maintain your mail server to ensure it runs smoothly and securely. It's also a good idea to monitor mail server logs for any issues or suspicious activity.
why should i use an apple l out at the l word?
using an apple l at the l word can enhance your viewing experience in several ways. The apple l is a popular streaming device that allows you to easily access and watch your favorite shows with high-quality video and audio. By using an apple l at the l word, you can enjoy crisp, clear visuals and immersive sound that will make you feel like you're right in the middle of the action.
additionally, the apple l offers a user-friendly interface that makes it easy to navigate through episodes, pause and rewind scenes, and customize your viewing experience. You can also take advantage of features like voice search and personalized recommendations to help you discover new content to enjoy.
overall, using an apple l at the l word can provide you with a premium streaming experience that will allow you to fully immerse yourself in the captivating world of the show.
.Ma Daisy / Nānā | Buke | Buy me Cryptocurner
How do i wear deadlock?
1. Start by growing your hair out to the desired length. Your hair should be at least 2-3 inches long for the best results.
2. Section your hair into small, even parts using a comb. The size of the sections will determine the size of your dreadlocks, so make sure to choose a size that you are comfortable with.
3. Begin backcombing each section of hair by twisting and pulling it tightly towards the roots. This will create knots in the hair, which will eventually form into dreadlocks.
4. Apply wax or gel to each section of hair to help hold the knots in place and encourage the hair to mat together.
5. Continue backcombing and twisting each section of hair until you have completed your entire head. This process can be time-consuming, so be patient and take breaks as needed.
6. Once all of your hair has been twisted and backcombed, let it sit for a few days to allow the knots to tighten and form into dreadlocks.
7. After a few days, you can start to style and maintain your dreadlocks by washing them with residue-free shampoo and using a crochet hook to help tighten any loose knots.
8. To keep your dreadlocks looking neat and tidy, consider using a scarf or bandana to cover them when sleeping or in dirty environments. Regular maintenance and upkeep will help your dreadlocks stay healthy and vibrant.
Ma Daisy / Nānā | Buke | Buy me Cryptocurner
How do I send email with a compliant email list and unsubscribe links?
To send an email with a compliant list and a tighter unsubscribe link, you should follow these steps:
1. Ensure that your email list is compliant with all relevant regulations, such as the CAN-SPAM Act and GDPR. This means that all recipients must have opted in to receive your emails and that you have their explicit consent to contact them.
2. Include a clear and prominent unsubscribe link in your email. Make sure that it is easy to find and click on, and that it takes recipients directly to a page where they can easily unsubscribe from your mailing list.
3. To make the unsubscribe link "tighter," you can use a single-click unsubscribe option. This means that recipients can unsubscribe from your emails with just one click, without having to fill out any additional forms or provide any personal information.
4. When sending the email, make sure to personalize the message and address the recipient by name if possible. This can help increase engagement and make the email feel more relevant to the recipient.
5. Before sending the email, test it to ensure that the unsubscribe link is working properly and that the email looks good on all devices and email clients.
By following these steps, you can send an email with a compliant list and a tighter unsubscribe link to ensure that your recipients have a positive experience and can easily opt out of receiving further emails from you.
Ma Daisy / Nānā | Buke | Buy me Cryptocurner
Why do people implant nfc implants in their hands?
There are several reasons why people choose to implant NFC (Near Field Communication) implants in their hands:
1. Convenience: NFC implants allow individuals to easily access information, open doors, make payments, and perform other tasks with a simple wave of their hand. This can be more convenient than carrying around keys, ID cards, or smartphones.
2. Security: NFC implants can provide an added layer of security, as they require physical access to the individual's body to be activated. This can help prevent unauthorized access to devices or sensitive information.
3. Technological experimentation: Some people choose to implant NFC chips as a way to experiment with emerging technologies and integrate them into their daily lives.
4. Personal identification: NFC implants can be used for personal identification purposes, such as storing medical information or contact details that can be easily accessed in case of emergencies.
5. Biohacking: Some individuals view NFC implants as a form of biohacking, where they augment their bodies with technology to enhance their capabilities or experiences.
Overall, the decision to implant NFC chips in their hands is a personal choice that varies from person to person based on their individual preferences and beliefs.
How is the crypto market growing so quickly?
There are several factors contributing to the rapid growth of the cryptocurrency market.
1. Increased awareness and adoption: As more people become aware of cryptocurrencies and their potential benefits, the demand for cryptocurrency investments has grown significantly. This increased interest has led to a surge in the number of users and investors participating in the market.
2. Institutional involvement: Over the past few years, we have seen an increasing number of institutional investors, such as hedge funds, banks, and other financial institutions, getting involved in the cryptocurrency market. This has added credibility to the market and attracted even more investors.
3. Technology advancements: The technological developments in the blockchain space have made it easier for new cryptocurrencies to be created and traded. Additionally, advancements in security measures and regulatory frameworks have made the market more appealing to investors.
4. Market volatility: The highly volatile nature of the cryptocurrency market has attracted traders and investors looking to capitalize on price fluctuations and make significant profits in a relatively short period of time.
5. Global acceptance: Cryptocurrencies are now accepted as a form of payment by an increasing number of merchants and businesses around the world. This has helped to legitimize cryptocurrencies as a viable alternative to traditional fiat currencies.
Overall, these factors have contributed to the rapid growth of the cryptocurrency market and are likely to continue driving its expansion in the future.
Ma Daisy / Nānā | Buke | Buy me Cryptocurner
https://glamgirlx.com
https://glamgirlx.com -
E waiho mai iaʻu i kahi'āpana i loko o bitcoin e hoʻohana ana i kēia helu: 3KhDWoSve2N627RiW8grj6XrsoPT7d6qyE