व्यावहारिक वेब आधारित गहिरो शिक्षा र उदाहरण द्वारा सुरक्षा तेस्रो संस्करण चार्लोट हासिपर जुलाई ,, 20244 अपडेट गरिएको / जून 3, 2025 मा रूपान्तरण गरियो
परिवर्तित:
वेबको लागि सफ्टवेयरमा सफ्टवेयरमा सुरक्षा प्रभारीहरू कुनै पनि वेब विकासकर्ताको योजना र कार्यान्वयन हुने बेला ईन्जिनियपिप हो जुन निर्भरता, स्थिर, र व्यावहारिक उद्देश्यका लागि उपयोगी छ भने। डोम (कागजात आपत्ति मार्कअप), यो सृजनात्मक, जाभाभर र cuss को साथसाथै प्रोन्डेयर र चरित्रको कार्यान्वयन गर्न को लागी संयोजन र आयु को एक व्यापक विविधता प्रदान गर्न को लागी एक आकर्षक छ कि एक आकर्षक प्रदान गर्नुहोस् र औसत एक आकर्षक छ कि जो, अन्त प्रयोगकर्ताले समय मार्न वा इन्टरनेटमा केहि प्राप्त गर्न खोज्दै, प्राय: टचस्क्रीन स्मार्टफोन उपकरणमा। अधिकांश व्यक्ति थाहा पाउँदैनन् कि उनीहरू कहाँ सुरु गर्ने भनेर थाहा पाउँदा उनीहरू अर्को व्यक्तिको वेबसाइटमा सुरु हुने र विशेष गरी मौखिकताका लागि पैसा बर्बाद गर्न चाहन्थे। प्रयोग र लचिलोताको सहजता। यदि तपाईंसँग यस पुस्तकको माध्यमबाट पढ्न र म तपाईंलाई के सिकाउन चाहान्छु भनेर जान्नुहोस् र तपाईंको गठनको बारेमा व्यक्तिगत रूपमा केही मार्गदर्शन प्राप्त गर्न उत्प्रेरित हुन्छ र तपाईंको श्रोताको आवश्यकताहरू पूरा गर्न केही समय छुट्याउँदछु।
मेरो बारेमा: म सफ्टवेयर विकासकर्ता हुँ C / c ++, PYVA, Psthon, HTML, CSSL, CSSL, CTML, CTML, CTML, CTML, CTML, CTML, CTML, CTML, CTML, CTML, Ctml, म वेबसाइटहरू निर्माण गर्न चाहान्छु, भ्रमण गर्न चाहन्छु, र केवल सिक्न, पुन: प्रयोग गर्ने र मार्नका लागि लत पाउँदछ, र सबैभन्दा महत्त्वपूर्ण कुरा, म सफ्टवेयर बेच्छु। यदि तपाइँसँग एक वेबसाइटको लागि एक विचार छ भने तपाईं मलाई समर्थन गर्न इच्छुक हुनुहुन्थ्यो, जब म तपाईंलाई भेट्न इच्छुक थिएँ, म तपाईंलाई अर्को युट्यूब, ट्र्याटब, वा एक उच्च-टेक उपयोग गर्न चाहान्छु। यसको सट्टामा तपाईंलाई मेरो समय बेच्न कोशिस गर्दै, म तपाईंलाई किन्न कोशिस गर्दैछु: म तपाईंलाई एक अनुप्रयोग (वेबसाइट) को लागी तपाइँले चाहानुहुन्छ भन्ने कुराको लागि तपाइँले के चाहानुहुन्छ भनेर सिकाउन चाहानुहुन्छ। र मलाई स्पष्ट होस्, मैले तपाईंलाई दिएको शिक्षा अनौपचारिक हुनेछ। तपाईं स्कूल जान सक्नुहुनेछ र यसलाई औपचारिक शिक्षाको साथ सबै सिक्न सक्नुहुनेछ, वा यस पुस्तकलाई स्कूलमा पनि पढ्नुभयो, तपाईंको असाइनमेन्टहरू पूरा गर्नुभयो, तर मैले तपाईंलाई अवशेषको सिटमा लैजाँदिन, र तपाईंलाई कार्यवाही गर्न सोध्ने छैन। म तपाईंको प्रोफेसर होइन, तपाईं मलाई एक साथीलाई मन पराउन सक्नुहुन्छ जुन तपाईंलाई तपाईंको आफ्नै व्यक्तिगत सफलताले चालकलाई क्यारियरतिर लैजान्छ। र म तपाईलाई सफलताको बेच्न सक्दिन, तपाईले यसलाई आफ्नो समयसँग किन्नु पर्छ। कोड गर्न सिक्नु एउटा ठाडो शिक्षण वक्र छ र कहिले पनि सजिलो थिएन, वा हुन पनि पर्छ। तपाईंले सम्भवतः तपाईंले सम्भव भएसम्म कडा परिश्रम गर्नुपर्दछ र प्रयास गर्न र असफल हुन्छ र फेरि प्रयास गर्नुहोस् जब तपाईं स्याउहरू आफैंलाई सिक्न र प्रयोग गर्न सक्नुहुनेछ। त्यो कोडको प्रकृतिमा छ। कोड एक कम्पाइलर द्वारा सञ्चालित छ जुन प्रोग्रामर त्रुटि सन्देशहरू दिन डिजाइन गरिएको हो, र यसले तपाईंलाई कोड कसरी गर्ने भनेर सिकाउँदछन्, यदि तपाईं केवल तपाइँको खोज ईन्जिनमा त्रुटि प्रतिलिपि गर्दै हुनुहुन्छ भने पनि। र मैले भन्नुपर्दछ, तपाईंलाई अत्यन्त धनी, स्मार्ट, सफल, एक अनुप्रयोग निर्माण गर्नको लागि आयोजना गर्न आवश्यक छैन। कम्प्युटरले तपाईंको लागि एक संगठन को ख्याल राख्छ। तपाईं केवल परीक्षण र त्रुटि मार्फत दृढ हुनु आवश्यक छ, फोकस गर्नुहोस् र तपाइँले के गर्न सक्नुहुनेछ, र तपाईंसँग के सफल क्यारियर हुनेछ।
म को हुँ: मैले महसुस गरें कि अन्तिम सेक्सन सिक्न को बारे मा अधिक थियो र तपाइँको यो पुस्तक बाट एक तरिका लिनुहोस्। म ठिक छु? त्यो एक जटिल प्रश्न हो। म त्यसमा अस्पष्ट छ, किनकि म चिकित्सा अवस्थाबाट पीडित भएर म यो पुस्तक समेत गाह्रो बनाउँदछु जुन कहिलेकाँहि कठिन परिस्थितिहरू प्रस्तुत गर्दछ जुन मेरो जीवनलाई अझ गाह्रो बनाउँदछ जब यो मेरो जीवनलाई बढी गाह्रो बनाउँछ। छोटकरीमा, यदि तपाइँ यो पुस्तक पढ्दै हुनुहुन्छ भने, तपाईले यो घर ल्याउनु भयो किनभने तपाईले यसबाट पल्टनुभयो र यो उपयोगी छ कि तपाइँ तपाइँसँग भएको सबै कुरामा सफल हुनुभयो भने। म आफैं एक ईन्जिनियर हुँ, सफ्टवेयर विकासकर्ता र एक विद्यार्थीको लागि एक ठूलो पजल, उपयोगी, ठूलो, कार्यत्मक, र संलग्न अनुप्रयोगको साथ एक ठूलो पजल गर्न को लागी एक महत्वपूर्ण पजल गर्न को लागी एक महत्वपूर्ण पजल गर्न को लागी संभावना गर्न को लागी संभावना गर्न को लागी एक महत्वपूर्ण पजल गर्न को लागी। धेरै हदसम्म, यो म के गर्छु: म तपाईंलाई मद्दत गर्न अनुप्रयोगहरू निर्माण गर्दछु र अन्य व्यक्तिहरू सफल हुन्छन्। म एक लेखक पनि हुँ, यद्यपि यो मेरो पहिलो प्रकाशन हो जुन म मेरो पोर्टफोलियोलाई एक उपयोगी कागजातमा राख्नको लागि पूर्ण रूपमा पूर्ण रूपमा पूर्ण रूपमा पूर्ण रूपमा पूर्ण रूपमा पूर्ण रूपमा सम्मिलित छु, र म पनि एक कलाकार हुँ। म तपाईंलाई यो स्वीकार्छु, म एक अनौंठो व्यक्तिको प्रकार हुँ। म सिद्ध छैन, म आफैंले कलेजहरू र विश्वविद्यालयहरू छोड्न पनि आवश्यक भएको छु। म जन्मेको महिला हुँ, म मेकअप लगाउँछु, मेरो फोटो लगाउँछु, लुगा लगाउने लुगा लगाउँछ, र म आफैंलाई प्रकृतिले दिन्छु। मैले विगतमा अन्य व्यक्तिहरूसँग मुद्दाहरू थिए जसले लेख्न र निर्माण वेबप्लेसहित संघर्ष गर्दछ, र माफी चाहन्छु कि म यो पुस्तक चाँडै प्राप्त गर्न सक्षम भएको छैन। तपाईंलाई यो आवश्यक छ। तपाईं कोड पढ्न र लेख्न चाहानुहुन्छ जुन मेरो जस्तो देखिन्छ र मेरो जस्तो काम गर्दछ र तपाईंको कुञ्जीपाटीको म्यादक रूपमा, तपाईंसँग तपाईंको जीवनमा यस्तो संसाधनहरू सिर्जना गर्न आवश्यक छ। म परिवार बढ्दै, स्वास्थ्य अवस्था, मिडिया, मिडिया, मिडिया, र कानून संग सबै प्रकारका मुद्दाहरू थिए, र मेरो कोडले एक विभाजित र निराश संसारमा महिला प्रकृति र महिला प्रकृति को गहिरो रूपमा प्रतिबिम्बित गर्दछ। यद्यपि यो पुस्तक भनेको त्यस्तो चीज हो जुन मैले गहिरो ख्याल राखें, मेरो बच्चा, मेरो पोर्टफोलियो, र मेरो आजीविका, म तपाईंको विचारमा ध्यान दिंदा र मबाट सिक्ने क्रममा पोखरी गर्छु। कृपया दिमागमा राख्नुहोस् म सिद्ध छैन, यो पुस्तकसँग त्रुटिहरू, परिशोधन र नयाँ संस्करणहरू हुनेछन्, र तपाईंले आफ्नो तार्किक मस्तिष्कको साथ सोच्न सक्नुहुनेछ। साथै, बुझ्नुहोस् कि तपाईको लागि मेरो मतलब हो जब तपाईले चुनौतिहरूको सामना गर्नुपर्दा पनि। यो को बारे मा सोच्नुहोस्: जब तपाइँले केहि गर्न सक्नुहुन्छ जब तपाइँले कम्प्युटर प्रणालीलाई खेल्नुहुन्छ जुन तपाइँले सम्भवत: डिजिटल स्पेसमा कल्पना गर्न सक्नुहुनेछ, तपाइँ समृद्धि गर्नका लागि कठिनाईहरूको सामना गर्नुहुनेछ। म तपाईंलाई यो भन्छु किनभने मैले उस्तै कठिनाइहरूको सामना गरें। यस पुस्तकलाई तपाईंको आफ्नै जोखिममा प्रयोग गर्नुहोस्, तपाईंको समुदाय र समुदायहरूसँग तपाईंको सफ्टवेयर निर्माण गर्नको लागि उपलब्ध छ र यदि मैले तपाईंलाई यो पाठमा बिगार्छु भने, जब तपाईं किन विजयी हुनुभयो र तपाईंलाई अन्यथा मिल्यो भने। जुन हामी इन्टरनेट, इन्टरनेट गर्नेछौं। तपाईं केवल केहि शब्दको साथ हुनुहुन्छ भन्नेसँग धेरै परिचित हुनुहुन्न, तर म तपाईंलाई पढ्न प्रोत्साहन गर्दछु, तपाईंले मलाई चिन्नुहुनेछ जब तपाईंले मलाई पढ्न जारी राख्नुहुन्छ तपाईंको काम पूरा गर्न। यस पुस्तकको साथ कुनै गृहकार्य हुनेछैन, जबसम्म तपाईंको प्रोफेसरहरू वा शिक्षकहरू तपाईंलाई कसैले तपाईंलाई कहिले पनि दिदैनन्, तर तपाईंले पढिसेको रूपमा परियोजनाहरूको एक पोर्टफोलियो निर्माण गर्न प्रोत्साहित गर्दछ। मेरो क्याफस्टोन परियोजना तपाईले यस पुस्तकमा पढ्नुहुने यस पुस्तकमा तपाईले पढ्नुहुने यस पुस्तकमा समावेश भएको छ, जुन मैले पोइन्टको लागि तयार छु र तपाईंले आफ्नो साथी वा परिवारलाई प्रयोग गर्न सक्नुहुन्छ।
यो पुस्तक के हो: यो पुस्तक उदाहरण द्वारा एक ट्यूटोरियल हो। तपाइँ यहाँ कोड पाउन सक्नुहुन्छ, कसरी कोड गर्न सिक्ने बारे निर्देशनहरू, डिबगिंगको लागि जानकारी, निपटानको रूपमा, तपाईंको कोडलाई सुरक्षित गर्नुहोस्, र कसरी तपाईंको एक भावना हो, तपाईंको अनुप्रयोग र कम्पनी छवि, तपाईंको अनुप्रयोग र। साथै तपाईंको अन्त प्रयोगकर्ताहरू, तपाईंको वेबसाइटका आगन्तुकहरूलाई सम्भव भएसम्म अत्यन्तै आकर्षक हुन निरपेक्ष उत्तम प्रकाशमा तपाईं पूर्ण उत्तम प्रकाशमा निर्माण गर्नुहुन्छ। यस पुस्तकमा, म वेबमा फोरममा फोनमा फोकसका थुप्रै उदाहरणहरू प्रदर्शन गर्ने छु। अनलाइन शेल र स्क्रिप्टिंग सुविधाहरूको साथ आधारभूत परियोजना निर्माण गरेर हामी शिक्षाको अनुभव जारी गर्नेछौं। त्यसो भए, हामी आधारभूत ब्लग वेबसाइट जाँच गर्नेछौं, फोटो र भिडियो सुविधाहरूको साथ हाम्रो ब्लग अपग्रेड गर्नुहोस् र नि: शुल्क सफ्टवेयर प्रयोग गरेर सुरक्षा समाधानहरू प्रयोग गर्नका लागि यी सुविधाहरू (Pam) प्रयोग गर्नुहोस्। त्यसोभए हामी फाईल ह्यान्डलिंग र प्रशोधन गर्दैछौं र प्रशोधन गर्दै अन्य अवधारणाहरू मध्ये हामी अन्य अवधारणाको बीचमा भिडियो सम्पादन गर्दै, भ्वाइकोडर स्क्यानर मान्यता र अप्टिकल चिकन मान्यतालाई अन्वेषण गर्नेछौं। मार्गको साथ हामी APIS जाँच गर्नेछौं जसले हामीलाई हाम्रो सफ्टवेयरलाई बढी उपयोगी र सुरक्षित बनाउन मद्दत गर्दछ, नि: शुल्क र भुक्तान विकल्पहरूको साथ। बाटोमा, हामी बन्दुक र dunians उपकरणहरू अन्वेषण गर्नेछौं कि हाम्रो सफ्ट वा रिपोर्टर डिजाइन, र आत्महत्या र पूर्ण नेटवर्कमा हामी अवस्थित नेटवर्कको साथ विद्यमान नेटवर्कको साथ विद्यमान नेटवेयरसँग एकत्रित गर्नेछौं। हामी खेलहरू, 2D र थ्रीडी रेन्डरिंग ईन्जिनहरू निर्माण गर्ने क्रममा ब्रेक हुनेछौं, र आधारभूत आयामी रेन्डरिंग सफ्टवेयर र सिलीलीन ररमा इलेक्ट्रोनिक कम्पनहरूमा एलेडिएटेड हार्डवेयरसँग काम गर्नेछौं। बाटोमा, हामी मेशीन सिकाइएका समाधानहरू पनि रोजगार दिनेछौं। हामी वेबका लागि पनि वेबका लागि उपलब्ध स्टक उपकरणहरू रोजगारदाता र प्रक्रिया सुरक्षित गर्न प्रयोग गर्दछौं। यो पुस्तक वेब अनुप्रयोग निर्माण गर्नमा तपाईंको सफलताको लागि तपाईंको सफलताको लागि एक गाईड हो र यसलाई इम्बेडेड मेकानिकल प्रणालीहरू सहित एकीकृत गर्दै, र सफ्टवेयर र अघिल्लो अनुभवको साथ एम्बेड गरिएको हार्डवेयरलाई समग्रमा गाईड बनाउँदै।
के यो पुस्तक के होईन? यदि तपाईं वास्तवमै एक वेबसाइट गर्न चाहनुहुन्छ भने, तपाईं केवल एक साधारण स्टोर सेट अप गर्न सक्नुहुनेछ र तपाईंलाई चाहिने चीज बेच्न सक्नुहुनेछ, ब्लग पोस्ट गर्नुहोस्, वा अन्यथा कोडको एक रेखा लेख्न सकेन। यो बुक त्यो होइन। यस पुस्तकले तपाईंलाई सफ्टवेयर कसरी बनाउने भनेर सिकाउने छ जुन अधिक उपयोगी, पूर्ण आकारको, कार्यात्मक कम्प्यित र सुरक्षित रूपमा अपील गर्दछ, जसले कुनै पनि काम गरिरहेको छैन भन्ने व्यक्तिहरूको लागि पैसा कमाउन। यदि तपाईंले यस बुकलाई नजिकबाट पछ्याउनुहोस्, तपाईं कोड, अनुसन्धान कोड लेख्न चाहानुहुन्छ, तपाईंको आफ्नै अनुप्रयोगहरू निर्माण गर्नुहोस्, र तपाईं जे गर्नुहुन्छ त्यसबाट पैसा कमाउनुहुनेछ। म यस पुस्तकबाट पैसा कमाउँदा पनि, किनकि मँ जानकारी समावेश भएकोले मानिसहरूलाई आवश्यक छ र मैले मेरा अनुप्रयोगहरू किन्न वा प्रयोग गर्ने बित्तिकै खरीद गरिरहेको छ। यस पुस्तकले तपाईंको लागि एउटा अनुप्रयोग बनाउँदैन, तर यसले तपाईंलाई सही दिशामा देखाउँदछ र तपाईंलाई एक उदाहरणका लागि सफ्टवेयर, पाहुनाहरू, र इन्टरनेटका व्यक्तिहरू प्रयोग गर्न तयार हुन्छ।
तपाईं के सिक्नुहुनेछ: यस पुस्तकले तपाईंलाई सफ्टवेयर कसरी निर्माण गर्ने र रेकर्ड गर्न र भिडियो रेकर्डिंग स्क्यान गर्न, र ब्लुट्टुथ स्क्यान गर्दै, मेशिन सुविधाहरू प्रयोग गर्ने गर्दछ। यस पुस्तकले तपाईंलाई एक नेटवर्क लिनक्समा ध्यानपूर्वक प्रयोग गर्ने र रिबर्टेड उपकरणहरू प्रयोग गर्नको लागि अन्तर्क्रियात्मक रूपमा, प्रयोगकर्ता लगहरू प्रयोग गर्नको लागि अन्तर्क्रियात्मक मध्यस्थता र अन्तर्क्रियाको रूपमा निर्माण गर्ने भनेर सिकाउने छ, अन्य वेबसाइटहरू प्रदान गर्न अन्य वेबसाइटहरू प्रदान गर्न। प्रमाणिकरण वा अन्य उद्देश्य, आईडी स्क्यान, छवि र भिडियो मोडरेशनका लागि सन्देशहरू तपाईंको सफ्टवेयर सुरक्षित, भुक्तान प्रशोधन, क्राइचुरोसेन्स ट्रेडिंग, र अधिक राख्नको लागि। तपाईं आफ्नो ब्लुटुथ उपकरणहरू कसरी निर्माण गर्ने ब्याट्री, माइक्रोकन्ट्रोल, तार र थ्रीडी र थ्रीडी मुद्रित र कास्ट सामग्री प्रयोग गरेर सिक्नुहुनेछ। म sided डिजाइनरी प्रिन्टरहरू थप्न सक्छु जोडिएको निर्माण र मर्ने उपकरणको लागि लागू हुनेछ, त्यसैले तपाईं आफ्नै इम्बेड गरिएका हार्डवेयर उपकरणहरू, चार्जहरू, विद्युतीय सर्किटहरू प्रदान गर्न सक्षम हुनुहुन्छ। र तिनीहरूलाई ब्लुटुथ र वेबको साथ नेटवर्क। विशेष रूपमा, हामी दुई केस स्टडीहरू जाँच गर्नेछौं, एक कम्पनिटर आमवारी र एक घरमेड बन्दुक, दुबै ग्राफिक ईन्टरफेस वा कमाण्ड लाइन उपयोगिता को रूपमा उपलब्ध हुन सक्छ। तपाईले कुनै पहिलेको अनुभवको साथ एक वेबसाइट कसरी निर्माण गर्ने र प्रयोग गर्ने सिक्नुहुन्छ। यसलाई कार्यान्वयन गर्नुहोस्, सुरक्षित, सुरक्षित, सुन्दर, उपयोगी र सबैभन्दा महत्त्वपूर्ण। तपाईले प्रस्ताव गर्न सक्नुहुने वेबसाइटको उत्तम सम्भावित नेटवर्कलाई साझेदारी गर्न, सफ्टवेयर जानकारी साझा गर्नको लागि संगीत र मेलबँडाहरू निर्माण गर्न कसरी मेसिन सिकाई र कम्प्युटर दृष्टि प्रयोग गर्ने सिक्नुहोस्। यो पुस्तक मीडिया, सुरक्षा र मेसिन सिकाईमा धेरै ध्यान केन्द्रित गरिनेछ, जुन प्रमुख प्रयोगकर्ताहरूको लागि उचित प्रयोगकर्ताहरू हुन र गलत व्यक्तिहरूलाई व्यवस्थित गर्ने र संलग्न हुन मद्दत गर्दछ। यो पुस्तक UNIX, विशेष गरी डेबियन (उबुन्टु), बाशा शेल, Python, CTML को लागी, र ffmpeg जस्तै उपयोगी बास सफ्टवेयर को एक नम्बर सफ्टवेयर। म तपाईंलाई यो सिकाउनेछु कि क्रोच रूपान्तरण कसरी, र क्रोपोरिनरीमा भुक्तानी गर्नुहोस् वा नियमित डेबिट कार्डहरू तपाईंको राजस्वको एक भाग तिर्न। मँलाई तपाईको वेबसाइटबाट पनि पैसा कमाउन सिकाउनेछु, तपाईको वेबसाइटबाट पनि पैसा कमाउने र तपाईंको ग्राहकहरूले तपाईलाई खोज्न को लागी, र सकेसम्म धेरै सामान्य खोजीहरूमा क्रमबद्ध गर्न। म तपाइँलाई तपाइँको सफ्टवेयर कसरी बेच्ने भनेर सिकाउने छु, ग्राहकहरु लाई यो विज्ञापन गर्नुहोस्, ग्राहकहरु लाई तपाइँको सेवाहरु खोज्दै, र तपाइँका लागि अस्तित्व मार्फत इन्टरनेटमा नाम कमाउनुहोस्। म तपाइँलाई तपाइँको डेटा क्लाउड कम्प्युटरमा कसरी बचत गर्ने र सस्तोमा बचत गर्ने र तपाइँले तपाइँले मात्र प्रयोग गर्ने एक वेबसाइटमा फिर्ता ल्याउने वा अधिक प्रयोग गरेर तपाइँको उपकरणलाई फिर्ता राख्नका लागि तपाइँको उपकरणलाई फिर्ता राख्नको लागि तपाइँको उपकरणलाई फिर्ता राख्नको लागि प्रयोग गर्ने हो। यस पुस्तकले ठूला रकममा मिडिया वितरणको व्यावहारिकतामा ध्यान केन्द्रित गर्नेछ, पाठबाट फोटोहरूसम्म अडियो (तपाईंको क्लिन्लीटेलहरू), तपाईंको सफ्टवेयर र तपाईंको कम्पनीले सम्भव भएसम्म राम्रो देखिन्छ। तपाईंको साथ प्लेटफर्महरू, मोडअप र फोटोग्राफी जस्ता सामग्रीहरू प्रयोग गर्नको लागि तपाईंको सफ्टवेयर जस्ता केही उपकरणहरू प्रयोग गर्नको लागि तपाईंबाट केही उपकरणहरू प्रयोग गर्नका लागि तपाईंबाट केहि सुझावहरू र चालहरू पनि सिक्नुहुनेछ। यो पुस्तक भनिन्छ "व्यावहारिकवेबमा आधारित गहिरा शिक्षा र उदाहरणबाट सुरक्षाको लागि: यसले वेबको लागि रूपरेखा शिक्षा, अनुहारको शिक्षा, छवि र भिडियो मोडनेसन, छविको लागि प्रयोग गर्ने वर्णन गर्दछ। बृद्धि, छवि क्याप्शनिंग, र अन्य कार्यहरू छविहरूबाट संजालन, कम्प्यूटर-हस्तान्तरण छवि, वा एक अप्टिकल Coote को रूप मा, यो सुरक्षित हुन सक्छ यदि यो तपाईं को उपयोग गर्न सक्छ तपाईंको अनुहार। तपाईं एक सर्भर कम्प्यूटर यो सुरक्षित बनाउन सक्नुहुन्छ, एक कम्प्युटर जसले सामान्यतया तपाइँलाई एक प्रयोगकर्ता नाम र नयाँ IP ठेगानाको लागि सोध्छन्, तपाईको सफ्टवेयर सन्देशको लागि धेरै नजिकको छ, वा कुनै पनि साइटको साथ। तपाईं प्रयोग गर्नुहोस्)। सफ्टवेयर बनाउने जो कोहीले यसलाई नियन्त्रणमा राखेको केही अर्थमा यसले संकेत गर्दछ। सफ्टवेयर स्वाभाविक हिसाबले असुरक्षित छ किनकि हामी पहुँच गर्न प्रयोग गर्दछौं जुन हामी पहुँच गर्न प्रयोग गर्दछौं जुन हामी आफैंमा बिरामी परिश्रम गर्दछौं। यो पुस्तकको केन्द्रबिन्दु को केहि हो। एक नेटवर्क कम्प्यूटर एक लामो कुञ्जी टोकन, कल र ssh वा सुरक्षित शेल कुञ्जीको साथ पूर्ण पहुँच प्रदान गर्दछ, र वेब सर्वरले सर्वर सुरक्षा उपकरणहरूको साथ प्रस्तुत गर्दछ। वेब सर्भरसँग प्रयोगकर्ताको वेब ब्राउजरमा पहुँच छ, जुन प्रयोगकर्ताको उपकरणको सब भन्दा शक्तिशाली अंश हो, किनकि यो स्थान हो जहाँ प्रयोगकर्ताले नेटवर्क सफ्टवेयर पहुँच गर्न सक्दछ। यो उपकरणकीटले पाठ रेन्डर गर्न सक्दछ, वेबपेजहरू, र छविहरू, अडियो र राज्य आईडीको फोटो र लेख्न सकिन्छ र फिल्म सर्भरको साथ लेख्न र लेख्न सक्दछ वेब साइट तपाईको निपटानमा तपाइँका सबै उपकरणहरू प्रयोग गर्दै, यस पुस्तकको साथ तपाइँले आफैंलाई एक सुरक्षित वेबसाइट निर्माण गर्नको लागि सुसज्जित पार्नुहुन्छ, र समग्रमा एक सुरक्षित नेटवर्क कम्प्युटर प्रणालीमा, तपाईंको बोली, र जस्तो देखिन्छ
कहाँ सुरु गर्ने: तपाईंले यसलाई सेक्सन छोड्नको लागि स्वागत छ जुन मैले यो पुस्तक सुरू गरेको, वा कुनै पनि सेक्सन, तपाईंलाई आवश्यक पर्ने सटीक उपकरणको साथ वर्णन गर्ने छु भने म यसको बारेमा वर्णन गर्दछु। यदि तपाईंसँग लेख्नको लागि अनुभव छैन भने, मैले यो पुस्तक राम्ररी सिफारिस गर्दछु तपाईंले यो पुस्तक पढ्नुभयो, र विशेष गरी सिफारिश गर्नुहोस् कि यो पुस्तक तपाईंको लागि सही छ भनेर निश्चित गर्नुहोस्। यदि यो किताब तपाईंको लागि ठीक छैन भने, यसलाई साथी वा आफन्तलाई जोड्नुहोस् जुन वेबको लागि उन्मूलन गर्ने चासो दिन सक्छ, र मैले तपाईंलाई एक शिक्षकको रूपमा छोडे वा अन्य शिक्षकले मलाई अघि बढ्न थाले। तपाईं जहाँ चाहानुहुन्छ सुरू गर्नुहोस्, यो पुस्तकको प्रत्येक भाग उपयोगी हुनेछ यदि तपाईं एक उपयोगी अनुप्रयोग निर्माण गर्न चाहानुहुन्छ, र यो विचार गर्नुहोस् कि सबै भन्दा राम्रो अनुप्रयोगहरू अन्त प्रयोगकर्तालाई दिमागमा बनाइएको छ। अब तपाईं मलाई चिन्नुहुन्छ, तपाईंलाई यो पुस्तक थाहा छ, र तपाईं सुरु गर्न तयार हुनुहुन्छ। सुरू गर्न, कम्प्युटरलाई समात्नुहोस् (बक्स स्टोर, अमेजन, वा पुरानो डेस्कटप कामहरू पनि, र यसलाई तपाईंको लागि काम गर्ने क्रममा यसलाई सेट अप गर्नुहोस्।
यो पुस्तक कसरी पढ्न सकिन्छ: पाठ हाइलाइट गरिएको छ, संकेत गर्दछ कि पाठ एक आदेश प्रम्प्टमा सम्बन्धित छ, जहाँ तपाईं कोड लेख्नुहुनेछ जुन तपाईं भाग्नुहुन्छ। कमाण्ड प्रम्प्ट भारी कुञ्जीपाटी केन्द्रित छ र कुनै क्लिक गर्न केहि क्लिक गर्न, तपाईंको कार्यप्रवाहलाई द्रुत बनाउँदछ र तपाईंलाई सजिलो बनाउँदछ।
सुरु हुने: यसमा डुब्नुहोस्। हामी एक स्थानीय मेसिनमा कोड निर्माण गरेर सुरू गर्नेछौं र इन्टरनेटमा जडित वेबसाइट निर्माण बिना शुरू गर्नेछौं। यो सुरुको लागि सुरक्षित छ, केहि खर्च छैन, र तपाइँको लागि सजिलो छ। तपाईंको अपरेटिंग प्रणालीमा निर्भर गर्दै, बाशा खोलमा चढ्नु अलि अलि फरक हुनेछ। म्याक ओएओएस को लागी, म यो बिन्दुमा भर्चुअल मेसिन स्थापना गर्न सिफारिस गर्दछु, किनकि तपाईले भर्चुअल मेसिनको साथ धेरै अनुकूलता पाउनुहुनेछ। बिभिन्न प्रदायकहरू जस्तै भर्चुअलक्स र प्यारालेल्स तपाईंको लागि भर्चुअल मेसिन चलाउन सक्दछ, यद्यपि यो एक द्रुत वातावरण प्रयोग गर्न चाहान्छ भने एक द्रुत, स्ट्रिंकल अनुभव सिर्जना गर्न सिफारिस गर्न सिफारिस गर्न। यदि तपाईं लिनक्स वा विन्डोजहरू प्रयोग गर्दै हुनुहुन्छ भने जुन म सिफारिश गर्दछु, यो परियोजना सिर्जना गर्न एकदम सजिलो हुनुपर्दछ। तपाईंको टर्मिनल खोल्नुहोस्, तपाईंले फिट देख्नुहुँदा सिनिंग समायोजित गर्नुहोस्, र चरण 2 सुरू गर्नुहोस्। यदि तपाईं विन्डोजहरू प्रयोग गर्दै हुनुहुन्छ भने कृपया चरण 1 अनुसरण गर्नुहोस् 1।
चरण 1: - विन्डोज प्रयोगकर्ताहरू मात्र विन्डोजमा, खुला कमान्ड प्रम्प्ट प्रशासक र टाइपको रूपमा wsl -instlull
चरण 2: - यहाँ जारी राख्नुहोस्, वा यहाँ कदम 1 मा जानुहोस् यदि तपाईं विन्डोजहरू प्रयोग गर्नुहुन्न भने खुला टर्मिनलमा, (तपाईंको ओएसमा निर्भर गर्दै, Mubuntu मा onuntu, म्याक वा लिनक्स, वा समान नाममा) परियोजना सिर्जना गरेर सुरू गर्नुहोस्। हामी यसलाई MKDIR आदेशको साथ गर्छौं, जसले डाइरेक्टरी सिर्जना गर्दछ। यदि तपाइँ तपाइँको परियोजना भण्डारण गर्न एक डाइरेक्टरी सिर्जना गर्न आवश्यक छ, जुन सिफारिस गरिएको छ, सीडी कमाण्डको डाइरेक्टरीमा परिवर्तन गर्न र र
सीडी / पथ / / निर्देशिका - मार्गमा फोल्डर (फाइलहरू) हो जुन तपाईंको गन्तव्य निर्देशिकालाई प्राथमिकता दिईन्छ, तपाईंको पूर्वनिर्धारित मार्ग तपाईंको प्रयोगकर्ता नाम हो)। पूर्वनिर्धारित डाइरेक्टरीमा परिवर्तन गर्न CD वा CD ~ mkdir उदाहरण - निर्देशिका नाम को साथ "उदाहरण" बदल्नुहोस्
अब तपाइँसँग तपाइँको परियोजना को लागी एक कार्य निर्देशिका छ। यो डाइरेक्टरीसँग बिभिन्न मेशीनमा स्विच गर्न आवश्यक छ वा तपाईंले लेख्ने कोडलाई तपाईंले लेख्न आवश्यक पर्ने कोडमा बचत गर्नु आवश्यक छ त्यसैले यो वेबको लागि तयार छ, हामी अर्को केही चरणहरूमा तपाईंको डाइरेक्टरीमा फिर्ता गर्न स्क्रिप्ट गर्नेछौं। तर एउटा स्क्रिप्ट निर्माण गर्दा कोडको केहि चीज लिन्छ, र कोड सकेसम्म उपयोगी हुन स्वचालित गर्न आवश्यक छ। त्यसोभए पहिले स्क्रिप्टहरू निर्माण गर्न एउटा स्क्रिप्ट निर्माण गरौं। स्क्रिप्ट सिर्जना गरेर र यसलाई कार्यान्वयन योग्य बनाएर सुरु गरौं। हामी सूर्य, चिधोड र यसका लागि स्पर्श गर्नेछौं, र स्क्रिप्ट "आक्रिपर्षकहरू कल गर्नेछौं।
sudo touch /usr/bin/ascript
sudo chmod a+x /usr/bin/ascript
sudo nano /usr/bin/ascript
अब हामीले स्क्रिप्ट सिर्जना गरेका छौं, यो कार्यान्वयन योग्य बनाएको छ र यसलाई सम्पादन गर्न तयार छन्। नानो एक पाठ सम्पादक हो जसले तपाईंलाई क्लिक नगरीकन पाठ सम्पादन गर्न दिन्छ, जुन एक ग्राफिकल प्रयोगकर्ता इन्टरफेस प्रयोग गर्नु भन्दा धेरै सजिलो छ। नानोको साथ फाईल सम्पादन गर्न, नानो प्रयोग गर्नुहोस् र त्यसपछि फाईलमा मार्ग प्रयोग गर्नुहोस्। स्क्रिप्ट बनाउन जुन स्क्रिप्ट बनाउँदछ, यो हाम्रो स्क्रिप्ट पहिलो स्थानमा बनाउनको लागि मिल्दछ। हामी माथिको जस्तै कोड प्रयोग गर्नेछौं, स्क्रिप्टको नाम बदल्दै, एक तर्क प्यारामिटरको साथ, $ 1। यसले हामीलाई स्क्रिप्टलाई मात्र टाइप गरेर स्क्रिप्टलाई कल गरेर कल गरेर, जसमा तपाईंको स्क्रिप्टको नामको साथ "समाचारकरण" प्रतिस्थापन गरेर कुनै पनि नयाँ स्क्रिप्ट सिर्जना गर्न सक्दछौं। नानोमा कोड जस्तो देखिनु पर्छ:
sudo touch /usr/bin/$1
sudo chmod a+x /usr/bin/$1
sudo nano /usr/bin/$1
र नानो बन्द गर्न, हामी नियन्त्रण कुञ्जी समात्न सक्दछौं र X थिचो गर्न सक्दछौं, ढु other ्ख्यामा हामी फाईल बचत गर्दैछौं, र फिर्तीमा हिर्काउन सक्छौं। अब प्रिन्ट सम्पादन गर्न यी तीन आदेशहरू टाइप गर्नुको सट्टा हामी सुडोलाई फेरि स्क्रिप्ट सम्पादन गर्न सक्षम हुनेछौं। यो काम गर्दछ! र कुनै नयाँ स्क्रिप्टलाई सजिलैसँग सञ्चालन गर्न सकिन्छ यसलाई शेलमा कल गरेर। अब हाम्रो काम बचत गर्नुहोस्: हाम्रो नयाँ स्क्रिप्ट बचत गर्न र ब्याकअप स्क्रिप्ट अप गर्दा पनि ब्याकअपअप स्क्रिप्ट लेख्नुहोस्, जबकि ब्याकअप स्क्रिप्ट अप पनि गर्दा।
sudo ascript backup
अब, नानोमा:
sudo cp /usr/bin/backup /path/to/directory/
sudo cp /usr/bin/ascript /path/to/directory/
जहाँ / मार्ग / / निर्देशिका / निर्देशिका तपाईले MKDIR साथ सिर्जना गरिएको परियोजनाको लागि मार्ग हो। पछि हामी कसरी एक लुप र एक सूचीको साथ यस प्रकारका दोहोर्याई मार्गहरू कसरी प्रतिलिपि गर्ने सिक्नेछौं, जुन कम कोड हो, तर अब यसको लागि यसलाई सरल राख्नुहोस् र केहि लाइनहरू राख्नुहोस्। यो स्क्रिप्ट चलाउन र तपाईंको कोडलाई ब्याकअप गर्न, नियन्त्रण + x, y र फिर्ताको साथ नानोमा फाईल बचत गर्नुहोस्, र तल तपाईंको शेलमा टाइप गर्नुहोस्
backup
यदि तपाइँ यस पुस्तक पढ्दै हुनुहुन्छ र शेलमा तल पछ्याउँदा सबैको लागि प्रोम्ट गरिएको छ भने, कृपया कमाण्ड पुन: चलाउनु अघि तपाईंसँग तीन प्रयास हुनेछ। कमाण्डहरू रेडरहरू पुनःभर्न र तिनीहरूलाई सम्पादन गर्न तपाईं माथि र तल एर्रोहरू प्रयोग गर्न सक्नुहुनेछ, के तपाईंले दुई पटक केहि चलाउनु आवश्यक छ? सही प्रेस अप र एक आदेश चयन गर्न को लागी आदेश चयन गर्नु अघि, कमान्ड सम्पादन गर्नु अघि, बायाँ एरो र कुञ्जी र कुञ्जीपाटी, र यसलाई फिर्ताको साथ चलाउनुहोस्।
बधाई! तपाईंले आफ्नो काम गर्ने डाइरेक्टरीमा दुई महत्त्वपूर्ण शेल स्क्रिप्टहरू फिर्ता गर्दछ जुन तपाईंको काम निर्देशिकामा दुई महत्त्वपूर्ण शेल स्क्रिप्टहरू फिर्ता गर्दछ। परियोजना ठूलो हुन्छ पछि हामी चीजहरू सार्न सक्दछौं, तर यसले अहिलेको लागि काम गर्दछ। बादलमा ब्याक अप गर्न अगाडि बढौं, हामी यसका लागि जिथिब प्रयोग गर्नेछौं (जबकि त्यहाँ तपाईंको सफ्टवेयरमा सम्पादन सफ्टवेयर हो जुन तपाईंको सफ्टवेयरको सम्पूर्ण प्रतिलिपिहरू हो जुन तपाईंलाई तपाईंको सफ्टवेयरको लागि प्रयोग गर्दछ। तपाईंको सफ्टवेयर बचत गर्न यो उपकरण हो, विशेष गरी हामी लिनक्स उदाहरणहरू सुरक्षित गर्नमा व्यस्त छौं कि जब तपाईंको कोड असफल हुन्छ भने, यदि तपाईं यसलाई स्वचालित रूपमा फिर्ता गर्नुहुन्न भने।
यदि तपाईं यस बुँदामा उबुन्टु भर्चुअल मेसिन प्रयोग गर्दै हुनुहुन्न भने, म यस बिन्दुमा उबुन्टु भर्चुअल मेसिन प्रयोग गर्दैछु किनकि यसले तपाईंको जीवनलाई सजिलो बनाउँदछ जब काम गर्ने प्रत्येक प्याकेजहरू स्थापना गर्न र तपाईंको कम्प्युटरमा। हामी निकट भविष्यमा कोडलाई वेब सर्भरमा सार्नेछौं, तर हामी निश्चित गर्न चाहन्छौं कि त्यहाँ तपाईको वेब सर्वर पछाडि सुरक्षाका केहि तहहरू छन् जुन औषधि दिन प्रतिरोधात्मक छन्, र यो गर्नका लागि धेरै लिनक्स प्याकेजहरू प्रयोग गर्नुहोस्। यदि तपाईं अझै पनि म्याक ओएस प्रयोग गर्न चाहानुहुन्छ भने, तपाईंलाई आवश्यक प्याकेजहरू अनलाइन खोजी र स्थापना गर्न स्वागत छ, तर त्यहाँ प्रत्येक प्याकेज वा श्रृंखला कभर गर्न को लागी विकल्प हुन सक्दैन।
आदेश स्क्रिप्टले आदेश स्क्रिप्टलाई आदेशको साथ कार्य गर्न केहि कमाण्डहरू गर्न आउनुहोस् आदेश सुपक्रिप्ट ब्याकअप चलाएर।
# ...
फेरि फेरि, बचत गर्न X लाई नियन्त्रण गर्नुहोस्।
अब हामीले यस परियोजनाको लागि केही समय कन्फिगरेसन गर्न आवश्यक छ। किनकि यो छिट्टै git परियोजना हुनेछ, हामी प्रत्येक समय एक गिरापोलिटरीबाट डिप्लोयरबाट खरिद गर्ने प्रत्येक पटक प्रत्येक आदेश टाइप गर्नुपर्दैन, तर हामी हाम्रो डिप्लोयमेन्ट स्क्रिप्टहरू लेख्दा हामी यसको पर्खाल पाउनेछौं। सुरु गर्न, निश्चित गर्नुहोस् कि हामी सही डाइरेक्टरीमा छौं र गिट भण्डारको प्रारम्भमा र SSH कुञ्जी उत्पन्न गर्दछ।
cd /path/to/directory
git init
git branch -m master
ssh-keygen
हामी ssh-luggen टाइप गरेपछि, नयाँ कुञ्जी भन्नुभयो एक फोल्डर अन्तर्गत एक फोल्डर अन्तर्गत बचत गरिनु पर्छ .SSHH मा। यसलाई आईडी_र्सा.pub भनिन्छ। यो कुञ्जी फेला पार्नुहोस् र यसलाई प्रतिलिपि गर्नुहोस्। यसलाई हेर्नका लागि,
cd ~
cat .ssh/id_rsa.pub
अन्तिम कमाण्ड द्वारा फिर्ता गरिएको पाठ प्रतिलिपि गर्नुहोस्, र तपाईंको git प्रदायक (आदर्श जित्ब) को साथ खाता सिर्जना गर्नुहोस् (आदर्श जित्ब), तपाईंको खातामा SSH कुञ्जी थप्न अघि। एकचोटि तपाईंसँग एउटा खाता छ, माथिल्लो दायाँ मेनूमा क्लिक गर्नुहोस् र सेटिंग्स प्रविष्ट गर्नुहोस्, मेनूमा पहुँच अन्तर्गत तपाईंको SSS कुञ्जी थप गर्नु अघि। चयन गर्नुहोस् एक SSH कुञ्जी थप्नुहोस् र तपाइँले यसलाई विगतमा थप्नुभयो र यसलाई एक शीर्षक प्रदान गरेर, बचत गर्नु अघि र github मा फर्कनु अघि नयाँ भण्डार सिर्जना गर्न। यो अन्य git प्रदायकहरु को लागी समान छ, तपाइँ आफ्नो कागजात पढ्न आवश्यक छ। नयाँ भण्डार कन्फिगरेसनमा, आफ्नो रिपोजिटरीलाई वर्णनात्मक नाम दिनुहोस् र निर्णय गर्नुहोस् कि तपाईं यसलाई प्रकाशित गर्न चाहनुहुन्छ कि अझै समावेशीकरणको लागि कुनै फाईल कन्फिगर गर्नुहोस्। एकचोटि भण्डार सिर्जना गरिएको छ, SSH URL को साथ क्लोन प्रतिलिपि गर्नुहोस्, र निम्न कमाण्डमा यसलाई टाँस्नुहोस्।
git remote add git://… (your remote URL)
अब तपाईं सीडीको साथ तपाईंको रिपोजिटरीमा फर्कन सक्नुहुन्छ, तपाईं यससँग परिचित हुनुहुनेछ। ब्याकअप स्क्रिप्ट अब ब्याकअपको साथ प्रयास गर्नुहोस्
महान! अब हामी वास्तवमै कोडिंग प्राप्त गर्न सक्छौं। Django अहिले स्थापना गरौं कि हामी बाश र git मा राम्रो ज्ञान गरौं। DJago हामीलाई हाम्रो सफ्टवेयरलाई पुन: ब्याभ अप गर्न दिनेछ, बाशले यो पनि गर्न सक्दछ तर DJango सँग सरल सुरक्षित कार्यान्वयन हुनुपर्दछ (यसलाई सजिलैसँग संकुचन गर्न सकिन्छ)।
उबुन्टुमा सफ्टवेयर स्थापना गर्न हामी सुडो एप्टेने कमाण्ड प्रयोग गर्नेछौं। पहिले, हामीसँग पहिले नै भएको सफ्टवेयर अपडेट र अपग्रेड गरौं। यो Sudo Apt-प्राप्त गर्न सकिन्छ अपडेट अपडेट र सुडो एफपीटी -य अपग्रेड -ीई। अर्को, पाइथन र हाम्रो भर्चुअल वातावरण, हाम्रो कोडको घर स्थापना गरौं, निम्न कमाण्डको साथ: Sudo Alt-plagn3 Python3 penv
उबुन्टु उदाहरणमा सफ्टवेयर स्थापनाको सर्तमा django को सर्तमा जानु आवश्यक छ। विन्डोज र लिनक्सका लागि यो पर्याप्त सीधा सीधा हुनुपर्दछ, तर म्याकको लागि तपाईं भर्चुअलबक्स वा पेरेलिक्स डेस्कटप प्रयोग गर्न चाहानुहुन्छ र एक उबुन्टू वातावरण सेटअप गर्नको लागि माथिको चरणहरू सिर्जना गर्न सक्नुहुन्छ। उबुन्टु यस अवस्थामा महत्वपूर्ण छ किनकि यो सफ्टवेयर हो जुन वेबसाइटहरू रन हुन्छन् र यसले तिनीहरूलाई सब भन्दा माथिका सफ्टवेयरको साथ वेबसाइट गर्न सक्षम गर्दछ।
Django मा खन्नुहोस्।
हाम्रो निर्देशिकामा फेरि CD सँग:
python -m venv venv # भर्चुअल वातावरण सिर्जना गर्दछ जहाँ कोड भण्डार गरिएको छ
source venv/bin/activate # भर्चुअल वातावरण सक्रिय गर्दछ
django-admin startproject mysite . # जहाँ Ms Mendite परियोजना हो जुन म मेरो हालको डाइरेक्टरीमा शुरू गर्दैछु।
Djagano हामीलाई सुरूवात गर्दैछ, किनकि DJango वेब सर्भर होस्ट गर्दैछ र आधारभूत स्थानीय वेबसाइट अप र चलिरहेको सबै चीज गरिरहेको छ। अब जुन हामीसँग Django स्थापना गरिएको छ, हामी हामीलाई चाहिने कसरी काम गर्न एक बिट सेटिंग्स सम्पादन गरौं। पहिले, नयाँ अनुप्रयोग सिर्जना गरौं
python manage.py startapp feed
तपाईंले पहिलो अनुप्रयोगलाई खुवाउने याद गर्नुहुनेछ। अनुप्रयोगलाई तपाईलाई जे मनपर्दछ भनिनु पर्दछ, र हामी नयाँ अनुप्रयोगहरू सिर्जना गर्नेछौं, तर प्रत्येक अनुप्रयोगको नाम प्रत्येक पटक अनुरूप हुनुपर्दछ। नयाँ अनुप्रयोग थप्न, हामी जहिले पनि सिर्जना गरिएको अर्को डाइरेक्टरीमा सेटिंग्स ... लाई सम्पादन गर्दछौं, यहाँ सुरू गरिएको स्टार्ट्रोजेक्टमा नामित, पछि। नानो प्रयोग गर्दै,
nano app/settings.py
सेटिंग्समा, स्थापित_ अनुप्रयोगहरू फेला पार्नुहोस् र [[] [] lines लाइनहरूमा अलग गर्नुहोस्। खाली केन्द्र लाइनमा चार खाली ठाउँहरू प्रयोग गर्दै, 'फिड' थप्नुहोस्, वा तपाईंको अनुप्रयोगको नाम। सेटिंग्स। Fill को यो खण्ड जस्तो देखिनु पर्छ:
INSTALLED_APPS = [
'feed',
]
बिर्सनु भन्दा पहिले, आउनुहोस् डज ang ्गोले काम गरिरहेको छ। कमाण्ड पाइथन प्रबन्धन प्रयोग गर्दै
अब, केहि पाइथन कोड लेख्न दिनुहोस्। Django तीन मुख्य कम्पोनेन्टहरू छन्, ती सबै पूर्ण रूपमा कोड द्वारा चलाउँछन्। कम्पोनेन्टहरू भने मोडेल भनिन्छ, दृश्य र टेम्प्लेट, र प्रत्येक एक उच्च र तल्लो स्तरमा USERED र तल्लो तहमा छ जुन वेबपृष्ठमा डेलिभर हुनु अघि।
मोडेल भनेको कोड हो जुन डाटाबेसमा पुन: प्राप्ति र रेन्डरिंगको लागि जानकारी भण्डार गर्दछ।
यो दृश्यले निर्णयहरू प्रस्तुत गरिएको छ, हेरफेर र संशोधित, लगभग सबै दृश्यले सिधा एक मोडल प्रयोग गर्दछ।
टेम्पलेट HTML कोड हो जुन केहि थप घण्टीहरू र टेरिप्लेस भाषा बोलाइयो। टेम्पलेट दृश्य द्वारा रेन्डर गरिएको छ जहाँ यो पाइथन कोड र प्रसंगले भरिएको छ जुन मोडेलहरू (USUALL स्ट्रिंग र पूर्णांक)।
Django अन्य कम्पोनेन्टहरू पनि छन्, सहित तर सीमित छैन:
सेटिंग्स, जसले अनुप्रयोगको कन्फिगर गर्दछ हामी छलफल गर्दछौं।
URL, जुन प्रयोगकर्ताले वेब अनुप्रयोगको विशिष्ट भागहरूमा पहुँच प्राप्त गर्न अनुसरण गर्न पाटिन हो।
फारमहरू, जसले सर्वरमा पठाइएको जानकारी कसरी ह्यान्डल गरिएको छ भनेर परिभाषित गर्दछ र डाटाबेसमा साथै प्रयोगकर्तालाई रेन्डर गरिएको छ। यी सर्वर छेउमा जानकारी प्रशोधन गर्ने आधारहरू हुन्, र कम्प्युटर स्टोरहरू, धेरै जसो पाठीय स्ट्रिंगहरू, र सत्य / झूटा बुबानहरू)।
टेम्पलेटहरू, जुन HTML कोड र टेम्पलेट भाषा र पुललाई पाइथन कोड बीचको खाली ठाउँ र एक टाढाको उपकरणमा एक विभिन्न उद्देश्यका लागि प्रयोग गर्न सकिन्छ, जबकि एक रिमोट उपकरणमा विभिन्न उद्देश्यका लागि प्रयोग गर्न सकिन्छ जुन सर्भरको नजिक हुनु आवश्यक छैन।
स्थिर फाइलहरू, जुन प्राय जसो जाभास्क्रिप्ट हुन्छ र यसलाई पुस्तकालयहरू हुन् जुन सर्भरले सेवा गर्दछ र टेम्पलेटसँग लिंक गरिएको छ।
मिडिया फाईलहरू, जुन सर्भरले सेवा गर्दछ वा बाह्य होस्ट गरिएको छ, वा प्रोसेसिंग हुनु अघि सर्भरमा लेखिएको र अर्को सर्भर (एक बाल्टिन) मा पोस्ट गर्नुहोस् (एक बाल्टिन)।
बीचको बीचमा, जुन कोडको टुक्राहरू हुन् जुन प्रत्येक दृश्यको रूपमा एकै समयमा चलाउँदछन् र दृश्यमा "समावेश गरिएको" मानिन्छ।
प्रस cons ्ग प्रोसेसरहरू, जसले प्रत्येक दृश्यको सन्दर्भमा प्रक्रिया गर्दछ र अतिरिक्त प्रस context ्ग थप्न प्रयोग गरिन्छ।
परीक्षणहरू, जसले प्रयोगकर्ता वा अनुरोधलाई रेन्डर गर्नु अघि केहि आवश्यकताहरू पास गर्दछ भनेर मान्य गर्नुहोस्।
उपभोक्ताहरू, जुन डिपर गर्दछ कि हामी कसरी वेबठासलहरू ह्यान्डल र संचारलाई जवाफ दिन्छौं।
प्रशासक जुन मोडेलहरू दर्ता गर्न प्रयोग गरिन्छ त्यसैले तिनीहरू DJango प्रशासन पृष्ठ भित्र विस्तृत रूपमा चलाउन सकिन्छ, जहाँ डाटाबेस ग्राफिकल ईन्टरफेस मार्फत प्रशासित गर्न सकिन्छ।
अजवाइन, जसले Django कोडको एसिन्कोन्क्रोनिक कार्य भागहरू परिभाषित गर्दछ तुरुन्त कार्य वा कोडको लाइनमा अगाडि बढ्न अघि बढ्न थाल्छ।
DJango त्यहाँ अन्य धेरै कम्पोरेन्टहरू हुन सक्छन्, जुन हामी यहाँ विस्तृत रूपमा छलफल गर्नेछौं। त्यहाँ DJango अधिक कार्यात्मक बनाउनका लागि प्रशस्त तरिकाहरू छन्, वेबन्यशेलहरू थप्दै, जुन द्रुत, द्रुत सञ्चार च्यानल, विशेष गरी अवशेषहरू छन्। दृश्य प्रकार्यहरू कुञ्जी हुन् किनकि उनीहरू प्राय: कोडको प्रत्येक टुक्रा घोषित गर्दछन् जुन एक विशिष्ट URL ढाँचा, वा सर्भर को एक खण्ड को लागी निर्दिष्ट छ।
पहिले, अवलोकन प्रकार्यहरू पत्ता लगाऔं। अवलोकन गर्नुहोस् आयातमा कार्यहरू सुरू गरिएको कोड जुन दृश्यमा प्रयोग हुनेछ जुन दृश्यमा प्रयोग हुनेछ, र नियमित कार्य परिभाषा वा वर्गहरूको प्रयोग गरेर परिभाषित गरिन्छ। सब भन्दा साधारण दृश्यहरू समाजको परिभाषाले परिभाषित गरिएको छ, र आधारभूत टेम्प्लेटको साथ एक httpresstantest फिर्ता गर्नुहोस्। पाठलाई "हेलो संसार" लाई फिर्ता गर्न आधारभूत दृश्य परिभाषित गरेर सुरु गरौं। याद गर्नुहोस् कि प्रत्येक चोटि डिफ जस्तो बयान पछि तपाइँ कोड थप्नुहोस्, यदि, जबकि, आदि समय को लागी तपाइँ तपाइँको प्रकार्य को लागी आवेदन गर्न चाहानुहुन्छ। हामी ती प्रत्येकलाई चाँडै नै पाउँछौं चाँडै।
हाम्रो साइटको निर्देशिकाबाट, खुवाइ / दृश्यहरू अनओड गर्नुहोस् र नानो प्रयोग गरेर फिड फाईल सम्पादन गर्नुहोस् र फाईलहरूको अन्त्यमा निम्न लाइनहरू थप्नुहोस्।
from django.http import HttpResponse
def hello(request):
return HttpResponse('hello world')
Django httpressransest एक पाठ स्ट्रि with को साथ प्रतिक्रिया गर्दछ, खुल्ला र बन्द गर्दै '। प्रत्येक चोटि तपाईले प्रकार्य वा वर्गलाई जानकारी दिनुहोस्, जस्तो अनुरोध वा स्ट्रिंग जस्तै तपाईले कोष्ठक प्रयोग गर्नु आवश्यक छ (खोल्ने र बन्द गर्दै)।
हामीले हाम्रो दृष्टिकोण अहिलेसम्म हेर्नु आवश्यक पर्दैन। अवश्य पनि हामीले सर्टलाई भनिएको छैन जहाँ दृश्य ठीक छ, हामीले अझै पथ परिभाषित गर्न आवश्यक छ जुन दृश्यले प्रस्तुत गर्नुपर्दछ। अनुप्रयोग / URLS.ct मा आधारभूत मार्ग परिभाषित गरेर सुरू गरौं, र हामी पछि मार्ग समूहहरूमा आउनेछौं।
अनुप्रयोग / URLLS.PT.PHER, हामीले भर्खरै बनाएको दृश्य आयात गरिएका दृश्यहरू आयात गरेपछि आयात कथनहरू पछि एक लाइन थप्नुहोस्।
from feed import views as feed_views
अब, अवलोकन ढाँचा परिभाषित गरौं। ढाँचामा हेर्नुहोस् तीन कम्पोनेन्टहरू, पथ कम्पोनेन्टमा, वेबप्रायरमा प्रवेश गर्ने वा अधिक तार्किक नाम प्राप्त गर्न आवश्यक छ। यस तरिकाले कामहरू गर्न यो समझदारी हुन्छ र लचिलो हुन्छ, किनकि तपाईंको कोडबेरी एक सँधै परिवर्तन गर्ने वातावरण हुनेछ जुन मूल्यवान रसँग काम गर्न सजिलो हुन्छ। यहाँ तपाईंको दृश्य कस्तो देखिन्छ, तपाईं यसलाई Urlpatterns = [अनुप्रयोग / URLS / URLS / SELLS. को सेक्सन गर्न सक्नुहुन्छ। दृश्य बान्की माथि वर्णन गरिएको तीन कम्पोनेन्टहरूसँग परिभाषित गरिएको छ, र मार्ग भनिने प्रकार्य। तपाईंको URL ढाँचा एक सूची हो, त्यसैले अल्पविरामसँग प्रत्येक वस्तुको अन्त्य गर्न निश्चित गर्नुहोस्, किनकि यसले प्रत्येकलाई अलग गर्दछ। प्रत्येक आईटम पनि नयाँ लाइनमा जानु पर्छ, फेरि यो भन्दा पहिले चार खाली ठाउँहरू जस्तै, यदि सेटिंग्स.पी. हामी वेब सर्वरको रुट निर्देशिकामा चल्छ। तपाईंको URLLS.PT अब यस्तो देखिनु पर्छ:
from feed import views as feed_views
urlpatterns = [
path('', feed_views.hello, name='hello'),
]
यो django को साथ वेबसाइट सिर्जना गर्नका लागि आधार हो जुन पूर्ण रूपमा स्थिर छ। अधिक गतिशील वेबसाइट बनाउन जहाँ हामी carchage जानकारी सुरू गर्न सक्दछौं, छविहरू, भिडियोहरू, भिडियो, अडियो र अधिक, हामीले अर्को अन्वेषण गर्न सक्दछौं। अहिलेको लागि, हामी हाम्रो कोड जाँच गरौं र सर्भर चलाऔं। त्रुटिहरूको लागि कोड जाँच गर्न, रन गर्नुहोस्:
python manage.py check
यदि त्यहाँ कुनै त्रुटि सन्देशहरू छन् भने, तपाईंले ध्यानपूर्वक आफ्नो अनुप्रयोगमा बनाएको परिवर्तनहरू समीक्षा गर्नुपर्नेछ र यदि त्यहाँ निश्चित हुनु आवश्यक छ भने, एक अतिरिक्त चरित्र, कुनै पनि ट्र्यापोकर चरित्र, वा अरू केहि पनि। त्रुटि सन्देश मार्फत पढ्दा (यदि तपाईंसँग एक छ भने), तपाईंले सिर्जना गरेको फाईलमा पथ हेर्न सक्नुहुनेछ वा एक लाइन नम्बरको साथ सम्पादन गर्नुहोस् र यदि तपाईं त्यहाँ केहि पनि गर्न सक्नुहुन्छ भने। यदि तपाईंले मुद्दा तय गर्नुभयो भने, माथिको कमाण्ड फेरि फेरि दगुर्नुहोस्। जब तपाइँको सफ्टवेयर चलाउन को लागी तयार छ र काम गरिरहेको छ, तपाइँ आउटपुट देख्नुहुनेछ "प्रणाली जाँचले कुनै मुद्दा पहिचान गर्दैन।" अब तपाईं जान तयार हुनुहुन्छ। सर्भरमा चलाउनुहोस्:
python manage.py runserver 0.0.0.0:8000
अब वेब ब्राउजर खोल्नुहोस् र HTTP मा नेभिगेट गर्नुहोस्: // लोभीस्ट: 000000। तपाईंले पाठ देख्नुहुनेछ जुन तपाईंको दृश्यमा HTTPRONSSISS प्रकार्यमा फर्केका थिए। यो केवल आधारभूत उदाहरण हो, तर यदि तपाईंले यो टाढा बनाउनु भयो भने, तपाइँले कसरी लिनक्स, बाथम, पायथन र Django कार्यलाई कति बनाउने बुझ्नुभयो। केहि डाटाबेस मोडेलमा गहिरो खन्नुहोस्, र जानकारी भण्डारणमा पाइथनको वर्गको शक्ति अन्वेषण गरौं। त्यसोभए, हामी HTML र CSS मा एक पकड प्राप्त गर्न शुरू गर्नेछौं कि हामीले हाम्रो साइट पूर्ण रूपमा प्रस्तुत गर्नु अघि, लचिलो र मेसिन शिक्षा प्रयोग गरेर।
कक्षा तपाईंको अनुप्रयोगको मोडेलमा भण्डारण गरिएको छ। नानो प्रयोग गर्दै, सम्पादन गर्नुहोस् अनुप्रयोग / मोडेलहरू। कक्षाको वर्ग परिभाषाको साथ परिभाषित गरिएको छ र एक सुपरक्लास पास हुन्छ कि यो विरासतमा मोडेलहरू भएर मोडल। कक्षाको नाम क्लास परिभाषा पछि आउँछ, र कक्षा परिभाषा पछि: (कोलोन) पछि प्रयोग गरिन्छ, कक्षामा बाँधिएको विशेषता र प्रकार्य परिभाषाहरू तल दिइन्छ। हाम्रो कक्षालाई एउटा आईडी चाहिन्छ हामी यसलाई पुन: प्राप्त गर्न प्रयोग गर्न सक्दछौं र यसलाई अद्वितीय राख्न सक्दछौं, र यसको केही जानकारी भण्डार गर्न पनि एउटा पाठ क्षेत्रको आवश्यकता छ। पछि हामी एक समय (सही वा गलत परिभाषाहरू थप्न सक्दछौं (सही वा गलत परिभाषाहरू जुन हाम्रो कोडले मोडेलमा के गर्ने भन्ने बारे निर्णयहरू गर्न सक्दछौं), एक उदाहरणलाई सर्वरमा लग इन गर्न सकिन्छ। तल कोड अनप्याक गरौं:
from django.db import models # आयात जुन हाम्रो कक्षा परिभाषित गर्न प्रयोग गरिन्छ र यो विशेषता हो
class Post(models.Model): # हाम्रो कक्षाको परिभाषा
id = models.AutoField(primary_key=True) # हाम्रो मोडेलको आईडी, एक स्वचालित रूपमा उत्पन्न गरिएको कुञ्जी जसले हामीलाई मोडेल क्वेरी गर्न दिनेछ, यसलाई अद्वितीय राख्नुहोस्, र जब यो मोडेलसँग अन्तर्क्रिया गर्न आवश्यक पर्दछ।
text = models.TextField(default='') # हाम्रो कक्षाका स्टोरहरू, यस अवस्थामा, केहि पाठ, खाली स्ट्रि to लाई पूर्वनिर्धारित गर्दै।
समाप्त र फाइल बचत गर्नुहोस् जुन हामीले समाप्त गर्नु अघि गर्यौं।
त्यहाँ अन्य धेरै क्षेत्रहरू र विकल्पहरू पत्ता लगाउँदछन् जब हामी हाम्रो अनुप्रयोग विकसित हुन्छौं तब यस वर्ग अपडेट हुन्छ, तर यो केहि पाठ पोष्ट गर्न अनुप्रयोग सिर्जना गर्ने आधारभूत आवश्यकताहरू हो। यद्यपि यो मोडल एक्लै काम गर्दैन। पहिले वर्णन गरिएझैं हामीलाई यस मोडेलको काम बनाउने कस्टम दृश्य र अनुकूलन ओरेल बान्की चाहिन्छ, र हामीलाई टेम्प्लेटको साथ पनि एक फारम पनि चाहिन्छ। पहिले फारम अन्वेषण गरौं।
एक फारम परिभाषित गर्न, APT / फारमहरू सम्पादन गर्न र निम्न लाइनहरू थप्नुहोस्। हामीलाई दुई आयात, हाम्रो फारम वर्गको आवश्यकता छ, साथै हामीले बनाएको मोडेल, मोडेलको समान रूपमा एक ग्रान्ड परिभाषाको साथ एक क्षेत्र परिभाषित गर्दछ। फारम एक प्राविधिक कार्य गर्न सक्दछ जुन अनुरोध, मोडेल वा अन्यथा जानकारीमा आधारित यसलाई सेट गर्दछ, हामी यसलाई पछि अन्वेषण गर्नेछौं।
मोडेल फारमहरू यति उपयोगी छन् किनकि उनीहरूले मोडेल सिर्जना गर्न सक्दछन् वा एक मोडेल सम्पादन गर्न सक्छन्, त्यसैले हामी तिनीहरूलाई दुबैको लागि प्रयोग गर्नेछौं। Ougl.py को लागी एक परिभाषा गरौं।
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',)
यो एक फारम र मोडेल जस्तो देखिन्छ। यस मोडेल फारम पोष्ट गर्न वा पोष्टलाई सम्पादन गर्न प्रयोग गर्न सकिन्छ, यसले समावेश गरिएको पाठ परिवर्तन गर्न। हामी यस फारमलाई अर्को दृश्यमा एकीकृत गर्न हेर्नेछौं। पहिले, माइग्रेसनहरू बनाऔं र डाटाबेस बसाल्नुहोस् ताकि हाम्रो कोडले मोडेलसँग अन्तर्क्रिया गर्न सक्दछ जब यो चल्छ। यो गर्न, निम्न आदेशहरू चलाउनुहोस्:
python manage.py makemigrations
python manage.py migrate
यो कार्यान्वयन गर्न एक मिनेट लिन सक्दछ, तर एक पटक यसले तपाईंलाई विचार, बीचको, वा सफ्टवेयरमा अरू कुनै पनि ठाउँमा मोडेल पहुँच गर्न अनुमति दिनेछ। हामी हाम्रो मोडेल देख्न सक्ने दृश्य बनाउँदा जारी रहौं। फिड / दृश्यहरू सम्पादन गर्नुहोस् र निम्न कोड थप्नुहोस्, उल्लेख गरिए अनुसार। तपाइँले # चिन्ह पछि केहि थप्न आवश्यक पर्दैन, त्यो कोड टिप्पणीहरू हुन् जुन कोडको बारेमा जानकारीलाई दर्शाउन प्रयोग गरिन्छ। हामी विचारहरूमा हाम्रो मोडल आयात गरेर सुरू गर्नेछौं, र यसलाई एक प्रससम्म थप्नेछौं जहाँ हामी यसलाई प्रदर्शनका लागि सूचीको रूपमा टेम्पलेटमा अनुवाद गर्न सक्दछौं। अर्को, हामी टेक्स्टलेट थप्नेछौं जहाँ हामी फारम र मोडेलमा आधारित नयाँ वस्तु सिर्जना गर्न बटनको साथ प्रस्तुत गर्न सक्दछौं र यसलाई सर्भरमा पोष्ट गर्दछौं। यो जटिल देखिन्छ, त्यसैले यसलाई मात्र कदम द्वारा यसलाई प्राप्त गरौं। हामीले दृश्य समाप्त गर्नु अघि, टेम्पलेटहरू सिर्जना गरौं जुन केवल मोडेल रेन्डर गर्दछ र निश्चित गर्नुहोस् कि हामी यसलाई शेलमा नयाँ पोष्ट बनाएर देख्न सक्छौं। यहाँ कसरी देखिन्छ कि दृश्य हेर्नु पर्छ:
posts = Post.objects.all() # केही पोष्टहरू जुनसम्म डाटाबेसमा क्वेरीहरू अहिले सम्म
यो सबै धेरै सरल देखिन्छ जब सम्म हामी तल पुग्दैनौं। प्रस्तुत गर्नुहोस्, अघिल्लो उदाहरण जस्तो HTTP प्रतिक्रियामा कार्यले कार्य गर्दछ। टेम्पलेट jinja2 भनिएको भाषाको एक अलिकता एचटीएमएल कागजात हुन गइरहेको छ, जसले पाइथन सूचनालाई HTML मा जानकारी प्रदान गर्दछ।
टेम्प्लेटहरू सिर्जना गर्न सुरू गर्न, फिडमा दुई डाइरेक्टरी बनाउनुहोस्।
mkdir feed/templates
mkdir feed/templates/feed
अर्को, माथिको डाइरेक्टरीमा टेम्पलेट सम्पादन गर्नुहोस्, फिड / टेम्प्लेटहरू / फिड, र यस उदाहरणका लागि कोड थप्नुहोस्। यस उदाहरणका लागि टेम्प्लेटमा हेरौं।
यो एक धेरै साधारण टेम्पलेट हो। यसले खोल्ने र बन्द गर्ने हो। यी सबै चीजहरू हुन् जुन पोष्टहरू प्रस्तुत गर्न लिन्छ, तर त्यहाँ डाटाबेसमा कुनै छैन। शेलको साथ केहि सिर्जना गर्नुहोस्। हामी संयोजनको साथ शेल चलाउन सक्छौं।
python manage.py shell
अब, हाम्रो पोष्ट मोडेल आयात गरौं
from feed.models import Post
अर्को, हामी स्ट्रिंगको साथ एक साधारण पोस्ट सिर्जना गर्नेछौं र शेलबाट बाहिर निस्कन्छौं। स्ट्रिंग केहि पनि हुन सक्छ, जब सम्म यो धेरै मान्य पाठ हो।
Post.objects.create(text='hello world')
exit()
अन्तमा, हामीले हाम्रो फिडको लागि URL बान्की थप्न आवश्यक पर्दछ। किनकि हाम्रो फिड अनुप्रयोगले बहु URL प्रयोग गर्दछ र हामी फाईल आकार सानो राख्न चाहन्छौं, हामी यसको फिडको फिक्स अनुप्रयोगमा स्थानीय URLE अनुप्रयोगहरू सिर्जना गर्दछौं जुन यस्तै देखिन्छ:
from django.urls import path
from . import views
urlpatterns = [
path('', views.feed, name='feed'),
]
हामीले आधार अनुप्रयोगमा URLS सम्पादन गर्नुपर्नेछ, जुन हामीले यसलाई जे पनि कल गर्ने निर्णय गर्यौं, यो हामीले सिर्जना गरेको पहिलो निर्देशिका थियौं। APIT अनुप्रयोग / अनुप्रयोग। ARRED URL ढाँचामा निम्न थप्नुहोस्
from django.urls import include # शीर्षमा
# ... अघिल्लो कोड यहाँ
अब, जब हामी पायथन प्रबन्धन। अर्को, हामीले सिर्जना गरेको फारम कार्यान्वयन गरौं र आफ्नै पोष्टहरू सिर्जना गर्न सुरू गरौं। तर हामीले धेरै धेरै कोड लेख्नु अघि, हामीले लेखेको स्क्रिप्ट प्रयोग गरेर ब्याकअप गरौं, ब्याकअप। शेलमा यो स्क्रिप्ट चलाउनुहोस्, केहि क्षणलाई पर्खनुहोस्, र सबै कोड हाम्रो गिट भण्डारमा ब्याक अप हुनेछ।
backup
फारम कार्यान्वयन गर्दै तुलनात्मक रूपमा सरल छ। हामी हाम्रो फारम आयात गर्नेछौं, एक पोस्ट अनुरोध ह्यान्डलरलाई दृश्यमा थप्नेछौं, र समान दृश्यमा डाटाबेसमा पोष्ट बचत गर्नुहोस्। हामी रिलीयरेक्ट प्रकार्य प्रयोग गर्न सक्दछौं जुन हामीले पहिले नै आयात गरी आयात गर्न सक्दछौं, र अर्को प्रकार्य अवलोकन ढाँचाको लागि यूआरएल प्राप्त गर्न उल्टो भनिन्छ। हामी यसलाई स्ट्रिंग 'फिड: फिड' को साथ क्वेरी गर्नेछौं किनभने समावेश ढाँचाको नाम फिड हो, र दृश्य पनि फिड भनिन्छ।
posts = Post.objects.all() # केही पोष्टहरू जुनसम्म डाटाबेसमा क्वेरीहरू अहिले सम्म
if request.method == 'POST': # पोष्ट अनुरोध ह्यान्डल गर्नुहोस्
form = PostForm(request.POST) # फारमको एक उदाहरण सिर्जना गर्नुहोस् र यसलाई डाटा बचत गर्नुहोस्
if form.is_valid(): # फारम मान्य गर्नुहोस्
form.save() # नयाँ वस्तु बचत गर्नुहोस्
return redirect(reverse('feed:feed')) # एक प्राप्त अनुरोध को साथ समान URL मा पुनः निर्देशित
'form': PostForm(), # निश्चित रूपमा सन्दर्भमा पारित गर्न निश्चित गर्नुहोस् ताकि हामी यसलाई अनुवाद गर्न सक्दछौं।
अब, हामी नयाँ फारम को लागी खाता गर्न टेम्प्लेट अपडेट गर्न आवश्यक छ। हामी यो प्रयोग गरेर यो गर्न सक्दछौं
यसलाई भाँच्नुहोस् गरौं। त्यहाँ एक नयाँ फारम वर्ग, टोकन छ, फारम आफैं, र एक सबमिट बटन। धेरै सरल, तर जब हामी यसलाई हेर्छौं, हामी यसलाई अझ राम्रो बनाउन चाहान्छौं। यसले काम गर्दछ, हामी नयाँ पोष्टहरू फारमको साथ पोष्ट गर्न सक्दछौं र अब तिनीहरू डाटाबेसमा बचाइएका छन्। यहाँ केहि चीजहरू छन्। हामी कागजात HTML कागजात हो भनेर घोषणा गर्न हामी HTML ट्यागहरू प्रयोग गर्दछौं, हामी फारम र अर्को, {{{{{}} {}} {}}} प्रदान गर्न। हामी ब्लक ट्यागहरू र एक टेम्पलेट ट्याग प्रयोग गरेर पाठ रेन्डर गर्न एक लुप पनि छ। ब्लक ट्यागहरू वास्तवमै महत्त्वपूर्ण छन् किनकि हामी परिभाषित गर्न सक्दछौं उनीहरूसँग कसरी अनुवाद गरिएको टेम्प्लेटहरू कसरी प्रस्तुत गरिन्छ भनेर हामी परिभाषित गर्न सक्छौं कि टेम्पलेट ट्यागहरू हामी कसरी हाम्रो कोडमा राख्छौं।
अब हामीले हाम्रो अनुप्रयोगलाई अझ राम्रो बनाउनु पर्छ, किनकि अहिलेको लागि यो वास्तवमै आधारभूत देखिन्छ। हामी यसलाई CSS प्रयोग गरेर गर्न सक्दछौं, या त ओटलाइन, वा कक्षामा प्रत्येक वस्तुमा बाँधिएको वर्गमा। CSS वास्तवमै राम्रो छ किनकि यसले पृष्ठमा सबै कुरा बताउँदछ कि यो कसरी हेर्नुपर्दछ, र यसलाई वास्तवमा राम्रो बनाउन सक्दछ। त्यहाँ केहि पुस्तकालयहरू छन् जुन यो गर्न सक्दछ, तर मेरो व्यक्तिगत बुटस्ट्र्याप हो।
बुटस्ट्र्याप तिनीहरूको वेबसाइटबाट डाउनलोड गर्न सकिन्छ,getbootstrap.com/। त्यहाँ एक पटक, स्थापना कागजात पढ्नको लागि बटन थिच्नुहोस्, र CDN सेक्सन मार्फत समावेश गर्नबाट कोड प्रतिलिपि गर्नुहोस्। तपाईलाई यो कोडको शीर्षमा तपाईको HTML कागजातको शीर्षमा छ, ट्याग भनिने ट्यागमा। साथै, अगाडि बढ्नुहोस् र आधार टेम्प्लेट बनाउनुहोस् ताकि हामी प्रत्येक टेम्प्लेटमा यी लिंकहरू पुन: प्रयोग गर्न आवश्यक पर्दैन।
MKDIR टेम्प्लेटको साथ टेम्पलेट भनिने नयाँ डाइरेक्टरी बनाउनुहोस्, र त्यसपछि टेम्प्लेट / बेस .तोमल सम्पादन गर्नुहोस्।
यो यस्तो देखिनु पर्छ:
पक्का गर्नुहोस् CSS र जाभास्क्रिप्ट प्रतिलिपि गर्न, .CS र .J फाईलहरू, किनकि भविष्यमा हाम्रो साइट अधिक कार्यात्मक बनाउन हामीलाई जाभास्क्रिप्टको प्रतिलिपि गर्न निश्चित गर्नुहोस्।
अब, बाशा शेलमा फर्कौं र द्रुत आदेश चलाउनुहोस्। याद गर्नुहोस्, यदि तपाईंले कहिले भर्चुअल वातावरणमा पहुँच गर्न आवश्यक छ, टाइप गर्नुहोस् स्रोत VNNV / BINV / सक्रिय गर्नुहोस्। यसले तपाईंलाई python प्याकेजहरू स्थानीय रूपमा याताका साथ स्थापना गर्न दिन्छ कि Django तिनीहरूलाई पहुँच गर्न दिनुहोस्। Django बुटस्टपला वर्गले उत्पन्न गरेको हाम्रो फारमहरू दिन हामी क्रिस्टन प्याकेज प्रयोग गर्नेछौं। हामी यसलाई निम्न कमाण्डको साथ डाउनलोड गर्न सक्छौं
pip install django-crispy-forms
एकचोटि यो स्थापना भएको छ, यसलाई सेटिंग्स ... मा थप्नुहोस्
# ... अघिल्लो कोड यहाँ
अब, फिड टेस्केडमा, हामी केहि चीजहरू हटाउन सक्दछौं। कागजातको सुरुवात र अन्त हटाउनुहोस् र यसलाई आधार टेम्पलेटबाट उत्तराधिकारको साथ बदल्नुहोस्, विस्तार र ब्लक परिभाषा प्रयोग गरेर। साथै, हामी टेम्प्लेट फिल्टर लोड र फारममा टेम्पलेट फिल्टर थप्नेछौं। अन्तमा, एक बटन जस्तो बटन हेर्नका लागि फारममा बटस्टप वर्ग थप्न दिनुहोस्। त्यो यस्तो देखिनु पर्छ:
सुन्दर! त्यो पहिले नै कोस को एक बिट छ। अर्को, हामीले यसलाई जाँच गर्नुपर्दछ र निश्चित गर्नुपर्दछ कि हामी देख्न सक्छौं कि सबै कुरा राम्रो देखिन्छ, र निश्चित गर्नुहोस् कि सबै कुरा ठीकसँग काम गर्दै छ। अघिल्लो निर्देशनहरू अनुसार सर्भर चलाउनुहोस् र निश्चित गर्नुहोस् कि साइटले ठीक देखिन्छ र ठीक काम गर्दछ। महान काम! तपाईं अर्को चरणमा सर्न तयार हुनुहुन्छ, जसमा हामी समान URL हरू, फारमहरू, दृश्यहरू र टेम्पलेटहरू प्रयोग गरेर प्रयोगकर्ता लगइन कार्यक्षमता थप्नेछौं। बेस टेम्पलेट महत्त्वपूर्ण छ, र हामी यसलाई परिमार्जन गरिरहनेछौं र प्रयोगकर्ता नाम र पासूचडकोडको साथमा लग इन गर्नमा ध्यान केन्द्रित गर्छौं जुन तपाईंको आफ्नै खातालाई तपाईं द्वारा सुरक्षित राख्न मद्दत गर्दछ।
यो गर्न, हामी Django मा निर्मित प्रयोगकर्ता मोडेल प्रयोग गर्न आवश्यक छ। प्रयोगकर्ता मोडेल हाम्रो पोष्ट जस्तै डाटाबेस मोडेल हो, जुन एक प्रयोगकर्तालाई वेबसाइटमा लग मेटाउन रेन्डर गर्न सकिन्छ। भविष्यमा, हामी इन्टरनेटमा साइट प्रयोग गर्नु अघि हामी यस मोडेललाई अन्य मोडेलहरू प्रदान गर्नेछौं यसमा जिम्मेवारीका लागि थप सुरक्षा उपायहरू निर्माण गर्नेछौं जुन फिशिकाको लागि थप सुरक्षा उपायहरू निर्माण गर्दछ। हामी लगइन फारामहरूमा केही निर्मित केही निर्माण गरेर सुरू गर्नेछौं जुन Django ले प्रदान गर्दछ। पहिले, नयाँ अनुप्रयोग सिर्जना गरौं जुन हामी आधारभूत लगइन पृष्ठको लागि टेम्पलेट र दृश्यहरू प्रदान गर्न प्रयोग गर्दछौं। हामी अन्य अनुप्रयोगहरू पनि सिर्जना गर्न अन्य अनुप्रयोगहरू सिर्जना गर्न सक्दछौं जसमा पिन्चरो, फराकिलो उपकरणहरू, बाह्य उपकरणहरू, बहु फ्याक्टरको कारण, र फिंगरप्रिन्ट मान्यता सहितको अनुप्रयोगलाई सुरक्षित गर्न।
हामीले पहिले नै एक अनुप्रयोग सुरू गर्ने बारेमा कुरा गरिसकेका छौं। हाम्रो निर्देशिकाबाट, भर्चुअल वातावरण भित्र, पास प्रबन्धन गर्नुहोस्। सामाजिक यी तर्कहरू
python manage.py startapp users
अब, हामीसँग नयाँ अनुप्रयोगका लागि डाइरेक्टरी हुनुपर्दछ। त्यो डाइरेक्टरीमा दृश्य सिर्जना गरेर सुरू गरौं जुन प्रयोगकर्ता लगइनसँग मेल खान्छ। Django प्रयोगकर्ता लगइनहरूको लागि विचारमा निर्माण गरिएको छ, तर यी हाम्रो लागि उपयुक्त हुँदैन किनकि हामीलाई चलन दृष्टिकोण चाहिन्छ, जुन प्राथमिकतामा परिभाषाको साथ गरिन्छ।
यस दृश्यमा, हामी पोष्ट अनुरोधको लागि जाँच गरेर सुरू गर्नेछौं, DJango बाट लगइन गर्न लगइन गर्न प्रयोगकर्ता खाता प्रमाणिकरण गर्नको लागि प्रयोगकर्तामा लग ईन गर्नुहोस्।
प्रयोगकर्ता / दृश्यहरू मा, निम्न कोड थप्नुहोस्
username = request.POST['username'] # पोष्ट अनुरोधबाट प्रयोगकर्ता नाम र पासवर्ड प्राप्त गर्नुहोस्
password = request.POST['password'] # प्रयोगकर्तालाई प्रमाणित गर्नुहोस्
यो तपाईलाई आधारभूत लगइन दृश्यको लागि आवश्यक छ। अब, बेस टेम्पलेट विस्तार गरेर दृश्यको लागि फारम सिर्जना गर्नुहोस्। हामी प्रयोगकर्ता फोल्डरहरूको टेम्प्लेटहरूको लागि नयाँ डाइरेक्टरी सिर्जना गरेर सुरू गर्नेछौं।
mkdir users/templates
mkdir users/templates/users
अब, हामी प्रयोगकर्ता / टेम्पलेटहरू / प्रयोगकर्ताहरू / लगइनहरू / लगइनहरू सम्पादन गर्न सक्षम हुनुपर्दछ। जब हामी यसमा छौं, हामी प्रयोगकर्तालाई पनि साइन अप गर्न अनुमति दिन टेम्प्लेटहरू सिर्जना गर्नेछौं।
nano users/templates/users/login.html
अब, टेम्पलेटमा,
यो लगइन टेम्प्लेटको आधारभूत चीज हो। यो वास्तवमै संरचनामा अन्य टेम्प्लेट जस्तै छ, तर यो थोरै फरक देखिन्छ जब यो रेन्डर गरियो। हामी यस कोडलाई अर्को समान टेम्पलेट रेजिस्टर.थिट भनिन्छ, जहाँ हामी शब्द परिवर्तन गर्नेछौं र नयाँ फारम प्रयोग गर्दछौं जुन हामी निर्माण गर्छौं। टेम्पलेट पहिले टेम्प्लेट बनाउनुहोस्। प्रयोगकर्ताहरू / टेम्पलेटहरू / प्रयोगकर्ताहरू / रेजिष्टरहरू / रेजिष्टल.ठ र निम्न कोड थप्नुहोस्:
अब, हाम्रो प्रयोगकर्ता रेजिष्ट्रेसनका लागि एक रूप निर्माण गर्नुहोस् र एक मोडेलको साथ हाम्रो प्रयोगकर्ता लगइनहरू अपग्रेड गर्नु अघि विचारहरूमा एक रूप मिलाउनुहोस्। हामी यसलाई सुरू गर्न यो फारम आधारभूत बनाउँदछौं, तर भविष्यमा सम्झौताको र कप्चा जस्ता अधिक विवरण र सुरक्षा सुविधाहरू समावेश गर्दछ। ननो प्रयोगकर्ता / फारामहरू। Kples.s को साथ फारम सम्पादन गर्नुहोस् र निम्न कोड थप्नुहोस्।
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']
त्यसैले हामीसँग यहाँ अर्को फारम छ, जुन स्पष्ट रूपमा उचित कार्य गर्दछ। यो एक प्रयोगकर्ता रेजिस्टर फारम हो जुन प्रयोगकर्ता नाम, ईमेल र पासवर्डको साथ साथै एक पुष्टि पासवर्ड क्षेत्रको साथ। नोट गर्नुहोस् कि यो फारमले नियमित फारमहरू विस्तार गर्दैन एउटा क्षेत्र केवल उस्तै परिभाषित छ, र कक्षा मेटाले फारामलाई बाँकी जानकारीको परिभाषा गर्दछ जुन फारममा लेखिएको छ जुन फारममा लेखिएको छ। यसका अधिकांश पहिले नै jusango को निर्माणमा निर्मित अवस्थित छ, त्यसैले हामी यसको कक्षाको लागि आधारको रूपमा प्रयोग गर्नेछौं (कोष्ठक मा पास गर्नेछौं)।
अर्को, हामी प्रयोगकर्ता दर्ता गर्ने दृष्टिकोण जाँच गर्नेछौं, अब हामीसँग एक फारम र टेम्पलेट छ। यो एक मोडलॉर्म हो, नयाँ पोष्ट दृश्यमा एक जस्तै। प्रयोगकर्ताहरू / दृश्यहरू सम्पादन गर्नुहोस् र निम्न कोड थप्नुहोस्:
# ... आयात
हामीले सबै प्रयोगकर्तालाई दर्ता गर्नु आवश्यक छ, तर हामीसँग थप जानकारी हुनुपर्दछ। हामी प्रयोगकर्तालाई दर्ता गरिएको समय जान्न चाहन्छौं, कुन समय उनीहरूका बारे केही जानकारीहरू, एक जीवनी, समय मोडेलको लागि अपडेट गर्न आवश्यक पर्दछ र प्रत्येक प्रयोगकर्तालाई पोष्ट गर्न आवश्यक पर्दछ। त्यसो गर्नमा, हामी दुबै अनुप्रयोगहरूमा मोडेलहरू अपडेट गर्नेछौं। फिड मोडेल सम्पादन गरेर सुरु गरौं। यो अहिले यस्तो देखिनु पर्छ:
from django.db import models # ... आयात
author = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='posts') # यस लाइनमा थप्नुहोस्
दोस्रो लाइनमा ध्यान दिनुहोस् जुन फाईलमा थपिएको थियो। यो एक विदेशी कुञ्जी हो, जसले प्रत्येक पोष्टलाई प्रति पोस्टमा एकल प्रयोगकर्तालाई श्रेय दिन्छ, त्यसैले हामी निश्चित गर्न सक्दछौं कि हामीले प्रयोगकर्तालाई प्रयोगकर्तालाई श्रेय दिन सकिदैन। हामी यो विदेशी कुञ्जीलाई वर्गको साथ परिभाषित गर्दछौं जुन प्रतिनिधित्व गर्दछ प्रयोगकर्ताहरू प्रयोगकर्ताहरू, शून्य र खाली तर्कहरू हटाइन्छ यदि हामीले प्रयोगकर्तालाई हटाउन सक्दछौं, जुन हामी पोष्ट वस्तुहरू बुझाउन सक्छौं। यो सम्बन्धित नाम, पोष्ट। पोष्ट। पोष्टको प्रयोगकर्ता, पोष्टको लेखक, हामीलाई प्रयोगकर्ता दिन्छ जसले पोष्टलाई पोष्ट गर्दछ। हामी अब चलिरहेको प्रयोगकर्ताको प्रयोगकर्तालाई पोस्टहरू प्राप्त गर्न सक्दछौं
अब हाम्रो लगइनहरू अधिक लचिलो बनाऔं। हामी पहिले नै हाम्रो साइटलाई साइटमा सीमित दरको रूपमा फिडिशिंगको लागि धेरै कम कमजोर बनाउन सक्छौं हामी साइटमा लगइनलाई अनुमति दिनेछौं, यो एकदम सजिलो छ। हामी पनि प्रत्येक प्रयोगकर्ताको बारेमा केही जानकारी भण्डार गर्न सुरु गर्छौं अघि हामी हाम्रो अनुप्रयोग विकास गर्न जारी राख्छौं। प्रयोगकर्ता / मोडेलहरू सम्पादन गर्नुहोस्। निम्न कोड थप्नुहोस्।
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='')
नोट गर्नुहोस् कि यो मोडेल पोष्ट मोडेलसँग एकदमै समान छ। हामीसँग एक अतिरिक्त आयात, टाइजोन, ट्यूजोन छ जसले हामीलाई मितिको खेतमा पूर्वनिर्धारित गर्न अनुमति दिनेछ, र हामीसँग पनि पोष्ट जस्तो चरित्र र पाठफिल्ड पनि छ। यी सबै घनिष्ठहरूलाई प्रयोग गरेर हामीलाई साइट सुरक्षित गर्न र यसको प्रयोग बुझ्न मद्दत गर्दछ, र पाठ क्षेत्रहरूले हामी प्रत्येक प्रयोगकर्ता, वा लेखकहरूको बारेमा जानकारी प्रदान गर्दछौं। ओनेटोनफील्ड एक मात्र सानो विचार हुनुपर्दछ, यसले ठ्याक्कै एक पूर्वानुमानको रूपमा उस्तै व्यवहार गर्दछ तर एक मात्र मोडेलको साथ। यस तरिकाले, प्रयोगकर्तासँग केवल एउटा प्रोफाइल हुन्छ, जबकि उनीहरूसँग धेरै पोष्टहरू हुन सक्छ।
अब, हाम्रो लगईन र प्रोफाइल को लागी खाता गर्न को लागी ध्यान दिनुहोस्। पहिलो, प्रयोगकर्ताहरू / दृश्यहरू र रेजिस्टर दृश्यमा ध्यान दिनुहोस्:
# ... आयात
Profile.objects.create(user=user) # यस लाइनलाई थप्न निश्चित गर्नुहोस्, प्रयोगकर्ताको लागि प्रोफाइल सिर्जना गर्न
यसले कुनै पनि जानकारीमा भरि बिना प्रयोगकर्ताको लागि प्रोफाइल सिर्जना गर्दछ। अब, हामी निश्चित गर्न चाहन्छौं कि प्रयोगकर्ता खाता धेरै पटक लग इन गर्न सकिदैन, वा कम्तिमा पासवर्डहरू धेरै पटक प्रयास गर्न सकिँदैन, त्यसैले लगइन दृश्य अपडेट गरौं।
# ... आयात
if user and user.profile.can_login < timezone.now(): # नोट गर्नुहोस् कि हामी अब जाँच गर्छौं कि यदि प्रयोगकर्ताले लग इन गर्न सक्दछ
else: # यदि लगइन सफल भएन भने,
user = User.objects.filter(username=username).first() # यो भाग हो जहाँ हामी प्रयोगकर्ता प्रोफाइल अपडेट गर्दछौं
profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # त्यसैले तिनीहरू केहि सेकेन्डको लागि फेरि लगइन गर्न सक्दैनन्
यो सुरक्षाको आधारभूत आधारभूत हो। निश्चित गर्नुहोस् कि साइटले कसैलाई जिज्ञासाको लागि जिज्ञासाको रूपमा होइन, वा ती मध्ये केही एकै समयमा। यो साधारण प्रयोगकर्तालाई निराश हुँदैन जसले उनीहरूको पासकोडलाई थाहा पाउँदैन र केवल केही उपकरणहरूमा लग ईन गर्दछ, तर यसले अनुप्रयोगबाट धेरै फिशिंग रोबोट राख्दछ। नोट गर्नुहोस् कि हामीले एक चर, क्यान_लोगिनको साथ कथन, क्यान_लोगिनलाई उही प्रयोगकर्ता नामको प्रयोग गरेर प्रत्येक असफल लगइनको साथ अपडेट गर्नुपर्दछ। यस तरिकाले, एक द्वेषपूर्ण प्रयोगकर्ताले कतै पनि नजिकैको पासवर्ड अनुमान गर्न सक्षम हुँदैन। मिति तोपटाइटाई.टाईडेलटा () मा सेकेन्डको संख्या पनि अपडेट गर्न सकिन्छ, र वेबसाइट अधिक सेकेन्डको साथ थोरै कम प्रयोग योग्य छ। म सुरू गर्न 1 15 लाई सिफारिस गर्दछु।
याद राख्नुहोस्, हामीले आफ्नो काम बचाउन एक ब्यापारिक स्क्रिप्ट निर्माण गर्यौं, त्यसैले हामी अगाडि बढ्न अघि बढ्न र हाम्रो सबै मुक्ति पाएको कुरा पक्का छ। आदेश चलाउनुहोस्:
sudo backup
फेरि, यसले तपाईंको काम अहिले सम्म बचत गर्नेछ। तपाईंको काम बचत गर्नको लागि म बारम्बार ब्याकअपहरू रोज्छु, र तपाईं केवल ब्याकअप काम स्वचालित रूपमा चलाउन चाहानुहुन्छ। तपाईं यसलाई CRON भनिने यूनिक्स उपयोगिता प्रयोग गरेर गर्न सक्नुहुन्छ। यो उपयोगिता सक्रिय गर्न, निम्न कमाण्ड चलाउनुहोस् र तपाईंको पासवर्ड प्रविष्ट गर्नुहोस्:
sudo crontab -e
यदि तपाईंले नानोका लागि पहिले नै विकल्प 1 चयन गर्नुभएको छैन भने, पाठ सम्पादक तपाईं पहिले नै परिचित हुनु पर्छ, र एर्रो कुञ्जीहरू प्रयोग गरेर फाईलको तल स्क्रोल गर्नुहोस्। निम्न लाइन थप्नुहोस्:
0 * * * * sudo backup
Cron ले महिना, महिना, महिनाको दिन, महिना, दिन, हप्ताको दिन प्रयोग गर्दछ, जहाँ कमाण्ड चलाउँदा * वा संख्याले प्रतिनिधित्व गर्दछ। बाँकी विकल्पहरूको लागि 0 र * को लागि 0 प्रयोग गरेर हामी प्रत्येक घण्टाको सुरूमा हरेक घण्टाको पहिलो मिनेटमा कमाण्ड चलाउन सक्छौं। यसले हामीलाई कोड स्वचालित रूपमा फिर्ता गर्न दिन्छ। Sudo को कामहरु जब sudo को साथ कार्यान्वयन गर्दा जराको रूपमा, त्यसैले हामी हरेक घण्टा पासवर्ड टाइप गर्न आवश्यक पर्दैन।
यो पासवर्ड प्रयोग नगरी हाम्रो कोड ब्याक अप गर्न सजिलो बनाउनको लागि हाम्रो ब्याकअप कमाण्डको लागि पासवर्ड असक्षम गर्नुहोस्। हामी यसलाई निम्न कमाण्ड कार्यान्वयन गरेर र पासवर्ड प्रविष्ट गरेर गर्छौं:
sudo visudo
अब, फाईलको तल स्क्रोल गरौं र अर्को रेखा थप्नुहोस्:
ALL ALL=NOPASSWD: /bin/backup
यसले हामीलाई कुनै प्रयोगकर्ताको रूपमा "ब्याकअअअअप" कमाउन दिन्छ, पासवर्ड बिना। यसका लागि ढाँचा सजिलो छ, केवल सम्पूर्ण = nopaswd: / Bropaswd: / Bro / "र आदेशको साथ समाप्त गर्नुहोस् र आदेशको साथ समाप्त गर्नुहोस्, उदाहरण / विन / विनअपको लागि।
अब, ईमेलसँग काम गर्न थाल्नुहोस्। वेबसाइटहरूका लागि ईमेल वास्तवमै महत्त्वपूर्ण छ, किनकि यो एक वेबसाइटलाई अझ सुरक्षित राख्नको लागि एक तरीका हो, प्रमाणिकरणहरू वास्तविक व्यक्तिहरू, र बजार उत्पादनहरू वा सेवाहरू समेत हुन्। धेरै व्यक्तिहरू प्राय: ईन्टरनेटमा बारम्बार आफ्नो ईमेल जाँच गर्छन्, र उत्पादनहरू र सेवाहरूको बारेमा सबै प्रकारका मार्केटिंग ईमेल प्राप्त गर्नुहोस्। त्यहाँ केहि विकल्पहरू प्राप्त गर्नुहोस् जब यो तपाईंको लागि उत्तम काम गर्दछ।
पहिले, तपाईं ईमेल सेवाको लागि भुक्तान गर्न सक्नुहुनेछ जुन तपाईंलाई तपाईंको डोमेनबाट ईमेल पठाउन सक्षम गर्दछ र न्यूनतम कोड चाहिन्छ। त्यहाँ धेरै सेवाहरू छन् जुन यसलाई प्रस्ताव गुगल कार्यस्थान, पठाइनेब, मेलगुन, र अधिक।
अन्यथा, तपाईं आफ्नो सर्वर भित्र तपाईंको आफ्नै ईमेल सेवा निर्माण गर्दै हुनुहुन्छ तपाईंको सर्वरबाट स्क्र्याचबाट। म यो विकल्प सिफारिस गर्दछु, यो अधिक कोड हो, र विशेष होस्टिंगको आवश्यकता पर्दछ। तपाईं आफ्नो घर कम्प्युटरबाट सम्भव भएसम्म मेल सर्भर सुरू गर्न सक्षम हुनुहुनेछ, त्यसैले क्लाउडमा सर्वर सुरू गर्नको लागि कन्फिगरेसन र कोड जाँच गर्न सक्षम हुनुहुने छैन।
पहिले, निम्न कमाण्डको साथ सेटिंग्स। ACTION.SIPLION.PTION:
nano app/settings.py
जहाँ अनुप्रयोग तपाईंले स्टार्ट अनुप्रयोगको साथ सिर्जना गर्नुभयो अनुप्रयोगको नाम हो।
निम्न लाइनहरू थप्नुहोस्:
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)
यी परिवर्तन गर्न निश्चित गर्नुहोस् जब तपाईं आफ्नो अनुप्रयोग प्रयोग गर्न तयार हुनुहुन्छ, हामी यसलाई पछि पुन: भ्रमण गर्नेछौं। ईमेल_डीड्रेस सेटिंग्स तपाईंले ईमेल पठाउनुपर्दछ कि तपाईं पठाउन चाहानुहुन्छ, र पासवर्ड (ईमेल_H_HOST_PEWOTE) पासवर्डमा सेट गर्नुपर्दछ जुन तपाईं सर्भरका लागि उत्पन्न गर्दछ। म एक कन्फिग फाइल बाट पासवर्ड लोड गर्न को लागी एक कन्फिग फाइल बाट निम्न तर्क को उपयोग गर्न को लागी, यी लाइनहरु मा सेटिंग्स।
import os
import json
with open('/etc/config.json') as config_file:
config = json.load(config_file)
त्यसो भए, मैले /etc/config.json को साथ कन्फिगको साथ एक json फाईल सेट अप गरेको छु।
फाईल सम्पादन गर्न:
sudo nano /etc/config.json
निम्न लाइनहरू थप्नुहोस्:
{
"EMAIL_HOST_PASSWORD": "<some password here>"
}
हामी कन्फिग फाइल सम्पादन गर्न जारी राख्नेछौं र सबै पासवर्डहरू र कुञ्जीहरू थप्नेछौं जुन हामी अनुप्रयोगमा प्रयोग गर्छौं। अहिलेको लागि, कसरी पाइथनको प्रयोग गरेर फेरि ईमेल पठाउने जाँच गरौं। पहिले, प्रमाणिकरण ईमेलको लागि टेम्प्लेटहरू सिर्जना गरौं हामी हाम्रा प्रयोगकर्ताहरूलाई पठाउन सक्दछौं, र यसलाई प्रयोगकर्ता टेम्प्लेट डाइरेक्टरीमा राख्दछौं। यो टेम्पलेट HTML मा लेखिनेछ।
nano users/templates/users/verification_email.html
यो ईमेल एकदम सरल छ। यसले प्रयोगकर्ताको एक प्रस conte ्ग लिन्छ, साइटको लागि बेस यूआरएल, र प्रयोगकर्ता आईडी र टोकन जुन प्रयोगकर्ताको ईमेल प्रमाणित गर्न प्रयोग गरिन्छ। टेम्पेटको आधारमा बेस यूआरएल परिभाषित गर्न निश्चित गर्नुहोस्। अगाडि बढ्नुहोस् र निम्न लाइनहरू अनुप्रयोग / सेटिंग्स .. को नजिकैको नजिकै।
SITE_NAME = 'Django App'
PROTOCOL = 'https'
DOMAIN = 'example.com'
BASE_URL = PROTOCOL + '://' + DOMAIN
अन्तत: जब तपाईंको साइट इन्टरनेटको लागि तयार छ र तपाईं यसलाई प्रक्षेपण गर्नुहुन्छ, तपाईं आफ्नो डोमेन परिभाषित गर्न चाहानुहुन्छ तपाईंको साइटलाई प्रतिनिधित्व गर्न को लागी तपाइँ तपाइँको डोमेन को नाम परिभाषित गर्न चाहानुहुन्छ। यो नाम हो जुन तपाइँ तपाइँको साइट पहुँच गर्न नवबारी टाइप गर्नुहुनेछ। अहिलेको लागि, तपाईं डोमेन खाली छोड्नुहोस् वा प्लेसहोल्डरहरू प्रयोग गर्न सक्नुहुनेछ। तपाईं साइट_नामलाई एक नाममा परिवर्तन गर्न चाहानुहुन्छ जुन तपाईं आफ्नो साइट, तपाईंको छनौट गर्न चाहानुहुन्छ।
हामीले ईमेल पठाउनुहोस्, हामी एउटा टोकन जेनरेटर सिर्जना गरौं ताकि हामीसँग खाता सक्रियता टोकन छ जुन कहिले समाप्त हुँदैन। हामी यसलाई खाता निर्माण र खाता सक्रियता टोकन आयात गरेर गर्न सक्दछौं जुन निम्न जस्तो देखिन्छ। फाईल सम्पादन गर्नुहोस्:
nano users/tokens.py
निम्न कोड थप्नुहोस्:
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()
यो आधारभूत टोकन जेनरेटरले एक टोकन उत्पन्न गर्दछ हामी URL मा प्रयोगकर्ता पठाउन सक्दछौं र प्रयोगकर्ताले उनीहरूको ईमेल प्रमाणित गर्न र तिनीहरूको खाता सक्रिय गर्न प्रयोग गर्न सक्दछ।
अर्को, कसरी एक ईमेल पठाउने हेरौं। नानो प्रयोग गर्दै, प्रयोगकर्ता / ईमेल.पी.
nano users/email.py
प्रमाणीकरण HTML ईमेल पठाउँदै यस जस्तो देखिन्छ:
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)
यो एकदम सरल छ। हामी ईमेल पठाउन आवश्यक पर्ने कार्यहरू आयात गर्दछौं, टेम्पलेटहरू र हाम्रो सेटिंग्स प्रदान गर्न ईमेल प्रदान गर्दछौं, र त्यसपछि हामी टेम्पलेट नामबाट ईमेलमा पठाउँदछौं। तपाईंले याद गर्नुहुनेछ कि तपाईंले मेल पठाउन सक्नुहुनेछ मेल पठाउन परिभाषित नगरीकन, पठाउनुहोस्_हु_थमल_ एमेल, अझै यसलाई तल लेख्नुहोस् जुन हामीले पहिले नै प्रयोगकर्ता / ईमेल.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()
यो थोरै बढी जटिल छ, र हामी अहिलेसम्म यो सबै कोड चलाउन तयार छैनौं। ध्यान दिनुहोस् हामी एक UNFUB_LINK परिभाषित गर्दैछौं, लिंकले हाम्रो ईमेलबाट सदस्यता रद्द गर्न प्रयोग गर्न सक्दछ। यो महत्त्वपूर्ण छ, किनकि प्रयोगकर्ताहरूले हाम्रा ईमेलहरू अप्ट आउट गर्न सक्षम हुनु आवश्यक छ जबसम्म तिनीहरू तिनीहरूलाई कुनै पनि समयमा हेर्न चाहँदैनन्। हामी हाम्रो सन्देशको लागि पाठ विकल्प थप्दछौं, जुन HTML ट्यागहरूको HTML सन्देश स्ट्रिप गरिएको हो। अन्तमा, हामी ईमेल पठाइएनौं भने, र यदि यो भएन, हामी प्रयोगकर्ताको प्रोफाइलमा चिन्ह लगाएनौं कि उनीहरूको ईमेल मान्य छैन।
प्रयोगकर्ता मोडेलमा फर्कौं त्यसैले हामी यो सबै काम बनाउन सक्दछौं। हामीले सम्पादवित गर्नको लागि एक कार्य परिभाषित गर्न आवश्यक छ।
पहिले, निम्नलिखित आयातहरू प्रयोग गरेर प्रयोगकर्ताहरू / Models.ch.ch.ch.ch.cts।
nano users/models.py
# ...
अर्को, टोकनलाई सक्रिय गर्नको लागि प्रयोगकर्ता मोडेलमा प्रशस्त वस्तुहरू थप्नुहोस्, साथै प्लेन र लेटलाई उनीहरूको मेल प्राप्त गर्दैछ भनेर बचत गर्नुहोस् कि प्रयोगकर्ताले सफलतापूर्वक प्राप्त गरेको छ। प्रयोगकर्ता / मोडेलहरू मा फेरि, मोडेलको अन्त्यमा निम्न कोड थप्नुहोस्
# ...
TimestampSigner().unsign(key, max_age=60 * 60 * 24 * 30) # 300 दिन को लागी मान्य
यो एकदम सरल छ, हामी एक राम्रो मात्रामा समय पछि समाप्त हुने एउटा टोकन सिर्जना गर्न, र हामी यो मान्य छ कि छैन जाँच गर्न एक टोकन प्रयोग गर्न सक्दछौं। हामी यी टोकन दुई पटक प्रयोग गर्दछौं, एक पटक ईमेल प्रमाणित गर्न, र एक पटक एक सदस्यता रद्द लिंकको लागि।
अब जुन हामीसँग यी चीजहरू छन् जुन हामीले गर्नुपर्ने कामको अन्तिम कार्यमा छ विचारमा। प्रयोगकर्ताहरू / दृश्यहरू भित्र, ईमेल ठेगाना प्रमाणित गर्न दृश्यहरू थप्न दिनुहोस्, र सदस्यता रद्द गर्न।
nano users/views.py
पहिले, निम्न आयात थप्नुहोस्। मैले केहि थपमा फ्याँकें ताकि हामी पछि फेरि आइटम आइटम आयात गर्नु पर्दैन।
from .email import send_verification_email # प्रमाणिकरण ईमेल पठाउने प्रकार्य आयात गर्न निश्चित गर्नुहोस्
तपाईंसँग पहिले नै यी आयातहरू छन्, तर यसले तिनीहरूलाई दोहोर्याउँदैन। तपाईं प्रमाणिकरण ईमेल पठाउने प्रकार्य आयात गर्न आवश्यक छ, साथै खाता_ एक्सकेटिभन_ नमिजबाट।
अब फाईलको तल, निम्न कोड थप्नुहोस्:
# तिनीहरूलाई सदस्यता रद्द गर्नुहोस्
# अन्यथा लगइन पृष्ठमा रिडिरेक्ट गर्नुहोस्
# पठाउनुहोस् (अनुरोध, प्रयोगकर्ता)
यो धेरै कोड हो। यसलाई तोड्नुहोस्। पहिलो प्रकार्य, सफा र सरल, मेलिंग सूचीबाट प्रयोगकर्ता सदस्यता रद्द गर्नुहोस्। दोस्रो कार्यले उनीहरूको ईमेल सक्रिय गर्दछ, र तपाईंले याद गर्नुहुनेछ मैले टिप्पणी गरिसकेपछि मैले टिप्पणी गरेको प्रकार्य थपें, पठाउनुहोस्। तपाईंलाई स्वागत ईमेल पठाउन ईमेल टेम्पलेट र प्रकार्य परिभाषा प्रयोग गर्न स्वागत छ, म अहिलेसम्म अहिले छैन। मैले अन्तिम प्रकार्य महत्त्वपूर्ण छ, किनकि सक्रियता ईमेलहरू समाप्त भए। त्यसकारण, हामीले सक्रियतालाई ईमेल पठाउन आवश्यक पर्दछ जुन केही समय। हामी यसको लागि आधारभूत फारम प्रयोग गर्न सक्छौं, र प्रमाणिकरण ईमेल पठाउन समारोहलाई कल गर्नुहोस्। यो गर्नु अघि, निश्चित गर्नुहोस् कि यो पहिलो स्थानमा पठाइयो, रेजिस्टर दृश्यमा प्रकार्य कल थपेर। यस लाइनलाई रेजिष्टर दृश्यमा पुन: निर्देशक अघि रिडिरेक्ट गर्नु भन्दा पहिले, प्रयोगकर्ता / दृश्यहरू।
nano users/views.py
# ... (पछि) डिस्चार्ज (अनुरोध):
# ... (अघि) पुन: निर्देशित (
तपाईंले त्यो कोड स्निपेटमा पहिलो र अन्तिम लाइनहरू थप्न आवश्यक पर्दैन, निश्चित गर्नुहोस् कि रेजिष्टर दृश्यले प्रमाणिकरण ईमेल पठाउँदछ। यो यस्तो देखिनु पर्छ:
# ... आयात
send_verification_email(user) # यो लाइन थप्न निश्चित गर्नुहोस्!
अब, हामीले सक्रियता ईमेल पुनःस्थापना गर्न फारम थप्न आवश्यक पर्दछ। प्रयोगकर्ता / फारमहरू
# ... (आयात)
हामीलाई यो टेम्पलेट पनि चाहिन्छ यसले ईमेल सक्रियता फारम रिसेट गर्नुहोस्। यस टेम्पलेटमा थप्नुहोस्। फाईल सम्पादन गर्नुहोस्:
nano users/templates/users/resend_activation.html
अर्को, फाईललाई निम्न कोड थप्नुहोस्।
घर, त्यो धेरै हो! अब, जब हामी कोडलाई हाम्रो सर्भरमा परिचालन गर्दछौं, हामी ईमेलमा क्लिक गर्न प्रयोगकर्ता खाताहरू पठाउन सक्षम हुनेछौं। हामी पनि एक साधारण स्वागत ईमेल पठाउन चाहान्छौं, त्यसैले यो कसरी गर्ने हेरौं। प्रयोगकर्ताहरू / ईमेल.पी.py मा फिर्ता, निम्न कोड थप्नुहोस्:
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)
साथै, हामीलाई यी सबै जानकारीहरू पालन गर्न टेम्प्लेटको आवश्यकता छ। मेरो वेबसाइटमा, टेम्पलेट तलको जस्तो देखिन्छ, तर तपाईंलाई यो फर्म्याट गर्न स्वागत छ यदि तपाईंलाई मनपर्दछ भने।
नोट गर्नुहोस् कि हामीसँग बॉडी वा HTML ट्यागहरू बन्द हुँदैन, किनकि हामी यी थप्दछौं जब हामी html सदस्यता रद्द लिंकहरू थप्दैनौं। यी महत्त्वपूर्ण छन्, तर हामी तिनीहरूलाई दुई पटक परिभाषित गर्न चाहँदैनौं।
त्यसोभए के भयो? हामी लामो यात्रा गरेका छौं। वास्तवमा, हामी सर्वरमा साइट प्रयोग गर्न तयार हुनुपर्दछ। हामी @login_requered खारेटर थप्न सक्दछौं र हाम्रो विचारहरू सुरक्षित गर्न सक्दछौं, प्रयोगकर्ता स use ्केतहरू बनाउँदछौं, अनुपालन ईमेल पठाउनुहोस्, जुन सान्दर्भिक रहनको आधार हो। हामी केही बढी उपयोगी सुविधाहरू थप्नेछौं, र त्यसपछि टाढाको सर्भरमा हाम्रो कोड तैनाथका लागि आधार निर्माण गर्दै, मेल सर्भर, डोमेन कन्फिगरेसन, र हाम्रो साइट सुरक्षित र उपयुक्त बनाउनको लागि फिल्टरहरू।
हामीलाई पासवर्ड रिसेट दृश्य पनि चाहिन्छ, त्यसैले यसलाई छिटोमा थप्नुहोस्। Django पासवर्ड रिसेट दृश्यमा निर्मित केही कार्यहरू मा तोडिएको छ, तर हामी हाम्रो आफ्नै दृश्य, ईमेल टेम्पलेट, फारमहरू, र URL ढाँचाहरू कसरी लेख्ने भनेर हेर्नेछौं। यहाँ के दृश्य जस्तो देखिन्छ, प्रयोगकर्ता / दृश्य।
# ... आयात
यो फारम django मा निर्माण गरिएको छ, तर हामीलाई पासवर्ड रिसेट, प्रयोगकर्ताहरू / टेम्पलट्स / प्रयोगकर्ता / प्रयोगकर्ताहरू / प्रयोगकर्ताहरू पुष्टि गर्न टेम्पलेट चाहिन्छ
हामीसँग एक साधारण फारम पठाउन टेलाइटलेट ईमेल पनि, प्रयोगकर्ता / टेम्पलेटहरू / पासवर्ड_रेट्स / प्रयोगकर्ताहरू
ईमेलको लागि टेम्प्लेट सरल छ, यो एक आधारभूत HTML फाईल पासवर्ड रिसेट गर्न, प्रयोगकर्ता / टेम्पलेटहरू / पासवर्ड / प्रयोगकर्ताहरू / प्रयोगकर्ताले Django स्वचालित रूपमा यो फाईल व्याख्या गर्दछ।
हामीलाई दुई थप टेम्प्लेटहरू पनि चाहिन्छ। पहिलो छ कि ईमेल पठाइएको छ भनेर प्रस्ट छ। यी लागि विचारहरू पहिले नै DJango मा छन्, त्यसैले हामीले युएसआरएल हरूमा तिनीहरूलाई सम्बोधन गर्नुपर्दछ। यो टेम्पलेटहरू प्रयोगकर्ता / टेम्पलेटहरू / प्रयोगकर्ताहरू / पासवर्ड_REST_DOML.TML मा अवस्थित छ
र अन्तमा, पासवर्ड रिसेट पूर्ण, प्रयोगकर्ता / टेम्पलट्स / प्रयोगकर्ता_रेट्स / प्रयोगकर्ता_रेस_रेट_ ए.फेक्स
अब, हामीलाई यी दृश्यहरूको लागि URL बान्की चाहिन्छ। प्रयोगकर्ताहरू / URLS.py.pyt, निम्न URL ढाँचाहरू थप्नुहोस्:
# ... अघिल्लो URLS यहाँ
चार टेम्प्लेटहरू, त्यो धेरै हो! तर अब हामी निश्चित रूपमा प्रयोगकर्ताको पासवर्ड रिसेट गर्न सक्षम हुन सक्दछौं जुन हामीलाई आवश्यक पर्ने कुनै पनि समयमा, वेब ब्राउजरबाट।
मैले बुझें कि यो धेरै कोड हो। यदि यो तपाईंको टाउको माथि थोरै देखिन्छ, त्यो ठीक छ। तपाईं सुधार हुनेछ, तपाईंको समझ सुधार छ, र तपाईं चाँडै कोड संग धेरै अधिक सक्षम हुनेछ। यदि तपाईं पूर्ण रूपमा हराइरहनुभएको छ भने, म यो सफ्टवेयरलाई फिर्ता आउँदा रेखदेख गरेकोमा अनलाइनमा काम गरिरहेछु। यी सामान्यतया सुरू गर्न स्वतन्त्र हुन्छन्, र तपाईं सफल हुनु आवश्यक सबै चीज मार्फत तपाईंलाई मार्गदर्शन गर्दछ। यदि तपाईंलाई लाग्छ कि तपाईं जारी राख्न तयार हुनुहुन्छ भने, अर्कोलाई रिटर्न सर्भरमा प्रयोग गरेर र बेफ प्रयोग गरेर तपाईंको डिभरय्यूट गर्न सक्दछ।
टाढाको सर्भरमा परिचालन गर्नु अघि हामीले गर्नुपर्ने अन्तिम कुराले हाम्रो साइटलाई अलि अलि सुरक्षित बनाउँदछ। तपाईंले याद गर्नुहुनेछ कि लगइन दृश्यले केवल प्रयोगकर्ता नाम र पासवर्ड लिन्छ, र त्यहाँ बहु फ्याक प्रमाणीकरण वा एक समय कोड छैन। यो सजिलो फिक्स हो, र समान कोडको साथ, हामी हाम्रो साइट पाठ सन्देशहरू पठाउन सक्दछौं र सर्भरमा पठाइएको पाठ सन्देशहरूको लागि उत्तरदायी बनाउन सक्छौं। सुरु गर्न, हामी प्रयोगकर्ता मोडेलमा फर्कनेछौं र एक समय चालुम्प्म्प अफर जोड्नेछौं जुन प्रत्येक लगइनलाई प्रतिनिधित्व गर्दछ। हामी पनि प्रयोगकर्ता मोडेलमा एक अद्वितीय, घुमाउने परिचितहरू थप्नेछौं जुन हाम्रो लगइनमा अतिरिक्त सुरक्षा थप्न प्रयोग हुनेछ। प्रयोगकर्ता मोडेलहरू सम्पादन गर्दै, प्रयोगकर्ता / मोडेलहरू। निम्न कोड थप्नुहोस्:
# बुरिड, टाइमस्टम्प सर्भर र URL जेनरेटर (उल्टो) आयात गर्न निश्चित गर्नुहोस्
# यहाँ यो कोड थप्नुहोस्
# र यो प्रकार्य थप्नुहोस्
TimestampSigner().unsign(key, max_age=60 * settings.AUTH_VALID_MINUTES) # Min मिनेट को लागी मान्य
निश्चित गर्नुहोस् कि तपाईंको प्रयोगकर्ताहरू / मोडेलहरू यस्तै देखिन्छ, टिप्पणीहरू बाहेक (लाइनहरूमा कोडहरू #)। यसलाई तल भ breaking ्ग गर्दै, यो सरल छ। हामीसँग केही आयातहरू छन्, एक सेटिम्पजक्सेनर हो जुन क्रिप्टोमोग्राफिक उपयोगिता हो जुन एक सुरक्षित कोड उत्पन्न गर्न सक्दछ र यसलाई प्रमाणित गर्न, केवल एक पटक प्रयोग गरिएको थियो। हामी एक uuid पनि, जो एक अद्वितीय पहिचानकर्ता हो जुन टोकनको हस्ताक्षरमा पहिचान गर्दछ, र URL मा टोकन पठाइएको छ। हामी यो आधारभूत क्रिपक्त चिकित्सकलाई दुई कारक प्रमाणीकरण दृश्य निर्माण गर्न प्रयोग गर्नेछौं। हामीले अरू केहि गर्नु अघि, माइग्रेसनहरू चलाऔं त्यसैले हाम्रो प्रयोगकर्ता मोडेलहरू अपडेट गरिएको छ। प्रबन्धन .पी.पीएको निर्देशिकामा, निम्न आदेशहरू बनाउन र पूरा गर्न को लागी सञ्चालित।
source venv/bin/activate
python manage.py makemigrations && python manage.py migrate
यो महत्त्वपूर्ण छ किनकि हरेक पटक हामी मोडेलहरूमा परिवर्तन गर्दछौं, हामीले ट्याब्बहरू सिर्जना गर्नुपर्दछ र मोडेलहरू प्रयोग गर्नु अघि हामीले वास्तवमा पूर्वनिर्धारितहरूको साथ डाटाबेस अपडेट गर्नुपर्दछ।
अर्को, हाम्रो लगइन दृश्यलाई माध्यमिक प्रमाणीकरण दृश्यमा पुनःनिर्देशित गर्न लोभ्याउनुहोस्। प्रयोगकर्ता / दृश्य .पी
# ... आयात
if user and user.profile.can_login < timezone.now(): # नोट गर्नुहोस् कि हामी अब जाँच गर्छौं कि यदि प्रयोगकर्ताले लग इन गर्न सक्दछ
# यहाँ भएको आध्न_लोगन प्रकार्य हटाउनुहोस्
return redirect(user.profile.create_auth_url()) # नोट गर्नुहोस् हामी यहाँ नयाँ URL मा पुन: निर्देशित गर्दछौं
else: # यदि प्रयोगकर्ताले बहु-कारक प्रमाणीकरण प्रयोग गरिरहेको छैन भने, तिनीहरूलाई लग इन गर्नुहोस्।
else: # यदि लगइन सफल भएन भने,
user = User.objects.filter(username=username).first() # यो भाग हो जहाँ हामी प्रयोगकर्ता प्रोफाइल अपडेट गर्दछौं
profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # त्यसैले तिनीहरू केहि सेकेन्डको लागि फेरि लगइन गर्न सक्दैनन्
त्यसोभए यो एकदम सरल छ, हामीसँग अब यी दुई कारक प्रमाणीकरण दृश्यमा पुन: निर्देशित गर्ने एक तरिका छ। हामीसँग एक झलक पनि छ कि प्रयोगकर्ताले फोन नम्बर थपेको छैन। हामी चाँडै फोन नम्बर थप्न र चाँडै पाठ सन्देशको साथ लग इन गर्न सक्दछौं।
पहिलो, हामीलाई हाम्रो कोडबाट पाठ सन्देश पठाउन सजिलो तरीका चाहिन्छ। यो गर्नका लागि हामी धेरै अफिसबाट छनौट गर्न सक्छौं, तर मेरो विचारमा सब भन्दा सजिलो एक ट्विलिओ हो। तिनीहरू साना परियोजनाहरूको लागि राम्रो मूल्य निर्धारण पनि प्रस्ताव गर्छन्, साथै थोक छुट। Twilirio.com मा खाता बनाउनुहोस्, तपाईंको प्रोजेक्टको बारेमा केही विवरणहरू भर्नुहोस्, फोन नम्बर खरीद गर्नुहोस्, र तपाईंको सेटिंग्स। त्यसो भए, नयाँ फाईल अन्तर्गत यो कोड थप्नुहोस्, प्रयोगकर्ता / एसएमएस.पीपी।
nano users/sms.py
# सबै आवश्यक प्याकेजहरू आयात गर्नुहोस्
# यो कोडले टेललिओको साथ पाठ पठाउँदछ
# एक सहयोगी प्रकार्य यति धेरै अंकहरु संग एक नम्बर प्राप्त गर्न को लागी
# प्रयोगकर्तालाई प्रमाणित गर्न पाठ पठाउनुहोस्
# यस प्रकार्यको साथ कुनै पनि पाठ पठाउनुहोस्
# यस प्रकार्यको साथ कोड मान्य गर्नुहोस्
# समय मान्य गर्नुहोस्
तपाईंको सेटिंग्स उचित रूपमा परिवर्तन गर्न निश्चित गर्नुहोस्, यी लाइनहरू तपाईंको कुञ्जीहरू थप्दै:
# तपाइँको टेललियल ड्यासबोर्डबाट यी प्रतिलिपि गर्न निश्चित गर्नुहोस्
AUTH_VALID_MINUTES = 3 # TFA पृष्ठको संख्या एक पटक रिक्त स्थान सक्रिय छ
सर्वप्रथम, हामीसँग हाम्रा दुई फ्याक्टर प्रमाणीकरण दृश्यहरूको लागि फारमहरू चाहिन्छ। प्रयोगकर्ताहरू / फारमहरू। को कोड थप्नुहोस्।
# ... आयात
# हाम्रो फोन नम्बर प्रविष्ट गर्न को लागी एक फारम
# प्रामाणिकको लागि एक फारम
अर्को, प्रयोगकर्ता / दृश्यहरू मा दृश्यहरू सिर्जना गरौं
# ... आयात
हामीलाई यी दुवै विचारका लागि टेम्प्लेट पनि चाहिन्छ। पहिले MFA टेम्पलेट थप्न दिनुहोस्।
nano users/templates/users/mfa.html
यो HTML कोडलाई टेम्प्लेटमा थप्नुहोस्
यो राम्रो आत्म स्पष्टीकरणको हो। फारम या त कोड वा खाली कोड पठाउँदछ, र तपाइँले खाली कोड प्राप्त गर्नुहुनेछ यदि हामी कोड पठाउछौं भने। त्यसो भए हामीसँग केवल दुई सबमिट बटनहरू छन्, र यस तरीकाले हामी या त बटनको साथ कोड पठाउन सक्दछौं। अर्को, हामी फोन नम्बर थप्न एक साधारण फारम थप्नेछौं।
nano users/templates/users/mfa_onboarding.html
निम्न HTML थप्नुहोस्:
यो फारम धेरै सरल छ, यसले हामीले बनाएको फोन नम्बर फारम प्रदान गर्दछ र प्रयोगकर्तालाई फोन नम्बर थप्न दिन्छ।
यो साँच्चिकै राम्रो देखिन्छ! जबसम्म सबै ठीकसँग सेट अप हुन्छ, हामी सन्देशहरू पठाउन सक्षम हुनुपर्दछ, र प्रयोगकर्तालाई उनीहरूको फोन नम्बरमा लग इन गर्छौं जब हामी URL ढाँचा थपौं। हामीले स्थापना गर्नु पर्ने अन्तिम चीज भनेको एक प्रोफाइल दृश्य हो त्यसैले हामी लगाउन सक्दछौं कि प्रयोगकर्ताले आफ्नो फोन नम्बर परिवर्तन नगरी "रोक्नुहोस्" विकल्प अप्ट आउट गर्न सकिन्छ "रोक्नुहोस्" भविष्यको पाठ सन्देशहरू पत्ता लगाउन सकिन्छ।
प्रयोगकर्ताहरू / दृश्यहरू मा प्रोफाइल दृश्य थप्न गरौं। यो दृश्यले प्रयोगकर्ताको बायो, ईमेल, प्रयोगकर्ता नाम, र फोन नम्बर अपडेट गर्दछ, साथै बहु फ्याक्टरको प्रमाणीकरण सक्षम गर्न पनि। सर्वप्रथम, हामीलाई प्रयोगकर्ताहरू / फारमहरू। Kices.s.porate मा दुई प्रकारका प्रकारहरू चाहिन्छ
# ... आयात
अर्को, हामी दुबै फारम दुबै प्रयोग गर्न दृश्य सिर्जना गर्न सक्छौं। प्रयोगकर्ताहरू / दृश्यहरू सम्पादन गर्नुहोस् र दृश्यमा थप्नुहोस्।
# यी आयातहरू थप्नुहोस्
हामीलाई यस दृश्यको लागि टेम्पलेट चाहिन्छ।
nano users/templates/users/profile.html
तपाईंले यो याद गर्नुहुनेछ कि यो एकदम साधारण रूप हो, तर यसमा केही जाभास्क्रिप्ट छ जुन स्वचालित रूपमा फारमहरूको सामग्रीहरू पोष्ट गर्दछ किनकि तिनीहरू अपडेट हुन्छन्। यो उपयोगी छ, त्यसैले तपाईं प्रत्येक पटक सबमिट गर्न प्रेस नगरी सम्पादनहरू गर्न सक्षम हुनुहुन्छ।
अर्को, हामीलाई URL पैचिरमा यी सबै दृश्यहरूको प्रतिनिधित्व गर्दै URL URL चाहिन्छ। प्रयोगकर्ताहरू / URLLS.ply.ply र यो कोड थप्नुहोस्:
# ... अघिल्लो कोड, आयात
# ... यूआरएल बान्कीहरू हामी पहिले प्रविष्ट गरिएको थियौं, अर्को तीन लाइनहरू थप्नुहोस्
हाम्रो प्रोजेक्ट जाँच गर्न अब राम्रो समय हो। तर पहिले, अर्को ब्याकअप चलाऔं।
backup
र सर्भर चलाउनुहोस्। हामीले लिनक्स सर्भरमा प्रयोग गर्नु अघि, खातामा दुई कारक प्रमाणिकरण सक्षम गर्न यो राम्रो विचार हो। हामी यो हाम्रो प्रोफाइल यूआरएल, / प्रयोगकर्ता / प्रोफाइल / / प्रोफाइल / मा जानको लागि गर्नेछौं र हाम्रो फोन नम्बर प्रविष्ट गरेपछि बक्स जाँच गर्दै, र फारम बुझाउनुहोस्।
python manage.py runserver localhost:8000
तपाईंको वेब ब्राउजरमा जानको लागि वेबप्शन भ्रमण गर्नुहोस्, म यस उदाहरणमा गुगल क्रोम प्रयोग गर्दैछु, र URL HTTPS प्रविष्ट गरेर: // लोभीस्ट:
यदि आवश्यक भएमा तपाईं लगइन गर्न सक्षम हुनुहुनेछ र दुई कारक प्रमाणीकरण सक्षम गर्नुहोस्।
यस परियोजनालाई सर्वरलाई सञ्चालन गर्न आवश्यक छ ताकि यसले वास्तवमै मेल पठाउन सक्छ। तर सबैभन्दा पहिला, हामीलाई त्रुटिहरू हेर्न उपाय चाहिन्छ। तपाईंले याद गर्नुहुनेछ कि यदि तपाईं डिबग मोडमा सर्भर चलाउनुहुन्छ भने, सेटिंग्स बराबर, सर्भरले गल्तीहरू स्वचालित रूपमा देखाउँदछ। डिबग मोड प्रयोग नगरी त्रुटिहरू देखाउनको लागि, जुन उत्पादन सर्भरमा असुरक्षित छ, हामीले यसको लागि एक दृश्य थप्नु पर्छ। सबैभन्दा महत्त्वपूर्ण त्रुटिहरू हामीले ह्यान्डल गर्न सक्षम हुनु आवश्यक छ:
त्रुटि 500 - हाम्रो कोडको साथ समस्या त्रुटि 404 - एक पृष्ठ फेला परेन (भाँचिएको यूआरएल) त्रुटि 403 - एक अनुमति अस्वीकृत त्रुटि
यी त्रुटिहरू ह्यान्डल गर्न नयाँ अनुप्रयोग थप्न दिनुहोस्, त्रुटिहरू भनिन्छ।
python manage.py startapp errors
यसलाई सेटिंग्स। कृपया हामीले पहिले गरेको रूपमा, स्थापना_अप्स सेटिंग्समा, र अनुप्रयोग / URLS.PLER को नाम हो, अनुप्रयोग / UPRANGO परियोजनाको नाम हो।
handler404 = 'errors.views.handler404'
handler500 = 'errors.views.handler500'
handler403 = 'errors.views.handler403'
यो सबै त्रुटिहरू हेर्नुहोस् त्रुटि दृश्यहरू, टेम्पलेटहरू र थोरै बीचको बीचमा। ती परिभाषा गरौं:
# यहाँ तपाईंको विचारहरू सिर्जना गर्नुहोस्।
अर्को, मध्यमवेयरलाई यी त्रुटिहरू ह्यान्डल गर्न परिभाषित गरौं। हामी यसलाई पहिले मिडवेयरवेयर_केजमा सेटिंग्स onchl.clies मा थप्न सक्दछौं, हाम्रो बीचको नामको साथ।
# ... अघिल्लो हस्तक्षेप
अर्को, बीचवेयर थप्नुहोस्।
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.')
हामी थ्रेसोडिंग स्थानीय प्रयोग गरेर हालको अपवाद प्राप्त गर्नको लागि एक प्रकार्य थप्छौं, जसले हामीलाई हाम्रो कोडमा कुनै त्रुटिहरू ट्रेस गर्न मद्दत गर्दछ। टेम्प्लेटको सर्तमा, हामीलाई एउटा मात्र चाहिन्छ, किनकि हामी गतिमा दृश्यमा शीर्षक परिभाषित गर्दछौं। टेम्पलेटले केवल शीर्षक रेन्डर गर्न र "ट्रेस" प्रदान गर्न आवश्यक छ, सन्दर्भबाट हाम्रो त्रुटि ट्रान्सब्याक्स।
nano errors/templates/errors/error.html
यो अझै सब भन्दा सरल टेम्पलेट हो, तर हाम्रो प्रोजेक्टमा त्रुटिहरू हेर्न कत्ति सजिलो छ। अर्को, सेटिंग्स मा डिबग असक्षम गरौं।
nano app/settings.py
यो रेखा फेला पार्नुहोस् जहाँ यो सत्यमा सेट गरिएको छ, र यसलाई गलतमा परिवर्तन गर्नुहोस्
DEBUG = False
अगाडि जानुहोस् र अब अनुप्रयोग पछाडि जानुहोस्। हामी टाढाबाट टाढाको वंक्सक्स सर्वरमा परिमार्जन गर्न तयार छौं, र त्यहाँबाट सुविधाहरू थप गर्न तयार छौं।
sudo backup
हामीले यस कोडलाई सर्भरमा पोस्ट गर्नु अघि हामीले विचार गर्नुपर्दछ कि त्यहाँ कोडका साथ केही मुद्दाहरू हुन सक्छन्। मामिलामा निर्भर गर्दै, उनीहरूसँग पोष्ट गरिएको जानकारी स्वीकार गर्ने साइटहरू हुनेछन्। यो तुरून्तै हुनु हुँदैन, तर यदि यो भइरहेको छ भने, हामी साइटमा स्वचालित रूपमा मध्यम मध्यम स्प्याम गर्न र एक स्क्वामेट्रिक स्क्यानसँग कसरी प्रमाणिकरण गर्ने परीक्षा गर्दछौं।
हामीले उत्पादनमा बहु फ्याक्टरको प्रमाणीकरण प्रमाणको लागि हेर्दै जाँदा हामीले जाँच्यौं भने चीजहरू फरक हुन सक्छन्। ध्यान दिनुहोस् कि हामी लगइनहरू सीमित गर्दैछौं, र टोकनको म्याद सकिन्छ। यदि रोबोटहरूले एक साइट पहुँच गर्दैछन्, दुई कारक प्रमाणीकरण अधिक गाह्रो हुन सक्छ जब उनीहरूले एकै समयमा कोडहरू प्रविष्ट गर्न सक्दछन्। यससँग लड्नको लागि, प्रयोगकर्ता मोडेलहरूमा एक मोडेल प्रयोग गर्नुहोस्, हामी साइटसँग कसरी कुराकानी गर्छौं भनेर घोषणा गर्नुहोस् जब हामी फोन नम्बरको साथ बहुस्यसक्ति प्रमाणीकरण प्रयोग गरेर प्रमाणिकरण गर्दछौं। हामी ईमेलको साथ प्रमाणिकरण गर्न पनि एक विकल्प थप्नेछौं। नानोसँग प्रयोगकर्ता मोडेलहरू सम्पादन गरेर सुरू गर्नुहोस्।
nano users/models.py
हामीले थप जेनेबल जस्तो मोडेल जस्तो देखिनु पर्छ। हामीलाई कुनै पनि विधिहरू चाहिदैन, आईडी, टाइमस्ट्याम्प, अवधि, लम्बाई, लम्बाई र कुनै बहु फ्याक प्रमाणीकरणको बिरूद्ध प्रयासहरू (23445558585)।
# एक आधारभूत टोकन वेबसाइटमा लग ईन गर्न प्रयोग गरियो
अन्तरिक्षमा स्वचालित रूपमा स्वचालित रूपमा भर्ना गर्नु अघि हामी यसलाई सामान्यतया यसलाई म्यानुअली सेट गर्न सक्छौं। प्रयोगकर्ता मोडेलहरूमा, प्रोफाइलमा यो लाइन थप्नुहोस्:
vendor = models.BooleanField(default=False)
डाटाबेसमा कुनै परिवर्तनको रूपमा, हामीले डिबबेज बनाउनु पर्छ र कुनै पनि समयदेखि डीजेन्गोमा मोडेलहरू सम्पादन गर्नु पर्छ। याद गर्नुहोस्, यो गर्न हामी स्रोत पहिलो प्रयोग गर्दछौं (यदि यो पहिले नै प्रयोग गरिएको छैन भने टर्मिनल खुला थियो) र त्यसपछि पिघन प्रबन्ध गर्नुहोस्।
cd project-directory-you-named # (यदि आवश्यक छ भने)
अहिलेको लागि, तपाईं कुनै खाताहरू सूचीबद्ध गर्न सक्नुहुनेछ जुन तपाईंले शेल प्रयोग गरेर विक्रेताहरूको रूपमा सिर्जना गरेको छ।
python manage.py shell
from users.models import Profile
p = Profile.objects.get(user__username='Charlotte')
p.vendor = True
p.save()
exit()
अब, यो टोकन प्रयोग गर्न हाम्रो बहु फ्याक्टेसन प्रमाणीकरण दृश्य विकसित गरौं। सर्वप्रथम, हामीले हाम्रो MFA सहयोगी उपयोगिताहरू परिमार्जन गर्न आवश्यक छ। नानो प्रयोग गर्दै,
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
# प्रयोगकर्तालाई उनीहरूको ईमेल वा फोन नम्बर प्रयोग गरेर प्रमाणिकरण गर्नुहोस्
token = MFAToken.objects.filter(uid=username, expires__gt=timezone.now() + datetime.timedelta(seconds=30)).order_by('-timestamp').last() # 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)) # यदि यो सत्र सिर्जना गरिएको छैन भने, यसलाई सिर्जना गर्नुहोस्
user = User.objects.filter(id=token.user.id).first() # टोकनबाट प्रयोगकर्ता पाउनुहोस्
if not user and request.user.is_authenticated: return redirect(reverse('feed:home')) # यदि तिनीहरू पहिले नै प्रमाणीकरण गरिएको छ भने, तिनीहरूलाई लग इन गर्नुहोस्
if not user: raise PermissionDenied() # अस्वीकार गर्नुहोस् यदि कुनै प्रयोगकर्ता फेला परेन भने
if not user.profile.enable_two_factor_authentication and user.is_active and user.profile.check_auth_token(usertoken, token): # आधन टोकन जाँच गर्नुहोस्
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # प्रयोगकर्तामा लग इन गर्नुहोस् यदि तिनीहरू पहिले नै लग इन भएनन्
user.profile.mfa_expires = timezone.now() + datetime.timedelta(minutes=settings.LOGIN_VALID_MINUTES) # उनीहरूको बहु फ्याक्टरको प्रमाणीकरणमा समयावधि सेट गर्नुहोस्
return HttpResponseRedirect(next if next != '' else reverse('landing:landing')) # प्रयोगकर्तालाई अर्को पृष्ठमा पुन: निर्देशित गर्नुहोस्
if not user.profile.mfa_enabled: # AFA सक्षम छ कि छैन जाँच गर्नुहोस्
if not check_verification_time(user, token): # समय जाँच गर्नुहोस्
user.profile.mfa_enabled = False # फोन नम्बर खाली गर्नुहोस्
user.profile.enable_two_factor_authentication = True # MFA सक्षम गर्नुहोस्
user.profile.phone_number = '+1' # फोन नम्बर असक्षम गर्नुहोस्
user.profile.save() # प्रोफाइल बचत गर्नुहोस्
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # प्रयोगकर्तालाई लग इन गर्नुहोस् यदि तिनीहरूको MFA सक्षम छैन
if request.method == 'POST' and not fraud_detect(request, True): # यदि अनुरोध एक पोष्ट अनुरोध हो
form = TfaForm(request.POST) # फारम स्थापना
code = str(form.data.get('code', None)) # कोड प्राप्त गर्नुहोस् कोड प्राप्त गर्नुहोस्
if code and code != '' and code != None: # निश्चित गर्नुहोस् कि यो खाली छैन
token_validated = user.profile.check_auth_token(usertoken) # आधन टोकन जाँच गर्नुहोस्
is_verified = check_verification_code(user, token, code) # कोड जाँच गर्नुहोस्
if token_validated: # केहि भने
if is_verified: # क्रममा छ
user.profile.mfa_enabled = True # MFA सक्षम गर्नुहोस् (यदि पहिले नै सक्षम छैन भने)
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # प्रयोगकर्तामा लग गर्नुहोस्
for key, value in request.GET.items(): # अर्को प्यारामिटरको लागि क्वेरीस्ट्रिंग निर्माण गर्नुहोस् (यदि कुनै छ भने)
return HttpResponseRedirect(next) # पुनर्निर्तो गर्नु
elif not token_validated: # यदि टोकन अवैध थियो
if p.mfa_attempts > 3: # यदि त्यहाँ धेरै प्रयासहरू थिए
if form.data.get('send_email', False): # ईमेल पठाउनुहोस् (वा पाठ)
# फारम प्रस्तुत गर्नुहोस् (अनुरोधहरू प्राप्त गर्नका लागि)
जब हामी यस कोडमा थप्दै छौं, निश्चित गर्नुहोस् कि प्रकार्यलाई ईमेल पठाउन आयात गर्नुहोस्। फाईलको शीर्षमा, प्रयोगकर्ता दृश्य (अन्य आयातको साथ) थप्नुहोस्
from .mfa import send_verification_email as send_mfa_verification_email
अब, हामी मध्ये कुनै पनि काम गर्नु अघि त्यो कार्य लेख्नु आवश्यक छ। यसले हाम्रो ईमेल प्रकार्य पठाउनेछ, र केवल प्रमाणिकरण कोडको साथ प्रयोगकर्तालाई ईमेल पठाउँदछ।
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))
त्यसोभए यो सबै राम्रो काम गर्दछ, अब हामीसँग बहु फ्याक्टरको प्रमाणीकरण प्रणाली छ जुन लग इन गर्न फोन नम्बर वा ईमेलमा निर्भर गर्दछ। तर हामीलाई कम्तिमा पनि प्रयोग गर्ने प्रयोगकर्ताहरू आवश्यक छ। यी स्प्यामरहरू, रोबोटहरू वा जो कोहीले हाम्रो कामको लागि राम्रो हुँदैनन्। मेरो वेबसाइटमा प्रयोगकर्ताहरू अनुगमन गर्नको लागि हेर्नुहोस्।
# आयात
from .tests import is_superuser_or_vendor # हामीले यो परीक्षण सिर्जना गर्नुपर्नेछ
# प्रयोगकर्ताहरूको सूची प्राप्त गर्नुहोस्
return render(request, 'users/users.html', { # टेम्पलेटमा प्रयोगकर्ताहरूलाई फिर्ता गर्नुहोस्
नोट गर्नुहोस् कि यो कोडले एक परीक्षण प्रयोग गर्दछ, हामीले टेस्टमा टेस्ट.पी फाईललाई टेस्ट। प्रयोगकर्ताहरू / टेस्ट .पी.s.chess, जाँच गरौं।
def is_superuser_or_vendor(user):
return user.profile.vendor or user.is_superuser
यो प्रयोगकर्ता / प्रयोगकर्ताहरूको साथ संयोजनको साथ छ जुन यस जस्तो केहि देखिन्छ:
नोट गर्नुहोस् कि टेम्प्लेटले अर्को टेम्प्लेटहरू, प्रयोगकर्ता /प्रयोगकर्ता.htmll। टेक्स्टलेट प्रयोग गर्दा जब एक subetemplations छ र प्रयोग गरीएको छ, यो एक अन्डरस्कोर थप्न को लागी एक राम्रो विचार () टेम्पलेटहरू छुट्याउन फाइलको नाम अघि, अर्डर गर्नको लागि।
नोट गर्नुहोस् कि यो जिन्जा हो, तपाईसँग यी सबै चरहरू परिभाषित गर्न सक्नुहुन्न। तर यो मेरो कोड जस्तो देखिन्छ।
<small># {{प्रयोगकर्ता।} </ सानो>
हामीलाई अर्को subotempatation, टगल_वीक्लिक्रिएल.घेटमल पनि चाहिन्छ। यो टेम्पलेट एक फारम हुनुपर्दछ जसले हामीलाई टगल गर्न अनुमति दिन्छ प्रयोगकर्ता सक्रिय छ कि छैन।
हामीले प्रयोगकर्ता गतिविधि टगल गर्न पनि एउटा दृश्य थप्न आवश्यक पर्दछ, र उपयुक्त URL ढाँचाहरू। जब हामी यसमा छौं, हामी यसलाई आवश्यक पर्ने अवस्थामा प्रयोगकर्ता हटाउनको लागि दृश्य थप्नौं।
# आयात
success_url = '/' # सफलता URL मा पुन: निर्देशित
def test_func(self): # परीक्षण यदि प्रयोगकर्ता सुपरुर हो र मेटाउन अनुमति छ
जबकि यो व्यावहारिक हुन्छ, प्रयोगकर्ता हटाउँदा प्रायः प्रयोग गर्नु हुँदैन, हामी उनीहरूलाई मात्र दृश्य दृश्यात्मकता टगल गर्न सक्छौं यदि हामीले तिनीहरूलाई खारेज गर्न आवश्यक परेमा।
URL ढाँचा हामी यो जस्तो देखिन्छौं। नानोको साथ, सम्पादन गर्नुहोस् प्रयोगकर्ताहरू / URLE.ch.ch. कि र यी लाइनहरू थप्नुहोस्:
nano users/urls.py
लाइनहरू प्रयोगकर्ताको दृश्यहरूमा पथहरूको सूचीमा जानुपर्दछ, अन्त हुनु अघि "]" तर सुरु पछि "["।
# ...
# ...
अब, निश्चित गर्नुहोस् कि साइटलाई ब्याक अप गर्नुहोस् ताकि तपाईं यसलाई वेब सर्वरमा डाउनलोड गर्न सक्नुहुन्छ हामी काम जारी राख्नेछौं। कमाण्ड लाइनबाट,
sudo backup
अब हाम्रो साइट समर्थित छ।
त्यसोभए अब हामीसँग केहि उपयोगी सुविधाहरू छन्। तर यहाँ ठूलो चित्रको बारेमा के हुन्छ? यो कोड अझै इन्टरनेटबाट पहुँचयोग्य छैन, हामी अझै मेल सर्भर समावेश छैन, विस्तृत प्रमाणिकरण प्रक्रिया समावेश गर्न को लागी हामी साइट अन्वेषण गर्न मद्दत गर्नको लागि सहज रूपमा लेआउटहरू प्रयोग गर्न सक्दछौं।
हामी यी सबैमा पुग्नेछौं। अहिलेको लागि सब भन्दा महत्त्वपूर्ण कुरा केवल यो कोड अनलाइन हुँदै गइरहेको छ, जुन हामी केवल उबुन्टु सर्वरमा BASHES का साथ गर्न सक्दछौं। तपाईंले यसका लागि सर्भर भाँडामा लिन आवश्यक पर्दछ यद्यपि तपाईंसँग घर र एक व्यवसाय इन्टरनेट सदस्यतामा छैन जुन तपाईंलाई पोर्टहरू खोल्न अनुमति दिन्छ। मैले व्यक्तिगत रूपमा मेरो वेबसाइटलाई HP Z440 मा स्थापना गरेको छु जुन मेरो अपार्टमेन्टमा स्थापना गरिएको छ, तर यो सामान्यतया आधारभूत निजी सर्भर (VPS) भाँडामा परिणत गर्दछ।
दिमागमा राख्नुहोस् कि हामी कोड अहिले चलिरहेका छौं तुलनात्मक रूपमा पातलो, यो प्रयोग गर्न तयार हुनु अघि यसलाई प्रयोग गर्न आवश्यक पर्दछ। तपाईं इन्टरनेटसँग के गर्नुहुन्छ, निश्चित गर्नुहोस् कि यदि तपाईं सार्वजनिक रूपमा यो साइटलाई सार्वजनिक रूपमा वेबमा प्रयोग गर्नुहुन्छ भने, तपाईंसँग तपाईंको वेबसाइटसँग अनावश्यक अन्तर्क्रिया रोक्नुहोस्। यो सम्भवतः पहिले समस्या हुने छैन, तर हामी मिसिन शिक्षा, कृत्रिम बुद्धिमत्ता र कम्प्यूटर दृष्टि लगायत विभिन्न समाधानहरूमा हेर्नेछौं। जब यो समस्या हुन्छ, समाधानको लागि यस पाठमा अगाडि हेर्नुहोस्।
VPS भाडामा लिने सर्तमा, त्यहाँ धेरै स्थानहरू छन् जुन तपाईं जान सक्नुहुन्छ। गुगल क्लाउडसँग VPS, आईएनएसओ, क्यामेट्रा, अमेजन अंडा, र अधिक प्रदायकहरूले हाम्रा आवश्यकताहरू प्रदान गर्दछ हे क्लाउड सर्वर समाधानहरू प्रस्ताव गर्दछ।
तपाईंले तिनीहरूको फारमहरू मार्फत क्लिक गर्नुपर्नेछ र सुरु हुने योजना चयन गर्नु आवश्यक छ। तपाईं कुनै पनि प्रदायकसँग आधारभूत योजनाको साथ जान सक्नुहुन्छ, तर सुनिश्चित गर्नुहोस् कि प्रदायकले तपाईंलाई पोर्ट सर्वर पोर्टहरू पठाउन अनुमति दिँदछ (यो पोर्ट 2 25 मा, केही प्रदायकहरू यी पोर्टहरू रोक्दछ। अहिलेसम्म मैले ओनिसको र माईट्राको साथ सब भन्दा राम्रो अनुभव गरेको छु, जसले मलाई असीमित ईमेल पठाउन अनुमति दिन्छन् र तिनीहरूको मूल्य निर्धारण धेरै सस्तो छ।
तपाइँ तपाइँको नयाँ सर्भरमा SSH वा सुरक्षित शेल भनिने प्रोटोकोलोमा जडान गर्नुहुनेछ, जसले तपाईंलाई तपाईंको व्यक्तिगत कम्प्युटरबाट, तपाईंको व्यक्तिगत कम्प्युटरबाट टाढा सर्भरसँग इन्टरपोर्ट गर्न अनुमति दिन्छ। जब तपाईं सर्भर सेट अप गर्नुहुन्छ, होस्टिंग प्रदायकले तपाईंलाई एसएसएस कुञ्जी थप्न सोध्छ, वा उनीहरूले तपाईंलाई प्रयोगकर्ता नाम र पासवर्ड दिन्छन्। SSH कुञ्जी यो हो कि तपाइँ कोड-कमाण्ड लाइनबाट कोडमा लग ईन गर्नुहोस् कोड सम्पादन गर्न। SSH कुञ्जी उत्पादन गर्न तल SSH-Cuggen विकल्पहरू प्रयोग गर्नुहोस्।
ssh-keygen
फाइल बचत गर्नुहोस् र यसलाई अधिलेखन गर्नुहोस् यदि तपाईंलाई आवश्यक छ भने, यो तपाईंको SSH कुञ्जीहरू घुमाउनु राम्रो हो यदि तपाईं पहिले नै छैन भने। अब, तपाइँ तपाइँको SSH कुञ्जी हेर्न निम्न कमान्ड प्रयोग गर्न सक्नुहुनेछ। तपाइँ यसलाई तपाइँको रिमोट सर्वरमा नक्कल गर्न चाहानुहुन्छ ताकि तपाईं प्रमाणीकरण गर्न प्रयोग गर्न सक्नुहुनेछ।
cat ~/.ssh/id_rsa.pub
यदि तपाइँ एक संस्करण टाइप गर्न सक्षम हुनुहुन्न जब त्यो कमान्ड टाइप गर्दा (ssh-reda Aaa ") एक RES कुञ्जी उत्पादन गर्न को लागी।)
ssh-keygen -t rsa -b 4096
उबून्टु चलिरहेको VPS सिर्जना गर्नुहोस्, यद्यपि तपाईं यो गर्ने योजना गर्नुभयो। एकचोटि तपाईंले प्रदायक वेबसाइट (Kamatra.com, inos.x.xx.xx.xx.xx.x.x.x.x.x.x.x.x.x.xx.xx.xxtextextextext) प्रयोग गर्न चाहानुहुन्छ। तपाईंले सिर्जना गरेको सर्भरमा पूर्वनिर्धारित प्रयोगकर्तानाम पनि संवेदनशील हुनु आवश्यक छ, उदाहरणका लागि, उबुन्टु।
ssh ubuntu@XX.XX.XX.XX
तपाईंलाई पासवर्डको लागि सोध्न सकिन्छ, यदि तपाईंलाई पासवर्डको लागि सोधिन्छ भने, यसलाई प्रविष्ट गर्नुहोस्। हामी पूर्वनिर्धारित प्रयोगकर्ता नाम प्रयोग गर्दैनौं, त्यसैले नयाँ प्रयोगकर्ता सिर्जना गरेर सुरु गरौं।
एक नयाँ SSHD_CONFFIG फाईल थप्दै सुरू गरौं जुन सर्भरले SSH कसरी प्रयोग गर्ने भनेर बताउँछ।
nano sshd_config
# यो SSHD सर्भर प्रणाली-फराकिलो कन्फिगरेसन फाइल हो। देख्नु
# अधिक जानकारीको लागि SSHD_Config ())।
# यो SSHD पथ = / USR / SCBIMED: / USR / स्थानीय / बिन: / USR / SEB :: / USR / बिन: / / USB / COMBET: / / USB / COMB
# रणनीति पूर्वनिर्धारित sshd_config मा विकल्पहरु को लागी प्रयोग गरीन्छ
# ओपनशहले उनीहरूको पूर्वनिर्धारित मानसँग विकल्पहरू निर्दिष्ट गर्नु हो जहाँ
# सम्भव छ, तर उनीहरूले टिप्पणी गर्न छोड्नुहोस्। संज्ञाना विकल्प ओभरराइड
# पूर्वनिर्धारित मान।
# पोर्ट 22
# ठेगाना ठेगाना
# 0.0.0.0
# सुन्नुहोस् ::
# होस्ट्री / आदि / ssh / SSH_HOS_HS_SKEY
# होस्टचनी / आदि / ssh / sshos_hoscydsa_ksx_ksy
# होस्टले / आदि / ssh / ssht_hos255555519 स्की
# Ciphers र कुञ्जी
# Reeylimit पूर्वनिर्धारित कुनै पनि होईन
# लुक्त
# Syslogfffapfactions Auth
# Litlevee जानकारी
# प्रमाणीकरण:
# लगिजेटिष्टम 2 मिटर
# अनुमति प्रदान गरिएको प्रतिबन्धित-पासवर्ड
# Strundomdes हो
# म्याक्सीथिट्स।
# म्याक्सीसन्स 10
# आशा .स / अधिकृत_keies2 भविष्यमा पूर्वनिर्धारित द्वारा बेवास्ता गर्न
# आधिकारिक रोगीफाइल कुनै पनि छैन
# आधिकारिकहरू कुनै पनि छैन
# अधिनांबिकक नक्कलर होईन
# यसका लागि काम गर्नको लागि तपाईंलाई होस्ट कुञ्जीहरू पनि / आदि / ssh / ssh_ परिधानहरू मा पनि चाहिन्छ
# होस्टबिश्मन
# हो परिवर्तन गर्नुहोस् यदि तपाईं विश्वास गर्नुहुन्न भने ~ / .SSha / ज्ञात_hoshoss
# होस्टबिश्मन
# बेवास्ताकर्ता अलारोहिस न।
# प्रयोगकर्ताको ~ / .ROSTS र ~ / .SHOSTS फाईलहरू पढ्नुहोस्
# ESSTHOSTHSSSSS हो
# टलनेटेड स्पष्ट पाठ पासवर्डहरू असक्षम गर्न, यहाँ कुनै परिवर्तन गर्नुहोस्!
# Permithmplyswstswords शब्दहरू होईन
# होला-प्रतिक्रिया पासवर्डहरू सक्षम गर्न हो परिवर्तन गर्नुहोस् (सँगी मुद्दाहरूको साथ
# केहि पराम मोड्युलहरू र थ्रेडहरू)
# केर्बोस विकल्पहरू
# केर्बर्रोशियभिंगेन्नियभिंगेन नम्बर
# केर्बोरोस्कोस्कोस
# केरबर्स्चाल हो हो
# केर्बर्जेटेफास्ट
# Gssapi विकल्पहरू
# Gssapapiahthentivice। होईन
# Gssapicaiceanupcredirpliests हो
# Gssappistrictractorchackechacke हो
# Gssapapikeyxexact AS
# Pam प्रमाणीकरण सक्षम गर्न यसलाई 'हो' मा सेट गर्नुहोस्, खाता प्रोसेसिंग,
# र सत्र प्रशोधन। यदि यो सक्षम छ भने, Pam प्रमाणीकरण हुनेछ
# kbdintecticativeauttication र
# पासवर्डशुटेन्सेन्चा। तपाईंको Pam कन्फिगरेसनमा निर्भर गर्दै,
# Pam प्रमाणीकरण kbdinticativeahtahtahanticehivice हुन सक्छ
# "अनुमति बिना अनुमति" को सेटिंग "# पासवर्ड"।
# यदि तपाईं कहिले पनि पिम खाता र सत्र चेक बिना चलिरहेको चाहनुहुन्छ भने
# Pam प्रमाणीकरण, त्यसपछि यसलाई सक्षम गर्नुहोस् तर पासवर्ड सेटअपेन्शिभन सेट गर्नुहोस्
# र kbdinteactiviceabuteunticectication 'No'।
# Usepantforwarding हो
# Usttcpforwidoling हो
# गेटव्रपोर्टहरू होईन
# X11dissploffftstststs
# X11suseuloclosthosth हो
# परमिटटी हो
# प्रिन्टलस्टलोग हो
# Tcpkeepalive हो
# परमिटविनननमेन्ट नम्बर
# कम्प्रेसन ढिलाइ भयो
# ग्राहकलीयलीविद्र 0
# ग्राहककालागिंकमाक्स।
# कुनै प्रयोग गरिएको छैन
# Pidfle /run/shhdd.pid
# Machictartups 10: 30: 100
# अनुमति दिनुन
# Chrootdirectory कुनै पनि
# संस्करणमा कुनै पनि छैन
# कुनै पूर्वनिर्धारित ब्यानर मार्ग छैन
# ग्राहकलाई लोकेल वातावरण चरहरू पार गर्न अनुमति दिनुहोस्
# ओभरराइड पूर्वनिर्धारित कुनै सब्मिफाइनमहरूको पूर्वनिर्धारित
# एक प्रति प्रयोगकर्ता आधारमा ओभरराइडिंग सेटिंग्स को उदाहरण
# प्रयोगकर्ता Anoncvs मिलान गर्नुहोस्
# X11flarly होईन
# Usttcpforwidering होईन
# परमिट होईन
# शक्ति मान्डम CVS सर्भर
याद गर्नुहोस्, CTRL + X र y फाईल बचत गर्न। अर्को, आरम्भको आधारभूत स्क्रिप्ट लेखौं (हाम्रो प्रयोगकर्ताको पूर्वनिर्धारित होम डाइरेक्टरीमा)।
nano initialize
यी लाइनहरू फाईलमा थप्नुहोस्, प्रतिस्थापन गर्दै
# ! / बिन / बाश
यस फाईल मार्फत तपाईंलाई हिँड्न, लाइन द्वारा लाइन सुरु गरौं। पहिलो रेखाले कम्पाइलरलाई बताउँछ कि यो बाशा स्क्रिप्ट हो। त्यसो भए हामी सबै निर्भरताहरू स्थापना गरिरहेका छौं, SSSD_CONFIG लाई प्रतिलिपि गर्नुहोस्, जराका लागि SSH कुञ्जीहरू प्रस्तुत गर्दै, प्रयोगकर्तालाई उनीहरूको नाम र अक्षम पासवर्ड प्रयोग गर्न सक्दछौं)। हामी सुडो समूहमा पनि टीम थप्दछौं, तिनीहरूको SSH कुञ्जी उत्पन्न गर्नुहोस्, अधिकृत कुञ्जीहरू र उनीहरूका साथका साथै उनीहरूको कुञ्जी प्रिन्ट गर्न। यो नयाँ प्रयोगकर्ताले हामी कसरी साइटमा लग इन गर्छौं।
नयाँ टर्मिनलमा, अगाडि बढ्नुहोस् र फेरि सर्भर खोल्नुहोस्।
ssh team@XX.XX.XX.XX
तपाईंले यस पटक पासवर्डको आवश्यकता पर्दैन, जस्तो तपाईंसँग SSH कुञ्जी छ। हामीले साइटमा अधिक सुरक्षित राख्न पासवर्डको साथ लगइन पनि असक्षम पारिएको छ।
अब, यो सर्भर पूर्ण रूपमा खाली स्थानमा कुनै जानकारी बिना नै खाली हुन्छ। Git बाट हाम्रो प्रोजेक्ट क्लन गरेर सुरु गरौं त्यसैले हामी यसलाई रिमोट मेसिनमा डाउनलोड गर्न र चलाउन सक्छौं। रिमोट सर्वरमा ssh मा जडित छ, पहिलो तपाईंको SSH कुञ्जी प्रिन्ट:
cat ~/.ssh/id_rsa.pub
अर्को, यस कुञ्जीलाई GIT सेटि settings हीसमा टाँस्नुहोस् जुन हामीले हाम्रो git भण्डार सेट अप गर्नु अघि हामीले पहिले गरेका थियौं। अब हामी हाम्रो प्रोजेक्ट सीधा सर्भरमा क्लोन गर्न सक्छौं। निश्चित गर्नुहोस् कि तपाईंले पहिले स्थानीय रूपमा प्रोजेक्टको ब्याक अप गर्नुभयो त्यसैले यो डाउनलोड गर्न git सर्भरमा छ।
git clone git://github.com/you/yourproject.git
सिद्ध अब सबै फाईलहरू यहाँ छन्। हामी तिनीहरूलाई ls संग देख्न सक्छौं
ls
अब, सर्भर सेट अप गर्न सुरु गरौं। पहिले, तपाईंको प्रोजेक्ट डाइरेक्टरीलाई सरल, अविस्मरणीय नामको प्रतिलिपि गर्नुहोस् हामी परियोजनाको लागि प्रयोग गर्नेछौं।
cp -r yourproject whatyoucalledit
जहाँ "के क्युर्फल्डिट" तपाईंको प्रोजेक्टको नयाँ नाम हो। अर्को, हामीले सर्भर सेट अप गर्न आधारभूत उपयोगिता निर्माण गर्न आवश्यक पर्दछ। हामी यी उपयोगिता बचाउनेछौं र भविष्यमा यसलाई प्रयोग गर्नेछौं। यस उपयोगिता निर्माण गर्न, हामी स्क्रिप्ट कसरी सम्पादन गर्छौं परिभाषित गर्न एक प्रयोगकर्ता बाइनरी सिर्जना गरौं। Bash, सम्पादन / USR / विन / एस्क्रिप्ट प्रयोग गर्दै
sudo nano /usr/bin/ascript
निश्चित गर्नुहोस्, त्यहाँ सुबो प्रयोग गर्न निश्चित गर्नुहोस् कि तपाईंसँग फाईल सम्पादन गर्न अनुमतिहरू छन्। फाईलमा यी लाइनहरू थप्नुहोस्:
# ! / बिन / बाश
echo "# ! / BIN / Bash ">> / USR / बिन / $ 1
यो स्क्रिप्टलाई सम्झनुहोस्, स्क्रिप्ट नाम, $ 1 को रूपमा। पहिले यो जाँच गर्दछ यदि फाईल अवस्थित छ, वा अन्यथा यसलाई सिर्जना गर्दछ भने, स्क्रिप्ट घोषणा गर्न पहिलो रेखा Bash हो, र यसको नाम परिवर्तन गर्दछ, र यसको नाम सिर्जना गर्दछ जुन हामी सिर्जना गर्दै छौं त्यसको नामहरू थप्दछ। यदि फाईल पहिले नै अवस्थित छ भने, केवल अनुमतिहरू परिवर्तन गर्नुहोस् र यसलाई सम्पादन गर्नुहोस्। फाईल सेभ गर्नुहोस्, र त्यसपछि हामी यसको अनुमतिहरू परिवर्तन गर्नेछौं। जबसम्म हामी यो स्क्रिप्ट प्रयोग गर्दछौं, हामी त्यो फेरि गर्नु हुँदैन।
sudo chmod a+x /usr/bin/ascript
सिद्ध अब सेटअप भनिने स्क्रिप्ट सिर्जना गरौं। पहिले, तपाईंलाई अभिभूत गर्न होइन, तर मेरो सेटअप स्क्रिप्ट कस्तो देखिन्छ भनेर हेर्नुहोस्। हामी यो कसरी स्क्रिप्ट तपाईंको प्रोजेक्ट कस्तो देखिनुपर्दछ भन्नेमा हामी हिंड्नेछौं, तपाईंलाई सुरुको लागि मेरो स्क्रिप्टमा सबै आवश्यक पर्दैन।
# ! / बिन / बाश
# sudo Chmod a + x स्क्रिप्ट / प्रयोगकर्ताहरू
# । /स्क्रिप्टहरू/USESESESTअप
# SSH-KHGEN
# परियोजना निर्देशिका
# लग आदेशहरू
# नानो कन्फिगर
# Git कन्फिग
# अपडेट र स्थापना गर्नुहोस्
# क्लरमव एन्टिभाइरस सक्षम गर्नुहोस्
# होस्टनाम सेट गर्नुहोस्
# सेटअप पोस्टग्रास
# डाटाबेस ब्याकअप सेटअप
# युपटेबल असक्षम गर्नुहोस्
# Bitdeferster स्थापना गर्नुहोस्
# सेटअप पोस्टफिक्स
# Dirs सिर्जना गर्नुहोस्
# भ्रुण भ्रुण सेटअप
# निर्भरता प्राप्त गर्नुहोस् र निर्माणहरू निर्माण गर्नुहोस्
# फायरवाल नियमहरू सेट गर्नुहोस्
# PYPI निर्भरताहरू स्थापना गर्नुहोस्
pip3 install --upgrade opencv-python # ==.5..4..4.600
pip3 install --upgrade opencv-contrib-python # ==.5..4..4.600
# Pip Shocv-python == 4..5..5..64।
# PIP SPHCV-Cultive-Pythn == 4.5..5..64
# प्रमाणपत्र स्थापना गर्नुहोस्
# RESTERBOT चलाउनुहोस्
# मेल सर्भर पुन: लोड गर्नुहोस्
# CORTESTS CORTS
# सुडो सीपी / खेल्यो
# सुडो सीपी / खेल्यो
# प्याच Vnnv
# प्रयोगकर्ता सेटिंग्स सेट गर्नुहोस्
# अनुमतिहरू सेट गर्नुहोस्
# सुडो चिल्ड -R टीम: प्रयोगकर्ताहरू / प्ले / रन / /
# सुडो तन रन रूट: मूल / रन / sudo / ts -r
# sudok shod 664 D DB.SQLITE3
# suoo kww-डाटा: प्रयोगकर्ता db.sqlite3 प्रयोगकर्ताहरू
# कन्फिगर प्रतिलिपि गर्नुहोस् र अनुमतिहरू सेट गर्नुहोस्
# सेटअप डाटाबेस
# PAM PAM कन्फिगर गर्नुहोस् र दोषपूर्ण ssh कन्फिग्रिग हटाउनुहोस्
# sudo STE -Y 'I'-$ d '$ d' /etc/pam.d/shhd
# sudo SES -Y ''--or '$ d' / ETC / प्रोफाइल
# तुलना बिन स्क्रिप्टहरू र अनुमतिहरू सेट गर्नुहोस्
# पुन: लोड गर्नुहोस् र सेवाहरू सक्षम गर्नुहोस्
# APECE मोड्युलहरू सक्षम गर्नुहोस्
# sudo A2Disdod Mpm_eve
# sudo A2Disdod MPM_ वरकर
# sudo A2enMod MPM_Preefor
# पूर्वनिर्धारित साइट असक्षम गर्नुहोस्
# हाम्रो साइट सक्षम गर्नुहोस्
# Reumon पुन: लोड गर्नुहोस् र पुन: सुरुवात, पोस्टफिक्स र खोन्डकिम
# अनुमतिहरू सेट गर्नुहोस्
# स्वरूपमा कन्फिगरेसन
# PAP क्याप्शन ईन्जिन
# सेटअप git
# NPV3 र डोमेन कन्फिगरेसनको लागि खोन्डकिम देखाउनुहोस्
# सेटअप पूरा भयो
त्यो धेरै सेटअप हो! छोटकरीमा, यो कोड लग ईन गर्नुहोस्, ननो र गिराभहरू, डाउनलोडहरू (एक असामान्य सर्भरहरू असक्षम पार्दछ, निर्देशकहरूलाई डाउनलोड गर्दछ। निर्भरता, प्रमाणपत्र स्थापना गर्दछ र कन्फिगरेसन स्थापना गर्दछ, विनियोजन, विनिमय स्वैप र खोल्दछ। पर्याप्त सरल, तर यो धेरै कोड जस्तो देखिन्छ। हामीलाई यसको खाँचो पर्दैन किनकि हामीसँग निर्भरताहरू छैनन्, अजवाइन, सेलेरीबाइट वा Daphne प्रयोग गरीरहेका छैनन्, तर हामी केहि सुरु गर्न को लागी केहि स्थापना गर्नेछौं। याद गर्नुहोस् कि यो कोडले डोमेन धेरै पटक घोषणा गरेको छ।
हामीले एक डोमेन नाम खरीद गर्न पनि आवश्यक पर्दछ (जुन एक सानो वार्षिक शुल्क हो)। म डोमेन खरीदको लागि स्क्वाशस्पेस सिफारिस गर्दछु, तिनीहरूको लेआउट सहज र प्रयोग गर्न सजिलो छ। तपाईं आफ्नो छनौटको कुनै डोमेन किन्न सक्नुहुन्छ, तर म यस उदाहरणमा डोमेन फेममेबाबेकम प्रयोग गर्दैछु। एकचोटि तपाईंले स्प्रेस्पेस डिस्प्रेसन प्यानेरेसन प्यानलमा डोमेन किन्नुभयो, IP ठेगाना द्वारा सर्भरमा तपाईंको डोमेनमा एक रेकर्ड पोइन्ट गर्दै र एक रेकर्ड थप्नुहोस्। यो यस्तो देखिनु पर्छ:
@ A XX.XX.XX.XX
@ अपरेटरको साथ होस्टको रूपमा, यस डोमेन अन्तर्गत सबै मोल्डरहरू र जरा डोमेन सर्भरमा सबै रिडिरेक्ट हुनेछ। त्यहाँ घोषणा गर्न अझ धेरै रेकर्डहरू छन्, तर हामी तपाईंलाई मेल पठाउन तयार भएमा हामी यिनीहरूमा जान सक्नेछौं। दिमागमा राख्नुहोस्, यसले सर्वरबाट सफलतापूर्वक मेल पठाउन सक्षम हुनु अघि धेरै दिन लाग्न सक्दछ। हामीले सेटिंग्स को लागी DNS रेकर्ड प्रचार गर्न समय लिनेछ।
जे भए पनि, एकमा मात्र रेकर्ड एक रेकर्ड हो। त्यसोभए अब हामी हाम्रो प्रोजेक्ट अनुसार तलको स्मारक भर्न सक्दछौं र यसलाई सञ्चालन गर्न सक्दछौं।
एउटा सानो सेटअप स्क्रिप्टमा सुरू गरौं जुन हामीलाई आधारभूत प्रगतिको लागि आवश्यक पर्ने के हो स्थापना गर्न। हामी यति धेरै निर्भरताहरू वा पोस्टग्रासेकम प्रयोग गर्दैनौं, हामी केवल एक आधारभूत HTTP सर्वर सुरू गर्नेछौं र जब यो पूरा भयो। याद गर्नुहोस्, HTTPS प्रमाणपत्र प्राप्त गर्न र सर्भर सुरक्षित रूपमा चलाउन, हामीले सर्वर भाडामा एक डोमेन किन्नु आवश्यक पर्दछ। अहिलेको लागि, यस फाईलमा "टोलीमा बदल्नुहोस्" तपाईंको प्रयोगकर्ताको नाम, तपाईंको प्रोजेक्टको डाइरेक्टरीको साथ, र तपाईंको ईमेल र <> ट्यागहरूमा तपाईंको ईमेल र डोमेन प्रदान गर्नुहोस्।
थप रूपमा, हामीले यो कोड चलाउनु अघि, हामीले फायरवालमा फायरवालमा सेटिंग्सलाई सेटिंग्स परिवर्तन गर्नुपर्दछ, यदि कुनै छ भने। सामान्यतया यो तपाईंको होस्टिंग प्रदायकको 'नेटवर्क' ट्याबमा हुन्छ, वा यदि तपाईं स्वयं होस्टिंग हुनुहुन्छ भने, यसको राउटरको अगाडि 'पोर्ट फर्वार्डिंग' सेक्शनमा। तपाइँ तपाइँको सर्भरको मेसिनको ठेगानाको साथ तपाइँको राउटर मार्फत स्थिर आईपी सेट अप गर्न चाहानुहुन्छ, यदि तपाईं स्वयं होस्टिंग प्रयोग गर्दै हुनुहुन्छ। तपाईंले निम्न पोर्टहरू पढ्न / लेख्न पहुँचको लागि खोल्न आवश्यक छ।
22 (SSH) 2 ((मेल) 587 (मेल) 110 (मेल ग्राहक) (0 (http) 4 443 (https)
# ! / बिन / बाश
# लग आदेशहरू
# नानो कन्फिगर
# Git कन्फिग
# अपडेट र स्थापना गर्नुहोस्
# क्लरमव एन्टिभाइरस सक्षम गर्नुहोस्
# होस्टनाम सेट गर्नुहोस्
# डाटाबेस ब्याकअप सेटअप
# युपटेबल असक्षम गर्नुहोस्
# भ्रुण भ्रुण सेटअप
# प्रमाणपत्र स्थापना गर्नुहोस्
# RESTERBOT चलाउनुहोस्
# प्रयोगकर्ता सेटिंग्स सेट गर्नुहोस्
# अनुमतिहरू सेट गर्नुहोस्
# सुडो चिल्ड -R टीम: प्रयोगकर्ताहरू / प्ले / रन / /
# सुडो तन रन रूट: मूल / रन / sudo / ts -r
# पुन: लोड गर्नुहोस् र सेवाहरू सक्षम गर्नुहोस्
# APECE मोड्युलहरू सक्षम गर्नुहोस्
# Reumon पुन: लोड गर्नुहोस् र पुन: सुरुवात, पोस्टफिक्स र खोन्डकिम
# NPV3 र डोमेन कन्फिगरेसनको लागि खोन्डकिम देखाउनुहोस्
यस कोड चलाउनु अघि, निश्चित गर्नुहोस् कि तपाईंले खरीद गर्नुभएको डोमेन सर्भरमा जडित छ। यो गर्नका लागि तपाईंको स्थानीय मेसिनमा टर्मिनल खोल्नुहोस्, र यो आदेश तपाईंको डोमेनको साथ चलाउनुहोस्:
ping femmebabe.com # यहाँ तपाईंको डोमेन घुसाउनुहोस्, पिंग पछि
यदि सबै राम्रोसँग देखिन्छ र सर्भरले प्रतिक्रियाहरू पठाउँदै छ, हामी स्क्रिप्ट चलाउन र प्याकेजहरू स्थापना गर्न तयार छौं) साथै हाम्रो अपाचे सर्भरलाई सक्षम र प्रमाणित गर्नुहोस्।
यो सबै सेटअप पोष्टफिक्स कन्फिगर गर्न आवश्यक पर्दैन, हामी त्यस सेटअपलाई पछि हेर्नेछौं। अहिलेको लागि, यो सेटअप कोड चलाउनुहोस् र यसले तपाईंको सर्वर स्थापना गर्न र प्रमाणित गर्न केहि मिनेट लिनुपर्दछ। फेरि, स्क्रिप्टमा नाम, ईमेल र डोमेन नाम बदल्नुहोस् जुन तपाईंले खरीद गर्नुभयो नाम अनुसार नाम र डोमेन नाम बदल्नुहोस्।
अब सर्भर प्रावधान गरिएको छ, तपाईं कुनै वेब ब्राउजरमा URL मा जान सक्नुहुन्छ र निश्चित गर्नुहोस् कि सर्भर HTTPS STTPS चलिरहेको छ। यदि यो छैन भने, DNS रेकर्डको लागि केहि बेर पर्खनुहोस्
sudo certbot --apache --non-interactive --agree-tos --domains <domain>.com --email <youremail>@gmail.com
जब सम्म तपाईंले सबै कुरा राम्ररी कन्फिगर गर्नु भएको छ, तपाईं ईम्साको पूर्वनिर्धारित पृष्ठ पहुँच गर्न सक्षम हुनुपर्दछ जुन तपाईंको कोडलाई थाहा छ र एक प्रत्यक्ष वेबपृष्ठ प्रदर्शन गर्दै। अर्को, हाम्रो पूर्वनिर्धारित डिबग मोड परिवर्तन गर्न को लागी सेटिंग्स ..pht.pht.pht.phipp.po.phipply निर्माण गर्न। हामी पनि सेटिंग्समा र आन्तरिक आईपीएसको साथ डोमेन कन्फिगर गर्नेछौं।
nano yourproject/settings.py
सेटिंग्समा, यी लाइनहरू परिवर्तन गर्नुहोस् / थप्नुहोस्।
# साइट अनुपात
अब, हामीले APCECE2 कन्फिगर गर्न आवश्यक पर्दछ। कन्फिग फाइल सम्पादन गरौं हामी यस लाइनसँग डिप्लोय गर्नेछौं:
sudo nano /etc/apache2/sites-available/femmebabe-le-ssl.conf
यस कन्फिगरेली फाईलमा यसमा हाम्रो डोमेन नाम, र प्रयोगकर्ता र परियोजनाको नाम हुनुपर्दछ। म डोमेन नाम फेमबबेबेब्बी.क.कतिक, प्रयोगकर्तानाम टीम, र परियोजना नाम फेममेबाबेको प्रयोग गर्दैछु।
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>
यस उदाहरणको कोडमा निर्देशिका, निर्देशिकाहरू, र डोमेन को नाम बदल्नको लागि तपाईंको सर्भर कन्फिगर गर्दा। अब, हामीले पूर्वनिर्धारित साइट अक्षम गर्न आवश्यक पर्दछ। यो बाश प्रयोग गर्न सकिन्छ।
sudo a2dissite 000-default-le-ssl
sudo a2dissite 000-default
sudo a2dissite default-ssl
अर्को, हामी पूर्वनिर्धारित साइट र पुन: लोड गर्नुहोस् APOचे2, साथै बाश प्रयोग गरेर पनि। तपाईले घोषणा गर्नुभएको फाईलको नाम बदल्नको लागि तपाइँले घोषणा गर्नुभयो तपाईको घोषणा गरीएको फाईलको नाम / साइट-साइट-उपलब्ध /।
sudo a2ensite femmebabe-le-ssl
sudo systemctl reload apache2
नवबारीमा तपाईंको डोमेन फिर्ता जानुहोस्। तपाईंले आफ्नो वेब ब्राउजरमा कन्फिगर गरेको साइट देख्नु पर्छ। बधाई! यदि तपाईंले यसलाई देख्नुभएन भने, तपाईंले केही परिवर्तन गर्नु आवश्यक पर्दछ। ध्यानपूर्वक तपाईंको प्रोजेक्टमा सेटिंग्स समीक्षा गर्नुहोस्, एपीचे कन्फिगरेसन समीक्षा गर्नुहोस्, र निश्चित गर्नुहोस् कि तपाईंसँग कुनै त्रुटिहरू छैनन्, र त्रुटिहरूको लागि परियोजना जाँच गर्न निम्न आदेशहरू चलाउनुहोस्।
cd projectname
source venv/bin/activate
python manage.py check
यदि तपाईंसँग तपाईंको पाइथन प्रोजेक्टमा त्रुटिहरू छन् भने, तिनीहरूलाई जहाँ तिनीहरू छन् र तिनीहरूलाई ठीक गर्नुहोस्। तपाईं जहाँ हुनुहुन्छ त्यहाँ निर्भर गर्दछ जहाँ "यदि तपाइँसँग त्रुटि छ भने तपाइँ तपाइँको सबै त्रुटिहरू हेर्न सक्षम हुनुहुन्न, त्यसैले यदि भन्छ भने", भर्चुअल वातावरणमा निम्न फाईल सम्पादन गर्नुहोस्, त्रुटि देखाउनुहोस्।
nano venv/lib/python3.12/site-packages/django/apps/registry.py
रेखा 83 83 लाई स्क्रोल गर्नुहोस्, जहाँ यो रनटाइम त्रुटि हुर्काइन्छ ("RONTIMERERRRRER (" यो लाइन अघि एक टिप्पणी), त्यसपछि उही इन्डेन्टेशन, एक समान इन्डेन्टेसन, एक समान इन्डेन्टेशन, एक समान इन्डेन्टेसन,}। यो यस्तो देखिन्छ:
# RECTERANT DECCOCCONFIGGIGG.read.ree ()
# विधिहरू दुई पटक।
# Roantime Arrorror ("POPUST () रिचार्ज छैन")
तपाईं त्यसपछि प्रोजेक्ट जाँच गर्न सक्नुहुन्छ र त्रुटि पर्दाफास गर्न सक्नुहुन्छ।
python manage.py check
त्यसोभए तपाईं त्रुटि देख्न सक्नुहुन्छ र यसलाई ठीक गर्न सक्नुहुन्छ। जब तपाईंसँग यो निश्चित हुन्छ र कोड कुनै त्रुटि बिना कम्पाइल गर्दछ, फाइल फिर्ता परिवर्तन गर्न निश्चित गर्नुहोस् ताकि यो यस्तो देखिन्छ:
# RECTERANT DECCOCCONFIGGIGG.read.ree ()
# विधिहरू दुई पटक।
# आत्म .अप_ कन्फिगर = {}
सर्भर अनलाइन हुन्छ, जब हामी यसमा कुनै थप परिवर्तन गर्दछौं, तब हामीले सर्भर पुन: लोड गर्न निम्न आदेश प्रयोग गर्नुपर्दछ:
sudo systemctl reload apache2
अद्भुत! तर मेल पठाउने बारेमा के हुन्छ? ईमेल पठाउन सुरू गर्न, हामी पहिले डोमेन कन्फिगरेसन अपडेट गर्न आवश्यक पर्दछ। यो स्क्वायरस्पेसमा तपाईंको DNS प्यानलमा हुनुपर्दछ, वा जुनसुकै डोमेन नामको नाम दर्ता तपाईंले रोज्नुभयो। हामीले कन्फिगरेसन स्थापना र थप्न आवश्यक छ, र केही कमाण्डहरू चलाउन पनि आवश्यक छ।
पहिले, सर्भर को आईपीभी6 ठेगाना प्राप्त गरौं। हामी तपाईंको dns खोलिदिनेछौं र रेकर्डहरू थप्नेछौं।
सर्वरको IPV6 ठेगाना प्राप्त गर्न यो आदेश प्रयोग गर्नुहोस्:
ip -6 addr
अब, हामी DNS सेटिंग्समा निम्न रेकर्डहरू थप्न सक्छौं। मेरो रेकर्ड यस्तो देखिन्छ। जे होस्, तपाईंको रेकर्डहरूको लागि, तपाईंले आईपी ठेगाना तपाईंको आईपी (75 75.14718.182.214 होइन) लाई बदल्नु पर्छ (यो मेरो हो)। फेममेबाब.कनको ठाउँमा पनि तपाईंको नक्शामा थप्नुहोस्, साथै तपाईंको आईपीभी 4 ठेगाना अघिल्लो कमान्डको साथ फेला पर्यो (तपाईं मेरो, ESP0 :: 72ea: FF49: 32e02)। अहिलेको लागि डोमेनकीको बारेमा चिन्ता नलिनुहोस्, जब हामीले पोस्टफिक्स सेट अप गर्यौं, सोनल सर्भर, खोलिएकीमसँग, र कुञ्जी प्रिन्ट गर्नुहोस्। हामी यो अन्तिम कन्फिगर गर्नेछौं।
@ एउटी N / a .1 75.147.182.214
@ एमएक्स रों 10 femmebabe.com
@ Ptr N / a femmebabe.com
@ टाँका N / a Txt @ v = spf1 MX IP75.14772.2142.2142.2142.2142.2142.2142.2142.2142 .2142
पूर्वनिर्धारित ._बिमी टाँका N / a V = BIMI1; l = https: //femmebababe.com/amia/stmababababe.svg
_डमाक टाँका N / a v = darmarc1; p = कुनै पनि छैन
प्रेषक ._मोक
टाँका
N / a
अब, हामी पोस्टफिक्सका लागि केहि जारी कन्फिगरेसन थप्न आवश्यक पर्दछौं। हामीले गर्नुपर्ने सबै कुरा हो कि हामी डोमेन नाम, femmebabe.com, तपाईंको डोमेन नामको साथ)। ओएस एक गरेर सबै कन्फ्रिगलाई हेरौं, र ओएसलाई कन्फिगरेसन भनिने डाइरेक्टरीमा स्थापना गर्नुहोस्, ओएस स्थापना गर्नका लागि।
nano config/etc_postfix_main.cf
यस पाठलाई फाईलमा थप्नुहोस्
# /Usr/sherre/postfix/pose.cf.cf.cf.cf.dive को लागि अधिक संस्करणको लागि
# डेबियन विशिष्ट: फाईल नाम निर्दिष्ट गर्दछ पहिले
# यसको फाईलको रेखा नामको रूपमा प्रयोग गर्न। डेबियन पूर्वनिर्धारित
# / आदि / मेलनाम हो।
# myorigin = / ETC / मेल नाम
# अपील गर्दै उडाइएको मुडीको काम हो।
# "ढिलाइ मेल" चेतावनीलाई उत्पन्न गर्न अर्को लाइन
# ढिलाइ_वर्निंग_ बखत = HHH
# Http://www.postfix.org/ompathation/compate_dreve.html.html - 3.6 मा पूर्वनिर्धारित
# ताजा स्थापनाहरू।
# Tls प्यारामिटरहरू
# मिटर कन्फिगरेसन
अर्को कन्फिगर!
nano config/etc_postfix_master.cf
यी लाइनहरू थप्नुहोस्:
#
# पोष्टफिक्स मास्टर प्रक्रिया कन्फिगरेसन फाइल। ढाँचामा विवरणहरूको लागि
# फाईल को, मास्टर ()) म्यानुअल पृष्ठ (CON) म्यानुअल पृष्ठ (MON MAL 8 मास्टर "वा
# अन-लाइन: HTTP://www.postfix.org/mastm.5.html)।
#
# यस फाईल सम्पादन गरेपछि "पोष्टफिक्स पुन: लोड" कार्यान्वयन गर्न नबिर्सनुहोस्।
#
# ====================================================
# सेवा प्रकार निजी Univerv chroot wakep Makeproc कमाण्ड + आर्जन
# (हो) (हो) (होईन) (कहिले पनि) (100)
# ====================================================
# SMTP Inet n - y - 1 Postscreen
# SMTPD पास - - y - - SMTPD
# Dnsblog Unix - - y - 0 DNSBLOG
# tllsproxy Unix - - y - 0 Tlsproxy
# एउटा छनौट गर्नुहोस्: लूपब्याक ग्राहकहरूको लागि मात्र सबमिशन सक्षम गर्नुहोस्, वा कुनै ग्राहकको लागि।
# 127.0.0.0.subemition nete n - y - - SMTPD
# -o Syslog_name = postfix / सबमिशन
# -o SMTPD_Tls_SECUPTERESTERY_LEVEL = ईन्क्रिप्ट गर्नुहोस्
# -o Smtpd_sasl_uth_uth_enne = हो
# -o SMTPD_Tls_T_uth_only = हो
# -o SMTPD_REGET_ULICICICICICICE = होईन
# -O SMTPD_LETINIT_CACTICE = $ Mua_lignie_centlestses
# -o Smtpd_hel_helive = $ mua_hela_hallirpses
# -O SMTPD_SEDENT_SEDERICE = $ Mua_sewer_sterynesses
# -O SMTPD_RECCIPIPICICIPEICTICE =
# -o SMTPD_REWRY_CALLYSIRS = परमिट_सस्ल_असुन्चाइज, अस्वीकार गर्नुहोस्
# -o Baber_macroo_dae_damon_ame = सुरु
# एउटा छनौट गर्नुहोस्: लुपब्याक ग्राहकहरूको लागि मात्र स्मर्ट्स सक्षम गर्नुहोस्, वा कुनै ग्राहकको लागि।
# 127.0.0.0.SMTPS INTEN N - y - - SMTPD
# SMTPS INDE N - y - y - SMTPD
# -o Syslog_ame = postfix / SMTPS
# -o SMTPD_Tls_WPrapperode = हो
# -o Smtpd_sasl_uth_uth_enne = हो
# -o SMTPD_REGET_ULICICICICICICE = होईन
# -O SMTPD_LETINIT_CACTICE = $ Mua_lignie_centlestses
# -o Smtpd_hel_helive = $ mua_hela_hallirpses
# -O SMTPD_SEDENT_SEDERICE = $ Mua_sewer_sterynesses
# -O SMTPD_RECCIPIPICICIPEICTICE =
# -o SMTPD_REWRY_CALLYSIRS = परमिट_सस्ल_असुन्चाइज, अस्वीकार गर्नुहोस्
# -o Baber_macroo_dae_damon_ame = सुरु
# 628 ITEN N - y - y - QMQPD
# QMGR UNIX N - एन 30000 1 oqmer
# -O SMTP_ HETPLO_ डेमोटआउट = -o SMTP_conneCT_ डेटआउट =।
#
# ====================================================
# गैर-पोस्टफिक्स सफ्टवेयरमा इन्टरफेसहरू। म्यानुअल जाँच गर्न निश्चित हुनुहोस्
# गैर-पोस्टफिक्स सफ्टवेयर को पृष्ठहरु पत्ता लगाउन को लागी के विकल्पहरू पत्ता लगाउन।
#
# तलका धेरै सेवाहरूले पोष्टफिक्स पाइप ()) डेलिभरी प्रयोग गर्दछ
# एजेन्ट। पाइप ()) Man) {प्राप्तकर्ता} को बारे मा जानकारी को लागी एक)
# र अन्य सन्देश खाम विकल्पहरू।
# ====================================================
#
# मासिड। विवरणका लागि पोष्टफिक्स म्याडरोफरफेड फाइल हेर्नुहोस्।
# मुख्य .cf मा पनि निर्दिष्ट गर्नुहोस्: masedogap_destionstion_recipient_limit = 1
#
#
# ====================================================
#
# भर्खरको कोरस संस्करणहरूले अवस्थित "LMTP" मास्टर.CF प्रविष्टि प्रयोग गर्न सक्दछ।
#
# साइरस.conf मा निर्दिष्ट गर्नुहोस्:
# LMTP CMD = "LMTPD -A" सुन्नुहोस् = "स्थानीयहिस्ट: LMTP" प्रोटो = TCP4
#
# निम्न मध्ये एक वा बढि मुख्य
# मेबक्स_ ट्यूटरेन्सपोर्ट = LMTP: Inets: लोशेस्ट
# भर्चुअल_ईट्रान्सपोर्ट = LMTP: INET: LODHOTH: लोश
#
# ====================================================
#
# साइरस 2.1.5 (AMOS Gouuex)
# मुख्य.cf मा पनि निर्दिष्ट गर्नुहोस्: साइरस_डिस्टेसन_ रिभलिसिटिलिसी_बिलिट = 1
#
# साइरस युनिक्स - N N - पाइप
# झण्डा = ड्रक्स प्रयोगकर्ता = साइरस अर्जेभ = / साइरस / बिन / डेलिभर-एआरटी - एम एम एम $ {सुविधा {अतिरिक्त {सुविधा
#
# ====================================================
# CARRUS मार्फत डेलिभरीको पुरानो उदाहरण।
#
# पुरानो-कोरेस UNIX - N एन - पाइप
# झण्डा = r प्रयोगकर्ता = साइरस अर्जेभ = / साइरस / बिन / डेलिभरी-एम $ {प्रयोग {प्रयोगकर्ता}
#
# ====================================================
#
# कन्फिगरेसन विवरणहरूको लागि पोस्टफिक्स युकेफ_डेटेम फाइल हेर्नुहोस्।
#
#
# अन्य बाह्य वितरण विधिहरू।
#
र खोन्डकिम कन्फिगरेसन। खोन्डकिमले डोमेन कुञ्जीहरूसँग ईमेल सर्भरहरू पहिचान गर्दछ जसले तिनीहरूलाई अधिक सुरक्षित बनाउन। यो बिना, मेल हस्ताक्षर गरिएको छैन र यसलाई इनबक्समा बनाउन सक्दैन।
nano config/etc_default_opendkim
यी लाइनहरू थप्नुहोस्:
# नोट: यो एक विरासत कन्फिगरेसन फाइल हो। यो खोंडकिम द्वारा प्रयोग गरिएको छैन
# व्यवस्थापन सेवा। कृपया सम्बन्धित कन्फिगरेसन प्यारामिटरहरू प्रयोग गर्नुहोस्
# /etc/phandkim.conf
#
# पहिले, एकले यहाँ पूर्वनिर्धारित सेटिंग्स सम्पादन गर्नेछ, र त्यसपछि कार्यान्वयन
# /lib/peankimiim.erveies.erveies INDRED ओभरराइड फाइलहरू उत्पन्न गर्न
# /etc/sefmyd/sifmy/sey.ervice.d/ioveride.conf र
# /etc/tmpfflies.d/pewendkim.conf। जबकि यो अझै सम्भव छ, यो अब छ
# /etc/peankim.conf मा सीधा सेटिंग्स समायोजित गर्न सिफारिस गरिएको।
#
# Daumon_ops = ""
# / VAT / STHOL / पोस्टफिक्स / रनफक्स / रनफ्लिम / Shoandkim को साथ एक अनलाइन सकेट प्रयोग गर्न
# एक chroot मा postfix:
# रुन्डर = / VE / Bept / spotl / postfix / रन / shodkkim
#
# वैकल्पिक सकेट निर्दिष्ट गर्न संयोजन
# नोट गर्नुहोस् कि यो सेटिंग ले खोन्डकिममा कुनै पनि सकेट मान ओभरराइड गर्नेछ
# पूर्वनिर्धारित:
# पोर्ट 54421 मा सबै इन्टरफेसहरू सुन्नुहोस्:
# सकेट = inete: 54321
# पोर्ट 1234545 मा लोपब्याक सुन्नुहोस्:
# सकेट = Ineet: 1234555555555 @ nehhost
# पोर्ट 12344545 मा 1 2.2.0.2.1 मा सुन्नुहोस्:
# सकेट = Inet: 12345452@192.0.2.2.1
nano config/etc_dovecot_conf.d_10-master.conf
यी लाइनहरू थप्नुहोस्:
# पूर्वनिर्धारित_पोरोगाली = 100
# पूर्वनिर्धारित_क्लिन्ट_बिलिट = 1000
# पूर्वनिर्धारित VSZ (भर्चुअल स्मृति आकार) सेवा प्रक्रियाहरूको लागि सीमा। यो मुख्यतया हो
# प्रक्रियाहरू समात्ने र मार्ने उद्देश्यले उनीहरूले खानु अघि चुहावट मेमोरी
# सबै कुरा।
# पूर्वनिर्धारित_VSZ_Ilimit = 266 मिटर
# लगइन प्रयोगकर्ता आन्तरिक रूपमा लगइन प्रक्रियाहरू द्वारा प्रयोग गरीन्छ। यो सबैभन्दा अविश्वसनीय छ
# डोभोकोट प्रणालीमा प्रयोगकर्ता। यसमा कुनै पनि चीजको पहुँच हुनु हुँदैन।
# पूर्वनिर्धारित_लोगिन_ॉगर = डोभोनर
# आन्तरिक प्रयोगकर्ता असुरक्षित प्रक्रियाहरू द्वारा प्रयोग गरीन्छ। यो अलग हुनु पर्छ
# लगइन प्रयोगकर्ता, ताकि लगइन प्रक्रियाहरूले अन्य प्रक्रियाहरूलाई व्याकुल गर्न सक्दैन।
# पूर्वनिर्धारित_निनर_सर = डोभोकोट
# पोर्ट = 143
# पोर्ट = 993
# SSL = हो
# नयाँ प्रक्रिया सुरु गर्नु अघि कनेक्शनहरूको संख्या। सामान्यतया
# एक मात्र उपयोगी मानहरू 0 (असीमित) वा 1 हुन्। 1 अधिक सुरक्षित छ, तर 0
# छिटो छ। <Drc / Wiki / लगइनेपोग्टी
# सेवा_count = 1
# प्रक्रियाहरूको संख्या जहिले पनि अधिक जडानहरूको लागि पर्खेर पर्खदै।
# प्रक्रिया
# यदि तपाईंले सेवा_counce = 0 सेट गर्नुभयो भने, तपाईंले यो बढ्नु पर्यो।
# Vsz_limit = $ पूर्वनिर्धारित_वस्ज_बिलिट
# पोर्ट = 110
# पोर्ट = 9955
# SSL = हो
# पोर्ट = 587
# Unet श्रोता सिर्जना गर्नुहोस् यदि तपाईं माथि युनिक्स सकेट प्रयोग गर्न सक्नुहुन्न
# Inet_lirster LMTP {
# सम्पूर्ण इन्टर्नेटका लागि LMTP देखि दृश्यमान बनाउनबाट बच्नुहोस्
# ठेगाना =
# पोर्ट =
# }
# धेरै जसो मेमोरी एमएमपी () आईएनजी फाईलहरूमा जान्छ। तपाईंले यो बढाउनु पर्ने हुन सक्छ
# सीमित गर्नुहोस् यदि तपाईंसँग विशाल मेलबक्सहरू छन्।
# Vsz_limit = $ पूर्वनिर्धारित_वस्ज_बिलिट
# अधिकतम IMAP प्रक्रियाहरूको संख्या (जडानहरू)
# प्रक्रिया_लिमिट = 1024
# अधिकतम POP3 प्रक्रियाहरू (जडानहरू) को संख्या
# प्रक्रिया_लिमिट = 1024
# अधिकतम SMTP सबमिशन प्रक्रियाहरूको संख्या (जडान)
# प्रक्रिया_लिमिट = 1024
# Auth_slast_phate यो पूर्वनिर्धारित द्वारा यो USDRDB सकेट पोइन्ट गर्दछ। यो सामान्यतया हो
# डोभोकोट-LDA, डुबुडम, सम्भवत IMAP प्रक्रिया, आदि प्रयोगकर्ताहरू छन्
# यस सकेटको पूर्ण अनुमतिहरू सबै प्रयोगकर्तानामहरूको सूची प्राप्त गर्न सक्षम छन् र
# सबैको प्रयोगकर्ताको प्रयोगकर्ताहरूको नतीजा पाउनुहोस्।
#
# पूर्वनिर्धारित 06666 मोडले कसैलाई सकेटमा जडान गर्न अनुमति दिन्छ, तर
# Usdrdb खोजहरू सफल हुनेछ यदि प्रयोगकर्ताले "uid" फिल्ड फिर्ता गर्दछ भने
# कलर प्रोसेस्को UID सँग मेल खान्छ। साथै यदि कलरको uid वा gids मेल खान्छ
# सकेटको UID वा GID लुकअप सफल हुन्छ। अरू केहि पनि असफलता पैदा गर्दछ।
#
# कलर पूर्ण अनुमतिहरू सबै प्रयोगकर्ताहरू हेर्नका लागि, मोड सेट गर्नुहोस्
# 06666666666 र डुगोकेट भन्दा अर्को केहिले कर्नेल लागू गर्दछ
# अनुमतिहरू (e.g. 0777 ले सबैलाई पूर्ण अनुमतिहरू अनुमति दिन्छ)।
# Authy श्रमिक प्रक्रिया पूर्वनिर्धारित द्वारा मूलको रूपमा चल्दछ, ताकि यो पहुँच गर्न सक्नुहुन्छ
# / आदि / छाया। यदि यो आवश्यक छैन भने, प्रयोगकर्ता परिवर्तन गर्नुपर्नेछ
# $ पूर्वनिर्धारित_निनटर_सर।
# प्रयोगकर्ता = जरा
# यदि आकृति प्रोक्सी प्रयोग भएको छ भने, मेल प्रक्रियाहरूमा यसको सकेटको पहुँच हुनुपर्दछ।
# उदाहरणका लागि: मोड = 0660, समूह = VAM र ग्लोबल मेल_acac_GRUSS_ DIMA
# मोड = 0600
# प्रयोगकर्ता =
# समूह =
फेरि, फेरि, यी सबै फाईलहरूमा डोमेन प्रतिस्थापन गर्न निश्चित गर्नुहोस्, Femmebabe.com, तपाईंले चयन गरेको डोमेनसँग। अर्को फाईल सम्पादन गर्नुहोस्, डोभोकोटको कन्फिग्राइग,
nano config/etc_dovecot_dovecot
र यी लाइनहरू थप्नुहोस्
## डोभोकोट कन्फिगरेसन फाईल
# यदि तपाईं हतारमा हुनुहुन्छ भने http://wiki2.dovecot.org/ququelcunclation हेर्नुहोस्
# "DOMONCOF -N" आदेशले परिवर्तन गरिएको सेटिंग्सको स्वचालित आउटपुट दिन्छ। यो प्रयोग गर
# डोभोकोट मेलिंग सूचीमा पोस्ट गर्दा प्रतिलिपि र पेस्टरिंग फाइलहरूको सट्टामा।
# '# 'चरित्र र सबै चीजहरू टिप्पणीहरू अनुसार व्यवहार गरिन्छ। थप ठाउँ
# र ट्याबहरू बेवास्ता गरियो। यदि तपाईं यी मध्ये कुनै एक स्पष्ट रूपमा प्रयोग गर्न चाहानुहुन्छ भने, राख्नुहोस्
# value inside quotes, eg.: key = "# चार र ट्रेलिंग हेड्सस्पेस "
# धेरै (तर सबै होइन) सेटिंग्स बिभिन्न प्रोटोकल र / वा / वा
# स्रोत / गन्तव्य आईपीएस सेटिंग्स भित्र राखेर सेक्सनहरू राखेर, उदाहरणका लागि:
# प्रोटोकल Intap}, स्थानीय 127.0.0.0.1}, टाढा 10.0.0.0.0.0 / /}
# पूर्वनिर्धारित मानहरू प्रत्येक सेटिंगको लागि देखाइन्छ, यो शोध गर्न आवश्यक छैन
# ती। यी यसका लागि अपवादहरू हुन्: कुनै सेक्सन (ई.g. नामस्पेस})
# वा प्लगइन सेटिंग्स पूर्वनिर्धारित द्वारा थपिएको छ, तिनीहरू उदाहरणको रूपमा सूचीबद्ध छन्।
# पथहरू केवल वास्तविक पूर्वनिर्धारितहरूको साथ मात्र उदाहरणहरू हुन् जुन कन्फिगर गरिएको छ
# विकल्पहरू। यहाँ सूचीबद्ध पथहरू कन्फिगर गरिएको - अप्राफिक्स = / USR को लागी हुन्
# --sssconfidir = / आदि - etculcalstilir = / va
# स्थापना प्रोटोकल सक्षम गर्नुहोस्
# आईपीएस वा होस्टहरूको अल्पविराम विभाजित सूची आईपीएस वा होस्टहरूको सूची जहाँ जडानहरूको लागि सुन्न सकिन्छ।
# "*" सबै आईपीभी4 ईन्टरफेसहरूमा सुन्दा, "::" सबै आईपीभी be इन्टरफेसहरूमा सुन्दा।
# यदि तपाईं गैर-पूर्वनिर्धारित पोर्टहरू वा अधिक जटिल निर्दिष्ट गर्न चाहानुहुन्छ भने,
# RESE.D.D.D / मास्टर। केटिन।
# सुन्नुहोस् = *, ::
# आधार डाइरेक्टरी जहाँ रनटाइम डाटा भण्डारण गर्ने।
# आधार_डीइर = / वान / रन / डोभोकोट /
# यस उदाहरणको नाम। बहु-कार्यक्रम सेटअप डोवडम र अन्य आदेशहरूमा
# -i <versate_amen> कुन उदाहरण प्रयोग गरेर कुन उदाहरण चयन गर्न सक्दछ (एक वैकल्पिक)
# to -c <CLSIG_PATH>)। उदाहरणको नाम गावोट प्रक्रियाहरूमा पनि थपिएको छ
# PS आउटपुटमा।
# उदाहरण_नाम = डोभोकोट
# ग्राहकहरूको लागि ग्रीटिंग सन्देश।
# लगइन_greeting = डोभोकोट तयार।
# अधिकृत नेटवर्क दायराहरूको स्थान विभाजित सूची। यी बाट जडानहरू
# IPS तिनीहरूको आईपी ठेगानाहरू र पोर्टहरू ओभरराइड गर्न अनुमति दिइन्छ (लगिंगको लागि र
# प्रमाणीकरण चेकहरूको लागि)। अक्षम_प्लेटनेट_ौत पनि बेवास्ता गरिएको छ
# यी नेटवर्कहरू। सामान्यतया तपाइँ तपाइँको IMAP प्रोक्सी सेवाकर्ताहरू निर्दिष्ट गर्नुहुन्छ।
# लगइन_tryed_netwarks =
# लगइन पहुँच चेक रिप्ले सकेट (E.g. tcpwap) को ठाउँ विभाजित सूची)
# लगइन_कस_th2sts =
# प्रोक्सी_मोएलको साथ = हो यदि प्रोक्सी गन्तव्य यी कुनै पनि आईपीएस को कुनै पनि मेल खान्छ भने, नगर्नुहोस्
# प्रोक्सी। यो सामान्य रूपमा आवश्यक छैन, तर उपयोगी हुन सक्छ यदि गन्तव्य
# IP E.g हो एक लोड सन्तुलनकर्ता आईपी।
# Auth_proxy_o =
# अधिक verbose प्रक्रिया शीर्षक देखाउनुहोस् (PS)। हाल प्रयोगकर्ता नाम देखाउँदछ र
# IP ठेगाना को लागी उपयोगी को लागी उपयोगी छ कि वास्तवमा imap प्रक्रियाहरु को उपयोग गरीरहेको छ
# (उदाहरणका लागि साझा मेलबक्सहरू वा यदि समान uid बहु खाताहरूको लागि प्रयोग गरिन्छ)।
# Verbose_proctle = होईन
# डोभोरामको मास्टर प्रक्रिया बन्द हुँदा सबै प्रक्रियाको हत्या गर्नुपर्दछ।
# यसलाई "होईन" भन्ने अर्थको अर्थ खोजी गर्नुको अर्थ हो कि डोभोकोट बिना अपग्रेड गर्न सकिन्छ
# अवस्थित ग्राहक जडानहरू जबरजस्ती गर्न जबरजस्ती गर्न (यद्यपि त्यो पनि हुन सक्छ
# एक समस्या यदि अपग्रेड ई। जी हो। एक सुरक्षा फिक्स को कारण)।
# शटडाउन_लिस्ट्स = हो
# यदि गैर-शून्य, डायवडम सर्भरमा धेरै जडानहरू मार्फत मेल आदेशहरू चलाउनुहोस्,
# यसको सट्टामा उनीहरूलाई सिधै प्रक्रियामा चलाउनुको सट्टा।
# डोभ्याडम_ वरकर_विउ = 0
# Unix सकेट वा होस्ट: पोर्ट डायवडम सर्भरमा जडानको लागि प्रयोग गरिएको
# डोभ्यान्डम_थिट_पथ = डोभोडम-सर्भर
# ठाउँ विभाजन गरिएको ठाउँ विभाजन गरिएको सूची जुन डोभोकोटमा सुरक्षित गरिन्छ
# स्टार्टअप र यसको सबै बच्चाहरूको प्रक्रियाहरूमा पार गर्नुहोस्। तपाईं पनि दिन सक्नुहुन्छ
# कुञ्जी = मान जोडीहरू सँधै विशिष्ट सेटिंग्स सेट गर्न।
# आयात_नभिरोनमेन्ट = TZ
##
## शब्दकोश सर्भर सेटिंग्स
##
# शब्दकोश कुञ्जी (मान सूचीहरू भण्डार गर्न प्रयोग गर्न सकिन्छ। यो धेरै द्वारा प्रयोग गरीन्छ
# प्लगइनहरू। शब्दकोश या त सीधा पहुँच गर्न सकिन्छ या त a
# शब्दकोश सर्भर। निम्न सेक्टर ब्लक नक्शा शब्दकोश नामहरू URIS मा
# जब सर्भर प्रयोग गरिन्छ। यो त्यसपछि URIS ढाँचामा सन्दर्भ गर्न सकिन्छ
# "प्रोक्सी :: <neame>"।
# कोटा = MYSQL: / 0 /DECYCOTECT/doveCot-SQL.conf.txt
# धेरै जसो वास्तविक कन्फिगरेसन तल समावेश हुन्छ। फाइलनामहरू हुन्
# पहिले उनीहरूको एएससीआईआई मान द्वारा क्रमबद्ध गरी त्यो क्रममा पार्स गरियो। 00-prefixes
# फाइलनामहरूमा अर्डरहरू बुझ्न सजिलो बनाउँदछ।
# एक कन्फिगरेसन फाईलले पनि त्रुटि दिन बिना समावेश गर्न कोसिस गर्न सक्छ
# यो फेला परेन:
# डोभोकुट सबै इनपुट जडानहरू सुन्न अनुमति दिन्छ (IPV4 / IPV6)
डोभोकोट प्रयोगकर्ताको लागि पासवर्ड थप्नुहोस्:
nano config/etc_dovecot_passwd
फाईलको पहिलो भाग, कोन अघि, प्रयोगकर्ता नाम हो। अन्तिम भाग, "YISPEWORD", पासवर्ड दर्शाउँछ जुन तपाईं आफ्नो मेल सर्भर दिन चाहानुहुन्छ।
team:{plain}yourpassword
अर्को, खोन्डिकम कन्फिग्राइग
nano config/etc_opendkim.conf
र यी लाइनहरू थप्नुहोस्:
# यो हस्ताक्षर र प्रमाणीकरणको लागि आधारभूत कन्फिगरेसन हो। यो सजिलै हुन सक्छ
# आधारभूत स्थापना अनुरूप अनुकूलित। खोँडिका.conf ()) हेर्नुहोस्
# /usr/sherre/pocabyiim/exumplemiame/pendkim.conf.suplefly पूर्णका लागि
# उपलब्ध कन्फिगरेसन प्यारामिटरहरूको कागजात।
# लगवा छैन
# साझा साइनिंग र प्रमाणिकरण प्यारामिटरहरू। डेबियन मा, "बाट" हेडर हो
# ओभरसाइज, किनकि यो प्राय: प्रतिष्ठा प्रणालीहरू द्वारा प्रयोग गरिएको परिचय कुञ्जी हो
# र यसैले केही सुरक्षा संवेदनशील।
# स्किन डोमेन, चयनकर्ता, र कुञ्जी (आवश्यक)। उदाहरण को लागी, हस्ताक्षर प्रदर्शन गर्नुहोस्
# "202020" चयनकर्ताको साथ "2020" (202._DOMAIDEKEY.EXAMEEMPLE.com)
# /etc/dkimekskysy/ppive.prive.pive.pive.perive। अधिक ग्रान्यता
# सेटअप विकल्पहरू /usrr /shree/doculy/pemim/eddmeme.eadkim मा फेला पार्न सकिन्छ।
# डोमेन उदाहरण.com.com
# चयनकर्ता 2020
# कीफिकहरू /etc/dc/dkimekskys/example.prive
# डेबियनियामा खोन्डेकीले प्रयोगकर्तालाई "खोल्किमम" को रूपमा चलाइरहेका छन्। 007 को एक पेमाक आवश्यक छ जब
# MTAS को साथ एक स्थानीय सकेटको प्रयोग गर्दै
# प्रयोगकर्ता (उदाहरणका लागि, पोष्टफिक्स)। तपाईंले समूहलाई "पोष्टफिक्स" प्रयोगकर्तालाई "पोष्टफिक्स" थप्न आवश्यक पर्दछ
# "खोन्डिकइम" त्यो अवस्थामा।
# MTA जडानको लागि सकेट (आवश्यक)। यदि MTA कोहरा जेल भित्र छ भने,
# यो सुनिश्चित हुनुपर्दछ कि सकेट पहुँच योग्य छ। डेबियन मा, पोस्टफिक्स मा रन
# एक chroot / var / splol / postfix, त्यसैले Unix सकेट हुनु पर्छ
# तलको अन्तिम लाइनमा देखाइएको रूपमा कन्फिगर गरियो।
# सकेट स्थानीय: / शामिलकेमिम / कोप्राइम
# सकेट मसी: 88 8891 @ ninghost
# सकेट मसी: 88 8891
# को लागी होस्टहरू प्रमाणितको सट्टामा हस्ताक्षर गर्न, पूर्वनिर्धारित 127.0.0.1 हो। हेर
# ओभरन्डिम ()) को अपरेशन सेक्सन अधिक जानकारीको लागि।
# आन्तरिकहीूह 1 242.168.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.16.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.012
# ट्रस्ट एन्चरले DNESSC सक्षम गर्दछ। डेबियनमा, ट्रस्ट ए ch ्कर फाईल प्रदान गरिएको छ
# प्याकेज dns-मैट-डाटा द्वारा।
# Sporders 127.0.0.0.1
# नक्शामा मानचित्रबाट स्किन गर्न प्रयोग गरिएका ठेगानाहरू मा नक्शा
# आन्तरिक होस्टहरूको सेट जसको मेल हस्ताक्षर गर्नुपर्दछ
nano config/etc_default_opendkim
र यी लाइनहरू थप्नुहोस्
# नोट: यो एक विरासत कन्फिगरेसन फाइल हो। यो खोंडकिम द्वारा प्रयोग गरिएको छैन
# व्यवस्थापन सेवा। कृपया सम्बन्धित कन्फिगरेसन प्यारामिटरहरू प्रयोग गर्नुहोस्
# /etc/phandkim.conf
#
# पहिले, एकले यहाँ पूर्वनिर्धारित सेटिंग्स सम्पादन गर्नेछ, र त्यसपछि कार्यान्वयन
# /lib/peankimiim.erveies.erveies INDRED ओभरराइड फाइलहरू उत्पन्न गर्न
# /etc/sefmyd/sifmy/sey.ervice.d/ioveride.conf र
# /etc/tmpfflies.d/pewendkim.conf। जबकि यो अझै सम्भव छ, यो अब छ
# /etc/peankim.conf मा सीधा सेटिंग्स समायोजित गर्न सिफारिस गरिएको।
#
# Daumon_ops = ""
# / VAT / STHOL / पोस्टफिक्स / रनफक्स / रनफ्लिम / Shoandkim को साथ एक अनलाइन सकेट प्रयोग गर्न
# एक chroot मा postfix:
# रुन्डर = / VE / Bept / spotl / postfix / रन / shodkkim
#
# वैकल्पिक सकेट निर्दिष्ट गर्न संयोजन
# नोट गर्नुहोस् कि यो सेटिंग ले खोन्डकिममा कुनै पनि सकेट मान ओभरराइड गर्नेछ
# पूर्वनिर्धारित:
# पोर्ट 54421 मा सबै इन्टरफेसहरू सुन्नुहोस्:
# सकेट = inete: 54321
# पोर्ट 1234545 मा लोपब्याक सुन्नुहोस्:
# सकेट = Ineet: 1234555555555 @ nehhost
# पोर्ट 12344545 मा 1 2.2.0.2.1 मा सुन्नुहोस्:
# सकेट = Inet: 12345452@192.0.2.2.1
जब हामी हाम्रो पोष्टफिक्स सर्भर सेट अप गर्न तयार हुन्छौं, हामी तल कोड चलाउनेछौं, उपयुक्त डोमेन नाम इम्बेड गरिएको। स्क्रिप्ट सिर्जना गरेर सुरू गर्नुहोस्
touch scripts/postfixsetup
sudo chmod a+x scripts/postfixsetup
nano scripts/postfixsetup
अब, नानोमा पाठ सम्पादक, यस फाईल सम्पादन गर्नुहोस् त्यसैले यसले तपाईंको डोमेन नाम femmebababe.com को सट्टामा तपाईंको डोमेन नाम समावेश गर्दछ।
# ! / बिन / बाश
# सेटअप पोस्टफिक्स
अब, पूर्ण स्क्रिप्ट, खोन्डिकेम र डोभोकोट कन्फिगर गर्न पूर्ण स्क्रिप्ट चलाउनुहोस्।
./scripts/postfixsetup
एकपटक यस स्क्रिप्ट चलिरहेको छ, अन्तिम रेखाको प्रतिलिपि गर्नुहोस् यसले तपाईंलाई प्रिन्टहरू प्रिन्टहरू प्रतिलिपि गर्दछ र यसलाई तपाईंको dns कन्फिगरेसन एस्टोनोन। यो अपरेन्डिक कुञ्जी हो तपाईंको डोमेन सुरक्षित मेल पठाउँदा।
अद्भुत! केही दिन भित्र, तपाईं सर्भरबाट मेल पठाउन सक्षम हुनुपर्दछ प्रदान गर्नुपर्दछ सबै सहि कन्फिगर गरिएको छ।
यदि तपाईंले भर्खर आफ्नो मेल सर्वरको लागि DNS कन्फिगर गर्नुभयो भने, यसले रेकर्डको लागि 722 घण्टा भन्दा कम लिनु पर्छ। यो सामान्यतया धेरै छिटो हुन्छ। तपाईं जाँच गर्न सक्नुहुनेछ कि यदि तपाईंको सर्वरले यो आदेश प्रयोग गरेर काम गरिरहेको छ भने, तपाईंको ईमेल प्रदान गर्दछ:
echo "test" | mail -s "Test Email" youremail@gmail.com
यदि सबै कुरा सही रूपमा काम गरिरहेको देखिन्छ भने, तपाइँ तपाइँको सर्भर संग ईमेल पठाउन सक्षम हुनु पर्छ। यदि यसले काम गरिरहेको छैन भने, लगहरू हेर्नको लागि प्रयास गर्नुहोस् त्रुटि के हुन सक्छ हेर्न।
tail –lines 150 /var/log/mail.log
यसले सर्वरले पठाएको मेलको बारेमा वार्ता जानकारी प्रस्ताव गर्दछ र यो राम्रोसँग काम गरिरहेको छ कि छैन। तपाईं आफ्नो इनबक्समा ईमेल हेर्न सक्षम हुनुपर्दछ, यदि यो त्यहाँ छैन भने, तपाईंको स्पाम फोल्डर जाँच गर्नुहोस्।
तपाईंले आफ्नो सेटिंग्स। के तपाईंको सेटिंग्स को कन्फिगर गर्न पनि आवश्यक छ ताकि तपाईंको ईमेल सर्भरले तपाईंको DJango अनुप्रयोग, परियोजनासँग कुरा गर्न सक्दछ। तपाईंको सेटिंग्स मा यी लाइनहरु थप्नुहोस् वा बदल्नुहोस्
EMAIL_HOST_USER = 'team' # 'प्रेम @maamasheen.com'
ध्यान दिनुहोस् कि हामी पासवर्ड प्राप्त गर्न कन्फिगर फाइल प्रयोग गर्दैछौं। यस फाईललाई सेटिंग्स मा लोड गरौं, फाईल को धेरै सुरुमा .:
# खुला र लोड कन्फिग
यो फाईल सिर्जना गरौं र यसलाई एक गोप्य कुञ्जी थप्नुहोस्, साथै मेल पासवर्ड। गोप्य कुञ्जी उत्पन्न गर्न, यो कमाण्ड प्रयोग गर्नुहोस्, अन्तमा जुन लम्बाई अन्तमा जुन तपाईं अन्तमा मनपर्दछ:
openssl rand -base64 64
अब, पाठ प्रतिलिपि गर्नुहोस् जुन overpsel उत्पन्न र सम्पादन गरी सम्पादन र सम्पादन / खेत / सम्पादन गर्नुहोस्
sudo nano /etc/config.json
तपाईंको फाईलमा निम्न लाइनहरू थप्नुहोस्, कुञ्जीको साथ जुन गोप्य कुञ्जीको रूपमा उत्पन्न हुन्छ।
{
"SECRET_KEY": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX-generated-using-openssl)",
"EMAIL_HOST_PASSWORD": "yourpassword"
}
JOSS HATT ढाँचा प्रयोग गर्न सजिलो छ र सजिलो छ, हामी हाम्रो प्रोजेक्टमा पनि प्रयोग गर्न चाहने अन्य कुञ्जीहरू घोषणा गर्न सक्दछौं र अन्य प्रयोगकर्ताहरूले तिनीहरूलाई लेख्न सक्दैनन् र त्यसैले तिनीहरू हाम्रो प्रोजेक्ट निर्देशिकाबाट एक्लै पढ्न सक्दैनन्। यो एपीआई कुञ्जीका लागि सिफारिश गरिएको छ, जसको हामी यहाँ थोरै भन्दा बढि प्रयोग गर्नेछौं।
तपाईं पनि तपाईंको प्रोजेक्ट ब्याक अप गर्न चाहनुहुन्छ कि सबै कुरा बचत भयो भनेर निश्चित गर्नुहोस् र तपाईं आफ्नो काम पछि पुन: प्राप्ति गर्न सक्षम हुनुहुनेछ यदि तपाईं अब सर्वर भाँडामा लिन चाहनुहुन्न भने।
sudo backup
अब, वेब सर्भरबाट एक HTML ईमेल पठाउने प्रयास गर्नुहोस्, कमाण्ड लाइनबाट एक पठाइएको प्रदान गरिएको छ। शेलमा तपाईंको प्रयोगकर्ता उदाहरण क्वेरी गर्नुहोस्, र DJango मार्फत प्रयोगकर्तालाई HTML ईमेल पठाउनुहोस्। मेरो नाम कोड, शार्लोट, तपाईंको प्रयोगकर्ता नाममा परिवर्तन गर्नुहोस्।
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()
यदि पहिलो कमाण्डले काम गर्दैन भने, निश्चित गर्नुहोस् कि निश्चित गर्नुहोस्
source venv/bin/activate
प्रदान गरिएको सबै सहि सेट अप गरिएको छ, तपाईं अब आफ्नो वेब अनुप्रयोग द्वारा पठाइएको तपाईंको मेलबक्समा स्वागत ईमेल पाउनुहुनेछ। राम्रो काम! तपाईं लामो यात्रा गर्नुभयो।
म थप्न चाहान्थें, यदि तपाईं यस्तै परियोजनामा काम गरिरहेको छ भने कुनै पनि त्रुटिहरूसँग संघर्ष गरिरहनु भएको छ भने, उत्तरहरूको खोजी गर्न र मद्दतको लागि सोध्न नहिचकिचाउनुहोस्। गुगल, अन्य खोजी ईन्जिनहरू मध्ये, प्रोग्राम गर्न मद्दतको लागि खोजी गर्न ठूला स्रोतहरू हुन्। केवल त्रुटिको लागि खोजी गर्नुहोस् जुन तपाईं प्राप्त गर्दै हुनुहुन्छ, र तपाईं देख्न सक्नुहुनेछ कि अरू मानिसहरूले कसरी समस्या समाधान गर्छन्। साथै, तपाइँ मलाई सम्पर्क गर्न स्वागत छ, तपाइँका शिक्षकहरु, तपाइँका शिक्षकहरू, प्रोफेसरहरू, शिक्षकहरू, ईन्टरनेटमा उपलब्ध छन् वा अन्य संसाधनहरू फेरि वा परामर्शहरू छन् जुन तपाईंले अनुभव गरिरहनु भएको मुद्दाहरूको लागि उपलब्ध छ। मैले बुझें कि यो सजिलो छैन, तर तपाईंले यस टाढा पढ्नु भएको छ र कुनै कोड लेखिएको छैन भने पनि, तपाईं स्क्र्याचबाट वेब अनुप्रयोग निर्माणको बारेमा धेरै कुरा सिक्दै हुनुहुन्छ। आफैंलाई पछाडि राख्नुहोस्, तपाईं एक महान काम गर्दै हुनुहुन्छ।
यो तेस्रो संस्करण वेब विकास गाइड पढ्न समय लिनु भएकोमा धन्यवाद। भविष्यका संस्करणहरूमा, म कागजातको सुरूमा छलफल गरिएका सबै महत्त्वपूर्ण उदाहरणहरू समावेश गर्दछु र हामी सफ्टवेयर र हार्डवेयर विकासको संसारमा धेरै गहिराइमा डुबाउँदछौं। आउँदै गरेको कुराको लागि ट्युन रहनुहोस्, र म तपाईंलाई अविश्वसनीय सफ्टवेयर बनाउने भनेर सिकाउने आशा गर्दछु। अर्को संस्करणमा भेटौंला!
ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
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.
ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
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.
ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
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.
.ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
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.
ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
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.
ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
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.
ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
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.
ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
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.
ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
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.
ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
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.
ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
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.
ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
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.
.ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
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.
ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
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.
ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
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.
ved Daisy / Utsikt | Kjøpe | Kjøp med cryptocurrency
https://glamgirlx.com
https://glamgirlx.com -
Legg meg et tips i Bitcoin ved å bruke denne adressen: 3KhDWoSve2N627RiW8grj6XrsoPT7d6qyE