Ayelujara ti o wulo oju-ẹkọ jijin ati aabo nipasẹ apẹẹrẹ ÌtànòÍẹ Charlotte Harper Oṣu Keje 3, 2024 Imudojuiwọn / Iyipada Okudu 3, 2025
Iwaju:
Awọn akiyesi Aabo ni sọfitiwia kikọ fun oju opo wẹẹbu jẹ apakan pataki ti eyikeyi eto olugbe-aṣẹ wẹẹbu kan ati ipaniyan lakoko ti o ṣe afihan, idurosinsin, ati wulo fun awọn idi to wulo. Amuuse (Iwe adehun Nkan), pẹlu imuse ti HTML, JavaScript, ati pe o dara julọ Ni ipari ipari nwa lati pa akoko tabi gba ohunkan ti o ṣe lori Intanẹẹti, nigbagbogbo lori ẹrọ foonuiyara ifọwọkan. Ọpọlọpọ eniyan kii yoo mọ ibiti o fẹ bẹrẹ ni oju opo wẹẹbu kan ti o wulo, ati pe o ni eyikeyi awọn idiwọn ti o lagbara ati pe o le lo ohun elo ti o lagbara, ati pe o le lo ohun elo ti o lagbara, ati pe o ti fi owo ti o ni agbara ni ibamu pẹlu irọrun ti lilo ati irọrun. Ti o ba ni iṣẹju diẹ lati ka nipasẹ iwe yii ki o kọ ẹkọ pe ki o kọ koodu lati kọ lati kọ koodu ti o tọ, mu deede ohun elo ti o wa lori rẹ ati pe o ṣe ohun elo ti o ṣe pataki ati ṣe akiyesi awọn aini awọn olugbo rẹ.
Nipa mi: Mo jẹ idagbasoke sọfitiwia kan pẹlu ọpọlọpọ iriri iriri ni C / C ++, Java, HTML, CSS ati JavaScript. Mo kọ awọn oju opo wẹẹbu eniyan fẹ lati lo, fẹ lati ṣabẹwo, ati paapaa gba afẹsodi si lilo, ṣe idaraya ati ṣe pataki julọ, Mo ta ọja. Ti o ba ni imọran bi si gangan bi o ṣe fẹ oju opo wẹẹbu kan lati wo ati ṣiṣẹ lati bo awọn idiyele ti o tẹle, Google, tabi paapaa ohun elo aabo imọ-ẹrọ giga nikan ti o le wọle si. Dipo ki o gbiyanju lati ta ọ ni akoko mi, Mo n gbiyanju lati ra ọ sọrọ si kikọ ohun elo ti o wa tẹlẹ, o ni alaye ti o wa tẹlẹ ni eyikeyi aaye ti o fẹ. Ki o si jẹ ki n di mimọ, eto-ẹkọ ti Mo fun ọ yoo jẹ informal. O le lọ si ile-iwe ki o kọ ẹkọ gbogbo eyi pẹlu eto ẹkọ pataki kan, tabi paapaa ka iwe yii ni ile-iwe, pari awọn iṣẹ iyansilẹ rẹ, ati pe Emi ko fi ọ lelẹ ni ijoko gbona ati beere lọwọ rẹ lati pari awọn iṣẹ iyan. Emi kii ṣe ọjọgbọn rẹ, o le ronu mi bi ọrẹ ti o fẹ lati dari ọ si ọ ni aṣeyọri nipasẹ aṣeyọri ti ara ẹni ti ara rẹ. Ati pe Emi ko ta ọ ni aṣeyọri boya, iwọ yoo nilo lati ra pẹlu akoko rẹ. Eko si koodu ni ohun ti o ga erve ti o ko rọrun, tabi paapaa yẹ ki o jẹ. O nilo lati ṣiṣẹ bi o ti ṣee ṣe le tẹsiwaju lati gbiyanju ati kuna ki o gbiyanju lẹẹkansi paapaa nigbati o ba ni ibanujẹ lati le kọ ẹkọ ki o kọ awọn ohun elo ti o funrararẹ. Iyẹn ni iru koodu funrararẹ. Koodu ti wa ni ṣiṣe nipasẹ abuso ti o ṣe apẹrẹ lati fun awọn ifiranṣẹ aṣiṣe ti o jẹ pe wọn yoo kọ ọ bi o ṣe n ṣalaye aṣiṣe lasan ki o ka awọn apẹẹrẹ eniyan miiran. Ati pe Mo gbọdọ sọ, o ko nilo lati jẹ ọlọrọ pupọ, ọlọgbọn, aṣeyọri, tabi paapaa iṣalaye alaye tabi ṣeto lati kọ app kan. Kọmputa naa ṣe itọju agbari yẹn fun ọ. O kan nilo lati farada nipasẹ idanwo ati aṣiṣe, ṣetọju idojukọ ati ṣiṣẹ lile ni ohun ti o ṣe, ati pe iwọ yoo ni iṣẹ ti o ṣaṣeyọri ni gbogbo ohun ti o ṣe.
Tani mi: Mo mọ pe apakan ti o kẹhin jẹ diẹ sii nipa kikọ ẹkọ ati mu awọn ọna rẹ lati inu iwe yii. Tani Emi ni pato? Iyẹn ni ibeere ti o ni idiju. Mo jẹ koye lori ti ara mi, bi mo ṣe jiya lati awọn ipo iṣoogun ti o le jẹ ki o nira fun mi tabi kọwe iwe yii ni awọn italaya ati awọn ọran idanimọ ati awọn ọran idanimọ ati awọn ọran idanimọ mi nira nigbati o ba ṣafihan ara mi. Ni kukuru, ti o ba nka iwe yii, o mu wa ni ile nitori o jẹ iwulo, tabi paapaa ti o ba ka o jẹ ki o ṣaṣeyọri ninu ohun gbogbo ti o ṣe. Mo jẹ ẹlẹrọ funrarami kan, ati ọmọ ile-iwe kan, ati pe Mo n kikọ iwe yii fun awọn ọmọ ile-iwe wọn rọrun lati ṣe aṣeyọri ti o le wakọ aṣeyọri laibikita laini iṣowo. Ni ibebe, eyi ni ohun ti Mo ṣe: Mo kọ awọn lw lati ṣe iranlọwọ fun ara mi ati awọn eniyan miiran ṣaṣeyọri. Mo jẹ onkọwe pẹlu, botilẹjẹpe eyi ni ikede mi akọkọ ti Mo pinnu lati pari lati fi iwe-aṣẹ mi papọ, ati pe Emi ni oṣere kan daradara. Emi yoo gba eyi si ọ, Mo jẹ eniyan ajeji. I'm not perfect, I've had run ins with the law even leading me to leave colleges and universities and leave states in order to try to make a name for myself with more success. Emi li obinrin nipasẹ ibimọ, Mo wọ atike, ya awọn fọto ti ara mi, wọ awọn aṣọ ati aṣọ arabinrin miiran, ati pe emi fi mi gangan ni bi abo. Mo ti ṣe awọn ọran pẹlu awọn eniyan miiran ni iṣaaju ti o yori si awọn igbiyanju pẹlu kikọ ati awọn webrappas, ati pe Mo ko ni anfani lati gba iwe yii ni ọwọ rẹ pẹtẹlẹ: O nilo eyi. Iwọ yoo fẹ ka ati kọ koodu ti o dabi pe emi o ṣiṣẹ bi mi ati paapaa dara julọ, nitori ti o ba ni agbara ti o nilo lati ṣaṣeyọri ninu igbesi aye rẹ. Mo ni gbogbo awọn ọrọ ti awọn ọran pẹlu ẹbi n dagba soke, awọn ipo ilera, awọn dokita, ati koodu mi jinna si aye ti o pin ati awọn obinrin ti o yanilenu. Sibẹsibẹ, iwe yii jẹ nkan ti Mo ni abojuto ti o jinna pupọ nipa, ọmọ mi, ati ifẹkufẹ mi, nitorinaa Mo gba ọrọ naa ni ile lati le kọ ẹkọ lati ọdọ rẹ. Jọwọ tọju ni lokan Emi ko pe, iwe yii yoo ni awọn aṣiṣe, awọn atunyẹwo, ati awọn ẹda titun, ati pe iwọ yoo ronu pẹlu ọpọlọ monical bi o ṣe le ni iriri aṣeyọri pẹlu kikọ mi. Pẹlupẹlu, loye pe Mo tumọ si daradara fun ọ paapaa nigbati o ba dojuko awọn italaya nigbati kikọ. Ronu nipa rẹ bi eyi: Nigbati o le ya eto kọmputa kan lati ṣe ohunkohun o le fojuiri ni aaye oni nọmba, o ṣe itupalẹ pẹlu alaye ti o n ingesthing ati paapaa titẹjade. Mo sọ fun ọ nitori Mo pade awọn iṣoro kanna. Lo iwe yii ni ewu tirẹ, ṣiṣẹ pẹlu agbegbe rẹ ati awọn agbegbe ti o wa fun ọ lati mu mi lọ si ọna ti o ni itara, ati pe kini Mo le mu mi pọ si Ayelujara. O le ma jẹ faramọ pupọ pẹlu ẹniti Mo wa pẹlu awọn ọrọ diẹ, ṣugbọn Mo gba ọ niyanju lati ka ati pe o tẹsiwaju lati ka ati loye mi lakoko ti o kọ iṣẹ tirẹ lati pari iṣẹ rẹ. Ko si iṣẹ amurele pẹlu iwe yii, niwọn igba ti awọn ọjọgbọn rẹ tabi awọn olukọ ti o gba ọ ni iyanju lati kọ ilu fun, gẹgẹ bi o ṣe le lo ohun ti o kọ. Ise agbese repsone jẹ ipilẹ fun julọ ti ohun ti o yoo ka ninu awọn iṣẹ yii, koodu kan ti o le ṣe ifihan si ọ ni aṣeyọri ati awọn imọran ti Mo le rii pe o le ṣe afihan pẹlu rẹ, lori Intanẹẹti, tabi ninu awọn iroyin.
Kini iwe yii ni: Iwe yii jẹ ìkọpọ nipasẹ apẹẹrẹ. O le wa koodu nibi, awọn itọnisọna fun bi o ṣe le kọ ẹkọ si koodu ati awọn aṣiṣe ti n ṣatunṣe, ati bi o ṣe le ṣe afẹyinti, ati bi o ṣe le ṣe afihan koodu rẹ, app rẹ, iwọ yoo ṣe afihan rẹ, app rẹ, iwọ yoo ṣe afihan Ninu ina ti o dara julọ lati jẹ ẹwa julọ bi o ti ṣee ṣe si awọn olumulo opin rẹ, awọn alejo oju opo wẹẹbu rẹ. Ninu iwe yii, Emi yoo ṣafihan nọmba awọn apẹẹrẹ ti apẹrẹ sọfitiwia pẹlu idojukọ lori oju-iwe ayelujara bi aabo kan bii aabo. A yoo ṣe ipilẹṣẹ iriri ẹkọ nipa kikọ iṣẹ ipilẹ kan nipa lilo ikarahun Uniti, pẹlu afẹyinti ati awọn ẹya ara ẹrọ. Lẹhinna, a yoo ṣe ayẹwo oju opo wẹẹbu ipilẹ kan, igbesoke bulọọgi wa pẹlu fọto ati awọn ẹya fidio bakanna ni lilo olupin ijẹrisi (Pam). Lẹhinna a yoo ṣe atunyẹwo mimu ẹrọ ati sisẹ, iṣawari ṣiṣatunkọ fidio, Pipe Ohùn, Idanimọ ohun elo ati idanimọ ohun kikọ ti ohun kikọ Optipin, laarin awọn imọran miiran. Ni ọna ti a yoo ṣe ayẹwo APIS eyiti yoo ṣe iranlọwọ fun wa ṣe software wa diẹ wulo ati aabo, pẹlu awọn aṣayan ọfẹ ati isanwo. Ni ọna, a yoo ṣawari aabo ti ara ati awọn ohun elo ijada bii apẹrẹ wa lori nẹtiwọọki wa lori lati daabobo idaabobo ara wa ati ṣe afihan aabo ara ẹni ati idagbasoke. A yoo gba isinmi ni ọna lati kọ awọn ere, awọn ẹrọ ti o ni 3D ati iṣẹ pẹlu ohun elo ifisilẹ sọfitiwia iṣelọpọ ipilẹ ti silikani silikoni ni roalicone. Ni ọna, a yoo tun gba awọn solusan lọwọ ẹrọ ti o wa tẹlẹ lati le aabo software wa dara julọ. A yoo tun gba awọn irinṣẹ iṣura ti o wa fun oju opo wẹẹbu lati le ṣe ṣiṣan ati aabo ilana naa. Iwe yii jẹ itọsọna si aṣeyọri rẹ ni kikọ ohun elo wẹẹbu kan ati ṣipọ pẹlu nẹtiwọọki ọjọgbọn, ati ni apapọ awọn eto imọ-ẹrọ, ati pe ohun elo imọ-ẹrọ lati kọ sọfitiwia lẹhin ko si iriri lẹhin ko si iriri lẹhin.
Kini iwe yii kii ṣe: Ti o ba fẹ looto ni oju opo wẹẹbu kan, o le ṣeto ohun elo ti o rọrun ati ta ohun ti o nilo, firanṣẹ bulọọgi, firanṣẹ awọn fọto tabi awọn fidio, tabi bibẹẹkọ laisi kika laini kan ti koodu kan. Iwe yii kii ṣe iyẹn. Iwe yii yoo kọ ọ bi o ṣe le kọ sọfitiwia ti o wulo julọ, iṣẹ ati aabo ju awọn ile-iṣẹ ti o le ṣiṣẹ ni awọn ile-iṣẹ ti o ni iwọn, ati pe o ko tọ ju awọn ile-iṣẹ lọ, nitori pe o jẹ ẹbun ju awọn ile-iṣẹ agba lọ, ati pe o ti wa ju awọn ile-iṣẹ tuntun ti o ṣiṣẹ lati ṣe owo fun awọn eniyan ti ko ṣe ohunkohun n ṣe ohunkohun ti o nṣe ohunkohun. Ti o ba tẹle iwe yii ni pẹkipẹki, iwọ yoo fẹ kọ koodu, koodu iwadi, kọ awọn ohun elo tirẹ, iwọ yoo ni owo lati ohun ti o ṣe. Emi yoo ni owo lati inu iwe yii, paapaa ni awọn ipo ibẹrẹ, nitori o ni alaye eniyan nilo ati fẹ lati ka, ati lo awọn lw mi tẹlẹ nigbati wọn ra tabi lo awọn lw mi. Iwe yii kii yoo kọ app fun ọ, ṣugbọn yoo tọka si ọ ni itọsọna ti o tọ ati awọn ọgbọn rẹ, awọn ibatan rẹ, awọn alabaṣepọ ti Intanẹẹti fẹ lati lo ati atilẹyin.
Ohun ti o yoo kọ ẹkọ: Iwe yii yoo kọ ọ bi o ṣe le kọ ati ta sọfitiwia, sọfitiwia ti o wulo, awọn ẹya ara ẹrọ ti o wulo, ati awọn fọto ti o ka ati awọn fọto ti o wa nitosi Bluetooth ati nitosi. Iwe yii yoo kọ ọ bi o ṣe le lo kọnputa Nẹtiwọki, Bi o ṣe le kọ koodu ti o rọrun lati ṣe awọn oju opo wẹẹbu miiran lati pese awọn ẹya aabo bi ọrọ-ọrọ tabi awọn idi miiran, Idanimọ Idani, aworan ati iwọntunwọnsi fidio, awọn microtronaCation data lati tọju sọfitiwia sọfitiwia rẹ, ṣiṣe ilana isanwo, awọn iṣẹ asynchronchronous, ati diẹ sii. Iwọ yoo kọ bi o ṣe le kọ awọn ẹrọ Bluetooth tirẹ, pẹlu awọn batiri, awọn ṣaja, awọn ereki ati awọn sensors, lilo ti a tẹjade bi awọn ohun elo simẹnti. Emi yoo ṣafihan awọn oludari apẹrẹ 3D ti a ge si iṣelọpọ ati ọpa ati ki o wa ni ṣiṣe, nitorinaa o ni anfani lati ṣe agbekalẹ awọn batiri ti o ni ipilẹ, awọn ipinya itanna, ati awọn iṣan iṣẹ. ati Nẹtiwọọki wọn wọn pẹlu Bluetooth ati oju opo wẹẹbu. Ni pataki, a yoo ṣayẹwo awọn ijinlẹ ọran meji, iwaripọ ti o gbigbọn ati ohun ija ti ibilẹ ati ohun ija ti o ni ibilẹ, eyiti o wa bi wiwo aworan tabi agbara ila ila ati pe o le ṣepọ si oju opo wẹẹbu fun awọn abajade iyara kan. Iwọ yoo kọ bi o ṣe le kọ oju opo wẹẹbu kan lati inu ilẹ pẹlu ko si iriri ṣaaju ki o to ṣiṣẹ, ṣe deede, wulo ati ti o wulo julọ ati pataki julọ wulo. Iwọ yoo kọ ẹkọ bi o ṣe le lo ẹkọ ẹrọ ati iran kọmputa lati ṣe awọn aaye to wulo miiran lati le pin gbogbo awọn oju opo wẹẹbu ti o ni lati le pin gbogbo awọn oju opo wẹẹbu ti o ni lati le pin gbogbo awọn aaye ayelujara ti o ṣeeṣe lati le pin gbogbo awọn oju opo wẹẹbu rẹ lati le pin gbogbo awọn aaye ayelujara ti o ṣeeṣe lati le pin gbogbo awọn oju opo wẹẹbu rẹ ti o ni lati le pin gbogbo awọn oju opo wẹẹbu rẹ ti o ni lati le pin gbogbo awọn oju opo wẹẹbu rẹ ati iṣowo diẹ sii mu ki awọn eniyan mu wa taara si sọfitiwia rẹ. Iwe yii yoo wa ni idojukọ pupọ julọ lori media pupọ julọ, aabo ati ẹrọ ẹkọ, eyiti o jẹ awọn olumulo pataki ni ọna ti o jẹ deede, o wulo ati aladara. Iwe yii nkọni UNIL, Dermantu (Ubuntu), The Shml, HSS, CSS pataki, CSS, CSS ti wulo, ati bii software kan ti o wulo bi Git ati FFMpeg. Emi yoo tun kọ ọ bi o ṣe le iṣowo crypcerry laifọwọyi, ati lati mu awọn sisanwo ni Srypticrcy tabi lati awọn kaadi debiti deede lakoko ti o ba yan lati ṣe bẹ. Emi yoo kọ ọ bi o ṣe le ni owo lati oju opo wẹẹbu rẹ nipasẹ ipolowo bi daradara, bi o ṣe le mu yara rẹ ṣiṣẹ ati pe o le mu u ni ipo akọkọ fun ọpọlọpọ awọn iwadii ti o wọpọ bi o ti ṣee. Emi yoo kọ ọ bi o ba ta software rẹ, ṣe ikede rẹ ti n wa awọn iṣẹ rẹ, ati ṣe orukọ fun ara rẹ ti o wa lori Intanẹẹti tẹlẹ, jẹ alailera, ati ṣiṣẹ daradara. Emi yoo kọ ọ bi o ṣe le ṣafipamọ data rẹ lori awọn kọnputa awọsanma ti o ṣiṣẹ fun ọ ki o fi oju opo wẹẹbu rẹ pamọ pada si oju opo wẹẹbu rẹ ti o fẹ, ati bi o ṣe le ṣe awọn olumulo rẹ pada si oju opo wẹẹbu rẹ ti o ba fẹ, ati bi o ṣe le ṣe awọn olumulo rẹ pada si oju opo wẹẹbu rẹ ni ẹhin tẹ nkan ti o ni ifipamo si ọ nikan. Iwe yii yoo dojukọ lori titẹjade ati pinpin Media ni awọn oye nla, lati inu ọrọ si awọn olumulo to kọja lati ọdọ rẹ ati iwọ yoo ṣe aṣoju fun iwọ ati iwọ, software rẹ dara ni ọna ti o dara julọ ti o dara julọ. Iwọ yoo tun kọ ẹkọ awọn imọran ati ẹtan diẹ lati ọdọ mi, Vandity to wulo ati pe oyi ti o dara julọ ti awọn iru ẹrọ ti o dara julọ ti gbogbo awọn iru ẹrọ ti o ṣeeṣe pẹlu ko si igbiyanju diẹ sii, iṣẹ, tabi owo ju jẹ pataki. Iwe yii ni a pe ni "IlowosiDahunkọ oju-iṣẹ ati aabo nipasẹ apẹẹrẹ "fun ẹkọ lati kọwe si koodu, koodu naa yoo fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fihan ọ bi o ṣe le fi oju-iwe ṣiṣẹ, Imudara, imudara ipinnu, agbara aworan, ati awọn iṣẹ ṣiṣe miiran bi awọn iṣẹ-akọọlẹ ti a ṣe pataki nigbati o ba jẹ pe o jẹ ẹtọ fun ọ ni ojuami kan, ṣugbọn o le jẹ ailewu lati lo ti o ba jẹ pe O wọle pẹlu oju rẹ. O le ṣe kọnputa olupin Aaye ti o lo). Ẹnikẹni ti o kọ sọfitiwia ti o jẹ aabo deede ni diẹ ninu ohun ti eyi tumọ si. Sọfitiwia bakanna ni aabo nitori awọn ẹrọ ati awọn iroyin ti a lo lati wọle si rẹ kii ṣe nigbagbogbo ni ero ti ko ni aisan fun sọfitiwia naa ki o le ṣe eewu si sọfitiwia naa funrararẹ. Eyi jẹ nkan ti idojukọ iwe yii. Kọmputa ti a n sọrọ ni ifipaba ni ifipamo pẹlu aami bọtini pipẹ, ti a pe ati SSH tabi Bẹn Ikunhun Oju-iwe, ati pe o dara julọ ti awọn irinṣẹ aabo aworan nṣiṣẹ lori olupin funrararẹ. Olupin oju-iwe wẹẹbu naa ni iraye si ẹrọ lilọ kiri lori ayelujara olumulo, eyiti o jẹ ariyanjiyan julọ apakan ẹrọ olumulo, nitori pe o ni ibiti olumulo le wọle si sọfitiwia ti nojuto. Ohun elo irinṣẹ yii le ṣe ọrọ, awọn oju opo wẹẹbu ti o rii, ati tun le gbasilẹ ati pe awọn kaadi ti o ni itanna, o le kọwe si pẹlu data ti ipilẹṣẹ ati ti o munadoko nipasẹ olupin opo wẹẹbu ti a so si oju opo wẹẹbu. Lilo gbogbo awọn irinṣẹ ni ọna rẹ, pẹlu iwe yii o yoo pese ara rẹ pẹlu imọ-ọrọ
Ibi ti lati bẹrẹ: O kaabọ lati fo iwe yii ti Mo bẹrẹ iwe yii pẹlu, tabi eyikeyi apakan, si koodu gangan Emi yoo ṣe apejuwe ni alaye pẹlu kikọsilẹ pẹlu awọn iṣẹlẹ lo ati awọn apẹẹrẹ ti o wulo rẹ. Ti o ko ba ni iriri ninu koodu kikọ, Mo ṣe iṣeduro pupọ o ka gbogbo iwe yii, ati pe o tọ ọ ni pataki pe o ka awọn apakan ti tẹlẹ, lati rii daju iwe yii jẹ ẹtọ fun ọ. Ti iwe yii ko ba tọ fun ọ, ronu ẹbun ti o jẹ ifẹ si ọrẹ nipasẹ idagbasoke oju-iwe ati awọn olukọ miiran ti o ṣe niwaju mi. Bẹrẹ ibiti o yoo, gbogbo apakan ti iwe yii yoo wulo ti o ba pinnu lati kọ app to wulo, ati ro pe awọn lw ti o dara julọ ni a kọ pẹlu olumulo ipari ni lokan: mọ alabara rẹ. Ni bayi o mọ mi, o mọ iwe yii, ati pe o ṣetan lati bẹrẹ. Lati bẹrẹ, ja kọnputa kan (paapaa laptop ti o dara julọ lati ile itaja apoti, Amazon, tabi awọn tabili atijọ ti n ṣiṣẹ, ki o ṣeto rẹ ni ọna ti o ṣiṣẹ fun ọ.
Bii o ṣe le ka iwe yii: Ọrọ ti o tẹnumọ, itumọ pe ọrọ naa jẹ ninu aṣẹ aṣẹ kan, nibiti iwọ yoo kọ koodu ti o ṣiṣẹ. Ida aṣẹ naa jẹ adiro ti wuwo ati pe o nilo kekere si ko si titẹ, iyara iṣẹ rẹ ati ṣiṣe awọn nkan rọrun lori rẹ.
Bibẹrẹ: Jẹ ki a besomi ninu. A yoo bẹrẹ nipasẹ koodu kikọ lori ẹrọ agbegbe ati bẹrẹ lai kọ oju opo wẹẹbu kan ti o sopọ si Intanẹẹti. Eyi jẹ ailewu lati bẹrẹ pẹlu, ko jẹ nkankan, ati rọrun fun ọ. O da lori ẹrọ ṣiṣe rẹ, nini ikarahun Bash yoo jẹ diẹ ti o yatọ. Fun Mac OS, Mo ṣeduro fifi ẹrọ foju ṣiṣẹ ni aaye yii, bi iwọ yoo gba ibaramu julọ pẹlu ẹrọ foju kan. Awọn olupese oriṣiriṣi bii foju-ẹrọ awọn apoti ati awọn apalẹ le ṣiṣẹ ni agbegbe abinibi kan ti a ṣe iṣeduro lati ṣẹda iyara kan, iriri ṣiṣan. Ti o ba nlo Lainos tabi Windows, eyiti Mo ṣeduro, o yẹ ki o rọrun lati ṣẹda iṣẹ akanṣe. Ṣii ebute rẹ, ṣatunṣe sile bi o ti rii pe o baamu, ki o bẹrẹ igbesẹ 2. Ti o ba nlo Windows, jọwọ tẹle igbesẹ 1.
Igbesẹ 1: - Awọn olumulo Windows nikan Ninu Windows, ṣiṣi aṣẹ ṣii bi alabojuto ati iru WISL -Nstall
Igbesẹ 2: - Tẹsiwaju nibi, tabi Sarp Igbese 1 si ibi ti o ko ba lo Windows Ni ọna ṣiṣi silẹ, (da lori OS rẹ, ti a pe ni Ubuntu ni Windows, ebute ni Mac tabi Lainos kan pato), bẹrẹ nipa ṣiṣẹda iṣẹ akanṣe kan. A ṣe eyi pẹlu pipaṣẹ Mkdir, eyiti o ṣẹda iwe itọsọna kan. Ti o ba nilo lati ṣẹda itọsọna kan lati ṣagbese agbese rẹ, eyiti o niyanju, lo aṣẹ CD lati yipada si itọsọna ati ati
Ọna CD / Ọna / si / Akọṣẹ - Ọna naa jẹ Awọn folda (awọn faili) rẹ ṣe ipilẹṣẹ itọsọna opin irin ajo rẹ, tabi / ile / Olumulo / Olumulo (nibiti orukọ olumulo jẹ orukọ olumulo rẹ). Lati yipada si itọsọna aiyipada, tẹ CD tabi CD ~ Apeere Mkdir - Rọpo "pẹlu orukọ ti itọsọna naa
Bayi o ni itọsọna ti ṣiṣẹ fun iṣẹ akanṣe rẹ. Ni jije bi o ṣe pataki lati ni itọsọna yii ti o gba ni ọran ti o nilo lati yipada si oju opo wẹẹbu kan tabi gbe koodu silẹ lati ṣe afẹyinti iwe-aṣẹ rẹ ni awọn igbesẹ diẹ rẹ ni atẹle. Ṣugbọn kọ iwe afọwọkọ kan gba koodu diẹ, ati koodu nilo lati ṣe adaṣe lati jẹ eyiti o wulo bi o ti ṣee. Nitorinaa jẹ ki a kọ iwe afọwọkọ lati kọ awọn iwe afọwọkọ akọkọ. Jẹ ki a bẹrẹ nipa ṣiṣẹda iwe afọwọkọ ati ṣiṣe ki o ṣẹ. A yoo lo sudo, chmod ati ifọwọkan fun eyi, ki o pe iwe afọwọkọ naa "fi ipilẹ".
sudo touch /usr/bin/ascript
sudo chmod a+x /usr/bin/ascript
sudo nano /usr/bin/ascript
Ni bayi a ti ṣẹda iwe afọwọkọ naa, jẹ ki o ṣiṣẹ, ati pe o ṣetan lati satunkọ rẹ. Nano jẹ olootu ọrọ kan ti yoo jẹ ki o satunkọ ọrọ laisi titẹ, eyiti o rọrun pupọ ju lilo wiwo olumulo ayaworan kan. Lati satunkọ faili pẹlu nano, lo Nano ati lẹhinna ọna si faili naa. Lati ṣe iwe afọwọkọ kan ti o mu ki Iwe afọwọkọ kan, o jẹ iṣẹtọ iru si ṣiṣe iwe afọwọsi wa ni aye akọkọ. A yoo lo koodu kanna bi loke, rirọpo orukọ iwe afọwọkọ, "fifiranṣẹ" pẹlu paramita ariyanjiyan kan, $ 1. Eyi jẹ ki a pe iwe afọwọkọ npe ni titẹ awọn iwe irohin sudo nki, ni aaye eyiti a le ṣẹda eyikeyi iwe afọwọkọ tuntun nipa rirọpo "iwe iroyin" pẹlu orukọ iwe afọwọkọ rẹ. Koodu naa ni Nano yẹ ki o dabi:
sudo touch /usr/bin/$1
sudo chmod a+x /usr/bin/$1
sudo nano /usr/bin/$1
Ati lati pa bọtini kiri, a le mu bọtini iṣakoso ki o tẹ x, lẹhinna Y lati ṣe afihan a n ipamọ faili naa, ki o si lu Salect. Ni bayi dipo titẹ awọn ofin mẹta wọnyi lati satunkọ iwe afọwọkọ, a yoo ni anfani lati ba sudo bupipiyu lati satunkọ iwe afọwọkọ naa lẹẹkansi. Awọn iṣẹ yii! Ati iwe afọwọkọ miiran le jẹ irọrun nipasẹ pipe ninu ikarahun. Jẹ ki a gba iṣẹ wa ni bayi: Jẹ ki a Kọ Iwe afọwọkọ Afẹyinti lati fi iwe afọwọkọ wa pamọ lẹhinna ṣe afẹyinti ni itọsọna iṣẹ amusese rẹ, lakoko ti n ṣe afẹyinti iwe afọwọkọ iṣẹ-ṣiṣe.
sudo ascript backup
Bayi, ni Nano:
sudo cp /usr/bin/backup /path/to/directory/
sudo cp /usr/bin/ascript /path/to/directory/
Nibiti / ọna / si / itọsọna jẹ ọna si iṣẹ ti o ṣẹda pẹlu Mkdir. Nigbamii lori a yoo kọ bi o ṣe le daakọ bii o ṣe le ṣe awọn ipa-ọna bii eyi, eyiti o jẹ koodu ti o kere, ṣugbọn fun bayi jẹ ki o jẹ ki o rọrun ati pe a ni awọn ila diẹ. Lati ṣiṣẹ iwe afọwọkọ yii ati afẹyinti koodu rẹ, fi faili pamọ pamọ pẹlu iṣakoso + x, y ati pada, ki o tẹ isalẹ isalẹ sinu ikarahun rẹ
backup
Ti o ba ti ọ ni gbogbo fun ọrọ igbaniwọle kan lakoko ti o ka iwe yii ati atẹle ni ikarahun, jọwọ tẹ ọrọ igbaniwọle olumulo rẹ ni deede, iwọ yoo ni aṣẹ mẹta ṣaaju ki o to tun paṣẹ aṣẹ naa. O le lo awọn ọfa to oke ati isalẹ si awọn aṣẹ Rernu ati satunkọ wọn, o yẹ ki o nilo lati ṣiṣe ohunkohun lẹẹmeji. O rọrun tẹ oke ati isalẹ intermittently lati yan aṣẹ kan, ṣaaju satunkọ pipaṣẹ pẹlu ọtun, awọn ọfa osi ati ki o pa bọtini bi keyboard ,, ati nṣiṣẹ pẹlu ipadabọ.
Oriire! O ṣakoso lati ṣẹda iwe afọwọkọ afẹyinti oniyi ti o ṣe afẹyinti awọn afọwọkọ ikarahun meji pataki ninu itọsọna iṣẹ rẹ. A le gbe awọn ohun ni ayika nigbamii ti iṣẹ akanṣe bẹrẹ, ṣugbọn eyi ṣiṣẹ ni bayi. Jẹ ki a lọ siwaju si ti n ṣe afẹyinti ti awọsanma, a yoo lo Github fun eyi (botilẹjẹpe awọn ojutu miiran ti o jẹ aṣẹ, lakoko ti o jẹ ohun elo iṣakoso iwe afọwọkọ ti o jẹ ki o ṣe igbasilẹ gbogbo awọn ẹda ti software rẹ tabi bọtini. O jẹ irinda ni fifipamọ sọfitiwia rẹ, pataki bi a ṣe ya jade lọ lati ni aabo awọn iṣẹlẹ ti o ni aabo nigbakan ti o ko ba gba aye lati tun ṣe afẹyinti, eyiti a yoo bo.
Ti o ba ti ko ba ti lo ẹrọ foju ẹrọ Ubuntu ni aaye yii, Mo ti aṣalẹ lilo ẹrọ ẹrọ ubuntu ni aaye yii nitori o yoo jẹ ki igbesi aye rẹ rọrun nigbati o nfi oju opo wẹẹbu ṣiṣẹ lori kọmputa rẹ. A yoo gbe koodu si olupin wẹẹbu kan ni ọjọ iwaju nitosi, ṣugbọn a fẹ lati rii daju pe o kere ju awọn fẹlẹfẹlẹ kan ti aabo wa ti o jẹ awọn idii lanux lati le ṣe eyi. Ti o ba tun fẹ lati lo Mac OS, o kaabọ lati wa awọn akopọ pataki lori ayelujara, ṣugbọn o le ma jẹ awọn omiiran fun gbogbo package iwe yii tabi jara yoo bo.
Jẹ ki a ṣafikun awọn aṣẹ diẹ lati ṣe iṣẹ wa pẹlu iwe afọwọkọ afẹyinti nipa nṣiṣẹ pipaṣẹ Supi asdo piparẹ Sudo Ascript.
# ...
Lekan si, ṣakoso x lati fipamọ.
Bayi a nilo lati ṣe diẹ ninu iṣeto akoko kan fun iṣẹ yii. Nitoripe o laipe yoo jẹ iṣẹ kanna, a ko nilo lati tẹ gbogbo aṣẹ ni gbogbo igba ti a ba gba lati ibi ipamọ bit kan, ṣugbọn a yoo gba idoti eyi nigba ti a kọ awọn iwe afọwọkọ imuṣiṣẹ wa. Lati bẹrẹ, jẹ ki a rii daju pe a wa ni itọsọna ti o tọ ati ni ipilẹṣẹ ibi ipamọ git ki o ṣe ina awọn bọtini SSH.
cd /path/to/directory
git init
git branch -m master
ssh-keygen
Lẹhin ti a tẹ ssh-Kepere yẹ ki o wa ni fipamọ ni folda ile labẹ folda ti a pe .ssh. O ti wa ni a npe ni ID_RSA.Pub. Jẹ ki a wa bọtini yii ki o daakọ rẹ. Lati ri i,
cd ~
cat .ssh/id_rsa.pub
Daakọ ọrọ ti o pada nipasẹ aṣẹ ti o kẹhin, ki o ṣẹda iwe ipamọ kan pẹlu Olupese GIT rẹ (Github), ṣaaju ki o to afikun bọtini SSH si akọọlẹ rẹ. Lọgan ti o ba ni akọọlẹ kan ti oke ki o tẹ eto sii, ṣaaju fifi bọtini SSH rẹ kun ni SSH ati GPG bọtini labẹ Wiwọle ninu mẹnu Yan Fi bọtini SSH kan kun ati ṣafikun tirẹ Nipasẹ kọja rẹ ni ati fifun ni akọle, ṣaaju fifipamọ ati pada si Githib lati ṣẹda ibi ipamọ tuntun. Eyi jẹ iru fun awọn olupese giti miiran, iwọ yoo nilo lati ka iwe wọn. Ninu Iṣeto Ibi ipamọ tuntun, fun awọn ibi ipamọ rẹ ni orukọ alaye apejuwe ati pinnu boya o fẹ lati jade, ati rii daju lati tunto ko si awọn faili fun ifisi sibẹsibẹ. Ni kete ti a ṣẹda Ibi ipamọ naa, Da Ohun-ini pẹlu URL SSH, ati lẹẹmọ sinu aṣẹ atẹle.
git remote add git://… (your remote URL)
Bayi o le pada si ibi ipamọ rẹ pẹlu CD, iwọ yoo faramọ pẹlu eyi. Gbiyanju iwe afọwọkọ afẹyinti rẹ bayi pẹlu afẹyinti
Nla! Bayi a le gba ifaminsi gan. Jẹ ki a fi sori ẹrọ Djugone ni bayi pe a ni oye ti ko dara lori bash ati git. Djagodo yoo jẹ ki wa ṣe afẹyinti sọfitiwia wa laifọwọyi, bash le ṣe eyi paapaa ṣugbọn DJgogo yẹ ki o ni imuse ailewu ti o rọrun julọ (o le jẹ alaabo ati tunto ni rọọrun).
Lati fi software sori ẹrọ ni Ubuntu, awa yoo lo pipaṣẹ Sudo apt-gba aṣẹ naa. Ni akọkọ, jẹ ki a ṣe imudojuiwọn ati igbesoke sọfitiwia ti a ni tẹlẹ. Eyi le ṣee ṣe pẹlu imudojuiwọn Sudo apt-gba imudojuiwọn ati igbesoke Sudo apt-gba. Tókàn, Jẹ ki a fi Python ati agbegbe foju wa, ile koodu wa: sudo apthon-NI-Python3 Python3-VENV
Eyi ni gbogbo ohun ti o nilo lati lọ pẹlu DJango ni awọn ofin ti awọn fifi sori ẹrọ sọfitiwia ninu apẹẹrẹ Ubuntu. Fun Windows ati Lainos Eyi yẹ ki o jẹ iṣẹtọ taara, ṣugbọn fun Mac o le fẹ fi ẹrọ ẹrọ foju ati Lainos lori rẹ lilo awọn igbesẹ ti o wa loke lati ṣeto agbegbe Ubuntu kan. Ubuntu jẹ pataki ninu ọran yii nitori pe o jẹ sọfitiwia ti awọn oju opo wẹẹbu n ṣiṣẹ ati ki o fun wọn ni awọn oju opo wẹẹbu pẹlu gbogbo sọfitiwia ti a sọ tẹlẹ.
Jẹ ki a ma wà sinu Djagodo.
Ninu itọsọna wa lẹẹkansi, pẹlu CD:
python -m venv venv # Ṣẹda agbegbe foju ti koodu ti wa ni fipamọ
source venv/bin/activate # Muu ṣiṣẹ agbegbe agbegbe
django-admin startproject mysite . # Nibiti mysite jẹ iṣẹ-ṣiṣe ti Mo n bẹrẹ ninu itọsọna mi lọwọlọwọ.
Igbesi DJango n gba wa bẹrẹ, nitori pe DJango n ṣelejo olupin oju-iwe wẹẹbu ati pe o n ṣe ohun gbogbo ti a nilo lati gba oju opo wẹẹbu agbegbe ipilẹ si oke ati nṣiṣẹ. Ni bayi ti a ni aaye ti o fi sori ẹrọ, jẹ ki a ṣatunkọ awọn eto kan diẹ lati jẹ ki o ṣiṣẹ bi a ṣe nilo bi a ṣe nilo. Ni akọkọ, jẹ ki a ṣẹda app tuntun kan
python manage.py startapp feed
Iwọ yoo ṣe akiyesi app akọkọ ni a pe ni ifunni. Ohun elo naa yẹ ki o pe ni ohunkohun ti o fẹran, ati pe awa yoo ṣẹda awọn ohun elo tuntun, ṣugbọn orukọ app app kọọkan gbọdọ wa ni akoko kọọkan app naa ni ami naa. Lati Ṣafikun app tuntun kan, a yoo satunkọ eto naa nigbagbogbo.py nigbagbogbo ni itọsọna miiran ti o ṣẹda, ti o darukọ ni ibẹrẹ, awoṣe app. Lilo Nano,
nano app/settings.py
Ninu awọn eto, wa ti a fi sii_apps ati lọtọ ninu ila mẹta. Lilo awọn aye mẹrin lori laini aarin ṣofo, ṣafikun 'ifunni', tabi orukọ app rẹ. Abala yii ti awọn eto.1ypy yẹ ki o dabi:
INSTALLED_APPS = [
'feed',
]
Ṣaaju ki a gbagbe, jẹ ki a ṣe idanwo pe DJgogo n ṣiṣẹ. Lilo pipaṣẹ Python ṣakoso.Piya ba n ṣiṣẹ 0.0.0:8000, a le lọ si ayelujara ati ki o wo oju opo wẹẹbu kan (o ma ṣiṣẹ olupin naa pẹlu aṣẹ c, kanna bi eyikeyi aṣẹ miiran.
Bayi, jẹ ki a ma wà sinu kikọ diẹ ninu koodu Python. DJango ni awọn ẹya akọkọ meji, gbogbo wọn ṣiṣẹ nipa koodu patapata. Awọn paati ti a pe ni awoṣe, wo ati awoṣe, ati ọkọọkan wa ni ipele ti o ga julọ ati kekere ni kiakia ṣaaju ki oju-iwe wẹẹbu ti firanṣẹ si olumulo naa.
Awoṣe jẹ koodu ti o tọpa alaye ninu data naa fun igbapada, iru ati ri.
Wiwo naa pinnu bi awoṣe ṣe jẹ pe, ifọwọkọ, o fẹrẹ yipada gbogbo wiwo yoo lo awoṣe taara.
Awoṣe naa jẹ koodu HTML pẹlu diẹ ninu awọn agogo afikun ati awọn whistles ti a pe ni ede samisi. Awoṣe ni a ti fi wiwo naa nipasẹ wiwo ibiti o ti kun fun koodu Python ati ọrọ gẹgẹbi awọn awoṣe ati alaye (Usuall awọn okun) lati wiwo.
DJango ni awọn paati miiran paapaa, pẹlu ṣugbọn ko ni opin si:
Eto, eyiti o ṣe itọsọna app bi a ti sọrọ.
Awọn URL, eyiti o jẹ awọn ilana ti olumulo tẹle lati ni iraye si awọn apakan pato ti ohun elo wẹẹbu.
Awọn fọọmu, ti o ṣalaye bi alaye ti o firanṣẹ si olupin ti wa ni mu ati ṣe alaye si aaye data bi daradara bi olumulo. Iwọnyi jẹ ipilẹ ti alaye sisẹ lori ẹgbẹ olupin, ati pe o le gba eyikeyi iru awọn ile itaja kọnputa, pupọ julọ awọn okun awọn okun, awọn nọmba, ati awọn booleeeus otitọ (nigbagbogbo awọn apoti ayẹwo).
Awọn awoṣe, eyiti o jẹ koodu HTML ati Ede awoṣe ati Afara Python laarin awọn imọran ti o ni ihamọ, lakoko ṣiṣe koodu Python ati pe o le ṣe aabo koodu Hython ti ẹnikẹni le ṣe iraye si oju opo wẹẹbu lori ẹrọ latọna ti ko nilo lati sunmọ olupin naa.
Awọn faili isoti, eyiti o jẹ igbagbogbo JavaScript ati pe o jẹ ile-ikawe eyiti olupin naa yoo fun wa ati pe o sopọ mọ awo-awoṣe naa.
Awọn faili Media, eyiti olupin ṣe n ṣiṣẹ tabi ti gbalejo ita, tabi ti kikọ si olupin ṣaaju ki o to ni ilọsiwaju ati firanṣẹ si olupin miiran (garawa kan) fun alejo gbigba.
Awọ-ẹrọ, eyiti o jẹ awọn ege koodu ti o ṣiṣẹ ni akoko kanna bi gbogbo wiwo gbogbo ati pe wọn wa ni imọran "wa pẹlu" ni wiwo.
Awọn oludari Sitete, eyiti o jẹ ilana ti wiwo kọọkan ati pe a lo lati ṣafikun ọrọ afikun.
Awọn idanwo, eyiti o fọwọsi olumulo naa tabi beere kọja awọn ibeere kan ṣaaju wiwo naa.
Awọn alabara, eyiti o sọ bi awọn apamọwọ fi oju opo wẹẹbu mu ati dahun si ibaraẹnisọrọ.
Ati abojuto, eyiti a lo lati forukọsilẹ awọn awoṣe nitori wọn le ni ifọwọyi ni alaye laarin oju-iwe DJgotulated, nibiti data ti le ni a nṣakoso ni wiwo ayaworan kan.
Seleri, eyiti o ṣalaye awọn ẹya ara ẹrọ asynchronous ti koodu Djugodo le bẹrẹ ṣiṣe ṣaaju tẹsiwaju lẹsẹkẹsẹ si iṣẹ ṣiṣe atẹle tabi laini koodu ti koodu atẹle.
DJango le ni ọpọlọpọ awọn ẹya miiran, eyiti a yoo jiroro ni awọn alaye nibi. Awọn ọna pupọ lo wa lati ṣe ohun elo Djungo diẹ sii, eyiti o yi awọn ile-iṣẹ, eyiti o jẹ iyara, ati ọpọlọpọ awọn iṣẹ miiran, eyiti o ṣe awọn iṣẹ akiyesi, nibiti o ti pari koodu wiwo, nibiti o ti pari koodu wiwo. Wo awọn iṣẹ jẹ bọtini nitori wọn nigbagbogbo sọ gbogbo nkan koodu ti o jẹ pato si apẹrẹ URL kan pato, tabi apakan kan ti olupin naa.
Ni akọkọ, jẹ ki a ṣawari awọn iṣẹ wo. Wo awọn iṣẹ bẹrẹ pẹlu awọn agbewọle itọkasi ti yoo lo ninu iwo naa, ati pe a ṣalaye lilo awọn asọye iṣẹ iṣẹ deede tabi awọn kilasi. Awọn iwo ti o rọrun julọ ni a ṣalaye nipasẹ itumọ iṣẹ def, ki o pada si awoṣe ile HTTRPRSNE pẹlu awoṣe ipilẹ kan. Jẹ ki a bẹrẹ nipasẹ asọye wiwo ipilẹ lati pada ọrọ naa "Kaabo World". Ranti pe ni igba kọọkan ti o ṣafikun koodu lẹhin ọrọ kan bi o, lakoko, fun, ati bẹbẹ lọ, iwọ yoo nilo lati ṣafikun awọn aye 4 fun iṣẹ-ṣiṣe ti o jẹ iṣaaju ti iwọ yoo fẹ lati kan si iṣẹ rẹ. A yoo gba sinu ohun ti ọkọọkan awọn ọrọ wọnyi tumọ si laipẹ.
Lati itọsọna ti aaye wa, satunkọ faili / bojuwo faili nipa lilo Nano ki o ṣafikun awọn ila wọnyi si opin faili naa.
from django.http import HttpResponse
def hello(request):
return HttpResponse('hello world')
Djunsọ's httpransse idahun pẹlu okun ọrọ, ti deto pẹlu ṣiṣi ati pipade '. Ni gbogbo igba ti o ba kọja alaye si iṣẹ tabi kilasi, bii ibeere tabi okun kan, iwọ yoo nilo lati lo akomo (, ṣiṣi ati pipade ati pipade ati pipade ati pipade ati pipade ati pipade ati pipade ati pipade ati pipade ati pipade ati pipade ati pipade ati pipade ati pipade ati pipade ati pipade ati pipade ati pipade ati pipade
Eyi kii ṣe gbogbo awọn gbogbo a nilo lati rii wiwo wa sibẹsibẹ. Nitoribẹẹ, a ko sọ olupin naa nibiti pe wiwo jẹ deede, a tun nilo lati ṣalaye ọna ọna nipasẹ eyiti wiwo yẹ ki o ṣe. Jẹ ki a bẹrẹ nipasẹ asọye ọna ipilẹ ni app / urls.py, ati pe a yoo wa si awọn ẹgbẹ ipa nigbamii.
Ninu ohun elo / URLs.py, ṣafikun laini lẹhin awọn alaye gbigbe lẹhin ibẹrẹ nwọle gbigba wiwo ti a ṣẹda.
from feed import views as feed_views
Bayi, jẹ ki a ṣe asọye ilana iwoye. Wo awọn apẹẹrẹ ni awọn paati mẹta, paati ọna, eyiti o sọ fun olupin ibiti o ti ṣiṣẹ ati imudojuiwọn ti o ba jẹ pataki lati ṣe orukọ miiran ti o ni oye. O jẹ ki o ṣe awọn nkan ni ọna yii ki o wa ni irọrun, nitori koodu rẹ Nigbagbogbo ti o nilo irọrun ati imudarasi lati ṣe niyelori ati rọrun lati ṣiṣẹ pẹlu. Eyi ni ohun ti oju rẹ yoo dabi, o le ṣafikun eyi si URLPTTTTS = [apakan ti app / urls.py. Ilana wiwo ti ṣalaye pẹlu awọn paati mẹta ti a salaye loke, ati iṣẹ ti a pe ni ọna. Awọn ilana URL rẹ jẹ atokọ kan, nitorinaa rii daju lati pari nkan kọọkan ni wọn pẹlu koma kan, nitori eyi ya sọtọ kọọkan. Nkan kọọkan yẹ ki o tun lọ si laini tuntun, lẹẹkan si pẹlu awọn aye mẹrin ṣaaju rẹ, gẹgẹ bi app naa ni awọn eto .py. A yoo ṣalaye paati akọkọ ti iwo pẹlu iṣẹ okun ti ṣofo, lati lati ṣẹda wiwo ti n ṣiṣẹ lori iwe itọsọna root ti olupin ayelujara. URLS.PY yẹ ki o dabi bayi bi eyi:
from feed import views as feed_views
urlpatterns = [
path('', feed_views.hello, name='hello'),
]
Eyi ni ipilẹ fun ṣiṣẹda oju opo wẹẹbu pẹlu DJango ti o jẹ apọju patapata. Lati le ṣe oju opo wẹẹbu ti o ni agbara diẹ sii nibiti a le bẹrẹ alaye caching diẹ sii, bi awọn aworan, awọn fidio, ohun ati diẹ sii, a yoo nilo lati lo awọn awoṣe, eyiti a yoo ṣawari awọn awoṣe. Ni bayi, jẹ ki a ṣayẹwo koodu wa ati ṣiṣe olupin naa. Lati ṣayẹwo koodu fun awọn aṣiṣe, ṣiṣe:
python manage.py check
Ti awọn ifiranṣẹ aṣiṣe eyikeyi wa, o yẹ ki o farabalẹ ṣe atunyẹwo awọn ayipada ti o ṣe si app rẹ ki o rii boya aaye ti ko ni aṣiṣe, ohun kikọ silẹ lairotẹlẹ, tabi ohunkohun miiran. Kika nipasẹ ifiranṣẹ aṣiṣe (ti o ba ni ọkan), o yẹ ki o ni anfani lati wo ọna si faili ti o ṣẹda tabi tẹ sinu faili yẹn, nitorinaa wo ninu rẹ ti o le ṣe atunṣe ohunkohun ti o wa nibẹ. Ti o ba ti tunṣe oro naa, ṣiṣe aṣẹ loke lẹẹkansi. Nigbati sọfitiwia rẹ ti ṣetan lati ṣiṣe ati n ṣiṣẹ, iwọ yoo rii ayẹwo "eto ayẹwo" eto eto idanimọ ko si awọn ọran. " Bayi o ti ṣetan lati lọ. Ṣiṣe olupin pẹlu:
python manage.py runserver 0.0.0.0:8000
Bayi ṣii ẹrọ lilọ kiri lori ayelujara kan ki o lọ kiri si HTTP: // agbegbe: 8000. O yẹ ki o wo ọrọ ti o pada ni aboyun ati awọn agbasọ ti iṣẹ htntPhensse ṣiṣẹ ninu iwoye rẹ. Eyi jẹ apẹẹrẹ ipilẹ kan, ṣugbọn ti o ba ṣe eyi jina, o loye awọn ipilẹ ti bawo ni Litux, baasi, Python, ati iṣẹ DJango. Jẹ ki a malẹ diri si awoṣe data, ati ṣawari agbara kilasi Python kan ni fifipamọ alaye. Lẹhinna, a yoo bẹrẹ lati gba ọti kan lori HTML ati CSS Ṣaaju ki a to aaye wa ni kikun, irọrun ati aabo JavaSCript ati ẹkọ ẹrọ.
Awọn kilasi ti wa ni fipamọ ninu awọn awoṣe.Spy ti app rẹ. Lilo Nano, ṣatunṣe Ohun elo / Awọn awoṣe.epy ati fi kilasi tuntun kun. Kilasi kan ti ṣalaye pẹlu asọye kilasi ati pe o ti kọja superclass ti o jogun lati, ninu awọn awoṣe nla yii.Model. Orukọ kilasi naa wa lẹhin itumọ kilasi, ati lẹhin itumọ kilasi a: (olupilẹṣẹ) ni a lo, ṣaaju awọn eroja ati awọn asọye iṣẹ ati awọn asọye iṣẹ ni isalẹ. Kilasi wa nilo ID kan a le lo lati gba pada ki o jẹ ki o jẹ ki o tun nilo aaye ọrọ lati fi aaye ọrọ pamọ lati ṣafipamọ alaye. Nigbamii lori a le ṣafikun iho kan, awọn faili, awọn ohun ọṣọ (otitọ tabi awọn asọye eke ti o le ṣe pẹlu awoṣe si olumulo, ati diẹ sii. Jẹ ki a yọ koodu silẹ ni isalẹ:
from django.db import models # Wọle ti o lo lati ṣalaye kilasi wa ati pe o jẹ awọn eroja
class Post(models.Model): # Itumọ ti kilasi wa funrararẹ
id = models.AutoField(primary_key=True) # ID ti awoṣe wa, bọtini ti ipilẹṣẹ laifọwọyi ti yoo jẹ ki a beere awoṣe naa, jẹ ki a jẹ alailẹgbẹ, ati pe o wulo nigbati a ba ṣẹda pẹlu awoṣe ni kete o ti ṣẹda.
text = models.TextField(default='') # Ẹya Awọn ile itaja kilasi wa, ninu ọran yii, ọrọ diẹ, ibaṣepọ si okun ti ṣofo.
Pade ki o fi faili pamọ bi a ti ṣe ṣaaju lati pari.
Ọpọlọpọ awọn aaye miiran ati awọn aṣayan miiran wa ti a yoo ṣawari wa nigbati a ba ṣe imudojuiwọn kilasi yii bi app, ṣugbọn eyi ni awọn aini ipilẹ ti ṣiṣẹda app kan. Sibẹsibẹ, awoṣe yii kii yoo ṣiṣẹ nikan. Gẹgẹbi a ti ṣalaye ṣaaju, a yoo nilo wiwo aṣa ati ilana URL aṣa lati ṣe awoṣe awoṣe yii, ati pe a yoo nilo fọọmu kan pẹlu awoṣe kan. Jẹ ki a ṣawari fọọmu naa ni akọkọ.
Lati ṣalaye fọọmu kan, ṣatunṣe app / gets.Spy pẹlu nano ki o fi awọn ila wọnyi kun. A yoo nilo awọn agbewọle meji, kilasi awọn fọọmu wa, bakanna awoṣe ti a ṣẹda (ifunni. Fọọmu naa tun le ni iṣẹ ipilẹṣẹ eyiti o ṣeto lori alaye ni ibeere ninu ibeere, awoṣe tabi bibẹẹkọ, a yoo ṣawari eyi nigbamii.
Awọn fọọmu awoṣe jẹ iwulo pupọ nitori wọn le ṣẹda awoṣe kan tabi tun satunkọ awoṣe kan, nitorinaa a yoo lo wọn fun awọn mejeeji. Jẹ ki a ṣalaye ọkan ninu fọọmu 1.pypy ni isalẹ.
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',)
Eyi ni awọn ipilẹ ti kini fọọmu ati awoṣe dabi. Fọọmu awoṣe yii le ṣee lo lati mu ese tabi satunkọ ifiweranṣẹ, yiyipada ọrọ naa ni. A yoo wo agbara fọọmu yii sinu wiwo tókàn. Ni akọkọ, jẹ ki a ṣe awọn ijidide ati jade jade data data naa, koodu wa le ṣe ajọṣepọ pẹlu awoṣe nigbati o nṣiṣẹ. Lati ṣe eyi, ṣiṣe awọn aṣẹ wọnyi:
python manage.py makemigrations
python manage.py migrate
Eyi yoo gba iṣẹju kan lati ṣiṣẹ, ṣugbọn lẹẹkan gba ọ laaye lati wọle si awoṣe ninu awọn iwo, ẹrọ kekere ninu software naa. Jẹ ki a tẹsiwaju nipa ṣiṣe wiwo ibiti a le rii awoṣe wa. Ṣatunkọ ifunni / Ibeere.py ki o ṣafikun koodu atẹle, bi a ti ṣe akiyesi. Iwọ kii yoo nilo lati ṣafikun ohunkohun lẹhin ami #, Koodu naa jẹ awọn asọye ti o lo lati tọka alaye nipa koodu naa. A yoo bẹrẹ nipa sisọ awoṣe wa ninu awọn wiwo, ati afikun si oju-ọrọ nibiti a le ṣe o sinu awoṣe bi atokọ fun ifihan. Tókàn, a yoo ṣafikun awoṣe nibiti a le ṣe fọọmu ati awoṣe pẹlu bọtini lati ṣẹda ohun titun ti o da lori awoṣe ki o firanṣẹ si olupin naa. Eyi dun ni idiju, nitorinaa jẹ ki a kan gba igbesẹ ni igbese nipa igbese. Ṣaaju ki a to pari wiwo, jẹ ki a ṣẹda awoṣe kan ti o ya awoṣe ati rii daju pe a le rii nipa ṣiṣẹda ifiweranṣẹ tuntun ninu ikarahun. Eyi ni bi iyẹn ṣe yẹ ki o wo:
posts = Post.objects.all() # Ibeere gbogbo awọn ifiweranṣẹ ni aaye data bẹ jina
Eyi dara daaroyin ti o rọrun titi ti a fi de isalẹ. Ṣelọpọ iṣẹ naa nipasẹ iṣẹ dipo ti idahun HTTP gẹgẹbi apesile tẹlẹ, gba ni bayi ni awọn ifiweranṣẹ naa), eyiti o le ṣe afihan bayi ni aaye data, ati pada awoṣe ṣalaye ninu iṣẹ. Àdàkọ naa yoo jẹ iwe HTML pẹlu kekere ti ede ti a pe ni Jinja2, eyiti o ṣe alaye alaye Python sinu HTML.
Lati bẹrẹ ṣiṣẹda awọn awoṣe, ṣe awọn ilana meji ni kikọ sii.
mkdir feed/templates
mkdir feed/templates/feed
Nigbamii, satunkọ awoṣe ninu itọsọna loke, ifunni / Awọn awoṣe, ki o fi koodu naa kun apẹẹrẹ yii. Jẹ ki a wo awoṣe fun apẹẹrẹ yii.
Eyi jẹ awoṣe ti o rọrun pupọ. O tumọ si ṣiṣi awọn afi atikale awọn afi, aami iru iwe kan pẹlu akọle iwe ifiweranṣẹ kan, ati kan fun iṣupọ ifiweranṣẹ kọọkan ninu atokọ ti awọn ifiweranṣẹ bi awo-ọrọ kan ninu awoṣe. Eyi ni gbogbo ohun ti o gba lati mu awọn ifiweranṣẹ ti o ni san, ṣugbọn ko si ọkan ninu ibi data sibẹsibẹ. Jẹ ki a ṣẹda pẹlu ikarahun. A le ṣiṣe ikarahun pẹlu Ṣakoso
python manage.py shell
Bayi, jẹ ki a gbe awoṣe wa lẹhin
from feed.models import Post
Tókàn, a yoo ṣẹda ifiweranṣẹ ti o rọrun pẹlu okun ati jade ikarahun. Okun le jẹ ohunkohun, bi pipẹ ọrọ to wulo.
Post.objects.create(text='hello world')
exit()
Ni ikẹhin, a yoo nilo lati ṣafikun ilana URL si kikọ wa. Nitoripe app ifunni wa yoo lo awọn URL pupọ ati pe a fẹ lati ma jẹ awọn iwọn faili kekere, jẹ ki a ṣẹda URLs.py agbegbe ni ohun elo ifunni wa ti o dabi eyi:
from django.urls import path
from . import views
urlpatterns = [
path('', views.feed, name='feed'),
]
A yoo tun nilo lati satunkọ URL.py ni mimọ mimọ, ohunkohun ti a pinnu lati pe ni, eyi ni itọsọna akọkọ ti a ṣẹda. Ṣatunkọ Ohun elo / App.Spy ati ṣafikun atẹle si awọn ilana URL
from django.urls import include # ni oke
# ... koodu iṣaaju nibi
Bayi, nigba ti a ba ṣiṣẹ olupin pẹlu Python Ṣakoso Oludasilẹ, a yoo rii oju-iwe naa, wo ati awo naa bi apẹrẹ URL, pẹlu awọn ohun kan ninu aaye data. Ni atẹle, jẹ ki a ṣe agbekalẹ fọọmu ti a ṣẹda ati bẹrẹ ṣiṣẹda awọn ifiweranṣẹ tirẹ. Ṣugbọn ṣaaju ki a to kọ koodu pupọ pupọ, jẹ ki a ṣe afẹyinti nipa lilo iwe afọwọkọ a kọ ni iṣaaju, afẹyinti. Ṣiṣe iwe afọwọkọ yii ni ikarahun, duro awọn akoko diẹ, ati pe gbogbo koodu naa yoo ṣe afẹyinti si ibi ipamọ GIT wa.
backup
Imuse fọọmu naa jẹ rọrun. A yoo gbe ọna wa gbe wọle, ṣafikun ibeere ibeere ifiweranṣẹ kan, ki o fi ifiweranṣẹ pamọ sinu aaye data ṣaaju iṣatunṣe si wiwo kanna. A le lo iṣẹ àbàyé ti a gbe wọle tẹlẹ, ati iṣẹ miiran ti a pe ni yiyipada lati gba URL fun ilana wiwo. A yoo beere eyi pẹlu ifunni 'okun: ifunni' nitori pe o ti wa ni ifunni, ati wiwo naa tun npe ni ifunni.
posts = Post.objects.all() # Ibeere gbogbo awọn ifiweranṣẹ ni aaye data bẹ jina
if request.method == 'POST': # Mu ibeere ifiweranṣẹ
form = PostForm(request.POST) # Ṣẹda apẹẹrẹ ti fọọmu ati fi data naa pamọ si rẹ
if form.is_valid(): # Fọwọsi fọọmu naa
form.save() # Fi nkan tuntun pamọ
return redirect(reverse('feed:feed')) # Ṣe atunṣe si URL kanna pẹlu ibeere kan
'form': PostForm(), # Rii daju lati kọja fọọmu naa sinu ipo ti o le jẹ ki o.
Bayi, a yoo nilo lati mu awoṣe naa dojuiwọn si akọọlẹ fun fọọmu titun. A le ṣe eyi nipa lilo awọn
Jẹ ki a fọ eyi si isalẹ. Kilasi fọọmu tuntun wa, àmi kan, dagba funrararẹ, ati bọtini gbigbe. Lẹkan ti o rọrun, ṣugbọn nigba ti a ba wo o, a le fẹ lati jẹ ki o dara julọ. O ṣiṣẹ, a le firanṣẹ awọn ifiweranṣẹ tuntun pẹlu fọọmu naa ati pe wọn ti wa ni fipamọ bayi ninu aaye data. Awọn nkan diẹ lo wa nibi. A lo awọn aami HTML lati ṣalaye pe iwe aṣẹ jẹ iwe HTML kan, a lo ami awoṣe ({% ...%} A tun ni lupu kan lati ṣe ọrọ nipa lilo awọn afilọ awọn aami ati aami awoṣe kan. Awọn afi si awọn afi ṣe pataki julọ nitori a le ṣalaye bi awọn apakan ti awoṣe jẹ ipilẹ bi a ṣe fi awọn alayipada sinu koodu wa.
Ni bayi a nilo lati jẹ ki asopọ wa dara julọ, nitori fun bayi o dabi ni bayi o jẹ ipilẹ gaan. A le ṣe eyi nipa lilo CSS, boya inline, tabi ni awọn kilasi ti so mọ ohun kọọkan ninu iwe adehun. CSS jẹ dara julọ nitori pe o sọ ohun gbogbo lori oju-iwe bi o ṣe yẹ ki o wo, ati pe o le jẹ ki o dara pupọ. Awọn ile-ikawe diẹ wa ti o le ṣe eyi, ṣugbọn ara mi lilọ lati jẹ bootltap.
Bootstrap le gba lati ayelujara lati oju opo wẹẹbu wọn,GeblotdsddipdstSdiap.com/. Lọgan nibẹ, tẹ bọtini lati ka awọn DISS fifi sori ẹrọ, ati daakọ koodu lati inu pẹlu apakan CDN. Iwọ yoo nilo koodu yii ni oke ti iwe HTML rẹ, ni ami ti a pe ni ori. Pẹlupẹlu, jẹ ki a lọ siwaju ati ṣẹda awoṣe ti ipilẹ ki a ko nilo lati ṣe awọn ọna asopọ wọnyi ni awoṣe kọọkan.
Ṣe itọsọna tuntun ti a pe ni Awọn awoṣe Mkdir, ati lẹhinna Ṣatunkọ Awọn awoṣe / mimọ.html.
O yẹ ki o dabi eyi:
Rii daju lati daakọ CSS ati JavaScript, awọn faili .js ati .js, nitori a yoo nilo JavaScript wa ni iṣẹ diẹ sii ni ọjọ iwaju.
Bayi, jẹ ki a pada si ikarahun Bash ki a ṣiṣẹ aṣẹ kiakia. Ranti, ti o ba nilo lati wọle si agbegbe foju, iru Orige Venv / BB BL / BB BL / ba ṣiṣẹ. Eyi yoo jẹ ki o fi sori ẹrọ awọn idimu Python ni ọna ti o jẹ ki Djugon iraye wọn. Lati fun awọn fọọmu wa ti ipilẹṣẹ nipasẹ awọn kilasi brastrap bootltap, a yoo lo package Python kan ti a pe ni awọn fọọmu crispy. A le ṣe igbasilẹ eyi pẹlu aṣẹ atẹle
pip install django-crispy-forms
Lọgan ti o ba fi eyi sii, ṣafikun si awọn eto.py
# ... koodu iṣaaju nibi
Bayi, sẹhin ninu awoṣe ifunni wa, a le yọ awọn nkan silẹ. Jẹ ki a yọ ipilẹ kuro ki o pari iwe-aṣẹ ki o rọpo pẹlu pẹlu ogún kuro ni awoṣe ipilẹ wa, lilo awọn iwọn ati itumọ dà. Pẹlupẹlu, a yoo ṣafikun agbewọle awoṣe awoṣe awoṣe pẹlu fifuye ati àlẹmọ awoṣe si fọọmu naa. Ni ikẹhin, jẹ ki a ṣafikun kilasi bootstrap si bọtini lori fọọmu lati jẹ ki o dabi bọtini diẹ sii. Iyẹn yẹ ki o dabi eyi:
Lẹwa! Iyẹn jẹ koodu diẹ ti koodu tẹlẹ. Ni atẹle, o yẹ ki o ṣe idanwo rẹ ati rii daju pe a le rii pe ohun gbogbo dara, o tun rii daju pe ohun gbogbo n ṣiṣẹ daradara. Ṣiṣe olupin naa bi awọn ilana iṣaaju ki o rii daju pe aaye naa o wo daradara. Iṣẹ nla! O ti ṣetan lati lọ si igbesẹ ti atẹle, ninu eyiti a yoo ṣafikun iṣẹ ṣiṣe wiwọle Buwolu nipa lilo awọn URL ti o jọra, awọn wiwo ati awọn awoṣe. Awoṣe pamo naa jẹ pataki, ati pe a yoo tẹsiwaju lati yipada ati ṣe awọn ayipada bi o ṣe jẹ ki o jẹ ki ẹrọ wa ni aabo ati iwe iroyin tirẹ ni irawo nipasẹ rẹ.
Lati ṣe eyi, a yoo nilo lati lo awoṣe olumulo ti a ṣe sinu DJango. Awoṣe olumulo jẹ awoṣe data, fẹran ifiweranṣẹ wa, iyẹn le ṣee ṣe olumulo wọle si oju opo wẹẹbu. Ni ọjọ iwaju, ṣaaju ki a to mu awoṣe yii pọ si Intanẹẹti, a yoo fa awoṣe yii pẹlu awọn awoṣe miiran ti a da si rẹ, ki o kọ awọn igbese aabo ni afikun fun iwọle ti o jẹ afihan si aṣiri. A yoo bẹrẹ nipa lilo diẹ ninu awọn fọọmu iwọle ti Djugo pese. Ni akọkọ, jẹ ki a ṣẹda ohun elo tuntun ti a yoo lo lati ṣe awọn awoṣe ati awọn iwo fun oju-iwe iwọle ni ipilẹ. A tun yoo ṣẹda awọn ohun elo miiran lati ṣe aṣoju awọn italanja iwọle ti o tẹsiwaju lati le ni aabo app, pẹlu pinpin oju, ijẹrisi ti ita pupọ, ati idanimọ itẹka.
A ti sọrọ tẹlẹ nipa bẹrẹ app kan. Lati itọsọna wa, inu ayika foju kan, ṣakoso awọn ariyanjiyan wọnyi
python manage.py startapp users
Bayi, o yẹ ki o ni itọsọna fun app tuntun. Jẹ ki a bẹrẹ nipa ṣiṣẹda iwo kan ninu itọsọna yẹn ti o ba ni ibamu pẹlu iwọle olumulo. DJANGO ti kọ ni awọn iwo fun awọn logoro olumulo, ṣugbọn iwọnyi kii yoo dara fun wa nitori a nilo wiwo aṣa, eyiti o dara julọ ti a ṣe pẹlu itumọ.
Ni iwoye, a yoo bẹrẹ nipa yiyewo fun ibeere ifiweranṣẹ, ibeere Pass.post si fi ọwọ wọle lati DJOCECam Itoju lati DJOCECam Itoju lati ayelujara Olumulo, ati wọle si ni ṣiṣatunṣe wọn si ohun elo ifunni wa.
Ninu awọn olumulo / ViepyCipy, ṣafikun koodu wọnyi
username = request.POST['username'] # Gba orukọ olumulo ati ọrọ igbaniwọle lati ibeere ifiweranṣẹ
password = request.POST['password'] # Jẹrisi olumulo naa
Eyi ni gbogbo ohun ti o nilo fun iwo wiwo ti ipilẹ. Bayi, jẹ ki a ṣẹda fọọmu fun wiwo nipa kiko awoṣe ipilẹ. A yoo bẹrẹ nipa ṣiṣẹda itọsọna tuntun fun awọn awoṣe ninu folda folda.
mkdir users/templates
mkdir users/templates/users
Bayi, a yẹ ki o ni anfani lati satunkọ awọn olumulo / Awọn awoṣe / awọn olumulo / iwọle / buwolu.html. Lakoko ti a wa ninu rẹ, a yoo ṣẹda awoṣe kan lati gba olumulo laaye lati forukọsilẹ pẹlu.
nano users/templates/users/login.html
Bayi, ninu awoṣe,
Eyi ni awọn ipilẹ ti awoṣe buwolu kan. O jẹ looto bi awoṣe miiran ni eto, ṣugbọn o dabi kekere diẹ ti o yatọ nigbati o jẹ. A le daakọ koodu yii lati kọ iwe-iṣẹ miiran ti o pe ni Forukọsilẹ .html, nibiti a yoo yi ọrọ pada ki o lo fọọmu tuntun ti a kọ. Jẹ ki a ṣe awoṣe akọkọ. Ṣatunṣe Awọn olumulo / Awọn awoṣe / Awọn olumulo / Iforukọsilẹ.HTML ki o ṣafikun koodu atẹle:
Bayi, jẹ ki a kọ fọọmu kan fun iforukọsilẹ olumulo wa ati Circle pada si awọn wiwo ṣaaju ki a to igbesoke awọn ifilọlẹ olumulo wa pẹlu awoṣe. A yoo ṣe ipilẹ ipilẹ yii lati bẹrẹ pẹlu, ṣugbọn ṣafikun awọn alaye diẹ sii ati awọn ẹya aabo gẹgẹbi awọn adehun ati Captcha ni ọjọ iwaju. Satunkọ awọn fọọmu pẹlu awọn olumulo Nano / Fọọmu.Spy, ki o ṣafikun koodu atẹle.
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']
Nitorina a ni fọọmu miiran nibi, eyiti o ṣiṣẹ ni ododo ni rọọrun. O jẹ fọọmu olumulo olumulo pẹlu orukọ olumulo kan, imeeli ati ọrọ igbaniwọle, bakanna Dipo ọrọ igbaniwọle ọrọ igbaniwọle. Akiyesi pe fọọmu yii fa kilasi fọọmu deede..cation, o jẹ apẹrẹ awoṣe eyiti o tumọ si pe o ni Meta. A ti ṣalaye aaye kan nikan, ati pe meta kilasi ṣalaye awoṣe naa ni ibamu pẹlu awọn iyokù alaye ti ao kọ si fọọmu naa. Pupọ julọ ti eyi ti wa ni Djungo ti a kọ ni Ṣakoso olumulo, nitorinaa a yoo lo pe bi ipilẹ fun kilasi (kọja ni akomo).
Nigbamii, a yoo ṣayẹwo iwo lati forukọsilẹ olumulo, ni bayi pe a ni fọọmu ati awoṣe. Eyi jẹ awoṣe, gẹgẹ bi ọkan ninu wiwo ifiweranṣẹ tuntun. Ṣatunṣe awọn olumulo / Iwe BEPS.py ati ṣafikun koodu atẹle:
# ... Gbigbe wọle
Eyi ni gbogbo ohun ti a nilo lati gba olumulo iforukọsilẹ, ṣugbọn o yẹ ki a ni alaye diẹ sii. A fẹ lati mọ akoko ti olumulo iforukọsilẹ, akoko wo ni wọn kẹhin lori wọn, bi itan-akọọlẹ, ni akoko, si akọọlẹ fun awoṣe olumulo ati ẹya awọn ifiweranṣẹ si olumulo kọọkan. Lati le ṣe iyẹn, a yoo ṣe imudojuiwọn awọn mosewia naa ..Spy ni awọn ohun elo mejeeji. Jẹ ki a bẹrẹ nipa ṣiṣatunkọ awoṣe ifunni. O yẹ ki o dabi eyi bayi:
from django.db import models # ... Gbigbe wọle
author = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='posts') # Ṣafikun ni laini yii
San ifojusi si laini keji ti a fi kun faili naa. Eyi jẹ bọtini ajeji, eyiti yoo ṣe apejuwe ifiweranṣẹ kọọkan si olumulo kan, nitorinaa a le rii daju pe a fi awọn ifiweranṣẹ sori ipilẹ-olumulo fun olumulo olumulo-kọọkan ati pe ko si ifiweranṣẹ olumulo. A ṣalaye bọtini ajeji yii pẹlu kilasi o duro fun, ariyanjiyan Paapa lati rii daju pe a le yọ olumulo kuro ni pato, ati orukọ ti o ni ibatan, eyiti a le lo lati tọka si awọn nkan ifiweranṣẹ naa ṣẹda. Orukọ ti o ni ibatan yii, ko dabi ifiweranṣẹ, onkọwe ti ifiweranṣẹ naa, fun wa ni Olumulo ti o fi ifiweranṣẹ funrararẹ. A le gba awọn ifiweranṣẹ bayi olumulo ṣe nipasẹ ṣiṣe olumulo.post.alls.alls.ynh (), tabi onkọwe.post.alls.yn.
Bayi, jẹ ki a ṣe awọn iṣiro wa diẹ sii resilient. A le ṣe aaye wa pupọ diẹ sii ipalara si aworan nipasẹ idinku idinku awọn akoko ti a yoo fun ojuwọle kan, eyi rọrun pupọ. Jẹ ki a tun bẹrẹ lati fi alaye pamọ diẹ nipa olumulo kọọkan ṣaaju eyiti a tẹsiwaju lati dagbasoke app wa. Ṣatunṣe awọn olumulo / awọn awoṣe.Spy, ṣafikun koodu atẹle.
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='')
Akiyesi pe awoṣe yii jẹ iṣẹtọ iru si awoṣe Post. A ni gbigbe wọle, akoko masonupo, eyiti yoo gba wa laaye lati ṣeto wa lati ṣeto awọn ase lati ṣeto awọn aseku lori awọn aaye datatiti, ati pe a tun ni ohun kikọ silẹ ati idajọ bi ifiweranṣẹ naa. Lilo gbogbo awọn times wọnyi ṣe iranlọwọ fun wa ṣe aabo aaye naa ati oye lilo rẹ, ati pe awọn aaye ọrọ naa jẹ ki a mu alaye nipa olumulo kọọkan, tabi onkọwe, lori oju opo wẹẹbu. Tẹletonefield yẹ ki o jẹ akiyesi kekere nikan, o huwa deede kanna bi iwe-afẹde igba diẹ ṣugbọn pẹlu ọkan nikan fun awoṣe atẹle. Ni ọna yii, olumulo naa ni profaili kan nikan, lakoko ti wọn le ni ọpọlọpọ awọn ifiweranṣẹ.
Bayi, jẹ ki a ṣe ilọsiwaju iwọle wa ki o forukọsilẹ awọn iwo si akọọlẹ fun profaili. Ni akọkọ, Ṣatunkọ awọn olumulo / View.epy ati idojukọ lori oju iforukọsilẹ:
# ... Gbigbe wọle
Profile.objects.create(user=user) # Rii daju lati ṣafikun laini yii, lati ṣẹda profaili kan fun olumulo naa
Eyi n kan ṣẹda profaili kan fun olumulo naa, laisi kikun ni eyikeyi alaye naa. Bayi, a fẹ lati rii daju pe akọọlẹ olumulo ko le wọle si nigbagbogbo, tabi o kere ọrọigbaniwọle ko le ṣe lati gbiyanju paapaa pupọ, nitorinaa jẹ ki a mu wiwo iwọle.
# ... Gbigbe wọle
if user and user.profile.can_login < timezone.now(): # Akiyesi pe a ṣayẹwo ni bayi ti olumulo ba le wọle
else: # Ti iwọle ko ni aṣeyọri,
user = User.objects.filter(username=username).first() # Eyi ni apakan ibiti a ṣe imudojuiwọn profaili olumulo
profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # Nitorinaa wọn ko le wọle lẹẹkansi fun iṣẹju-aaya diẹ
Eyi ni ipilẹ ipilẹ aabo. Rii daju pe aaye naa ko ni ipalara si ẹnikan ti o n ṣẹlẹ nìkan gbogbo apapọ ọrọ igbaniwọle ti o ṣee ṣe, tabi awọn diẹ ninu wọn ni akoko kanna. Eyi kii yoo ṣe ibanujẹ si olumulo arinrin ti o mọ koodu iwọle wọn ati pe o kan wọle si lori awọn ẹrọ diẹ, ṣugbọn yoo pa awọn roboti ti ọpọlọpọ jade kuro ninu app naa. Akiyesi pe a ṣafikun kan ti o ba jẹ pe o jẹ oniyipada kan, o le jẹ akoko kan ni iṣaaju, ati mu dojuiwọn pẹlu iwọle kọọkan ti ko ni aṣeyọri nipa lilo orukọ olumulo kanna. Ni ọna yii, olumulo irira kii yoo ni anfani lati gboju ọrọ igbaniwọle kan nibikibi nitosi bi yarayara. Nọmba ti awọn aaya ninu datatime.timewa () le ṣe imudojuiwọn paapaa, ati oju opo wẹẹbu yoo jẹ resilient diẹ sii sibẹsibẹ ṣeeṣe ki o kere si fun iṣẹju diẹ. Mo ṣeduro 15 lati bẹrẹ pẹlu.
Ranti, a kọ iwe afọwọkọ afẹyinti kan lati gba iṣẹ wa pamọ, nitorinaa jẹ ki a tẹsiwaju ati ṣe afẹyinti ati sẹhin ohun ti a ni bẹ lati rii daju pe a ti fipamọ. Ṣiṣe aṣẹ naa:
sudo backup
Lekan si, eyi yoo ṣafipamọ iṣẹ rẹ titi di akoko yii. Mo ṣeduro mimu awọn afẹyinti rẹ pamọ lati fi iṣẹ rẹ pamọ, ati pe o le paapaa fẹ lati ṣiṣẹ iṣẹ afẹyinti laifọwọyi. O le ṣe eyi nipa lilo Ile-iṣẹ Uiniki ti a pe ni Cron. Lati mu IwUlO yii ṣiṣẹ, ṣiṣe aṣẹ atẹle ki o tẹ ọrọ igbaniwọle rẹ sii:
sudo crontab -e
Ti o ko ba ti yan aṣayan tẹlẹ 1 fun Nano, olootu ọrọ ti o yẹ ki o faramọ tẹlẹ, ki o yi lọ si isalẹ faili nipa lilo awọn bọtini itọka. Ṣafikun laini atẹle:
0 * * * * sudo backup
Cron nlo awọn iṣẹju ọna kika, wakati, ọjọ ti oṣu, oṣu, ọjọ ti ọsẹ, ni ibiti o wa tabi nọmba kan jẹ aṣẹ. Lilo 0 fun iṣẹju ati * fun awọn aṣayan iyoku, a le ṣiṣẹ aṣẹ kan lori iṣẹju akọkọ ti gbogbo wakati ni ibẹrẹ ti iṣẹju. Eyi jẹ ki a ṣe afẹyinti koodu naa laifọwọyi. Gbogbo awọn iṣẹ Cron nigbati a pa pẹlu sudo ṣiṣe bi gbongbo, nitorinaa a ko nilo lati tẹ ọrọ igbaniwọle kan ni gbogbo wakati.
Lati jẹ ki o rọrun lati ṣe atilẹyin koodu wa laisi lilo ọrọ igbaniwọle kan, jẹ ki a mu ọrọ igbaniwọle pada fun aṣẹ Afẹyinti. A yoo ṣe eyi nipa ṣiṣe pipaṣẹ atẹle ati titẹ ọrọ igbaniwọle kan:
sudo visudo
Bayi, jẹ ki a yi lọ si isalẹ faili ki o ṣafikun laini miiran:
ALL ALL=NOPASSWD: /bin/backup
Eyi jẹ ki a ṣiṣẹ aṣẹ "Afẹyinti" bi eyikeyi olumulo, laisi ọrọ igbaniwọle kan. Ọna kika fun eyi rọrun, o kan sọkalẹ laini pẹlu "Gbogbo gbogbo rẹ = Nopasswd: / bin / bin / afẹyinti, eyiti o wa ni / USR / Bin /.
Bayi, jẹ ki a bẹrẹ ṣiṣẹ pẹlu imeeli. Imeeli jẹ pataki gaan fun awọn oju opo wẹẹbu, nitori o jẹ ọna lati tọju oju opo wẹẹbu diẹ sii aabo, iṣeduro awọn olumulo jẹ eniyan gidi, ati paapaa awọn ọja ọja tabi awọn iṣẹ ọja si awọn alabara. Ọpọlọpọ eniyan ti o loorekoore Intanẹẹti ṣayẹwo imeeli wọn lojoojumọ, ati gba gbogbo awọn aṣayan ti titaja ti wọn nifẹ si. Awọn iṣẹ diẹ wa nigbati o ba nifẹ si oju opo wẹẹbu Djugodo, ati pe o wa lati mu nkan ṣiṣẹ dara julọ fun ọ.
Ni akọkọ, o le sanwo fun iṣẹ imeeli ti yoo jẹ ki o firanṣẹ imeeli lati inu orukọ rẹ ki o nilo koodu to kere si. Ọpọlọpọ awọn iṣẹ wa ti o funni ni eyi, gẹgẹbi Google Scherpace, A firanṣẹ, Mailgun, ati diẹ sii.
Bibẹẹkọ, o ti wa ni pipa daradara lati kọ ile imeeli imeeli tirẹ laarin olupin rẹ lati ibere. Mo ṣeduro aṣayan yii, botilẹjẹpe o jẹ koodu diẹ sii ati pe o le nilo alejo gbigbaja pataki. Iwọ kii yoo ni anfani lati bẹrẹ olupin meeli lati kọnputa ile rẹ julọ julọ julọ julọ, nitorinaa jẹ ki a lọ siwaju ati ki o ṣayẹwo olupin kan ninu awọsanma ki o ṣẹda olupin meeli ti wa laarin.
Ni akọkọ, satunkọ eto.py pẹlu aṣẹ wọnyi:
nano app/settings.py
Nibiti app jẹ orukọ ti app ti o ṣẹda pẹlu ibẹrẹ.
Ṣafikun awọn ila wọnyi:
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)
Rii daju lati yi iwọnyi pada nigbati o ba ṣetan lati ran app rẹ, a yoo tun ṣe eyi nigbamii. Eto imeeli_adress yẹ ki o jẹ imeeli ti iwọ yoo fẹ lati firanṣẹ lati, ati ọrọ igbaniwọle (imeeli_host_host_posswork) yẹ ki o ṣeto si ọrọ igbaniwọle ti o nfa fun olupin naa. Mo fi ọrọ igbaniwọle silẹ ninu lati faili atunto lati jẹ ki o kuro ni koodu nipa lilo ẹyọ pataki, loke awọn ila wọnyi ni awọn eto.1y:
import os
import json
with open('/etc/config.json') as config_file:
config = json.load(config_file)
Lẹhinna, Mo ti ṣeto faili JSON kan pẹlu atunto ni /tc/config.js nipa lilo Nano gẹgẹbi atẹle.
Lati satunkọ faili naa:
sudo nano /etc/config.json
Ṣafikun awọn ila wọnyi:
{
"EMAIL_HOST_PASSWORD": "<some password here>"
}
A yoo tẹsiwaju lati satunkọ faili atunto ki o ṣafikun gbogbo awọn ọrọ igbaniwọle ati awọn bọtini a yoo lo ninu app naa. Ni bayi, jẹ ki a ṣe ayẹwo ni kiakia bi o ṣe le fi imeeli ranṣẹ nipa lilo PYTHON. Ni akọkọ, jẹ ki a ṣẹda awoṣe kan fun imeeli ijerisi kan a le firanṣẹ si awọn olumulo wa, ki o fi sinu itọsọna olumulo. Awoṣe yii yoo kọ ni HTML.
nano users/templates/users/verification_email.html
Imeeli yii jẹ iṣẹtọ rọrun. O gba aaye kan ti olumulo kan, URL mimọ fun aaye naa, ati ID olumulo kan ati ami-ami eyiti a lo lati mọ daju imeeli olumulo naa. Rii daju lati ṣalaye url mimọ ni Eto.Spy ṣaaju ki a kọ diẹ ninu koodu Python lati ṣe awoṣe. Lọ niwaju ki o ṣafikun awọn ila wọnyi si app / eto ..Spy, nitosi ibẹrẹ.
SITE_NAME = 'Django App'
PROTOCOL = 'https'
DOMAIN = 'example.com'
BASE_URL = PROTOCOL + '://' + DOMAIN
Ni ipari, nigbati aaye rẹ ti ṣetan fun Intanẹẹti ati iwọ yoo ṣe alaye rẹ, iwọ yoo fẹ lati ṣalaye agbegbe rẹ bi orukọ ìkápá ti o ra lati ṣe aṣoju aaye naa. Eyi ni orukọ ti iwọ yoo tẹ ni Albar lati le wọle si aaye rẹ. Fun bayi, o le fi ašẹ silẹ tabi lo aaye kan. Iwọ yoo tun fẹ lati yi Aye_Name si orukọ ti o fẹ lati fun aaye rẹ, ti yiyan rẹ.
Ṣaaju ki a to firanṣẹ imeeli, jẹ ki a ṣẹda monomonta kan àmibon ki a le ni Iṣiṣẹ Itọsọna iroyin ti ko pari. A le ṣe eyi nipa kikọ ati gbewọle imudarasi ilana Iṣiṣẹ iwe iroyin ti o dabi atẹle naa. Satunkọ Faili:
nano users/tokens.py
Ṣafikun koodu atẹle:
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()
Olupilẹṣẹ Token ipilẹ yii n ṣe ami ami a le fi olumulo sinu URL ati pe olulo le lo lati rii daju imeeli wọn ki o mu akọọlẹ wọn ṣiṣẹ.
Nigbamii, jẹ ki a wo bi o ṣe le fi imeeli ranṣẹ. Lilo Nano, ṣatunṣe awọn olumulo / FIPY.PY.
nano users/email.py
Fifiranṣẹ imeeli HTML ijẹrisi yoo dabi eyi:
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)
Eyi jẹ iṣẹtọ rọrun. A gbe wọle si awọn iṣẹ ti a nilo lati fi imeeli naa ranṣẹ, ṣe awọn awoṣe pẹlu awọn awoṣe, ati lẹhinna a ṣalaye imeeli nipasẹ orukọ awoṣe ki o firanṣẹ si olumulo nipa lilo iṣẹ kan. Iwọ yoo ṣe akiyesi a ko ṣalaye iṣẹ naa lati firanṣẹ meeli naa, Firanṣẹ_html_email, nitorinaa, nitorinaa jẹ ki a kọ eyi ni isalẹ koodu ti a fi kun awọn olumulo tẹlẹ / imeeli.py
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()
Eyi jẹ diẹ diẹ eka, ati pe a ko ṣetan lati ṣiṣe gbogbo koodu yii sibẹsibẹ. Ṣe akiyesi pe a n ṣalaye aise ti ko ṣe alaye ti olumulo le lo lati jade lati awọn imeeli wa. Eyi ṣe pataki, nitori awọn olumulo yoo nilo lati ni anfani lati jade kuro ninu awọn imeeli wa ayafi ti wọn ba fẹ lati ri wọn, nigbakugba. A tun ṣafikun yiyan ọrọ si ifiranṣẹ wa, eyiti o jẹ ifiranṣẹ HTML Hatrid ti awọn aami HTML. Ni ikẹhin, a ṣayẹwo ti imeeli ti a firanṣẹ, ati pe ti ko ba ṣe bẹ, a samisi ninu profaili olumulo pe imeeli wọn ko wulo.
Jẹ ki a lọ pada si awọn awoṣe olumulo nitorina a le ṣe eyi gbogbo iṣẹ. A nilo lati koju iṣẹ kan lati ṣe ina ọna asopọ kan si asopọ, ki o si ṣalaye aaye boolean kan lati ma samisi pe imeeli olumulo ko wulo.
Ni akọkọ, ṣafikun awọn agbewọle atẹle si oke awọn olumulo / awọn awoṣe.py
nano users/models.py
# ...
Tókàn, jẹ ki a ṣafikun awọn iṣẹ si awoṣe olumulo lati ṣe ami-ami olumulo lati mu imeeli ṣiṣẹ lati muu imeeli ṣiṣẹ ni ifijišẹ. Ninu awọn olumulo / Awọn awoṣe.epy lẹẹkansi, ṣafikun koodu wọnyi si opin awoṣe (koodu ti a ṣe akiyesi)
# ...
TimestampSigner().unsign(key, max_age=60 * 60 * 24 * 30) # Wulo fun ọjọ 30
Eyi jẹ iṣẹtọ ti o rọrun, a lo ohun elo ti akoko, eyiti o jẹ ohun elo ipilẹ cryptography, lati ṣẹda àmi kan eyiti yoo pari lẹhin iye akoko kan lati ṣayẹwo ti o ba wulo. A lo awọn àmi wọnyi lemeji, lẹẹkan lati ṣe iṣeduro imeeli, ati lẹẹkan fun ọna asopọ ti a ko rii.
Ni bayi ti a ni awọn wọnyi, ikẹhin ti iṣẹ ti a yoo nilo lati ṣe wa ni awọn iwo naa. Laarin awọn olumulo / Viepyr.pypy, jẹ ki a ṣafikun awọn iwo lati rii daju adirẹsi imeeli, ati lati ṣe akiyesi.
nano users/views.py
Ni akọkọ, ṣafikun awọn agbewọle atẹle. Mo sọ ni afikun diẹ nitorinaa a ko ni lati wọle si awọn ohun miiran siwaju nigbamii.
from .email import send_verification_email # Rii daju lati gbe iṣẹ ṣiṣe ijẹrisi imeeli
O le ni diẹ ninu awọn gbigbe awọn gbigbe wọnyi, ṣugbọn ko ṣe ipalara lati tun ṣe. O n lilọ lati nilo lati gbe iṣẹ fifiranṣẹ ijẹrisi ijẹrisi, ati iroyin iroyin_activation_poekens, laarin awọn agbewọle miiran.
Bayi, ni isalẹ faili naa, ṣafikun koodu wọnyi:
# ṣe akiyesi wọn
# Bibẹẹkọ yipada si oju-iwe
# Firanṣẹṣẹ (beere lọwọ, olumulo)
Eyi jẹ koodu pupọ. Jẹ ki a fọ lulẹ. Iṣẹ akọkọ, mọ ati rọrun, ko ṣe alaye olumulo lati atokọ ifiweranṣẹ. Iṣẹ keji ṣiṣẹ imeeli wọn, iwọ yoo ṣe akiyesi Mo ṣafikun iṣẹ asọye kan, tẹjumọ. O kaabọ lati lo awoṣe imeeli ati itumọ iṣẹ lati firanṣẹ imeeli kaabọ, Mo ṣẹṣẹ ko sibẹsibẹ. Iṣẹ ikẹhin ti Mo sọkalẹ ni pataki, nitori awọn apamọ mu ṣiṣẹ pari. Nitorinaa, a yoo nilo lati tun ṣe imeeli imeeli muu diẹ ninu igba naa. A le lo fọọmu ipilẹ kan fun eyi, ki o pe iṣẹ lati firanṣẹ imeeli ijerisi. Ṣaaju ki a ṣe eyi, jẹ ki a rii daju pe o firanṣẹ ni aaye akọkọ, nipa fifi akọsilẹ iṣẹ kun si wiwo forukọsilẹ. Ṣafikun laini yii ṣaaju iṣatunṣe ninu wiwo Iforukọsilẹ, ṣalaye iforukọsilẹ pala, ni awọn olumulo / Ibeere.
nano users/views.py
# ... (lẹhin) Dawọle Forukọsilẹ (ibeere):
# ... (ṣaaju) àtúnjúwe (
Iwọ ko nilo lati ṣafikun awọn ila akọkọ ati ikẹhin ni ikẹku koodu yẹn, rii daju pe oju iforukọsilẹ n firanṣẹ imeeli ijerisi si olumulo. O yẹ ki o dabi eyi:
# ... Gbigbe wọle
send_verification_email(user) # Rii daju lati ṣafikun laini yii!
Bayi, a yoo nilo lati ṣafikun fọọmu kan lati ba imeeli ṣiṣẹ. Ninu awọn olumulo / Fọọmu.Spy, ṣafikun fọọmu wọnyi:
# ... (gbe wọle)
A yoo tun nilo awoṣe kan ti o baamu si ẹda eto fifipamọ imeeli imeeli. Jẹ ki a ṣafikun awoṣe yii sinu. Ṣatunṣe faili naa:
nano users/templates/users/resend_activation.html
Ni atẹle, ṣafikun koodu ti o tẹle si faili naa.
Whew, iyẹn pupọ! Bayi, nigba ti a ba ran koodu si olupin wa, a yoo ni anfani lati firanṣẹ Imeeli HTML ati mu awọn iroyin olumulo ṣiṣẹ pẹlu tẹ imeeli ni imeeli. A tun le fẹ lati fi imeeli ti o rọrun kaabọ kan, nitorinaa jẹ ki a wo bi o ṣe le ṣe. Pada ninu awọn olumulo / Imeeli.Spy, ṣafikun koodu atẹle:
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)
Pẹlupẹlu, a yoo nilo awoṣe lati mu gbogbo alaye yii. Lori oju opo wẹẹbu mi, awoṣe dabi awọn isalẹ, ṣugbọn a kaabọ si o sibẹsibẹ o fẹ.
Akiyesi pe a ko ni pipade ara tabi awọn ami HTM, nitori a ṣafikun awọn wọnyi ni ọna asopọ ti a ba ṣafikun ọna asopọ HTML ko ṣe akiyesi. Iwọnyi jẹ pataki, ṣugbọn a ko fẹ lati ṣalaye wọn lẹmeeji.
Nitorina kini atẹle? A ti wa ọna pipẹ. Lootọ, o yẹ ki a ṣetan lati mu aaye naa si olupin. A le ṣafikun ọṣọ @Logied_logied ati ṣe awọn wiwo wa ni aabo, mu awọn ami olumulo ni ibamu, ati alaye kaṣe, eyiti o jẹ ipilẹ ohun ti oju opo wẹẹbu nilo lati ṣe lati ṣe pataki. A yoo ṣafikun awọn ẹya diẹ sii ti o wulo diẹ sii, ati lẹhinna kọ ipilẹ kan fun sisọ koodu wa si olupin jijin, iṣeto iṣeto kan, ati awọn ẹya lati ṣe aaye wa ni aabo ati pe o yẹ.
A yoo tun nilo wiwo ọrọ igbaniwọle kan, nitorinaa jẹ ki a ṣafikun pe ni iyara pupọ. DJAGO kọ ninu wiwo Ọrọigbaniwọle ọrọ igbaniwọle ti bajẹ diẹ ninu awọn iṣẹ, ṣugbọn a yoo wo bi o ṣe le kọ wiwo wa, awoṣe imeeli, ati awọn apẹẹrẹ URL. Eyi ni ohun ti iwoye dabi pe, ni awọn olumulo / Ibeere .Spypy
# ... Gbigbe wọle
Fọọmu yii ni a kọ sinu Djugodo, ṣugbọn a yoo nilo awoṣe lati jẹrisi atunto ọrọ igbaniwọle, awọn olumulo / Awọn awoṣe / Ọrọigbaniwọle / ọrọ igbaniwọle |
A tun ni awoṣe lati fi imeeli sii adirẹsi ọrọ igbaniwọle, pẹlu fọọmu ti o rọrun, ninu awọn olumulo / Awọn awoṣe / Awọn olumulo / Ọrọigbaniwọle / Ọrọigbaniwọle / Ọrọigbaniwọle / Ọrọigbaniwọle / Ọrọigbaniwọle!
Awoṣe fun imeeli funrara jẹ rọrun, o jẹ ipilẹ faili HTML ipilẹ kan lati tun ọrọ igbaniwọle sii, ni awọn olumulo / Awọn awoṣe / Ọrọigbaniwọle_emeset_email.html. Djagodo yoo tumọ faili yii laifọwọyi.
A yoo tun nilo awọn awoṣe meji diẹ sii. Ni igba akọkọ ni lati jẹrisi pe o ti firanṣẹ imeeli naa. Awọn iwo fun awọn wọnyi ti wa ni DJango, nitorinaa a nilo lati ba wọn sọrọ ni URL.Spy. Awoṣe yii wa ni awọn olumulo / Awọn awoṣe / Awọn olumulo / Ọrọigbaniwọle / Ọrọigbaniwọle_reset_done.html
Ati nikẹhin, lati jẹrisi pe atunto ọrọ igbaniwọle jẹ pipe, awọn olumulo / Awọn awoṣe / Awọn olumulo / Ọrọigbaniwọle / Ọrọigbaniwọle / Ọrọigbaniwọle_reset_compte .html
Bayi, a nilo awọn ilana URL fun awọn wiwo wọnyi. Ninu awọn olumulo / URLs.py, ṣafikun awọn apẹẹrẹ URL wọnyi:
# ... Awọn URL ti iṣaaju nibi
Awọn awoṣe mẹrin, iyẹn jẹ pupọ! Ṣugbọn ni bayi a le ni idaniloju lati ni anfani lati tun ọrọ igbaniwọle olumulo si gbogbo akoko ti a nilo lati, gbogbo wọn lati ẹrọ lilọ kiri lori ayelujara.
Mo ye pe eyi jẹ koodu pupọ. Ti o ba dabi diẹ diẹ lori ori rẹ, iyẹn dara. Iwọ yoo ni ilọsiwaju, oye yoo ni ilọsiwaju, ati pe iwọ yoo di agbara pupọ diẹ sii pẹlu koodu pupọ laipẹ. Ti o ba ti sọnu patapata, Mo ṣeduro pe n bọ pada si sọfitiwia yii nigbamii lẹhin ti o n ṣiṣẹ lori iwe-ara-ẹni ti o kẹkọọ si ọna koodu lori ayelujara. Iwọnyi jẹ igbagbogbo ọfẹ lati bẹrẹ, ati pe yoo tọ ọ nipasẹ ohun gbogbo ti o nilo lati jẹ aṣeyọri nigbati o pada wa si iṣẹ yii. Ti o ba nifẹ bi o ti ṣetan lati tẹsiwaju, ka lori, atẹle, a yoo ṣeto koodu rẹ latọna jijin ati pe o le ṣeto iṣẹ akanṣe tuntun pẹlu awọn aṣẹ ti o rọrun diẹ pẹlu awọn aṣẹ ti o rọrun diẹ pẹlu awọn aṣẹ ti o rọrun.
Ohun ikẹhin ti a nilo lati ṣe ṣaaju ṣiṣe imuran si olupin latọna jijin ni o ṣe aaye wa diẹ si ni aabo diẹ diẹ sii ni aabo diẹ sii. Iwọ yoo ṣe akiyesi pe Wiwo iwọle nikan gba orukọ olumulo ati ọrọ igbaniwọle, ati pe ko si ijẹrisi otitọ ti gbogbo tabi koodu akoko kan. Eyi jẹ atunṣe ti o rọrun, ati pẹlu koodu kanna, a le ṣe aaye wa firanṣẹ awọn ifọrọranṣẹ ati paapaa jẹ idahun si awọn ifọrọranṣẹ ti a firanṣẹ si olupin naa. Lati bẹrẹ, a yoo pada sinu awọn awoṣe olumulo ati ṣafikun oluṣapẹẹrẹ tinestamp kan ti yoo ṣe aṣoju iwọle kọọkan. A yoo tun ṣafikun alailẹgbẹ, idamo ti yiyi si awoṣe olumulo ti yoo lo lati ṣafikun aabo afikun si iwọle wa. Ṣatunṣe awọn awoṣe olumulo, awọn olumulo / awọn olumulo.py, ṣafikun koodu atẹle:
# Rii daju lati gbe UUID wọle, Olutọju Timetamp ati ẹrọ monomono (yiyipada)
# Ṣafikun koodu yii nibi
# Ki o si ṣafikun iṣẹ yii
TimestampSigner().unsign(key, max_age=60 * settings.AUTH_VALID_MINUTES) # Wulo fun iṣẹju 3
Rii daju pe awọn olumulo / awọn apẹẹrẹ rẹ ..Spy dabi eyi, Yato si awọn asọye (koodu lori awọn ila pẹlu #). Sisọ eyi ni isalẹ, o rọrun. A ni diẹ awọn agbewọle, iho ti idile eyiti o jẹ ipa ti o ni aabo ati daju pe o wulo, ati pe ko dagba ju nọmba kan lọ. A tun lo UUID kan, eyiti o jẹ idanimọ alailẹgbẹ ti o ṣe idanimọ olumulo wa ni iforukọsilẹ ti ami-ami, ati ni URL nibi ti a ti firanṣẹ ami naa si olumulo. A yoo lo cryptography ipilẹ yii lati kọ iwoye ijẹrisi meji. Ṣaaju ki a to ṣe ohunkohun miiran, jẹ ki a ṣiṣẹ awọn ijiro nitori awọn awoṣe olumulo wa ti ni imudojuiwọn. Ninu itọsọna pẹlu ṣakoso ..Spy, ṣiṣe awọn aṣẹ atẹle lati ṣe ati pari awọn gbigbe.
source venv/bin/activate
python manage.py makemigrations && python manage.py migrate
Eyi ṣe pataki nitori gbogbo akoko ti a ṣe awọn ayipada si awọn awoṣe ati imudojuiwọn data naa pẹlu awọn aseku gangan pe a le lo awọn awoṣe gangan.
Ni atẹle, jẹ ki a mu Iwo bu wọle lati tunṣe si iwoye ijẹrisi keji. Ninu awọn olumulo / Viepys.Spy, yọ kuro iṣẹ iwọle ati ki o waq si URL a kan ti ipilẹṣẹ ninu awọn awoṣe olumulo.
# ... Gbigbe wọle
if user and user.profile.can_login < timezone.now(): # Akiyesi pe a ṣayẹwo ni bayi ti olumulo ba le wọle
# Yọ iṣẹ Aut_login ti o wa nibi
return redirect(user.profile.create_auth_url()) # Akiyesi A ṣe atunṣe si URL tuntun nibi
else: # Ti olumulo naa ko ba lo ijẹrisi pupọ-ifosiweoro, wọle wọn wọle.
else: # Ti iwọle ko ni aṣeyọri,
user = User.objects.filter(username=username).first() # Eyi ni apakan ibiti a ṣe imudojuiwọn profaili olumulo
profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # Nitorinaa wọn ko le wọle lẹẹkansi fun iṣẹju-aaya diẹ
Nitorinaa eyi rọrun, a ni bayi ni ọna lati ṣe àtúnjúwe si iwo ijẹrisi meji ti a ṣẹda. A tun ni Revenger ni ọran ti olumulo ko ti ṣafikun nọmba foonu kan. A yoo ṣafikun Wo ipilẹ lati ṣafikun nọmba foonu kan laipẹ ati wọle pẹlu ifọrọranṣẹ laipẹ.
Ni akọkọ, a nilo ọna ti o rọrun lati firanṣẹ ọrọ ifọrọranṣẹ lati koodu wa. Lati ṣe eyi, a le yan lati nọmba kan ti APIS, ṣugbọn eyi rọrun julọ ninu ero mi ni Twilio. Wọn tun funni ni idiyele ti o dara fun awọn iṣẹ ti o kere ju, ati awọn ẹdinwo olopobobo. Ṣẹda akọọlẹ kan lori Twilio.com, fọwọsi ni diẹ ninu awọn alaye nipa iṣẹ akanṣe rẹ, ra nọmba foonu rẹ, ki o daakọ awọn bọtini API si awọn eto rẹ .. Lẹhinna, ṣafikun koodu yii labẹ faili tuntun, awọn olumulo / SM.PY.
nano users/sms.py
# Wọle gbogbo awọn idii to wulo
# Koodu yii firanṣẹ ọrọ pẹlu Twilio
# Iṣẹ oluranlọwọ lati gba nọmba pẹlu ọpọlọpọ awọn nọmba
# Fi ọrọ ranṣẹ lati rii daju olumulo naa
# Fi olumulo ranṣẹ si eyikeyi ọrọ pẹlu iṣẹ yii
# Jẹrisi koodu naa pẹlu iṣẹ yii
# Jẹrisi akoko naa
Rii daju lati yi awọn eto rẹ pada ni deede, fifi awọn ila wọnyi kun pẹlu awọn bọtini rẹ:
# Rii daju lati daakọ awọn wọnyi kuro ni Dasiboo Dasilio rẹ
AUTH_VALID_MINUTES = 3 # Awọn iṣẹju meji ti oju-iwe TFA ti ṣiṣẹ lọwọ lẹsẹkẹsẹ
Ni akọkọ, a yoo nilo awọn fọọmu fun awọn wiwo ijẹrisi wa meji. Ṣatunṣe awọn olumulo / Fọọmu.Spy, ṣafikun koodu atẹle.
# ... Gbigbe wọle
# Fọọmu fun titẹ nọmba foonu wa
# Fọọmu fun idaniloju
Tókàn, Jẹ ki a ṣẹda awọn iwo ni awọn olumulo / Ibeere 2.py
# ... Gbigbe wọle
A yoo tun nilo awọn awoṣe fun awọn iwo wọnyi. Jẹ ki a ṣafikun awoṣe MFA akọkọ.
nano users/templates/users/mfa.html
Ṣafikun koodu HTML yii si awoṣe
Eyi jẹ alaye ti ara ẹni lẹwa. Fọọmu naa firanṣẹ boya koodu kan tabi koodu sofo, ati pe iwọ yoo ṣe akiyesi ni wiwo ti a fi koodu ranṣẹ ti a ba gba koodu ṣofo naa. Lẹhinna a kan ni awọn bọtini akọkọ, ati ni ọna yii a le fi koodu sii pẹlu boya bọtini boya. Tókàn, a yoo ṣafikun fọọmu ti o rọrun lati ṣafikun nọmba foonu kan.
nano users/templates/users/mfa_onboarding.html
Ṣafikun HTML atẹle:
Fọọmu yii jẹ irọrun pupọ, o kan n ṣaja iru nọmba nọmba ti a ṣẹda ati jẹ ki olumulo ṣafikun nọmba foonu kan.
Eyi dara julọ! Niwọn igba ti ohun gbogbo ba ṣeto daradara, o yẹ ki a ni anfani lati firanṣẹ awọn ifiranṣẹ, ki o wọle oluṣamulo wọle pẹlu nọmba foonu wọn ni kete bi a ti ṣafikun awọn ilana URL. Ohun ikẹhin ti a nilo lati ṣeto jẹ wiwo profaili bẹ Nitorina a le rii daju pe olumulo le yi nọmba foonu wọn pada laisi wọle. Olumulo le bẹrẹ ninu awọn ifọrọranṣẹ ọjọ iwaju.
Jẹ ki a ṣafikun wiwo profaili si awọn olumulo / Ibeere.py. Wiwo yii yoo ṣe imudojuiwọn Bio olumulo, Imeeli, olumulo, ati nọmba foonu, bakanna bi o gba wa laaye lati jẹ ijẹrisi otitọ ti o mu wa ṣiṣẹ. Ni akọkọ, a yoo nilo awọn fọọmu meji diẹ sii ni awọn olumulo / Fọọmu Marts.py
# ... Gbigbe wọle
Nigbamii, a le ṣẹda wiwo lati lo mejeeji ti awọn fọọmu wọnyi. Ṣatunṣe awọn olumulo / View.pypy ati ṣafikun ninu wiwo.
# Ṣafikun awọn agbewọle wọnyi
A yoo tun nilo awoṣe fun wiwo yii.
nano users/templates/users/profile.html
Iwọ yoo ṣe akiyesi eyi jẹ fọọmu ti o rọrun ti o rọrun, ṣugbọn ni diẹ ninu awọn javascript ninu rẹ ti o firanṣẹ awọn akoonu ti fọọmu bi wọn ṣe imudojuiwọn. Eyi wulo lati ni, nitorinaa o ni anfani lati ṣe awọn iṣatunṣe laisi ifisilẹ gbangba ni gbogbo igba.
Nigbamii, a nilo awọn URL ti o ṣojuuṣe gbogbo awọn iwo wọnyi ninu awọn olumulo urn Patters. Ṣatunṣe awọn olumulo / URLS.py ati ṣafikun koodu yii:
# ... koodu iṣaaju, awọn gbigbe wọle
# ... Awọn ilana URL a wọ tẹlẹ, ṣafikun awọn ila mẹta atẹle
Bayi ni akoko ti o dara lati ṣe idanwo agbese wa. Ṣugbọn akọkọ, jẹ ki a salaye iranlọwọ miiran.
backup
Ati ṣiṣe olupin naa. Ṣaaju ki a to ba ṣiṣẹ si olupin Lainos, o jẹ imọran ti o dara lati mu ìmújijì meji lagbara lori akọọlẹ naa. A yoo ṣe eyi lilọ si URL profaili wa, /, profaili /, ati yiyewo apoti lati muu n jẹrisi nọmba foonu wa, lẹhinna tẹriba.
python manage.py runserver localhost:8000
Ṣabẹwo si oju-iwe wẹẹbu naa nipa lilọ si ẹrọ lilọ kiri lori ayelujara rẹ, Mo n lo Google Chrome ninu apẹẹrẹ yii, ati titẹ awọn httt HTTPS: // agbegbe Hall: 8000 / awọn iroyin /
Iwọ yoo ni anfani lati wọle ti o ba jẹ ki o mu ijẹrisi akọkọ meji ṣiṣẹ.
Ise agbese yii nilo olupin lati ṣiṣẹ lori nitorinaa o le firanṣẹ meeli gidi. Ṣugbọn ni akọkọ, a nilo ọna lati wo awọn aṣiṣe. Iwọ yoo ṣe akiyesi pe ti o ba ṣiṣe olupin naa ni ipo tusosi, pẹlu awọn ero yoo jẹ dogba si otitọ, olupin fihan awọn aṣiṣe laifọwọyi. Lati ṣafihan awọn aṣiṣe laisi lilo Ipo Stamp, eyiti o jẹ ailewu lori olupin iṣelọpọ, o yẹ ki a ṣafikun iwo tose fun. Awọn aṣiṣe pataki julọ ti a nilo lati ni anfani lati mu ni:
Aṣiṣe 500 - iṣoro kan pẹlu koodu wa Aṣiṣe 404 - Oju-iwe ti a ko rii (URL fifọ) Aṣiṣe 403 - Alainiṣẹ kan ti a sẹlẹ
Jẹ ki a ṣafikun app tuntun lati mu awọn aṣiṣe wọnyi, ti a pe awọn aṣiṣe.
python manage.py startapp errors
Ṣafikun eyi si awọn eto.py bi a ṣe tẹlẹ, ninu eto fifi sori ẹrọ_apps, ki o bẹrẹ sii awọn itọkasi si diẹ ninu awọn wiwo ninu app / urls.py, nibo ni app ti awọn orukọ DJgogo rẹ.
handler404 = 'errors.views.handler404'
handler500 = 'errors.views.handler500'
handler403 = 'errors.views.handler403'
Eyi ni gbogbo ohun ti a nilo tabi awọn iwo aṣiṣe, awọn awoṣe ati kekere diẹ ti lilọ. Jẹ ki a ṣalaye awọn ti o bi bẹ:
# Ṣẹda awọn iwo rẹ nibi.
Tókàn, jẹ ki a ṣalaye agbedemeji lati mu awọn aṣiṣe wọnyi. A yoo ṣe eyi nipasẹ fifi sii si agbedemeji_classes ni awọn eto ..py, pẹlu orukọ Ridware wa.
# ... Atari iṣaaju
Nigbamii, jẹ ki a ṣafikun ẹrọ abẹ.
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.')
A ṣafikun iṣẹ kan lati ni iyasọtọ lọwọlọwọ nipa lilo agbegbe ti o tẹle, eyiti o ṣe iranlọwọ fun wa wa kaakiri eyikeyi awọn aṣiṣe ninu koodu wa. Ni awọn ofin ti awọn awoṣe, a nilo ọkan nikan, nitori a ṣe alaye akọle ni wiwo. Awoṣe o kan nilo lati mu akọle ati "wa kakiri", aṣiṣe ti aṣiṣe wa lati tọ.
nano errors/templates/errors/error.html
Eyi ni awoṣe wa rọrun, ṣugbọn iyẹn ko rọrun bi o ṣe rọrun lati rii awọn aṣiṣe ninu agbese wa. Nigbamii, jẹ ki a wasokuro kuro ni awọn eto.
nano app/settings.py
Wa laini yii nibiti o ti ṣeto si otitọ, ati yi pada si eke
DEBUG = False
Lọ niwaju ati ṣe afẹyinti app ni bayi. A ti ṣetan lati ṣiṣẹ si olupin Lainos jijin, ki o tẹsiwaju awọn ẹya lati ibẹ.
sudo backup
Ṣaaju ki a to fi koodu ranṣẹ si olupin, o yẹ ki a ronu pe awọn ọran diẹ le wa pẹlu koodu. O da lori ọran naa, awọn aaye ti o gba alaye ti a fiwe si wọn yoo ni awọn ọran pẹlu ifasọjade ti a firanṣẹ ati iṣoro yiyọ àwúrúju. Eyi ko yẹ ki o ṣẹlẹ lẹsẹkẹsẹ, ṣugbọn ti o ba n ṣẹlẹ, lẹhinna a yoo ṣe ayẹwo igbagbogbo, pẹlu bii o ṣe le rii daju pe idanimọ olumulo ṣiṣẹ tabi ṣe ayẹwo olumulo kan, bi ikalẹ oju tabi idanimọ oju tabi idanimọ oju tabi idanimọ oju tabi idanimọ oju tabi oju-iwe.
Wiwo apẹẹrẹ ìṣàríṣẹlì ìfàṣẹsí a ṣe ayẹwo, ni iṣelọpọ, awọn nkan le yatọ. Ṣe akiyesi bi a ṣe jẹ iwọn awọn iṣeduro imuwọn, ati awọn àmi ipari si. Ti awọn roboti ba n wọle si aaye kan, ijẹrisi ifosiwewe meji le nira sii bi wọn ṣe le tẹ Awọn koodu ni akoko kanna olumulo naa jẹ. Lati dojuko eyi, jẹ ki a lo awoṣe ninu awọn awoṣe olumulo, sisọ bi a ti ṣe atunyẹwo pẹlu aaye naa nigbati a jẹ ẹri nipa nọmba foonu pupọ. A yoo tun ṣafikun aṣayan lati fi idi pẹlu imeeli. Bẹrẹ nipa ṣiṣatunkọ awọn awoṣe olumulo pẹlu nano.
nano users/models.py
Eyi ni ohun ti awoṣe ti a n ṣafikun yẹ ki o dabi. A ko nilo eyikeyi awọn ọna, awọn oniyipada kan lati fipamọ id, olumulo naa, ipari ati igbiyanju lodi si ijẹrisi otito pupọ (koodu kan bi 123456 ti a firanṣẹ si foonu tabi imeeli).
# APNEN Ipilẹ ti a lo lati wọle si oju opo wẹẹbu
Jẹ ki a Ṣafikun anfaani kan si olumulo wa, ati pe a yoo ṣeto pẹlu ọwọ fun ni bayi, ṣaaju ki iṣakoja si awọn olumulo awọn anfani laifọwọyi. Ninu awọn awoṣe olumulo, ṣafikun laini yii ni profaili:
vendor = models.BooleanField(default=False)
Gẹgẹ bi pẹlu eyikeyi awọn ayipada si aaye data naa, a nilo lati ṣe awọn iṣẹ ṣiṣe ati jade data data nigbakugba ti a ba ṣajọ faili.py faili ni Djungo. Ranti, lati ṣe eyi a lo orisun akọkọ (ti ko ba ti lo tẹlẹ lati igba ti ebute naa) ati lẹhinna Python ṣakoso .py lati ṣe awọn ijiro ati jade.
cd project-directory-you-named # (ti o ba nilo)
Ni bayi, o le ṣe awọn iroyin eyikeyi ti o ṣẹda bi awọn alagbata nipa lilo ikarahun.
python manage.py shell
from users.models import Profile
p = Profile.objects.get(user__username='Charlotte')
p.vendor = True
p.save()
exit()
Ni bayi, jẹ ki a pa ijẹrisi iṣeduro ilana pupọ wa lati lo àmi yii. Ni akọkọ, a nilo lati yipada awọn ohun elo oluranlọwọ MFA wa. Lilo 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
# Jẹri olumulo nipa lilo imeeli tabi nọmba foonu
token = MFAToken.objects.filter(uid=username, expires__gt=timezone.now() + datetime.timedelta(seconds=30)).order_by('-timestamp').last() # Àlẹmọ awọn ami nipasẹ iye ti o kọja ni URL (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)) # Ti igba yii ko ba ṣẹda, ṣẹda rẹ
user = User.objects.filter(id=token.user.id).first() # Gba olumulo lati àmi
if not user and request.user.is_authenticated: return redirect(reverse('feed:home')) # Ti wọn ba jẹrisi tẹlẹ, fi wọn sinu
if not user: raise PermissionDenied() # Sẹ ti ko ba ri olumulo
if not user.profile.enable_two_factor_authentication and user.is_active and user.profile.check_auth_token(usertoken, token): # Ṣayẹwo Iwe-ami Forten
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Wọle ninu olumulo ti wọn ko ba ti wọle tẹlẹ
user.profile.mfa_expires = timezone.now() + datetime.timedelta(minutes=settings.LOGIN_VALID_MINUTES) # Ṣeto ipari lori ijẹrisi ifosiwewe wọn
return HttpResponseRedirect(next if next != '' else reverse('landing:landing')) # Ṣe atunṣe olumulo si oju-iwe atẹle
if not user.profile.mfa_enabled: # Ṣayẹwo ti MFA ti ṣiṣẹ
if not check_verification_time(user, token): # Ṣayẹwo akoko naa
user.profile.mfa_enabled = False # Ko nọmba foonu kuro
user.profile.enable_two_factor_authentication = True # Mu MFA ṣiṣẹ
user.profile.phone_number = '+1' # Mu nọmba foonu naa ṣiṣẹ
user.profile.save() # Fi profaili pamọ
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Wọle ti olumulo ninu ti MFA wọn ko ṣiṣẹ
if request.method == 'POST' and not fraud_detect(request, True): # Ti ibeere ba jẹ ibeere ifiweranṣẹ
form = TfaForm(request.POST) # Yitọ fọọmu naa
code = str(form.data.get('code', None)) # Gba koodu naa
if code and code != '' and code != None: # Rii daju pe ko ṣofo
token_validated = user.profile.check_auth_token(usertoken) # Ṣayẹwo Iwe-ami Forten
is_verified = check_verification_code(user, token, code) # Ṣayẹwo koodu naa
if token_validated: # Ti ohun gbogbo
if is_verified: # Wa ni aṣẹ
user.profile.mfa_enabled = True # Mu MFA (ti ko ba ti ṣiṣẹ tẹlẹ)
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Wọle ninu olumulo
for key, value in request.GET.items(): # Kọ ibeere kan fun paramita t'okan (ti eyikeyi)
return HttpResponseRedirect(next) # Sopọ
elif not token_validated: # Ti Terken ko ba wulo
if p.mfa_attempts > 3: # Ti o ba wa ọpọlọpọ awọn igbiyanju lọpọlọpọ
if form.data.get('send_email', False): # Fi imeeli ranṣẹ (tabi ọrọ)
# Mu fọọmu naa (fun gba awọn ibeere)
Nigbati a ba n kunna ni koodu yii, rii daju lati gbe iṣẹ ṣiṣẹ lati firanṣẹ imeeli. Ni oke faili naa, awọn iwo olumulo (pẹlu awọn agbewọle miiran), ṣafikun
from .mfa import send_verification_email as send_mfa_verification_email
Ni bayi, a nilo lati kọ iṣẹ yẹn ṣaaju eyikeyi eyi yoo ṣiṣẹ. O yẹ ki o fa iṣẹ imeeli wa ranṣẹ, ati ki o fi imeeli ranṣẹ ranṣẹ si olumulo pẹlu koodu ijẹrisi.
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))
Nitorinaa gbogbo wọn ṣiṣẹ nla, bayi a ni eto ijẹrisi otitọ pupọ ti o da nọmba foonu pọ si tabi imeeli lati yọ, tabi o kere ju awọn olumulo wa ti ko ṣe ifowososi pẹlu awọn ofin wa. Awọn wọnyi le jẹ awọn spammers, awọn roboti tabi ẹnikẹni ti ko bamọmọ daradara fun iṣẹ wa. Wo iwo kan ti Mo ni fun awọn olumulo ibojuwo lori oju opo wẹẹbu mi:
# agbewọle
from .tests import is_superuser_or_vendor # A yoo nilo lati ṣẹda idanwo yii
# Gba atokọ ti awọn olumulo
return render(request, 'users/users.html', { # Pada awọn olumulo ninu awoṣe kan
Akiyesi pe koodu yii nlo idanwo kan, a yoo nilo lati sọ idanwo yii ni faili idanwo .py ati gbe wọle. Ṣiṣatunṣe awọn olumulo / Rese Marki, Jẹ ki a ṣẹda idanwo naa.
def is_superuser_or_vendor(user):
return user.profile.vendor or user.is_superuser
Eyi wa ni ajọṣepọ pẹlu awọn olumulo / olumulo awoṣe, eyiti o dabi nkan bi eyi:
Akiyesi pe awoṣe naa pẹlu awoṣe miiran, awọn olumulo /Olumulo.html. Nigbati o ba nlo awoṣe kan ti o ni agbasọ ọrọ kan ati pe ko ni lilo awọn faagun, imọran ti o dara lati ṣafikun uncerscore () Ṣaaju ki o to orukọ faili lati fa, ni ibere lati ṣe iyatọ awọn awoṣe.
Ṣe akiyesi pe eyi jẹ pupọ juna, o le ma ni gbogbo awọn oniyipada wọnyi ti ṣalaye. Ṣugbọn eyi ni ohun ti koodu mi dabi ẹni.
<small># {{Spy.id}} </ kekere>
A tun nilo suscmete miiran, Toggle_Cutmct.html. Awoṣe yii yẹ ki o jẹ fọọmu ti o fun wa laaye lati toggle boya olumulo kan n ṣiṣẹ.
A yoo tun nilo lati ṣafikun iwoye kan si iṣẹ olumulo olumulo, ati awọn ilana URL ti o yẹ. Lakoko ti a wa ni rẹ, jẹ ki a ṣafikun wiwo lati paarẹ olumulo rẹ ni ọran ti a nilo iyẹn.
# Agbewọle
success_url = '/' # Àtúnjúwe lori URL aṣeyọri
def test_func(self): # Idanwo ti olumulo ba jẹ Superuser ati pe o ni igbanilaaye lati paarẹ
Lakoko ti eyi wulo nigba pataki, piparẹ olumulo ko yẹ ki olumulo pataki julọ ti akoko, a le kan yipada si aaye ti o be ti a ba nilo lati ja wọn kuro.
Awọn awoṣe URL ti a ṣafikun dabi eyi. Pẹlu Nano, ṣatunṣe awọn olumulo / urls.py ati ṣafikun awọn ila wọnyi:
nano users/urls.py
Awọn laini yẹ ki o lọ ninu atokọ awọn ọna ninu awọn wiwo olumulo, ṣaaju ki o to pari "]" lẹhin ibẹrẹ "".
# ...
# ...
Bayi, rii daju lati ṣe afẹyinti aaye naa ki o le ṣe igbasilẹ rẹ lori olupin oju-iwe wẹẹbu A yoo tẹsiwaju lati ṣiṣẹ. Lati laini aṣẹ,
sudo backup
Bayi ni aaye wa ti ṣe afẹyinti.
Nitorina bayi a ni awọn ẹya diẹ to wulo diẹ sii. Ṣugbọn kini nipa aworan nla naa nibi? Koodu yii ko ni iraye si Intanẹẹti, a ko ni olupin olupin sibẹsibẹ, ati pe a nilo lati faagun app wa ni pipe lati ṣawari awọn ilana ti o ni aabo.
A yoo gba si gbogbo eyi. Ohun pataki julọ fun bayi yoo gba koodu yii wa lori ayelujara, eyiti a le ṣe pẹlu awọn ila diẹ ti bash lori olupin Ubuntu. Iwọ yoo nilo lati ya olupin kan fun eyi botilẹjẹpe, ayafi ti o ba ni olupin ni ile ati ṣiṣe alabapin Intanẹẹti iṣowo ti o fun ọ laaye lati ṣii awọn ibudo. Emi funrara mi ṣiṣẹ oju opo wẹẹbu mi lori iyẹwu HP Z440 kan ti o fi sii ni iyẹwu mi, ṣugbọn o jẹ igbagbogbo din owo fun awọn aini ipilẹ lati ya olupin olupin aladani kan (VPS).
Gba ni lokan pe koodu ti a nlo ni bayi jẹ tinrin, o nilo lati tọju ati imudarasi ṣaaju ki a to ṣetan lati lo ọja kan. Rii daju lati ṣọra ohun ti o ṣe pẹlu Intanẹẹti, rii daju ti o ba gbe aaye yii si oju opo wẹẹbu, o ni ero lati dè awọn ibaraenisọrọ ti aifẹ pẹlu oju opo wẹẹbu rẹ. O ṣeese yii kii yoo jẹ iṣoro ni akọkọ, ṣugbọn a yoo wo sinu ọpọlọpọ awọn solusan lati dojuko eyi, pẹlu ẹkọ ẹrọ, ipilẹ atọwọda ati iran ara. Nigbati o ba di iṣoro, o wa siwaju sii ninu ọrọ yii fun ojutu kan.
Ni awọn ofin ti yiyalo VPS kan, ọpọlọpọ awọn aaye ti o le lọ. Awọsanma Google ni awọn olupin VPS, Ionos, Awa Awo, ati Awọn iṣẹlẹ diẹ sii nfunni awọn solusan olupin awọsanma ti yoo fa awọn aini wa.
Iwọ yoo nilo lati tẹ nipasẹ awọn fọọmu wọn ki o yan eto lati bẹrẹ. O le lọ pẹlu ero ipilẹ kan pẹlu olupese eyikeyi, ṣugbọn rii daju pe olupese ngbanilaaye lati ṣii awọn ibudo olupin Awọn olupin Port (eyi yẹ ki o firanṣẹ imeeli (eyi yẹ ki o firanṣẹ imeeli (eyi yẹ ki o wa ọkọ oju-iwe STAS 587 ati Port 25), diẹ ninu awọn olupese ba ṣe idiwọ awọn ebute oko oju omi wọnyi. Nitorinaa Mo ti ni iriri ti o dara julọ pẹlu Ionos ati Kamatera, awọn mejeeji yoo gba mi laaye lati firanṣẹ imeeli ti ko ni ailopin ati idiyele wọn jẹ olowo poku.
Iwọ yoo sopọ si olupin tuntun rẹ lori Ilana Tuntun kan ti a pe ni Ssh tabi ikarahun ti o fun laaye pẹlu olupin gangan bi kọnputa ti ara ẹni, lati kọmputa rẹ. Nigbati o ba ṣeto olupin naa, olupese alejo gbigba jẹ ki o beere lọwọ rẹ lati fi bọtini SSH kun kan, tabi wọn yoo fun ọ ni orukọ olumulo ati ọrọ igbaniwọle. Bọtini SSH ni bi o ṣe le wọle si olupin lati laini aṣẹ lati ṣatunkọ koodu. Lo awọn aṣayan SSH-Keygen ni isalẹ lati ṣe bọtini SSH bọtini kan.
ssh-keygen
Fi faili pamọ ki o tun kọwe ti o ba nilo lati, o dara lati yiyi awọn bọtini SSH rẹ ti o ko ba tẹlẹ. Bayi, o le lo aṣẹ ti o tẹle lati wo bọtini SSH rẹ. Iwọ yoo fẹ lati daakọ rẹ si olupin latọna jijin rẹ ki o le lo o lati fiyesi.
cat ~/.ssh/id_rsa.pub
Ti o ko ba ni anfani lati wo bọtini SSH nigbati o ba tẹ pipaṣẹ naa (okun gigun ti awọn nọmba (wọn ti ndagba lati lo wọn.) Koodu ti o tẹle, nitorina Mo ni imọran lati lo wọn.) Koodu ti o tẹle, nitorina wọn yoo ni imọran lati lo wọn.
ssh-keygen -t rsa -b 4096
Ṣẹda VPS nṣiṣẹ ubunu, sibẹsibẹ o gbero lati ṣe eyi. Ni kete ti o ba ṣẹda VPS kan nipa titẹ nipasẹ awọn fọọmu lori oju opo wẹẹbu olupese (Kamatera.com, ti o jọra. Lati ṣe aṣẹ SSH pẹlu adirẹsi XX.xx.xx). Iwọ yoo tun nilo lati ni imọ si orukọ olumulo aifọwọyi lori olupin ti a ṣẹda, fun apẹẹrẹ, ubuntu.
ssh ubuntu@XX.XX.XX.XX
O le beere fun ọrọ igbaniwọle kan, ti o ba beere fun ọrọ igbaniwọle kan, tẹ sii. A yoo ko lo orukọ olumulo aifọwọyi, nitorinaa jẹ ki a bẹrẹ nipa ṣiṣẹda olumulo SSH kan ati fifi bọtini SSH kan si akọọlẹ wọn.
Jẹ ki a bẹrẹ nipa fifi faili Sshd_config tuntun kan, eyiti o sọ fun olupin bi o ṣe le lo SSH.
nano sshd_config
# Eyi ni faili Iṣeto SSHD lati lọ sipo. Wo
# Sshd_Config (5) fun alaye diẹ sii.
# A ṣe iṣiro SSHD yii pẹlu ọna = / USR / agbegbe: / USR / GBIN: Bin: Bin: / USR / USR:
# Awọn ilana ti a lo fun awọn aṣayan ninu aiyipada sshd_Config firanṣẹ pẹlu
# Openssh jẹ lati ṣalaye awọn aṣayan pẹlu iye aiyipada wọn nibiti
# ṣee ṣe, ṣugbọn fi wọn silẹ. Awọn aṣayan ti ko ni ibamu
# Iye aiyipada.
# Port 22
# Adirẹsi eyikeyi
# Sthodress.0.0.0.0
# Emididerd ::
# Howderkey / ati bẹbẹ / ssh / ssh_host_rsa_key
# Agbalejo / ati bẹbẹ / ssh / ssh_host_ecde_key
# Horkekey / ati bẹbẹ / ssh / ssh_host_ed25519_key
# Ciphers ati keying
# Aiyipada Diekelimit Ko si
# Gea
# AKIYESẸ
# Logleevel alaye
# Ijeri:
# Longraceinme 2m
# Gbajumọ Ifiranṣẹ-ọrọ igbaniwọle Ifiweranṣẹ
# Stitctides bẹẹni
# Maxauthtries 6
# Maxssiess 10
# Reti .Ssh / ni aṣẹ_keys2 lati wa ni aibikita nipasẹ aiyipada ni ọjọ iwaju.
# Aṣẹ fun Aṣẹ
# Aṣẹ fun Aṣẹ
# Aṣẹ fun Aṣẹ
# Fun eyi lati ṣiṣẹ o yoo tun nilo awọn bọtini ogun ni / ati bẹbẹ / ssh / ssh_now_hosts
# Gbalejo ko si
# Yi pada si Bẹẹni ti o ko gbẹkẹle ~ / .ssh / ti a mọ_hosts fun
# Agbalejo
# Aiṣododo ko si
# Maṣe ka olumulo ~ / .rhosts ati ~ / awọn faili .Shosts
# Aimọgbọnwa bẹẹni
# Lati mu awọn ọrọ igbaniwọle ọrọ kuro ni awọn ọrọ igbaniwọle ọrọ kuro, yipada si Bẹẹkọ nibi!
# Siperempypys ko si
# Yi pada si bẹẹni lati jẹ ki awọn ọrọ asọye-idahun (awọn ọran kiyesara pẹlu
# Diẹ ninu awọn modulu pam ati awọn tẹle
# Awọn aṣayan Kerbos
# Kerberauseuticiation ko si
# Keerberosorlocallocatewd bẹẹni
# Kerbedusticketccceaut
# Ko si
# Awọn aṣayan GSSApi
# GSSAPimaapment ko si
# GSSApicmupcches bẹẹni
# GSSAPICDORCICDECKCECKECK BẸẸNI
# GSSAPikexchange ko si
# Ṣeto eyi si 'bẹẹni' lati mu ki ijẹrisi pam, sisẹ rẹ,
# ati ilana igba. Ti o ba ṣiṣẹ eyi, Dom ijẹrisi idaniloju
# gba laaye nipasẹ KBDintintheactiveactiveted ati
# Ọrọigbaniwọle. O da lori iṣeto o pam rẹ,
# Pam Ijẹri nipasẹ KBDintintheatunt le for
# Eto "Permigrootlogen laisi ọrọ igbaniwọle".
# Ti o ba kan fẹ iroyin pam ati awọn sọwedowo igba lati ṣiṣe laisi
# Pari Ijeri, lẹhinna jẹ ki eyi jẹ ṣugbọn ṣeto ọrọ igbaniwọle
# ati kbdttintheatuntsication si 'Bẹẹkọ'.
# Gba laaye
# Gba laaye
# Ẹnu-ọna ko si
# X11displayomofsectuse 10
# X11
# Permittty bẹẹni
# Tẹmplastlog Bẹẹni
# Tcpenelelive bẹẹni
# Permitsuseserencation ko si
# Funlorawon
# Alabojuto 0
# Onibara Onibara 3
# Appns ko si
# Pidfile /run/sshd.pid
# Maxstarts 10: 30: 100
# Permittenel ko
# Chrotdirectorerkore ko si ọkan
# Titari ko si
# Ko si ipa-ọna asia
# Gba alabara laaye lati ṣe awọn onipokeji awọn oniyipada
# Dide aiyipada ti ko si awọn subsystems
# Apẹẹrẹ ti awọn eto iṣaro lori ipilẹ-olumulo
# Ibaamu ohun aloncvs olumulo
# X11ofowor
# Gba laaye ko si
# Permittty ko si
# Fọwọ fun olupin CVS
Ranti, Konturolu + X ati Y lati fi faili pamọ. Ni atẹle, jẹ ki a kọ iwe afọwọkọ ipilẹ kan ti a ṣe ipilẹṣẹ (gbogbo ninu itọsọna ile aiyipada ti olumulo wa).
nano initialize
Ṣafikun awọn ila wọnyi si faili naa, rirọpo
# ! / bin / bash
Lati rin ọ nipasẹ faili yii, jẹ ki a bẹrẹ laini nipasẹ laini. Laini akọkọ sọ fun alatako ti eyi jẹ iwe afọwọkọ bash. Lẹhinna a n fi awọn igbẹkẹle, didakọ ṣaṣakoso SSHT_Config si iwe itọsọna ti o peye, fifi awọn bọtini SSH fun eyi, lo ọrọ igbaniwọle wọn fun ni bayi). A tun ṣafikun ẹgbẹ si ẹgbẹ sudo, ṣe agbekalẹ kọkọrọ SSH wọn, ṣafikun bọtini wa si awọn bọtini ti a fun ni aṣẹ ati awọn ti wọn sọ ni kete, ati tẹ bọtini wọn. Olumulo tuntun yii yoo jẹ bi a ṣe wọle si aaye naa.
Ni ebute titun, lọ niwaju ki o ṣii olupin lẹẹkansi.
ssh team@XX.XX.XX.XX
O ko yẹ ki o nilo ọrọ igbaniwọle ni akoko yii, ki o ni bọtini SSH kan. A tun ṣe alaabo iwọle pẹlu ọrọ igbaniwọle lati jẹ ki aaye naa ni aabo diẹ sii.
Bayi, olupin yii bẹrẹ ni ofifo patapata laisi alaye lori rẹ. Jẹ ki a bẹrẹ nipasẹ monning iṣẹ wa lati Git ki a le ṣe igbasilẹ ati ṣiṣe sori ẹrọ latọna jijin. Lori olupin jijin ti o sopọ lori SSH, kọkọ tẹ bọtini SSH rẹ:
cat ~/.ssh/id_rsa.pub
Nigbamii, lẹẹ bọtini yii sinu awọn eto git bi a ṣe ṣaaju lati ṣeto ibi ipamọ rẹ ti wa. A le ni bayi pa agbese wa taara si olupin naa. Rii daju pe o ti ṣe afẹyinti ise agbese na ni akọkọ nitorinaa o wa lori olupin git lati gbasilẹ.
git clone git://github.com/you/yourproject.git
Pipe. Bayi gbogbo awọn faili wa nibi. A le rii wọn pẹlu LS
ls
Bayi, jẹ ki a bẹrẹ lati ṣeto olupin naa. Ni akọkọ, daakọ itọsọna iṣẹ rẹ si irorun, orukọ iranti a yoo lo fun iṣẹ naa.
cp -r yourproject whatyoucalledit
Nibo ni "wo ni o jẹ orukọ tuntun ti iṣẹ rẹ. Nigbamii, a yoo nilo lati kọ agbara ipilẹ lati ṣeto olupin. A yoo fi ipa pamọ ati lo ni ọjọ iwaju. Lati kọ ipa yii, jẹ ki a ṣẹda alakomeji olumulo lati ṣalaye bi a ṣe satunkọ iwe afọwọkọ kan. Lilo Bash, Ṣatunkọ / USR / bin / ascript
sudo nano /usr/bin/ascript
Rii daju lati lo Sudo Nibẹ Nitorina o ni awọn igbanilaaye lati satunkọ faili naa. Ninu faili, ṣafikun awọn ila wọnyi:
# ! / bin / bash
echo "# ! / bin / bash ">> / USR / BL / $ 1
Ranti iwe afọwọkọ yii gba ariyanjiyan, orukọ afọwọkọ, bi $ 1. Ni akọkọ o ṣayẹwo tẹlẹ ti faili naa ba ṣẹda rẹ, ṣafikun laini akọkọ lati sọ orukọ rẹ, awọn atunṣe eyiti o jẹ ki a fi awọn orukọ awọn iwe afọwọkọ pamọ. Ti faili naa ba wa tẹlẹ, ṣiṣe awọn igbanilaaye yipada awọn igbanilaaye ki o satunkọ rẹ. Fi faili pamọ, ati nigbamii ti a yoo yi awọn igbanilaaye pada. Niwọn igba ti a lo iwe afọwọkọ yii, a ko ni lati ṣe eyi lẹẹkansi.
sudo chmod a+x /usr/bin/ascript
Pipe. Bayi jẹ ki a ṣẹda iwe afọwọkọ ti a pe ni eto. Ni akọkọ, kii ṣe lati bori rẹ, ṣugbọn wo ohun ti iwe afọwọkọ ti o ṣeto mi dabi. A yoo rin nipasẹ ohun ti iwe afọwọkọ yii yẹ ki o dabi ninu iṣẹ rẹ, iwọ kii yoo nilo ohun gbogbo ninu iwe afọwọkọ mi lati bẹrẹ.
# ! / bin / bash
# sudo chmod kan + x x / Mersup
# ./Scripts cusussetup
# Ssh-Keygen
# Itọsọna iṣẹ agbese
# Wọle Awọn aṣẹ Wọle
# Nano atunto na
# Git atunto
# Ṣe imudojuiwọn ati fi sori ẹrọ
# Mu ṣiṣẹ Clamav antivirus
# Ṣeto orukọ ogun
# Eto Postgrgs
# Eto afẹyinti data
# Mu ITPEDSE
# Fi bitdefender
# Eto Postfix
# Ṣẹda awọn dọti
# Ṣeto ipa
# Gba ati kọ awọn igbẹkẹle
# Ṣeto awọn ofin ogiriina
# Fi awọn ere ilẹ PYPI sori ẹrọ
pip3 install --upgrade opencv-python # == 4.5.4.40
pip3 install --upgrade opencv-contrib-python # == 4.5.4.40
# pàpà fi sori ẹrọ otenv-python == 4.5.5.64
# pàpà fi sori ẹrọ otenv-forib-python == 4.5.5.64
# Fi sori ẹrọ ijẹrisi
# Run curbot
# Tun awọn olupin meeli
# Coac Cocs
# sudo cp /etc/letsncycyrt/live/fimmeBababe.com/plivekey.pem
# sudo cp /etc/letsncyrt/live/femmeBababe.com/cert.pem Cre.pem
# Patch Venv
# Ṣeto awọn eto olumulo
# Ṣeto awọn igbanilaaye
# Ẹgbẹ Sudo Chio -r: Awọn olumulo / VAR / Run /
# Sudo chown gbongbo: Gbongbo / Run / Sudo / TS -r
# sudo chmod 664 db.sqlite3
# Sudo Chewn www-data: Awọn olumulo db.sqlite3
# Ẹda atunto ati ṣeto awọn igbanilaaye
# Eto data
# Inter paptid ati ki o yọ atunto SSH aṣiṣe
# sudo sele -i '-e' $ d '/tc/pam.d/shd
# sudo sele -i '' -e '$ D' / bẹbẹ / bẹbẹ lọ
# Daakọ By awọn iwe afọwọkọ ati ṣeto awọn igbanilaaye
# Tun gbe ati mu ṣiṣẹ awọn iṣẹ
# Mu awọn modẹmu astal ṣiṣẹ
# sudo A2Disdu mpm_event
# sudo A2Dist mm_Worcher
# sudo A2Enmod mpm_preerk
# Mu aaye aifọwọyi pada
# Mu aaye wa ṣiṣẹ
# Tun gbe Damone ati tun bẹrẹ Afun, Postfix ati Openkem
# Ṣeto awọn igbanilaaye
# Iṣatunṣe Swap
# Bibẹẹkọ Ile-iṣẹ
# Oso okun
# Fihan Ipv6 ati Openkim fun iṣeto iforukọsilẹ
# Eto pari
Iyẹn ni ọpọlọpọ ṣeto! Ni kukuru, awọn aṣẹ koodu yii, tunto Nano ati Git lori awọn apoti, awọn igbẹkẹle data Awọn iwe-ẹri sori ẹrọ ati ṣeto olupin naa, fi imudani ṣiṣẹ, bẹrẹ ati fun awọn igbanilaaye Allifo, ati tẹjade naa, adirẹsi IPv6 ati bọtini itẹwe. Iṣẹtọ ti o rọrun, ṣugbọn o dabi koodu pupọ. A yoo nilo pupọ ninu eyi nitori a ko ni awọn igbẹkẹle, a ko lo selecle, selerybeat tabi danm, ṣugbọn a yoo fi sii diẹ ninu wọn lati bẹrẹ. Ṣe akiyesi pe koodu yii ni agbegbe kan ti a fihan ni igba pupọ.
A yoo tun nilo lati ra orukọ ìkápá kan (eyiti o jẹ owo kekere ni ọdun kan). Mo ṣeduro Squarespace fun rira kan ìkápá kan, ipele wọn jẹ ogbon ati rọrun lati lo. O le ra eyikeyi ìkápá ti o fẹ, ṣugbọn Mo n lo awọn ši ba ši baybabe.com ninu apẹẹrẹ yii. Ni kete ti o ba ra ašẹ kan, ori si squaressece dns Proficuration POTS nronu ati ṣafikun igbasilẹ kan ti o tọka si ìkápá rẹ si olupin nipasẹ adiresi IP. O yẹ ki o dabi eyi:
@ Xx.xx.xx.xx
Pẹlu oniṣẹ @ Onija, tumọ gbogbo awọn subdomains labẹ yii ati agbegbe gbongbo yoo ni gbogbo àtúnjúwe si olupin. Awọn igbasilẹ diẹ sii lati kede, ṣugbọn a le lọ si awọn wọnyi ni kete ti a ba ṣetan lati firanṣẹ meeli. Ni lokan, o le gba awọn ọjọ pupọ ṣaaju ki o to ni anfani lati ṣaṣeyọri firanṣẹ meeli lati ọdọ olupin naa. Awọn igbasilẹ DNS ti a ṣeto yoo lo akoko lati tan.
Lọnakọna, igbasilẹ kan ṣoṣo ti a nilo lati bẹrẹ jẹ igbasilẹ kan. Nitorinaa bayi a le kun iwe afọwọkọ ti o wa ni isalẹ gẹgẹ bi iṣẹ wa ati ṣiṣe.
Jẹ ki a bẹrẹ pẹlu iwe afọwọkọ oso kekere kan lati kan fi ohun ti a nilo fun ilọsiwaju ipilẹ. A yoo lo ọpọlọpọ awọn igbẹkẹle tabi ifiweranṣẹ PostgreSQL sibẹsibẹ, a yoo kan bẹrẹ olupin Ipilẹ HTTP ipilẹ ati idaamu nipa ijẹrisi nigbati iyẹn ba ti ṣee. Ranti, lati gba ijẹrisi ti httPS ati ṣiṣe olupin ti o ni aabo, a yoo nilo lati ra ibi-akọọlẹ kan pẹlu kalo olupin kan. Ni bayi, Rọpo "ẹgbẹ" ninu faili yii pẹlu orukọ olumulo rẹ, "dire" pẹlu iwe itọsọna ti iṣẹ akanṣe rẹ, ati pese imeeli ati agbegbe rẹ ninu <> Awọn afi.
Ni afikun, ṣaaju ki a to ṣiṣe koodu yii, a nilo lati yi eto pada si ogiriina oju-iṣẹ awọn atilẹyin olupese, ti eyikeyi. Nigbagbogbo eyi wa ninu awọn nẹtiwọọki 'ti olupese alejo gbigba rẹ, tabi ti o ba jẹ alejo gbigba ti ara, awọn oniwe-pe' Ifihan Okun Park ti Olulana rẹ. Iwọ yoo tun fẹ lati ṣeto IP aimi nipasẹ olulana rẹ pẹlu adirẹsi ti ẹrọ olupin rẹ, ti o ba nlo alejo gbigba ara. Iwọ yoo nilo lati ṣii awọn ebute oko oju opo atẹle fun ka / kikọ wiwọle.
22 (SSH) 25 (meeli) 587 (Mail) 110 (meeli alabara) 80 (http) 443 (https)
# ! / bin / bash
# Wọle Awọn aṣẹ Wọle
# Nano atunto na
# Git atunto
# Ṣe imudojuiwọn ati fi sori ẹrọ
# Mu ṣiṣẹ Clamav antivirus
# Ṣeto orukọ ogun
# Eto afẹyinti data
# Mu ITPEDSE
# Ṣeto ipa
# Fi sori ẹrọ ijẹrisi
# Run curbot
# Ṣeto awọn eto olumulo
# Ṣeto awọn igbanilaaye
# Ẹgbẹ Sudo Chio -r: Awọn olumulo / VAR / Run /
# Sudo chown gbongbo: Gbongbo / Run / Sudo / TS -r
# Tun gbe ati mu ṣiṣẹ awọn iṣẹ
# Mu awọn modẹmu astal ṣiṣẹ
# Tun gbe Damone ati tun bẹrẹ Afun, Postfix ati Openkem
# Fihan Ipv6 ati Openkim fun iṣeto iforukọsilẹ
Ṣaaju ki o to nṣiṣẹ koodu yii, rii daju orukọ naa ti o ra ni asopọ si olupin naa. Lati ṣe eyi, ṣii ebute ebute rẹ lori ẹrọ agbegbe rẹ, ati ṣiṣe aṣẹ yii pẹlu orukọ rẹ:
ping femmebabe.com # Fi orukọ rẹ sii nibi, lẹhin Pingi
Ti gbogbo rẹ ba dabi daradara ati olupin naa n firanṣẹ awọn idahun, a ti ṣetan lati ṣiṣẹ iwe afọwọkọ ati fifi awọn idii sori ẹrọ bi ibẹrẹ, jẹ ki o jẹrisi olupin afun wa.
Eyi kii ṣe gbogbo iṣeto ti o nilo lati tunto Postfix, a yoo wo eto yẹn diẹ sii nigbamii. Fun bayi, ṣiṣe koodu eto oṣo ati pe o yẹ ki o gba to iṣẹju diẹ lati fi sori ẹrọ ati jẹrisi olupin rẹ. Lekan si, rii daju pe o ro orukọ, imeeli ati orukọ ašẹ ninu iwe afọwọkọ gẹgẹ bi orukọ ti o ra.
Ni bayi pe olupin ti wa ni ipese, o le lọ si URL ni ẹrọ lilọ kiri lori ayelujara. Ṣayẹwo lati rii daju pe olupin naa nṣiṣẹ awọn HTTPS. Ti kii ba ṣe bẹ, gbiyanju duro de kekere diẹ fun awọn igbasilẹ DNS lati yẹ ki o mu aṣẹ atẹle ṣiṣẹ lati tunṣe ijẹrisi Crectot:
sudo certbot --apache --non-interactive --agree-tos --domains <domain>.com --email <youremail>@gmail.com
Niwọn igba ti o ba tunto ohun gbogbo ni pipe, o yẹ ki o ni anfani lati wọle si oju-iwe Afun ni lati mọ koodu rẹ ti n ṣiṣẹ ati ṣafihan oju opo wẹẹbu laaye. Ni atẹle, jẹ ki a satunkọ eto naa.py lati yi ipo n ṣatunṣe aiyipada wa si iṣelọpọ. A yoo tun tunto awọn agbegbe ninu awọn eto, ati IPS inu.
nano yourproject/settings.py
Ninu awọn eto, yi / ṣafikun awọn ila wọnyi.
# Aaye atunto aaye
Bayi, a yoo nilo lati tunto Apache2. Jẹ ki a ṣatunkọ faili atunto ti a yoo ran pẹlu ila yii:
sudo nano /etc/apache2/sites-available/femmebabe-le-ssl.conf
Faili atunto yii yẹ ki o ni orukọ orukọ wa ninu rẹ, ati orukọ olumulo ati iṣẹ naa. Mo n lo ašẹ orukọ Ferimakai.com, ẹgbẹ olumulo, ati orukọ iṣẹ obe ti Femmevabe.
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>
Rii daju lati rọpo orukọ iṣẹ naa, awọn oludari, ati ašẹ ninu koodu apẹẹrẹ yii nigbati o ba tun olupin rẹ jẹ. Bayi, a yoo nilo lati mu aaye aiyipada kuro. Eyi le ṣee ṣe ni lilo bash.
sudo a2dissite 000-default-le-ssl
sudo a2dissite 000-default
sudo a2dissite default-ssl
Tókàn, a le mu aaye aiyipada ati gbekalẹ Aped22, tun lilo bash. Ranti lati rọpo Femmemababe pẹlu orukọ faili ti o ti kede nigbati ṣiṣatunkọ ni / ati bẹbẹ / apche2 / awọn aaye-otes-wa /.
sudo a2ensite femmebabe-le-ssl
sudo systemctl reload apache2
Pada si aaye rẹ ni Navar. O yẹ ki o wo aaye ti o tunto ninu ẹrọ lilọ kiri lori Ayelujara rẹ. Oriire! Ti o ko ba rii, o le nilo lati ṣe diẹ ninu awọn ayipada. Ni pẹkipẹki ṣe atunyẹwo awọn eto ninu iṣẹ rẹ, Iṣeto Atọche, ati rii daju pe o ko ni awọn aṣiṣe eyikeyi, o si ṣiṣe awọn aṣẹ atẹle lati ṣayẹwo iṣẹ naa fun awọn aṣiṣe naa.
cd projectname
source venv/bin/activate
python manage.py check
Ti o ba ni awọn aṣiṣe ninu iṣẹ Pytnon rẹ, wa kakiri wọn si ibiti wọn ti wa ati fix wọn. O le ko ni anfani lati wo gbogbo awọn aṣiṣe rẹ da lori ibi ti wọn wa, nitorinaa ti o ba ni aṣiṣe ti o sọ pe ", satunkọ faili ti o tẹle", o satunkọ aṣiṣe.
nano venv/lib/python3.12/site-packages/django/apps/registry.py
Yi lọ si Laini 83, nibiti aṣiṣe asikoyi yii ni a gbe dide (Dide Cermetimerror ("polatelat () kii ṣe ọrọ-ọrọ ṣaaju iṣalaye kanna, pẹlu iṣalaye kanna, ti ara ẹni.app_configs = {} Eyi dabi eyi:
# Dena awọn ipe rementrrant lati yago fun ohun elo apconfig.red ()
# awọn ọna lemeji.
# Dide ReremeTerror ("polatelate () kii ṣe atunkọ")
Lẹhinna o le ṣayẹwo iṣẹ akanṣe naa lẹẹkansi ati ṣafihan aṣiṣe naa.
python manage.py check
Lẹhinna o le rii aṣiṣe ki o fix. Nigbati o ba ti wa titi ati awọn akopọ koodu ti ko ni aṣiṣe, rii daju lati yi faili pada ki o dabi eyi:
# Dena awọn ipe rementrrant lati yago fun ohun elo apconfig.red ()
# awọn ọna lemeji.
# Ara ẹni.app_configs = {}
Pese olupin naa wa lori ayelujara, nigba ti a ba ṣe awọn ayipada eyikeyi siwaju si rẹ, a nilo lati lo aṣẹ ti o tẹle lati tun gbe olupin naa:
sudo systemctl reload apache2
Oniyi! Ṣugbọn kini nipa fifiranṣẹ meeli? Lati bẹrẹ fifiranṣẹ imeeli, a yoo nilo akọkọ lati ṣe imudojuiwọn iṣeto ni aṣẹ naa. Eyi yẹ ki o wa ninu nronu DNS rẹ ni Squarespace, tabi ohunkohun ti ìkápá orukọ ti o yan. A yoo tun nilo lati fi sori ẹrọ ki o ṣafikun iṣeto, ati ṣiṣe awọn aṣẹ diẹ.
Ni akọkọ, jẹ ki a gba adirẹsi IPv6 ti olupin naa. A yoo lẹhinna ṣii DNS rẹ ki a ṣafikun awọn igbasilẹ naa.
Lati gba adirẹsi olupin olupin olupin, lo aṣẹ yii:
ip -6 addr
Bayi, a le ṣafikun awọn igbasilẹ wọnyi si Eto DNS. Awọn igbasilẹ mi dabi eyi. Sibẹsibẹ, fun awọn igbasilẹ rẹ, o yẹ ki o rọpo adiresi IP pẹlu IP rẹ (ko 75.147.182.214, iyẹn ni temi. Tun ṣafikun ašẹ rẹ ni aaye Femmebabe.com, bi daradara bi aṣẹ IPv6 rẹ ti a rii pẹlu aṣẹ tẹlẹ (o ko le lo mi, fa80 :: FUFF: 3E02). Maṣe daamu nipa ApamọkeySkey fun bayi, eyi ni a ṣẹda nigba ti a ṣeto powedfix, olupin meeli, pẹlu openkim, ati tẹ bọtini naa. A yoo tunto eyi ikẹhin.
@ A N / a 75.147.182.214
@ Mx 10 Femmebabe.com
@ Ptrt N / a Femmebabe.com
@ Txt N / a TXT @ = SPF1 MX IP75.147.1822.214114.214 :: FFF: Feff9: 3E02 ~ Gbogbo
aiyipada ._bimi Txt N / a v = Bimi1; L = HTTPS: //FEMMEBE.com/media/static/femmeBeBabe.svg
_dmarc Txt N / a v = Dmarc1; P = ko si
Tẹranni
Txt
N / a
Bayi, a yoo nilo lati ṣafikun iṣeto diẹ kikankikan fun PostFix. Gbogbo ohun ti a nilo lati ṣe ni rii daju pe a rọpo orukọ ìkápá, Femmebabe.com, pẹlu orukọ ìkápá ti o nlo. Jẹ ki a wo gbogbo awọn faili atunto ọkan nipasẹ ọkan, ki o fi wọn sinu iwe itọsọna ti a pe ni atunto ni agbese wa, fun fi sori ẹrọ si OS.
nano config/etc_postfix_main.cf
Ṣafikun ọrọ yii si faili naa
# Wo Opo /Share/postfix/main.cf.dist fun asọye kan, ẹya ti o pari diẹ sii
# Debician ni pato: ṣalaye orukọ faili kan yoo fa akọkọ
# laini faili yẹn lati lo bi orukọ. Aiyipada Debicoin
# jẹ / ati be be lo.
# MyIrinn = ati be be lo / Mailname
# Afikun .Amilain ni iṣẹ Mua.
# Ṣe iwọn laini atẹle lati ṣe ina "awọn idasilẹ meeli" awọn ikilọ
# idaduro_warning_ime = 4h
# Wo http://www.postfix.org/gcomptitunbi.org/gcomptitunbi.HTML - aiyipada si 3.6 lori
# Alabapade awọn fifi sori ẹrọ.
# Tls irekọja
# Iṣeto BLETTER
Atunto atẹle!
nano config/etc_postfix_master.cf
Ṣafikun awọn ila wọnyi:
#
# Faili PostFix Master ilana faili iṣeto. Fun awọn alaye lori ọna kika
# Ti faili naa, wo Titunto si (5) oju-iwe Afowoyi (aṣẹ: "Eniyan 5 Titunto" tabi
# Lial: http://www.postfix.org/mster.html).
#
# Maa ko gbagbe lati ṣiṣẹ "tito PowedFix tabi lẹhin ṣiṣatunṣe faili yii.
#
# (======================================
# Iru Iṣẹ Iṣẹ Iṣẹ-iṣẹ Ainiwọ Ainifii Idojukọ Ainipu Caxproco + Ars
# (bẹẹni) (bẹẹni) (rara) (rara) (100)
# (======================================
# Intet int SMP n - Y - 1 Postscreen
# Siltpd Pass - - y - - SMTTD
# DNSBlog Unix - - Y - 0 DNSBlog
# Tlsproxy Unix - - y - 0 tlsproxy
# Yan ọkan: Ṣiṣẹ ifakalẹ fun awọn alabara loopoback nikan, tabi fun alabara eyikeyi.
# 127.0.0.:Masebu ti wa ni inet n - y - SMTTD
# -O sypog_name = PostFix / ifakalẹ
# -o smalt_tls_securation_level = encrypt
# -our slasttd_sasl_auth_enable = bẹẹni
# -o smalt_tls_auth_only = bẹẹni
# -
# -O SMTTPD_CpTient_ficityrictiction = $ Mua_Crientiration
# -O smalt_helo_restrictions = $ mua_helo_restrictions
# -O SMTPD_SENTRINSTILITSTINILILSTS = $ Mua_Sender_
# -O SMTPD_RECPD_RETECILTIONCILILLITS =
# -o smarkd_relay_relaty = iyọọda_sasl_authented, kọ
# -O Milter_macro_daemon_name = ti ipilẹṣẹ
# Yan ọkan: Mu SMTPS fun awọn alabara loopeback nikan, tabi fun alabara eyikeyi.
# 127.0.0.1:SMTPS Inet n - Y - SMTTD
# SMTPS Inet n - Y - SMTTD
# -O syssgog_name = Postfix / SMTPS
# -ormd_tls_wrpermode = Bẹẹni
# -our slasttd_sasl_auth_enable = bẹẹni
# -
# -O SMTTPD_CpTient_ficityrictiction = $ Mua_Crientiration
# -O smalt_helo_restrictions = $ mua_helo_restrictions
# -O SMTPD_SENTRINSTILITSTINILILSTS = $ Mua_Sender_
# -O SMTPD_RECPD_RETECILTIONCILILLITS =
# -o smarkd_relay_relaty = iyọọda_sasl_authented, kọ
# -O Milter_macro_daemon_name = ti ipilẹṣẹ
# 628 inet n - y - qmqpd
# qmgn Unix n - n 300 1 oqmgr
# -o SMTP_Helout_iout = 5 -O SMTP_Connect_iout = 5
#
# (=====================================
# Awọn atọwọdọwọ si sọfitiwia ti kii-postfix. Rii daju lati ṣayẹwo itọsọna naa
# Awọn oju-iwe ti sọfitiwia ti kii-postfix lati wa iru awọn aṣayan ti o fẹ.
#
# Ọpọlọpọ awọn iṣẹ wọnyi lo lo Pipe postfix (8) ifijiṣẹ
# aṣoju. Wo Pipe (8) Oju-iwe Eniyan Fun alaye nipa $ {olugba}
# ati awọn aṣayan imeeli miiran ti ifiranṣẹ miiran.
# (=====================================
#
# Maildrop. Wo faili Mailfinx Mailforme fun awọn alaye.
# Tun ṣalaye ni Main.cf: Chesdrop_destination_Recripientienter_ Elimit = 1
#
#
# (=====================================
#
# Awọn ẹya Cyr Cyrus le lo ti o wa "LMTP" Akọsilẹ Titunto .f.
#
# Pato ni Cyrus.Cof:
# lmp cmd = "lmtpd -a" fetisilẹ = "agbegbe: LMTP" pmt = TCP4
#
# Pato ni Main.cf Ọkan tabi diẹ ẹ sii ti atẹle:
# Apoti meeli = LMTP: Inet: agbegbe
# Virtual_Transport = LMTP: INTET: agbegbe
#
# (=====================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Tun ṣalaye ni Main.cf: Cyfus_Destest_Recripientienter_ Elimit = 1
#
# Cyrus Unix - n n - - paipu
# asia = olumulo Drx = Cyrus Argev = / Cyrus Ganv = / Cyrus Gan -e -r $ {Ifiweranṣẹ $ {$ {olumulo}
#
# (=====================================
# Ajọjọ atijọ ti ifijiṣẹ nipasẹ Cyrus.
#
# atijọ-cyrus Unix - n n - - paipu
# asia = r Olumulo = cyrus argev = / Cyrus Ganv = / Cyrus / BIN / fifiranṣẹ -M $ {olumulo}
#
# (=====================================
#
# Wo faili postfix uucp_readme fun awọn alaye iṣeto.
#
#
# Awọn ọna ifijiṣẹ ita miiran.
#
Ati iṣeto openkim. Openka ṣe idanimọ awọn olupin imeeli pẹlu awọn bọtini Abo lati jẹ ki wọn ni aabo diẹ sii ni aabo. Laisi rẹ, Mail ko fowo si ati pe ko le ṣe si apo-iwọle.
nano config/etc_default_opendkim
Ṣafikun awọn ila wọnyi:
# AKIYESI: Eyi jẹ faili iṣeto Iṣeduro. O ko lo nipasẹ awọn openkim
# Iṣẹ eto. Jọwọ lo awọn paramita proficalus ti o baamu
# /etc/pndkim.conf dipo.
#
# Tẹlẹ, ọkan yoo ṣatunkọ awọn eto aiyipada nibi, ati lẹhinna ṣiṣẹ
# /lib/pundkim/OPendkim.service lati ṣe ina awọn faili Seyd ni
# /etc/ssemd/sstem/pyndkim.service.cnc ati
# /tc/ttmpfiles.d/pondnim.cnf. Lakoko ti eyi tun ṣee ṣe, o jẹ bayi
# Iṣeduro lati ṣatunṣe awọn eto taara ni /etc/pnddim.conf.
#
# Daemon_opts = ""
# Yi pada si / Var / Spool / PostFix / Ṣiṣe / Openkem lati lo iho alailopin pẹlu
# Postfix ninu iwe Chroot:
# Rundir = / var / Spool / PostFix / Ṣiṣe / Openkem
#
# A ko ṣeeṣe lati ṣalaye socket kan
# Akiyesi pe eto yii yoo ja iwọn okun eyikeyi ninu openkim.conf
# aiyipada:
# Gbọ lori gbogbo awọn atọwọdọwọ lori ibudo 54321:
# Iho = Inet: 54321
# Gbọ lori ẹrọ yipo lori ibudo 12345:
# Iho = Inet: 12345 @ agbegbe
# Gbọ lori 192.0.2.1 Lori ibudo 12345:
# Socke = Inet: 12345@199.0.2.1
nano config/etc_dovecot_conf.d_10-master.conf
Ṣafikun awọn ila wọnyi:
# aiyipada_Process_ Elilit = 100
# aiyipada_flient_ Eliciit = 1000
# Aiyipada vsz (iwọn iranti foju) idiwọn fun awọn ilana iṣẹ. Eyi ni o kun
# pinnu lati mu ki o pa awọn ilana ti o ni iranti ṣaaju ki wọn to
# Ohun gbogbo.
# oniyipada_vsz_ Elilit = 256m
# Olumulo iwọle ti wa ni fipa ba lo nipasẹ awọn ilana iwọle. Eyi ni aibikita julọ
# olumulo ninu eto dovecot. O yẹ ki o ni iwọle si ohunkohun rara.
# oniyipada_logen_user = Dovnull
# Olumulo inu ti lo nipasẹ awọn ilana ti a ko mọ. O yẹ ki o ya sọtọ lati
# Olumulo iwọle, nitorinaa awọn ilana buwolu ko le ṣe wahala awọn ilana miiran.
# aiyipada_innal_user = Dovecot
# Port = 143
# Port = 993
# SSL = Bẹẹni
# Nọmba ti awọn asopọ lati mu ṣaaju bẹrẹ ilana tuntun. Ojoriya
# Awọn iye to wulo nikan ni 0 (Kolopin) tabi 1. 1 jẹ aabo diẹ sii, ṣugbọn 0
# yiyara. <DUP / Wiki / Buwolu wọle .txt>
# Iṣẹ_count = 1
# Nọmba ti awọn ilana lati tọju wiwa nigbagbogbo fun awọn isopọ diẹ sii.
# Processisi_min_avail = 0
# Ti o ba ṣeto iṣẹ_count = 0, o ṣee ṣe ki o nilo lati dagba eyi.
# vsz_ Elilit = $ 1szsz_ Elilit
# Port = 110
# Port = 995
# SSL = Bẹẹni
# Port = 587
# Ṣẹda Olugbagbọ ni ibamu nikan ti o ko ba le lo socket unx loke
# Int_listener lmt {
# Yago fun ṣiṣe LMTP han fun gbogbo Intanẹẹti
# Adirẹsi =
# Port =
# }
# Pupọ julọ iranti lọ si MMMAP () ṣe awọn faili. O le nilo lati pọ si eyi
# Idiwọn ti o ba ni awọn leta leta nla.
# vsz_ Elilit = $ 1szsz_ Elilit
# Max. Nọmba ti awọn ilana IMAP (awọn asopọ)
# Procests_ Elilit = 1024
# Max. Nọmba ti awọn ilana POP3 (awọn asopọ)
# Procests_ Elilit = 1024
# Max. Nọmba ti awọn ilana ifakalẹ SMTP (awọn asopọ)
# Procests_ Elilit = 1024
# Autojuti_socket_ount_Ath aaye si iho iṣelọpọ yii nipasẹ aiyipada. O jẹ ojo melo
# lo nipasẹ DOVECOT-LDA, doveladm, o ṣee ṣe ilana iMAp, ati bẹbẹ lọ awọn olumulo ti o ni
# Awọn igbanilaaye kikun si iho yii ni anfani lati gba atokọ ti gbogbo awọn orukọ olumulo ati
# Gba awọn abajade ti awọn wiwa olumulo ti gbogbo eniyan.
#
# Ipo 0666 aifọwọyi ngbanilaaye lati sopọ si iho, ṣugbọn awọn
# Awọn wiwa Userdb yoo ṣaṣeyọri nikan ti uSDDB ba pada "aaye" iduro "ti o wa
# ibaamu awọn olupe ti olupe. Tun ti UID ti olupe tabi GID ti baamu awọn
# UID ti UID tabi ki o fi awọ alö naa ṣe aṣeyọri. Ohunkohun miiran nfa ikuna kan.
#
# Lati fun olupe kikun ti awọn igbanilaaye lati fojusi gbogbo awọn olumulo, ṣeto ipo si
# nkan miiran ju 0666 ati Dovecot jẹ ki ernel pagifo
# Awọn igbanilaaye (fun apẹẹrẹ. 0777 Gba gbogbo gbogbo awọn igbanilaaye).
# Ilana ti olukọ ti n ṣiṣẹ bi gbongbo nipasẹ aifọwọyi, ki o le wọle si
# / Ati Soke / ojiji. Ti eyi ko ba wulo, Olumulo yẹ ki o yipada si
# $ laigba_innal_user.
# olumulo = gbongbo
# Ti o ba ti lo Aṣoju aṣoju, awọn ilana meeli yẹ ki o ni iwọle si apo rẹ.
# Fun apẹẹrẹ: mode = 0660, ẹgbẹ = Vmail ati meeli agbaye_access_Groups = vimail
# Ipo = 0600
# Olumulo =
# ẹgbẹ =
Lekan si, rii daju lati rọpo ašẹ ninu gbogbo awọn faili wọnyi, Femmerabe.com, pẹlu aaye ti o yan. Satunkọ faili atẹle, atunto Dovecot,
nano config/etc_dovecot_dovecot
Ki o fi awọn ila wọnyi kun
## Faili Iṣeto Davecot
# Ti o ba ni iyara, wo http://wiki2.Dovecot.org/quickcniguration
# "DaveConf -n" pipaṣẹ fun iṣelọpọ mimọ ti awọn eto ti o yipada. Lo o
# Dipo daakọ & pa awọn faili nigbati o firanṣẹ si atokọ ifiweranṣẹ ileto.
# '# 'Ihuwasi ati ohun gbogbo lẹhin ti o ti ṣe itọju bi awọn asọye. Awọn aye afikun
# ati awọn taabu ti wa ni foju. Ti o ba fẹ lo boya awọn wọnyi ni kedere, fi awọn
# value inside quotes, eg.: key = "# CHEMTHIGHIGHIGHIGHIGHIPAG "
# Pupọ (ṣugbọn kii ṣe gbogbo awọn eto le jẹ agbara nipasẹ awọn ilana oriṣiriṣi ati / tabi
# Orisun orisun / IPS opin-ọna nipasẹ gbigbe awọn eto inu apakan, fun apẹẹrẹ:
# Protocol IMAP {}, agbegbe 127.0.0. {}
# Awọn iye Aiyipada ni a fihan fun eto kọọkan, ko nilo lati ṣe iṣiro
# awon won. Iwọnyi ni awọn imukuro si eyi botilẹjẹpe: ko si awọn apakan (fun apẹẹrẹ (fun apẹẹrẹ)
# tabi awọn eto ohun itanna ti wa ni afikun nipasẹ aiyipada, wọn ṣe atokọ fun awọn apẹẹrẹ nikan.
# Awọn ọna tun jẹ awọn apẹẹrẹ pẹlu awọn iṣẹlẹ gidi ti o da lori atunto
# Awọn aṣayan. Awọn ọna ti a ṣe akojọ nibi ni fun atunto --prefIX = / USR
# --syconconfdir = / ati bẹbẹ lọ - atic --localstated = / var
# Mu awọn ilana ti a fi sori ẹrọ
# Atokọ ti o ya sọtọ ti IPS tabi awọn ọmọ ogun nibi ti lati gbọ fun awọn asopọ.
# "*" Awọn tẹtisi ni gbogbo awọn atọwọdọwọ IP BV4, "awọn tẹtisi ni gbogbo awọn atọwọdọwọ IPV6.
# Ti o ba fẹ ṣalaye awọn ebute gbangba tabi ohunkohun ti eka diẹ sii,
# Ṣatunkọ Vec.d / Master.conf.
# Tẹtisi = *, ::
# Iwe itọsọna mimọ nibiti lati fipamọ data asiko asiko.
# Base_dir = / var / ṣiṣe / dovecot /
# Orukọ apẹẹrẹ yii. Ni awọn apẹẹrẹ ti ọpọlọpọ-apeere iṣeeṣe ati awọn ofin miiran
# le lo -i <apeere_name> lati yan iru apeere tẹlẹ (yiyan
# si -c <contig_thth>). Orukọ apẹẹrẹ tun kun si awọn ilana dovecot
# ninu atujades.
# apeere_name = dovecot
# Ẹkọ ikini fun awọn alabara.
# Buwolu wọle_greeting = Dovecot ṣetan.
# Atokọ aaye ti o ya sọtọ ti awọn sakani nẹtiwọọki igbẹkẹle igbẹkẹle. Awọn isopọ lati awọn wọnyi
# Awọn IPS ti gba ọ laaye lati ṣe adehun awọn adirẹsi IP wọn ati awọn ebute oko oju omi wọn (fun gedu ati
# fun awọn sọwedowo idanimọ). Mu_platext_auth tun wa ni kọsilẹ fun
# awọn nẹtiwọki wọnyi. Ojo melo ti o ba fẹ pato awọn olupin aṣoju IMAP rẹ nibi.
# Buwolu wọle_Trusworks =
# Atokọ aaye ti o ya sọtọ ti awọn irinṣẹ sọfitiwia wiwọle iwọle (fun apẹẹrẹ)
# Buwolu wọle_Saccess =
# Pẹlu aṣoju proxy_maybe = bẹẹni ti o ba jẹ pe awọn ibaamu ipinya eyikeyi ti awọn IPs wọnyi, maṣe ṣe
# isunmọ. Eyi ko wulo ni deede, ṣugbọn o le wulo ti o ba ti opin irin ajo
# IP jẹ e.. IP ti o ni ẹru ẹru.
# Autut_proxy_ald =
# Fi awọn akọle ilana ọrọ ṣiṣẹ siwaju (ninu PS). Lọwọlọwọ fihan orukọ olumulo ati
# Adiresi IP. Wulo fun wiwo ẹniti o lo awọn ilana iMAP gangan
# (fun apẹẹrẹ. Awọn apoti leta ti o pin tabi ti o ba lo oid kanna fun awọn iroyin pupọ).
# Verbrose_Ploctitle = rara
# O yẹ ki gbogbo awọn ilana pa nigba ti Dovecot Maxt ilana Luk.
# Ṣiṣeto eyi si "Bẹẹkọ" tumọ si pe Dovecot le ṣe igbesoke laisi
# mu awọn isopọ alabara wa si sunmọ (botilẹjẹpe iyẹn le tun jẹ
# iṣoro ti igbesoke naa jẹ e... Nitori ti aabo aabo).
# tiipa_frients = bẹẹni
# Ti kii ba-odo, ṣiṣe awọn pipaṣẹ meeli ti o ṣiṣẹ nipasẹ ọpọlọpọ awọn asopọ si olupin Doveadm,
# Dipo ṣiṣe wọn taara ni ilana kanna.
# Doveadm_werker_count = 0
# UNIX Shocket tabi gbalejo: Port ti a lo fun sisopọ si olupin Dovadm
# Dovadm_Stocket_path = Doveadm-olupin
# Oju opo ti o ya sọtọ ti awọn oniyipada ayika ti o wa ni itọju lori Dovecot
# Ibẹrẹ ati kọja si gbogbo awọn ilana ọmọ rẹ. O tun le fun
# bọtini = awọn orisii iye lati ṣeto eto kan pato.
# gbe wọle --enaction = tz
##
## Eto Awọn iṣẹ Dictionary
##
# Itumọ le ṣee lo lati fipamọ bọtini = awọn akojọ iye. Eyi ni lilo nipasẹ ọpọlọpọ
# Awọn afikun. Itumọ naa le wọle boya taara tabi botilẹjẹpe a
# Dictionary olupin. Awọn atẹle di awọn orukọ itumọ Maps si Uris
# nigbati a ba lo olupin naa. Awọn wọnyi le lẹhinna tọka si lilo us ni ọna kika
# "Proxy :: <Orukọ>".
# ipin = mysql: /tc/dovecot/dovecot-dict-sql.cnf.ext
# Pupọ ti iṣeto gangan ni o wa ni isalẹ. Awọn filenames wa
# Akọkọ lẹsẹsẹ nipasẹ iye aṣayan wọn ati ti o pa ni aṣẹ yẹn. Awọn asọtẹlẹ 00
# Ni awọn filenames ti pinnu lati jẹ ki o rọrun lati ni oye aṣẹ naa.
# Faili atunto tun le gbiyanju lati wa laisi fifun laisi aṣiṣe ti o ba jẹ pe
# Ko ri:
# Gba Dovecot laaye lati tẹtisi gbogbo awọn asopọ titẹ sii (IPv4 / IPv6)
Fi ọrọ igbaniwọle kun fun olumulo Dovecot:
nano config/etc_dovecot_passwd
Apakan akọkọ ti faili naa, ṣaaju oluṣakoso, jẹ orukọ olumulo. Apakan ti o kẹhin, "Herranduttery", tọka ọrọ igbaniwọle ti o fẹ lati fun olupin mail rẹ.
team:{plain}yourpassword
Nigbamii, atunto openkim
nano config/etc_opendkim.conf
Ati ṣafikun awọn ila wọnyi:
# Eyi jẹ iṣeto ipilẹ fun fiforukọran ati iṣeduro. O le ni rọọrun jẹ
# fara mọ fifi sori ẹrọ ipilẹ kan. Wo openkim.conf (5) ati
# /usr/share/doc/dic/examssim/examesples/ependkim.conf.Sample fun pipe
# Akọle ti awọn aye ti o wa profiguration.
# Firanṣẹ ko si
# Iforukọsilẹ ti o wọpọ ati awọn aye ijerisi. Ni Debian, "lati" ori ni
# ti ọwọ, nitori pe o jẹ bọtini idanimọ ti a lo nipasẹ awọn ọna ṣiṣe aṣẹ
# Ati bayi ni itumo aabo aabo.
# Iforukọsilẹ Iforukọsilẹ, Yan, ati Key (beere fun). Fun apẹẹrẹ, ṣe iforukọsilẹ
# Fun Ayipada "EKook.com" pẹlu yiyan "2020" (2020._domainkey.examju.com),
# Lilo bọtini aladani ti o fipamọ ni /tc/dkimkey/example.private. Diẹ gralilar
# Awọn aṣayan iṣeto le ṣee ri ni /usr/share/doc/opnddim/readme.optendkim.
# Ašẹ apẹẹrẹ.com
# Yiyan 2020
# Tẹ Keyfile /etc/dkimkeys/example.private
# Ni Debian, Openkim ngbani bi olumulo "Opankim". Amaskus ti 007 ni a nilo nigbati
# lilo socket agbegbe kan pẹlu MTAS ti o wọle si iho bi ti ko ni anfani
# Olumulo (fun apẹẹrẹ, postfix). O le nilo lati ṣafikun olumulo "PostFix" si ẹgbẹ
# Opandim "ninu ọran yẹn.
# Iho fun asopọ mta (beere fun). Ti MTA ba wa ninu ẹwọn iwe-akọọlẹ,
# O gbọdọ wa ni idaniloju pe apo naa wa ni iraye. Ni Debian, PostFix nṣiṣẹ ni
# crroot in / var / Sool / Postfix, nitorina iho UIX kan yoo ni lati wa
# tunto bi o ti han lori ila ikẹhin.
# Socke agbegbe: /Run/OPendkim/Optim.SOCK
# Iho inet: 8891 @ agbegbe
# Iho inu iho: 8891
# Awọn ọmọ ogun fun eyiti o forukọsilẹ dipo ju ṣe daju, aiyipada jẹ 127.0.0.0. Wo awọn
# Atọfa iṣẹ ti Openkim (8) fun alaye diẹ sii.
# InternalHosts 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
# Ohun-ara ti o gbẹkẹle fun DNSSEC. Ni Debian, faili igbẹkẹle igbẹkẹle ti pese
# nipasẹ package DNS-root-data.
# Nameservers 127.0.0.1
# Awọn ibugbe Map ninu lati awọn adirẹsi si awọn bọtini lati ṣe ami awọn ifiranṣẹ
# Ṣeto ti awọn ọmọ ogun inu ti o yẹ ki o fowo si
nano config/etc_default_opendkim
Ki o fi awọn ila wọnyi kun
# AKIYESI: Eyi jẹ faili iṣeto Iṣeduro. O ko lo nipasẹ awọn openkim
# Iṣẹ eto. Jọwọ lo awọn paramita proficalus ti o baamu
# /etc/pndkim.conf dipo.
#
# Tẹlẹ, ọkan yoo ṣatunkọ awọn eto aiyipada nibi, ati lẹhinna ṣiṣẹ
# /lib/pundkim/OPendkim.service lati ṣe ina awọn faili Seyd ni
# /etc/ssemd/sstem/pyndkim.service.cnc ati
# /tc/ttmpfiles.d/pondnim.cnf. Lakoko ti eyi tun ṣee ṣe, o jẹ bayi
# Iṣeduro lati ṣatunṣe awọn eto taara ni /etc/pnddim.conf.
#
# Daemon_opts = ""
# Yi pada si / Var / Spool / PostFix / Ṣiṣe / Openkem lati lo iho alailopin pẹlu
# Postfix ninu iwe Chroot:
# Rundir = / var / Spool / PostFix / Ṣiṣe / Openkem
#
# A ko ṣeeṣe lati ṣalaye socket kan
# Akiyesi pe eto yii yoo ja iwọn okun eyikeyi ninu openkim.conf
# aiyipada:
# Gbọ lori gbogbo awọn atọwọdọwọ lori ibudo 54321:
# Iho = Inet: 54321
# Gbọ lori ẹrọ yipo lori ibudo 12345:
# Iho = Inet: 12345 @ agbegbe
# Gbọ lori 192.0.2.1 Lori ibudo 12345:
# Socke = Inet: 12345@199.0.2.1
Nigbati a ba ṣetan lati ṣeto koodu ifiweranṣẹ wa, a yoo mu koodu ti o wa ni isalẹ, pẹlu orukọ ašẹ ti o yẹ ki o fi sii. Bẹrẹ nipa ṣiṣẹda iwe afọwọkọ kan
touch scripts/postfixsetup
sudo chmod a+x scripts/postfixsetup
nano scripts/postfixsetup
Bayi, ni Nano, olootu ọrọ, satunkọ faili yii ki o pẹlu orukọ ašẹ rẹ dipo ti femmevabe.com.
# ! / bin / bash
# Eto Postfix
Bayi, ṣiṣe iwe afọwọkọ ti o pari lati tunto Postfix, Openkem ati dovecot.
./scripts/postfixsetup
Ni kete ti iwe afọwọkọ yii ti ṣiṣẹ, daakọ laini ti o kẹhin ti tẹ sita ati lẹẹmọ sinu iṣeto rẹ DNS bi iye fun tendonly._duamainkey. Eyi ni Bọtini Openkim ti a lo lati ṣe idanimọ ašẹ rẹ nigbati fifiranṣẹ meeli aabo.
Oniyi! Laarin awọn ọjọ diẹ, o yẹ ki o ni anfani lati firanṣẹ meeli lati ọdọ olupin ti a pese ohun gbogbo ni pipe.
Ti o ba tunto awọn DNS fun olupin meeli rẹ, o yẹ ki o gba awọn wakati 72 fun awọn igbasilẹ lati mu. O nigbagbogbo yarayara. O le ṣayẹwo ti olupin rẹ ba n ṣiṣẹ nipa lilo aṣẹ yii, pese imeeli rẹ:
echo "test" | mail -s "Test Email" youremail@gmail.com
Ti ohun gbogbo ba han pe o n ṣiṣẹ ni deede, o yẹ ki o ni anfani lati firanṣẹ imeeli pẹlu olupin rẹ. Ti ko ba ṣiṣẹ, gbiyanju wiwa awọn àkọọlẹ lati rii kini aṣiṣe naa le jẹ.
tail –lines 150 /var/log/mail.log
Eyi yoo pese alaye rẹ nipa meeli ti o firanṣẹ nipasẹ olupin ati boya o n ṣiṣẹ daradara. O yẹ ki o ni anfani lati wo imeeli ninu apo-iwọle rẹ bi daradara, ti ko ba wa nibẹ, ṣayẹwo Folda Fom rẹ.
Iwọ yoo tun nilo lati tunto awọn eto rẹ ninu awọn eto rẹ.ypy bẹ olupin imeeli rẹ le sọrọ si ohun elo Djagodo rẹ, agbese na. Ṣafikun tabi rọpo awọn ila wọnyi ni awọn eto rẹ
EMAIL_HOST_USER = 'team' # 'Ifẹ@masheen.com'
Ṣe akiyesi pe a nlo faili atunto lati gba ọrọ igbaniwọle naa. Jẹ ki a fifuye faili yii ninu awọn eto bii bẹ, ni ibẹrẹ faili naa .:
# Ṣii ati fifuye atunto
Jẹ ki a ṣẹda faili yii ki o ṣafikun bọtini aṣiri si rẹ, bakanna bi ọrọ igbaniwọle meeli. Lati ina bọtini aṣiri kan, lo aṣẹ yii, pẹlu ohunkohun ti ipari o fẹ ni ipari:
openssl rand -base64 64
Bayi, daakọ ọrọ ti opensl ti npese ati ṣiṣatunkọ /tc/config.json
sudo nano /etc/config.json
Ṣafikun awọn ila wọnyi si faili rẹ, pẹlu bọtini ti o keresi ti ipilẹṣẹ bi bọtini ikọkọ.
{
"SECRET_KEY": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX-generated-using-openssl)",
"EMAIL_HOST_PASSWORD": "yourpassword"
}
Tikay JSson jẹ rọrun ati rọrun lati lo, a le sọ awọn bọtini miiran ti a fẹ lati lo ninu ipilẹ iṣẹ wa paapaa, ki o si le ka lati itọsọna itọsọna iṣẹ wa nikan. Eyi ṣe iṣeduro adaṣe fun awọn bọtini API, eyiti a yoo lo diẹ sii ju diẹ lọ sibẹ.
Iwọ yoo tun fẹ lati ṣe afẹyinti iṣẹ rẹ lati rii daju pe ohun ti wa ni fipamọ ati pe iwọ yoo gba pada iṣẹ rẹ nigbamii ti o ko ba fẹ lati ya olupin kan.
sudo backup
Bayi, gbiyanju fifiranṣẹ Imeeli HTML lati ọdọ olupin ayelujara, ti a pese fifiranṣẹ ọkan lati laini aṣẹ n ṣiṣẹ. Beere apeere olumulo rẹ ninu ikarahun, ki o fi imeeli HTML kan ranṣẹ si olumulo yẹn nipasẹ DJango. Yi orukọ mi pada sinu koodu, Charlotte, si orukọ olumulo rẹ.
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()
Ti aṣẹ akọkọ ko ṣiṣẹ, rii daju lati lo
source venv/bin/activate
Ti pese ohun gbogbo ni deede, iwọ yoo gba imeeli kaabọ ni bayii ti firanṣẹ nipasẹ app wẹẹbu rẹ. Iṣẹ to dara! O ti wa ọna pipẹ.
Mo fẹ lati ṣafikun, ti o ba ti n tiraka nigbagbogbo pẹlu eyikeyi awọn aṣiṣe nigbagbogbo lakoko ṣiṣẹ lori iṣẹ akanṣe bii eyi, ma ṣe ṣiyemeji lati wa fun iranlọwọ. Google, laarin awọn ẹrọ wiwa miiran, jẹ awọn orisun nla lati wa fun iranlọwọ siseto. Nìkan wa fun aṣiṣe ti o n gba, ati pe iwọ yoo ni anfani lati wo bi awọn eniyan miiran yanju iṣoro naa. Pẹlupẹlu, o kaabo lati kan si mi, awọn olukọni rẹ (awọn olukọ, awọn olukọ), olukọni lori ayelujara tabi awọn orisun miiran lati wa awọn solusan si awọn ọran ti o ni iriri ti o ni iriri. Mo ye eyi kii ṣe rọrun, ṣugbọn paapaa ti o ba ti ka ni yii, o nkọ eyikeyi koodu, o nkọ ọpọlọpọ nipa kikọ aaye ayelujara kan lati ibere. Pat ara rẹ ni ẹhin, o n ṣe iṣẹ nla.
O ṣeun fun lilo akoko lati ka Itọsọna Itọsọna Ilọlẹ kẹta yii. Ni awọn ẹda iwaju, Emi yoo pẹlu diẹ sii ti awọn apẹẹrẹ pataki jiroro ni ibẹrẹ iwe aṣẹ ati pe awa yoo ru pupọ si agbaye ti sọfitiwia ati idagbasoke ohun elo. Duro aifwy fun kini o wa, ati pe Mo nireti lati nkọ ọ bi o ṣe le kọ software iyalẹnu. Wo o ni atẹjade atẹle!
nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
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.
nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
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.
nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
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.
.nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
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.
nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
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.
nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
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.
nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
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.
nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
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.
nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
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.
nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
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.
nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
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.
nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
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.
.nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
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.
nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
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.
nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
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.
nipasẹ Daisy / Iwo | Ra | Ra pẹlu cryptocrucrycy
https://glamgirlx.com
https://glamgirlx.com -
Fi mi silẹ ni Bitcoin lilo adirẹsi yii: 3KhDWoSve2N627RiW8grj6XrsoPT7d6qyE