عملی ویب پر مبنی گہری لرننگ اور سیکیورٹی مثال کے طور پر تیسرا ایڈیشن شارلٹ ہارپر 3 جولائی ، 2024 3 جون ، 2025 کو اپ ڈیٹ/تبدیل کیا گیا
پیش گوئی:
ویب کے لئے سافٹ ویئر بنانے میں سیکیورٹی کے تحفظات کسی بھی ویب ڈویلپر کے منصوبے اور عملدرآمد کا ایک اہم حصہ ہیں جبکہ ایک پروٹو ٹائپ انجینئرنگ کرتے ہیں جو قابل اعتماد ، مستحکم اور عملی مقاصد کے لئے مفید ہے۔ ڈوم (دستاویز آبجیکٹ مارک اپ) ، اس کے ساتھ ایچ ٹی ایم ایل ، جاوا اسکرپٹ ، اور سی ایس ایس کے ساتھ ساتھ بیکینڈ سافٹ ویئر پر عمل درآمد کے ساتھ ساتھ ازگر ، سی/سی ++ ، جاوا اور باش کو نافذ کرنے والے بیک اینڈ سافٹ ویئر کو ویب ڈویلپرز کو آزادی اور طاقت کے لئے ایک وسیع اقسام کے منصوبوں کو پیدا کرنے کے لئے آزادی اور طاقت فراہم کرتے ہیں جو استعمال اور فعالیت ، تصویری اور کردار کی مدد سے آسانی فراہم کرتے ہیں ، اور اس میں آسانی فراہم کرتے ہیں ، اور اس میں آسانی پیدا کرتے ہیں ، اور اس میں آسانی پیدا ہوتی ہے ، اور اس میں آسانی پیدا ہوتی ہے ، اور اس میں آسانی پیدا ہوتی ہے۔ اختتامی صارف وقت کو مارنے یا انٹرنیٹ پر کچھ کرنے کے خواہاں ، عام طور پر ٹچ اسکرین اسمارٹ فون ڈیوائس پر۔ زیادہ تر لوگوں کو یہ بھی معلوم نہیں ہوگا کہ جب وہ شروع سے ہی ویب سائٹ بنانا چاہتے ہیں تو وہ کہاں سے شروع کرنا چاہتے ہیں ، وہ کسی اور شخص کی ویب سائٹ پر شروع کریں گے اور فعالیت ، انحصار ، استعمال میں آسانی اور خاص طور پر تخلیقی صلاحیتوں میں کچھ محدود چیز تیار کریں گے جب ان کے پاس تمام جدید طاقتور ٹولز ہوسکتے تھے تاکہ ان کے تصرف میں وقت کی ضرورت کے بغیر کسی مفید چیز کو ضائع کرنے کے لئے کچھ مفید بنایا جاسکے ، اور خاص طور پر سافٹ ویئر کے استعمال کے ل software کچھ سامان کی ادائیگی کے لئے کچھ فائدہ اٹھانا۔ اگر آپ کے پاس اس کتاب کو پڑھنے اور یہ جاننے کے لئے کچھ منٹ ہیں کہ میں آپ کو کیا سکھانا چاہتا ہوں ، یا یہاں تک کہ مجھ سے ذاتی طور پر اپنے مقاصد کے بارے میں بات کرنا اور صحیح سمت میں کچھ رہنمائی حاصل کرنے کے لئے ، اور اپنے سافٹ ویئر کو کوڈ اور لکھنے کے لئے سیکھنے کے لئے حوصلہ افزائی کرتا ہوں ، اس کتاب کو گھر لے جاؤں اور اگلی بااثر ، طاقتور ، ہموار اور اہم ویب ایپلی کیشن کی تعمیر کے ل some کچھ وقت آپ کی ضرورت کے مطابق اور آپ کی ضرورت ہے۔
میرے بارے میں: میں سی/سی ++ ، جاوا ، ازگر ، ایچ ٹی ایم ایل ، سی ایس ایس اور جاوا اسکرپٹ میں وسیع پیمانے پر تجربہ رکھنے والا ایک سافٹ ویئر ڈویلپر ہوں۔ میں ایسی ویب سائٹ بناتا ہوں جو لوگ استعمال کرنا چاہتے ہیں ، جانا چاہتے ہیں ، اور یہاں تک کہ صرف سیکھنے ، دوبارہ بنانے اور مارنے کے لئے استعمال کرنے کا عادی ہوجاتے ہیں ، اور سب سے اہم بات یہ ہے کہ میں سافٹ ویئر فروخت کرتا ہوں۔ اگر آپ کے پاس یہ خیال تھا کہ آپ کس طرح ویب سائٹ دیکھنا چاہتے ہیں اور کام کرنا چاہتے ہیں تو ، آپ میری مدد کرنے کے لئے تیار تھے تاکہ میں آپ سے ملیں جب میں آپ کی اپنی ضروریات کو پورا کرسکتا ہوں ، اور آپ خود ہی ویب سائٹ چلانے کے اخراجات کو پورا کرنے پر راضی ہوں گے ، میں آپ کو اگلا یوٹیوب ، ٹیکٹوک ، ٹویٹر ، گوگل ، یا اس سے بھی ایک ہائی ٹیک سیکیورٹی ایپ بناؤں گا جس میں صرف آپ ہی رسائی حاصل کرسکتے ہیں۔ آپ کو اپنا وقت فروخت کرنے کی کوشش کرنے کے بجائے ، میں آپ کو خریدنے کی کوشش کر رہا ہوں: میں آپ کو پہلے سے موجود معلومات کے ساتھ خود ایک ایپ (ویب سائٹ) بنانے میں بات کرنا چاہتا ہوں ، اور آپ کو یہ سکھاتا ہوں کہ آپ کو ایک آزاد سافٹ ویئر ڈویلپر ، کاروباری بننے کی ضرورت ہے ، جس کی آپ جس شعبے میں ایک کامیاب کیریئر کی رہنمائی کرتے ہیں۔ اور مجھے واضح ہونے دو ، میں جو تعلیم آپ کو دیتا ہوں وہ غیر رسمی ہوگا۔ آپ اسکول جاسکتے ہیں اور یہ سب باضابطہ تعلیم کے ساتھ سیکھ سکتے ہیں ، یا اسکول میں اس کتاب کو بھی پڑھ سکتے ہیں ، اپنی اسائنمنٹس کو مکمل کرسکتے ہیں ، اور اپنی تعلیم سے بہت بڑا سودا لے سکتے ہیں ، لیکن میں آپ کو باضابطہ طور پر گرم سیٹ پر نہیں ڈالوں گا اور آپ سے اسائنمنٹس کو مکمل کرنے کے لئے نہیں کہوں گا۔ میں آپ کا پروفیسر نہیں ہوں ، آپ میرے بارے میں ایک دوست کی طرح سوچ سکتے ہیں جو آپ کی اپنی ذاتی کامیابی سے چلنے والے کیریئر کی طرف آپ کی رہنمائی کرنا چاہتا ہے۔ اور میں آپ کو کامیابی بھی نہیں بیچ رہا ہوں ، آپ کو اپنے وقت کے ساتھ اسے خریدنے کی ضرورت ہوگی۔ کوڈ کو سیکھنے میں کھڑی سیکھنے کا وکر ہوتا ہے اور کبھی بھی آسان نہیں تھا ، یا یہاں تک کہ سمجھا جانا بھی تھا۔ آپ کو اتنی محنت کرنے کی ضرورت ہے جتنا آپ ممکنہ طور پر کر سکتے ہو اور کوشش کرتے رہیں اور ناکام اور دوبارہ کوشش کرتے رہیں یہاں تک کہ جب آپ خود ایپس کو سیکھنے اور بنانے کے لئے مایوس ہوں۔ یہ خود کوڈ کی نوعیت میں ہے۔ کوڈ ایک مرتب کے ذریعہ چلایا جاتا ہے جو پروگرامر کو غلطی کے پیغامات دینے کے لئے ڈیزائن کیا گیا ہے ، اور یہ آپ کو کوڈ کرنے کا طریقہ سکھائیں گے ، یہاں تک کہ اگر آپ محض اپنے سرچ انجن میں غلطی کو کاپی کررہے ہیں اور دوسرے لوگوں کی مثالوں کو پڑھ رہے ہیں۔ اور مجھے یہ کہنا ضروری ہے ، آپ کو ایپ بنانے کے لئے انتہائی امیر ، ہوشیار ، کامیاب ، یا اس سے بھی تفصیل پر مبنی یا منظم ہونے کی ضرورت نہیں ہے۔ کمپیوٹر آپ کے لئے اس تنظیم کا خیال رکھتا ہے۔ آپ کو صرف آزمائشی اور غلطی پر قائم رہنے ، توجہ برقرار رکھنے اور اپنے کاموں پر سخت محنت کرنے کی ضرورت ہے ، اور آپ کے کاموں میں آپ کو ایک بہت ہی کامیاب کیریئر ملے گا۔
میں کون ہوں: مجھے احساس ہے کہ آخری سیکشن سیکھنے کے بارے میں زیادہ تھا اور آپ اس کتاب سے ایک راستہ اختیار کرتے ہیں۔ میں بالکل کون ہوں؟ یہ ایک پیچیدہ سوال ہے۔ میں خود اس پر واضح نہیں ہوں ، کیوں کہ میں طبی حالات سے دوچار ہوں جو میرے لئے بھی اوقات میں اس کتاب کا کوڈ یا لکھنا مشکل بنا سکتا ہے ، جبکہ سماجی کاری اور شناخت کے امور کے ساتھ چیلنجز پیش کرتے ہیں جو میری زندگی کو مزید مشکل بناتے ہیں جب خود کو متعارف کروانے کی بات آتی ہے۔ مختصرا. ، اگر آپ یہ کتاب پڑھ رہے ہیں تو ، آپ اسے گھر لے آئے کیونکہ آپ اس کے ذریعے پلٹ گئے اور سوچا کہ یہ کارآمد ہے ، یا یہاں تک کہ اگر آپ ابھی تک یہ پڑھتے ہیں تو ، میں آپ کے لئے ایک ایسا ہی ذہن والا فرد ہوں جو آپ کو ہر کام میں کامیاب دیکھنا چاہتا ہے۔ میں خود ایک انجینئر ہوں ، ایک سافٹ ویئر ڈویلپر ، اور ایک طالب علم ہوں ، اور میں یہ کتاب دوسرے طلباء کے لئے لکھ رہی ہوں جو سافٹ ویئر کی ہینڈ بک رکھتے ہوئے اپنی زندگی کو آسان بنانا چاہتے ہیں جس کی وجہ سے انہیں ایک بڑی پہیلی کی طرح ایک ساتھ مل کر ایک کام کرنے ، مفید ، بڑے ، فعال ، ہم آہنگی اور مشغول ایپ میں کاپی کرنے کی مثال دے کر اپنی زندگی کو آسان بنانے کی ضرورت ہے جو کامیابی کو آگے نہیں بڑھا سکتا ہے۔ بڑے پیمانے پر ، میں یہی کرتا ہوں: میں اپنے اور دوسرے لوگوں کو کامیاب ہونے میں مدد کے لئے ایپس بناتا ہوں۔ میں بھی مصنف ہوں ، حالانکہ یہ میری پہلی اشاعت ہے جس کا میں اپنے پورٹ فولیو کو ایک مفید دستاویز میں ایک ساتھ رکھنے کے لئے مکمل کرنے کا ارادہ رکھتا ہوں ، اور میں بھی ایک فنکار ہوں۔ میں آپ کو یہ تسلیم کروں گا ، میں ایک عجیب شخص کی طرح ہوں۔ میں کامل نہیں ہوں ، میں نے قانون کے ساتھ ان کا مقابلہ کیا تھا یہاں تک کہ مجھے کالجوں اور یونیورسٹیوں کو چھوڑنے اور ریاستوں کو چھوڑنے کی راہنمائی کرنے کے لئے زیادہ کامیابی کے ساتھ اپنے لئے نام بنانے کی کوشش کی گئی ہے۔ میں پیدائش کے وقت ایک عورت ہوں ، میں میک اپ پہنتا ہوں ، اپنی تصاویر کھینچتا ہوں ، کپڑے پہنتا ہوں اور دوسری خواتین کے لباس پہنتا ہوں ، اور میں فطرت کے لحاظ سے ایک خاتون کی حیثیت سے اپنے آپ کو شعور رکھتا ہوں۔ ماضی میں مجھے دوسرے لوگوں کے ساتھ مسائل درپیش ہیں جو لکھنے اور ویب ایپ بنانے میں جدوجہد کا باعث بنتے ہیں ، اور میں معذرت چاہتا ہوں کہ میں اس کتاب کو جلد ہی آپ کے ہاتھوں میں نہیں لاسکا: آپ کو اس کی ضرورت ہے۔ آپ کوڈ کو پڑھنا اور لکھنا چاہیں گے جو میری طرح لگتا ہے اور میری طرح کام کرتا ہے اور وہی کام کرتا ہے لیکن اس سے بھی بہتر ہے ، کیوں کہ اگر آپ اپنے کی بورڈ کو میش کرنے کے بجائے اس کتاب کو خریدنے کا متحمل ہوسکتے ہیں جیسے میں صرف اس کے لئے رقم پوچھنے والی کتاب بنانے کے لئے کرتا ہوں تو ، آپ کے پاس وسائل موجود ہیں جن کی آپ کو اپنی زندگی میں کامیاب ہونے کی ضرورت ہے۔ میرے پاس فیملی کے بڑے ہونے ، صحت کی صورتحال ، ڈاکٹروں ، میڈیا اور قانون کے ساتھ ہر طرح کے مسائل تھے ، اور میرا ضابطہ اس جدوجہد کی گہرائی سے عکاسی کرتا ہے جو ایک منقسم اور مایوس دنیا میں حقوق نسواں اور خواتین فطرت ہے۔ تاہم ، یہ کتاب ایسی چیز ہے جس کی مجھے گہری پرواہ ہے ، میرے بچے ، میرے پورٹ فولیو اور میری معاش ، لہذا میں آپ کے خیال کی تعریف کرتا ہوں جب آپ متن کو گھر لے جاتے ہیں اور مجھ سے سیکھنے کے ل carefully احتیاط سے اس پر تاکید کرتے ہیں۔ براہ کرم یہ بات ذہن میں رکھیں کہ میں کامل نہیں ہوں ، اس کتاب میں غلطیاں ، نظرثانی اور نئے ایڈیشن ہوں گے ، اور آپ کو اپنی تحریر کے ساتھ کامیاب تجربہ حاصل کرنے کے ل your اپنے منطقی دماغ کے ساتھ جتنا ممکن ہو آپ کو بہتر طور پر سوچنے کی ضرورت ہوگی۔ نیز ، یہ بھی سمجھیں کہ میرا مطلب آپ کے لئے اچھا ہے یہاں تک کہ جب آپ کو لکھنے کے دوران چیلنجوں کا سامنا کرنا پڑتا ہے۔ اس کے بارے میں اس طرح سوچیں: جب آپ ڈیجیٹل اسپیس میں ممکنہ طور پر تصور کرنے کے لئے کمپیوٹر سسٹم کو کرایہ پر لے سکتے ہیں ، آپ کو درپیش تمام معلومات کو ذخیرہ کرسکتے ہیں ، اس کا تجزیہ اور منظم کریں گے ، اور اس کو سمجھنے کے ل. ، آپ کو لازمی طور پر ان معلومات کے ساتھ مشکلات کا سامنا کرنا پڑے گا جن کی آپ کھا رہے ہیں اور یہاں تک کہ اشاعت بھی کر رہے ہیں۔ میں آپ کو یہ بتاتا ہوں کیونکہ مجھے انہی مشکلات کا سامنا کرنا پڑتا ہے۔ اس کتاب کو اپنے خطرے میں استعمال کریں ، اپنی برادری اور برادریوں کے ساتھ کام کریں جو آپ کو محفوظ ترتیب میں سافٹ ویئر بنانے کے ل available دستیاب ہیں ، اور جب آپ غلط طریقے سے ناکام ہوجاتے ہیں یا اس سے بھی کامیاب ہوجاتے ہیں تو ذاتی طور پر چیزوں کو نہ لیں: اور میں آپ کو یہ متن کیوں لاسکتا ہوں اور ہم آپ کو جنون کی راہ پر گامزن ہونے کے بغیر ، جن کو مجھ سے برباد ، پھٹے ہوئے راستے پر پھسلنے میں مدد مل سکتی ہے۔ کام کریں گے ، انٹرنیٹ۔ ہوسکتا ہے کہ آپ اس سے زیادہ واقف نہ ہوں کہ میں صرف چند الفاظ کے ساتھ کون ہوں ، لیکن میں آپ کو پڑھنے کی ترغیب دیتا ہوں ، آپ مجھے جان لیں گے جب آپ اپنے کام کو مکمل کرنے کے ل your اپنے منصوبوں کی تعمیر کے دوران مجھے پڑھتے اور سمجھتے ہیں۔ اس کتاب کے ساتھ کوئی ہوم ورک نہیں ہوگا ، جب تک کہ آپ کے پروفیسرز یا اساتذہ آپ کو کوئی تفویض نہیں کرتے ہیں ، لیکن میں آپ کو بہت زیادہ حوصلہ افزائی کرتا ہوں کہ جب آپ پڑھتے ہو تو اپنے آپ کو پروجیکٹس کا ایک پورٹ فولیو بنائیں ، نیز ایک کیپ اسٹون پروجیکٹ کی نمائش کی جائے گی کہ آپ جو کچھ سیکھا ہے اس کا اطلاق کیسے کرسکتے ہیں۔ میرا کیپ اسٹون پروجیکٹ اس کتاب میں جو کچھ آپ پڑھیں گے اس کی اساس کی بنیاد ہے ، کیوں کہ اس میں میرے پچھلے پروجیکٹس ، کوڈ میں نے تیار کیا ہے اور طریقہ کار کو ہاتھ سے لکھنا سیکھا ہے ، اور بہت سارے خیالات اور اشارے شامل ہیں جس نے مجھے اس مقام تک کامیابی حاصل کرنے میں مدد فراہم کی ہے جہاں میں ایک سادہ ایپ کو گھما سکتا ہوں اور آپ کے دوست کو استعمال کرتے ہوئے ، آپ کے دوست یا خاندانی طور پر استعمال کیا جاتا ہے اور اس کے ساتھ آپ کے دوست کو استعمال کیا جاتا ہے اور آپ کے خاندانی استعمال سے آپ کے دوست یا خاندانی استعمال کو دیکھ سکتے ہیں۔
یہ کتاب کیا ہے: یہ کتاب مثال کے طور پر ایک سبق ہے۔ آپ یہاں کوڈ ، کوڈ کو سیکھنے کے لئے ہدایات ، ڈیبگنگ کوڈ اور فکسنگ کی غلطیوں ، خرابیوں کا سراغ لگانے کے اقدامات ، اپنے کوڈ کو بیک اپ اور محفوظ کرنے کے بارے میں ہدایات ، اپنے کوڈ کو توڑنے اور آپ کے کوڈ کو توڑنے کے ساتھ ساتھ آپ کے کوڈ کو محفوظ رکھنے کے ساتھ ساتھ آپ کے کوڈ کو متعین کرنے ، انٹرایکٹو ویب سائٹیں بنائیں جو آپ کے لئے اہم ہیں ، کو اہمیت حاصل کرنے کے بارے میں ہدایات تلاش کرسکتے ہیں ، کیوں سافٹ ویئر جو آپ اپنے آخری صارفین ، آپ کی ویب سائٹ کے زائرین کے لئے سب سے زیادہ پرکشش ہونے کے لئے مطلق بہترین روشنی میں بناتے ہیں۔ اس کتاب میں ، میں ایک پلیٹ فارم کے ساتھ ساتھ سیکیورٹی کے طور پر ویب پر فوکس کے ساتھ سافٹ ویئر ڈیزائن کی متعدد مثالوں کا مظاہرہ کروں گا۔ ہم بیک اپ اور اسکرپٹنگ کی خصوصیات کے ساتھ یونکس شیل کا استعمال کرتے ہوئے ایک بنیادی پروجیکٹ کی تعمیر کرکے سیکھنے کے تجربے کا آغاز کریں گے۔ اس کے بعد ، ہم ایک بنیادی بلاگ ویب سائٹ کا جائزہ لیں گے ، اپنے بلاگ کو تصویر اور ویڈیو کی خصوصیات کے ساتھ اپ گریڈ کریں گے اور ساتھ ہی ان خصوصیات کو مفت سافٹ ویئر کا استعمال کرتے ہوئے سیکیورٹی حلوں کو استعمال کرنے کے لئے استعمال کریں گے ، اور پلگ ایبل توثیق ماڈیول (PAM) کا استعمال کرتے ہوئے ہمارے سرور کو محفوظ بنائیں گے۔ اس کے بعد ہم فائل ہینڈلنگ اور پروسیسنگ کا جائزہ لیں گے ، ویڈیو ایڈیٹنگ ، وائس ڈونیشن ، بارکوڈ اسکیننگ اور آپٹیکل کریکٹر کی پہچان ، دوسرے تصورات کے علاوہ۔ راستے میں ہم APIs کا معائنہ کریں گے جو مفت اور ادا شدہ اختیارات کے ساتھ ہمارے سافٹ ویئر کو زیادہ مفید اور محفوظ بنانے میں ہماری مدد کرے گا۔ راستے میں ، ہم جسمانی سلامتی اور عسکریت پسند ٹولز جیسے آتشیں اسلحہ اور اسلحہ سازی کے ڈیزائن اور مینوفیکچرنگ کو تلاش کریں گے جن میں بیرل اور ریپیٹر ڈیزائن ، برج اور ڈرون ڈیزائن ، اور دیگر پرنسپلز شامل ہیں جو ہم اپنے سافٹ ویئر پر اپنے سافٹ ویئر کے ساتھ مربوط کریں گے تاکہ اپنے سافٹ ویئر کی حفاظت کی جاسکے اور اپنے دفاع اور رنجش کا مظاہرہ کیا جاسکے۔ ہم کھیلوں ، 2D اور 3D رینڈرنگ انجنوں کی تعمیر کے راستے میں وقفے لیں گے ، اور بنیادی جہتی رینڈرنگ سافٹ ویئر اور بالترتیب سلیکون ربڑ میں الیکٹرانک کمپن مساججر کاسٹ کی کیس اسٹڈی کی مثالوں میں ایمبیڈڈ ہارڈ ویئر کے ساتھ کام کریں گے۔ راستے میں ، ہم اپنے سافٹ ویئر کو بہتر طور پر محفوظ بنانے کے لئے پہلے سے دستیاب مشین لرننگ حل بھی استعمال کریں گے۔ ہم عمل کو ہموار کرنے اور محفوظ کرنے کے لئے ویب کے لئے دستیاب اسٹاک ٹولز کو بھی استعمال کریں گے۔ یہ کتاب ویب ایپلی کیشن کی تعمیر میں آپ کی کامیابی کے لئے ایک رہنما ہے اور اسے کمپیوٹر اور ایمبیڈڈ مکینیکل سسٹم کے پیشہ ورانہ نیٹ ورک کے ساتھ مربوط کرنے میں ، اور مجموعی طور پر سافٹ ویئر بنانے کے لئے ایک رہنما اور پس منظر کے علم یا سابقہ تجربہ کے ساتھ ایمبیڈڈ ہارڈ ویئر کی تعمیر کے لئے ایک رہنما ہے۔
یہ کتاب کیا نہیں ہے: اگر آپ واقعی میں کوئی ویب سائٹ رکھنا چاہتے ہیں تو ، آپ صرف ایک سادہ اسٹور مرتب کرسکتے ہیں اور اپنی ضرورت کی فروخت ، بلاگ پوسٹ کرسکتے ہیں ، فوٹو یا ویڈیوز پوسٹ کرسکتے ہیں ، یا کسی بھی طرح کے کوڈ کی لکیر لکھے بغیر۔ یہ کتاب وہ نہیں ہے۔ یہ کتاب آپ کو یہ سکھائے گی کہ سافٹ ویئر کی تعمیر کا طریقہ جو آپ پہلے ہی کسی بھی سافٹ ویئر کے مقابلے میں زیادہ کارآمد ، مکمل طور پر نمایاں ، فعال اور محفوظ ہے ، کیونکہ یہ جدید ترین سافٹ ویئر تعینات کرتا ہے جو ابھی بھی پروٹو ٹائپ ہے ، اس پیمانے پر چلانا مہنگا ہوسکتا ہے ، اور ان لوگوں کے لئے پیسہ کمانے کے لئے پیچھے کی طرف ، متضاد کمپنیوں کو اپیل نہیں کی جاسکتی ہے جو واقعی کچھ نہیں کر رہے ہیں۔ اگر آپ اس کتاب کو قریب سے پیروی کرتے ہیں تو ، آپ کوڈ ، ریسرچ کوڈ ، اپنی ایپس بنانا چاہیں گے ، اور آپ اپنے کام سے پیسہ کمائیں گے۔ میں اس کتاب سے بھی رقم کما دوں گا ، یہاں تک کہ ابتدائی مراحل میں بھی ، کیونکہ اس میں ایسی معلومات موجود ہیں جن کی لوگوں کو ضرورت ہے اور وہ پڑھنا چاہتے ہیں ، اور جب وہ میرے ایپس کو خریدتے یا استعمال کرتے ہیں تو پہلے ہی خرید رہے ہیں۔ یہ کتاب آپ کے لئے کوئی ایپ نہیں بنائے گی ، لیکن یہ آپ کو صحیح سمت کی طرف اشارہ کرے گی اور آپ کو ان ٹولز اور ان مہارتوں اور اشارے سے لائے گی جو ویب کے لئے سافٹ ویئر بنانے میں آپ کی اپنی کامیابی کو آسان بنائے گی ، کوڈ کی ہر لائن کے ساتھ ، آپ کو ایک مثال کے طور پر لکھنے کی ضرورت ہوگی ، آپ کو سافٹ ویئر میں شامل کرنے کے لئے تیار ہے اور آپ کے حامی ، مہمانوں ، دوست ، کنبے ، کنٹریٹرز ، اور سپورٹ کے لئے لوگوں کو ایک ساتھ مل کر تیار کیا جائے گا۔
آپ کیا سیکھیں گے: یہ کتاب آپ کو سافٹ ویئر بنانے اور فروخت کرنے کا طریقہ سکھائے گی ، واقعی فعال ، مفید سافٹ ویئر ، میڈیا ریکارڈنگ ، سیکیورٹی کی خصوصیات جیسے چہرے کی پہچان ، مشین پڑھنے کے قابل زون بارکوڈ اسکیننگ ، ویب APIs کو توثیق کرنے کے لئے ، ویڈیو اور تصاویر کو ریکارڈ اور رینڈر کرنے کے لئے ، اور بلوٹوتھ اور قریب فیلڈ (این ایف سی) مواصلات جیسے پیغامات کا تبادلہ۔ یہ کتاب آپ کو یہ سکھائے گی کہ نیٹ ورکڈ کمپیوٹر کو کس طرح استعمال کرنا ہے ، ڈیبین لینکس پر توجہ مرکوز کرتے ہوئے ، اپنے سافٹ ویئر کو بغیر کسی ہموار ، خودکار ہوا ، کو انسٹال کرنے اور بیک اپ بنانے کے لئے باش کوڈ بنانے کا طریقہ ، متحرک میسجز کی پیش کش کے ل settrect ایک پس منظر کے طور پر پیتھن کوڈ کو کس طرح تیار کیا جائے ، بوٹسٹریپ کے ذریعہ سی ایس ایس اسٹائل کا استعمال کرتے ہوئے اسٹائل چیزوں کو اچھی طرح سے پیش کیا جائے ، نیٹ ورک کے ذریعہ فنون لطیفہ کو بہتر بنایا جائے ، نیٹ ورک کے ذریعہ استعمال کریں ، صارف کے لاگ ان اور انٹرایکٹو کو قابل بنائیں ، نیٹ ورک کو قابل بنائیں اور انٹرایکٹوٹی کو قابل بنائیں۔ توثیق یا دوسرے مقاصد ، ID اسکیننگ ، شبیہہ اور ویڈیو اعتدال پسندی ، اپنے سافٹ ویئر کو محفوظ رکھنے کے لئے ڈیٹا مائکروٹرانسیکشنز ، ادائیگی کی پروسیسنگ ، کریپٹوکرنسی تجارت ، غیر متزلزل کاموں اور بہت کچھ۔ آپ بیٹریاں ، چارجرز ، مائکروکونٹرولرز ، سرکٹس ، موٹرز اور سینسر کے ساتھ ، اپنے بلوٹوتھ ڈیوائسز کی تعمیر کا طریقہ سیکھیں گے ، سولڈر ، تار اور تھری ڈی پرنٹ شدہ نیز کاسٹ میٹریل کا استعمال کرتے ہوئے۔ میں اضافی مینوفیکچرنگ اور ٹول اور ڈائی میکنگ پر لاگو تھری ڈی ڈیزائن پرنسپلز کا مظاہرہ کروں گا ، لہذا آپ مربوط بیٹریاں ، چارجرز ، الیکٹرانک سرکٹس اور فنکشنل آؤٹ پٹ کے ساتھ اپنے ایمبیڈڈ ، ہارڈ ویئر ڈیوائسز تیار کرسکتے ہیں۔ اور انہیں بلوٹوتھ اور ویب کے ساتھ نیٹ ورک کریں۔ خاص طور پر ، ہم دو کیس اسٹڈیز ، ایک متحرک مساج اور گھریلو آتشیں اسلحہ کی جانچ کریں گے ، دونوں اوپن سکاڈ میں پروگرام کیا گیا ہے ، جو گرافیکل انٹرفیس یا کمانڈ لائن یوٹیلیٹی کے طور پر دستیاب ہے اور تیز نتائج کے ل a ویب میں ضم کیا جاسکتا ہے۔ آپ یہ سیکھیں گے کہ کسی ویب سائٹ کو کسی پیشگی تجربے کے بغیر کسی ویب سائٹ کی تعمیر اور تعینات کرنا ہے ، اسے فعال ، محفوظ ، خوبصورت ، مفید اور سب سے اہم عملی طور پر عملی بنائیں۔ آپ سیکھیں گے کہ سائٹ کو محفوظ اور زیادہ عملی ، ریکارڈ ویڈیو اور آڈیو بنانے کے لئے مشین لرننگ اور کمپیوٹر وژن کا استعمال کس طرح کریں گے ، اپنی آواز کو عطیہ کریں ، میوزک بنائیں اور مفید نمونے بنانے کے لئے آڈیو کو ماڈیول کریں ، اور ویب سائٹوں کے بہترین نیٹ ورک کی تعمیر کے ل other شور کو توڑنے کے لئے کہ آپ اپنی سافٹ ویئر اور کاروبار کو براہ راست لنک کرسکتے ہیں ، اور اس سے بھی زیادہ اہم معلومات کو آپ سے لنک کرسکتے ہیں۔ اس کتاب کو میڈیا ، سیکیورٹی اور مشین لرننگ پر زیادہ تر توجہ دی جائے گی ، جو تین بڑے اجزاء ہیں جو آپ کو صحیح صارفین کو شامل کرکے اور غلط لوگوں کو اس انداز سے منقطع کرکے ویب کے لئے مفید سافٹ ویئر بنانے میں مدد فراہم کریں گے جو حقیقت پسندانہ ، عملی ، ہاتھ اور خود کار طریقے سے اور مضبوط بھی ہے۔ اس کتاب میں یونکس ، خاص طور پر ڈیبین (اوبنٹو) ، باش شیل ، ازگر ، ایچ ٹی ایم ایل ، سی ایس ایس ، جاوا اسکرپٹ ، اور متعدد مفید سافٹ ویئر پیکجوں جیسے درخواستوں کے ساتھ ساتھ جی آئی ٹی اور ایف ایف ایم پی ای جی جیسے مفید باش سافٹ ویئر کی تعلیم دی گئی ہے۔ میں آپ کو یہ بھی سکھاؤں گا کہ خود بخود cryptocurrency تجارت کرنے کا طریقہ ، اور کریپٹوکرنسی میں یا باقاعدہ ڈیبٹ کارڈز سے ادائیگی کرنے کا طریقہ بھی سیکھوں گا ، یہاں تک کہ اگر آپ ایسا کرنے کا انتخاب کرتے ہیں تو اپنے زائرین کو اپنی آمدنی کا ایک حصہ بھی ادا کرتے ہیں۔ میں آپ کو یہ سکھاؤں گا کہ آپ کی ویب سائٹ سے اشتہارات کے ذریعہ پیسہ کیسے کمانا ہے ، اس کے ساتھ ساتھ سرچ انجنوں کے ل your اپنی ایپ کو کیسے تیار کیا جائے اور اسے تیز رفتار بنائیں ، جو آپ کے گاہک آپ کو ڈھونڈنے کے ل search تلاش کریں گے ، اور زیادہ سے زیادہ عام تلاشیوں میں درجہ بندی کرنے کے لئے پہلی درجہ بندی میں درجہ بندی کریں گے۔ میں آپ کو یہ سکھاؤں گا کہ اپنے سافٹ ویئر کو کس طرح بیچنا ، اس کی تشہیر کرنا ، آپ کی خدمات کی تلاش میں گاہکوں سے اپیل کرنا ، اور پہلے سے موجود راستوں کے ذریعہ انٹرنیٹ پر اپنے لئے ایک نام تیار کرنا ، سستا ہے ، اور اچھی طرح سے کام کرنا ہے۔ میں آپ کو یہ سکھاؤں گا کہ کلاؤڈ کمپیوٹرز کے بارے میں اپنے ڈیٹا کو کیسے بچایا جائے جو آپ کے لئے کام کرتے ہیں اور اپنے ڈیٹا کو سستے سے بچاتے ہیں ، ایک ایسی ویب سائٹ کی منصوبہ بندی اور تعمیر کرنے کا طریقہ ہے جو آپ کے صارفین کو کیا چاہتے ہیں اور آپ کیا چاہتے ہیں ، اور آپ کے صارفین کو ان کے فون پر نوٹیفیکیشن ، ای میل ، ٹیکسٹ میسجز ، فون کالز ، اور آپ کے صارفین کو آپ کے ویب سائٹ پر صرف آپ کے پاس اپنے صارفین کو اپنے آپ کو واپس لانے کے لئے آپ کی ویب سائٹ پر دوبارہ لانے کے لئے آپ کے صارفین کو مشغول رکھیں۔ اس کتاب میں میڈیا کو بڑی مقدار میں شائع کرنے اور تقسیم کرنے کی عملیتا پر توجہ دی جائے گی ، متن سے لے کر ویڈیوز تک آڈیو تک کی تصاویر تک ، اختتامی صارفین (آپ کے مؤکل) پر ایک اچھا تاثر پیدا کرنا ، اور کسی بھی طرح سے اپنے آپ کو فروخت کرنا جس میں آپ ویب سائٹ بنانے کے لئے کرتے ہیں ، ایک ایپ جو آپ اور صرف آپ کا نمائندہ ہے ، اور آپ کو ، آپ کی سافٹ ویئر اور آپ کی کمپنی بہترین طریقے سے اچھی لگتی ہے۔ آپ مجھ سے کچھ نکات اور چالیں بھی سیکھیں گے ، کوڈنگ ٹپس سے ، میک اپ اور فوٹو گرافی ، ماڈلنگ اور اداکاری جیسے عملی باطل سے ، جو آپ کو اور آپ کی کمپنی کو دستیاب تمام ٹولز کا استعمال کرتے ہوئے اپنے آپ کو اور آپ کی کمپنی کو بہترین ممکنہ روشنی میں پیش کرنے کے لئے اہم ہوگا جب آپ کو زیادہ سے زیادہ مواد کو تقسیم کرنے کے ل your آپ کے سافٹ ویئر کو زیادہ سے زیادہ کام کرنے کے ل contactive آپ کے سافٹ ویئر کی ضرورت ہے۔ اس کتاب کو "عملی" کہا جاتا ہےویب پر مبنی گہری لرننگ اور سیکیورٹی "مثال کے طور پر: یہ کوڈ سیکھنے سے متعلق ہے ، خاص طور پر ویب کے لئے ، خاص طور پر سیکیورٹی پر توجہ مرکوز کے ساتھ ، عملی نقطہ نظر سے ، ورکنگ کوڈ کی مثالوں کے ساتھ جو متن میں بیان کردہ عملی مقاصد کو پیش کرتا ہے ، اس متن کا نظم وشنریشن اور ویڈیو آپ کو دکھائے گا کہ اس ویب کے لئے یہ بھی دکھایا جائے گا کہ ویب کے لئے یہ بھی دکھائے گا کہ اس ویب کے لئے یہ بھی دکھائے گا کہ اس ویب کو کس طرح سنبھال لیا جائے گا ، جس میں آپ کو یہ دکھائے گا کہ اس ویب کے لئے یہ بھی شامل ہے کہ اس کا کوڈ کو سنبھال لیا جائے گا۔ اضافہ ، امیج کیپشننگ ، اور دیگر کاموں جیسے پیش گوئی کی گئی پیمائش ، جیسے کہ شبیہہ کی نوعیت ایک مستند ، کمپیوٹر سے منتقلی کی تصویر ، یا آپٹیکل کاپی (کسی تصویر کی تصویر ، یا اس پر طباعت شدہ تصویر کے لئے یہ ضروری ہے کہ یہ آپ کے کمپیوٹر سیکیورٹی کے لئے بہت اہم ہے۔ آپ اپنے چہرے کے ساتھ ایک سرور کمپیوٹر کو محفوظ بنا سکتے ہیں ، جو آپ کو عام طور پر صارف کا نام اور پاس کوڈ کے لئے پوچھتا ہے ، ہوسکتا ہے کہ ہر نئے لاگ ان یا نئے آئی پی ایڈریس کے لئے تصدیق کی جاسکے ، لیکن اگر آپ کسی اور سافٹ ویئر کے لئے کسی بھی طرح کے سافٹ ویئر کو محفوظ رکھنے کے لئے کافی حد تک محفوظ بنائیں۔ سائٹ جو آپ استعمال کرتے ہیں)۔ جو بھی شخص سافٹ ویئر تیار کرتا ہے جو بے حد محفوظ ہے اس کا کچھ احساس ہوتا ہے کہ اس کا کیا مطلب ہے۔ سافٹ ویئر فطری طور پر غیر محفوظ ہے کیونکہ ہم جس آلات اور کھاتوں تک رسائی حاصل کرتے ہیں وہ ہمیشہ ہمارے اختیار میں نہیں ہوتے ہیں ، وہ سافٹ ویئر کے لئے ناجائز ارادے والے ہر فرد کے ہاتھ میں ہوسکتے ہیں اور اسی وجہ سے وہ خود ہی سافٹ ویئر کو خطرہ بن سکتے ہیں۔ یہ اس کتاب کی توجہ کا مرکز ہے۔ ایک نیٹ ورک والا کمپیوٹر ایک لمبی کلید ٹوکن کے ساتھ بطور ڈیفالٹ محفوظ ہوتا ہے ، جس کو اور ایس ایس ایچ یا سیکیور شیل کلید کہا جاتا ہے ، اور دوسری صورت میں کسی ویب سرور کے ساتھ بہترین محفوظ کیا جاتا ہے ، کیونکہ ویب سرور خود سرور پر چلنے والے آرٹ سیکیورٹی ٹولز کی کھلی رسائی کے ساتھ ساتھ ریاست کی کھلی رسائی فراہم کرتا ہے۔ ویب سرور کو صارف کے ویب براؤزر تک رسائی حاصل ہے ، جو صارف کے آلے کا سب سے طاقتور حصہ ہے ، کیونکہ یہ وہ جگہ ہے جہاں صارف نیٹ ورک سافٹ ویئر تک رسائی حاصل کرسکتا ہے۔ یہ ٹول کٹ متن ، جو ویب صفحات دیکھتی ہے اسے پیش کرسکتی ہے ، اور تصاویر ، آڈیو اور ویڈیو (جیسے کسی چہرے یا ریاست کی شناخت کی تصویر) کو بھی ریکارڈ کرسکتی ہے ، بلوٹوتھ ریڈیو ڈیوائسز کو پڑھ سکتی ہے اور لکھ سکتی ہے ، اور قریبی فیلڈ ٹرانسپونڈر ٹیگز ، سستی کلیدی کارڈز ، فوبس ، اسٹیکرز ، انگوٹھوں اور یہاں تک کہ منفرد سیریل نمبروں کے ساتھ لکھنے کے لئے بھی پڑھ سکتی ہے۔ آپ کے اختیار میں تمام ٹولز کا استعمال کرتے ہوئے ، اس کتاب کے ساتھ آپ اپنے آپ کو ایک محفوظ ویب سائٹ بنانے کے ل knowledge اپنے آپ کو علم سے آراستہ کریں گے ، اور مجموعی طور پر ایک محفوظ نیٹ ورک والا کمپیوٹر سسٹم جو آپ کے لئے کام کرتا ہے ، آپ کی بولی لگاتا ہے ، اور لگتا ہے اور لگتا ہے اور محسوس کرتا ہے۔
کہاں سے شروع کریں: آپ کا استقبال ہے کہ میں اس کتاب کو اس کتاب کے ساتھ شروع کرتا ہوں ، یا کسی بھی حصے کے ساتھ ، جس کی آپ کو ضرورت ہے ، خاص طور پر اگر آپ کو اس سے پہلے کوڈنگ کا تجربہ ہے یا مذکورہ بالا ٹولز میں سے کسی میں بھی میں اس کتاب میں تفصیل سے بیان کروں گا اور ساتھ ہی اس کے استعمال کے معاملات اور عملی مثالوں کی دستاویزات بھی کروں گا۔ اگر آپ کے پاس کوڈ لکھنے کا تجربہ نہیں ہے تو ، میں آپ کو مشورہ دیتا ہوں کہ آپ اس ساری کتاب کو پڑھیں ، اور خاص طور پر آپ کو پچھلے حصوں کو پڑھنے کی سفارش کرتے ہیں ، تاکہ یہ یقینی بنایا جاسکے کہ یہ کتاب آپ کے لئے صحیح ہے۔ اگر یہ کتاب آپ کے لئے صحیح نہیں ہے تو ، اسے کسی ایسے دوست یا رشتے دار کے پاس تحفے دینے پر غور کریں جو شاید خود ویب ڈویلپمنٹ کے بارے میں جاننے میں دلچسپی رکھتے ہوں ، اور یہاں تک کہ اس کو واپس لینے اور ان سے ان خلاء کو پُر کرنے کے لئے سیکھنے پر بھی غور کریں جہاں میں نے آپ کو ایک استاد کی حیثیت سے ناکام کیا ، یا دوسرے اساتذہ نے مجھ سے پہلے کیا۔ جہاں آپ کریں گے وہاں شروع کریں ، اس کتاب کا ہر حصہ مفید ہوگا اگر آپ ایک مفید ایپ بنانے کا ارادہ رکھتے ہیں ، اور غور کریں کہ بہترین ایپس کو آخری صارف کو ذہن میں رکھتے ہوئے بنائے گئے ہیں: اپنے صارف کو جانیں۔ اب آپ مجھے جانتے ہو ، آپ کو یہ کتاب معلوم ہے ، اور آپ شروع کرنے کے لئے تیار ہیں۔ شروع کرنے کے لئے ، ایک کمپیوٹر پر قبضہ کریں (یہاں تک کہ باکس اسٹور ، ایمیزون ، یا پرانے ڈیسک ٹاپ کا سب سے سستا لیپ ٹاپ بھی کام کریں ، اور اسے اس طرح ترتیب دیں جو آپ کے لئے کام کرے۔
اس کتاب کو کیسے پڑھیں: متن کو اجاگر کیا گیا ، اس بات کی نشاندہی کرتی ہے کہ متن کمانڈ پرامپٹ میں ہے ، جہاں آپ چلاتے ہیں کوڈ لکھیں گے۔ کمانڈ پرامپٹ بہت زیادہ کی بورڈ پر مرکوز ہے اور اس کے لئے آپ کے ورک فلو کو تیز کرنے اور آپ پر چیزوں کو آسان بنانے کے ل no کم کلک کرنے کی ضرورت نہیں ہے۔
شروع کرنا: آئیے غوطہ لگائیں۔ ہم مقامی مشین پر کوڈ بنا کر شروع کریں گے اور انٹرنیٹ سے منسلک ویب سائٹ بنائے بغیر شروع کریں گے۔ اس کے ساتھ شروع کرنا زیادہ محفوظ ہے ، کچھ نہیں لاگت آتی ہے ، اور آپ کے لئے آسان ہے۔ آپ کے آپریٹنگ سسٹم پر انحصار کرتے ہوئے ، بش کے شیل میں داخل ہونا تھوڑا سا مختلف ہوگا۔ میک او ایس کے ل I ، میں اس مقام پر ورچوئل مشین انسٹال کرنے کی سفارش کرتا ہوں ، کیونکہ آپ کو ورچوئل مشین کے ساتھ سب سے زیادہ مطابقت ملے گی۔ مختلف فراہم کنندگان جیسے ورچوئل بوکس اور پیرایلیل آپ کے لئے ایک ورچوئل مشین چلا سکتے ہیں ، حالانکہ اگر آپ کسی مقامی ماحول کو استعمال کرنے کو ترجیح دیتے ہیں جس کی سفارش کی جاتی ہے تاکہ تیز ، ہموار تجربہ پیدا کیا جاسکے۔ اگر آپ لینکس یا ونڈوز استعمال کررہے ہیں ، جس کی میں تجویز کرتا ہوں تو ، کسی پروجیکٹ کو بنانا کافی آسان ہونا چاہئے۔ اپنے ٹرمینل کو کھولیں ، جب آپ فٹ نظر آتے ہیں تو سائز کو ایڈجسٹ کریں ، اور مرحلہ 2 کے بعد شروع کریں۔ اگر آپ ونڈوز استعمال کررہے ہیں تو ، براہ کرم مرحلہ 1 پر عمل کریں۔
مرحلہ 1: - صرف ونڈوز صارفین ونڈوز میں ، ایڈمنسٹریٹر اور ٹائپ کے طور پر کمانڈ پرامپٹ کھولیں WSL -install
مرحلہ 2: - یہاں جاری رکھیں ، یا اگر آپ ونڈوز استعمال نہیں کررہے ہیں تو یہاں سے مرحلہ 1 کو چھوڑیں کھلی ٹرمینل میں ، (آپ کے OS پر منحصر ہے ، جسے ونڈوز میں اوبنٹو کہا جاتا ہے ، میک یا لینکس میں ٹرمینل ، یا اسی طرح کا نام) ، ایک پروجیکٹ تشکیل دے کر شروع کریں۔ ہم یہ ایم کے ڈی آئی آر کمانڈ کے ساتھ کرتے ہیں ، جو ایک ڈائریکٹری بناتا ہے۔ اگر آپ کو اپنے پروجیکٹ کو ذخیرہ کرنے کے لئے کوئی ڈائرکٹری بنانے کی ضرورت ہے ، جس کی سفارش کی جاتی ہے تو ، ڈائریکٹری میں تبدیل ہونے کے لئے سی ڈی کمانڈ کا استعمال کریں اور اور
سی ڈی/پاتھ/ٹو/ڈائرکٹری - راستہ فولڈرز (فائلیں) ہے جو آپ کی منزل کی ڈائرکٹری سے پہلے ہے ، آپ کا پہلے سے طے شدہ راستہ ~ یا/گھر/صارف نام ہے (جہاں صارف نام آپ کا صارف نام ہے)۔ پہلے سے طے شدہ ڈائرکٹری میں تبدیل کرنے کے لئے ، سی ڈی یا سی ڈی ٹائپ کریں 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
اور نانو کو بند کرنے کے ل we ، ہم کنٹرول کی کلید کو تھام سکتے ہیں اور X کو دبائیں ، پھر Y کو اس بات کی نشاندہی کرنے کے لئے کہ ہم فائل کو محفوظ کررہے ہیں ، اور واپسی کو ہٹائیں۔ اب اسکرپٹ میں ترمیم کرنے کے لئے ان تینوں کمانڈوں کو ٹائپ کرنے کے بجائے ، ہم اسکرپٹ میں دوبارہ ترمیم کرنے کے لئے SUDO ASCRIPT ASCRIPT ٹائپ کرسکیں گے۔ یہ کام کرتا ہے! اور کسی بھی نئی اسکرپٹ کو شیل میں کال کرکے آسانی سے چلایا جاسکتا ہے۔ آئیے ابھی اپنے کام کو بچائیں: آئیے اپنی نئی اسکرپٹ کو بچانے کے لئے بیک اپ اسکرپٹ لکھیں اور پھر اسے اپنی پروجیکٹ ڈائرکٹری میں بیک اپ کریں ، جبکہ بیک اپ اسکرپٹ کا بھی بیک اپ لیں۔
sudo ascript backup
اب ، نانو میں:
sudo cp /usr/bin/backup /path/to/directory/
sudo cp /usr/bin/ascript /path/to/directory/
جہاں/راستہ/سے/ڈائرکٹری آپ نے ایم کے ڈی آئی آر کے ساتھ تخلیق کردہ پروجیکٹ کا راستہ ہے۔ بعد میں ہم یہ سیکھیں گے کہ اس طرح کے دہرائے جانے والے راستوں کو کسی لوپ اور ایک فہرست کے ساتھ کاپی کرنے کا طریقہ ، جو کم کوڈ ہے ، لیکن اب کے لئے آئیے اسے آسان رکھیں اور کچھ لائنیں رکھیں۔ اس اسکرپٹ کو چلانے اور اپنے کوڈ کو بیک اپ کرنے کے لئے ، نانو میں فائل کو کنٹرول+X ، Y اور واپسی کے ساتھ محفوظ کریں ، اور نیچے اپنے شیل میں ٹائپ کریں
backup
اگر آپ کو اس کتاب کو پڑھتے ہوئے اور شیل میں پیروی کرتے ہوئے پاس ورڈ کے لئے بالکل بھی اشارہ کیا جاتا ہے تو ، براہ کرم اپنے صارف کا پاس ورڈ صحیح طریقے سے درج کریں ، آپ کو کمانڈ کو دوبارہ چلانے کی ضرورت سے پہلے آپ کو تین کوششیں ہوں گی۔ آپ کمانڈز کو دوبارہ تیار کرنے اور ان میں ترمیم کرنے کے لئے اوپر اور نیچے والے تیروں کا استعمال کرسکتے ہیں ، کیا آپ کو دو بار کچھ چلانے کی ضرورت ہوگی۔ کمانڈ کو منتخب کرنے کے لئے وقفے وقفے سے اوپر اور نیچے دبائیں ، اس سے پہلے کہ کمانڈ کو دائیں ، بائیں تیروں اور کی بورڈ کے ساتھ ساتھ کی بورڈ کے ساتھ حذف کریں ، اور اسے واپسی کے ساتھ چلائیں۔
مبارک ہو! آپ نے ایک زبردست بیک اپ اسکرپٹ بنانے میں کامیاب کیا جو آپ کی ورکنگ ڈائرکٹری میں دو اہم شیل اسکرپٹ کی پشت پناہی کرتا ہے۔ پروجیکٹ کے بڑے ہونے کے ساتھ ہی ہم بعد میں چیزوں کو گھوم سکتے ہیں ، لیکن یہ اب کے لئے کام کرتا ہے۔ آئیے کلاؤڈ میں بیک اپ لینے کی طرف بڑھیں ، ہم اس کے لئے گٹ ہب کا استعمال کریں گے (حالانکہ بیک اپ کے ل numerous متعدد دیگر گٹ حل موجود ہیں ، وہ سب ایک جیسے ہیں۔) گٹ ایک ویریژن کنٹرول سافٹ ویئر ہے جو آپ کو اپنے سافٹ ویئر میں ترمیم کرنے دیتا ہے ، جبکہ آپ کو کسی سرور میں ان کو بناتے ہیں ، جبکہ آپ کو اپنے سافٹ ویئر کی پوری کاپیاں پاس ورڈ یا کلید کے پیچھے ڈاؤن لوڈ کرنے میں بھی اہل بناتے ہیں۔ یہ آپ کے سافٹ ویئر کو بچانے میں اہم کردار ادا کرتا ہے ، خاص طور پر جب ہم محفوظ شدہ لینکس مثال کے طور پر ہجرت کرتے ہیں جو کبھی کبھی کوڈ کی ایک لائن ناکام ہوجاتے ہیں تو ، آپ کو بند کر دیتے ہیں جب آپ کو خود بخود اس کی پشت پناہی کرنے کا موقع نہیں ملتا ہے تو آپ کا کوڈ بیک اپ نہیں کیا جاسکتا ہے ، جس کا ہم احاطہ کریں گے۔
اگر آپ پہلے ہی اس مقام پر اوبنٹو ورچوئل مشین استعمال نہیں کررہے ہیں تو ، میں اس مقام پر اوبنٹو ورچوئل مشین کا استعمال کرتے ہوئے دوبارہ کام کرتا ہوں کیونکہ جب آپ کے کمپیوٹر پر کام کرنے والی ویب سائٹ اور پیشگی گہری سیکھنے کی کارروائیوں کو تیار کرنے کے لئے ضروری تمام پیکیجوں کو انسٹال کرتے وقت آپ کی زندگی آسان ہوجائے گی۔ ہم مستقبل قریب میں کوڈ کو کسی ویب سرور میں منتقل کریں گے ، لیکن ہم یہ یقینی بنانا چاہتے ہیں کہ ہمارے ویب سرور کے پیچھے کم از کم سیکیورٹی کی کچھ پرتیں موجود ہیں جو فشینگ کے خلاف مزاحم ہیں ، اور ایسا کرنے کے لئے متعدد لینکس پیکجوں کو ملازمت دیتے ہیں۔ اگر آپ اب بھی میک OS کو استعمال کرنا چاہتے ہیں تو ، آپ کو آن لائن ضروری پیکجوں کی تلاش اور انسٹال کرنے کا خیرمقدم کیا جاتا ہے ، لیکن اس کتاب یا سیریز کا احاطہ کرنے والے ہر پیکیج کے متبادل نہیں ہوسکتے ہیں۔
آئیے سوڈو اسکرپٹ بیک اپ کمانڈ چلا کر بیک اپ اسکرپٹ کے ساتھ اپنے کام کا ارتکاب کرنے کے لئے کچھ احکامات شامل کریں۔
# ... تو… کے بارے میں… کے بارے میں… کے.
ایک بار پھر ، بچانے کے لئے X کو کنٹرول کریں۔
اب ہمیں اس پروجیکٹ کے لئے کچھ وقت کی تشکیل کرنے کی ضرورت ہے۔ چونکہ یہ جلد ہی ایک گٹ پروجیکٹ ہوگا ، لہذا جب بھی ہم کسی گٹ ریپوزٹری سے تعینات کرتے ہیں تو ہمیں ہر کمانڈ ٹائپ کرنے کی ضرورت نہیں ہوتی ہے ، لیکن جب ہم اپنی تعیناتی اسکرپٹ لکھتے ہیں تو ہمیں اس کا پھانسی مل جائے گا۔ شروع کرنے کے لئے ، آئیے یہ یقینی بنائیں کہ ہم صحیح ڈائریکٹری میں ہیں اور گٹ ریپوزٹری کو شروع کرتے ہیں اور ایس ایس ایچ کیز تیار کرتے ہیں۔
cd /path/to/directory
git init
git branch -m master
ssh-keygen
ہمارے SSH-KEYGEN ٹائپ کرنے کے بعد ، نئی کلید کو ہوم فولڈر میں ایک فولڈر کے تحت محفوظ کیا جانا چاہئے .SSH کہتے ہیں۔ اسے id_rsa.pub کہا جاتا ہے۔ آئیے اس کلید کو تلاش کریں اور اس کی کاپی کریں۔ اسے دیکھنے کے لئے ،
cd ~
cat .ssh/id_rsa.pub
اپنے اکاؤنٹ میں ایس ایس ایچ کی کلید کو شامل کرنے سے پہلے اس متن کو کاپی کریں جو آخری کمانڈ کے ذریعہ واپس کیا گیا ہے ، اور اپنے گٹ فراہم کنندہ (مثالی طور پر گٹ ہب) کے ساتھ ایک اکاؤنٹ بنائیں۔ ایک بار جب آپ کا اکاؤنٹ ہوجائے تو ، اوپری دائیں مینو پر کلک کریں اور مینو میں رسائی کے تحت ایس ایس ایچ اور جی پی جی کیز میں اپنی ایس ایس ایچ کی کو شامل کرنے سے پہلے ترتیبات درج کریں۔ ایک نیا ذخیرہ تخلیق کرنے کے لئے بچت کرنے اور گٹ ہب میں واپس آنے سے پہلے ، ایک ایس ایس ایچ کی کلید کو شامل کریں اور اسے چسپاں کرکے اور اسے ایک لقب دے کر شامل کریں۔ یہ دوسرے گٹ فراہم کرنے والوں کے لئے بھی ایسا ہی ہے ، آپ کو ان کی دستاویزات پڑھنے کی ضرورت ہوگی۔ نئی ذخیرہ ترتیب میں ، اپنے ذخیرے کو ایک وضاحتی نام دیں اور فیصلہ کریں کہ آیا آپ اسے شائع کرنا چاہتے ہیں ، اور ابھی تک شمولیت کے ل no کوئی فائلوں کو تشکیل دینا یقینی بنائیں۔ ایک بار ذخیرہ تخلیق ہونے کے بعد ، کلون کو ایس ایس ایچ یو آر ایل کے ساتھ کاپی کریں ، اور اسے مندرجہ ذیل کمانڈ میں چسپاں کریں۔
git remote add git://… (your remote URL)
اب آپ سی ڈی کے ساتھ اپنے ذخیرے میں واپس جاسکتے ہیں ، آپ اس سے واقف ہوں گے۔ بیک اپ کے ساتھ ابھی اپنا بیک اپ اسکرپٹ آزمائیں
بہت اچھا! اب ہم واقعی کوڈنگ حاصل کرسکتے ہیں۔ آئیے اب جیانگو انسٹال کریں کہ ہمارے پاس باش اور گٹ پر اچھی گرفت ہے۔ جیانگو ہمیں خود بخود اپنے سافٹ ویئر کی پشت پناہی کرنے دے گا ، باش بھی یہ کام کرسکتا ہے لیکن جیانگو کو ایک آسان سی محفوظ نفاذ ہونا چاہئے (اسے غیر فعال اور آسانی سے تشکیل دیا جاسکتا ہے)۔
اوبنٹو میں سافٹ ویئر انسٹال کرنے کے لئے ، ہم سوڈو اپٹ-گیٹ کمانڈ استعمال کریں گے۔ پہلے ، آئیے ہمارے پاس موجود سافٹ ویئر کو اپ ڈیٹ اور اپ گریڈ کریں۔ یہ SUDO APT-GET اپ ڈیٹ اور SUDO APT-GET اپ گریڈ کے ساتھ کیا جاسکتا ہے۔ اگلا ، آئیے مندرجہ ذیل کمانڈ کے ساتھ ، ہمارے کوڈ کا گھر ، ازگر اور ہمارے ورچوئل ماحولیات کو انسٹال کریں: سوڈو اپٹ-گیٹ انسٹال ازگر I-IS-Python3 Python3-venv
اوبنٹو مثال میں سافٹ ویئر انسٹال کے معاملے میں آپ کو جیانگو کے ساتھ جانے کی ضرورت ہے۔ ونڈوز اور لینکس کے ل this یہ کافی سیدھا ہونا چاہئے ، لیکن میک کے ل you آپ ورچوئل باکس یا پیرا لیلس ڈیسک ٹاپ جیسے مفت یا ادا شدہ ورچوئل ماحول کا استعمال کرتے ہوئے اس پر ورچوئل مشین اور لینکس انسٹال کرنا چاہتے ہیں اور اوبنٹو ماحول کو ترتیب دینے کے لئے اوپر والے اقدامات کو دوبارہ بنانا چاہتے ہیں۔ اوبنٹو اس معاملے میں اہم ہے کیونکہ یہ وہ سافٹ ویئر ہے جو ویب سائٹ چلتی ہے اور اس سے وہ مذکورہ بالا سافٹ ویئر کی ویب سائٹوں کی میزبانی کرنے کے قابل بناتا ہے۔
آئیے جیانگو میں کھودیں۔
ہماری ڈائرکٹری میں ایک بار پھر ، سی ڈی کے ساتھ:
python -m venv venv # ورچوئل ماحول پیدا کرتا ہے جہاں کوڈ محفوظ ہے
source venv/bin/activate # ورچوئل ماحول کو متحرک کرتا ہے
django-admin startproject mysite . # جہاں میسائٹ وہ پروجیکٹ ہے جہاں میں اپنی موجودہ ڈائرکٹری میں شروع کر رہا ہوں۔
جیانگو ابھی ہمیں شروع کر رہا ہے ، کیونکہ جیانگو ویب سرور کی میزبانی کر رہا ہے اور ایک بنیادی مقامی ویب سائٹ کو چلانے اور چلانے کے لئے ہمیں ہر چیز کی ضرورت ہے۔ اب جب کہ ہمارے پاس جیانگو انسٹال ہوچکا ہے ، آئیے ترتیبات کو تھوڑا سا ترمیم کریں تاکہ اس کو کام کرنے کے ل we ہمیں کس طرح کی ضرورت ہے۔ پہلے ، آئیے ایک نیا ایپ بنائیں
python manage.py startapp feed
آپ دیکھیں گے کہ پہلی ایپ کو فیڈ کہا جاتا ہے۔ ایپ کو جو بھی پسند ہے اسے بلایا جانا چاہئے ، اور ہم نئی ایپس بنائیں گے ، لیکن جب بھی ایپ کو کوڈ میں حوالہ دیا جاتا ہے تو ہر ایپ کا نام مستقل ہونا چاہئے۔ ایک نئی ایپ کو شامل کرنے کے ل we ، ہم ہمیشہ ترتیبات میں ترمیم کریں گے۔ دوسری ڈائرکٹری میں جو ایپ نے تیار کیا ہے ، اس کے بعد اسٹارٹ پروجیکٹ ، اس کے بعد ایپ میں شامل کیا گیا ہے۔ نانو کا استعمال ،
nano app/settings.py
ترتیبات میں ، انسٹال_اپس تلاش کریں اور [] کو 3 لائنوں میں الگ کریں۔ خالی سینٹر لائن پر چار جگہوں کا استعمال کرتے ہوئے ، 'فیڈ' ، یا اپنے ایپ کا نام شامل کریں۔ ترتیبات کا یہ حصہ۔ پی وائی کی طرح نظر آنا چاہئے:
INSTALLED_APPS = [
'feed',
]
اس سے پہلے کہ ہم بھول جائیں ، آئیے جانچ کریں کہ جیانگو کام کر رہا ہے۔ کمانڈ ازگر کا انتظام کریں۔
اب ، آئیے کچھ ازگر کوڈ لکھنے میں کھودیں۔ جیانگو کے تین اہم اجزاء ہیں ، یہ سب کوڈ کے ذریعہ مکمل طور پر چلاتے ہیں۔ اجزاء کو ماڈل ، ویو اور ٹیمپلیٹ کہا جاتا ہے ، اور ویب پیج صارف کو پہنچانے سے پہلے بالترتیب بالترتیب اونچی اور نچلی سطح پر ہوتا ہے۔
ماڈل وہ کوڈ ہے جو بازیافت ، ترتیب اور رینڈرنگ کے لئے ڈیٹا بیس میں معلومات کو محفوظ کرتا ہے۔
یہ نظریہ فیصلہ کرتا ہے کہ ماڈل کو کس طرح پیش کیا جاتا ہے ، ہیرا پھیری اور ترمیم کی جاتی ہے ، تقریبا every ہر نظریہ براہ راست ماڈل استعمال کرے گا۔
ٹیمپلیٹ HTML کوڈ ہے جس میں کچھ اضافی گھنٹیاں اور سیٹیوں کے ساتھ ٹیمپلیٹ لینگویج کہا جاتا ہے۔ ٹیمپلیٹ کو اس نظارے کے ذریعہ پیش کیا جاتا ہے جہاں یہ ازگر کے کوڈ اور سیاق و سباق سے بھرا ہوا ہے جیسے ماڈل اور معلومات (usuall تار اور عدد) نظارے سے۔
جیانگو کے دوسرے اجزاء بھی ہیں ، بشمول لیکن اس تک محدود نہیں:
ترتیبات ، جو ایپ کو تشکیل دیتی ہیں جیسا کہ ہم نے تبادلہ خیال کیا ہے۔
یو آر ایل ، جو نمونے ہیں جن کی پیروی ویب ایپلی کیشن کے مخصوص حصوں تک رسائی حاصل کرنے کے لئے کرتی ہے۔
فارم ، جو اس بات کی وضاحت کرتے ہیں کہ سرور کو بھیجی جانے والی معلومات کو ڈیٹا بیس کے ساتھ ساتھ صارف کو بھی سنبھالا اور پیش کیا جاتا ہے۔ یہ سرور کی طرف پروسیسنگ کی معلومات کی بنیاد ہیں ، اور کسی بھی قسم کی معلومات کو کمپیوٹر اسٹورز ، خاص طور پر ٹیکسٹ ڈور ، نمبرز ، اور سچے/غلط بولینز (عام طور پر چیک باکسز) کو قبول کرسکتے ہیں۔
ٹیمپلیٹس ، جو ایچ ٹی ایم ایل کوڈ اور ٹیمپلیٹ زبان ہیں اور ازگر اور ایچ ٹی ایم ایل کے مابین پائے جانے والے فرق کو ختم کرتے ہیں ، جس کا مطلب ہے کہ ازگر کی معلومات کو ایچ ٹی ایم ایل کوڈ کے طور پر پیش کیا جاسکتا ہے جس سے کوئی بھی محدود رسائی کے ساتھ کسی ویب سائٹ تک رسائی حاصل کرسکتا ہے اور اس کو ریموٹ آلہ پر متعدد مقاصد کے لئے مفید بنا سکتا ہے ، جس کو سرور کے قریب ہونے کی ضرورت نہیں ہے۔
جامد فائلیں ، جو عام طور پر جاوا اسکرپٹ ہوتی ہیں اور یہ لائبریریاں ہیں جو سرور پیش کرتی ہے اور ٹیمپلیٹ کے ساتھ منسلک ہوتی ہے۔
میڈیا فائلیں ، جو سرور پیش کرتی ہے یا بیرونی طور پر میزبانی کی جاتی ہے ، یا میزبانی کے لئے کسی دوسرے سرور (ایک بالٹی) پر کارروائی کرنے سے پہلے سرور کو لکھی جاتی ہے۔
مڈل ویئر ، جو کوڈ کے ٹکڑے ہیں جو ایک ہی وقت میں ہر نظریہ کی طرح چلتے ہیں اور نظارے میں "شامل" سمجھے جاتے ہیں۔
سیاق و سباق کے پروسیسرز ، جو ہر نظریہ کے سیاق و سباق پر کارروائی کرتے ہیں اور اضافی سیاق و سباق کو شامل کرنے کے لئے استعمال ہوتے ہیں۔
ٹیسٹ ، جو اس بات کی توثیق کرتے ہیں کہ صارف یا درخواست پیش کرنے سے پہلے کچھ ضروریات کو منظور کرتی ہے۔
صارفین ، جو یہ حکم دیتے ہیں کہ ویب سکاٹ کس طرح سنبھالتے ہیں اور مواصلات کا جواب دیتے ہیں۔
ایڈمن ، جو ماڈلز کو رجسٹر کرنے کے لئے استعمال ہوتا ہے تاکہ ان کو جیانگو ایڈمن صفحے کے اندر تفصیل سے ہیرا پھیری کی جاسکے ، جہاں ڈیٹا بیس کو گرافیکل انٹرفیس کے ذریعے دیا جاسکتا ہے۔
اجوائن ، جو جیانگو کوڈ کے متضاد کاموں کی وضاحت کرتی ہے ، اگلے کام یا کوڈ کی لائن پر فوری طور پر آگے بڑھنے سے پہلے ہی چلنا شروع ہوسکتی ہے۔
جیانگو کے بہت سے دوسرے اجزاء ہوسکتے ہیں ، جن پر ہم یہاں تفصیل سے گفتگو کریں گے۔ جیانگو کو زیادہ فعال بنانے کے بہت سارے طریقے ہیں ، ویب ساکٹس کو شامل کرنا ، جو تیز ، ہموار مواصلاتی چینلز ، اجوائن ، جو غیر متزلزل کاموں کو انجام دیتے ہیں ، اور جیانگو کو بڑھانے کے لئے سافٹ ویئر کے دیگر ٹکڑوں کی ایک بڑی تعداد ، خاص طور پر ویو کے افعال میں ، جہاں زیادہ تر کوڈ پر عمل درآمد ہوتا ہے۔ ویو افعال کلیدی ہیں کیونکہ وہ عام طور پر کوڈ کے ہر ٹکڑے کا اعلان کرتے ہیں جو کسی مخصوص یو آر ایل پیٹرن ، یا سرور کے کسی حصے سے مخصوص ہوتا ہے۔
پہلے ، آئیے ویو کے افعال کو دریافت کریں۔ دیکھنے کے افعال درآمدات کی نشاندہی کرنے والے کوڈ سے شروع ہوتے ہیں جو نظارے میں استعمال ہوں گے ، اور باقاعدگی سے فنکشن تعریفوں یا کلاسوں کا استعمال کرتے ہوئے اس کی وضاحت کی جاتی ہے۔ آسان ترین نظارے فنکشن ڈیفینیشن ڈی ای ایف کے ذریعہ بیان کیے گئے ہیں ، اور ایک بنیادی ٹیمپلیٹ کے ساتھ HTTPRESPONSE واپس کریں گے۔ آئیے "ہیلو ورلڈ" کے متن کو واپس کرنے کے لئے ایک بنیادی نظریہ کی وضاحت کرکے شروع کریں۔ یاد رکھیں کہ جب بھی آپ ڈیف ، اگر ، کے لئے ، وغیرہ جیسے بیان کے بعد کوڈ شامل کرتے ہیں تو ، آپ کو اپنی پیشگی تعریفوں میں سے ہر ایک کے لئے 4 جگہیں شامل کرنے کی ضرورت ہوگی جو آپ اپنے فنکشن پر درخواست دینا چاہتے ہیں۔ ہم ان میں سے ہر ایک کا جلد ہی اس میں شامل ہوجائیں گے۔
ہماری سائٹ کی ڈائرکٹری سے ، نینو کا استعمال کرتے ہوئے فیڈ/ویوز ۔پی فائل میں ترمیم کریں اور فائل کے آخر میں درج ذیل لائنوں کو شامل کریں۔
from django.http import HttpResponse
def hello(request):
return HttpResponse('hello world')
جیانگو کا HTTPRESPONSE ایک متن کے تار کے ساتھ جواب دیتا ہے ، جس کو افتتاحی اور بند ہونے کے ساتھ اشارہ کیا جاتا ہے۔ جب بھی آپ کسی فنکشن یا کلاس ، جیسے درخواست یا تار کو معلومات دیتے ہیں تو ، آپ کو قوسین (، کھولنے اور بند ہونے) کو استعمال کرنے کی ضرورت ہوگی۔
ہمیں ابھی تک اپنا نظریہ دیکھنے کی ضرورت نہیں ہے۔ یقینا ، ہم نے سرور کو نہیں بتایا ہے کہ نظارہ کہاں ہے ، ہمیں ابھی بھی ایک ایسے راستے کی وضاحت کرنے کی ضرورت ہے جس کے ذریعہ نظارہ پیش کرنا چاہئے۔ آئیے ایپ/urls.py میں ایک بنیادی راہ کی وضاحت کرکے شروع کریں ، اور ہم بعد میں راستے کے گروپوں میں شامل ہوجائیں گے۔
ایپ/urls.py میں ، درآمد کے بیانات کے بعد ایک لائن شامل کریں جس کے آغاز کے بعد ہم نے ابھی تشکیل دیا ہوا نظریہ درآمد کیا ہے۔
from feed import views as feed_views
اب ، آئیے نظارے کے نمونہ کی وضاحت کریں۔ دیکھنے کے نمونوں میں تین اجزاء ہوتے ہیں ، راستہ کا جزو ، جو سرور کو بتاتا ہے جہاں سرور کے اندر نظریہ موجود ہے (یو آر ایل کا راستہ جس میں صارف ویب پیج میں داخل ہونے کے لئے نیویگیشن بار میں ٹائپ کرتا ہے) ، ویو جزو جہاں نظارہ کی وضاحت کی گئی ہے ، اور اس نظارے کے لئے ایک دوستانہ نام ، جب کسی ٹیمپلیٹ کے ساتھ کام کرنا آسان ہے ، خاص طور پر اس کا نام تبدیل کیا جاسکتا ہے۔ اس طرح کام کرنا اور لچکدار ہونا سمجھ میں آتا ہے ، کیونکہ آپ کا کوڈ بیس ایک بدلتا ہوا ماحول ہوگا جس کے ساتھ قیمتی اور کام کرنے میں آسان ہونے کے لچکدار اور اصلاح کی ضرورت ہے۔ یہاں آپ کا نظریہ کیسا نظر آئے گا ، آپ اسے urlpatterns = [app/urls.py کے سیکشن میں شامل کرسکتے ہیں۔ ویو پیٹرن کی وضاحت مذکورہ بالا تین اجزاء ، اور ایک فنکشن کے ساتھ کی گئی ہے جسے پاتھ کہتے ہیں۔ آپ کے یو آر ایل کے نمونے ایک فہرست ہیں ، لہذا یقینی بنائیں کہ ان میں ہر شے کو ہمیشہ کوما کے ساتھ ختم کریں ، کیونکہ یہ ہر ایک کو الگ کرتا ہے۔ ہر آئٹم کو بھی ایک نئی لائن پر جانا چاہئے ، ایک بار پھر اس سے پہلے چار جگہوں کے ساتھ ، جیسے ترتیبات میں ایپ کی طرح۔ ویب سرور کی روٹ ڈائرکٹری پر چلنے والے نظارے کو تخلیق کرنے کے لئے ہم خالی سٹرنگ فنکشن کے ساتھ نظارے کے پہلے جزو کی وضاحت کریں گے۔ آپ کے urls.py کو اب اس طرح نظر آنا چاہئے:
from feed import views as feed_views
urlpatterns = [
path('', feed_views.hello, name='hello'),
]
یہ جیانگو کے ساتھ ایک ویب سائٹ بنانے کی اساس ہے جو مکمل طور پر مستحکم ہے۔ مزید متحرک ویب سائٹ بنانے کے ل which جہاں ہم معلومات ، جیسے تصاویر ، ویڈیوز ، آڈیو اور بہت کچھ کیچنگ شروع کرسکتے ہیں ، ہمیں ماڈل استعمال کرنے کی ضرورت ہوگی ، جس کو ہم آگے تلاش کریں گے۔ ابھی کے لئے ، آئیے اپنا کوڈ چیک کریں اور سرور چلائیں۔ غلطیوں کے لئے کوڈ کو چیک کرنے کے لئے ، چلائیں:
python manage.py check
اگر کوئی غلطی کے پیغامات موجود ہیں تو ، آپ کو اپنی ایپ میں کی جانے والی تبدیلیوں کا بغور جائزہ لینا چاہئے اور دیکھیں کہ آیا کوئی ایسی چیز ہے جس کو فکس کرنے کی ضرورت ہے ، جیسے کسی خارجی یا کمی کی جگہ ، ایک اضافی کردار ، کسی بھی ٹائپو ، کسی بھی حادثاتی طور پر حذف شدہ کردار ، یا کوئی اور چیز۔ غلطی کے پیغام کو پڑھ کر (اگر آپ کے پاس ایک ہے) تو ، آپ کو لائن نمبر کے ساتھ تیار کردہ یا ترمیم شدہ فائل کا راستہ دیکھنے کے قابل ہونا چاہئے ، لہذا اس فائل اور لائن کو دیکھیں اور دیکھیں کہ کیا آپ وہاں موجود کوئی بھی چیز ٹھیک کرسکتے ہیں۔ اگر آپ نے مسئلہ طے کرلیا ہے تو ، مذکورہ بالا کمانڈ دوبارہ چلائیں۔ جب آپ کا سافٹ ویئر چلانے کے لئے تیار ہے اور کام کر رہا ہے تو ، آپ کو آؤٹ پٹ "سسٹم چیک کی نشاندہی نہیں کی جانے والی کوئی مسئلہ" نظر آئے گا۔ اب آپ جانے کے لئے تیار ہیں۔ سرور کے ساتھ چلائیں:
python manage.py runserver 0.0.0.0:8000
اب ایک ویب براؤزر کھولیں اور HTTP: // لوکل ہوسٹ: 8000 پر جائیں۔ آپ کو اپنے خیال میں HTTPRESPONSE فنکشن کے قوسین اور قیمت درج کرنے کا متن دیکھنا چاہئے۔ یہ صرف ایک بنیادی مثال ہے ، لیکن اگر آپ نے اسے ابھی تک بنایا ہے تو ، آپ اس بنیادی باتوں کو سمجھتے ہیں کہ لینکس ، باش ، ازگر اور جیانگو کس طرح کام کرتے ہیں۔ آئیے کچھ ڈیٹا بیس ماڈلنگ کی گہرائی میں کھودیں ، اور معلومات کو اسٹور کرنے میں ازگر کلاس کی طاقت کو دریافت کریں۔ اس کے بعد ، جاوا اسکرپٹ اور مشین لرننگ کا استعمال کرتے ہوئے اپنی سائٹ کو مکمل طور پر نمایاں ، لچکدار اور محفوظ بنانے سے پہلے ہم HTML اور CSS پر گرفت حاصل کرنا شروع کردیں گے۔
کلاس آپ کے ایپ کے ماڈلز میں محفوظ ہیں۔ نینو کا استعمال کرتے ہوئے ، ایپ/ماڈلز میں ترمیم کریں۔ کلاس کی تعریف کے ساتھ ایک کلاس کی وضاحت کی گئی ہے اور اسے ایک سپر کلاس پاس کیا جاتا ہے جس سے وہ وراثت میں ہوتا ہے ، اس معاملے میں ماڈل۔ ماڈل۔ کلاس کا نام کلاس تعریف کے بعد آتا ہے ، اور کلاس کی تعریف کے بعد A: (بڑی آنت) استعمال کی جاتی ہے ، اس سے پہلے کہ کلاس سے منسلک صفات اور فنکشن کی تعریفیں ذیل میں بیان کی جائیں۔ ہماری کلاس کو ایک ID کی ضرورت ہے جسے ہم اسے بازیافت کرنے اور اسے منفرد رکھنے کے لئے استعمال کرسکتے ہیں ، اور اسے کچھ معلومات کو ذخیرہ کرنے کے لئے ٹیکسٹ فیلڈ کی بھی ضرورت ہے۔ بعد میں ہم ایک ٹائم اسٹیمپ ، فائلیں ، بولینز (صحیح یا غلط تعریفیں شامل کرسکتے ہیں جو ہمارے کوڈ کو ماڈل کے ساتھ کیا کرنا ہے اس کے بارے میں فیصلے کرنے میں مدد کرسکتے ہیں ، اور اسے ترتیب دینے کے لئے استعمال کیا جاسکتا ہے) ، ایک مثال کے طور پر سرور میں لاگ ان صارف کے ساتھ ماڈل کو باندھنے کی ایک مثال ، اور بہت کچھ۔ آئیے ذیل میں کوڈ کھولیں:
from django.db import models # وہ درآمد جو ہماری کلاس کی وضاحت کے لئے استعمال ہوتی ہے اور اس کی صفات ہیں
class Post(models.Model): # خود ہماری کلاس کی تعریف
id = models.AutoField(primary_key=True) # ہمارے ماڈل کی ID ، خود بخود تیار کردہ کلید جو ہمیں ماڈل سے استفسار کرے گی ، اسے منفرد بنائے گی ، اور مفید ہے جب ہمیں ماڈل کے ساتھ بات چیت کرنے کی ضرورت ہوتی ہے جب ایک بار اس کی تشکیل ہوجاتی ہے۔
text = models.TextField(default='') # ہمارے کلاس اسٹورز کو وصف ، اس معاملے میں ، کچھ متن ، خالی تار کو ڈیفالٹ کرتے ہوئے۔
فائل کو بند کریں اور محفوظ کریں جیسا کہ ہم نے پہلے ختم کرنے کے لئے کیا تھا۔
جب ہم اس کلاس کو اپ ڈیٹ کرتے ہیں تو ہم بہت سے دوسرے فیلڈز اور اختیارات تلاش کریں گے جب ہماری ایپ تیار ہوتی ہے ، لیکن یہ کچھ متن پوسٹ کرنے کے لئے ایک ایپ بنانے کی بنیادی ضروریات ہیں۔ تاہم ، یہ ماڈل تنہا کام نہیں کرے گا۔ جیسا کہ پہلے بیان کیا گیا ہے ، ہمیں اس ماڈل کو کام کرنے کے لئے کسٹم ویو اور کسٹم یو آر ایل پیٹرن کی ضرورت ہوگی ، اور ہمیں ایک ٹیمپلیٹ کے ساتھ ساتھ ایک فارم کی بھی ضرورت ہوگی۔ آئیے پہلے فارم کو دریافت کریں۔
کسی فارم کی وضاحت کرنے کے لئے ، نینو کے ساتھ ایپ/فارمز میں ترمیم کریں اور مندرجہ ذیل لائنوں کو شامل کریں۔ ہمیں دو درآمدات ، ہمارے فارم کلاس ، نیز ماڈل کی طرح ایک کلاس تعریف ، اور میٹا نامی ایک ذیلی طبقے کے ساتھ ایک فیلڈ کی ضرورت ہوگی جو اس ماڈل کی وضاحت کرے گی جس کے ساتھ فارم تعامل کرے گا۔ اس فارم میں ایک ابتدائی فنکشن بھی ہوسکتا ہے جو درخواست ، ماڈل یا کسی اور طرح سے معلومات کی بنیاد پر اسے طے کرتا ہے ، ہم اس کو بعد میں تلاش کریں گے۔
ماڈل فارم بہت مفید ہیں کیونکہ وہ ایک ماڈل تشکیل دے سکتے ہیں یا ماڈل میں بھی ترمیم کرسکتے ہیں ، لہذا ہم ان کو دونوں کے لئے استعمال کریں گے۔ آئیے ذیل میں ایک شکل میں ایک وضاحت کریں۔
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() # اب تک ڈیٹا بیس میں موجود تمام پوسٹس سے استفسار کریں
جب تک ہم نیچے تک نہ پہنچیں یہ سب بہت آسان نظر آتا ہے۔ رینڈر ، ایچ ٹی ٹی پی کے ردعمل کی بجائے فنکشن کے ذریعہ واپس کی جانے والی قیمت ، جیسے کہ پچھلی مثال کی طرح ، ہمیشہ ایک درخواست کو اپنے پہلے ان پٹ کے طور پر لیتا ہے ، ایک سیاق و سباق کو قبول کرتا ہے (اس معاملے میں ڈیٹا بیس میں پوسٹیں) ، جو اب ٹیمپلیٹ میں پیش کی جاسکتی ہے ، اور فنکشن میں بیان کردہ ٹیمپلیٹ کو واپس کرتی ہے۔ ٹیمپلیٹ ایک HTML دستاویز بننے جا رہا ہے جس میں تھوڑی سی زبان ہے جس میں جنجا 2 نامی زبان ہے ، جو HTML میں ازگر کی معلومات کو پیش کرتی ہے۔
ٹیمپلیٹس بنانے کے لئے ، فیڈ میں دو ڈائریکٹریز بنائیں۔
mkdir feed/templates
mkdir feed/templates/feed
اگلا ، مذکورہ ڈائریکٹری میں ایک ٹیمپلیٹ میں ترمیم کریں ، فیڈ/ٹیمپلیٹس/فیڈ ، اور اس مثال کے لئے کوڈ شامل کریں۔ آئیے اس مثال کے لئے ٹیمپلیٹ کو دیکھیں۔
یہ ایک بہت ہی آسان ٹیمپلیٹ ہے۔ یہ HTML ٹیگ کھولنے اور بند کرنے کی وضاحت کرتا ہے ، ایک دستاویز کی قسم ٹیگ ، ایک باڈی ٹیگ جس میں ایک لیجنڈ عنوان ہوتا ہے ، ایک بریک ٹیگ جس میں اسکرین میں ایک چھوٹی سی لائن شامل ہوتی ہے ، اور لوپ کے لئے جو ٹیمپلیٹ میں پیراگراف کے طور پر پوسٹس کی فہرست میں ہر پوسٹ کو پیش کرتا ہے۔ پوسٹس کو پیش کرنے میں بس اتنا ہی لگتا ہے ، لیکن ابھی تک ڈیٹا بیس میں کوئی نہیں ہے۔ آئیے کچھ شیل کے ساتھ تخلیق کریں۔ ہم مینیجمنٹ ڈاٹ پی وائی کے ساتھ شیل چلا سکتے ہیں
python manage.py shell
اب ، ہم اپنا پوسٹ ماڈل درآمد کریں
from feed.models import Post
اگلا ، ہم تار کے ساتھ ایک سادہ پوسٹ بنائیں گے اور شیل سے باہر نکلیں گے۔ تار کچھ بھی ہوسکتا ہے ، جب تک کہ یہ درست متن ہے۔
Post.objects.create(text='hello world')
exit()
آخر میں ، ہمیں اپنے فیڈ میں یو آر ایل کا نمونہ شامل کرنے کی ضرورت ہوگی۔ چونکہ ہماری فیڈ ایپ متعدد یو آر ایل کا استعمال کرے گی اور ہم فائل کے سائز کو چھوٹا رکھنا چاہتے ہیں ، آئیے ہمارے فیڈ ایپ میں ایک مقامی یو آر ایل بنائیں۔
from django.urls import path
from . import views
urlpatterns = [
path('', views.feed, name='feed'),
]
ہمیں بیس ایپ میں URLS.PY میں ترمیم کرنے کی بھی ضرورت ہوگی ، جو بھی ہم نے اسے فون کرنے کا فیصلہ کیا ہے ، یہ ہم نے پہلی ڈائرکٹری تھی۔ app/app.py میں ترمیم کریں اور یو آر ایل کے نمونوں میں درج ذیل کو شامل کریں
from django.urls import include # سب سے اوپر
# ... پچھلا کوڈ یہاں
اب ، جب ہم پیر کو ازگر کے انتظام کے ساتھ سرور چلاتے ہیں۔ اگلا ، آئیے ہم نے تشکیل کردہ فارم کو نافذ کریں اور اپنی پوسٹیں بنانا شروع کریں۔ لیکن اس سے پہلے کہ ہم بہت زیادہ کوڈ لکھیں ، آئیے اس اسکرپٹ کا استعمال کرتے ہوئے بیک اپ بنائیں جو ہم نے پہلے لکھا تھا ، بیک اپ۔ اس اسکرپٹ کو شیل میں چلائیں ، کچھ لمحوں کا انتظار کریں ، اور تمام کوڈ کو ہمارے گٹ ریپوزٹری میں شامل کیا جائے گا۔
backup
فارم پر عمل درآمد نسبتا simple آسان ہے۔ ہم اپنا فارم درآمد کریں گے ، ایک پوسٹ درخواست ہینڈلر کو نظارے میں شامل کریں گے ، اور اسی نظریہ پر ری ڈائریکٹ ہونے سے پہلے ڈیٹا بیس میں پوسٹ کو محفوظ کریں گے۔ ہم اس ری ڈائریکٹ فنکشن کا استعمال کرسکتے ہیں جو ہم نے پہلے ہی درآمد کیا ہے ، اور ایک اور فنکشن جس کو ریورس کہتے ہیں تاکہ وہ ویو پیٹرن کے لئے یو آر ایل حاصل کرسکیں۔ ہم اس کے اسٹرنگ 'فیڈ: فیڈ' کے ساتھ استفسار کریں گے کیونکہ شامل پیٹرن کا نام کی جگہ فیڈ ہے ، اور اس نظارے کو فیڈ بھی کہا جاتا ہے۔
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 دستاویز ہے ، ہم فارم کے لئے ٹوکن پیش کرنے کے لئے ایک ٹیمپلیٹ ٹیگ ({٪… ٪}) استعمال کرتے ہیں ، اور دوسرا ، {{…}} فارم کو پیش کرنے کے لئے۔ ہمارے پاس بلاک ٹیگز اور ٹیمپلیٹ ٹیگ کا استعمال کرتے ہوئے متن کو پیش کرنے کے لئے ایک لوپ بھی ہے۔ بلاک ٹیگز واقعی اہم ہیں کیونکہ ہم اس کی وضاحت کرسکتے ہیں کہ کس طرح ٹیمپلیٹ کے حصے ان کے ساتھ پیش کیے جاتے ہیں ، اور ٹیمپلیٹ ٹیگز اس بنیاد ہیں کہ ہم اپنے کوڈ میں متغیرات کو کس طرح ڈالتے ہیں۔
اب ہمیں اپنی ایپ کو بہتر بنانے کی ضرورت ہے ، کیونکہ ابھی کے لئے یہ واقعی بنیادی نظر آتا ہے۔ ہم سی ایس ایس کا استعمال کرکے ، یا تو ان لائن ، یا دستاویز میں ہر شے سے منسلک کلاسوں میں کرسکتے ہیں۔ سی ایس ایس واقعی بہت اچھا ہے کیونکہ یہ اس صفحے پر موجود ہر چیز کو بتاتا ہے کہ اسے کس طرح نظر آنا چاہئے ، اور یہ واقعی اچھ look ا نظر آسکتا ہے۔ کچھ لائبریریاں ہیں جو یہ کر سکتی ہیں ، لیکن میری ذاتی بات بوٹسٹریپ ہے۔
بوٹسٹریپ کو ان کی ویب سائٹ سے ڈاؤن لوڈ کیا جاسکتا ہے ،getbootstrap.com/. ایک بار وہاں پہنچنے کے بعد ، انسٹالیشن دستاویزات کو پڑھنے کے لئے بٹن دبائیں ، اور CDN سیکشن کے ذریعے شامل سے کوڈ کو کاپی کریں۔ آپ کو اپنے HTML دستاویز کے اوپری حصے میں ، ہیڈ نامی ٹیگ میں اس کوڈ کی ضرورت ہوگی۔ نیز ، آئیے آگے بڑھیں اور ایک بیس ٹیمپلیٹ بنائیں تاکہ ہمیں ہر ٹیمپلیٹ میں ان لنکس کو دوبارہ بنانے کی ضرورت نہ ہو۔
ایم کے ڈی آئی آر ٹیمپلیٹس کے ساتھ ٹیمپلیٹس نامی ایک نئی ڈائرکٹری بنائیں ، اور پھر ٹیمپلیٹس/بیس ایچ ٹی ایم ایل میں ترمیم کریں۔
یہ اس طرح نظر آنا چاہئے:
اس بات کو یقینی بنائیں کہ سی ایس ایس اور جاوا اسکرپٹ ، .css اور .js فائلوں کی کاپی کریں ، کیونکہ ہمیں مستقبل میں اپنی سائٹ کو مزید فعال بنانے کے لئے جاوا اسکرپٹ کی ضرورت ہوگی۔
اب ، چلیں باش شیل پر واپس آئیں اور ایک فوری کمانڈ چلائیں۔ یاد رکھیں ، اگر آپ کو کبھی بھی ورچوئل ماحول تک رسائی حاصل کرنے کی ضرورت ہو تو ، ٹائپ سورس VENV/BIN/چالو کریں۔ اس سے آپ کو مقامی طور پر اس طرح ازگر کے پیکیج نصب کرنے دیں گے جس سے جینگو ان تک رسائی حاصل کرنے دیتا ہے۔ جیانگو بوٹسٹریپ کلاسز کے ذریعہ تیار کردہ اپنے فارم دینے کے ل we ، ہم کرسپی فارمز کے نام سے ایک ازگر پیکیج استعمال کریں گے۔ ہم اسے مندرجہ ذیل کمانڈ کے ساتھ ڈاؤن لوڈ کرسکتے ہیں
pip install django-crispy-forms
ایک بار جب یہ انسٹال ہوجائے تو ، اسے ترتیبات میں شامل کریں
# … پچھلا کوڈ یہاں
اب ، ہمارے فیڈ ٹیمپلیٹ میں ، ہم کچھ چیزوں کو ہٹا سکتے ہیں۔ آئیے دستاویز کے آغاز اور اختتام کو دور کریں اور اس کو ہمارے بیس ٹیمپلیٹ سے وراثت سے تبدیل کریں ، توسیع اور بلاک تعریف کا استعمال کرتے ہوئے۔ نیز ، ہم فارم میں بوجھ اور ٹیمپلیٹ فلٹر کے ساتھ ایک ٹیمپلیٹ فلٹر درآمد شامل کریں گے۔ آخر میں ، آئیے فارم کے بٹن میں بوٹسٹریپ کلاس شامل کریں تاکہ اسے بٹن کی طرح زیادہ نظر آئے۔ یہ اس طرح نظر آنا چاہئے:
خوبصورت! یہ پہلے ہی کافی حد تک کوڈ ہے۔ اگلا ، ہمیں اس کی جانچ کرنی چاہئے اور یہ یقینی بنانا چاہئے کہ ہم دیکھ سکتے ہیں کہ سب کچھ اچھی لگتی ہے ، اور یہ بھی یقینی بنائیں کہ سب کچھ ٹھیک سے کام کر رہا ہے۔ سرور کو پچھلی ہدایات کے مطابق چلائیں اور یہ یقینی بنائیں کہ سائٹ نظر آتی ہے اور ٹھیک کام کرتی ہے۔ بہت اچھا کام! آپ اگلے مرحلے پر آگے بڑھنے کے لئے تیار ہیں ، جس میں ہم اسی طرح کے یو آر ایل ، فارم ، آراء اور ٹیمپلیٹس کا استعمال کرتے ہوئے صارف لاگ ان فعالیت کو شامل کریں گے۔ بیس ٹیمپلیٹ اہم ہے ، اور ہم اس میں ترمیم کرتے رہیں گے اور ضرورت کے مطابق تبدیلیاں کریں گے ، لیکن اب آئیے اپنی سائٹ کو مزید محفوظ بنانے پر توجہ مرکوز کرتے ہیں ، صارفین کو صارف نام اور پاس کوڈ کے ساتھ لاگ ان کرنے کے قابل بناتے ہوئے ، اور آخر کار اس سے بھی زیادہ اہم معلومات جو آپ کے ایپ کو محفوظ رکھنے اور آپ کے اپنے اکاؤنٹ کو صرف آپ کے ذریعہ قابل رسائی رکھنے میں مدد فراہم کرے گی۔
ایسا کرنے کے ل we ، ہمیں جیانگو میں بنائے گئے صارف ماڈل کو استعمال کرنے کی ضرورت ہوگی۔ صارف ماڈل ایک ڈیٹا بیس ماڈل ہے ، جیسے ہماری پوسٹ ، جسے صارف کو ویب سائٹ میں لاگ ان کرنے کے لئے پیش کیا جاسکتا ہے۔ مستقبل میں ، اس سے پہلے کہ ہم سائٹ کو انٹرنیٹ پر تعینات کریں ، ہم اس ماڈل کو اس سے منسوب دوسرے ماڈلز کے ساتھ بڑھا دیں گے ، اور لاگ ان کے لئے اضافی حفاظتی اقدامات تیار کریں گے جو فشنگ کے خلاف مزاحم ہیں۔ ہم کچھ تعمیر شدہ لاگ ان فارموں کا استعمال کرکے شروع کریں گے جو جیانگو فراہم کرتا ہے۔ پہلے ، آئیے ایک نیا ایپ بنائیں جس کا استعمال ہم بنیادی لاگ ان صفحے کے لئے ٹیمپلیٹس اور آراء کو پیش کرنے کے لئے کریں گے۔ ہم ایپ کو محفوظ بنانے کے ل log مسلسل لاگ ان چیلنجوں کی نمائندگی کرنے کے لئے دیگر ایپس بھی تشکیل دیں گے ، جس میں ایک پنکوڈ ، چہرے کی پہچان ، قریب فیلڈ مواصلات ، بیرونی آلات ، ملٹی فیکٹر کی توثیق ، اور فنگر پرنٹ کی شناخت شامل ہے۔
ہم نے پہلے ہی ایک ایپ شروع کرنے کے بارے میں بات کی ہے۔ ہماری ڈائرکٹری سے ، ورچوئل ماحول کے اندر ، انتظام کریں۔ ان دلائل کو
python manage.py startapp users
اب ، ہمارے پاس نئی ایپ کے لئے ایک ڈائریکٹری ہونی چاہئے۔ آئیے اس ڈائرکٹری میں ایک نظریہ تخلیق کرکے شروع کریں جو صارف کے لاگ ان سے مطابقت رکھتا ہے۔ جیانگو نے صارف کے لاگ ان کے خیالات کو بنایا ہے ، لیکن یہ ہمارے لئے موزوں نہیں ہوں گے کیونکہ ہمیں کسٹم ویو کی ضرورت ہے ، جو ترجیحی طور پر کسی تعریف کے ساتھ کی جاتی ہے۔
اس نظریہ میں ، ہم پوسٹ کی درخواست کی جانچ پڑتال کرکے ، درخواست کی درخواست کی جانچ پڑتال کریں گے۔
صارفین/نظریات میں
username = request.POST['username'] # پوسٹ کی درخواست سے صارف نام اور پاس ورڈ حاصل کریں
password = request.POST['password'] # صارف کی توثیق کریں
بنیادی لاگ ان ویو کے لئے آپ کو یہ سب ضرورت ہے۔ اب ، بیس ٹیمپلیٹ کو بڑھا کر نظریہ کے لئے ایک فارم بنائیں۔ ہم صارفین کے فولڈر میں ٹیمپلیٹس کے لئے ایک نئی ڈائرکٹری تشکیل دے کر شروع کریں گے۔
mkdir users/templates
mkdir users/templates/users
اب ، ہمیں صارفین/ٹیمپلیٹس/صارفین/لاگ ان HTML میں ترمیم کرنے کے قابل ہونا چاہئے۔ جب ہم اس پر موجود ہیں ، ہم صارف کو بھی سائن اپ کرنے کی اجازت دینے کے لئے ایک ٹیمپلیٹ بنائیں گے۔
nano users/templates/users/login.html
اب ، ٹیمپلیٹ میں ،
یہ لاگ ان ٹیمپلیٹ کی بنیادی باتیں ہیں۔ یہ واقعی ساخت کے دوسرے ٹیمپلیٹ کی طرح ہے ، لیکن جب یہ پیش کیا جاتا ہے تو یہ تھوڑا سا مختلف نظر آتا ہے۔ ہم اس کوڈ کو رجسٹر ایچ ٹی ایم ایل کے نام سے ایک اور اسی طرح کے ٹیمپلیٹ بنانے کے لئے کاپی کرسکتے ہیں ، جہاں ہم الفاظ کو تبدیل کریں گے اور ایک نیا فارم استعمال کریں گے جو ہم تیار کرتے ہیں۔ آئیے پہلے ٹیمپلیٹ بنائیں۔ صارفین/ٹیمپلیٹس/صارفین/رجسٹر HTML میں ترمیم کریں اور درج ذیل کوڈ شامل کریں:
اب ہم اپنے صارف کے اندراج کے ل a ایک فارم بنائیں اور اپنے صارف لاگ ان کو ماڈل کے ساتھ اپ گریڈ کرنے سے پہلے اپنے خیالات پر واپس جائیں۔ ہم اس فارم کو شروع کرنے کے لئے بنیادی بنائیں گے ، لیکن مستقبل میں مزید تفصیلات اور سیکیورٹی کی خصوصیات جیسے معاہدوں اور کیپچا کو شامل کریں گے۔ نانو صارفین/فارموں کے ساتھ فارم میں ترمیم کریں ، اور درج ذیل کوڈ کو شامل کریں۔
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']
لہذا ہمارے یہاں ایک اور فارم ہے ، جو کافی آسان کام کرتا ہے۔ یہ صارف کا رجسٹر فارم ہے جس میں صارف نام ، ای میل اور پاس ورڈ کے ساتھ ساتھ پاس ورڈ کی تصدیق کے فیلڈ بھی ہیں۔ نوٹ کریں کہ یہ فارم باقاعدہ شکلوں میں توسیع نہیں کرتا ہے۔ فارم کلاس ، یہ ایک ماڈل فارم ہے جس کا مطلب ہے کہ اس میں میٹا ہے۔ ایک فیلڈ کی وضاحت بالکل اسی طرح کی گئی ہے ، اور کلاس میٹا ماڈل کی وضاحت کرتا ہے جس میں فارم باقی معلومات کے مساوی ہے جو فارم پر لکھی جائے گی۔ اس میں سے بیشتر پہلے ہی جیانگو کے صارف کی تشکیل میں تعمیر میں موجود ہیں ، لہذا ہم اسے کلاس کی بنیاد کے طور پر استعمال کریں گے (قوسین میں منظور کیا گیا)۔
اگلا ، ہم کسی صارف کو رجسٹر کرنے کے نظریے کی جانچ کریں گے ، اب ہمارے پاس ایک فارم اور ایک ٹیمپلیٹ ہے۔ یہ ایک ماڈرفرم ہے ، بالکل اسی طرح جیسے نئے پوسٹ ویو میں ہے۔ صارفین/نظریات میں ترمیم کریں۔
# … درآمدات
صارف کو رجسٹرڈ کرنے کے لئے ہمیں بس اتنا ہی ضرورت ہے ، لیکن ہمارے پاس مزید معلومات ہونی چاہئیں۔ ہم صارف کے اندراج کے وقت کو جاننا چاہتے ہیں ، وہ کس وقت سائٹ پر آخری تھے ، ان کے بارے میں کچھ معلومات ، جیسے سیرت ، ٹائم زون ، وغیرہ۔ نیز ، ہمیں اپنے فیڈ ماڈل ، پوسٹ کو اپ ڈیٹ کرنے کی ضرورت ہوگی تاکہ صارف کے ماڈل کا حساب کتاب کیا جاسکے اور ہر صارف کو پوسٹوں کو منسوب کیا جاسکے۔ ایسا کرنے کے ل we ، ہم دونوں ایپس میں ماڈلز کو اپ ڈیٹ کریں گے۔ آئیے فیڈ ماڈل میں ترمیم کرکے شروع کریں۔ یہ اب اس طرح نظر آنا چاہئے:
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) # صارف کے لئے پروفائل بنانے کے ل this ، اس لائن کو شامل کرنا یقینی بنائیں
یہ کسی بھی معلومات کو پُر کیے بغیر ، صارف کے لئے آسانی سے ایک پروفائل تیار کرتا ہے۔ اب ، ہم یہ یقینی بنانا چاہتے ہیں کہ صارف کے اکاؤنٹ میں اکثر لاگ ان نہیں کیا جاسکتا ہے ، یا کم از کم پاس ورڈز زیادہ کثرت سے آزما نہیں سکتے ہیں ، لہذا آئیے لاگ ان ویو کو اپ ڈیٹ کریں۔
# … درآمدات
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) # لہذا وہ کچھ سیکنڈ کے لئے دوبارہ لاگ ان نہیں ہوسکتے ہیں
یہ سلامتی کا بنیادی بنیادی بنیادی بنیادی بنیادی ہے۔ اس بات کو یقینی بنائیں کہ سائٹ کسی کے پاس صرف ہر ممکن پاس ورڈ کے امتزاج کو آزمانے کے لئے خطرہ نہیں ہے ، یا ایک ہی وقت میں ان میں سے کچھ بھی۔ یہ عام صارف کے لئے مایوس کن نہیں ہوگا جو ان کے پاس کوڈ کو جانتا ہے اور صرف چند آلات پر لاگ ان ہوتا ہے ، لیکن اس سے متعدد فشنگ روبوٹ ایپ سے باہر رہیں گے۔ نوٹ کریں کہ ہم نے ایک متغیر ، CAN_LOGIN کے ساتھ ایک IF بیان شامل کیا ، جو ماضی میں ایک وقت ہونا چاہئے ، اور اسی صارف نام کا استعمال کرتے ہوئے اسے ہر ناکام لاگ ان کے ساتھ اپ ڈیٹ کریں۔ اس طرح ، ایک بدنیتی پر مبنی صارف جلد کے قریب کہیں بھی پاس ورڈ کا اندازہ نہیں لگائے گا۔ ڈیٹ ٹائم میں سیکنڈ کی تعداد کی تعداد۔ ٹیمیڈیلٹا () کو بھی اپ ڈیٹ کیا جاسکتا ہے ، اور ویب سائٹ مزید لچکدار ہوگی لیکن زیادہ سیکنڈ کے ساتھ اس کے قابل استعمال ہونے کے قابل نہیں ہوگا۔ میں شروع کرنے کے لئے 15 کی سفارش کرتا ہوں۔
یاد رکھیں ، ہم نے اپنے کام کو بچانے کے لئے ایک بیک اپ اسکرپٹ بنایا ہے ، لہذا آئیے آگے بڑھیں اور جو کچھ ہمارے پاس ہے اس کو یقینی بنائیں کہ ہمارے پاس سب کچھ محفوظ ہے۔ کمانڈ چلائیں:
sudo backup
ایک بار پھر ، یہ آپ کے کام کو اب تک بچائے گا۔ میں آپ کے کام کو بچانے کے لئے بار بار بیک اپ چلانے کی سفارش کرتا ہوں ، اور آپ خود بخود بیک اپ کی نوکری بھی چلانا چاہیں گے۔ آپ یہ یونکس یوٹیلیٹی کا استعمال کرکے کرون کہتے ہیں۔ اس افادیت کو چالو کرنے کے لئے ، مندرجہ ذیل کمانڈ چلائیں اور اپنا پاس ورڈ درج کریں:
sudo crontab -e
اگر آپ نے پہلے ہی نانو کے لئے آپشن 1 کا انتخاب نہیں کیا ہے تو ، ٹیکسٹ ایڈیٹر آپ کو پہلے ہی واقف ہونا چاہئے ، اور تیر والے چابیاں استعمال کرکے فائل کے نیچے سکرول کرنا چاہئے۔ مندرجہ ذیل لائن شامل کریں:
0 * * * * sudo backup
کرون فارمیٹ منٹ ، گھنٹہ ، مہینے کا دن ، مہینہ ، ہفتہ کا دن استعمال کرتا ہے ، جہاں A * یا ایک نمبر کمانڈ کو چلانے کے لئے نمائندگی کرتا ہے۔ منٹ کے لئے 0 اور باقی اختیارات کے لئے * کا استعمال کرتے ہوئے ، ہم منٹ کے آغاز پر ہر گھنٹے کے پہلے منٹ پر کمانڈ چلا سکتے ہیں۔ اس سے ہمیں خود بخود کوڈ کا بیک اپ لینے دیتا ہے۔ جب سوڈو کے ساتھ پھانسی دی جاتی ہے تو کرون کی تمام ملازمتیں جڑ کے طور پر چلتی ہیں ، لہذا ہمیں ہر گھنٹے میں پاس ورڈ ٹائپ کرنے کی ضرورت نہیں ہوگی۔
پاس ورڈ کا استعمال کیے بغیر اپنے کوڈ کا بیک اپ لینا آسان بنانے کے ل let ، آئیے ہمارے بیک اپ کمانڈ کے لئے پاس ورڈ کو غیر فعال کریں۔ ہم مندرجہ ذیل کمانڈ پر عمل درآمد کرکے اور پاس ورڈ داخل کرکے یہ کریں گے:
sudo visudo
اب ، آئیے فائل کے نیچے سکرول کریں اور ایک اور لائن شامل کریں:
ALL ALL=NOPASSWD: /bin/backup
اس سے ہمیں بغیر کسی پاس ورڈ کے کسی صارف کی حیثیت سے "بیک اپ" کمانڈ چلانے دیتا ہے۔ اس کے لئے فارمیٹ آسان ہے ، صرف "تمام تمام = نوپاس ڈبلیو ڈی:/بن/" کے ساتھ لائن کا سابقہ اور کمانڈ کے ساتھ اختتام پذیر ، مثال کے طور پر/بن/بیک اپ ، جو/usr/bin/میں موجود ہے۔
اب ، ای میل کے ساتھ کام کرنا شروع کریں۔ ای میل ویب سائٹوں کے لئے واقعی اہم ہے ، کیونکہ یہ ویب سائٹ کو زیادہ محفوظ رکھنے کا ایک طریقہ ہے ، تصدیق کریں کہ صارفین حقیقی لوگ ہیں ، اور یہاں تک کہ صارفین کو مارکیٹ کی مصنوعات یا خدمات بھی۔ بہت سارے لوگ جو انٹرنیٹ پر بار بار اپنے ای میل کی جانچ پڑتال کرتے ہیں ، اور ان مصنوعات اور خدمات کے بارے میں ہر طرح کی مارکیٹنگ ای میل وصول کرتے ہیں جن میں وہ دلچسپی رکھتے ہیں۔ جب جیانگو ویب سائٹ پر ای میل کو قابل بنانے کی بات آتی ہے تو کچھ اختیارات موجود ہیں ، اور آپ کا استقبال ہے کہ جو بھی آپ کے لئے بہترین کام کرتا ہے۔
پہلے ، آپ کسی ای میل سروس کی ادائیگی کرسکتے ہیں جو آپ کو اپنے ڈومین سے ای میل بھیجنے کے قابل بنائے گا اور کم سے کم کوڈ کی ضرورت ہے۔ بہت ساری خدمات پیش کرتے ہیں جو یہ پیش کرتے ہیں ، جیسے گوگل ورک اسپیس ، بھیجنے والا ، میلگن ، اور بہت کچھ۔
بصورت دیگر ، آپ شروع سے ہی اپنے سرور کے اندر اپنی ای میل سروس بنانے سے دور ہیں۔ میں اس اختیار کی سفارش کرتا ہوں ، حالانکہ یہ زیادہ کوڈ ہے اور اس میں خصوصی ہوسٹنگ کی ضرورت پڑسکتی ہے۔ آپ زیادہ تر ممکنہ طور پر اپنے گھر کے کمپیوٹر سے میل سرور شروع نہیں کرسکیں گے ، لہذا آئیے آگے بڑھیں اور کلاؤڈ میں سرور شروع کرنے سے پہلے ای میل بھیجنے کے لئے ترتیب اور کوڈ کا جائزہ لیں اور اس کے اندر اپنا میل سرور بنائیں۔
پہلے ، مندرجہ ذیل کمانڈ کے ساتھ ترتیبات میں ترمیم کریں۔
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)
جب آپ اپنی ایپ کو تعینات کرنے کے لئے تیار ہوں تو ان کو تبدیل کرنا یقینی بنائیں ، ہم بعد میں اس پر دوبارہ نظر ڈالیں گے۔ ای میل_اڈریس سیٹنگ وہ ای میل ہونا چاہئے جس سے آپ بھیجنا چاہتے ہو ، اور پاس ورڈ (ای میل_ہوسٹ_ پاس ورڈ) کو سرور کے ل use آپ کے پاس ورڈ پر سیٹ کیا جانا چاہئے۔ میں ترتیبات میں ان لائنوں کے اوپر درج ذیل منطق کا استعمال کرتے ہوئے کوڈ سے باہر رکھنے کے لئے ایک کنفگ فائل سے پاس ورڈ لوڈ کرتا ہوں۔
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
یہ ای میل کافی آسان ہے۔ یہ کسی صارف ، سائٹ کے لئے بیس یو آر ایل ، اور صارف کی شناخت اور ٹوکن کا سیاق و سباق لیتا ہے جو صارف کے ای میل کی تصدیق کے لئے استعمال ہوتا ہے۔ ٹیمپلیٹ کو پیش کرنے کے لئے کچھ ازگر کوڈ لکھنے سے پہلے ترتیبات میں بیس یو آر ایل کی وضاحت کرنا یقینی بنائیں۔ آگے بڑھیں اور شروع کے قریب ، ایپ/ترتیبات ڈاٹ پی وائی میں درج ذیل لائنوں کو شامل کریں۔
SITE_NAME = 'Django App'
PROTOCOL = 'https'
DOMAIN = 'example.com'
BASE_URL = PROTOCOL + '://' + DOMAIN
آخر کار ، جب آپ کی سائٹ انٹرنیٹ کے ل ready تیار ہوجائے اور آپ اسے تعینات کریں تو ، آپ اپنے ڈومین کی وضاحت سائٹ کی نمائندگی کے لئے خریدنے والے ڈومین نام کے طور پر کرنا چاہیں گے۔ یہ وہ نام ہے جسے آپ اپنی سائٹ تک رسائی کے ل the نوبر میں ٹائپ کریں گے۔ ابھی کے لئے ، آپ ڈومین کو خالی چھوڑ سکتے ہیں یا پلیس ہولڈر استعمال کرسکتے ہیں۔ آپ سائٹ_ نام کو کسی ایسے نام میں تبدیل کرنا چاہیں گے جو آپ اپنی سائٹ کو اپنے انتخاب کے لئے دینا چاہتے ہیں۔
ای میل بھیجنے سے پہلے ، آئیے ایک ٹوکن جنریٹر بنائیں تاکہ ہمارے پاس اکاؤنٹ ایکٹیویشن ٹوکن ہو جس کی میعاد کبھی ختم نہ ہو۔ ہم اکاؤنٹ ایکٹیویشن ٹوکن کی تعمیر اور درآمد کرکے یہ کام کرسکتے ہیں جو مندرجہ ذیل کی طرح لگتا ہے۔ فائل میں ترمیم کریں:
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()
یہ بنیادی ٹوکن جنریٹر ایک ٹوکن تیار کرتا ہے جسے ہم صارف کو یو آر ایل میں بھیج سکتے ہیں اور صارف اپنے ای میل کی تصدیق اور ان کے اکاؤنٹ کو چالو کرنے کے لئے استعمال کرسکتا ہے۔
اگلا ، آئیے دیکھتے ہیں کہ ای میل کیسے بھیجیں۔ نینو کا استعمال کرتے ہوئے ، صارفین/ای میل ڈاٹ پی وائی میں ترمیم کریں۔
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)
یہ کافی آسان ہے۔ ہم ای میل بھیجنے ، ای میل کو ٹیمپلیٹس ، اور اپنی ترتیبات کے ساتھ پیش کرنے کے لئے درکار افعال درآمد کرتے ہیں ، اور پھر ہم ای میل کو ٹیمپلیٹ کے نام سے بیان کرتے ہیں اور اسے فنکشن کا استعمال کرتے ہوئے صارف کو بھیجتے ہیں۔ آپ دیکھیں گے کہ ہم نے میل بھیجنے کے لئے فنکشن کی وضاحت نہیں کی ہے ، ابھی بھی بھیجیں ، تو آئیے ، آئیے اس کوڈ کے نیچے لکھیں جو ہم نے پہلے ہی صارفین/ای میل میں شامل کیا ہے۔
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()
یہ تھوڑا سا زیادہ پیچیدہ ہے ، اور ہم ابھی تک اس سارے کوڈ کو چلانے کے لئے تیار نہیں ہیں۔ نوٹس کریں کہ ہم ایک UNSUB_LINK کی وضاحت کر رہے ہیں ، صارف ہمارے ای میلز سے ان سبسکرائب کرنے کے لئے جو لنک استعمال کرسکتا ہے۔ یہ ضروری ہے ، کیونکہ صارفین کو ہمارے ای میلز سے باہر نکلنے کے قابل ہونے کی ضرورت ہوگی جب تک کہ وہ کسی بھی وقت انہیں دیکھنا نہ چاہیں۔ ہم اپنے پیغام کا ایک ٹیکسٹ متبادل بھی شامل کرتے ہیں ، جو HTML پیغام ہے جو HTML ٹیگس کو چھینتا ہے۔ آخر میں ، ہم چیک کرتے ہیں کہ آیا ای میل بھیجا گیا ہے ، اور اگر ایسا نہیں ہوا تو ہم صارف کے پروفائل میں نشان زد کرتے ہیں کہ ان کا ای میل درست نہیں ہے۔
آئیے صارف کے ماڈلز میں واپس جائیں تاکہ ہم یہ سب کام کرسکیں۔ ہمیں ان سبسکرائب کرنے کے ل a ایک لنک تیار کرنے کے لئے کسی فنکشن کی وضاحت کرنے کی ضرورت ہے ، اور یہ نشان لگانے کے لئے بولین فیلڈ کی وضاحت کرنے کی ضرورت ہے کہ صارف کا ای میل درست نہیں ہے۔
پہلے ، صارفین/ماڈلز کے اوپری حصے میں درج ذیل درآمدات شامل کریں۔
nano users/models.py
# ... تو… کے بارے میں… کے بارے میں… کے.
اگلا ، آئیے صارف ماڈل میں ٹوکن بنانے کے ل functions افعال شامل کریں اور ای میل کو چالو کرنے کے لئے استعمال ہونے والے ٹوکن کو چیک کریں ، نیز فیلڈ کو بچانے کے لئے کہ صارف کامیابی کے ساتھ ان کی میل وصول کررہا ہے یا نہیں۔ صارفین/ماڈلز میں ایک بار پھر ، ماڈل کے اختتام پر درج ذیل کوڈ (انڈینٹڈ کوڈ) میں شامل کریں
# ... تو… کے بارے میں… کے بارے میں… کے.
TimestampSigner().unsign(key, max_age=60 * 60 * 24 * 30) # 30 دن کے لئے درست
یہ کافی آسان ہے ، ہم ایک ٹائم اسٹیمپ سائنر کا استعمال کرتے ہیں ، جو ایک بنیادی خفیہ نگاری کا آلہ ہے ، ایک ٹوکن بنانے کے لئے جو ایک مقررہ وقت کے بعد ختم ہوجائے گا ، اور ہم یہ بھی جانچنے کے لئے ایک اور فنکشن کا استعمال کرتے ہیں کہ آیا یہ درست ہے یا نہیں۔ ہم ان ٹوکن کو دو بار استعمال کرتے ہیں ، ایک بار ای میل کی تصدیق کے ل and ، اور ایک بار ان سبسکرائب لنک کے لئے۔
اب جب ہمارے پاس یہ ہے ، ہمیں جو کام کرنے کی ضرورت ہوگی وہ خیالات میں ہے۔ صارفین/نظریات کے اندر۔
nano users/views.py
پہلے ، درج ذیل درآمدات شامل کریں۔ میں نے کچھ اضافی چیزیں پھینک دیں لہذا ہمیں بعد میں مزید اشیاء دوبارہ درآمد کرنے کی ضرورت نہیں ہوگی۔
from .email import send_verification_email # یقینی بنائیں کہ توثیق ای میل بھیجنے کی تقریب کو درآمد کریں
آپ کے پاس پہلے سے ہی ان میں سے کچھ درآمد ہوسکتی ہیں ، لیکن ان کو دہرانے میں تکلیف نہیں ہوتی ہے۔ آپ کو تصدیقی ای میل بھیجنے کی تقریب کے ساتھ ساتھ دیگر درآمدات کے علاوہ ، صارفین سے اکاؤنٹ_یکٹیویشن_ٹوکین بھی درآمد کرنے کی ضرورت ہوگی۔
اب ، فائل کے نیچے ، درج ذیل کوڈ شامل کریں:
# ان سبسکرائب کریں
# بصورت دیگر لاگ ان صفحے پر ری ڈائریکٹ کریں
# بھیجنے والا میل (درخواست ، صارف)
یہ بہت کوڈ ہے۔ آئیے اسے توڑ دیں۔ پہلا فنکشن ، صاف اور آسان ، صارف کو میلنگ لسٹ سے سبسکرائب کرتا ہے۔ دوسرا فنکشن ان کے ای میل کو چالو کرتا ہے ، اور آپ دیکھیں گے کہ میں نے ایک تبصرہ شدہ فنکشن ، بھیجنے والے میل کو شامل کیا۔ آپ کا استقبال ای میل بھیجنے کے لئے ای میل ٹیمپلیٹ اور فنکشن کی تعریف کا استعمال کرنے میں آپ کا استقبال ہے ، میں نے ابھی تک نہیں کیا ہے۔ آخری فنکشن جس میں میں نے پھینک دیا ہے وہ اہم ہے ، کیونکہ ایکٹیویشن ای میلز کی میعاد ختم ہوجاتی ہے۔ لہذا ، ہمیں کچھ وقت ایکٹیویشن ای میل کو دوبارہ بھیجنے کی ضرورت ہوگی۔ ہم اس کے لئے ایک بنیادی فارم استعمال کرسکتے ہیں ، اور توثیق ای میل بھیجنے کے لئے فنکشن کو کال کرسکتے ہیں۔ اس سے پہلے کہ ہم ایسا کریں ، آئیے اس بات کو یقینی بنائیں کہ یہ رجسٹر ویو میں فنکشن کال شامل کرکے پہلی جگہ بھیجا گیا ہے۔ اس لائن کو رجسٹر ویو ، ڈی ای ایف رجسٹر ، میں صارفین/نظریات میں شامل کرنے سے ٹھیک پہلے شامل کریں۔
nano users/views.py
# … (بعد) ڈی ای ایف رجسٹر (درخواست):
# … (پہلے) ری ڈائریکٹ (
آپ کو اس کوڈ کے اسنیپٹ میں پہلی اور آخری لائنیں شامل کرنے کی ضرورت نہیں ہے ، صرف اس بات کو یقینی بنائیں کہ رجسٹر ویو صارف کو توثیق ای میل بھیجتا ہے۔ یہ اس طرح نظر آنا چاہئے:
# … درآمدات
send_verification_email(user) # اس لائن کو شامل کرنا یقینی بنائیں!
اب ، ہمیں ایکٹیویشن ای میل کو دوبارہ بھیجنے کے لئے ایک فارم شامل کرنے کی ضرورت ہوگی۔ صارفین/forms.py میں ، مندرجہ ذیل فارم شامل کریں:
# … (درآمدات)
ہمیں اس ریزینڈ ای میل ایکٹیویشن فارم کے مطابق ایک ٹیمپلیٹ کی بھی ضرورت ہوگی۔ آئیے اس ٹیمپلیٹ کو شامل کریں۔ فائل میں ترمیم کریں:
nano users/templates/users/resend_activation.html
اگلا ، فائل میں درج ذیل کوڈ شامل کریں۔
وہو ، یہ بہت ہے! اب ، جب ہم کوڈ اپنے سرور پر تعینات کرتے ہیں تو ، ہم ای میل میں کلک کے ساتھ HTML ای میل بھیجنے اور صارف کے اکاؤنٹس کو چالو کرنے کے اہل ہوں گے۔ ہم ایک سادہ استقبال ای میل بھی بھیجنا چاہتے ہیں ، لہذا آئیے دیکھتے ہیں کہ ایسا کرنے کا طریقہ۔ صارفین/ای میل ڈاٹ پی میں واپس ، مندرجہ ذیل کوڈ شامل کریں:
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_required ڈیکوریٹر کو شامل کرسکتے ہیں اور اپنے خیالات کو محفوظ بنا سکتے ہیں ، صارف کے سائن اپس لے سکتے ہیں ، تعمیل ای میل بھیجیں ، اور کیشے کی معلومات ، جو اس کی بنیاد ہے کہ کسی ویب سائٹ کو متعلقہ رہنے کے لئے کیا کرنے کی ضرورت ہے۔ ہم کچھ اور مفید خصوصیات شامل کریں گے ، اور پھر اپنی سائٹ کو محفوظ اور مناسب بنانے کے لئے اپنے کوڈ کو ریموٹ سرور میں تعینات کرنے ، میل سرور ، ڈومین کنفیگریشن ، اور فلٹرز ترتیب دینے کے لئے ایک بنیاد بنائیں گے۔
ہمیں پاس ورڈ ری سیٹ ویو کی بھی ضرورت ہوگی ، لہذا آئیے اس کو واقعی جلدی میں شامل کریں۔ جیانگو کا پاس ورڈ ری سیٹ ویو ان میں کچھ افعال میں ٹوٹ گیا ہے ، لیکن ہم دیکھیں گے کہ اپنا نظریہ ، ای میل ٹیمپلیٹ ، فارم اور یو آر ایل کے نمونوں کو کیسے لکھیں۔ صارفین/نظریات میں ، یہ نظریہ کیسا لگتا ہے
# ... درآمدات
یہ فارم جیانگو میں بنایا گیا ہے ، لیکن ہمیں پاس ورڈ ری سیٹ ، صارفین/ٹیمپلیٹس/صارفین/پاس ورڈ_ریسیٹ_کونفرم. html کی تصدیق کے لئے ایک ٹیمپلیٹ کی ضرورت ہوگی۔
ہمارے پاس پاس ورڈ ری سیٹ ای میل بھیجنے کے لئے ایک ٹیمپلیٹ بھی ہے ، ایک سادہ فارم کے ساتھ ، صارفین/ٹیمپلیٹس/صارفین/پاس ورڈ_ریسیٹ۔ html میں بھی۔
ای میل کے لئے ٹیمپلیٹ خود آسان ہے ، یہ ایک بنیادی HTML فائل ہے جس میں پاس ورڈ کو دوبارہ ترتیب دینے کے لئے ایک لنک پیش کیا جاتا ہے ، صارفین/ٹیمپلیٹس/صارفین/پاس ورڈ_ریسیٹ_ ای میل. html میں۔ جیانگو خود بخود اس فائل کی ترجمانی کرے گا۔
ہمیں دو اور ٹیمپلیٹس کی بھی ضرورت ہوگی۔ سب سے پہلے اس بات کی تصدیق کرنا ہے کہ ای میل بھیجا گیا ہے۔ ان کے لئے نظارے پہلے ہی جیانگو میں ہیں ، لہذا ہمیں صرف یو آر ایل ایس میں ان سے خطاب کرنے کی ضرورت ہے۔ یہ ٹیمپلیٹ صارفین/ٹیمپلیٹس/صارفین/پاس ورڈ_ریسیٹ_ڈون. html پر واقع ہے
اور آخر میں ، اس بات کی تصدیق کرنے کے لئے کہ پاس ورڈ کو دوبارہ ترتیب دیا گیا ہے ، صارفین/ٹیمپلیٹس/صارفین/پاس ورڈ_ریسیٹ_کمپلیٹ۔ html
اب ، ہمیں ان خیالات کے لئے URL نمونوں کی ضرورت ہے۔ صارفین/urls.py میں ، مندرجہ ذیل URL نمونوں کو شامل کریں:
# ... یہاں پچھلے یو آر ایل
چار ٹیمپلیٹس ، یہ بہت ہے! لیکن اب ہم اس بات کا یقین کر سکتے ہیں کہ ویب براؤزر سے ، کسی بھی وقت صارف کا پاس ورڈ دوبارہ ترتیب دینے کے قابل ہو جائے گا۔
میں سمجھتا ہوں کہ یہ بہت کوڈ ہے۔ اگر یہ آپ کے سر پر تھوڑا سا لگتا ہے تو ، ٹھیک ہے۔ آپ بہتری لائیں گے ، آپ کی تفہیم میں بہتری آئے گی ، اور آپ بہت جلد کوڈ کے ساتھ بہت زیادہ اہل ہوجائیں گے۔ اگر آپ مکمل طور پر کھو چکے ہیں تو ، میں تجویز کرتا ہوں کہ بعد میں اس سافٹ ویئر میں واپس آنے کے بعد آن لائن کوڈ کورس پر سیکھیں۔ یہ عام طور پر شروع کرنے کے لئے آزاد ہیں ، اور جب آپ اس پروجیکٹ میں واپس آئیں گے تو آپ کو کامیاب ہونے کی ضرورت ہر چیز میں آپ کی رہنمائی کریں گے۔ اگر آپ کو ایسا لگتا ہے کہ آپ جاری رکھنے کے لئے تیار ہیں ، پڑھیں ، اگلا ، ہم آپ کے کوڈ کو ریموٹ سرور میں تعینات کرنے اور میل سرور کو ترتیب دینے کے ساتھ ساتھ بیک کا استعمال کرتے ہوئے آپ کی تعیناتی کو خودکار کرنے کا احاطہ کریں گے تاکہ آپ ہمیشہ کچھ آسان احکامات کے ساتھ ایک نیا پروجیکٹ مرتب کرسکیں۔
ریموٹ سرور میں تعینات کرنے سے پہلے ہمیں آخری کام کرنے کی ضرورت ہے ہماری سائٹ کو تھوڑا سا زیادہ محفوظ بنانا ہے۔ آپ دیکھیں گے کہ لاگ ان ویو صرف ایک صارف نام اور پاس ورڈ لیتا ہے ، اور اس میں کوئی ملٹی فیکٹر کی توثیق یا ایک ٹائم کوڈ نہیں ہے۔ یہ ایک آسان فکس ہے ، اور اسی کوڈ کے ساتھ ، ہم اپنی سائٹ کو ٹیکسٹ پیغامات بھیج سکتے ہیں اور یہاں تک کہ سرور کو بھیجے گئے ٹیکسٹ میسجز کے لئے بھی جوابدہ ہوسکتے ہیں۔ شروع کرنے کے لئے ، ہم صارف کے ماڈلز میں واپس جائیں گے اور ٹائم اسٹیمپ سگنر شامل کریں گے جو ہر لاگ ان کی نمائندگی کرے گا۔ ہم صارف کے ماڈل میں ایک انوکھا ، گھومنے والا شناخت کنندہ بھی شامل کریں گے جو ہمارے لاگ ان میں اضافی سیکیورٹی شامل کرنے کے لئے استعمال ہوگا۔ صارف کے ماڈلز ، صارفین/ماڈلز میں ترمیم کرنا ، مندرجہ ذیل کوڈ شامل کریں:
# یقینی بنائیں کہ UUID ، ٹائم اسٹیمپ سگنر اور URL جنریٹر (ریورس) درآمد کریں
# اس کوڈ کو یہاں شامل کریں
# اور اس فنکشن کو شامل کریں
TimestampSigner().unsign(key, max_age=60 * settings.AUTH_VALID_MINUTES) # 3 منٹ کے لئے درست
اس بات کو یقینی بنائیں کہ آپ کے صارفین/ماڈلز۔ اسے توڑتے ہوئے ، یہ آسان ہے۔ ہمارے پاس کچھ درآمدات ہیں ، ایک ٹائم اسٹیمپ سائنر جو ایک کریپٹوگرافک افادیت ہے جو ایک محفوظ کوڈ تیار کرسکتی ہے اور اس کی تصدیق کر سکتی ہے تاکہ یہ یقینی بنایا جاسکے کہ یہ درست ہے ، صرف ایک بار استعمال کیا گیا ہے ، اور سیکنڈ کی ایک خاص تعداد سے زیادہ پرانا نہیں ہے۔ ہم ایک UUID بھی استعمال کرتے ہیں ، جو ایک انوکھا شناخت کنندہ ہے جو ہمارے صارف کو ٹوکن کے دستخط میں ، اور URL میں شناخت کرتا ہے جہاں ٹوکن صارف کو بھیجا جاتا ہے۔ ہم اس بنیادی خفیہ نگاری کو دو عنصر کی توثیق کے نظارے کی تیاری کے لئے استعمال کریں گے۔ اس سے پہلے کہ ہم کچھ بھی کریں ، آئیے ہجرت کو چلائیں تاکہ ہمارے صارف کے ماڈل اپ ڈیٹ ہوجائیں۔ مینجمنٹ ڈاٹ پی وائی کے ساتھ ڈائریکٹری میں ، ہجرت کو مکمل کرنے اور مکمل کرنے کے لئے درج ذیل کمانڈز چلائیں۔
source venv/bin/activate
python manage.py makemigrations && python manage.py migrate
یہ ضروری ہے کیونکہ جب بھی ہم ماڈلز میں تبدیلیاں لاتے ہیں ، ہمیں ماڈلز کو استعمال کرنے سے پہلے ٹیبلز بنانے اور ڈیفالٹس کے ساتھ ڈیٹا بیس کو اپ ڈیٹ کرنے کی ضرورت ہوگی۔
اگلا ، آئیے ثانوی توثیق کے نظارے پر ری ڈائریکٹ کرنے کے لئے اپنے لاگ ان نظارے کو بہتر بنائیں۔ صارفین/نظریات میں۔
# … درآمدات
if user and user.profile.can_login < timezone.now(): # نوٹ کریں کہ اب ہم چیک کرتے ہیں کہ آیا صارف لاگ ان ہوسکتا ہے
# یہاں موجود auth_login فنکشن کو ہٹا دیں
return redirect(user.profile.create_auth_url()) # نوٹ ہم یہاں ایک نئے یو آر ایل کی طرف ری ڈائریکٹ ہیں
else: # اگر صارف ملٹی فیکٹر توثیق استعمال نہیں کررہا ہے تو ، صرف ان میں لاگ ان کریں۔
else: # اگر لاگ ان کامیاب نہیں تھا ،
user = User.objects.filter(username=username).first() # یہ وہ حصہ ہے جہاں ہم صارفین کی پروفائل کو اپ ڈیٹ کرتے ہیں
profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # لہذا وہ کچھ سیکنڈ کے لئے دوبارہ لاگ ان نہیں ہوسکتے ہیں
لہذا یہ بہت آسان ہے ، اب ہمارے پاس دو عنصر کی توثیق کے نظارے کو ری ڈائریکٹ کرنے کا ایک طریقہ ہے جب ہم اسے تخلیق کرتے ہیں۔ اگر صارف نے فون نمبر شامل نہیں کیا ہے تو ہمارے پاس بھی فال بیک ہے۔ ہم جلد ہی فون نمبر شامل کرنے کے لئے ایک بنیادی نظریہ شامل کریں گے اور جلد ہی ٹیکسٹ میسج کے ساتھ لاگ ان کریں گے۔
سب سے پہلے ، ہمیں اپنے کوڈ سے ٹیکسٹ میسج بھیجنے کے لئے ایک آسان طریقہ کی ضرورت ہے۔ ایسا کرنے کے ل we ، ہم متعدد APIs میں سے انتخاب کرسکتے ہیں ، لیکن میری رائے میں سب سے آسان ترین ٹویلیو ہے۔ وہ چھوٹے منصوبوں کے لئے اچھی قیمتوں کے ساتھ ساتھ بلک چھوٹ بھی پیش کرتے ہیں۔ twilio.com پر ایک اکاؤنٹ بنائیں ، اپنے پروجیکٹ کے بارے میں کچھ تفصیلات پُر کریں ، فون نمبر خریدیں ، اور اپنی API کیز کو اپنی ترتیبات پر کاپی کریں۔ اس کے بعد ، اس کوڈ کو ایک نئی فائل کے تحت شامل کریں ، صارفین/sms.py۔
nano users/sms.py
# تمام ضروری پیکجوں کو درآمد کریں
# یہ کوڈ متن کو ٹویلیو کے ساتھ بھیجتا ہے
# اتنے ہندسوں کے ساتھ ایک نمبر حاصل کرنے کے لئے ایک مددگار فنکشن
# صارف کی تصدیق کے لئے متن بھیجیں
# کسی صارف کو اس فنکشن کے ساتھ کوئی متن بھیجیں
# اس فنکشن کے ساتھ کوڈ کی توثیق کریں
# وقت کی توثیق کریں
اپنی ترتیبات کو مناسب طریقے سے تبدیل کرنا یقینی بنائیں ، ان لائنوں کو اپنی چابیاں کے ساتھ شامل کریں:
# یقینی بنائیں کہ ان کو اپنے ٹوئلیو ڈیش بورڈ سے کاپی کریں
AUTH_VALID_MINUTES = 3 # ایک بار فوری طور پر ٹی ایف اے کا صفحہ فعال ہونے کے منٹوں کی تعداد
سب سے پہلے ، ہمیں اپنے دو عنصر کی توثیق کے نظاروں کے لئے فارموں کی ضرورت ہوگی۔ صارفین/فارموں میں ترمیم کریں۔
# … درآمدات
# ہمارے فون نمبر میں داخل ہونے کے لئے ایک فارم
# توثیق کرنے کے لئے ایک شکل
اگلا ، آئیے صارفین/نظریات میں نظارے بنائیں
# … درآمدات
ہمیں ان دونوں خیالات کے لئے ٹیمپلیٹس کی بھی ضرورت ہوگی۔ آئیے پہلے ایم ایف اے ٹیمپلیٹ شامل کریں۔
nano users/templates/users/mfa.html
اس HTML کوڈ کو ٹیمپلیٹ میں شامل کریں
یہ بہت خود وضاحتی ہے۔ فارم یا تو کوڈ یا خالی کوڈ بھیجتا ہے ، اور اگر آپ کو خالی کوڈ موصول ہوتا ہے تو آپ کو کوڈ بھیجنے والے نظارے میں دیکھیں گے۔ پھر ہمارے پاس صرف دو جمع بٹن ہیں ، اور اس طرح ہم کسی بھی بٹن کے ساتھ کوڈ بھیج سکتے ہیں۔ اگلا ، ہم فون نمبر شامل کرنے کے لئے ایک سادہ فارم شامل کریں گے۔
nano users/templates/users/mfa_onboarding.html
مندرجہ ذیل HTML شامل کریں:
یہ فارم بہت آسان ہے ، یہ صرف فون نمبر کے فارم کو فراہم کرتا ہے جو ہم نے تیار کیا ہے اور صارف کو فون نمبر شامل کرنے دیتا ہے۔
یہ واقعی اچھا لگتا ہے! جب تک کہ ہر چیز کو صحیح طریقے سے ترتیب دیا جائے ، ہمیں پیغامات بھیجنے کے قابل ہونا چاہئے ، اور جیسے ہی ہم یو آر ایل کے نمونوں کو شامل کرتے ہوئے صارف کو ان کے فون نمبر کے ساتھ لاگ ان کریں۔ آخری چیز جس کی ہمیں ترتیب دینے کی ضرورت ہے وہ ایک پروفائل ویو ہے لہذا ہم یہ یقینی بناسکتے ہیں کہ صارف لاگ ان کیے بغیر اپنے فون نمبر کو تبدیل کرسکتا ہے۔ اس کے علاوہ ، آخر کار ہم "رکنا چھوڑنے" کے آپشن کو شامل کرنا چاہیں گے ، لہذا صارف مستقبل کے ٹیکسٹ پیغامات سے باہر نکلنے کے لئے "اسٹاپ" ٹیکسٹ کرسکتا ہے۔
آئیے صارفین/نظریات میں ایک پروفائل ویو شامل کریں۔ یہ نظارہ صارف کے بائیو ، ای میل ، صارف نام اور فون نمبر کو اپ ڈیٹ کرے گا ، اور ساتھ ہی ہمیں ملٹی فیکٹر کی توثیق کو قابل بنانے کی اجازت دے گا۔ سب سے پہلے ، ہمیں صارفین/فارموں میں دو اور فارموں کی ضرورت ہوگی
# ... درآمدات
اگلا ، ہم ان دونوں شکلوں کو استعمال کرنے کے لئے ایک نظریہ تشکیل دے سکتے ہیں۔ صارفین/نظریات میں ترمیم کریں۔
# ان درآمدات کو شامل کریں
ہمیں بھی اس نظریہ کے لئے ایک ٹیمپلیٹ کی ضرورت ہوگی۔
nano users/templates/users/profile.html
آپ دیکھیں گے کہ یہ کافی آسان شکل ہے ، لیکن اس میں کچھ جاوا اسکرپٹ ہے جو اپ ڈیٹ ہونے کے ساتھ ہی فارم کے مندرجات کو خود بخود پوسٹ کرتا ہے۔ یہ فائدہ مند ہے ، لہذا آپ ہر بار جمع کرانے کے بغیر ترمیم کرنے کے اہل ہیں۔
اگلا ، ہمیں یو آر ایل کی ضرورت ہے جو صارفین کے یو آر ایل پیٹرز میں ان تمام خیالات کی نمائندگی کرتے ہیں۔ صارفین/urls.py میں ترمیم کریں اور اس کوڈ کو شامل کریں:
# … پچھلا کوڈ ، درآمدات
# … یو آر ایل کے نمونے جو ہم پہلے داخل ہوئے تھے ، اگلی تین لائنیں شامل کریں
اب ہمارے منصوبے کی جانچ کرنے کا ایک اچھا وقت ہے۔ لیکن پہلے ، آئیے ایک اور بیک اپ چلائیں۔
backup
اور سرور چلائیں۔ اس سے پہلے کہ ہم لینکس سرور میں تعینات کریں ، اکاؤنٹ میں دو عنصر کی توثیق کو قابل بنانا ایک اچھا خیال ہے۔ ہم یہ ہمارے پروفائل یو آر ایل ،/صارفین/پروفائل/، اور اپنے فون نمبر میں داخل ہونے کے بعد توثیق کو قابل بنانے کے لئے باکس کی جانچ پڑتال کریں گے ، اور پھر فارم جمع کروائیں گے۔
python manage.py runserver localhost:8000
اپنے ویب براؤزر پر جاکر ویب پیج پر جائیں ، میں اس مثال میں گوگل کروم استعمال کر رہا ہوں ، اور یو آر ایل HTTPS: // لوکل ہوسٹ: 8000/اکاؤنٹس/پروفائل/داخل کر رہا ہوں
اگر ضروری ہو تو آپ لاگ ان کرسکیں گے اور دو عنصر کی توثیق کو قابل بنائیں گے۔
اس پروجیکٹ کو چلانے کے لئے سرور کی ضرورت ہے تاکہ یہ واقعی میل بھیج سکے۔ لیکن پہلے ، ہمیں غلطیوں کو دیکھنے کے لئے ایک طریقہ درکار ہے۔ آپ دیکھیں گے کہ اگر آپ سرور کو ڈیبگ موڈ میں چلاتے ہیں تو ، ترتیبات کے ساتھ۔ ڈیبگ سچے کے برابر ہے ، سرور خود بخود غلطیاں ظاہر کرتا ہے۔ ڈیبگ وضع کا استعمال کیے بغیر غلطیاں ظاہر کرنے کے ل which ، جو کسی پروڈکشن سرور پر غیر محفوظ ہے ، ہمیں اس کے لئے ایک نظریہ شامل کرنا چاہئے۔ ہمیں سب سے اہم غلطیاں جو ہمیں سنبھالنے کے قابل ہونے کی ضرورت ہیں وہ ہیں:
غلطی 500 - ہمارے کوڈ میں ایک مسئلہ غلطی 404 - ایک صفحہ جو نہیں ملا (ٹوٹا ہوا URL) غلطی 403 - اجازت سے انکار کی گئی
آئیے ان غلطیوں کو سنبھالنے کے لئے ایک نئی ایپ شامل کریں ، جسے غلطیاں کہتے ہیں۔
python manage.py startapp errors
اس کو ترتیبات میں شامل کریں۔
handler404 = 'errors.views.handler404'
handler500 = 'errors.views.handler500'
handler403 = 'errors.views.handler403'
غلطی کے نظارے ، ٹیمپلیٹس اور تھوڑا سا مڈل ویئر کے علاوہ ہمیں بس اتنا ہی ضرورت ہے۔ آئیے ان کی وضاحت کریں جیسے:
# اپنے خیالات یہاں بنائیں۔
اگلا ، آئیے ان غلطیوں کو سنبھالنے کے لئے مڈل ویئر کی وضاحت کریں۔ ہم پہلے اپنے مڈل ویئر کے نام کے ساتھ ، ترتیبات میں مڈل ویئر_ کلاسز میں شامل کرکے یہ کام کریں گے۔
# ... پچھلے مڈل ویئر
اگلا ، آئیے مڈل ویئر شامل کریں۔
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
اس کوڈ کو سرور پر پوسٹ کرنے سے پہلے ، ہمیں غور کرنا چاہئے کہ کوڈ کے ساتھ کچھ مسائل پیدا ہوسکتے ہیں۔ اس معاملے پر منحصر ہے ، ان سائٹوں کو جو ان کو پوسٹ کی گئی معلومات کو قبول کرتے ہیں ان میں اسپام شائع ہونے اور اسپام کو ہٹانے میں دشواری کا سامنا کرنا پڑے گا۔ ایسا فوری طور پر نہیں ہونا چاہئے ، لیکن اگر یہ ہو رہا ہے تو ، ہم بعد میں جانچ پڑتال کریں گے کہ سائٹ پر خود بخود اسپام کو اعتدال پسند کیسے بنایا جائے اور روبوٹس کو سائٹ تک رسائی حاصل کرنے کے ساتھ ساتھ صارف کے اکاؤنٹس کو غیر فعال کرنے کا طریقہ ، اور صارف کی شناخت کو ان کی شناخت یا بائیو میٹرک اسکین کے ساتھ فنگر پرنٹ یا چہرے کی پہچان کی طرح تصدیق کرنے کا طریقہ ہے۔
کثیر عنصر کی توثیق کی مثال کو دیکھتے ہوئے جس کی ہم نے جانچ کی ، پیداوار میں ، چیزیں مختلف ہوسکتی ہیں۔ غور کریں کہ ہم لاگ ان کو محدود کرنے ، اور ختم ہونے والے ٹوکن کی شرح کس طرح کر رہے ہیں۔ اگر روبوٹ کسی سائٹ تک رسائی حاصل کررہے ہیں تو ، دو عنصر کی توثیق زیادہ مشکل ہوسکتی ہے کیونکہ وہ ایک ہی وقت میں صارف کے کوڈ میں داخل ہوسکتے ہیں۔ اس کا مقابلہ کرنے کے ل let ، آئیے صارف کے ماڈلز میں ایک ماڈل استعمال کریں ، یہ اعلان کرتے ہوئے کہ جب ہم کسی فون نمبر کے ساتھ ملٹی فیکٹر توثیق کا استعمال کرتے ہوئے تصدیق کر رہے ہیں تو ہم سائٹ کے ساتھ کس طرح بات چیت کرتے ہیں۔ ہم ای میل کے ساتھ توثیق کرنے کا ایک آپشن بھی شامل کریں گے۔ نانو کے ساتھ صارف کے ماڈلز میں ترمیم کرکے شروع کریں۔
nano users/models.py
ہم جس ماڈل کو شامل کررہے ہیں وہ ایسا ہی نظر آنا چاہئے۔ ہمیں کسی بھی طریقوں کی ضرورت نہیں ہے ، کسی ID ، صارف ، ٹائم اسٹیمپ ، میعاد ختم ہونے ، لمبائی اور کسی بھی ملٹی فیکٹر کی توثیق کے خلاف کوششوں (فون یا ای میل پر بھیجا گیا 123456 جیسے کوڈ) کو ذخیرہ کرنے کے لئے صرف متغیرات۔
# ویب سائٹ پر لاگ ان کرنے کے لئے ایک بنیادی ٹوکن استعمال کیا جاتا ہے
آئیے اپنے صارف کو ایک مراعات بھی شامل کریں ، اور ہم اسے ابھی کے لئے دستی طور پر طے کریں گے ، آخر کار مراعات یافتہ صارفین کو خود بخود اندراج کرنے میں ہجرت کرنے سے پہلے۔ صارف کے ماڈلز میں ، اس لائن کو پروفائل میں شامل کریں:
vendor = models.BooleanField(default=False)
جیسا کہ ڈیٹا بیس میں کسی تبدیلی کی طرح ، ہمیں جیانگو میں ماڈلز.پی فائل میں ترمیم کرنے کے بعد بھی ہجرت کرنے اور ڈیٹا بیس کو منتقل کرنے کی ضرورت ہے۔ یاد رکھیں ، ایسا کرنے کے ل we ہم سب سے پہلے ماخذ کا استعمال کرتے ہیں (اگر ٹرمینل کے کھلے ہوئے پہلے سے ہی یہ پہلے سے استعمال نہیں ہوا ہے) اور پھر ہجرت کرنے اور ہجرت کرنے کے لئے ازگر کا انتظام۔
cd project-directory-you-named # (اگر ضرورت ہو)
ابھی کے ل you ، آپ شیل کا استعمال کرکے دکانداروں کی حیثیت سے بنائے ہوئے کسی بھی اکاؤنٹ کو اندراج کرسکتے ہیں۔
python manage.py shell
from users.models import Profile
p = Profile.objects.get(user__username='Charlotte')
p.vendor = True
p.save()
exit()
اب ، اس ٹوکن کو استعمال کرنے کے ل our ہمارے ملٹی فیکٹر کی توثیق کے نظارے کو تیار کریں۔ سب سے پہلے ، ہمیں اپنی ایم ایف اے مددگار افادیت میں ترمیم کرنے کی ضرورت ہے۔ نانو کا استعمال ،
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: # چیک کریں کہ آیا ایم ایف اے فعال ہے یا نہیں
if not check_verification_time(user, token): # وقت چیک کریں
user.profile.mfa_enabled = False # فون نمبر صاف کریں
user.profile.enable_two_factor_authentication = True # ایم ایف اے کو فعال کریں
user.profile.phone_number = '+1' # فون نمبر کو غیر فعال کریں
user.profile.save() # پروفائل کو محفوظ کریں
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # صارف کو لاگ ان کریں اگر ان کا ایم ایف اے فعال نہیں ہے
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 # ایم ایف اے کو فعال کریں (اگر پہلے سے فعال نہیں ہے)
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', { # کسی ٹیمپلیٹ میں صارفین کو لوٹائیں
نوٹ کریں کہ یہ کوڈ ٹیسٹ کا استعمال کرتا ہے ، ہمیں اس ٹیسٹ کو ٹیسٹ ڈاٹ فائل فائل میں اعلان کرنے اور اسے درآمد کرنے کی ضرورت ہوگی۔ صارفین/tests.py میں ترمیم کرنا ، آئیے ٹیسٹ بنائیں۔
def is_superuser_or_vendor(user):
return user.profile.vendor or user.is_superuser
یہ صارفین/صارفین کے ساتھ مل کر ہے۔ HTML ٹیمپلیٹ ، جو کچھ اس طرح لگتا ہے:
نوٹ کریں کہ ٹیمپلیٹ میں ایک اور ٹیمپلیٹ ، صارفین/ شامل ہیںuser.html. جب کسی ایسے ٹیمپلیٹ کا استعمال کرتے ہو جس میں ایک سب ٹمپلیٹ ہو اور توسیع نہ ہو تو ، انڈر سکور کو شامل کرنا ایک اچھا خیال ہے () ٹیمپلیٹس کی تمیز کرنے کے لئے فائل کے نام سے پہلے۔
نوٹ کریں کہ یہ بہت جنجا ہے ، آپ کے پاس ان تمام متغیرات کی وضاحت نہیں ہوسکتی ہے۔ لیکن میرا کوڈ ایسا ہی لگتا ہے۔
<small># {{user.id}} </small>
ہمیں ایک اور سب ٹائمپلیٹ ، ٹوگل_یکٹیو ایچ ٹی ایم ایل کی بھی ضرورت ہے۔ یہ ٹیمپلیٹ ایک ایسا فارم ہونا چاہئے جو ہمیں ٹوگل کرنے کی اجازت دیتا ہے کہ آیا صارف فعال ہے یا نہیں۔
ہمیں صارف کی سرگرمی ، اور مناسب URL نمونوں کو ٹوگل کرنے کے لئے ایک نظریہ شامل کرنے کی بھی ضرورت ہوگی۔ جب ہم اس پر موجود ہیں ، آئیے صارف کو حذف کرنے کے لئے ایک نظریہ شامل کریں اگر ہمیں اس کی ضرورت ہو۔
# درآمدات
success_url = '/' # کامیابی کے یو آر ایل پر ری ڈائریکٹ
def test_func(self): # ٹیسٹ اگر صارف سپر صارف ہے اور اسے حذف کرنے کی اجازت ہے
اگرچہ یہ عملی طور پر عملی طور پر ہوتا ہے تو ، صارف کو حذف کرنا زیادہ تر وقت ضروری نہیں ہونا چاہئے ، ہم صرف ان صارفین کی مرئیت کو ٹوگل کرسکتے ہیں جو سائٹ پر تشریف لاتے ہیں اگر ہمیں ان کو مسترد کرنے کی ضرورت ہو۔
ہم نے جو یو آر ایل کے نمونے شامل کیے ہیں وہ اس طرح نظر آتے ہیں۔ نینو کے ساتھ ، صارفین/urls.py میں ترمیم کریں اور ان لائنوں کو شامل کریں:
nano users/urls.py
لائنوں کو صارف کے خیالات میں راستوں کی فہرست میں جانا چاہئے ، ختم ہونے سے پہلے "] لیکن شروعات کے بعد" ["۔
# ... تو… کے بارے میں… کے بارے میں… کے.
# ... تو… کے بارے میں… کے بارے میں… کے.
اب ، سائٹ کا بیک اپ کرنا یقینی بنائیں تاکہ آپ اسے ویب سرور پر ڈاؤن لوڈ کرسکیں جس پر ہم کام جاری رکھیں گے۔ کمانڈ لائن سے ،
sudo backup
اب ہماری سائٹ کا بیک اپ ہے۔
تو اب ہمارے پاس کچھ اور مفید خصوصیات ہیں۔ لیکن یہاں بڑی تصویر کا کیا ہوگا؟ یہ کوڈ ابھی بھی انٹرنیٹ سے قابل رسائی نہیں ہے ، ہمارے پاس ابھی تک کوئی میل سرور نہیں ہے ، اور ہمیں اپنی ایپ کو بڑھانے کی ضرورت ہے تاکہ ہمہ جہت صارفین کی توثیق کرنے کے لئے محفوظ پروٹوکول کے ساتھ ساتھ سائٹ کو تلاش کرنے میں مدد کے لئے جامع توثیق کے عمل کے ساتھ ساتھ ہموار ترتیب کو بھی شامل کیا جاسکے۔
ہم ان سب کو حاصل کریں گے۔ اب کے لئے سب سے اہم چیز صرف اس کوڈ کو آن لائن حاصل کرے گی ، جو ہم اوبنٹو سرور پر بس کی صرف چند لائنوں کے ساتھ کرسکتے ہیں۔ اگرچہ آپ کے پاس گھر میں سرور اور بزنس انٹرنیٹ سبسکرپشن نہ ہو جو آپ کو بندرگاہیں کھولنے کی اجازت دیتا ہے ، اس وقت تک آپ کو اس کے لئے سرور کرایہ پر لینے کی ضرورت ہوگی۔ میں ذاتی طور پر اپنی ویب سائٹ کو HP Z440 پر چلاتا ہوں جو میرے اپارٹمنٹ میں نصب ہے ، لیکن ورچوئل نجی سرور (VPS) کرایہ پر لینے کے لئے بنیادی ضروریات کے لئے یہ عام طور پر بہت سستا ہوتا ہے۔
یہ بات ذہن میں رکھیں کہ اب ہم جو کوڈ چل رہے ہیں وہ نسبتا line پتلا ہے ، اس سے پہلے کہ ہم کسی مصنوع کو بنانے کے لئے تیار کرنے کے لئے تیار ہوں اس سے پہلے اسے برقرار رکھنے اور بہتر بنانے کی ضرورت ہوگی۔ اس بات کو یقینی بنائیں کہ آپ انٹرنیٹ کے ساتھ کیا کرتے ہیں ، اس بات کو یقینی بنائیں کہ اگر آپ اس سائٹ کو کسی لینکس سرور پر ویب پر عوامی طور پر تعینات کرتے ہیں تو ، آپ کے پاس اپنی ویب سائٹ کے ساتھ ناپسندیدہ تعاملات کو روکنے کا منصوبہ ہے۔ یہ امکان پہلے ہی کوئی مسئلہ نہیں ہوگا ، لیکن ہم اس سے نمٹنے کے لئے متعدد حل تلاش کریں گے ، بشمول مشین لرننگ ، مصنوعی ذہانت اور کمپیوٹر وژن۔ جب یہ مسئلہ بن جاتا ہے تو ، حل کے ل this اس متن میں مزید دیکھیں۔
وی پی ایس کرایہ پر لینے کے معاملے میں ، بہت ساری جگہیں ہیں جہاں آپ جاسکتے ہیں۔ گوگل کلاؤڈ میں وی پی ایس سرورز ، آئنوس ، کمٹیرا ، ایمیزون اے ڈبلیو ایس ، اور مزید فراہم کنندگان کلاؤڈ سرور حل پیش کرتے ہیں جو ہماری ضروریات کے مطابق ہوں گے۔
آپ کو ان کے فارموں پر کلک کرنے اور شروع کرنے کے لئے ایک منصوبہ منتخب کرنے کی ضرورت ہوگی۔ آپ کسی بھی فراہم کنندہ کے ساتھ بنیادی منصوبے کے ساتھ جاسکتے ہیں ، لیکن اس بات کو یقینی بنائیں کہ فراہم کنندہ آپ کو پورٹ میل سرور پورٹس کو ای میل بھیجنے کی اجازت دیتا ہے (یہ پورٹ 587 اور پورٹ 25 ہونا چاہئے) ، کچھ فراہم کنندہ ان بندرگاہوں کو روکتے ہیں۔ اب تک مجھے آئنوس اور کامٹرا کے ساتھ بہترین تجربہ ملا ہے ، وہ دونوں مجھے لامحدود ای میل بھیجنے کی اجازت دیں گے اور ان کی قیمتوں کا تعین بہت سستا ہے۔
آپ اپنے نئے سرور سے ایس ایس ایچ یا سیکیور شیل نامی ایک پروٹوکول پر رابطہ کریں گے ، جو آپ کو اپنے ذاتی کمپیوٹر سے بالکل اپنے ذاتی کمپیوٹر کی طرح سرور کے ساتھ دور دراز سے انٹرفیس کرنے کی اجازت دیتا ہے۔ جب آپ سرور مرتب کرتے ہیں تو ، ہوسٹنگ فراہم کنندہ آپ کو ایس ایس ایچ کی کلید شامل کرنے کے لئے کہیں گے ، یا وہ آپ کو صارف نام اور پاس ورڈ دیں گے۔ ایس ایس ایچ کی کلید یہ ہے کہ آپ کوڈ میں ترمیم کرنے کے لئے کمانڈ لائن سے سرور میں کیسے لاگ ان کریں گے۔ ایس ایس ایچ کی کلید پیدا کرنے کے لئے ذیل میں ایس ایس ایچ کیجین کے اختیارات کا استعمال کریں۔
ssh-keygen
فائل کو محفوظ کریں اور اگر آپ کو ضرورت ہو تو اسے اوور رائٹ کریں ، اگر آپ کے پاس پہلے سے ہی نہیں ہے تو اپنی ایس ایس ایچ کی چابیاں گھومانا اچھا ہے۔ اب ، آپ اپنی ایس ایس ایچ کی کلید کو دیکھنے کے لئے درج ذیل کمانڈ استعمال کرسکتے ہیں۔ آپ اسے اپنے ریموٹ سرور میں کاپی کرنا چاہیں گے تاکہ آپ اسے توثیق کے ل use استعمال کرسکیں۔
cat ~/.ssh/id_rsa.pub
اگر آپ اس کمانڈ کو ٹائپ کرتے وقت کسی ایس ایس ایچ کی کلید کو دیکھنے کے قابل نہیں تھے (ہندسوں اور خطوط کی ایک لمبی تار جس کا آغاز "SSH-RSA AAA" سے ہوتا ہے) ، تو RSA کی کلید تیار کرنے کی کوشش کریں (وہ زیادہ محفوظ ہیں ، لہذا میں ان کو استعمال کرنے کا مشورہ دیتا ہوں۔) مندرجہ ذیل کوڈ 4096 بٹ RSA SSH کلید پیدا کرے گا۔
ssh-keygen -t rsa -b 4096
اوبنٹو چلانے والا وی پی ایس بنائیں ، تاہم آپ ایسا کرنے کا ارادہ رکھتے ہیں۔ ایک بار جب آپ نے فراہم کنندگان کی ویب سائٹ (kamatera.com ، Ionos.com یا اسی طرح) کے فارموں پر کلک کرکے VPS بنا لیا ہے تو ، آپ لاگ ان کرنا چاہیں گے۔ ایسا کرنے کے لئے ، ایس ایس ایچ کمانڈ کو اپنے IP ایڈریس کے ساتھ استعمال کریں (وہ پتہ جو xx.xx.xx.xx کی طرح لگتا ہے)۔ آپ کو جو سرور تیار کیا گیا ہے اس پر پہلے سے طے شدہ صارف نام کے بارے میں بھی حساس ہونے کی ضرورت ہوگی ، مثال کے طور پر ، اوبنٹو۔
ssh ubuntu@XX.XX.XX.XX
آپ سے پاس ورڈ طلب کیا جاسکتا ہے ، اگر آپ سے پاس ورڈ طلب کیا جاتا ہے تو ، اسے داخل کریں۔ ہم پہلے سے طے شدہ صارف نام استعمال نہیں کریں گے ، لہذا آئیے ایک نیا صارف تشکیل دے کر اور ان کے اکاؤنٹ میں ایس ایس ایچ کی کلید شامل کرکے شروع کریں۔
آئیے ایک نئی SSHD_CONFIG فائل شامل کرکے شروع کریں ، جو سرور کو بتاتا ہے کہ SSH کو کس طرح استعمال کیا جائے۔
nano sshd_config
# یہ SSHD سرور سسٹم وسیع کنفیگریشن فائل ہے۔ دیکھو
# مزید معلومات کے لئے sshd_config (5)۔
# اس ایس ایس ایچ ڈی کو راستہ =/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/گیمز کے ساتھ مرتب کیا گیا تھا
# پہلے سے طے شدہ SSHD_CONFIG میں اختیارات کے لئے استعمال ہونے والی حکمت عملی
# اوپنش ان کی ڈیفالٹ ویلیو کے ساتھ اختیارات کی وضاحت کرنا ہے جہاں
# ممکن ہے ، لیکن ان پر تبصرہ کریں۔ غیر منظم شدہ اختیارات کو اوور رائڈ کرتے ہیں
# پہلے سے طے شدہ قیمت.
# پورٹ 22
# ایڈریس فیملی کوئی
# سنیں 0.0.0.0
# سننے والی ایڈریس ::
# ہوسٹکی/وغیرہ/SSH/SSH_HOST_RSA_KEY
# ہوسٹکی/وغیرہ/SSH/SSH_HOST_ECDSA_KEY
# ہوسٹکی/وغیرہ/SSH/SSH_HOST_ED25519_KEY
# سائفرز اور کینگ
# Rekeylimit ڈیفالٹ کوئی بھی نہیں
# لاگنگ
# syslogfacility auth
# loglevel معلومات
# توثیق:
# لاگنگریس ٹائم 2 ایم
# اجازت نامہ-پاس ورڈ کی ممانعت
# سٹرک موڈس ہاں
# میکساٹری 6
# میکس سیشن 10
# توقع کریں .ssh/مجاز_کیس 2 کو مستقبل میں ڈیفالٹ کے ذریعہ نظرانداز کیا جائے گا۔
# مجاز پرنسپلزفائل کوئی نہیں
# مجاز کییسکومنڈ کوئی نہیں
# مجاز کییسکومنڈسر کوئی نہیں
# اس کے کام کرنے کے ل you آپ کو/وغیرہ/ssh/ssh_newne_hosts میں میزبان چابیاں کی بھی ضرورت ہوگی
# میزبان بیسڈیٹیشن نہیں
# اگر آپ کو ~/.ssh/known_hosts کے لئے اعتماد نہیں ہے تو ہاں میں تبدیل کریں
# میزبان بیسڈیٹیشن
# نظر انداز نہیں
# صارف کی ~/.rhosts اور ~/.shosts فائلوں کو مت پڑھیں
# آئیڈیل ہاسٹس ہاں
# سرنگ والے واضح متن کے پاس ورڈز کو غیر فعال کرنے کے لئے ، یہاں نہیں میں تبدیل کریں!
# اجازت نامہ والے الفاظ نمبر نہیں
# چیلنج ردعمل کے پاس ورڈز کو قابل بنانے کے لئے ہاں میں تبدیل کریں (اس کے ساتھ ہوشیار رہیں
# کچھ پام ماڈیولز اور دھاگے)
# کیربروز کے اختیارات
# کیربیروساؤتھینٹیکیشن نمبر
# Kerberosorlocalpasswd ہاں
# Kerberosticketcleanup ہاں
# کربروس گیٹفسٹوکن نمبر
# GSSAPI کے اختیارات
# gssapiauthentication no
# GSSAPICLEANUPCREDINTALS ہاں
# GSSAPISTECCEPTORCHECK ہاں
# gssapikeyexchange نمبر
# پی اے ایم کی توثیق ، اکاؤنٹ پروسیسنگ کو فعال کرنے کے لئے اسے 'ہاں' پر سیٹ کریں ،
# اور سیشن پروسیسنگ۔ اگر یہ فعال ہے تو ، پام کی توثیق ہوگی
# KBDINTRACTIVEATHENTICATION کے ذریعے اجازت دی جائے اور
# پاس ورڈ کے پاس آپ کے پام کی ترتیب پر منحصر ہے ،
# PAM کی توثیق KBDINTRACTIVEATENTICATION کے ذریعے بائی پاس کرسکتی ہے
# "بغیر پاس ورڈ کے پرمٹرووٹلوگن" کی ترتیب۔
# اگر آپ صرف پام اکاؤنٹ اور سیشن چیک کے بغیر چلیں گے
# پام کی توثیق ، پھر اس کو قابل بنائیں لیکن پاس ورڈ کی تعی .ن طے کریں
# اور 'نہیں' کے لئے KBDINTINTACTIVEATHENTICATION۔
# ہاں کی اجازت دیتا ہے ہاں
# ہاں کی اجازت دیں
# گیٹ وے پورٹس نمبر
# x11 ڈس پلے آفسیٹ 10
# x11uselocalhost ہاں
# اجازت ہاں
# پرنٹ لسٹلوگ ہاں
# tcpkeepalive ہاں
# اجازت نامہ نمبر
# کمپریشن میں تاخیر ہوئی
# کلائنٹلائیو انٹروول 0
# کلائنٹ لائیو کاونٹ میکس 3
# استعمال نہیں
# pidfile /run/sshd.pid
# میکس اسٹارٹ 10: 30: 100
# اجازت نمبر
# کروٹ ڈائرکٹری کوئی نہیں
# versionddendum کوئی نہیں
# کوئی ڈیفالٹ بینر راستہ نہیں ہے
# کلائنٹ کو مقامی ماحولیاتی متغیرات کو منتقل کرنے کی اجازت دیں
# کسی سب سسٹم کے ڈیفالٹ کو اوور رائڈ کریں
# ہر صارف کی بنیاد پر اوور رائڈنگ سیٹنگ کی مثال
# صارف anoncvs سے میچ کریں
# x11forورڈنگ نمبر
# اجازت نہیں
# اجازت نمبر
# فورک کامنڈ سی وی ایس سرور
یاد رکھیں ، فائل کو بچانے کے لئے Ctrl+x اور y۔ اگلا ، آئیے ایک بنیادی اسکرپٹ لکھتے ہیں جس کا نام شروع کیا جاتا ہے (سب ہمارے صارف کی ڈیفالٹ ہوم ڈائرکٹری میں)۔
nano initialize
ان لائنوں کو فائل میں شامل کریں
# !/بن/باش
آپ کو اس فائل کے ذریعے چلنے کے ل let ، آئیے لائن کے ذریعہ لائن شروع کریں۔ پہلی لائن مرتب کرنے والے کو بتاتی ہے کہ یہ ایک بش اسکرپٹ ہے۔ اس کے بعد ہم انحصار انسٹال کر رہے ہیں ، SSHD_CONFIG کو صحیح ڈائریکٹری میں کاپی کررہے ہیں ، ایس ایس ایچ کو دوبارہ شروع کررہے ہیں ، جڑ کے لئے ایس ایس ایچ کی چابیاں تیار کررہے ہیں ، صارف کی 'ٹیم' کو شامل کرسکتے ہیں (آپ اس کے لئے ایک نام منتخب کرسکتے ہیں ، ایڈوزر کمانڈ کو ان کے نام اور اب کے لئے غیر فعال پاس ورڈ کے ساتھ استعمال کرسکتے ہیں)۔ ہم ٹیم کو سوڈو گروپ میں بھی شامل کرتے ہیں ، ان کی ایس ایس ایچ کی کلید تیار کرتے ہیں ، اپنی کلید کو مجاز کیز اور ان میں بھی شامل کرتے ہیں ، اور ان کی کلید پرنٹ کرتے ہیں۔ یہ نیا صارف یہ ہوگا کہ ہم سائٹ میں کیسے لاگ ان ہوں گے۔
ایک نئے ٹرمینل میں ، آگے بڑھیں اور سرور کو دوبارہ کھولیں۔
ssh team@XX.XX.XX.XX
اس بار آپ کو پاس ورڈ کی ضرورت نہیں ہونی چاہئے ، جیسا کہ آپ کے پاس ایس ایس ایچ کی کلید ہے۔ سائٹ کو مزید محفوظ رکھنے کے لئے ہم نے پاس ورڈ کے ساتھ لاگ ان کو بھی غیر فعال کردیا ہے۔
اب ، یہ سرور مکمل طور پر خالی شروع ہوتا ہے جس کے بارے میں کوئی معلومات نہیں ہے۔ آئیے گٹ سے اپنے پروجیکٹ کو کلوننگ کرکے شروع کریں تاکہ ہم اسے ریموٹ مشین پر ڈاؤن لوڈ اور چلا سکیں۔ ایس ایس ایچ سے زیادہ منسلک ریموٹ سرور پر ، پہلے اپنی ایس ایس ایچ کی چابی پرنٹ کریں:
cat ~/.ssh/id_rsa.pub
اگلا ، اس کلید کو گٹ کی ترتیبات میں چسپاں کریں جیسے ہم نے اپنے گٹ ذخیرے کو ترتیب دینے کے لئے پہلے کیا تھا۔ اب ہم اپنے پروجیکٹ کو براہ راست سرور پر کلون کرسکتے ہیں۔ اس بات کو یقینی بنائیں کہ آپ نے پہلے اس منصوبے کی حمایت کی ہے لہذا یہ ڈاؤن لوڈ کرنے کے لئے گٹ سرور پر ہے۔
git clone git://github.com/you/yourproject.git
مکمل. اب تمام فائلیں یہاں ہیں۔ ہم انہیں ایل ایس کے ساتھ دیکھ سکتے ہیں
ls
اب ، سرور قائم کرنا شروع کریں۔ پہلے ، اپنی پروجیکٹ ڈائرکٹری کو ایک سادہ ، یادگار نام میں کاپی کریں جسے ہم اس منصوبے کے لئے استعمال کریں گے۔
cp -r yourproject whatyoucalledit
جہاں "Whatyoucalledit" آپ کے پروجیکٹ کا نیا نام ہے۔ اگلا ، ہمیں سرور کو ترتیب دینے کے لئے ایک بنیادی افادیت بنانے کی ضرورت ہوگی۔ ہم اس افادیت کو بچائیں گے اور اسے مستقبل میں استعمال کریں گے۔ اس افادیت کو بڑھانے کے ل let ، آئیے صارف بائنری بنائیں تاکہ ہم اس کی وضاحت کریں کہ ہم کس طرح اسکرپٹ میں ترمیم کرتے ہیں۔ بش کا استعمال کرتے ہوئے ، ترمیم کریں/usr/bin/ascript
sudo nano /usr/bin/ascript
یقینی بنائیں کہ وہاں سوڈو استعمال کریں تاکہ آپ کو فائل میں ترمیم کرنے کی اجازت ہو۔ فائل میں ، ان لائنوں کو شامل کریں:
# !/بن/باش
echo "# !/bin/bash ">>/usr/bin/$ 1
یاد رکھیں اس اسکرپٹ میں ایک دلیل ، اسکرپٹ کا نام ، $ 1 ہے۔ پہلے یہ چیک کرتا ہے کہ آیا فائل موجود ہے ، یا بصورت دیگر اسے تخلیق کرتی ہے ، اسکرپٹ کا اعلان کرنے کے لئے پہلی سطر میں اضافہ کرتا ہے ، اپنی اجازت کو تبدیل کرتا ہے ، اس میں ترمیم کرتا ہے ، اور اس کا نام /وغیرہ /اسکرپٹ میں شامل کرتا ہے جس کی مدد سے ہمیں اسکرپٹ کے نام اسٹور کرنے دیتے ہیں جو ہم تخلیق کررہے ہیں۔ اگر فائل پہلے سے موجود ہے تو ، صرف اجازتوں کو تبدیل کریں اور اس میں ترمیم کریں۔ فائل کو محفوظ کریں ، اور اگلا ہم اس کی اجازتیں تبدیل کردیں گے۔ جب تک ہم اس اسکرپٹ کو استعمال کرتے ہیں ، ہمیں دوبارہ ایسا نہیں کرنا پڑے گا۔
sudo chmod a+x /usr/bin/ascript
مکمل. اب آئیے ایک اسکرپٹ بنائیں جسے سیٹ اپ کہتے ہیں۔ پہلے ، آپ کو مغلوب کرنے کے لئے نہیں ، بلکہ اس پر ایک نظر ڈالیں کہ میرے سیٹ اپ اسکرپٹ کی طرح دکھتا ہے۔ ہم آپ کے پروجیکٹ میں اس اسکرپٹ کی طرح دکھائی دیں گے ، آپ کو شروع کرنے کے لئے آپ کو میرے اسکرپٹ میں ہر چیز کی ضرورت نہیں ہوگی۔
# !/بن/باش
# sudo chmod a+x اسکرپٹ/صارف استعمال
# ./scripts/usersetup
# ssh-keygen
# پروجیکٹ ڈائرکٹری
# لاگ کمانڈز
# نانو کنفیگ
# گٹ کنفیگ
# تازہ کاری اور انسٹال کریں
# کلاماو اینٹی وائرس کو فعال کریں
# میزبان نام مرتب کریں
# سیٹ اپ پوسٹگریس
# سیٹ اپ ڈیٹا بیس بیک اپ
# iptables کو غیر فعال کریں
# بٹ ڈیفینڈر انسٹال کریں
# سیٹ اپ پوسٹ فکس
# ڈیرس بنائیں
# سیٹ اپ ورچوئلینیو
# انحصار حاصل کریں اور بنائیں
# فائر وال کے قواعد مرتب کریں
# PYPI انحصار انسٹال کریں
pip3 install --upgrade opencv-python # == 4.5.4.60
pip3 install --upgrade opencv-contrib-python # == 4.5.4.60
# PIP انسٹال OPENCV-PYTHON == 4.5.5.64
# PIP انسٹال OPENCV-contrib-python == 4.5.5.64
# سیرٹ بوٹ انسٹال کریں
# سیرٹ بوٹ چلائیں
# میل سرور کو دوبارہ لوڈ کریں
# کاپی سرٹے
# sudo cp /etc/letsencrypt/live/femmebabe.com/privkey.pem پرائیوکی.پیم
# sudo cp /etc/letsencrypt/live/femmebabe.com/cert.pem cert.pem
# پیچ وینو
# صارف کی ترتیبات مرتب کریں
# اجازت نامہ طے کریں
# sudo chown -R ٹیم: صارفین/var/رن/
# سوڈو چاؤ روٹ: جڑ/رن/سوڈو/ٹی ایس -آر
# sudo chmod 664 db.sqlite3
# سوڈو کوان www-data: صارفین db.sqlite3
# تشکیل کاپی کریں اور اجازت نامہ طے کریں
# سیٹ اپ ڈیٹا بیس
# PAM کنفیگ انجیکشن کریں اور ناقص SSH کنفیگ کو ہٹا دیں
# sudo sed -i '' -e '$ d' /etc/pam.d/sshd
# sudo sed -i '' -e '$ d' /وغیرہ /پروفائل
# بن اسکرپٹ کاپی کریں اور اجازتیں طے کریں
# دوبارہ لوڈ اور خدمات کو فعال کریں
# اپاچی ماڈیولز کو فعال کریں
# sudo a2dismod mpm_event
# sudo a2dismod mpm_worker
# sudo a2enmod mpm_prffork
# پہلے سے طے شدہ سائٹ کو غیر فعال کریں
# ہماری سائٹ کو فعال کریں
# ڈیمون کو دوبارہ لوڈ کریں اور اپاچی ، پوسٹ فکس اور اوپن کِم کو دوبارہ شروع کریں
# اجازت نامہ طے کریں
# تبادلہ ترتیب
# init کیپشن انجن
# سیٹ اپ گٹ
# ڈومین ترتیب کے لئے IPv6 اور اوپن کِم دکھائیں
# سیٹ اپ مکمل ہوا
یہ بہت سیٹ اپ ہے! مختصر یہ کہ یہ کوڈ لاگ ان کرتا ہے ، نانو اور گٹ کو تشکیل دیتا ہے ، فائلوں پر کاپیاں تشکیل دیتا ہے ، فائلوں پر کاپیاں ، ڈاؤن لوڈ اور انسٹال کرتا ہے اوبنٹو اپٹ پیکیجز ، ازگر انحصار ، پوسٹ فکس کو تشکیل دیتا ہے ، پوسٹگریس کیو ایل (ڈیٹا بیس سرور) کو ڈاؤن لوڈ کرتا ہے ، اور ایک اینٹائٹس کو کنفیگر کرتا ہے ، غیر منقطع افراد کو تشکیل دیتا ہے ، انحصار ، سرٹیفکیٹ انسٹال کرتا ہے اور سرور سیٹ کرتا ہے ، ترتیب انسٹال کرتا ہے ، سیور کو شروع کرتا ہے اور قابل بناتا ہے ، تبادلہ مختص کرتا ہے ، اجازتیں طے کرتا ہے ، اور آئی پی ، آئی پی وی 6 ایڈریس اور اوپن کِم کلید کو پرنٹ کرتا ہے۔ کافی آسان ، لیکن یہ بہت سارے کوڈ کی طرح لگتا ہے۔ ہمیں اس کی بہت ضرورت نہیں ہوگی کیونکہ ہمارے پاس انحصار نہیں ہے ، ہم اجوائن ، اجوائن یا ڈیفنی استعمال نہیں کررہے ہیں ، لیکن ہم شروع کرنے کے لئے ان میں سے کچھ ویسے بھی انسٹال کریں گے۔ نوٹ کریں کہ اس کوڈ میں کئی بار اعلان کیا گیا ہے۔
ہمیں ایک ڈومین نام (جو ایک چھوٹی سالانہ فیس ہے) بھی خریدنے کی ضرورت ہوگی۔ میں ڈومین خریدنے کے لئے اسکوائر اسپیس کی سفارش کرتا ہوں ، ان کی ترتیب بدیہی اور استعمال میں آسان ہے۔ آپ اپنی پسند کا کوئی ڈومین خرید سکتے ہیں ، لیکن میں اس مثال میں ڈومین فیمبیب ڈاٹ کام استعمال کر رہا ہوں۔ ایک بار جب آپ نے کوئی ڈومین خرید لیا ہے تو ، اسکوائر اسپیس ڈی این ایس کنفیگریشن پینل کی طرف جائیں اور آئی پی ایڈریس کے ذریعہ سرور پر اپنے ڈومین کی نشاندہی کرنے والا ایک ریکارڈ شامل کریں۔ یہ اس طرح نظر آنا چاہئے:
@ a xx.xx.xx.xx
@ آپریٹر کو بطور میزبان ، جس کا مطلب ہے کہ اس ڈومین کے تحت تمام ذیلی ڈومینز اور روٹ ڈومین سب سرور پر ری ڈائریکٹ ہوجائیں گے۔ اعلان کرنے کے لئے مزید ریکارڈ موجود ہیں ، لیکن ایک بار جب ہم میل بھیجنے کے لئے تیار ہوجاتے ہیں تو ہم ان کی طرف بڑھ سکتے ہیں۔ دھیان میں رکھیں ، سرور سے کامیابی کے ساتھ میل بھیجنے کے قابل ہونے سے پہلے اس میں کئی دن لگ سکتے ہیں۔ ہم جس ڈی این ایس ریکارڈز کی ترتیب کر رہے ہیں اس میں پروپیگنڈا کرنے میں وقت لگے گا۔
ویسے بھی ، ہمیں صرف ریکارڈ شروع کرنے کی ضرورت ایک ریکارڈ ہے۔ لہذا اب ہم اپنے پروجیکٹ کے مطابق نیچے دیئے گئے اسکرپٹ کو پُر کرسکتے ہیں اور اسے چلا سکتے ہیں۔
آئیے صرف ایک چھوٹی سی سیٹ اپ اسکرپٹ سے شروع کریں جس میں ہمیں بنیادی پیشرفت کے لئے ضرورت ہے انسٹال کریں۔ ہم ابھی تک بہت ساری انحصار یا پوسٹگریس کیو ایل کا استعمال نہیں کریں گے ، ہم صرف ایک بنیادی HTTP سرور شروع کریں گے اور جب یہ ہو گیا ہے تو اس کی تصدیق کرنے کی فکر کریں گے۔ یاد رکھیں ، HTTPS سرٹیفکیٹ حاصل کرنے اور سرور کو محفوظ طریقے سے چلانے کے ل we ، ہمیں کرایہ کے ساتھ ایک ڈومین خریدنے کی ضرورت ہوگی۔ ابھی کے لئے ، اس فائل میں "ٹیم" کو اپنے صارف کے نام ، "دیر" کو اپنے پروجیکٹ کی ڈائرکٹری کے ساتھ تبدیل کریں ، اور <> ٹیگس میں اپنے ای میل اور ڈومین کی فراہمی کریں۔
مزید برآں ، اس کوڈ کو چلانے سے پہلے ، ہمیں ترتیبات کو فائر وال میں ہوسٹنگ فراہم کرنے والے کی حمایت میں تبدیل کرنے کی ضرورت ہے ، اگر کوئی ہے۔ عام طور پر یہ آپ کے ہوسٹنگ فراہم کنندہ کے 'نیٹ ورکس' ٹیب میں ہوتا ہے ، یا اگر آپ خود ہوسٹنگ کر رہے ہیں تو ، یہ آپ کے روٹر کے 'پورٹ فارورڈنگ' سیکشن میں ہے۔ اگر آپ خود کی ہوسٹنگ استعمال کررہے ہیں تو ، آپ اپنے سرور مشین کے پتے کے ساتھ اپنے روٹر کے ذریعہ ایک جامد IP مرتب کرنا چاہیں گے۔ پڑھنے/لکھنے تک رسائی کے ل You آپ کو درج ذیل بندرگاہوں کو کھولنے کی ضرورت ہوگی۔
22 (ایس ایس ایچ) 25 (میل) 587 (میل) 110 (میل کلائنٹ) 80 (HTTP) 443 (HTTPS)
# !/بن/باش
# لاگ کمانڈز
# نانو کنفیگ
# گٹ کنفیگ
# تازہ کاری اور انسٹال کریں
# کلاماو اینٹی وائرس کو فعال کریں
# میزبان نام مرتب کریں
# سیٹ اپ ڈیٹا بیس بیک اپ
# iptables کو غیر فعال کریں
# سیٹ اپ ورچوئلینیو
# سیرٹ بوٹ انسٹال کریں
# سیرٹ بوٹ چلائیں
# صارف کی ترتیبات مرتب کریں
# اجازت نامہ طے کریں
# sudo chown -R ٹیم: صارفین/var/رن/
# سوڈو چاؤ روٹ: جڑ/رن/سوڈو/ٹی ایس -آر
# دوبارہ لوڈ اور خدمات کو فعال کریں
# اپاچی ماڈیولز کو فعال کریں
# ڈیمون کو دوبارہ لوڈ کریں اور اپاچی ، پوسٹ فکس اور اوپن کِم کو دوبارہ شروع کریں
# ڈومین ترتیب کے لئے IPv6 اور اوپن کِم دکھائیں
اس کوڈ کو چلانے سے پہلے ، یقینی بنائیں کہ آپ نے جو ڈومین خریدا ہے وہ سرور سے منسلک ہے۔ ایسا کرنے کے لئے ، اپنی مقامی مشین پر ایک ٹرمینل کھولیں ، اور یہ کمانڈ اپنے ڈومین کے ساتھ چلائیں:
ping femmebabe.com # پنگ کے بعد ، اپنا ڈومین یہاں داخل کریں
اگر سب ٹھیک نظر آتے ہیں اور سرور جوابات بھیج رہا ہے تو ، ہم اسکرپٹ چلانے اور پیکیجوں کو انسٹال کرنے کے ساتھ ساتھ اپنے اپاچی سرور کو شروع ، اہل اور تصدیق کرنے کے لئے تیار ہیں۔
یہ پوسٹ فکس کو تشکیل دینے کے لئے درکار تمام سیٹ اپ نہیں ہے ، ہم بعد میں اس سیٹ اپ کو دیکھیں گے۔ ابھی کے لئے ، اس سیٹ اپ کوڈ کو چلائیں اور اپنے سرور کو انسٹال کرنے اور اس کی تصدیق کرنے میں کچھ منٹ لگیں۔ ایک بار پھر ، اسکرپٹ میں نام ، ای میل اور ڈومین نام کو اپنے نام کے نام کے مطابق تبدیل کرنا یقینی بنائیں۔
اب جب سرور کی فراہمی ہے ، آپ کسی بھی ویب براؤزر میں URL میں جاسکتے ہیں اور یہ یقینی بنانے کے لئے چیک کرسکتے ہیں کہ سرور HTTPS چلا رہا ہے۔ اگر ایسا نہیں ہے تو ، ڈی این ایس ریکارڈز کو پکڑنے کے لئے تھوڑی دیر انتظار کرنے کی کوشش کریں اور پھر سرٹیفکیٹ بوٹ سرٹیفیکیشن پر دوبارہ کوشش کرنے کے لئے مندرجہ ذیل کمانڈ چلائیں:
sudo certbot --apache --non-interactive --agree-tos --domains <domain>.com --email <youremail>@gmail.com
جب تک کہ آپ نے ہر چیز کو صحیح طریقے سے تشکیل دیا ہے ، آپ کو یہ جاننے کے لئے اپاچی کے پہلے سے طے شدہ صفحے تک رسائی حاصل کرنے کے قابل ہونا چاہئے جو آپ کا کوڈ کام کر رہا ہے اور براہ راست ویب پیج کی نمائش کر رہا ہے۔ اگلا ، آئیے ہمارے ڈیفالٹ ڈیبگ موڈ کو پیداوار میں تبدیل کرنے کے لئے ترتیبات میں ترمیم کریں۔ ہم ڈومین کو ترتیبات کے ساتھ ساتھ داخلی آئی پی ایس میں بھی تشکیل دیں گے۔
nano yourproject/settings.py
ترتیبات میں ، ان لائنوں کو تبدیل/شامل کریں۔
# سائٹ کنفیگ
اب ، ہمیں اپاچی 2 کو تشکیل دینے کی ضرورت ہوگی۔ آئیے ہم اس لائن کے ساتھ تعینات کنفیگ فائل میں ترمیم کریں:
sudo nano /etc/apache2/sites-available/femmebabe-le-ssl.conf
اس کنفیگ فائل میں اس میں ہمارے ڈومین کا نام ، اور صارف اور پروجیکٹ کا نام ہونا چاہئے۔ میں ڈومین کا نام Femmebabe.com ، صارف نام ٹیم ، اور پروجیکٹ کا نام Femmebabe استعمال کر رہا ہوں۔
ServerSignature Off
ServerTokens Prod
<IfModule mod_ssl.c>
<VirtualHost *:80>
Redirect permanent / https://femmebabe.com/
</VirtualHost>
<VirtualHost *:443>
ServerName femmebabe.com
ServerAdmin team@femmebabe.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static /home/team/femmebabe/static
<Directory /home/team/femmebabe/static>
Require all granted
</Directory>
Alias /media/icons /home/team/femmebabe/media/
<Directory /home/team/femmebabe/media>
Require all granted
</Directory>
<Directory /home/team/femmebabe/femmebabe>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIScriptAlias / /home/team/femmebabe/femmebabe/wsgi.py
WSGIDaemonProcess femmebabe python-path=/home/team/femmebabe/ python-home=/home/team/femmebabe/venv header-buffer-size=100000000000 user=team
WSGIProcessGroup femmebabe
WSGIApplicationGroup %{GLOBAL}
<Directory /home/team/femmebabe/static>
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} \.(css|webp|webm|gif|png|mp3|wav|jpeg|jpg|svg|webp)$ [NC]
RewriteCond %{HTTP_REFERER} !^https://femmebabe.com/media/.*$ [NC]
RewriteRule ^(.+?)/$ /media/$1 [F,L]
</IfModule>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/femmebabe.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/femmebabe.com/privkey.pem
Header set X-Frame-Options: "SAMEORIGIN"
Header set Access-Control-Allow-Origin "https://femmebabe.com"
TimeOut 60000
LimitRequestBody 0
<FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|webp|JPG|JPEG|wav|mp3|mp4|public|js|css|swf|webp|svg)$">
Header set Cache-Control "max-age=30, public"
</FilesMatch>
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:80>
ServerName femmebabe.com
ServerAdmin team@femmebabe.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =femmebabe.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
</IfModule>
اپنے سرور کو تشکیل دیتے وقت اس مثال کوڈ میں پروجیکٹ ، ڈائریکٹریز اور ڈومین کے نام کو تبدیل کرنا یقینی بنائیں۔ اب ، ہمیں پہلے سے طے شدہ سائٹ کو غیر فعال کرنے کی ضرورت ہوگی۔ یہ باش کا استعمال کرتے ہوئے کیا جاسکتا ہے۔
sudo a2dissite 000-default-le-ssl
sudo a2dissite 000-default
sudo a2dissite default-ssl
اگلا ، ہم پہلے سے طے شدہ سائٹ کو قابل بناسکتے ہیں اور اپاچی 2 کو دوبارہ لوڈ کرسکتے ہیں ، بھی استعمال کرتے ہوئے۔ یاد رکھیں/وغیرہ/اپاچی 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
لائن to 83 پر سکرول کریں ، جہاں یہ رن ٹائم کی غلطی اٹھائی گئی ہے (رن ٹائم ایرر ("پاپولیٹ () رینٹرنٹ نہیں ہے")) ، اور اس لائن سے پہلے ایک تبصرہ شامل کریں ، پھر اسی اشارے کے ساتھ ، سیلف۔ ایپ_کونفگس = {} کے ساتھ شامل کریں۔ ایسا لگتا ہے:
# ایپ کونفگ کو چلانے سے بچنے کے لئے رینٹرینٹ کالوں کو روکیں۔
# دو بار طریقے۔
# رن ٹائم ایرر ("پاپولیٹ () رینٹرنٹ نہیں ہے")
اس کے بعد آپ پروجیکٹ کو دوبارہ چیک کرسکتے ہیں اور غلطی کو بے نقاب کرسکتے ہیں۔
python manage.py check
تب آپ غلطی دیکھ سکتے ہیں اور اسے ٹھیک کرسکتے ہیں۔ جب آپ نے اسے طے کرلیا ہے اور کوڈ بغیر کسی غلطیوں کے مرتب کرتا ہے تو ، فائل کو واپس تبدیل کرنا یقینی بنائیں تاکہ ایسا لگتا ہے کہ ایسا لگتا ہے:
# ایپ کونفگ کو چلانے سے بچنے کے لئے رینٹرینٹ کالوں کو روکیں۔
# دو بار طریقے۔
# self.app_configs = {}
بشرطیکہ سرور آن لائن ہو ، جب ہم اس میں مزید تبدیلیاں کرتے ہیں تو ، ہمیں سرور کو دوبارہ لوڈ کرنے کے لئے درج ذیل کمانڈ کو استعمال کرنے کی ضرورت ہے:
sudo systemctl reload apache2
بہت اچھا! لیکن میل بھیجنے کے بارے میں کیا خیال ہے؟ ای میل بھیجنا شروع کرنے کے لئے ، ہمیں پہلے ڈومین ترتیب کو اپ ڈیٹ کرنے کی ضرورت ہوگی۔ یہ اسکوائر اسپیس میں آپ کے DNS پینل میں ہونا چاہئے ، یا آپ نے جس بھی ڈومین نام کا رجسٹرار منتخب کیا ہے۔ ہمیں ترتیب انسٹال کرنے اور شامل کرنے کی بھی ضرورت ہوگی ، اور کچھ کمانڈ چلانے کی ضرورت ہوگی۔
پہلے ، سرور کا IPv6 ایڈریس حاصل کریں۔ اس کے بعد ہم آپ کے ڈی این کو کھولیں گے اور ریکارڈ شامل کریں گے۔
سرور کا IPv6 ایڈریس حاصل کرنے کے لئے ، اس کمانڈ کا استعمال کریں:
ip -6 addr
اب ، ہم DNS کی ترتیبات میں درج ذیل ریکارڈ شامل کرسکتے ہیں۔ میرے ریکارڈ اس طرح نظر آتے ہیں۔ تاہم ، آپ کے ریکارڈ کے ل you ، آپ کو آئی پی ایڈریس کو اپنے IP سے تبدیل کرنا چاہئے (75.147.182.214 نہیں ، یہ میرا ہے)۔ اپنے ڈومین کو فیممیباب ڈاٹ کام کی جگہ پر بھی شامل کریں ، نیز آپ کا آئی پی وی 6 ایڈریس پچھلے کمانڈ کے ساتھ پائے گئے (آپ میرا استعمال نہیں کرسکتے ، Fe80 :: 725a: FFF: Fe49: 3E02)۔ ابھی کے لئے ڈومینکی کے بارے میں فکر نہ کریں ، یہ اس وقت تخلیق کیا گیا ہے جب ہم پوسٹ فکس ، میل سرور ، اوپن کِم کے ساتھ ترتیب دیتے ہیں ، اور کلید پرنٹ کرتے ہیں۔ ہم اس کو آخری تشکیل دیں گے۔
رکرا a n/a 75.147.182.214
رکرا ایم ایکس 10 femmebabe.com
رکرا ptr n/a femmebabe.com
رکرا txt n/a txt @ v = spf1 mx IP75.147.182.214ip6: Fe80 :: 725A: FFF: Fe49: 3E02 ~ تمام
ڈیفالٹ ۔_بیمی txt n/a v = bimi1 ؛ l = https: //femmebabe.com/media/static/femmebabe.svg
_dmarc txt n/a v = dmarc1 ؛ p = کوئی نہیں
سینڈونلی ۔_ ڈومینکی
txt
n/a
اب ، ہمیں پوسٹ فکس کے لئے کچھ مستقل ترتیب شامل کرنے کی ضرورت ہوگی۔ ہمیں صرف یہ یقینی بنانا ہے کہ ہم ڈومین نام ، فیممیبیب ڈاٹ کام کو تبدیل کریں ، جس ڈومین نام کے ساتھ آپ استعمال کررہے ہیں۔ آئیے ایک ایک کرکے تمام کنفگ فائلوں کو دیکھیں ، اور او ایس میں انسٹال کرنے کے لئے ، ہمارے پروجیکٹ میں کنفگ نامی ڈائریکٹری میں انسٹال کریں۔
nano config/etc_postfix_main.cf
اس متن کو فائل میں شامل کریں
# تبصرہ شدہ ، مزید مکمل ورژن کے لئے /usr/share/postfix/main.cf.dist دیکھیں
# ڈیبین مخصوص: فائل کا نام بتانے سے پہلے کا سبب بنے گا
# اس فائل کی لائن کو نام کے طور پر استعمال کیا جائے۔ ڈیبین ڈیفالٹ
# /وغیرہ /میل نام ہے۔
# myorigin = /وغیرہ /میل نام
# شامل کرنا. ڈومین ایم یو اے کا کام ہے۔
# "تاخیر سے میل" انتباہات پیدا کرنے کے لئے اگلی لائن کو غیر منظم کریں
# تاخیر_ورنگ_ ٹائم = 4 ایچ
# http://www.postfix.org/compatibility_readme.html - پہلے سے طے شدہ 3.6 پر دیکھیں
# تازہ انسٹال
# TLS پیرامیٹرز
# ملٹر کنفیگریشن
اگلی تشکیل!
nano config/etc_postfix_master.cf
ان لائنوں کو شامل کریں:
#
# پوسٹ فکس ماسٹر پروسیس کنفیگریشن فائل۔ فارمیٹ سے متعلق تفصیلات کے لئے
# فائل میں سے ، ماسٹر (5) دستی صفحہ دیکھیں (کمانڈ: "مین 5 ماسٹر" یا
# آن لائن: http://www.postfix.org/master.5.html)۔
#
# اس فائل میں ترمیم کے بعد "پوسٹ فکس دوبارہ لوڈ" پر عملدرآمد کرنا نہ بھولیں۔
#
# ===========================================================================
# سروس ٹائپ پرائیویٹ غیر پرائیو کروٹ ویک اپ میکس پروک کمانڈ + آرگس
# (ہاں) (ہاں) (نہیں) (کبھی نہیں) (100)
# ===========================================================================
# smtp inet n - y - 1 پوسٹ اسکرین
# SMTPD پاس - - Y - - SMTPD
# DNSBLOG UNIX - - Y - 0 DNSBLOG
# tlsproxy Unix - - y - 0 tlsproxy
# ایک کا انتخاب کریں: صرف لوپ بیک گاہکوں کے لئے ، یا کسی بھی مؤکل کے لئے جمع کرانے کو فعال کریں۔
# 127.0.0.1:Submission inet n - y - - smtpd
# -o syslog_name = پوسٹ فکس/جمع کرانا
# -o smtpd_tls_security_level = انکرپٹ
# -o smtpd_sasl_auth_enable = ہاں
# -o smtpd_tls_auth_only = ہاں
# -o smtpd_reject_unlisted_recipient = نہیں
# -o smtpd_client_restictions = $ mua_client_restrictions
# -o smtpd_helo_restictions = $ mua_helo_restrictions
# -o smtpd_sender_restictions = $ mua_sender_restrictions
# -o smtpd_recipient_restictions =
# -o smtpd_relay_restictions = اجازت نامہ_ساسل_ایتینٹیکیٹیکیٹیکیٹیکیٹیکیٹ ، مسترد کریں
# -o ملٹر_ماکرو_ڈیمون_ نام = شروع کرنا
# ایک کا انتخاب کریں: صرف لوپ بیک گاہکوں کے لئے ، یا کسی بھی مؤکل کے لئے ایس ایم ٹی پی ایس کو فعال کریں۔
# 127.0.0.1:SMTPS inet n - y - - smtpd
# smtps inet n - y - - smtpd
# -o syslog_name = postfix/smtps
# -o smtpd_tls_wrappermode = ہاں
# -o smtpd_sasl_auth_enable = ہاں
# -o smtpd_reject_unlisted_recipient = نہیں
# -o smtpd_client_restictions = $ mua_client_restrictions
# -o smtpd_helo_restictions = $ mua_helo_restrictions
# -o smtpd_sender_restictions = $ mua_sender_restrictions
# -o smtpd_recipient_restictions =
# -o smtpd_relay_restictions = اجازت نامہ_ساسل_ایتینٹیکیٹیکیٹیکیٹیکیٹیکیٹ ، مسترد کریں
# -o ملٹر_ماکرو_ڈیمون_ نام = شروع کرنا
# 628 inet n - y - - QMQPD
# QMGR UNIX N - N 300 1 OQMGR
# -o smtp_helo_timeout = 5 -o smtp_connect_timeout = 5
#
# ======================================================================
# نان پوسٹ فکس سافٹ ویئر میں انٹرفیس۔ دستی کی جانچ کرنا یقینی بنائیں
# نان پوسٹ فکس سافٹ ویئر کے صفحات یہ جاننے کے لئے کہ وہ کیا اختیارات چاہتا ہے۔
#
# مندرجہ ذیل میں سے بہت ساری خدمات پوسٹ فکس پائپ (8) کی ترسیل کا استعمال کرتی ہیں
# ایجنٹ $ {وصول کنندہ} کے بارے میں معلومات کے لئے پائپ (8) مین پیج دیکھیں
# اور دوسرے پیغام کے لفافے کے اختیارات۔
# ======================================================================
#
# میل ڈراپ تفصیلات کے لئے پوسٹ فکس میل ڈراپ_ ریڈیم فائل دیکھیں۔
# مین ڈاٹ سی ایف میں بھی وضاحت کریں: میل ڈراپ_ڈیسٹینیشن_ریسیپینٹ_ لیمٹ = 1
#
#
# ======================================================================
#
# حالیہ سائرس ورژن موجودہ "ایل ایم ٹی پی" ماسٹر سی ایف انٹری کا استعمال کرسکتے ہیں۔
#
# cyrus.conf میں وضاحت کریں:
# LMTP CMD = "LMTPD -A" سنیں = "لوکل ہوسٹ: LMTP" پروٹو = TCP4
#
# مندرجہ ذیل میں سے ایک یا ایک سے زیادہ main.cf میں وضاحت کریں:
# میل باکس_ٹرانسپورٹ = ایل ایم ٹی پی: INET: لوکل ہوسٹ
# ورچوئل_ٹرانسپورٹ = ایل ایم ٹی پی: INET: لوکل ہوسٹ
#
# ======================================================================
#
# سائرس 2.1.5 (آموس گوؤکس)
# مین ڈاٹ سی ایف میں بھی وضاحت کریں: cyrus_destination_recipient_limit = 1
#
# سائرس UNIX - N N - - پائپ
# جھنڈے = drx صارف = Cyrus argv =/cyrus/bin/deliver -e -re $ {بھیجنے والا} -M $ {توسیع} $ {صارف}
#
# ======================================================================
# سائرس کے ذریعہ ترسیل کی پرانی مثال۔
#
# اولڈ سائرس UNIX - N N - - پائپ
# جھنڈے = r صارف = سائرس آرگوی =/سائرس/بن/ڈیلیوری -e -m $ {توسیع} $ {صارف}
#
# ======================================================================
#
# تشکیل کی تفصیلات کے لئے پوسٹ فکس UUCP_README فائل دیکھیں۔
#
#
# بیرونی ترسیل کے دیگر طریقے۔
#
اور اوپن کِم کنفیگریشن۔ اوپن کِم نے ڈومین کیز کے ساتھ ای میل سرورز کی نشاندہی کی تاکہ انہیں زیادہ محفوظ بنایا جاسکے۔ اس کے بغیر ، میل پر دستخط نہیں ہیں اور شاید اسے کسی ان باکس میں نہیں بنائیں گے۔
nano config/etc_default_opendkim
ان لائنوں کو شامل کریں:
# نوٹ: یہ میراثی ترتیب فائل ہے۔ یہ اوپن کِم کے ذریعہ استعمال نہیں ہوتا ہے
# سسٹم ڈی سروس۔ براہ کرم متعلقہ ترتیب کے پیرامیٹرز استعمال کریں
# اس کے بجائے /etc/opendkim.conf.
#
# اس سے پہلے ، کوئی یہاں پہلے سے طے شدہ ترتیبات میں ترمیم کرے گا ، اور پھر اس پر عملدرآمد کرے گا
# /lib/opendkim/opendkim.service.generate سسٹمڈ اوور رائڈ فائلوں کو تیار کرنے کے لئے
# /etc/systemd/system/opendkim.service.d/override.conf اور
# /etc/tmpfiles.d/opendkim.conf. اگرچہ یہ ابھی بھی ممکن ہے ، اب یہ ہے
# /etc/opendkim.conf میں براہ راست ترتیبات کو ایڈجسٹ کرنے کی سفارش کی گئی ہے۔
#
# daemon_opts = ""
# یونکس ساکٹ کے ساتھ استعمال کرنے کے لئے/var/spool/postfix/run/opendkim میں تبدیل کریں
# ایک کروٹ میں پوسٹ فکس:
# rundir =/var/spool/postfix/run/opendkim
#
# متبادل ساکٹ کی وضاحت کرنے کے لئے غیر سنجیدگی
# نوٹ کریں کہ اس کو ترتیب دینے سے کسی بھی ساکٹ ویلیو کو اوپنڈکیم ڈاٹ کام میں ختم ہوجائے گا
# پہلے سے طے شدہ:
# پورٹ 54321 پر تمام انٹرفیس پر سنیں:
# ساکٹ = inet: 54321
# پورٹ 12345 پر لوپ بیک پر سنیں:
# ساکٹ = inet: 12345@لوکل ہوسٹ
# پورٹ 12345 پر 192.0.2.1 پر سنیں:
# ساکٹ = inet: 12345@192.0.2.1
nano config/etc_dovecot_conf.d_10-master.conf
ان لائنوں کو شامل کریں:
# default_process_limit = 100
# default_client_limit = 1000
# خدمت کے عمل کے لئے ڈیفالٹ VSZ (ورچوئل میموری سائز) کی حد۔ یہ بنیادی طور پر ہے
# اس عمل کو پکڑنے اور مارنے کا ارادہ کیا جو کھانے سے پہلے میموری کو لیک کرتے ہیں
# سب کچھ
# default_vsz_limit = 256m
# لاگ ان صارف داخلی طور پر لاگ ان عمل کے ذریعہ استعمال ہوتا ہے۔ یہ سب سے زیادہ پرکشش ہے
# ڈوکوٹ سسٹم میں صارف۔ اسے کسی بھی چیز تک رسائی نہیں ہونی چاہئے۔
# default_login_user = dovenull
# داخلی صارف غیر محفوظ عمل کے ذریعہ استعمال ہوتا ہے۔ یہ الگ ہونا چاہئے
# لاگ ان صارف ، تاکہ لاگ ان کے عمل دوسرے عمل کو پریشان نہیں کرسکتے ہیں۔
# default_internal_user = dovecot
# پورٹ = 143
# پورٹ = 993
# ایس ایس ایل = ہاں
# نیا عمل شروع کرنے سے پہلے سنبھالنے کے لئے رابطوں کی تعداد۔ عام طور پر
# صرف مفید اقدار 0 (لامحدود) یا 1. 1 زیادہ محفوظ ہیں ، لیکن 0
# تیز ہے۔ <DOC/Wiki/loginprocess.txt>
# سروس_کاؤنٹ = 1
# مزید رابطوں کا انتظار کرنے کے ل processes عمل کی تعداد۔
# عمل_مین_ایل = 0
# اگر آپ سروس_کاؤنٹ = 0 مرتب کرتے ہیں تو ، آپ کو شاید اس میں اضافہ کرنے کی ضرورت ہوگی۔
# vsz_limit = $ default_vsz_limit
# پورٹ = 110
# پورٹ = 995
# ایس ایس ایل = ہاں
# پورٹ = 587
# اگر آپ مذکورہ یونکس ساکٹ استعمال نہیں کرسکتے ہیں تو صرف inet سننے والا بنائیں
# inet_listener lmtp {
# پورے انٹرنیٹ کے لئے ایل ایم ٹی پی کو مرئی بنانے سے گریز کریں
# پتہ =
# پورٹ =
# دہ
# زیادہ تر میموری ایم ایم اے پی () ING فائلوں پر جاتی ہے۔ آپ کو اس میں اضافہ کرنے کی ضرورت پڑسکتی ہے
# اگر آپ کے پاس بہت بڑے میل باکسز ہیں تو محدود کریں۔
# vsz_limit = $ default_vsz_limit
# زیادہ سے زیادہ IMAP عمل کی تعداد (رابطے)
# عمل_ لیمٹ = 1024
# زیادہ سے زیادہ POP3 عمل کی تعداد (رابطے)
# عمل_ لیمٹ = 1024
# زیادہ سے زیادہ ایس ایم ٹی پی جمع کرانے کے عمل کی تعداد (رابطوں)
# عمل_ لیمٹ = 1024
# Auth_socket_path اس صارف ڈی بی ساکٹ کی طرف اشارہ کرتے ہیں۔ یہ عام طور پر ہوتا ہے
# ڈوکوٹ-ایل ڈی اے ، ڈوڈیم ، ممکنہ طور پر آئی ایم اے پی عمل ، وغیرہ کے ذریعہ استعمال کیا جاتا ہے۔
# اس ساکٹ کو مکمل اجازتیں تمام صارف ناموں کی فہرست حاصل کرنے کے قابل ہیں اور
# ہر ایک کے صارف کی تلاش کے نتائج حاصل کریں۔
#
# پہلے سے طے شدہ 0666 وضع کسی کو بھی ساکٹ سے رابطہ قائم کرنے کی اجازت دیتا ہے ، لیکن
# یوزر ڈی بی کی تلاش صرف اس صورت میں کامیاب ہوگی جب یوزر ڈی بی "UID" فیلڈ واپس کرے گا
# کالر کے عمل کے UID سے میل کھاتا ہے۔ نیز اگر کالر کا UID یا GID مماثل ہے
# ساکٹ کا UID یا gid تلاش کامیاب ہوتا ہے۔ کچھ بھی ناکامی کا سبب بنتا ہے۔
#
# کال کرنے والے کو تمام صارفین کو تلاش کرنے کے لئے مکمل اجازت دینے کے لئے ، موڈ کو مرتب کریں
# 0666 اور ڈویکوٹ کے علاوہ کچھ اور کرنل کو نافذ کرنے دیتا ہے
# اجازت (جیسے 0777 ہر ایک کو مکمل اجازت کی اجازت دیتا ہے)۔
# Auth کارکن کا عمل بطور ڈیفالٹ جڑ کے طور پر چلایا جاتا ہے ، تاکہ اس تک رسائی حاصل ہوسکے
# /وغیرہ/شیڈو۔ اگر یہ ضروری نہیں ہے تو ، صارف کو تبدیل کرنا چاہئے
# $ default_internal_user.
# صارف = جڑ
# اگر ڈکٹ پراکسی استعمال کی جاتی ہے تو ، میل کے عمل کو اس کے ساکٹ تک رسائی حاصل ہونی چاہئے۔
# مثال کے طور پر: وضع = 0660 ، گروپ = وی میل اور عالمی میل_ایسیس_ گروپ = وی میل
# موڈ = 0600
# صارف =
# گروپ =
ایک بار پھر ، ان تمام فائلوں میں ڈومین کو تبدیل کرنا یقینی بنائیں ، Femmebabe.com ، آپ نے منتخب کردہ ڈومین کے ساتھ۔ اگلی فائل میں ترمیم کریں ، ڈوکوٹ کی تشکیل ،
nano config/etc_dovecot_dovecot
اور ان لائنوں کو شامل کریں
## ڈوکوٹ کنفیگریشن فائل
# اگر آپ جلدی میں ہیں تو ، http://wiki2.dovecot.org/quickconfiguration دیکھیں
# "ڈوکونف -ن" کمانڈ تبدیل شدہ ترتیبات کا صاف آؤٹ پٹ دیتا ہے۔ اسے استعمال کریں
# ڈوکوٹ میلنگ لسٹ میں پوسٹ کرتے وقت فائلوں کاپی اور چسپاں کرنے کے بجائے۔
# '# 'کردار اور ہر چیز کو تبصرے کے طور پر سمجھا جاتا ہے۔ اضافی جگہیں
# اور ٹیبز کو نظرانداز کیا جاتا ہے۔ اگر آپ ان میں سے کسی کو واضح طور پر استعمال کرنا چاہتے ہیں تو ، ڈالیں
# value inside quotes, eg.: key = "# چار اور ریپلنگ وائٹ اسپیس "
# زیادہ تر (لیکن سبھی نہیں) ترتیبات کو مختلف پروٹوکول اور/یا کے ذریعہ ختم کیا جاسکتا ہے
# حصوں کے اندر ترتیبات رکھ کر ماخذ/منزل مقصود IPs ، مثال کے طور پر:
# پروٹوکول IMAP {} ، مقامی 127.0.0.1 {} ، ریموٹ 10.0.0.0/8 {}
# پہلے سے طے شدہ اقدار ہر ترتیب کے لئے دکھائے جاتے ہیں ، اس کو غیر سنجیدگی کی ضرورت نہیں ہے
# وہ اگرچہ یہ اس سے مستثنیات ہیں: کوئی حصے نہیں (جیسے نام کی جگہ {})
# یا پلگ ان کی ترتیبات کو بطور ڈیفالٹ شامل کیا جاتا ہے ، وہ صرف مثال کے طور پر درج ہیں۔
# راستے بھی صرف مثالیں ہیں جن کی ترتیب پر مبنی اصلی ڈیفالٹس ہیں
# اختیارات یہاں درج راہیں تشکیل کے لئے ہیں -پریفکس =/usr
# -سیسکونفڈیر =/وغیرہ-لوکلسٹیٹیڈیر =/var
# انسٹال شدہ پروٹوکول کو فعال کریں
# آئی پی ایس یا میزبانوں کی ایک کوما سے الگ کردہ فہرست جہاں رابطوں کے لئے سننا ہے۔
# "*" تمام IPv4 انٹرفیس میں سنتا ہے ، "::" تمام IPv6 انٹرفیس میں سنتا ہے۔
# اگر آپ نان ڈیفالٹ بندرگاہوں یا کسی اور بھی پیچیدہ چیز کی وضاحت کرنا چاہتے ہیں ،
# conf.d/master.conf میں ترمیم کریں۔
# سنیں = *، ::
# بیس ڈائرکٹری جہاں رن ٹائم ڈیٹا اسٹور کریں۔
# base_dir =/var/run/dovecot/
# اس مثال کا نام۔ ملٹی انسٹینس سیٹ اپ ڈوڈیم اور دیگر کمانڈز میں
# استعمال کرسکتے ہیں -i <مثال_ نام> کو منتخب کرنے کے لئے کون سا مثال استعمال کیا جاتا ہے (ایک متبادل
# to -C <fighig_path>)۔ مثال کے طور پر ڈوکوٹ کے عمل میں بھی شامل کیا گیا ہے
# PS آؤٹ پٹ میں۔
# مثال کے طور پر_ نام = dovecot
# گاہکوں کے لئے سلام پیغام۔
# لاگ ان_ گریٹنگ = ڈوکوٹ تیار ہے۔
# قابل اعتماد نیٹ ورک کی حدود کی جگہ سے الگ الگ فہرست۔ ان سے رابطے
# آئی پی کو اپنے IP پتے اور بندرگاہوں کو اوور رائڈ کرنے کی اجازت ہے (لاگنگ کے لئے اور
# توثیق کی جانچ پڑتال کے لئے)۔ غیر فعال_پلیئنٹ ٹیکسٹ_اوت کو بھی نظرانداز کیا جاتا ہے
# یہ نیٹ ورک۔ عام طور پر آپ یہاں اپنے IMAP پراکسی سرورز کی وضاحت کرتے ہیں۔
# login_trusted_networks =
# لاگ ان تک رسائی کی جانچ ساکٹ (جیسے TCPWRAP) کی جگہ سے الگ الگ فہرست (جیسے TCPWRAP)
# login_access_sockets =
# proxy_maybe کے ساتھ = ہاں اگر پراکسی منزل ان میں سے کسی بھی IP سے مماثل ہے تو ، ایسا نہ کریں
# پراکسینگ یہ عام طور پر ضروری نہیں ہے ، لیکن اگر منزل مقصود ہو تو کارآمد ثابت ہوسکتی ہے
# IP ہے جیسے۔ ایک بوجھ بیلنسر کا IP۔
# auth_proxy_self =
# مزید فعل عمل کے عنوانات (PS میں) دکھائیں۔ فی الحال صارف کا نام اور ظاہر کرتا ہے
# IP ایڈریس یہ دیکھنے کے لئے مفید ہے کہ اصل میں IMAP عمل کون استعمال کررہے ہیں
# (جیسے مشترکہ میل باکسز یا اگر ایک ہی UID متعدد اکاؤنٹس کے لئے استعمال ہوتا ہے)۔
# verbose_proctitle = نہیں
# جب ڈویکوٹ ماسٹر پروسیس بند ہوجائے تو تمام عمل کو ہلاک کیا جانا چاہئے۔
# اس کو "نہیں" پر ترتیب دینے کا مطلب ہے کہ ڈوکیٹ کو بغیر اپ گریڈ کیا جاسکتا ہے
# موجودہ کلائنٹ کنیکشن کو بند کرنے پر مجبور کرنا (حالانکہ یہ بھی ہوسکتا ہے
# ایک مسئلہ اگر اپ گریڈ ہے جیسے۔ سیکیورٹی فکس کی وجہ سے)۔
# شٹ ڈاؤن_کلینٹ = ہاں
# اگر غیر صفر ہو تو ، ڈوڈیم سرور سے اس بہت سے رابطوں کے ذریعہ میل کمانڈز چلائیں ،
# اسی عمل میں براہ راست انہیں چلانے کے بجائے۔
# doveadm_worker_count = 0
# UNIX ساکٹ یا میزبان: DOVEADM سرور سے مربوط ہونے کے لئے استعمال شدہ پورٹ
# doveadm_socket_path = doveadm-server
# ماحولیاتی متغیرات کی جگہ سے الگ کردہ فہرست جو ڈویکوٹ پر محفوظ ہیں
# اسٹارٹ اپ اور اپنے تمام بچوں کے عمل کو نیچے پہنچا۔ آپ بھی دے سکتے ہیں
# کلیدی = قدر کے جوڑے ہمیشہ مخصوص ترتیبات کو طے کرنے کے لئے۔
# امپورٹ_ ماحولیات = tz
##
## لغت سرور کی ترتیبات
##
# کلیدی = ویلیو لسٹوں کو ذخیرہ کرنے کے لئے لغت کا استعمال کیا جاسکتا ہے۔ یہ کئی استعمال کرتے ہیں
# پلگ ان لغت کو براہ راست یا اگرچہ a تک رسائی حاصل کی جاسکتی ہے
# لغت سرور۔ مندرجہ ذیل ڈکٹ بلاک میپ ڈکشنری کے ناموں کو URIS کے لئے
# جب سرور استعمال ہوتا ہے۔ اس کے بعد ان کو شکل میں URIS کا استعمال کرتے ہوئے حوالہ دیا جاسکتا ہے
# "پراکسی :: <name>"۔
# کوٹہ = mysql: /etc/dovecot/dovecot-dict-sql.conf.ext
# زیادہ تر اصل ترتیب ذیل میں شامل ہوجاتی ہے۔ فائل نام ہیں
# پہلے ان کی ASCII قدر کے ذریعہ ترتیب دیا گیا اور اس ترتیب میں تجزیہ کیا گیا۔ 00-prefixes
# فائل ناموں میں آرڈر کو سمجھنے میں آسانی پیدا کرنا ہے۔
# ایک کنفگ فائل بھی غلطی دیئے بغیر بھی شامل کرنے کی کوشش کر سکتی ہے
# یہ نہیں ملا:
# ڈویکوٹ کو تمام ان پٹ کنکشن (IPv4 / IPv6) سننے کی اجازت دیتا ہے
ڈوکوٹ صارف کے لئے پاس ورڈ شامل کریں:
nano config/etc_dovecot_passwd
فائل کا پہلا حصہ ، بڑی آنت سے پہلے ، صارف نام ہے۔ آخری حصہ ، "آپ کے پاس ورڈ" ، پاس ورڈ کی نشاندہی کرتا ہے جسے آپ اپنے میل سرور کو دینا چاہتے ہیں۔
team:{plain}yourpassword
اگلا ، اوپن کِم کنفیگ
nano config/etc_opendkim.conf
اور ان لائنوں کو شامل کریں:
# یہ دستخط کرنے اور توثیق کرنے کے لئے ایک بنیادی ترتیب ہے۔ یہ آسانی سے ہوسکتا ہے
# بنیادی تنصیب کے مطابق ڈھال لیا۔ opendkim.conf (5) اور دیکھیں
# /usr/share/doc/opendkim/examples/opendkim.conf.sample مکمل کے لئے
# دستیاب کنفیگریشن پیرامیٹرز کی دستاویزات۔
# لاگ نہیں
# عام دستخط اور توثیق کے پیرامیٹرز۔ ڈیبیان میں ، "سے" ہیڈر ہے
# نگرانی کی جاتی ہے ، کیونکہ یہ اکثر شناخت کی کلید ہوتی ہے جو ساکھ کے نظام کے ذریعہ استعمال ہوتی ہے
# اور اس طرح کسی حد تک سیکیورٹی حساس۔
# ڈومین ، سلیکٹر ، اور کلیدی (مطلوبہ) پر دستخط کرنا۔ مثال کے طور پر ، دستخط کریں
# ڈومین کے لئے "مثال ڈاٹ کام" کے ساتھ سلیکٹر "2020" (2020._domainkey.example.com) ،
# /etc/dkimkeys/example.private میں ذخیرہ شدہ نجی کلید کا استعمال۔ زیادہ دانے دار
# سیٹ اپ کے اختیارات /usr/share/doc/opendkim/readme.opendkim میں مل سکتے ہیں۔
# ڈومین مثال ڈاٹ کام
# سلیکٹر 2020
# keyfile /etc/dkimkeys/example.private
# ڈیبین میں ، اوپن کِم صارف "اوپن کِم" کی حیثیت سے چلتا ہے۔ جب 007 کا عماسک ضروری ہے
# ایم ٹی اے کے ساتھ مقامی ساکٹ کا استعمال کرتے ہوئے جو ساکٹ کو غیر مراعات یافتہ کے طور پر تک رسائی حاصل کرتا ہے
# صارف (مثال کے طور پر ، پوسٹ فکس)۔ آپ کو گروپ میں صارف کو "پوسٹ فکس" شامل کرنے کی ضرورت پڑسکتی ہے
# اس معاملے میں "اوپن کِم"۔
# ایم ٹی اے کنکشن کے لئے ساکٹ (مطلوبہ)۔ اگر ایم ٹی اے کروٹ جیل کے اندر ہے ،
# یہ یقینی بنانا ہوگا کہ ساکٹ قابل رسائی ہے۔ ڈیبین میں ، پوسٹ فکس چلتا ہے
# /var/spool/postfix میں ایک chroot ، لہذا ایک یونکس ساکٹ ہونا پڑے گا
# جیسا کہ ذیل میں آخری لائن پر دکھایا گیا ہے۔
# ساکٹ لوکل: /run/opendkim/opendkim.sock
# ساکٹ INET: 8891@لوکل ہوسٹ
# ساکٹ inet: 8891
# میزبان جس کے لئے دستخط کرنے کے بجائے دستخط کریں ، ڈیفالٹ 127.0.0.1 ہے۔ دیکھیں
# مزید معلومات کے لئے اوپن کِم (8) کا آپریشن سیکشن۔
# اندرونی ہوسٹس 192.168.0.0/16 ، 10.0.0.0/8 ، 172.16.0.0/12
# ٹرسٹ اینکر DNSSEC کو قابل بناتا ہے۔ ڈیبین میں ، ٹرسٹ اینکر فائل فراہم کی گئی ہے
# پیکیج کے ذریعہ DNS-root ڈیٹا۔
# نام سرور 127.0.0.1
# ایڈریس سے لے کر چابیاں تک میپ ڈومینز پیغامات پر دستخط کرنے کے لئے استعمال ہوتے ہیں
# داخلی میزبانوں کا ایک مجموعہ جس کے میل پر دستخط کیے جائیں
nano config/etc_default_opendkim
اور ان لائنوں کو شامل کریں
# نوٹ: یہ میراثی ترتیب فائل ہے۔ یہ اوپن کِم کے ذریعہ استعمال نہیں ہوتا ہے
# سسٹم ڈی سروس۔ براہ کرم متعلقہ ترتیب کے پیرامیٹرز استعمال کریں
# اس کے بجائے /etc/opendkim.conf.
#
# اس سے پہلے ، کوئی یہاں پہلے سے طے شدہ ترتیبات میں ترمیم کرے گا ، اور پھر اس پر عملدرآمد کرے گا
# /lib/opendkim/opendkim.service.generate سسٹمڈ اوور رائڈ فائلوں کو تیار کرنے کے لئے
# /etc/systemd/system/opendkim.service.d/override.conf اور
# /etc/tmpfiles.d/opendkim.conf. اگرچہ یہ ابھی بھی ممکن ہے ، اب یہ ہے
# /etc/opendkim.conf میں براہ راست ترتیبات کو ایڈجسٹ کرنے کی سفارش کی گئی ہے۔
#
# daemon_opts = ""
# یونکس ساکٹ کے ساتھ استعمال کرنے کے لئے/var/spool/postfix/run/opendkim میں تبدیل کریں
# ایک کروٹ میں پوسٹ فکس:
# rundir =/var/spool/postfix/run/opendkim
#
# متبادل ساکٹ کی وضاحت کرنے کے لئے غیر سنجیدگی
# نوٹ کریں کہ اس کو ترتیب دینے سے کسی بھی ساکٹ ویلیو کو اوپنڈکیم ڈاٹ کام میں ختم ہوجائے گا
# پہلے سے طے شدہ:
# پورٹ 54321 پر تمام انٹرفیس پر سنیں:
# ساکٹ = inet: 54321
# پورٹ 12345 پر لوپ بیک پر سنیں:
# ساکٹ = inet: 12345@لوکل ہوسٹ
# پورٹ 12345 پر 192.0.2.1 پر سنیں:
# ساکٹ = inet: 12345@192.0.2.1
جب ہم اپنا پوسٹ فکس سرور مرتب کرنے کے لئے تیار ہوں گے تو ، ہم نیچے کا کوڈ چلائیں گے ، مناسب ڈومین نام ایمبیڈڈ کے ساتھ۔ اسکرپٹ بنا کر شروع کریں
touch scripts/postfixsetup
sudo chmod a+x scripts/postfixsetup
nano scripts/postfixsetup
اب ، ٹیکسٹ ایڈیٹر نانو میں ، اس فائل میں ترمیم کریں تاکہ اس میں فیممیباب ڈاٹ کام کے بجائے آپ کا ڈومین کا نام شامل ہو۔
# !/بن/باش
# سیٹ اپ پوسٹ فکس
اب ، پوسٹ فکس ، اوپن کِم اور ڈوکیٹ کو تشکیل دینے کے لئے مکمل اسکرپٹ چلائیں۔
./scripts/postfixsetup
ایک بار جب یہ اسکرپٹ چلتا ہے تو ، آخری لائن کاپی کریں جس پر یہ پرنٹ ہوتا ہے اور اسے اپنے DNS کنفیگریشن میں سینڈونلی کی قیمت کے طور پر چسپاں کریں۔ محفوظ میل بھیجتے وقت یہ آپ کے ڈومین کی شناخت کے لئے استعمال ہونے والی اوپنڈکیم کلید ہے۔
بہت اچھا! کچھ ہی دنوں میں ، آپ کو سرور سے میل بھیجنے کے قابل ہونا چاہئے بشرطیکہ ہر چیز کو صحیح طریقے سے تشکیل دیا جائے۔
اگر آپ نے ابھی اپنے میل سرور کے لئے ڈی این ایس کو تشکیل دیا ہے تو ، ریکارڈوں کو اپ ڈیٹ کرنے میں 72 گھنٹے سے بھی کم وقت لینا چاہئے۔ یہ عام طور پر بہت تیز ہوتا ہے۔ آپ چیک کرسکتے ہیں کہ آیا آپ کا سرور اس کمانڈ کا استعمال کرکے کام کر رہا ہے ، آپ کا ای میل فراہم کیا:
echo "test" | mail -s "Test Email" youremail@gmail.com
اگر سب کچھ صحیح طریقے سے کام کر رہا ہے تو ، آپ کو اپنے سرور کے ساتھ ای میل بھیجنے کے قابل ہونا چاہئے۔ اگر یہ کام نہیں کررہا ہے تو ، یہ دیکھنے کے لئے لاگ ان کو دیکھنے کی کوشش کریں کہ غلطی کیا ہوسکتی ہے۔
tail –lines 150 /var/log/mail.log
یہ میل کے بارے میں فعل کی معلومات پیش کرے گا جو سرور کے ذریعہ بھیجا گیا ہے اور کیا یہ صحیح طریقے سے کام کر رہا ہے۔ آپ کو اپنے ان باکس میں بھی ای میل دیکھنے کے قابل ہونا چاہئے ، اگر وہ وہاں نہیں ہے تو ، اپنے اسپام فولڈر کو چیک کریں۔
آپ کو اپنی ترتیبات کو اپنی ترتیبات میں تشکیل دینے کی بھی ضرورت ہوگی۔ اپنی ترتیبات میں ان لائنوں کو شامل کریں یا تبدیل کریں
EMAIL_HOST_USER = 'team' # 'love@mamashen.com'
نوٹ کریں کہ ہم پاس ورڈ حاصل کرنے کے لئے ایک کنفگ فائل استعمال کررہے ہیں۔ آئیے اس فائل کو ترتیبات میں لوڈ کریں جیسے فائل کے آغاز میں:
# کھلی اور لوڈ کنفیگ
آئیے اس فائل کو بنائیں اور اس میں ایک خفیہ کلید کے ساتھ ساتھ میل پاس ورڈ بھی شامل کریں۔ ایک خفیہ کلید تیار کرنے کے لئے ، اس کمانڈ کو استعمال کریں ، جس کی لمبائی آپ کو آخر میں پسند ہے:
openssl rand -base64 64
اب ، اس متن کو کاپی کریں جو تیار کردہ ہے اور /etc/config.json میں ترمیم کریں
sudo nano /etc/config.json
اپنی فائل میں درج ذیل لائنوں کو شامل کریں ، اس کلید کے ساتھ جو خفیہ کلید کے طور پر تیار کردہ کھلتی ہے۔
{
"SECRET_KEY": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX-generated-using-openssl)",
"EMAIL_HOST_PASSWORD": "yourpassword"
}
JSON فارمیٹ آسان اور استعمال میں آسان ہے ، ہم دوسری چابیاں کا اعلان کرسکتے ہیں جو ہم اپنے پروجیکٹ میں بھی اس طرح استعمال کرنا چاہتے ہیں ، اور انہیں ہماری پروجیکٹ ڈائرکٹری سے الگ رکھ سکتے ہیں تاکہ دوسرے صارف ان کو لکھ نہ سکیں اور لہذا وہ صرف ہماری پروجیکٹ ڈائرکٹری سے نہیں پڑھ سکتے ہیں۔ API کیز کے لئے یہ تجویز کردہ مشق ہے ، جس میں سے ہم یہاں کچھ سے زیادہ استعمال کریں گے۔
آپ یہ بھی یقینی بنانے کے لئے اپنے پروجیکٹ کا بیک اپ لینا چاہیں گے کہ سب کچھ محفوظ ہو گیا ہے اور آپ بعد میں اپنے کام کی بازیافت کرسکیں گے یہاں تک کہ اگر آپ سرور کو کرایہ پر نہیں لینا چاہتے ہیں۔
sudo backup
اب ، ویب سرور سے HTML ای میل بھیجنے کی کوشش کریں ، بشرطیکہ کمانڈ لائن سے بھیجنا کام کر رہا ہے۔ شیل میں اپنے صارف کی مثال کے طور پر استفسار کریں ، اور جیانگو کے ذریعہ اس صارف کو 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
بشرطیکہ ہر چیز صحیح طریقے سے ترتیب دی جائے ، اب آپ کو اپنے ویب ایپ کے ذریعہ بھیجے گئے اپنے میل باکس میں ایک خوش آئند ای میل ملے گا۔ اچھی نوکری! آپ نے بہت طویل سفر طے کیا ہے۔
میں یہ شامل کرنا چاہتا تھا ، اگر آپ اس طرح کے کسی پروجیکٹ پر کام کرتے ہوئے کبھی بھی کسی غلطیوں کے ساتھ جدوجہد کر رہے ہیں تو ، جوابات تلاش کرنے اور مدد کے لئے پوچھنے میں ہچکچاہٹ نہ کریں۔ گوگل ، دوسرے سرچ انجنوں کے علاوہ ، پروگرامنگ مدد کی تلاش کے ل great بہترین وسائل ہیں۔ بس آپ کو جو غلطی ہو رہی ہے اسے تلاش کریں ، اور آپ یہ دیکھ سکیں گے کہ دوسرے لوگ اس مسئلے کو کس طرح حل کرتے ہیں۔ نیز ، آپ کا استقبال ہے کہ آپ مجھ سے رابطہ کریں ، آپ کے اساتذہ (اساتذہ ، پروفیسرز ، ٹیوٹرز) ، انٹرنیٹ پر موجود کوئی بھی ساتھی جو پروگرامنگ مدد کے لئے دستیاب ہیں ، یا اس کتاب یا دوسرے وسائل سے مشورہ کریں تاکہ آپ ان مسائل کا حل تلاش کریں جن کا آپ سامنا کر رہے ہیں۔ میں سمجھتا ہوں کہ یہ آسان نہیں ہے ، لیکن یہاں تک کہ اگر آپ نے ابھی تک پڑھا ہے اور کوئی کوڈ نہیں لکھ رہے ہیں تو ، آپ شروع سے ہی ویب ایپ بنانے کے بارے میں بہت کچھ سیکھ رہے ہیں۔ اپنے آپ کو پیٹھ پر تھپتھپائیں ، آپ بہت اچھا کام کر رہے ہیں۔
اس تیسرے ایڈیشن ویب ڈویلپمنٹ گائیڈ کو پڑھنے کے لئے وقت نکالنے کے لئے آپ کا شکریہ۔ مستقبل کے ایڈیشنوں میں ، میں دستاویز کے آغاز میں زیر بحث آنے والی مزید اہم مثالوں کو شامل کروں گا اور ہم سافٹ ویئر اور ہارڈ ویئر کی ترقی کی دنیا میں بہت زیادہ گہرائی میں ڈوبیں گے۔ آنے والی چیزوں کے ل conted رہیں ، اور میں آپ کو ناقابل یقین سافٹ ویئر بنانے کا طریقہ سکھانے کے منتظر ہوں۔ اگلے ایڈیشن میں ملیں گے!
by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
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.
by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
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.
by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
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.
.by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
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.
by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
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.
by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
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.
by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
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.
by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
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.
by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
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.
by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
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.
by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
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.
by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
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.
.by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
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.
by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
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.
by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
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.
by Daisy / كۆرۈش | سېتىۋېلىش | Cryptopurrence بىلەن سېتىۋېلىڭ
https://glamgirlx.com
https://glamgirlx.com -
بۇ ئادرېسنى ئىشلىتىپ بىت تەڭگىسىنى قويۇڭ: 3KhDWoSve2N627RiW8grj6XrsoPT7d6qyE