WEMAL PEMALAL LARGE PLEMALE SINGLE STEMNY ແລະ Security By Secure ສະບັບທີສາມ Charlotte Harper ວັນທີ 3 ກໍລະກົດ, 2024 ປັບປຸງ / ປ່ຽນໃຈເຫລື້ອມໃສໃນວັນທີ 3 ມິຖຸນາ, 2025
foreword:
ການພິຈາລະນາຄວາມປອດໄພໃນໂປແກຼມສ້າງສໍາລັບເວັບໄຊທ໌ແມ່ນສ່ວນຫນຶ່ງທີ່ສໍາຄັນຂອງແຜນການແລະການປະຕິບັດເວບໄຊທ໌ໃນຂະນະທີ່ມີຮູບແບບທີ່ເຫມາະສົມ, ມີປະໂຫຍດຕໍ່ຈຸດປະສົງ. The DOM (ເອກະສານວັດຖຸ Markup), ດ້ວຍການຈັດຕັ້ງປະຕິບັດໂຄງການ html, ສະແດງຄວາມສະດວກສະບາຍແລະການນໍາໃຊ້ ຜູ້ໃຊ້ສຸດທ້າຍທີ່ກໍາລັງຊອກຫາທີ່ຈະຂ້າເວລາຫລືເຮັດບາງສິ່ງບາງຢ່າງທີ່ເຮັດໃນອິນເຕີເນັດ, ໂດຍປົກກະຕິໃນອຸປະກອນສະມາດໂຟນສໍາພັດ. ຄົນສ່ວນໃຫຍ່ຈະບໍ່ຮູ້ບ່ອນທີ່ພວກເຂົາຕ້ອງການສ້າງຄວາມສະດວກສະບາຍແລະໂດຍສະເພາະແມ່ນມີຂໍ້ຈໍາກັດໃນການນໍາໃຊ້ໂປແກຼມໃຊ້ ຖ້າທ່ານມີສອງສາມນາທີທີ່ຈະອ່ານຜ່ານປື້ມຫົວນີ້ແລະຮຽນຮູ້ໂປແກຼມທີ່ມີປະສິດຕິພາບແລະຂຽນໃສ່ກັບທ່ານແລະເຮັດໃນສິ່ງທີ່ທ່ານຕ້ອງການແລະຕອບສະຫນອງຄວາມຕ້ອງການຂອງຜູ້ຊົມຂອງທ່ານ.
ກ່ຽວກັບຂ້ອຍ: ຂ້າພະເຈົ້າເປັນຜູ້ພັດທະນາຊອບແວທີ່ມີປະສົບການທີ່ຫຼາກຫຼາຍໃນ C / C ++, Javon, Python, HTML, CSS ແລະ JavaScript. ຂ້າພະເຈົ້າສ້າງເວັບໄຊທ໌ທີ່ປະຊາຊົນຕ້ອງການໃຊ້, ຕ້ອງການທີ່ຈະໄປຢ້ຽມຢາມ, ແລະແມ່ນແຕ່ຕິດກັບການນໍາໃຊ້ພຽງແຕ່ເວລາທີ່ສ້າງຂຶ້ນ, ແລະຂ້າເວລາແລະຂ້າ, ຂ້ອຍຂາຍຊອບແວ. ຖ້າທ່ານມີຄວາມຄິດກ່ຽວກັບວິທີທີ່ທ່ານຕ້ອງການທີ່ຈະເບິ່ງແລະຫນ້າທີ່, ທ່ານເຕັມໃຈທີ່ຈະຕອບສະຫນອງຂອງຕົນເອງ, ແລະແມ້ກະທັ້ງ app ຄວາມປອດໄພດ້ານເຕັກໂນໂລຢີສູງເທົ່ານັ້ນທີ່ທ່ານສາມາດເຂົ້າເຖິງໄດ້. ແທນທີ່ຈະພະຍາຍາມຂາຍເວລາຂອງຂ້ອຍ, ຂ້ອຍກໍາລັງພະຍາຍາມທີ່ຈະຊື້ເຈົ້າເຂົ້າໄປໃນຂໍ້ມູນທີ່ມີຢູ່ແລ້ວ, ຜູ້ພັດທະນາຊອບແວເອກະລາດ, ນໍາພາອາຊີບທີ່ເຈົ້າຕ້ອງການ. ແລະໃຫ້ຂ້ອຍຈະແຈ້ງ, ການສຶກສາທີ່ຂ້ອຍໃຫ້ເຈົ້າຈະບໍ່ເປັນທາງການ. ທ່ານສາມາດໄປໂຮງຮຽນແລະຮຽນຮູ້ທັງຫມົດນີ້ດ້ວຍການສຶກສາຢ່າງເປັນທາງການ, ຫຼືແມ້ກະທັ້ງອ່ານປື້ມເຫຼັ້ມນີ້, ແລະໃຫ້ທ່ານຢູ່ໃນບ່ອນນັ່ງທີ່ຮ້ອນແລະຂໍໃຫ້ທ່ານສໍາເລັດການມອບຫມາຍ. ຂ້ອຍບໍ່ແມ່ນອາຈານຂອງເຈົ້າ, ເຈົ້າສາມາດຄິດເຖິງຂ້ອຍຄືກັບຫມູ່ທີ່ຢາກນໍາພາເຈົ້າໄປສູ່ຄວາມສໍາເລັດສ່ວນຕົວຂອງເຈົ້າເອງ. ແລະຂ້ອຍບໍ່ໄດ້ຂາຍໃຫ້ເຈົ້າປະສົບຜົນສໍາເລັດຄືກັນ, ເຈົ້າຈໍາເປັນຕ້ອງຊື້ມັນກັບເວລາຂອງເຈົ້າ. ການຮຽນຮູ້ທີ່ຈະລະຫັດມີເສັ້ນໂຄ້ງການຮຽນຮູ້ທີ່ສູງແລະບໍ່ແມ່ນເລື່ອງງ່າຍ, ຫຼືແມ່ນແຕ່ຄວນຈະເປັນ. ທ່ານຈໍາເປັນຕ້ອງເຮັດວຽກຫນັກເທົ່າທີ່ທ່ານສາມາດເຮັດໄດ້ແລະສືບຕໍ່ພະຍາຍາມແລະລົ້ມເຫລວແລະລອງໃຫມ່ອີກໃນຄໍາສັ່ງເພື່ອຮຽນຮູ້ແລະກໍ່ສ້າງແອັບ apps ຕົວທ່ານເອງ. ນັ້ນແມ່ນຢູ່ໃນລັກສະນະຂອງລະຫັດຕົວມັນເອງ. ລະຫັດແມ່ນຖືກອອກແບບໂດຍຜູ້ລວບລວມຂໍ້ມູນທີ່ຖືກອອກແບບມາເພື່ອໃຫ້ຂໍ້ຄວາມຜິດພາດຂອງນັກຂຽນໂປແກຼມ, ແລະມັນຈະສອນວິທີການລະຫັດຂອງທ່ານ, ເຖິງແມ່ນວ່າທ່ານພຽງແຕ່ຄັດລອກຄວາມຜິດພາດຂອງທ່ານເຂົ້າໃນຕົວຢ່າງຂອງທ່ານ. ແລະຂ້າພະເຈົ້າຕ້ອງເວົ້າ, ທ່ານບໍ່ຈໍາເປັນຕ້ອງຮັ່ງມີ, ສະຫຼາດ, ປະສົບຜົນສໍາເລັດ, ຫຼືແມ່ນແຕ່ລາຍລະອຽດຫຼືມີລາຍລະອຽດຫລືການຈັດຕັ້ງເພື່ອສ້າງແອັບ. ຄອມພິວເຕີເບິ່ງແຍງອົງການຈັດຕັ້ງນັ້ນສໍາລັບທ່ານ. ທ່ານພຽງແຕ່ຕ້ອງການທີ່ຈະອົດທົນໃນການທົດລອງແລະຄວາມຜິດພາດ, ຮັກສາຄວາມອ້ວນແລະເຮັດວຽກຫນັກໃນສິ່ງທີ່ທ່ານເຮັດ, ແລະທ່ານຈະມີອາຊີບທີ່ປະສົບຜົນສໍາເລັດຫຼາຍໃນສິ່ງທີ່ທ່ານເຮັດ.
ຂ້ອຍແມ່ນໃຜ: ຂ້າພະເຈົ້າຮັບຮູ້ວ່າພາກສຸດທ້າຍແມ່ນກ່ຽວກັບການຮຽນຮູ້ແລະວິທີການຂອງທ່ານໃຫ້ທ່ານມີວິທີການຈາກປື້ມຫົວນີ້. ຂ້ອຍແມ່ນໃຜແນ່ນອນ? ນັ້ນແມ່ນຄໍາຖາມທີ່ສັບສົນ. ຂ້າພະເຈົ້າບໍ່ຈະແຈ້ງກ່ຽວກັບຕົວເອງ, ດັ່ງທີ່ຂ້າພະເຈົ້າໄດ້ຮັບການປິ່ນປົວມັນຍາກສໍາລັບຂ້ອຍໃນບາງຄັ້ງຄາວ ໃນສັ້ນ, ຖ້າທ່ານກໍາລັງອ່ານປື້ມຫົວນີ້, ທ່ານໄດ້ນໍາເອົາມັນກັບບ້ານເພາະວ່າທ່ານຈະໄດ້ຮັບຜົນປະໂຫຍດ, ຫຼືຖ້າທ່ານພຽງແຕ່ອ່ານຄົນທີ່ທ່ານຕ້ອງການເບິ່ງທ່ານ ຂ້າພະເຈົ້າເປັນຜູ້ພັດທະນາທຸລະກິດ, ແລະນັກຮຽນ, ແລະຂ້າພະເຈົ້າຕ້ອງໄດ້ຂຽນຊີວິດຂອງພວກເຂົາໃຫ້ງ່າຍຂື້ນ, ມີຄວາມເປັນເອກະພາບກັນແລະມີປະໂຫຍດ, ແລະມີຄວາມສາມາດຂັບເຄື່ອນໄດ້ ສ່ວນໃຫຍ່ແມ່ນ, ນີ້ແມ່ນສິ່ງທີ່ຂ້ອຍເຮັດ: ຂ້ອຍສ້າງແອັບເພື່ອຊ່ວຍຕົວເອງແລະຄົນອື່ນໆປະສົບຜົນສໍາເລັດ. ຂ້າພະເຈົ້າເປັນຜູ້ຂຽນເຊັ່ນດຽວກັນ, ເຖິງແມ່ນວ່ານີ້ແມ່ນສິ່ງພິມທໍາອິດຂອງຂ້ອຍທີ່ຂ້ອຍຕັ້ງໃຈສໍາເລັດໃນຄໍາສັ່ງທີ່ຈະເອົາໃຈໃສ່ເອກະສານທີ່ເປັນປະໂຫຍດ, ແລະຂ້ອຍກໍ່ເປັນນັກສິລະປິນເຊັ່ນກັນ. ຂ້າພະເຈົ້າຈະຍອມຮັບສິ່ງນີ້ກັບທ່ານ, ຂ້ອຍແມ່ນຄົນແປກຫນ້າ. ຂ້າພະເຈົ້າບໍ່ສົມບູນແບບ, ຂ້າພະເຈົ້າໄດ້ແລ່ນກັບກົດຫມາຍເຖິງແມ່ນວ່ານໍາພາຂ້ອຍອອກຈາກວິທະຍາໄລແລະມະຫາວິທະຍາໄລແລະການພະຍາຍາມຕັ້ງຊື່ໃຫ້ຕົວເອງກັບຄວາມສໍາເລັດຫຼາຍ. ຂ້າພະເຈົ້າເປັນແມ່ຍິງໂດຍການເກີດ, ຂ້າພະເຈົ້າໃສ່ດິນຟ້າ, ຖ່າຍຮູບຂອງຕົວຂ້ອຍເອງ, ນຸ່ງເຄື່ອງນຸ່ງແລະເຄື່ອງນຸ່ງທີ່ມີສະຕິ, ແລະຂ້ອຍມີສະຕິຢູ່ໃນທໍາມະຊາດ. ຂ້າພະເຈົ້າມີບັນຫາກັບຄົນອື່ນໃນອະດີດທີ່ນໍາໄປສູ່ການປະຕິບັດການຂຽນແລະການກໍ່ສ້າງ WebApps, ແລະຂ້ອຍບໍ່ສາມາດເອົາປື້ມຫົວນີ້ໄດ້ໄວກວ່ານີ້: ທ່ານຕ້ອງການສິ່ງນີ້ແລ້ວ. ທ່ານຈະຕ້ອງການອ່ານແລະຂຽນລະຫັດທີ່ຄ້າຍຄືກັບຂ້ອຍແລະເຮັດວຽກຄືກັນກັບທີ່ທ່ານສາມາດຊື້ປື້ມຫົວນີ້ໄດ້ແທນທີ່ທ່ານຕ້ອງການທີ່ທ່ານຕ້ອງປະສົບຜົນສໍາເລັດໃນຊີວິດຂອງທ່ານ. ຂ້າພະເຈົ້າມີບັນຫາທຸກຢ່າງທີ່ມີຄອບຄົວເຕີບໃຫຍ່, ສະພາບສຸຂະພາບ, ທ່ານຫມໍ, ແລະກົດຫມາຍ, ແລະທໍາມະຊາດຂອງແມ່ຍິງໃນໂລກທີ່ແບ່ງອອກແລະຜິດປົກກະຕິໃນໂລກທີ່ແບ່ງອອກແລະຜິດປົກກະຕິໃນໂລກທີ່ແບ່ງອອກແລະຜິດປົກກະຕິໃນໂລກທີ່ແບ່ງອອກແລະຜິດປົກກະຕິໃນໂລກທີ່ແບ່ງອອກແລະຜິດປົກກະຕິ ເຖິງຢ່າງໃດກໍ່ຕາມ, ປື້ມຫົວນີ້ແມ່ນບາງສິ່ງບາງຢ່າງທີ່ຂ້ອຍສົນໃຈ, ລູກຂອງຂ້ອຍ, ການດໍາລົງຊີວິດຂອງຂ້ອຍ, ສະນັ້ນຂ້ອຍເອົາໃຈໃສ່ໃນການພິຈາລະນາກັບບ້ານແລະ pore ຢ່າງລະມັດລະວັງເພື່ອຮຽນຮູ້ຈາກຂ້ອຍ. ກະລຸນາຈື່ໄວ້ວ່າຂ້າພະເຈົ້າບໍ່ສົມບູນແບບ, ປື້ມຫົວນີ້ຈະມີຂໍ້ຜິດພາດ, ການປັບປຸງແກ້ໄຂ, ແລະທ່ານຈະຕ້ອງຄິດກັບສະຫມອງທີ່ດີທີ່ສຸດເທົ່າທີ່ທ່ານສາມາດເຮັດໄດ້ເພື່ອໃຫ້ມີປະສົບການທີ່ປະສົບຜົນສໍາເລັດ. ພ້ອມກັນນັ້ນ, ເຂົ້າໃຈວ່າຂ້ອຍຫມາຍຄວາມວ່າດີສໍາລັບເຈົ້າເຖິງແມ່ນວ່າເຈົ້າຈະປະເຊີນກັບສິ່ງທ້າທາຍໃນເວລາຂຽນ. ຄິດກ່ຽວກັບມັນເຊັ່ນນີ້: ໃນເວລາທີ່ທ່ານພຽງແຕ່ສາມາດເຊົ່າລະບົບຄອມພິວເຕີເພື່ອໃຫ້ຈິນຕະນາການແລະການຈັດຕັ້ງແລະເຂົ້າໃຈມັນ, ແລະເຂົ້າໃຈມັນຢ່າງແນ່ນອນ ຂ້າພະເຈົ້າບອກທ່ານສິ່ງນີ້ເພາະວ່າຂ້າພະເຈົ້າພົບກັບຄວາມຫຍຸ້ງຍາກຄືກັນ. ໃຊ້ປື້ມຫົວນີ້ດ້ວຍຄວາມສ່ຽງຂອງທ່ານເອງ, ເຮັດວຽກກັບບັນຫາທີ່ບໍ່ດີ, ແລະບໍ່ສາມາດເຮັດໃຫ້ທ່ານປະສົບຜົນສໍາເລັດໃນຂະແຫນງການທີ່ບໍ່ຖືກຕ້ອງ ເຮັດວຽກ, ອິນເຕີເນັດ. ທ່ານອາດຈະບໍ່ຄຸ້ນເຄີຍກັບຜູ້ທີ່ຂ້າພະເຈົ້າພຽງແຕ່ສອງສາມຄໍາ, ແຕ່ຂ້າພະເຈົ້າຂໍແນະນໍາໃຫ້ທ່ານອ່ານແລະເຂົ້າໃຈຂ້ອຍໃນຂະນະທີ່ສ້າງໂຄງການຂອງທ່ານ. ຈະບໍ່ມີວຽກບ້ານຫຍັງກັບປື້ມຫົວນີ້, ຕາບໃດທີ່ອາຈານຫຼືຄູອາຈານຂອງທ່ານບໍ່ໄດ້ສົ່ງເສີມໃຫ້ທ່ານຮູ້ຈັກກັບໂຄງການຕົວທ່ານເອງເມື່ອທ່ານສາມາດສະຫມັກສິ່ງທີ່ທ່ານໄດ້ຮຽນຮູ້. ໂຄງການທີ່ທ່ານໄດ້ສ້າງແລະປະຕິບັດໃຫ້ທ່ານຮູ້ຈັກລະຫັດແລະຄອບຄົວທີ່ທ່ານໄດ້ເຫັນ, ໂຄສະນາ, ໂຄສະນາຫາທ່ານ, ຫຼືໃນຂ່າວສານ.
ປື້ມຫົວນີ້ແມ່ນຫຍັງ: ປື້ມຫົວນີ້ແມ່ນຄໍາແນະນໍາໂດຍຕົວຢ່າງ. ທ່ານສາມາດຊອກຫາລະຫັດໄດ້ທີ່ນີ້, ຄໍາແນະນໍາສໍາລັບຮຽນຮູ້ລະຫັດທີ່ທ່ານຕ້ອງການ, ແລະປະຕິບັດວິທີການສະແດງຄວາມຜິດພາດຂອງທ່ານ, ແລະຮູບພາບຂອງທ່ານ, ພ້ອມທັງຊອບແວຂອງທ່ານ, ພ້ອມທັງຊອບແວ ທ່ານສ້າງໃນຄວາມສະຫວ່າງທີ່ສຸດທີ່ສຸດເພື່ອໃຫ້ເປັນທີ່ດຶງດູດໃຈທີ່ສຸດເທົ່າທີ່ເປັນໄປໄດ້ທີ່ຜູ້ໃຊ້ສຸດທ້າຍຂອງທ່ານ, ນັກທ່ອງທ່ຽວຂອງເວັບໄຊທ໌້ຂອງທ່ານ. ໃນປື້ມຫົວນີ້, ຂ້າພະເຈົ້າຈະສະແດງຕົວຢ່າງຂອງການອອກແບບຊອບແວດ້ວຍຈຸດສຸມໃສ່ຫນ້າເວັບເປັນເວທີພ້ອມທັງຄວາມປອດໄພ. ພວກເຮົາຈະລິເລີ່ມປະສົບການການຮຽນຮູ້ໂດຍການສ້າງໂຄງການຂັ້ນພື້ນຖານໂດຍໃຊ້ຫອຍ unix ໂດຍໃຊ້ຫອຍທີ່ມີຄຸນນະສົມບັດແລະຂຽນອັກສອນ. ຫຼັງຈາກນັ້ນ, ພວກເຮົາຈະກວດເບິ່ງເວັບໄຊທ໌ບລັອກທີ່ກໍານົດໄວ້ໃນຮູບຖ່າຍແລະການນໍາໃຊ້ໂປແກຼມເຫຼົ່ານີ້ເພື່ອໃຫ້ໃຊ້ໂປແກຼມຄວາມປອດໄພໂດຍໃຊ້ໂມດູນທີ່ມີການກວດສອບຄວາມປອດໄພ (PAM). ຈາກນັ້ນພວກເຮົາຈະກວດເບິ່ງເອກະສານແລະການປຸງແຕ່ງ, ຄົ້ນຫາວິດີໂອແກ້ໄຂ, ການບໍລິຈາກສຽງ, ລະຫັດສະແກນແລະການຮັບຮູ້ລັກສະນະ opical, ໃນບັນດາແນວຄິດອື່ນໆ. ຕາມວິທີທີ່ພວກເຮົາຈະກວດກາໃນເວລາທີ່ຈະຊ່ວຍໃຫ້ພວກເຮົາເຮັດຊອບແວຂອງພວກເຮົາມີປະໂຫຍດແລະປອດໄພ, ມີຕົວເລືອກຟຣີແລະຈ່າຍ. ຕາມວິທີທາງການ, ພວກເຮົາຈະຄົ້ນຫາເຄື່ອງມືຄວາມປອດໄພທາງດ້ານຮ່າງກາຍແລະການອອກແບບອາກາດແລະການອອກແບບລະເບີດແລະ Drone ທີ່ມີຢູ່ໃນການປົກປ້ອງຊອບແວຂອງພວກເຮົາແລະສະແດງການປ້ອງກັນຕົວເອງແລະສະແດງໃຫ້ເຫັນການປ້ອງກັນຕົວເອງແລະການຕໍ່ຕ້ານ. ພວກເຮົາຈະພັກຜ່ອນຕາມວິທີການກໍ່ສ້າງເກມ, ເຄື່ອງຈັກ rendering 2d ແລະ 3D, ແລະການຕັດສິນໃຈນວດຂະຫນາດໃຫຍ່ແລະສຽງນວດທີ່ສັ່ນສະເທືອນໃນ SILICONE ຕາມວິທີທາງການ, ພວກເຮົາຍັງຈະຈ້າງວິທີແກ້ໄຂການຮຽນຮູ້ເຄື່ອງຈັກແລ້ວເພື່ອຮັບປະກັນໃຫ້ຊອບແວຂອງພວກເຮົາດີຂື້ນ. ພວກເຮົາຍັງຈະສາມາດໃຊ້ເຄື່ອງມືເກັບໄດ້ສໍາລັບເວັບໄຊຕ໌ເພື່ອໃຫ້ມີການປັບປຸງແລະຮັບປະກັນຂະບວນການ. ປື້ມຫົວນີ້ແມ່ນຄໍາແນະນໍາກ່ຽວກັບຄວາມສໍາເລັດຂອງທ່ານໃນການສ້າງເຄືອຂ່າຍຄອມພິວເຕີແລະເຄື່ອງມືແນະນໍາໂດຍລວມແລ້ວທີ່ຈະສ້າງໂປແກຼມໂປຼແກຼມຄວາມຮູ້ແລະປະສົບການທີ່ຜ່ານມາ.
ປື້ມຫົວນີ້ບໍ່ແມ່ນ: ຖ້າທ່ານຕ້ອງການມີເວັບໄຊທ໌້, ທ່ານພຽງແຕ່ສາມາດຕັ້ງຄ່າຮ້ານງ່າຍໆແລະຂາຍສິ່ງທີ່ທ່ານຕ້ອງການ, ໂພດ Blog, ຫຼືຖ້າບໍ່ດັ່ງນັ້ນໂດຍບໍ່ເຄີຍຂຽນລະຫັດເສັ້ນດຽວ. ປື້ມຫົວນີ້ບໍ່ແມ່ນແນວນັ້ນ. ປື້ມຫົວນີ້ຈະສອນທ່ານກ່ຽວກັບວິທີການສ້າງໂປແກຼມທີ່ມີປະໂຫຍດຫຼາຍ, ເຊິ່ງເປັນທີ່ໄດ້ຮັບການເຮັດວຽກຢູ່ທາງຫລັງ, ແລະບໍລິສັດທີ່ມີຄວາມສົນໃຈ ຖ້າທ່ານຕິດຕາມປື້ມຫົວນີ້ຢ່າງໃກ້ຊິດ, ທ່ານຈະຕ້ອງການຂຽນລະຫັດ, ລະຫັດຄົ້ນຄ້ວາ, ສ້າງແອັບ apps ຂອງທ່ານເອງ, ແລະທ່ານຈະຫາເງິນຈາກສິ່ງທີ່ທ່ານເຮັດ. ຂ້ອຍຈະຫາເງິນຈາກປື້ມຫົວນີ້ແມ່ນແຕ່ໃນໄລຍະຕົ້ນໆ, ເພາະວ່າມັນມີຂໍ້ມູນທີ່ປະຊາຊົນຕ້ອງການແລະກໍາລັງຊື້ແລ້ວໃນເວລາທີ່ພວກເຂົາຊື້ຫຼືໃຊ້ແອັບ apps ຂອງຂ້ອຍ. ປື້ມຫົວນີ້ຈະບໍ່ສ້າງແອັບ for ສໍາລັບທ່ານ, ແຕ່ມັນຈະຊີ້ໃຫ້ທ່ານເຫັນຄວາມສໍາເລັດແລະຄວາມສາມາດ, ເພື່ອນຮ່ວມງານ, ຜູ້ສະຫນັບສະຫນູນ, ຜູ້ຮັບເຫມົາ, ຜູ້ຊົມເຊີຍ,
ສິ່ງທີ່ທ່ານຈະຮຽນຮູ້: ປື້ມຫົວນີ້ຈະສອນທ່ານກ່ຽວກັບວິທີສ້າງແລະຂາຍຊອບແວທີ່ມີປະໂຫຍດ, ການບັນທຶກວິດີໂອແລະການແລກປ່ຽນເຊັ່ນ: ການສື່ສານເຊັ່ນ: ການສື່ສານ. ປື້ມຫົວນີ້ຈະສອນວິທີການໃຊ້ສາຍຄອມພິວເຕີ້ທີ່ມີຮູບຊົງ, ເຮັດໃຫ້ມີການຕິດຕັ້ງແລະເຊື່ອມຕໍ່ໂດຍອັດຕະໂນມັດ, ສ້າງເຄືອຂ່າຍ Python ສໍາລັບການຢັ້ງຢືນຫຼືຈຸດປະສົງອື່ນໆ, ລະຫັດປະຈໍາຕົວ, ຮູບພາບ, ສໍາຄັນ, ການປຸງແຕ່ງການຊໍາລະເງິນ, ການຄ້າຂາຍ Cryptocurrency, ແລະອື່ນໆ. ທ່ານຈະໄດ້ຮຽນຮູ້ວິທີການສ້າງອຸປະກອນ Bluetooth ຂອງທ່ານເອງ, ມີແບັດເຕີຣີ, ເຄື່ອງຫມາຍ, microcontrolers, motors ແລະ solial, Wire ແລະ 3D ພິມພ້ອມທັງວັດສະດຸຫລໍ່ແລະວັດສະດຸຫລໍ່. ຂ້າພະເຈົ້າຈະສະແດງໃຫ້ມີການອອກແບບ 3D ທີ່ນໍາໃຊ້ກັບເຄື່ອງມືແລະເຄື່ອງມືເພີ່ມເຕີມແລະເຮັດໃຫ້ທ່ານສາມາດຜະລິດໄດ້, ອຸປະກອນຮາດແວ, ເຄື່ອງສາກໄຟຟ້າແບບປະສົມປະສານ, ແລະຜົນໄດ້ຮັບທີ່ມີປະໂຫຍດ. ແລະເຄືອຂ່າຍໃຫ້ເຂົາເຈົ້າກັບ Bluetooth ແລະ Web. ໂດຍສະເພາະ, ພວກເຮົາຈະກວດເບິ່ງສອງກໍລະນີທີ່ມີຄວາມສັ່ນສະເທືອນແລະມີອາວຸດປືນແລະມີໂປແກຼມທີ່ມີໂປແກຼມແລະສາມາດປະສົມປະສານເຂົ້າໃນເວັບສໍາລັບຜົນໄດ້ຮັບໄວກວ່າ. ທ່ານຈະໄດ້ຮຽນຮູ້ວິທີການກໍ່ສ້າງແລະນໍາໃຊ້ເວບໄຊທ໌ຈາກພື້ນດິນໃຫ້ກັບປະສົບການກ່ອນ, ເຮັດໃຫ້ມີປະໂຫຍດ, ສວຍງາມ, ມີປະໂຫຍດແລະສໍາຄັນທີ່ສຸດ. ທ່ານຈະໄດ້ຮຽນຮູ້ການນໍາໃຊ້ເຄື່ອງຈັກແລະວິໄສທັດຄອມພິວເຕີທີ່ປອດໄພແລະເຮັດໃຫ້ມີສຽງຢູ່ໃນເວັບໄຊທ໌້ທີ່ທ່ານຕ້ອງການ, ແລະຍິ່ງໄປກວ່ານັ້ນ, ແລະໃຫ້ຄົນທີ່ສໍາຄັນກວ່າຊອບແວແລະທຸລະກິດຂອງທ່ານ. ປື້ມຫົວນີ້ຈະຖືກນໍາໃຊ້ໃນສື່ມວນຊົນ, ຄວາມປອດໄພແລະການຮຽນຮູ້ດ້ານເຄື່ອງຈັກທີ່ສໍາຄັນແລະການແບ່ງແຍກທີ່ບໍ່ຖືກຕ້ອງ, ມີການປະຕິບັດ, ແລະມີສ່ວນຮ່ວມໃນຂະນະທີ່ຍັງມີອັດຕະໂນມັດ, ແລະແຂງແຮງ. ປື້ມຫົວນີ້ສອນ Unix, ໂດຍສະເພາະ Debian (Ubuntu), Python, CSS, ແລະເປັນໂປແກຼມ Bash ທີ່ມີປະໂຫຍດເຊັ່ນ: git ແລະ ffmpeg. ຂ້າພະເຈົ້າຍັງຈະສອນທ່ານກ່ຽວກັບວິທີການຄ້າ cryptocurrency ໂດຍອັດຕະໂນມັດ, ແລະການຈ່າຍເງິນໃນບັດເດບິດຫຼືຈາກບັດເດບິດປົກກະຕິໃນຂະນະທີ່ທ່ານຄວນແບ່ງປັນລາຍໄດ້ຂອງທ່ານຖ້າທ່ານເລືອກທີ່ຈະເຮັດ. ຂ້າພະເຈົ້າຈະສອນວິທີການຫາເງິນຈາກເວບໄຊທ໌ຂອງທ່ານໂດຍຜ່ານການໂຄສະນາເຊັ່ນດຽວກັນ, ຈັດອັນດັບໃນສິ່ງທີ່ລູກຄ້າຂອງທ່ານຈະຄົ້ນຫາເພື່ອຊອກຫາການຄົ້ນຫາທົ່ວໄປທີ່ເປັນໄປໄດ້. ຂ້າພະເຈົ້າຈະສອນທ່ານກ່ຽວກັບວິທີການຂາຍໂປແກຼມຂອງທ່ານ, ໂຄສະນາມັນ, ໃຫ້ໂຄສະນາຫາລູກຄ້າທີ່ຊອກຫາບໍລິການຂອງທ່ານ, ແລະເຮັດໃຫ້ຕົວທ່ານເອງຢູ່ໃນເສັ້ນທາງທີ່ມີຢູ່ແລ້ວ, ແລະເຮັດວຽກໄດ້ດີ. ຂ້າພະເຈົ້າຈະສອນທ່ານກ່ຽວກັບການປະຢັດຂໍ້ມູນຂອງທ່ານກ່ຽວກັບຄອມພິວເຕີເມຄທີ່ເຮັດວຽກກັບເວັບໄຊທ໌້ຂອງທ່ານໂດຍໃຊ້ເວັບໄຊທ໌ຂອງທ່ານໂດຍໃຊ້ປຸ່ມຂອງທ່ານທີ່ທ່ານຕ້ອງການ. ປື້ມຫົວນີ້ຈະສຸມໃສ່ການປະຕິບັດການເຜີຍແຜ່ແລະແຈກຢາຍສື່ມວນຊົນ, ແລະການຂາຍຕົວແທນຂອງທ່ານແລະທ່ານ, ຊອບແວຂອງທ່ານແລະບໍລິສັດຂອງທ່ານເບິ່ງດີໃນທາງທີ່ດີທີ່ສຸດ. ທ່ານຍັງຈະໄດ້ຮຽນຮູ້ຄໍາແນະນໍາແລະເຄັດລັບໃນການລະຫັດ, ແລະການປະຕິບັດຕົວເອງໂດຍບໍ່ມີການປະຕິບັດ ປື້ມຫົວນີ້ເອີ້ນວ່າ "ພາກປະຕິບັດເວບໄຊທ໌ໄດ້ຮັບການສະແດງວິທີການຮຽນຮູ້ທີ່ເຫມາະສົມກັບຄອມພິວເຕີ, ໂດຍສະເພາະການສຶກສາ, ການປັບປຸງ, ແລະວຽກງານອື່ນໆທີ່ໄດ້ຮັບການອະນຸມັດ, ຫຼືຮູບພາບທີ່ມີຄວາມປອດໄພ ໃບຫນ້າ. ໃຜກໍ່ຕາມທີ່ສ້າງຊອບແວທີ່ມີຄວາມປອດໄພທີ່ສົມບູນແບບມີຄວາມຮູ້ສຶກກ່ຽວກັບສິ່ງນີ້ຫມາຍຄວາມວ່າແນວໃດ. ຊອບແວແມ່ນມີຄວາມບໍ່ປອດໄພເພາະວ່າອຸປະກອນແລະບັນຊີທີ່ພວກເຮົາໃຊ້ໃນການເຂົ້າເຖິງມັນແມ່ນຢູ່ໃນມືຂອງຜູ້ໃດກໍ່ຕາມທີ່ບໍ່ມີຄວາມສ່ຽງຕໍ່ຊອບແວຂອງມັນເອງ. ນີ້ແມ່ນບາງສິ່ງບາງຢ່າງຂອງຈຸດສຸມຂອງປື້ມຫົວນີ້. ອຸປະກອນທີ່ສໍາຄັນທີ່ສຸດໃນຕອນຕົ້ນທີ່ມີຄວາມປອດໄພໃນຕອນຕົ້ນທີ່ມີກະເປົາຍາວ, ເຊິ່ງເອີ້ນວ່າການເຂົ້າເຖິງເວັບໄຊທ໌້, ເພາະວ່າລະບົບເຄື່ອງມືປ້ອງກັນທີ່ເປີດກວ້າງເຊັ່ນດຽວກັນກັບເຄື່ອງມືຮັກສາຄວາມປອດໄພຂອງສິນລະປະ. ເຄື່ອງແມ່ຂ່າຍເວັບມີການເຂົ້າເຖິງໂປແກຼມທ່ອງເວັບຂອງຜູ້ໃຊ້, ເຊິ່ງເປັນສ່ວນຫນຶ່ງທີ່ມີປະສິດທິພາບສູງສຸດຂອງອຸປະກອນຂອງຜູ້ໃຊ້, ເພາະວ່າມັນແມ່ນສະຖານທີ່ທີ່ຜູ້ໃຊ້ສາມາດເຂົ້າເຖິງຊອບແວທີ່ສາມາດເຂົ້າເຖິງໄດ້. ປື້ມຄູ່ມືນີ້ສາມາດຂຽນຂໍ້ຄວາມ, ຫນ້າເວັບທີ່ທ່ານເຫັນ, ແລະສາມາດອ່ານແລະຂຽນໃສ່ຮູບພາບທີ່ມີລາຄາຖືກ, ແລະຂຽນໃສ່ກັບຕົວເລກທີ່ມີລາຄາຖືກ. ການນໍາໃຊ້ເຄື່ອງມືທັງຫມົດໃນການກໍາຈັດຂອງທ່ານ, ດ້ວຍປື້ມຫົວນີ້ທ່ານຈະໄດ້ຮັບຄວາມຮູ້ໃນການສ້າງເວັບໄຊທ໌້ທີ່ປອດໄພ, ແລະການປະມູນຂອງທ່ານ, ແລະເບິ່ງແລະຮູ້ສຶກດີ
ບ່ອນໃດທີ່ຈະເລີ່ມຕົ້ນ: ທ່ານຍິນດີຕ້ອນຮັບຂ້າມສ່ວນທີ່ຜ່ານມາທີ່ຂ້ອຍເລີ່ມຕົ້ນປື້ມຫົວນີ້, ຫຼືລະຫັດທີ່ທ່ານຕ້ອງການທີ່ຈະອະທິບາຍໂດຍບໍ່ມີລາຍລະອຽດໃນປື້ມຫົວນີ້ແລະຕົວຢ່າງການນໍາໃຊ້ຕົວຢ່າງ. ຖ້າທ່ານບໍ່ມີປະສົບການໃນລະຫັດການຂຽນ, ຂ້າພະເຈົ້າຂໍແນະນໍາໃຫ້ທ່ານອ່ານປື້ມທັງຫມົດນີ້, ແລະແນະນໍາໃຫ້ທ່ານອ່ານປື້ມຫົວນີ້ແມ່ນເຫມາະສົມສໍາລັບທ່ານ. ຖ້າປື້ມຫົວນີ້ເຫມາະສົມກັບທ່ານ, ພິຈາລະນາໃຫ້ຂອງຂວັນໃຫ້ເພື່ອນຫຼືຄົນທີ່ອາດຈະພິຈາລະນາເບິ່ງໃນຊ່ອງຫວ່າງທີ່ທ່ານເປັນຄູ, ຫຼືຄູສອນອື່ນໆທີ່ເຮັດກ່ອນຂ້ອຍ. ເລີ່ມຕົ້ນບ່ອນທີ່ທ່ານຈະ, ທຸກໆສ່ວນຂອງປື້ມຫົວນີ້ຈະເປັນປະໂຫຍດຖ້າທ່ານຕັ້ງໃຈສ້າງແອັບ apon ທີ່ມີປະໂຫຍດ, ແລະພິຈາລະນາວ່າແອັບ apps ທີ່ດີທີ່ສຸດທີ່ຖືກສ້າງຂຶ້ນດ້ວຍຄວາມຄິດຂອງທ່ານ. ດຽວນີ້ເຈົ້າຮູ້ຈັກຂ້ອຍ, ເຈົ້າຮູ້ຈັກປື້ມຫົວນີ້, ແລະເຈົ້າພ້ອມທີ່ຈະເລີ່ມຕົ້ນ. ເພື່ອເລີ່ມຕົ້ນ, ຈັບຄອມພິວເຕີ້ (ແມ່ນແຕ່ຄອມພິວເຕີທີ່ມີລາຄາຖືກທີ່ສຸດຈາກຮ້ານ, Amazon, ຫຼື desktop ເກົ່າເຮັດວຽກ, ແລະຕັ້ງມັນໄວ້ໃນທາງທີ່ເຮັດວຽກສໍາລັບທ່ານ.
ວິທີການອ່ານປື້ມຫົວນີ້: ຂໍ້ຄວາມທີ່ຖືກເນັ້ນໃຫ້ເຫັນ, ຫມາຍເຖິງວ່າຂໍ້ຄວາມເປັນຂອງຄໍາສັ່ງໃນການກະຕຸ້ນເຕືອນ, ບ່ອນທີ່ທ່ານຈະຂຽນລະຫັດທີ່ທ່ານແລ່ນ. ການກະຕຸ້ນເຕືອນຄໍາສັ່ງແມ່ນ keyboard ຢ່າງຫນັກທີ່ຈະສຸມໃສ່ແລະຮຽກຮ້ອງໃຫ້ບໍ່ພຽງພໍທີ່ຈະບໍ່ກົດ, ເລັ່ງກະແສໄຟຟ້າຂອງທ່ານແລະເຮັດໃຫ້ສິ່ງຕ່າງໆງ່າຍຂຶ້ນ.
ເລີ່ມຕົ້ນ: ໃຫ້ຂອງເຂົ້າໄປໃນ. ພວກເຮົາຈະເລີ່ມຕົ້ນໂດຍການສ້າງລະຫັດການກໍ່ສ້າງຢູ່ໃນເຄື່ອງທ້ອງຖິ່ນແລະເລີ່ມຕົ້ນໂດຍບໍ່ຕ້ອງສ້າງເວບໄຊທ໌ເຊື່ອມຕໍ່ກັບອິນເຕີເນັດ. ນີ້ແມ່ນປອດໄພກວ່າທີ່ຈະເລີ່ມຕົ້ນດ້ວຍ, ບໍ່ມີຄ່າຫຍັງເລີຍ, ແລະງ່າຍສໍາລັບທ່ານ. ອີງຕາມລະບົບປະຕິບັດການຂອງທ່ານ, ເຂົ້າໄປໃນຫອຍເປືອກແຕກຈະແຕກຕ່າງກັນເລັກນ້ອຍ. ສໍາລັບ Mac OS, ຂ້ອຍຂໍແນະນໍາໃຫ້ຕິດຕັ້ງເຄື່ອງ virtual ໃນຈຸດນີ້, ດັ່ງທີ່ເຈົ້າຈະໄດ້ຮັບຄວາມເຂົ້າກັນໄດ້ທີ່ສຸດກັບເຄື່ອງ virtual. ຜູ້ໃຫ້ບໍລິການຕ່າງໆເຊັ່ນ Virtualbox ແລະ Paralells ສາມາດແລ່ນເຄື່ອງ virtual ສໍາລັບທ່ານໄດ້, ເຖິງແມ່ນວ່າມັນກໍ່ເປັນໄປໄດ້ທີ່ຈະຕິດຕັ້ງ Ubuntu ຢູ່ໃນເຄື່ອງ, ຖ້າທ່ານຕ້ອງການໃຊ້ປະສົບການພື້ນເມືອງທີ່ມີປະສົບການທີ່ວ່ອງໄວ. ຖ້າທ່ານກໍາລັງໃຊ້ Linux ຫຼື Windows, ເຊິ່ງຂ້ອຍແນະນໍາ, ມັນຄວນຈະງ່າຍທີ່ຈະສ້າງໂຄງການ. ເປີດຢູ່ປາຍຍອດຂອງທ່ານ, ປັບຂະຫນາດຕາມທີ່ທ່ານເຫັນ, ແລະເລີ່ມຕົ້ນປະຕິບັດຕາມຂັ້ນຕອນທີ 2. ຖ້າທ່ານກໍາລັງໃຊ້ Windows, ກະລຸນາປະຕິບັດຕາມຂັ້ນຕອນທີ 1.
ຂັ້ນຕອນທີ 1: - ຜູ້ໃຊ້ Windows ເທົ່ານັ້ນ ໃນ Windows, ເປີດ Command Prompt ເປັນ Administrator ແລະ Type WSL -IMSTALL
ຂັ້ນຕອນທີ 2: - ສືບຕໍ່ຢູ່ທີ່ນີ້, ຫຼືຂ້າມຂັ້ນຕອນທີ 1 ໄປທີ່ນີ້ຖ້າທ່ານບໍ່ໃຊ້ Windows ໃນບ່ອນເປີດແປນ, (ຂື້ນກັບ os ຂອງທ່ານ, ທີ່ເອີ້ນວ່າ ubuntu ໃນ Windows, Terminal ໃນ Mac ຫຼື Linux, ຫຼືຊື່ທີ່ຄ້າຍຄືກັນ), ເລີ່ມຕົ້ນໂດຍການສ້າງໂຄງການ. ພວກເຮົາເຮັດສິ່ງນີ້ກັບຄໍາສັ່ງ MKDIR, ເຊິ່ງສ້າງໄດເລກະທໍລີ. ຖ້າທ່ານຕ້ອງການສ້າງໄດເລກະທໍລີເພື່ອເກັບຮັກສາໂຄງການຂອງທ່ານ, ເຊິ່ງແນະນໍາໃຫ້ໃຊ້, ໃຊ້ຄໍາສັ່ງ CD ເພື່ອປ່ຽນເປັນໄດເລກະທໍລີແລະ
CD / ເສັ້ນທາງ / ກັບ / ໄດເລກະທໍລີ - ເສັ້ນທາງແມ່ນໂຟນເດີທີ່ມີຊື່ວ່າ Directory Directory ຂອງທ່ານ, ຫຼື / ຊື່ຜູ້ໃຊ້ແມ່ນຊື່ຜູ້ໃຊ້ຂອງທ່ານ). ເພື່ອປ່ຽນເປັນລະບົບລະບົບເລີ່ມຕົ້ນ, ພິມ CD ຫຼື CD ~ ຕົວຢ່າງ MKDIR - ທົດແທນ "ຕົວຢ່າງ" ດ້ວຍຊື່ຂອງໄດເລກະທໍລີ
ດຽວນີ້ທ່ານມີໄດເລກະທໍລີທີ່ເຮັດວຽກສໍາລັບໂຄງການຂອງທ່ານ. ເປັນສິ່ງທີ່ສໍາຄັນທີ່ສຸດທີ່ຈະມີຕົວລະບຽບນີ້ທີ່ທ່ານຕ້ອງການປ່ຽນເປັນລະຫັດທີ່ທ່ານຕ້ອງການສໍາລັບເວັບໄຊທ໌້, ພວກເຮົາຈະສ້າງຕົວຫນັງສືເພື່ອສໍາຮອງໄດເລກະທໍລີຂອງທ່ານໃນສອງສາມບາດກ້າວຂ້າງຫນ້າ. ແຕ່ການກໍ່ສ້າງສະຄິບໃຊ້ລະຫັດທີ່ໃຊ້ແລ້ວ, ແລະລະຫັດຕ້ອງໄດ້ຮັບການອັດຕະໂນມັດທີ່ມີປະໂຫຍດເທົ່າທີ່ເປັນໄປໄດ້. ສະນັ້ນໃຫ້ພວກເຮົາສ້າງຕົວຫນັງສືເພື່ອສ້າງສະຄິບກ່ອນ. ໃຫ້ເລີ່ມຕົ້ນໂດຍການສ້າງສະຄິບແລະເຮັດໃຫ້ມັນສາມາດປະຕິບັດໄດ້. ພວກເຮົາຈະໃຊ້ sudo, chmod ແລະແຕະສໍາລັບສິ່ງນີ້, ແລະໂທຫາສະຄິບ "Ascript".
sudo touch /usr/bin/ascript
sudo chmod a+x /usr/bin/ascript
sudo nano /usr/bin/ascript
ຕອນນີ້ພວກເຮົາໄດ້ສ້າງສະຄິບ, ເຮັດໃຫ້ມັນສາມາດປະຕິບັດໄດ້, ແລະພ້ອມທີ່ຈະດັດແປງມັນ. Nano ແມ່ນບັນນາທິການຕົວຫນັງສືທີ່ຈະຊ່ວຍໃຫ້ທ່ານແກ້ໄຂຂໍ້ຄວາມໂດຍບໍ່ຕ້ອງກົດ, ເຊິ່ງງ່າຍກວ່າການໃຊ້ອິນເຕີເຟດກາຟິກ. ການດັດແກ້ເອກະສານທີ່ມີ nano, ໃຊ້ nano ແລະຫຼັງຈາກນັ້ນເສັ້ນທາງໄປສູ່ເອກະສານ. ເພື່ອເຮັດໃຫ້ບົດຂຽນທີ່ສ້າງສະຄິບ, ມັນຄ້າຍຄືກັນກັບການເຮັດໃຫ້ສະຄິບຂອງພວກເຮົາໃນຄັ້ງທໍາອິດ. ພວກເຮົາຈະໃຊ້ລະຫັດດຽວກັນກັບຂ້າງເທິງ, ປ່ຽນຊື່ຂອງສະຄິບ, "Ascript" ທີ່ມີພາລາມິເຕີໂຕ້ຖຽງ, $ 1. ສິ່ງນີ້ຊ່ວຍໃຫ້ພວກເຮົາໂທຫາສະຄິບໂດຍການພິມຫນັງສືຫນັງສືສະເພາະເຈາະຈົງ, ໃນນັ້ນມັນສາມາດສ້າງຕົວຫນັງສືໃຫມ່ໂດຍການປ່ຽນແທນ "ຫນັງສືຂອງທ່ານ. ລະຫັດໃນ nano ຄວນເບິ່ງຄືວ່າ:
sudo touch /usr/bin/$1
sudo chmod a+x /usr/bin/$1
sudo nano /usr/bin/$1
ແລະປິດ nano, ພວກເຮົາສາມາດກົດປຸ່ມຄວບຄຸມລົງແລະກົດ X, ແລ້ວ y ເພື່ອສະແດງເອກະສານທີ່ພວກເຮົາກໍາລັງປະຢັດເອກະສານ, ແລະກົດປຸ່ມ. ດຽວນີ້ແທນທີ່ຈະພິມຄໍາສັ່ງສາມຄໍາສັ່ງນີ້ເພື່ອດັດແກ້ສະຄິບ, ພວກເຮົາຈະສາມາດພິມ SUDIBIRT ADCIDAGT ເພື່ອແກ້ໄຂອັກສອນອີກຄັ້ງ. ວຽກນີ້! ແລະສະຄິບໃຫມ່ໆໃດສາມາດໃຊ້ໄດ້ງ່າຍໂດຍການໂທຫາມັນຢູ່ໃນຫອຍ. ໃຫ້ພວກເຮົາບັນທຶກວຽກງານຂອງພວກເຮົາດຽວນີ້: ໃຫ້ຂຽນສະຄິບສໍາຮອງເພື່ອບັນທຶກສະຄິບໃຫມ່ຂອງພວກເຮົາແລະຫຼັງຈາກນັ້ນກໍ່ກັບຄືນຢູ່ໃນລາຍຊື່ໂຄງການຂອງພວກເຮົາ.
sudo ascript backup
ດຽວນີ້, ໃນ nano:
sudo cp /usr/bin/backup /path/to/directory/
sudo cp /usr/bin/ascript /path/to/directory/
ບ່ອນທີ່ / ເສັ້ນທາງ / ໄປ / ໄດເລກະທໍລີແມ່ນເສັ້ນທາງສູ່ໂຄງການທີ່ທ່ານສ້າງຂື້ນກັບ MKDIR. ຕໍ່ມາພວກເຮົາຈະຮຽນຮູ້ວິທີການສໍາເນົາເສັ້ນທາງຊ້ໍາອີກແບບນີ້ດ້ວຍ loop ແລະບັນຊີລາຍຊື່, ແຕ່ດຽວນີ້ໃຫ້ມັນງ່າຍດາຍແລະມີສອງສາມເສັ້ນ. ເພື່ອດໍາເນີນການສະຄິບນີ້ແລະສໍາຮອງຂໍ້ມູນລະຫັດຂອງທ່ານ, ບັນທຶກເອກະສານໃນ nano ດ້ວຍການຄວບຄຸມ + X, Y ແລະກັບຄືນ, ແລະພິມປຸ່ມຂ້າງລຸ່ມນີ້ໃສ່ຫອຍຂອງທ່ານ
backup
ຖ້າທ່ານຖືກກະຕຸ້ນຢູ່ໃນລະຫັດຜ່ານໃນຂະນະທີ່ອ່ານປື້ມຫົວນີ້ແລະຕິດຕາມຢູ່ໃນຫອຍ, ກະລຸນາໃສ່ລະຫັດຜ່ານຂອງຜູ້ໃຊ້ຂອງທ່ານຢ່າງຖືກຕ້ອງ, ທ່ານຈະມີສາມຄັ້ງກ່ອນທີ່ທ່ານຈະຕ້ອງໄດ້ດໍາເນີນການຄໍາສັ່ງຄືນໃຫມ່. ທ່ານສາມາດໃຊ້ລູກສອນຂຶ້ນແລະລົງມາເພື່ອ rerun ຄໍາສັ່ງແລະດັດແກ້ພວກມັນ, ທ່ານຕ້ອງການທີ່ຈະແລ່ນຫຍັງສອງເທົ່າ. ກົດປຸ່ມງ່າຍໆແລະລົງໃນການເລືອກຄໍາສັ່ງ, ກ່ອນທີ່ຈະດັດແກ້ຄໍາສັ່ງດ້ວຍຂວາ, ຊ້າຍແລະປຸ່ມຊ້າຍພ້ອມທັງແປ້ນພິມ, ແລະແລ່ນມັນດ້ວຍການກັບຄືນ.
ຊົມເຊີຍ! ທ່ານໄດ້ຈັດການສ້າງຕົວອັກສອນສໍາຮອງທີ່ຫນ້າເກງຂາມເຊິ່ງສໍາຮອງສະຄິບຫອຍທີ່ສໍາຄັນສອງສະຄິບໃນໄດເລກະທໍລີເຮັດວຽກຂອງທ່ານ. ພວກເຮົາອາດຈະຍ້າຍສິ່ງຕ່າງໆໄປມາໃນໄລຍະຕໍ່ມາເມື່ອໂຄງການຍິ່ງໃຫຍ່, ແຕ່ສິ່ງນີ້ເຮັດວຽກໄດ້ສໍາລັບດຽວນີ້. ຂໍໃຫ້ກ້າວໄປຂ້າງຫນ້າໃນເມຄ, ພວກເຮົາຈະໃຊ້ໂປແກຼມໂປຼແກຼມທີ່ທ່ານຕ້ອງການໃຫ້ທ່ານສາມາດດາວໂຫລດໂປແກຼມໂປຼແກຼມໂປຼແກຼມຂອງທ່ານໄດ້. ມັນແມ່ນເຄື່ອງມືໃນການປະຢັດຊອບແວຂອງທ່ານ, ໂດຍສະເພາະໃນຂະນະທີ່ພວກເຮົາເຄື່ອນຍ້າຍຕົວຢ່າງທີ່ປອດໄພໃນເວລາທີ່ທ່ານບໍ່ໄດ້ຮັບການສະຫນັບສະຫນູນ
ຖ້າທ່ານບໍ່ໄດ້ໃຊ້ເຄື່ອງຈັກ virtual ubuntu ໃນຈຸດນີ້, ຂ້ອຍຈະໃຊ້ເຄື່ອງຈັກທີ່ມີຄວາມຈໍາເປັນໃນການເຮັດວຽກງານທີ່ເຮັດວຽກຢູ່ໃນຄອມພິວເຕີຂອງທ່ານ. ພວກເຮົາຈະຍ້າຍລະຫັດໄປຫາເວັບໄຊທ໌ server ໃນອະນາຄົດອັນໃກ້ນີ້, ແຕ່ພວກເຮົາຕ້ອງການໃຫ້ແນ່ໃຈວ່າມີຄວາມປອດໄພຢ່າງຫນ້ອຍຫນຶ່ງຊັ້ນທີ່ທົນທານຕໍ່ການວາງສາຍຂອງພວກເຮົາ, ແລະໃຊ້ PackAver ຈໍານວນຫນຶ່ງເພື່ອເຮັດສິ່ງນີ້. ຖ້າທ່ານຍັງຕ້ອງການໃຊ້ Mac OS, ທ່ານຍິນດີທີ່ທ່ານຍິນດີທີ່ຈະຄົ້ນຫາແລະຕິດຕັ້ງຊຸດທີ່ຈໍາເປັນທາງອິນເຕີເນັດ, ແຕ່ວ່າມັນອາດຈະບໍ່ມີທາງເລືອກສໍາລັບທຸກໆຊຸດປື້ມຫລືຊຸດນີ້ຈະກວມເອົາ.
ຂໍໃຫ້ເພີ່ມຄໍາສັ່ງສອງສາມຄໍາທີ່ໃຫ້ເຮັດວຽກຂອງພວກເຮົາກັບສະຄິບສໍາຮອງໂດຍການແລ່ນຄໍາສັ່ງສໍາຮອງຂໍ້ມູນ.
# ...
ອີກເທື່ອຫນຶ່ງ, ຄວບຄຸມ X ເພື່ອບັນທຶກ.
ດຽວນີ້ພວກເຮົາຈໍາເປັນຕ້ອງເຮັດບາງການຕັ້ງຄ່າຄັ້ງດຽວສໍາລັບໂຄງການນີ້. ເນື່ອງຈາກວ່າມັນບໍ່ດົນຈະເປັນໂຄງການ Git, ພວກເຮົາບໍ່ຈໍາເປັນຕ້ອງພິມທຸກໆຄໍາສັ່ງທຸກໆຄັ້ງ, ແຕ່ພວກເຮົາຈະຈັດວາງສາຍນີ້ເມື່ອພວກເຮົາຂຽນສະຄິບທີ່ປະຕິບັດຂອງພວກເຮົາ. ເພື່ອເລີ່ມຕົ້ນ, ໃຫ້ແນ່ໃຈວ່າພວກເຮົາຢູ່ໃນລະບົບທີ່ຖືກຕ້ອງແລະເລີ່ມຕົ້ນການຕອບແທນ git ແລະສ້າງປຸ່ມ SSH.
cd /path/to/directory
git init
git branch -m master
ssh-keygen
ຫຼັງຈາກທີ່ພວກເຮົາພິມ SSH-Keygen, ປຸ່ມໃຫມ່ຄວນໄດ້ຮັບການບັນທຶກໄວ້ໃນໂຟນເດີເຮືອນພາຍໃຕ້ໂຟນເດີທີ່ເອີ້ນວ່າ .Sh. ມັນຖືກເອີ້ນວ່າ id_rsa.pub. ໃຫ້ເຮົາຊອກຫາກຸນແຈນີ້ແລະສໍາເນົາມັນ. ເພື່ອເບິ່ງມັນ,
cd ~
cat .ssh/id_rsa.pub
ສໍາເນົາຂໍ້ຄວາມທີ່ຖືກສົ່ງຄືນໂດຍຄໍາສັ່ງສຸດທ້າຍ, ແລະສ້າງບັນຊີກັບຜູ້ໃຫ້ບໍລິການ git ຂອງທ່ານ (ໂດຍສະເພາະ GitHub), ກ່ອນທີ່ຈະເພີ່ມປຸ່ມ SSH ເຂົ້າໃນບັນຊີຂອງທ່ານ. ເມື່ອທ່ານມີບັນຊີແລ້ວ, ກົດປຸ່ມ Upper Treght ແລະ PERT Settings, ກ່ອນທີ່ຈະຕື່ມປຸ່ມ SSH ແລະ GPG ພາຍໃຕ້ການເຂົ້າເຖິງໃນເມນູ. ເລືອກຕື່ມປຸ່ມ SSH ແລະເພີ່ມຂອງທ່ານໂດຍການໃສ່ມັນເຂົ້າແລະໃຫ້ຫົວຂໍ້, ກ່ອນທີ່ຈະປະຫຍັດແລະກັບໄປທີ່ Githeitory ໃຫມ່. ນີ້ແມ່ນຄ້າຍຄືກັນສໍາລັບຜູ້ໃຫ້ບໍລິການ git ອື່ນໆ, ທ່ານຈະຕ້ອງອ່ານເອກະສານຂອງພວກເຂົາ. ໃນການຕັ້ງຄ່າຫໍໄຕໃຫມ່, ໃຫ້ບໍລິການທີ່ທ່ານຕ້ອງການຕັ້ງຊື່ແລະຕັດສິນໃຈວ່າທ່ານຕ້ອງການທີ່ຈະເຜີຍແຜ່ບໍ່ໄດ້ສໍາລັບລວມ. ເມື່ອບ່ອນເກັບມ້ຽນໄດ້ຖືກສ້າງຂື້ນ, ສໍາເນົາ The Clone ດ້ວຍ URL SSH, ແລະວາງມັນເຂົ້າໃນຄໍາສັ່ງຕໍ່ໄປນີ້.
git remote add git://… (your remote URL)
ຕອນນີ້ທ່ານສາມາດຍ້າຍກັບໄປທີ່ຫໍສະຫມຸດຂອງທ່ານກັບ CD, ທ່ານຈະຄຸ້ນເຄີຍກັບສິ່ງນີ້. ລອງໃຊ້ສະຄິບສໍາຮອງຂອງທ່ານດຽວນີ້ກັບ Backup
ທີ່ຍິ່ງໃຫຍ່! ດຽວນີ້ພວກເຮົາສາມາດໄດ້ຮັບການເຂົ້າລະຫັດ. ໃຫ້ຕິດຕັ້ງ Django ໃນປັດຈຸບັນທີ່ພວກເຮົາມີຄວາມເຂົ້າໃຈທີ່ດີກ່ຽວກັບການແຕກແລະ git. Django ຈະໃຫ້ພວກເຮົາສໍາຮອງໂປຼແກຼມໂປຼແກຼມຂອງພວກເຮົາໂດຍອັດຕະໂນມັດ, ແຕ່ Django ຄວນມີການຈັດຕັ້ງປະຕິບັດທີ່ງ່າຍດາຍກວ່າເກົ່າ (ມັນສາມາດຖືກປິດໃຊ້ໄດ້ງ່າຍຂຶ້ນ).
ການຕິດຕັ້ງຊອບແວໃນ Ubuntu, ພວກເຮົາຈະໃຊ້ຄໍາສັ່ງ sudo apt-get. ຫນ້າທໍາອິດ, ໃຫ້ການປັບປຸງແລະຍົກລະດັບຊອບແວທີ່ພວກເຮົາມີຢູ່ແລ້ວ. ສິ່ງນີ້ສາມາດເຮັດໄດ້ກັບ SUDO apt-get update ແລະ sudo apt-get upgrade -y. ຕໍ່ໄປ, ໃຫ້ຕິດຕັ້ງ Python ແລະສະພາບແວດລ້ອມທີ່ແທ້ຈິງຂອງພວກເຮົາ, ໂດຍມີຄໍາສັ່ງຕໍ່ໄປນີ້: Sudo apt-python3-python3-vatv
ນີ້ແມ່ນສິ່ງທີ່ທ່ານຕ້ອງການໄປກັບ Django ໃນແງ່ຂອງຊອບແວຕິດຕັ້ງໃນຕົວຢ່າງ Ubuntu. ສໍາລັບ Windows ແລະ Linux ນີ້ຄວນຈະເປັນທໍາມະດາ, ແຕ່ສໍາລັບ Mac ທີ່ທ່ານອາດຈະຕ້ອງການຕິດຕັ້ງສະພາບແວດລ້ອມເສມືນຫລືສ້າງຂັ້ນຕອນຂອງ VirtualBox ແລະສ້າງຂັ້ນຕອນຂ້າງເທິງຂອງ Virtualbox Ubuntu ແມ່ນສໍາຄັນໃນກໍລະນີນີ້ເພາະວ່າມັນແມ່ນຊອບແວເວບໄຊທ໌ທີ່ດໍາເນີນງານແລະມັນຊ່ວຍໃຫ້ພວກເຂົາເປັນເຈົ້າພາບເວັບໄຊທ໌້ທີ່ມີຊື່ສຽງທັງຫມົດ.
ໃຫ້ຂອງຂຸດເຂົ້າໄປໃນ django ໄດ້.
ໃນລະບົບຂອງພວກເຮົາອີກເທື່ອຫນຶ່ງ, ກັບ CD:
python -m venv venv # ສ້າງສະພາບແວດລ້ອມເສມືນບ່ອນທີ່ມີການເກັບຮັກສາໄວ້
source venv/bin/activate # ເປີດໃຊ້ສະພາບແວດລ້ອມເສມືນ
django-admin startproject mysite . # ບ່ອນທີ່ Mysite ແມ່ນໂຄງການທີ່ຂ້ອຍກໍາລັງເລີ່ມຕົ້ນໃນລະບົບປະຈຸບັນຂອງຂ້ອຍ.
Django ແມ່ນພຽງແຕ່ເຮັດໃຫ້ພວກເຮົາເລີ່ມຕົ້ນ, ເພາະວ່າ Django ກໍາລັງເປັນເຈົ້າພາບເວັບເຊີຟເວີແລະກໍາລັງເຮັດທຸກຢ່າງທີ່ພວກເຮົາຕ້ອງການທີ່ຈະໄດ້ຮັບເວັບໄຊທ໌ທ້ອງຖິ່ນແລະແລ່ນ. ໃນປັດຈຸບັນທີ່ພວກເຮົາມີການຕິດຕັ້ງ Django, ໃຫ້ດັດແກ້ການຕັ້ງຄ່າເລັກໆນ້ອຍໆເພື່ອເຮັດໃຫ້ມັນເຮັດວຽກໄດ້ແນວໃດ. ຫນ້າທໍາອິດ, ໃຫ້ຂອງສ້າງ app ໃຫມ່
python manage.py startapp feed
ທ່ານຈະສັງເກດເຫັນແອັບທໍາອິດທີ່ເອີ້ນວ່າອາຫານ. ແອັບຄວນເອີ້ນວ່າສິ່ງທີ່ທ່ານມັກ, ແລະພວກເຮົາຈະສ້າງແອັບໃຫມ່, ແຕ່ຊື່ຂອງແຕ່ລະແອັບ app ຕ້ອງສອດຄ່ອງກັນໃນແຕ່ລະຄັ້ງທີ່ app ອ້າງອີງໃນລະຫັດ. ການເພີ່ມແອັບໃຫມ່, ພວກເຮົາຈະດັດແກ້ settings.py ຢູ່ໃນລະບົບອື່ນໆທີ່ແອັບ other ທີ່ຖືກສ້າງຂື້ນ, ຕັ້ງຊື່ໃນ StartProject. ການໃຊ້ nano,
nano app/settings.py
ໃນການຕັ້ງຄ່າ, ຊອກຫາການຕິດຕັ້ງ_Appsແລະແຍກຕ່າງຫາກ [] ອອກເປັນ 3 ເສັ້ນ. ການໃຊ້ສີ່ຊ່ອງໃນເສັ້ນເປົ່າ, ເພີ່ມ 'ອາຫານ', ຫຼືຊື່ຂອງແອັບ your ຂອງທ່ານ. ສ່ວນຂອງ settings.py ຄວນເບິ່ງຄືວ່າ:
INSTALLED_APPS = [
'feed',
]
ກ່ອນທີ່ພວກເຮົາລືມ, ໃຫ້ທົດສອບວ່າ DJAGO ກໍາລັງເຮັດວຽກຢູ່. ການນໍາໃຊ້ຄໍາສັ່ງ Python Python Manage.py Runserver 0.0.0.8.0.0.0.8.
ໃນປັດຈຸບັນ, ໃຫ້ຂອງຂຸດເຂົ້າໄປໃນການຂຽນລະຫັດ python ບາງ. Django ມີສາມສ່ວນປະກອບຫຼັກ, ທັງຫມົດຂອງພວກມັນດໍາເນີນງານໂດຍລະຫັດທັງຫມົດ. ສ່ວນປະກອບແມ່ນເອີ້ນວ່າຮູບແບບ, ເບິ່ງແລະແມ່ແບບ, ແລະແຕ່ລະອັນແມ່ນຢູ່ໃນລະດັບທີ່ສູງກວ່າແລະຕ່ໍາຕາມຫນ້າເວັບກ່ອນທີ່ຈະສົ່ງໃຫ້ຜູ້ໃຊ້.
ແບບຈໍາລອງແມ່ນລະຫັດທີ່ເກັບຮັກສາຂໍ້ມູນໃນຖານຂໍ້ມູນສໍາລັບການດຶງດູດ, ການຈັດປະເພດແລະການສະແດງ.
ມຸມມອງຕັດສິນໃຈວ່າຕົວແບບດັ່ງກ່າວໄດ້ສະແດງອອກ, ຫມູນໃຊ້, ແລະດັດແກ້, ເກືອບທຸກມຸມມອງຈະໃຊ້ຕົວແບບໂດຍກົງ.
ແມ່ແບບແມ່ນລະຫັດ HTML ທີ່ມີລະຄັງພິເສດແລະກະໂປງເອີ້ນວ່າພາສາແມ່ແບບ. ແມ່ແບບແມ່ນສະແດງໃຫ້ເຫັນໂດຍທັດສະນະທີ່ມັນເຕັມໄປດ້ວຍລະຫັດ python ແລະສະພາບການເຊັ່ນ: ແບບແລະຂໍ້ມູນ (USUALL STRINGS ແລະ InterEll) ຈາກມຸມມອງ.
Django ມີສ່ວນປະກອບອື່ນໆເຊັ່ນກັນ, ລວມທັງແຕ່ບໍ່ຈໍາກັດ:
ການຕັ້ງຄ່າ, ເຊິ່ງກໍານົດໂປແກຼມທີ່ພວກເຮົາໄດ້ສົນທະນາ.
URL, ເຊິ່ງເປັນຮູບແບບທີ່ຜູ້ໃຊ້ປະຕິບັດຕາມເພື່ອໃຫ້ໄດ້ຮັບການເຂົ້າເຖິງພາກສ່ວນສະເພາະຂອງ Web.
ຮູບແບບ, ເຊິ່ງກໍານົດວິທີການທີ່ຖືກສົ່ງໄປທີ່ເຊີຟເວີແມ່ນຈັດການແລະສະແດງໃຫ້ເຫັນເຖິງຖານຂໍ້ມູນແລະຜູ້ໃຊ້. ນີ້ແມ່ນພື້ນຖານຂອງຂໍ້ມູນການປຸງແຕ່ງຢູ່ດ້ານຂ້າງຂອງເຄື່ອງແມ່ຂ່າຍ, ແລະສາມາດຍອມຮັບເອົາຂໍ້ມູນປະເພດໃດກໍ່ຕາມ, ຂໍ້ຄວາມຂໍ້ຄວາມ, ຕົວເລກທີ່ບໍ່ຖືກຕ້ອງ / ບໍ່ຖືກຕ້ອງ / ມັກຈະມີກ່ອງກາເຟີ້).
ແມ່ແບບ, ເຊິ່ງເປັນພາສາ HTML ແລະພາສາທີ່ມີຄວາມແຕກຕ່າງລະຫວ່າງ python ແລະມີປະໂຫຍດສໍາລັບຈຸດປະສົງຂອງ Pythl
ໄຟລ໌ຄົງທີ່, ເຊິ່ງປົກກະຕິແລ້ວແມ່ນ JavaScript ແລະມັນແມ່ນຫໍສະຫມຸດທີ່ server ໃຫ້ບໍລິການແລະຕິດພັນກັບແມ່ແບບ.
ເອກະສານ Media, ເຊິ່ງ server ໃຫ້ບໍລິການຫຼືເປັນເຈົ້າພາບພາຍນອກ, ຫຼືຂຽນໃສ່ເຊີບເວີກ່ອນທີ່ຈະໄປທີ່ server ອື່ນ (ຖັງ) ສໍາລັບໂຮດຕິ້ງ.
ກາງ, ເຊິ່ງແມ່ນຊິ້ນສ່ວນຂອງລະຫັດທີ່ກໍາລັງດໍາເນີນຢູ່ໃນເວລາດຽວກັນກັບທຸກໆມຸມເບິ່ງແລະຖືວ່າ "ລວມ" ໃນມຸມມອງ.
ຜູ້ປະມວນຜົນສະພາບການ, ເຊິ່ງດໍາເນີນການສະພາບການຂອງແຕ່ລະມຸມມອງແລະຖືກນໍາໃຊ້ເພື່ອເພີ່ມສະພາບການພິເສດ.
ການທົດສອບ, ເຊິ່ງມີຄວາມຫມາຍວ່າຜູ້ໃຊ້ຫຼືຄໍາຮ້ອງຂໍຜ່ານຄວາມຕ້ອງການບາງຢ່າງກ່ອນທີ່ຈະໄດ້ສະແດງອອກ.
ຜູ້ບໍລິໂພກ, ເຊິ່ງກໍານົດວິທີການຈັດການກັບ Websockets ຈັດການແລະຕອບສະຫນອງຕໍ່ການສື່ສານ.
admin, ເຊິ່ງຖືກນໍາໃຊ້ເພື່ອລົງທະບຽນຮູບແບບຕ່າງໆເພື່ອໃຫ້ພວກເຂົາສາມາດຫມູນໃຊ້ໄດ້ໃນຫນ້າ Django admin, ບ່ອນທີ່ຖານຂໍ້ມູນສາມາດຈັດການຜ່ານອິນເຕີເຟດກາຟິກ.
Celery, ເຊິ່ງກໍານົດສ່ວນຕ່າງໆຂອງລະຫັດ Djangous ຂອງລະຫັດ Django ສາມາດເລີ່ມຕົ້ນການແລ່ນກ່ອນທີ່ຈະດໍາເນີນການກັບວຽກງານຫຼືລະຫັດຂອງເສັ້ນ.
Django ສາມາດມີສ່ວນປະກອບອື່ນໆອີກຫລາຍຢ່າງ, ເຊິ່ງພວກເຮົາຈະປຶກສາຫາລືໂດຍລະອຽດຢູ່ທີ່ນີ້. ມີຫລາຍວິທີທີ່ຈະເຮັດໃຫ້ Django ມີປະໂຫຍດຫຼາຍຂື້ນ, ເພີ່ມຫນ້າທີ່ການສື່ສານ, ເຊິ່ງມີປະຕິບັດວຽກງານທີ່ບໍ່ສະຫຼາດ, ໂດຍສະເພາະໃນການເບິ່ງຫນ້າທີ່, ບ່ອນທີ່ລະຫັດສ່ວນໃຫຍ່ຖືກປະຕິບັດ. ເບິ່ງຫນ້າທີ່ແມ່ນສໍາຄັນເພາະວ່າພວກມັນມັກຈະປະກາດທຸກໆລະຫັດທີ່ສະເພາະກັບຮູບແບບ URL ສະເພາະ, ຫຼືສ່ວນຂອງເຊີບເວີ.
ຫນ້າທໍາອິດ, ໃຫ້ສໍາລັບການຄົ້ນຫາຫນ້າທີ່ເບິ່ງ. ເບິ່ງຫນ້າທີ່ເລີ່ມຕົ້ນຈາກການນໍາເຂົ້າທີ່ຈະຖືກນໍາໃຊ້ໃນມຸມມອງ, ແລະຖືກກໍານົດໂດຍໃຊ້ຄໍານິຍາມຫຼືຊັ້ນຮຽນທີ່ມີຫນ້າທີ່ປົກກະຕິ. ທັດສະນະທີ່ງ່າຍທີ່ສຸດແມ່ນໄດ້ກໍານົດໂດຍນິຍາມທີ່ເປັນນິຍາມປ້ອງກັນ, ແລະສົ່ງຄືນ HttpresPonse ທີ່ມີແມ່ແບບພື້ນຖານ. ໃຫ້ເລີ່ມຕົ້ນໂດຍການກໍານົດທັດສະນະພື້ນຖານເພື່ອສົ່ງຄືນຂໍ້ຄວາມ "ສະບາຍດີໂລກ". ຈົ່ງຈື່ໄວ້ວ່າໃນແຕ່ລະຄັ້ງທີ່ທ່ານເພີ່ມລະຫັດຫຼັງຈາກຄໍາຖະແຫຼງທີ່ຄ້າຍຄືກັນ, ຖ້າ, ແລະອື່ນໆ, ແລະອື່ນໆ, ສໍາລັບແຕ່ລະນິຍາມທີ່ທ່ານຕ້ອງການນໍາໃຊ້ກັບຫນ້າທີ່ຂອງທ່ານ. ພວກເຮົາຈະເຂົ້າໄປໃນສິ່ງທີ່ແຕ່ລະວິທີນີ້ໃນໄວໆນີ້.
ຈາກໄດເລກະທໍລີເວັບໄຊທ໌ຂອງພວກເຮົາ, ດັດແກ້ອາຫານ / views.py ໄຟລ໌ໂດຍໃຊ້ nano ແລະເພີ່ມເສັ້ນຕໍ່ໄປນີ້ໄປຮອດຈຸດສຸດທ້າຍຂອງເອກະສານ.
from django.http import HttpResponse
def hello(request):
return HttpResponse('hello world')
Django's HttpresPonse ຕອບກັບສາຍເຊືອກ, ຫມາຍເຖິງການເປີດແລະປິດ '. ທຸກໆຄັ້ງທີ່ທ່ານຜ່ານຂໍ້ມູນໃຫ້ກັບຫນ້າທີ່ຫລືຫ້ອງຮຽນ, ຄືກັບການຮ້ອງຂໍຫຼືສາຍ, ທ່ານຈະຕ້ອງໃຊ້ວົງເລັບ (, ເປີດແລະປິດ).
ນີ້ບໍ່ແມ່ນທັງຫມົດທີ່ພວກເຮົາຕ້ອງການຢາກເຫັນທັດສະນະຂອງພວກເຮົາເທື່ອ. ແນ່ນອນ, ພວກເຮົາບໍ່ໄດ້ບອກເຄື່ອງແມ່ຂ່າຍທີ່ມຸມມອງແມ່ນແທ້, ພວກເຮົາຍັງຕ້ອງກໍານົດເສັ້ນທາງທີ່ມຸມມອງທີ່ຄວນຈະສະແດງ. ໃຫ້ເລີ່ມຕົ້ນໂດຍການກໍານົດເສັ້ນທາງພື້ນຖານໃນແອັບ / urls.py, ແລະພວກເຮົາຈະເຂົ້າສູ່ກຸ່ມໃນຕອນຕໍ່ມາ.
ໃນ App / urlS.py, ເພີ່ມເສັ້ນຫຼັງຈາກໃບລາຍງານນໍາເຂົ້າຫຼັງຈາກການນໍາເຂົ້າມຸມມອງທີ່ພວກເຮົາພຽງແຕ່ສ້າງ.
from feed import views as feed_views
ດຽວນີ້, ໃຫ້ກໍານົດຮູບແບບການເບິ່ງ. ຮູບແບບການເບິ່ງທີ່ໃຊ້ໃນການເຮັດວຽກກັບ WebSt, ແລະມີຄວາມຈໍາເປັນໃນການເຮັດວຽກຂອງຜູ້ໃຊ້, ຖ້າມີຄວາມຈໍາເປັນໃນການເຮັດໃຫ້ມີຄວາມຈໍາເປັນໃນການເບິ່ງອີກຄັ້ງຫນຶ່ງຫຼືຕ້ອງມີຊື່ອີກ. ມັນມີຄວາມຫມາຍທີ່ຈະເຮັດໃນແບບນີ້ແລະມີຄວາມຍືດຍຸ່ນ, ເພາະວ່າ Codebase ຂອງທ່ານຈະເປັນສະພາບແວດລ້ອມທີ່ປ່ຽນແປງທີ່ເຄີຍມີຄວາມຍືດຫຍຸ່ນແລະມີຄຸນຄ່າເພື່ອໃຫ້ມີຄຸນຄ່າແລະງ່າຍຕໍ່ການເຮັດວຽກກັບ. ນີ້ແມ່ນສິ່ງທີ່ມຸມມອງຂອງທ່ານເບິ່ງຄືວ່າ, ທ່ານສາມາດເພີ່ມສິ່ງນີ້ໃສ່ urlpatterns = [ສ່ວນຂອງແອັບ / alls.py. ຮູບແບບການເບິ່ງໄດ້ຖືກກໍານົດດ້ວຍສາມສ່ວນປະກອບທີ່ໄດ້ອະທິບາຍໄວ້ຂ້າງເທິງ, ແລະຫນ້າທີ່ທີ່ເອີ້ນວ່າເສັ້ນທາງ. ຮູບແບບ url ຂອງທ່ານແມ່ນບັນຊີລາຍຊື່, ສະນັ້ນໃຫ້ແນ່ໃຈວ່າຈະສິ້ນສຸດລາຍການໃນແຕ່ລະລາຍການໃນພວກມັນດ້ວຍຈຸດ, ເພາະວ່າສິ່ງນີ້ແຍກກັນແຕ່ລະຄົນ. ແຕ່ລະລາຍການກໍ່ຄວນຈະໄປຕາມເສັ້ນໃຫມ່, ອີກເທື່ອຫນຶ່ງມີ 4 ຊ່ອງກ່ອນທີ່ມັນຈະ, ຄືກັບແອັບ in ທີ່ຢູ່ໃນ settings.py. ພວກເຮົາຈະກໍານົດສ່ວນປະກອບທໍາອິດຂອງມຸມມອງດ້ວຍການເຮັດວຽກຂອງສາຍທີ່ບໍ່ມີສາຍ, ເພື່ອສ້າງມຸມມອງທີ່ເນັ້ນໃສ່ໄດເລກະທໍລີຮາກຂອງເຄື່ອງແມ່ຂ່າຍເວັບ. urls.py ຂອງທ່ານຕອນນີ້ຄວນເບິ່ງຄືວ່ານີ້:
from feed import views as feed_views
urlpatterns = [
path('', feed_views.hello, name='hello'),
]
ນີ້ແມ່ນພື້ນຖານສໍາລັບການສ້າງເວບໄຊທ໌ທີ່ມີ Django ທີ່ສະຖຽນລະພາບທັງຫມົດ. ເພື່ອເຮັດໃຫ້ມີເວັບໄຊທ໌ທີ່ມີຄວາມຄ່ອງແຄ້ວຫຼາຍຂື້ນທີ່ພວກເຮົາສາມາດເລີ່ມຕົ້ນຂໍ້ມູນຂ່າວສານ, ເຊັ່ນຮູບພາບ, ວີດີໂອ, ສຽງແລະອື່ນໆ, ເຊິ່ງພວກເຮົາຈະຄົ້ນຫາແບບຕໍ່ໄປ. ສໍາລັບດຽວນີ້, ໃຫ້ກວດເບິ່ງລະຫັດຂອງພວກເຮົາແລະດໍາເນີນການ server. ເພື່ອກວດກາລະຫັດສໍາລັບຂໍ້ຜິດພາດ, ແລ່ນ:
python manage.py check
ຖ້າມີຂໍ້ຄວາມຜິດພາດໃດໆ, ທ່ານຄວນກວດເບິ່ງການປ່ຽນແປງຢ່າງລະມັດລະວັງຫຼືເບິ່ງວ່າມີສິ່ງໃດທີ່ຕ້ອງໄດ້ຮັບການແກ້ໄຂ, ເປັນຕົວລະຄອນທີ່ບໍ່ມີຕົວຕົນ, ມີລັກສະນະທີ່ຖືກລົບລ້າງ, ຫຼືສິ່ງອື່ນໆ. ການອ່ານຜ່ານຂໍ້ຄວາມຜິດພາດ (ຖ້າທ່ານມີ), ທ່ານຄວນຈະສາມາດເບິ່ງເສັ້ນທາງທີ່ທ່ານສ້າງຂື້ນຫຼືແກ້ໄຂພ້ອມກັບແຟ້ມແລະເບິ່ງວ່າທ່ານສາມາດແກ້ໄຂສິ່ງໃດທີ່ມີຢູ່. ຖ້າທ່ານໄດ້ແກ້ໄຂບັນຫາດັ່ງກ່າວ, ດໍາເນີນການຄໍາສັ່ງຂ້າງເທິງອີກຄັ້ງ. ເມື່ອຊອບແວຂອງທ່ານພ້ອມທີ່ຈະແລ່ນແລະກໍາລັງເຮັດວຽກຢູ່, ທ່ານຈະເຫັນການກວດສອບລະບົບ "System Check is desputifiation ບໍ່ມີບັນຫາຫຍັງເລີຍ." ດຽວນີ້ທ່ານພ້ອມແລ້ວທີ່ຈະໄປ. ດໍາເນີນການ server ກັບ:
python manage.py runserver 0.0.0.0:8000
ດຽວນີ້ເປີດໂປແກຼມທ່ອງເວັບແລະນໍາທາງ http: // Localhost: 8000. ທ່ານຄວນຈະເຫັນຂໍ້ຄວາມທີ່ສົ່ງຄືນໃນວົງເລັບແລະຄໍາເວົ້າຂອງຟັງຊັນ HttpresPonse ໃນມຸມມອງຂອງທ່ານ. ນີ້ແມ່ນພຽງແຕ່ຕົວຢ່າງພື້ນຖານເທົ່ານັ້ນ, ແຕ່ຖ້າທ່ານໄດ້ເຮັດມັນມາກ່ອນ, ທ່ານຈະເຂົ້າໃຈພື້ນຖານຂອງວິທີການເຮັດວຽກ, Python, ແລະ Django ເຮັດວຽກ. ໃຫ້ຂອງຂຸດເອົາຄວາມເລິກເຂົ້າໃນບາງຖານຕົວແບບຂອງຖານຂໍ້ມູນ, ແລະສໍາຫຼວດພະລັງຂອງການຮຽນ python ໃນການເກັບຮັກສາຂໍ້ມູນ. ຫຼັງຈາກນັ້ນ, ພວກເຮົາຈະເລີ່ມຕົ້ນທີ່ຈະໄດ້ຮັບການຈັບມື HTML ແລະ CSS ກ່ອນທີ່ພວກເຮົາຈະເຮັດໃຫ້ເວັບໄຊທ໌້ຂອງພວກເຮົາມີຄວາມຄ່ອງແຄ້ວ, ປ່ຽນແປງໄດ້ງ່າຍໂດຍໃຊ້ JavaScript ແລະ Stearing.
ຫ້ອງຮຽນຈະຖືກເກັບໄວ້ໃນຮູບແບບ mode.py ຂອງແອັບ your ຂອງທ່ານ. ໂດຍໃຊ້ nano, ດັດແກ້ App / Moden.py ແລະເພີ່ມຫ້ອງຮຽນໃຫມ່. ຫ້ອງຮຽນໄດ້ຖືກກໍານົດດ້ວຍຄໍານິຍາມຂອງຫ້ອງຮຽນແລະໄດ້ຜ່ານ superclass ວ່າມັນສືບທອດມາຈາກ, ໃນກໍລະນີນີ້ models.model. ຊື່ຂອງຫ້ອງຮຽນມາຫຼັງຈາກຄໍານິຍາມຂອງຫ້ອງຮຽນ, ແລະຫຼັງຈາກທີ່ມີຄວາມລະອຽດຂອງຊັ້ນ A: (Colon) ຫ້ອງຮຽນຂອງພວກເຮົາຕ້ອງການບັດປະຈໍາຕົວທີ່ພວກເຮົາສາມາດໃຊ້ເພື່ອດຶງມັນແລະຮັກສາຄວາມເປັນເອກະລັກ, ແລະມັນຍັງຕ້ອງການຂໍ້ມູນຕົວຫນັງສືເພື່ອເກັບຂໍ້ມູນບາງຢ່າງ. ຕໍ່ມາພວກເຮົາສາມາດເພີ່ມເວລາທີ່ໃຊ້ເວລາ, ກະແສໄຟຟ້າ, ທີ່ແທ້ຈິງຫຼືບໍ່ຖືກຕ້ອງທີ່ສາມາດຕັດສິນໄດ້ເພື່ອຈັດຮຽງຮູບແບບໃຫ້ກັບຜູ້ໃຊ້ເຂົ້າໃນເຊີຟເວີ, ແລະອື່ນໆ. ໃຫ້ຂອງ unpack ລະຫັດຂ້າງລຸ່ມນີ້:
from django.db import models # ການນໍາເຂົ້າທີ່ຖືກນໍາໃຊ້ເພື່ອກໍານົດຫ້ອງຮຽນຂອງພວກເຮົາແລະມັນແມ່ນຄຸນລັກສະນະ
class Post(models.Model): # ຄໍານິຍາມຂອງຫ້ອງຮຽນຂອງພວກເຮົາເອງ
id = models.AutoField(primary_key=True) # ລະຫັດຂອງຕົວແບບຂອງພວກເຮົາ, ລະຫັດທີ່ຜະລິດໂດຍອັດຕະໂນມັດເຊິ່ງຈະໃຫ້ພວກເຮົາສອບຖາມຮູບແບບ, ຮັກສາຄວາມເປັນເອກະລັກ, ແລະມັນຈໍາເປັນຕ້ອງມີການພົວພັນກັບຕົວແບບແລ້ວ.
text = models.TextField(default='') # ຄຸນລັກສະນະຂອງຮ້ານຫ້ອງຮຽນຂອງພວກເຮົາ, ໃນກໍລະນີນີ້, ບາງຂໍ້ຄວາມ, ຕັ້ງຄ່າກັບສາຍທີ່ບໍ່ມີສາຍ.
ປິດແລະບັນທຶກເອກະສານດັ່ງທີ່ພວກເຮົາໄດ້ເຮັດກ່ອນທີ່ຈະສໍາເລັດ.
ມີຫລາຍຂົງເຂດແລະຕົວເລືອກອື່ນໆທີ່ພວກເຮົາຈະຄົ້ນຫາໃນເວລາທີ່ພວກເຮົາປັບປຸງຫ້ອງຮຽນນີ້ໃນຂະນະທີ່ແອັບ ison ທີ່ມີຄວາມຈໍາເປັນພື້ນຖານຂອງການສ້າງໂປແກຼມເພື່ອໂພດບາງຂໍ້. ເຖິງຢ່າງໃດກໍ່ຕາມ, ຮູບແບບນີ້ຈະບໍ່ເຮັດວຽກຄົນດຽວ. ດັ່ງທີ່ໄດ້ອະທິບາຍກ່ອນຫນ້ານີ້, ພວກເຮົາຈະຕ້ອງມີຮູບແບບທີ່ກໍາຫນົດເອງແລະຮູບແບບ URL ທີ່ກໍານົດເອງເພື່ອເຮັດໃຫ້ຮູບແບບນີ້ເຮັດວຽກ, ແລະພວກເຮົາກໍ່ຈະຕ້ອງມີຮູບແບບພ້ອມກັບແມ່ແບບ. ຂໍໃຫ້ຄົ້ນຫາແບບຟອມກ່ອນ.
ເພື່ອກໍານົດແບບຟອມ, ດັດແກ້ແອັບ / apts.py ກັບ nano ແລະເພີ່ມສາຍຕໍ່ໄປນີ້. ພວກເຮົາຈະຕ້ອງການສອງການນໍາເຂົ້າ, ແບບຟອມສະແດງຂອງພວກເຮົາ, ພ້ອມທັງແບບຈໍາລອງທີ່ພວກເຮົາສ້າງຄ້າຍຄືກັນ (Feed.model.Post) ແບບຟອມດັ່ງກ່າວຍັງສາມາດເຮັດຫນ້າທີ່ການເລີ່ມຕົ້ນເຊິ່ງກໍານົດໂດຍອີງໃສ່ຂໍ້ມູນໃນການຮ້ອງຂໍ, ແບບຫຼືຖ້າບໍ່ດັ່ງນັ້ນ, ພວກເຮົາຈະຄົ້ນຫາສິ່ງນີ້ຕໍ່ມາ.
ແບບຟອມແບບຈໍາລອງແມ່ນມີປະໂຫຍດຫຼາຍເພາະວ່າພວກມັນສາມາດສ້າງຕົວແບບຫລືຍັງດັດແກ້ຕົວແບບ, ດັ່ງນັ້ນພວກເຮົາຈະໃຊ້ພວກມັນສໍາລັບທັງສອງ. ຂໍໃຫ້ກໍານົດຫນຶ່ງໃນຮູບແບບ. Super ຢູ່ດ້ານລຸ່ມ.
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
ນີ້ຈະໃຊ້ເວລານາທີເພື່ອປະຕິບັດ, ແຕ່ວ່າມັນກໍ່ເປັນ, ມັນຈະຊ່ວຍໃຫ້ທ່ານສາມາດເຂົ້າເຖິງຕົວແບບໃນມຸມມອງ, ຫຼືບ່ອນອື່ນໃນຊອບແວ. ຂໍໃຫ້ສືບຕໍ່ໂດຍການເບິ່ງບ່ອນທີ່ພວກເຮົາສາມາດເຫັນຕົວແບບຂອງພວກເຮົາ. ແກ້ໄຂອາຫານ / views.py ແລະເພີ່ມລະຫັດຕໍ່ໄປນີ້, ດັ່ງທີ່ໄດ້ກ່າວໄວ້. ທ່ານບໍ່ຈໍາເປັນຕ້ອງເພີ່ມຫຍັງຫຼັງຈາກ # ເຄື່ອງຫມາຍ, ລະຫັດນັ້ນແມ່ນຄໍາເຫັນທີ່ໃຊ້ໃນການສະແດງຂໍ້ມູນກ່ຽວກັບລະຫັດ. ພວກເຮົາຈະເລີ່ມຕົ້ນໂດຍການນໍາເຂົ້າແບບຂອງພວກເຮົາໃນທັດສະນະ, ແລະເພີ່ມມັນເຂົ້າໃນສະພາບການທີ່ພວກເຮົາສາມາດສະແດງມັນໃນແມ່ແບບເປັນລາຍຊື່ສໍາລັບການສະແດງ. ຕໍ່ໄປ, ພວກເຮົາຈະເພີ່ມແມ່ແບບບ່ອນທີ່ພວກເຮົາສາມາດສະແດງແບບຟອມແລະຮູບແບບທີ່ມີປຸ່ມໃຫມ່ໂດຍອີງໃສ່ຕົວແບບແລະລົງໃສ່ເຊີບເວີ. ຟັງສຽງນີ້ສັບສົນ, ສະນັ້ນໃຫ້ພວກເຮົາເອົາແຕ່ລະບາດກ້າວ. ກ່ອນທີ່ພວກເຮົາຈະເຫັນການເບິ່ງ, ໃຫ້ພວກເຮົາສ້າງແບບຈໍາລອງທີ່ພຽງແຕ່ເຮັດໃຫ້ຕົວແບບພຽງແຕ່ເຮັດໃຫ້ແນ່ໃຈວ່າພວກເຮົາສາມາດເບິ່ງເຫັນໄດ້ໂດຍການສ້າງກະທູ້ໃຫມ່ໃນຫອຍ. ນີ້ແມ່ນວິທີທີ່ມຸມມອງນັ້ນຄວນເບິ່ງ:
posts = Post.objects.all() # ສອບຖາມຂໍ້ຄວາມທັງຫມົດໃນຖານຂໍ້ມູນມາຮອດປະຈຸບັນ
ທັງຫມົດນີ້ເບິ່ງງ່າຍດາຍຈົນກວ່າພວກເຮົາຈະໄປທາງລຸ່ມ. render, ມູນຄ່າທີ່ສົ່ງຄືນໂດຍຫນ້າທີ່ແທນທີ່ຈະເປັນຕົວຢ່າງຂອງ HTTP ຄືກັບການປ້ອນຂໍ້ມູນຄັ້ງທໍາອິດ, ເຊິ່ງປະຈຸບັນສາມາດໄດ້ຮັບການສະແດງອອກໃນຮູບແບບ, ແລະສົ່ງຄືນແມ່ແບບທີ່ກໍານົດໄວ້ໃນຫນ້າທີ່. ແມ່ແບບແມ່ນຈະເປັນເອກະສານ HTML ທີ່ມີພາສາທີ່ມີຊື່ວ່າ Jinj2, ເຊິ່ງໃຫ້ຂໍ້ມູນ Python ເຂົ້າໄປໃນ HTML.
ເພື່ອເລີ່ມຕົ້ນການສ້າງແມ່ແບບ, ເຮັດສອງລາຍການໃນອາຫານ.
mkdir feed/templates
mkdir feed/templates/feed
ຕໍ່ໄປ, ດັດແກ້ແມ່ແບບໃນໄດເລກະທໍລີຂ້າງເທິງ, ອາຫານ / ແມ່ແບບ / ອາຫານ, ແລະເພີ່ມລະຫັດສໍາລັບຕົວຢ່າງນີ້. ຂໍໃຫ້ເບິ່ງແມ່ແບບສໍາລັບຕົວຢ່າງນີ້.
ນີ້ແມ່ນແມ່ແບບງ່າຍໆທີ່ສຸດ. ມັນກໍານົດການເປີດແລະປິດປ້າຍ HTML, Type Tag, tag ຂອງຮ່າງກາຍທີ່ເພີ່ມເສັ້ນທາງໃນຫນ້າຈໍ, ໃຫ້ແຕ່ລະຫົວຂໍ້ໃນບັນຊີລາຍຊື່ໃນບັນຊີລາຍຊື່ໃນວັກໃນແມ່ແບບ. ນີ້ແມ່ນສິ່ງທີ່ມັນຕ້ອງໃຊ້ໃນການສະແດງຂໍ້ຄວາມ, ແຕ່ວ່າບໍ່ມີໃນຖານຂໍ້ມູນເລີຍ. ໃຫ້ຂອງສ້າງບາງສ່ວນກັບຫອຍ. ພວກເຮົາສາມາດແລ່ນຫອຍດ້ວຍການຈັດການ. ຍ
python manage.py shell
ດຽວນີ້, ໃຫ້ນໍາເຂົ້າແບບ Post ຂອງພວກເຮົາ
from feed.models import Post
ຕໍ່ໄປ, ພວກເຮົາຈະສ້າງກະທູ້ທີ່ລຽບງ່າຍດ້ວຍເຊືອກແລະອອກຈາກຫອຍ. ສາຍເຊືອກສາມາດເປັນສິ່ງໃດກໍ່ໄດ້, ເປັນຂໍ້ຄວາມທີ່ຖືກຕ້ອງດົນ.
Post.objects.create(text='hello world')
exit()
ສຸດທ້າຍ, ພວກເຮົາຈະຕ້ອງເພີ່ມຮູບແບບ URL ໃຫ້ແກ່ອາຫານຂອງພວກເຮົາ. ເນື່ອງຈາກວ່າແອັບ feed urns ຂອງພວກເຮົາຈະໃຊ້ URL ຫຼາຍຢ່າງແລະພວກເຮົາຕ້ອງການຮັກສາຂະຫນາດຂອງເອກະສານນ້ອຍ, ໃຫ້ສ້າງ ulls.py ໃນ app ອາຫານຂອງພວກເຮົາເບິ່ງຄືວ່າ:
from django.urls import path
from . import views
urlpatterns = [
path('', views.feed, name='feed'),
]
ພວກເຮົາຍັງຈະຕ້ອງແກ້ໄຂ lets.py ໃນແອັບ base, ສິ່ງທີ່ພວກເຮົາຕັດສິນໃຈໂທຫາມັນ, ນີ້ແມ່ນໄດເລກະທໍລີທໍາອິດທີ່ພວກເຮົາສ້າງ. EDIT App / App.py ແລະເພີ່ມສິ່ງຕໍ່ໄປນີ້ໃສ່ຮູບແບບ url
from django.urls import include # ຢູ່ເທິງສຸດ
# ... ລະຫັດກ່ອນຫນ້ານີ້ຢູ່ທີ່ນີ້
ດຽວນີ້, ເມື່ອພວກເຮົາແລ່ນເຄື່ອງແມ່ຂ່າຍດ້ວຍ Python Manage .py ນອກເຫນືອຈາກນັ້ນ, ພວກເຮົາຈະເຫັນຮູບແບບ, ເບິ່ງແລະແມ່ແບບພ້ອມກັບລາຍການ url, ພ້ອມກັບລາຍການ url ພ້ອມກັບລາຍການໃນຖານຂໍ້ມູນ. ຕໍ່ໄປ, ໃຫ້ປະຕິບັດແບບຟອມທີ່ພວກເຮົາສ້າງແລະເລີ່ມຕົ້ນສ້າງຂໍ້ຄວາມຂອງພວກເຮົາເອງ. ແຕ່ກ່ອນທີ່ພວກເຮົາຈະຂຽນລະຫັດຫຼາຍເກີນໄປ, ໃຫ້ພວກເຮົາເຮັດການສໍາຮອງໂດຍໃຊ້ສະຄິບທີ່ພວກເຮົາຂຽນກ່ອນຫນ້ານີ້, ສໍາຮອງ. ດໍາເນີນການສະຄິບໃນຫອຍ, ລໍຖ້າຊ່ວງເວລາສອງສາມນາທີ, ແລະທຸກລະຫັດຈະໄດ້ຮັບການສະຫນັບສະຫນູນໃຫ້ແກ່ຫໍໄຕ git ຂອງພວກເຮົາ.
backup
ການຈັດຕັ້ງປະຕິບັດແບບຟອມແມ່ນຂ້ອນຂ້າງງ່າຍດາຍ. ພວກເຮົາຈະນໍາເຂົ້າແບບຟອມຂອງພວກເຮົາ, ໃຫ້ເພີ່ມ Post Post Handler ໄປທີ່ມຸມມອງ, ແລະບັນທຶກໂພສໃນຖານຂໍ້ມູນກ່ອນທີ່ຈະປ່ຽນເສັ້ນທາງດຽວກັນ. ພວກເຮົາສາມາດໃຊ້ຟັງຊັນ Redirect ທີ່ພວກເຮົານໍາເຂົ້າແລ້ວ, ແລະຫນ້າທີ່ອື່ນທີ່ມີຊື່ວ່າປີ້ນກັບກັນເພື່ອໃຫ້ໄດ້ URL ສໍາລັບຮູບແບບການເບິ່ງ. ພວກເຮົາຈະສອບຖາມສິ່ງນີ້ດ້ວຍສະຕິງ 'Feed: ເພາະວ່າ Namespace ຂອງ Namespace ຂອງຮູບແບບທີ່ປະກອບມີແມ່ນອາຫານ, ແລະເບິ່ງທີ່ເອີ້ນວ່າອາຫານ.
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, ພວກເຮົາໃຊ້ tag html, {% ... %}) ເພື່ອສະແດງຮູບແບບ, ແລະອື່ນໆ, {... }} ທີ່ຈະສະແດງແບບຟອມ. ພວກເຮົາຍັງມີ loop ທີ່ຈະສະແດງຕົວຫນັງສືໂດຍໃຊ້ປ້າຍ Blocks ແລະ tag temple. Tags Block ແມ່ນມີຄວາມສໍາຄັນແທ້ໆເພາະວ່າພວກເຮົາສາມາດກໍານົດວິທີການຂອງແມ່ແບບ, ແລະປ້າຍແມ່ແບບແມ່ນເປັນພື້ນຖານຂອງວິທີການທີ່ພວກເຮົາວາງຕົວແປເຂົ້າໃນລະຫັດຂອງພວກເຮົາ.
ດຽວນີ້ພວກເຮົາຈໍາເປັນຕ້ອງເຮັດໃຫ້ແອັບ is ຂອງພວກເຮົາເບິ່ງດີກວ່າ, ເພາະວ່າສໍາລັບດຽວນີ້ມັນເບິ່ງຄືວ່າເປັນພື້ນຖານແທ້ໆ. ພວກເຮົາສາມາດເຮັດສິ່ງນີ້ໄດ້ໂດຍການໃຊ້ CSS, ທັງເສັ້ນ, ຫຼືໃນຫ້ອງຮຽນທີ່ຕິດກັບແຕ່ລະວັດຖຸໃນເອກະສານ. CSS ແມ່ນງາມແທ້ໆເພາະມັນບອກທຸກຢ່າງໃນຫນ້າເວັບທີ່ຄວນເບິ່ງ, ແລະສາມາດເຮັດໃຫ້ມັນງາມແທ້ໆ. ມີຫໍສະມຸດຈໍານວນຫນຶ່ງທີ່ສາມາດເຮັດສິ່ງນີ້ໄດ້, ແຕ່ສ່ວນຕົວຂອງຂ້ອຍໄປທີ່ຈະເປັນ bootstrap.
bootstrap ສາມາດດາວໂຫລດໄດ້ຈາກເວັບໄຊທ໌ຂອງພວກເຂົາ,getbootstrap.com/. ເມື່ອຢູ່ທີ່ນັ້ນ, ກົດປຸ່ມເພື່ອອ່ານເອກະສານຕິດຕັ້ງ, ແລະສໍາເນົາລະຫັດຈາກສ່ວນປະກອບໃນສ່ວນ CDN. ທ່ານຈະຕ້ອງການລະຫັດນີ້ຢູ່ເທິງສຸດຂອງເອກະສານ HTML ຂອງທ່ານ, ໃນແທັກທີ່ເອີ້ນວ່າຫົວ. ນອກຈາກນີ້, ໃຫ້ຂອງສືບຕໍ່ເດີນຫນ້າແລະສ້າງແມ່ແບບຖານເພື່ອໃຫ້ພວກເຮົາບໍ່ຈໍາເປັນຕ້ອງສ້າງລິ້ງເຫຼົ່ານີ້ໃນແຕ່ລະຮູບແບບ.
ສ້າງລາຍຊື່ໃຫມ່ທີ່ເອີ້ນວ່າແມ່ແບບທີ່ມີແມ່ແບບ MKDIR, ແລະຫຼັງຈາກນັ້ນດັດແປງແມ່ແບບ / Base.HTML.
ມັນຄວນຈະເປັນແບບນີ້:
ຮັບປະກັນໃຫ້ສໍາເນົາເອກະສານ CSS ແລະ JavaScript, .CSS ແລະ .js, ເພາະວ່າພວກເຮົາຈະຕ້ອງການ JavaScript ເພື່ອເຮັດໃຫ້ເວັບໄຊທ໌້ຂອງພວກເຮົາມີປະໂຫຍດຫຼາຍຂື້ນໃນອະນາຄົດ.
ດຽວນີ້, ໃຫ້ກັບຄືນໄປຫາຫອຍແຕກແລະແລ່ນຄໍາສັ່ງທີ່ໄວ. ຈືຂໍ້ມູນການ, ຖ້າທ່ານເຄີຍຕ້ອງການເຂົ້າເຖິງສະພາບແວດລ້ອມເສມືນ, ປະເພດແຫຼ່ງຂໍ້ມູນ Extv / Bin / Activate. ສິ່ງນີ້ຈະຊ່ວຍໃຫ້ທ່ານຕິດຕັ້ງ Python Package ຢູ່ໃນທ້ອງຖິ່ນໃນແບບທີ່ຊ່ວຍໃຫ້ DJAGO ເຂົ້າເຖິງ. ເພື່ອໃຫ້ຮູບແບບຂອງພວກເຮົາທີ່ຜະລິດໂດຍຫ້ອງຮຽນ bootstrap django, ພວກເຮົາຈະໃຊ້ຊຸດ Python ທີ່ມີຮູບແບບ Crispy. ພວກເຮົາສາມາດດາວໂຫລດສິ່ງນີ້ດ້ວຍຄໍາສັ່ງຕໍ່ໄປນີ້
pip install django-crispy-forms
ເມື່ອສິ່ງນີ້ຖືກຕິດຕັ້ງແລ້ວ, ຕື່ມໃສ່ settings.py
# ... ລະຫັດກ່ອນຫນ້ານີ້ຢູ່ທີ່ນີ້
ດຽວນີ້, ກັບຄືນໄປບ່ອນໃນແມ່ແບບອາຫານຂອງພວກເຮົາ, ພວກເຮົາສາມາດເອົາບາງສິ່ງບາງຢ່າງອອກ. ໃຫ້ເອົາການເລີ່ມຕົ້ນແລະສິ້ນສຸດຂອງເອກະສານແລະທົດແທນມັນດ້ວຍມູນມໍລະດົກຈາກແມ່ແບບຖານຂອງພວກເຮົາ, ໂດຍໃຊ້ຄໍານິຍາມແລະຄໍານິຍາມບລັອກ. ນອກຈາກນີ້, ພວກເຮົາຈະເພີ່ມການກັ່ນຕອງການເຂົ້າຮ່ວມການນໍາເຂົ້າດ້ວຍການໂຫຼດແລະການກັ່ນຕອງແມ່ແບບກັບແບບຟອມ. ສຸດທ້າຍ, ໃຫ້ຕື່ມຫ້ອງຮຽນ bootstrap ໃສ່ປຸ່ມໃນແບບຟອມເພື່ອເຮັດໃຫ້ມັນເບິ່ງຄືວ່າເປັນປຸ່ມ. ທີ່ຄວນເບິ່ງຄືວ່າ:
ສວຍງາມ! ນັ້ນແມ່ນລະຫັດທີ່ຂ້ອນຂ້າງແລ້ວ. ຕໍ່ໄປ, ພວກເຮົາຄວນທົດສອບແລະໃຫ້ແນ່ໃຈວ່າພວກເຮົາສາມາດເຫັນໄດ້ວ່າທຸກຢ່າງເບິ່ງຄືວ່າງາມ, ແລະຍັງແນ່ໃຈວ່າທຸກສິ່ງທຸກຢ່າງເຮັດວຽກຢ່າງຖືກຕ້ອງ. ດໍາເນີນການ server ຕາມຄໍາແນະນໍາທີ່ຜ່ານມາແລະໃຫ້ແນ່ໃຈວ່າເວບໄຊທ໌ເບິ່ງແລະເຮັດວຽກແລ້ວ. ວຽກທີ່ດີເລີດ! ທ່ານພ້ອມແລ້ວທີ່ຈະກ້າວໄປສູ່ຂັ້ນຕອນຕໍ່ໄປ, ໃນນັ້ນພວກເຮົາຈະເພີ່ມຫນ້າທີ່ເຂົ້າສູ່ລະບົບຜູ້ໃຊ້ໂດຍໃຊ້ URL, ແບບຟອມ, ມຸມມອງແລະແມ່ແບບ. ແມ່ແບບຕ່າງໆແມ່ນສໍາຄັນ, ແລະພວກເຮົາຈະສືບຕໍ່ດັດແປງມັນແລະເຮັດໃຫ້ເວັບໄຊທ໌້ແລະໃນທີ່ສຸດຂໍ້ມູນຂອງທ່ານຈະຊ່ວຍໃຫ້ທ່ານສາມາດຮັກສາໂປແກຼມຂອງທ່ານໃຫ້ສາມາດເຂົ້າເຖິງທ່ານໄດ້.
ເພື່ອເຮັດສິ່ງນີ້, ພວກເຮົາຈະຕ້ອງໃຊ້ຕົວແບບຂອງຜູ້ໃຊ້ທີ່ສ້າງຂຶ້ນເປັນ django. ຮູບແບບຂອງຜູ້ໃຊ້ແມ່ນແບບຈໍາລອງຖານຂໍ້ມູນ, ເຊັ່ນ: ໂພສຂອງພວກເຮົາ, ເຊິ່ງສາມາດສະແດງໃຫ້ເຫັນເພື່ອເຂົ້າໃຊ້ຜູ້ໃຊ້ເຂົ້າໃນເວັບໄຊທ໌້. ໃນອະນາຄົດ, ກ່ອນທີ່ພວກເຮົາຈະນໍາໃຊ້ເວັບໄຊທ໌້ໃຫ້ກັບອິນເຕີເນັດ, ພວກເຮົາຈະຂະຫຍາຍຮູບແບບນີ້ກັບມັນ, ແລະສ້າງມາດຕະການຄວາມປອດໄພເພີ່ມເຕີມສໍາລັບການເຂົ້າສູ່ລະບົບທີ່ທົນທານຕໍ່ການເຊື່ອມຕໍ່. ພວກເຮົາຈະເລີ່ມຕົ້ນໂດຍການໃຊ້ບາງສິ່ງທີ່ກໍ່ສ້າງໃນແບບຟອມເຂົ້າສູ່ລະບົບທີ່ Django ສະຫນອງ. ຫນ້າທໍາອິດ, ໃຫ້ຂອງສ້າງ app ໃຫມ່ທີ່ພວກເຮົາຈະນໍາໃຊ້ເພື່ອສະແດງແມ່ແບບແລະມຸມມອງສໍາລັບຫນ້າເຂົ້າສູ່ລະບົບພື້ນຖານ. ພວກເຮົາຍັງຈະສ້າງແອັບ apper ອື່ນໆເພື່ອເປັນຕົວແທນຂອງສິ່ງທ້າທາຍເຂົ້າສູ່ລະບົບຕໍ່ເນື່ອງເພື່ອໃຫ້ລະຫັດຜ່ານ, ອຸປະກອນພາຍນອກ, ແລະການຮັບຮູ້ລາຍນິ້ວມື.
ພວກເຮົາໄດ້ເວົ້າເຖິງແລ້ວກ່ຽວກັບການເລີ່ມຕົ້ນແອັບ app. ຈາກໄດເລກະທໍລີຂອງພວກເຮົາ, ພາຍໃນສະພາບແວດລ້ອມເສມືນ, ຜ່ານການໂຕ້ຖຽງເຫຼົ່ານີ້
python manage.py startapp users
ດຽວນີ້, ພວກເຮົາຄວນມີໄດເລກະທໍລີສໍາລັບແອັບໃຫມ່. ໃຫ້ເລີ່ມຕົ້ນໂດຍການສ້າງມຸມມອງໃນໄດເລກະທໍລີນັ້ນເຊິ່ງກົງກັບການເຂົ້າສູ່ລະບົບຜູ້ໃຊ້. Django ໄດ້ສ້າງໃນທັດສະນະສໍາລັບການເຂົ້າສູ່ລະບົບຂອງຜູ້ໃຊ້, ແຕ່ສິ່ງເຫຼົ່ານີ້ຈະບໍ່ເຫມາະສົມກັບພວກເຮົາເພາະວ່າພວກເຮົາຕ້ອງການເບິ່ງທີ່ເຫມາະສົມກັບຄໍານິຍາມ.
ໃນທັດສະນະດັ່ງກ່າວ, ພວກເຮົາຈະເລີ່ມຕົ້ນໂດຍການກວດສອບການຮ້ອງຂໍການປະກາດ, ຜ່ານການເຂົ້າຮ່ວມຂອງບັນຊີຜູ້ໃຊ້, ແລະເຂົ້າສູ່ລະບົບຜູ້ໃຊ້ກ່ອນທີ່ຈະໂອນເງິນໃຫ້ພວກເຮົາ.
ໃນຜູ້ໃຊ້ / views.py, ເພີ່ມລະຫັດຕໍ່ໄປນີ້
username = request.POST['username'] # ເອົາຊື່ຜູ້ໃຊ້ແລະລະຫັດຜ່ານຈາກຄໍາຮ້ອງຂໍ
password = request.POST['password'] # ກວດສອບຜູ້ໃຊ້
ນີ້ແມ່ນສິ່ງທີ່ທ່ານຕ້ອງການສໍາລັບເບິ່ງການເຂົ້າສູ່ລະບົບຂັ້ນພື້ນຖານ. ໃນປັດຈຸບັນ, ໃຫ້ພວກເຮົາສ້າງແບບຟອມສໍາລັບມຸມມອງໂດຍການຂະຫຍາຍແມ່ແບບຖານ. ພວກເຮົາຈະເລີ່ມຕົ້ນໂດຍການສ້າງໄດເລກະທໍລີໃຫມ່ສໍາລັບແມ່ແບບໃນໂຟນເດີຜູ້ໃຊ້.
mkdir users/templates
mkdir users/templates/users
ໃນປັດຈຸບັນ, ພວກເຮົາຄວນຈະສາມາດແກ້ໄຂຜູ້ໃຊ້ / ແມ່ແບບ / ຜູ້ໃຊ້ / ເຂົ້າສູ່ລະບົບ. ໃນຂະນະທີ່ພວກເຮົາຢູ່ມັນ, ພວກເຮົາຈະສ້າງແມ່ແບບເພື່ອໃຫ້ຜູ້ໃຊ້ລົງທະບຽນເຊັ່ນກັນ.
nano users/templates/users/login.html
ໃນປັດຈຸບັນ, ໃນແມ່ແບບ,
ນີ້ແມ່ນພື້ນຖານຂອງແມ່ແບບເຂົ້າສູ່ລະບົບ. ມັນເປັນຄືກັນກັບແມ່ແບບອື່ນໆໃນໂຄງສ້າງ, ແຕ່ມັນເບິ່ງແຕກຕ່າງກັນເລັກນ້ອຍເມື່ອມັນສະແດງອອກ. ພວກເຮົາສາມາດຄັດລອກລະຫັດນີ້ເພື່ອສ້າງແມ່ແບບທີ່ຄ້າຍຄືກັນນີ້ຫຼາຍທີ່ເອີ້ນວ່າ Regis.html, ບ່ອນທີ່ພວກເຮົາຈະປ່ຽນຄໍາສັບແລະໃຊ້ແບບຟອມໃຫມ່ທີ່ພວກເຮົາສ້າງ. ໃຫ້ຂອງເຮັດໃຫ້ແມ່ແບບກ່ອນ. ແກ້ໄຂຜູ້ໃຊ້ / ແມ່ແບບ / ຜູ້ໃຊ້ / Register.html ແລະເພີ່ມລະຫັດຕໍ່ໄປນີ້:
ໃນປັດຈຸບັນ, ໃຫ້ພວກເຮົາສ້າງແບບຟອມສໍາລັບການລົງທະບຽນຜູ້ໃຊ້ຂອງພວກເຮົາກັບຄືນສູ່ມຸມມອງກ່ອນທີ່ພວກເຮົາຈະຍົກລະດັບການເຂົ້າສູ່ລະບົບຂອງຜູ້ໃຊ້ຂອງພວກເຮົາ. ພວກເຮົາຈະເຮັດໃຫ້ແບບຟອມນີ້ເປັນພື້ນຖານທີ່ຈະເລີ່ມຕົ້ນດ້ວຍ, ແຕ່ລວມເອົາລາຍລະອຽດແລະຄຸນລັກສະນະຄວາມປອດໄພເຊັ່ນ: ຂໍ້ຕົກລົງແລະ CAPTCHA ໃນອະນາຄົດ. ແກ້ໄຂແບບຟອມກັບ Nano UNA / forms ກ: ແລະເພີ່ມລະຫັດຕໍ່ໄປນີ້.
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']
ສະນັ້ນພວກເຮົາມີຮູບແບບອື່ນອີກທີ່ນີ້ເຊິ່ງເຮັດວຽກຢ່າງງ່າຍດາຍ. ມັນແມ່ນແບບຟອມລົງທະບຽນຜູ້ໃຊ້ທີ່ມີຊື່ຜູ້ໃຊ້, ອີເມວແລະລະຫັດຜ່ານ, ພ້ອມທັງລະຫັດລັບຢືນຢັນ. ໃຫ້ສັງເກດວ່າແບບຟອມນີ້ບໍ່ໄດ້ຂະຫຍາຍຮູບແບບແບບປົກກະຕິ. ພາກສະຫນາມຫນຶ່ງຖືກກໍານົດຄືກັນ, ແລະຊັ້ນ Meta ກໍານົດຮູບແບບຂອງແບບຟອມທີ່ກົງກັບສ່ວນທີ່ເຫຼືອຂອງຂໍ້ມູນທີ່ຈະຂຽນເປັນແບບຟອມ. ສ່ວນໃຫຍ່ຂອງສິ່ງນີ້ມີຢູ່ໃນ Django ທີ່ສ້າງໃນການປະຕິບັດໃນການປະຕິບັດໂດຍການປະຕິບັດ, ສະນັ້ນພວກເຮົາຈະໃຊ້ແບບນັ້ນເປັນພື້ນຖານສໍາລັບຫ້ອງຮຽນ (ຜ່ານໄປໃນວົງເລັບ).
ຕໍ່ໄປ, ພວກເຮົາຈະກວດເບິ່ງທັດສະນະເພື່ອລົງທະບຽນຜູ້ໃຊ້, ດຽວນີ້ວ່າພວກເຮົາມີຮູບແບບແລະແມ່ແບບ. ນີ້ແມ່ນແບບຈໍາລອງ, ຄືກັນກັບຫນຶ່ງໃນມຸມມອງແບບໃຫມ່. ແກ້ໄຂຜູ້ໃຊ້ / views.py ແລະເພີ່ມລະຫັດຕໍ່ໄປນີ້:
# ... ນໍາເຂົ້າ
ນີ້ແມ່ນສິ່ງທີ່ພວກເຮົາຕ້ອງໄດ້ລົງທະບຽນຜູ້ໃຊ້, ແຕ່ພວກເຮົາຄວນມີຂໍ້ມູນເພີ່ມເຕີມ. ພວກເຮົາຕ້ອງການຮູ້ເວລາທີ່ຜູ້ລົງທະບຽນຜູ້ໃຊ້, ບາງຄັ້ງ, ພວກເຮົາຈະຕ້ອງໄດ້ປັບປຸງຮູບແບບອາຫານ, POST, ເພື່ອບັນຊີເອກະສານແລະຄຸນລັກສະນະຂອງຜູ້ໃຊ້. ເພື່ອເຮັດສິ່ງນັ້ນ, ພວກເຮົາຈະປັບປຸງແບບ Moden.py ໃນທັງສອງແອັບ. ໃຫ້ເລີ່ມຕົ້ນໂດຍການດັດແກ້ຮູບແບບອາຫານ. ມັນຄວນຈະເປັນແບບນີ້ດຽວນີ້:
from django.db import models # ... ນໍາເຂົ້າ
author = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='posts') # ຕື່ມໃນສາຍນີ້
ເອົາໃຈໃສ່ກັບສາຍທີສອງທີ່ຖືກເພີ່ມເຂົ້າໃນເອກະສານ. ນີ້ແມ່ນກຸນແຈຂອງຕ່າງປະເທດ, ເຊິ່ງຈະເຮັດໃຫ້ແຕ່ລະໂພສຕ່ໍາຕໍ່ຜູ້ໃຊ້ດຽວຕໍ່ໄປສະນີ, ສະນັ້ນພວກເຮົາສາມາດປະຫຍັດພື້ນຖານໂດຍຜູ້ໃຊ້ໄດ້ໂດຍບໍ່ສາມາດເຮັດໄດ້ໂດຍບໍ່ຕ້ອງຮັບເອົາມັນໃຫ້ກັບຜູ້ໃຊ້. ພວກເຮົາກໍານົດກຸນແຈຂອງຄົນຕ່າງປະເທດນີ້ທີ່ມັນເປັນຕົວແທນ, ການໂຕ້ຖຽງທີ່ບໍ່ຈໍາເປັນຕ້ອງໄດ້ຖືກສ້າງຂື້ນໂດຍບໍ່ມີການສ້າງຂໍ້ຄວາມໃດໆ, ແລະທີ່ພວກເຮົາສາມາດນໍາໃຊ້ເພື່ອອ້າງອີງເຖິງຈຸດປະສົງທີ່ຜູ້ໃຊ້ສ້າງ. ຊື່ທີ່ກ່ຽວຂ້ອງນີ້, ບໍ່ຄືກັບ Post.author, ຜູ້ຂຽນບົດຄວາມ, ໃຫ້ຜູ້ໃຊ້ສະຫະລັດອາຈານ Post Post. ດຽວນີ້ພວກເຮົາສາມາດໄດ້ຮັບຂໍ້ຄວາມທີ່ຜູ້ໃຊ້ທີ່ເຮັດໂດຍການແລ່ນ user.posts.all (ຫຼື).
ດຽວນີ້, ໃຫ້ພວກເຮົາເຮັດໃຫ້ການເຂົ້າສູ່ລະບົບຂອງພວກເຮົາມີຄວາມຢືດຢຸ່ນຫຼາຍຂື້ນ. ພວກເຮົາສາມາດເຮັດໃຫ້ເວັບໄຊທ໌້ຂອງພວກເຮົາມີຄວາມສ່ຽງຫນ້ອຍລົງໂດຍອັດຕາການຈໍາກັດຈໍານວນເວລາທີ່ພວກເຮົາຈະອະນຸຍາດໃຫ້ເຂົ້າສູ່ລະບົບເວັບໄຊທ໌້, ນີ້ແມ່ນຂ້ອນຂ້າງງ່າຍດາຍ. ຂໍໃຫ້ຍັງເລີ່ມເກັບຂໍ້ມູນບາງຢ່າງກ່ຽວກັບຜູ້ໃຊ້ແຕ່ລະຄົນກ່ອນທີ່ພວກເຮົາຈະສືບຕໍ່ພັດທະນາແອັບ app ຂອງພວກເຮົາ. ການດັດແກ້ຜູ້ໃຊ້ / moden.py, ເພີ່ມລະຫັດຕໍ່ໄປນີ້.
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='')
ໃຫ້ສັງເກດວ່າຮູບແບບນີ້ແມ່ນຄ້າຍຄືກັນກັບຮູບແບບການໄປສະນີ. ພວກເຮົາມີເວລານໍາເຂົ້າເພີ່ມເຕີມ, ເຊິ່ງຈະຊ່ວຍໃຫ້ພວກເຮົາຕັ້ງຄ່າເລີ່ມຕົ້ນໃນຂອບເຂດວັນຄົບຮອບວັນ, ແລະພວກເຮົາຍັງມີຕົວລະບາຍແລະຮູບພາບຄືກັບໂພສ. ການນໍາໃຊ້ເວລາທັງຫມົດຂອງເວລາເຫຼົ່ານີ້ຊ່ວຍໃຫ້ພວກເຮົາຮັບປະກັນເວັບໄຊທ໌້ແລະເຂົ້າໃຈການນໍາໃຊ້ຂອງມັນ, ແລະຂໍ້ຄວາມໃຫ້ພວກເຮົາສະແດງຂໍ້ມູນກ່ຽວກັບຜູ້ໃຊ້ແຕ່ລະຄົນ, ຫຼືຜູ້ຂຽນ, ຢູ່ໃນເວັບໄຊທ໌້. OneToonerfield ຄວນຈະເປັນການພິຈາລະນາເປັນພຽງເລັກນ້ອຍ, ມັນປະພຶດຕົວຄືກັນກັບຜູ້ທີ່ມີຮູບຮ່າງຫນ້າຕາແຕ່ມີພຽງແຕ່ຫນຶ່ງແບບຕໍ່ໆມາ. ວິທີນີ້, ຜູ້ໃຊ້ມີພຽງແຕ່ຂໍ້ມູນຫນຶ່ງເທົ່ານັ້ນ, ໃນຂະນະທີ່ພວກເຂົາອາດຈະມີຫລາຍກະທູ້.
ໃນປັດຈຸບັນ, ໃຫ້ປັບປຸງການເຂົ້າສູ່ລະບົບຂອງພວກເຮົາແລະລົງທະບຽນ Views ເພື່ອບັນຊີໂປຼໄຟລ໌. ຫນ້າທໍາອິດ, ດັດແກ້ຜູ້ໃຊ້ / views.py ແລະສຸມໃສ່ການລົງທະບຽນ View:
# ... ນໍາເຂົ້າ
Profile.objects.create(user=user) # ໃຫ້ແນ່ໃຈວ່າເພີ່ມສາຍນີ້, ເພື່ອສ້າງໂປຼໄຟລ໌ສໍາລັບຜູ້ໃຊ້
ນີ້ພຽງແຕ່ສ້າງໂປຼໄຟລ໌ໃຫ້ຜູ້ໃຊ້, ໂດຍບໍ່ຕ້ອງຕື່ມຂໍ້ມູນໃສ່ຂໍ້ມູນໃດໆ. ໃນປັດຈຸບັນ, ພວກເຮົາຕ້ອງການໃຫ້ແນ່ໃຈວ່າບັນຊີຜູ້ໃຊ້ບໍ່ສາມາດເຂົ້າສູ່ລະບົບເກີນໄປ, ຫຼືຢ່າງຫນ້ອຍລະຫັດຜ່ານບໍ່ສາມາດທົດລອງໄດ້ເລື້ອຍໆ, ສະນັ້ນໃຫ້ທ່ານປັບປຸງເບິ່ງເຂົ້າສູ່ລະບົບເລື້ອຍໆ.
# ... ນໍາເຂົ້າ
if user and user.profile.can_login < timezone.now(): # ໃຫ້ສັງເກດວ່າຕອນນີ້ພວກເຮົາກວດເບິ່ງວ່າຜູ້ໃຊ້ສາມາດເຂົ້າສູ່ລະບົບໄດ້ບໍ
else: # ຖ້າການເຂົ້າສູ່ລະບົບບໍ່ປະສົບຜົນສໍາເລັດ,
user = User.objects.filter(username=username).first() # ນີ້ແມ່ນພາກສ່ວນທີ່ພວກເຮົາປັບປຸງໂປຼໄຟລ໌ຂອງຜູ້ໃຊ້
profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # ສະນັ້ນພວກເຂົາບໍ່ສາມາດເຂົ້າສູ່ລະບົບອີກສອງສາມວິນາທີ
ນີ້ແມ່ນພື້ນຖານພື້ນຖານຂອງຄວາມປອດໄພ. ໃຫ້ແນ່ໃຈວ່າເວັບໄຊທ໌້ບໍ່ມີຄວາມສ່ຽງຕໍ່ຜູ້ໃດຜູ້ຫນຶ່ງທີ່ພະຍາຍາມປະສົມປະສານລະຫັດຜ່ານທີ່ເປັນໄປໄດ້, ຫຼືແມ້ກະທັ້ງຈໍານວນຫນຶ່ງໃນເວລາດຽວກັນ. ສິ່ງນີ້ຈະບໍ່ຜິດຫວັງກັບຜູ້ໃຊ້ທໍາມະດາທີ່ຮູ້ລະຫັດຜ່ານຂອງພວກເຂົາແລະພຽງແຕ່ເຂົ້າສູ່ລະບົບໃນອຸປະກອນຈໍານວນຫນຶ່ງ, ແຕ່ມັນຈະຮັກສາຫຸ່ນຍົນທີ່ມີຫລາຍຢ່າງອອກຈາກແອັບ. ໃຫ້ສັງເກດວ່າພວກເຮົາໄດ້ເພີ່ມຄໍາຖະແຫຼງການຖ້າມີຕົວແປ, can_login, ມັນຄວນຈະເປັນເວລາໃນອະດີດ, ແລະປັບປຸງມັນດ້ວຍການເຂົ້າສູ່ລະບົບທີ່ບໍ່ປະສົບຜົນສໍາເລັດໂດຍໃຊ້ຊື່ຜູ້ໃຊ້ດຽວກັນ. ວິທີນີ້, ຜູ້ໃຊ້ທີ່ເປັນອັນຕະລາຍຈະບໍ່ສາມາດຄາດເດົາລະຫັດຜ່ານໄດ້ທຸກບ່ອນທີ່ໃກ້ຈະໄວເທົ່າທີ່ຈະໄວໄດ້. ຈໍານວນວິນາທີໃນວັນທີ .timedelta () ສາມາດປັບປຸງໄດ້ເຊັ່ນກັນ, ແລະເວບໄຊທ໌ຈະມີຄວາມທົນທານຫຼາຍຂື້ນເລັກນ້ອຍຫນ້ອຍກວ່າວິນາທີ. ຂ້ອຍຂໍແນະນໍາໃຫ້ 15 ເລີ່ມຕົ້ນ.
ຈືຂໍ້ມູນການ, ພວກເຮົາໄດ້ສ້າງສະຄິບສໍາຮອງເພື່ອຊ່ວຍປະຢັດວຽກຂອງພວກເຮົາ, ສະນັ້ນໃຫ້ພວກເຮົາກັບຄືນໄປບ່ອນທີ່ພວກເຮົາມີໄວ້ໃຫ້ແນ່ໃຈວ່າພວກເຮົາໄດ້ຮັບຄວາມລອດ. ດໍາເນີນການຄໍາສັ່ງ:
sudo backup
ອີກເທື່ອຫນຶ່ງ, ນີ້ຈະຊ່ວຍປະຢັດວຽກຂອງທ່ານມາເຖິງຕອນນັ້ນ. ຂ້າພະເຈົ້າຂໍແນະນໍາໃຫ້ດໍາເນີນການສໍາຮອງຂໍ້ມູນເລື້ອຍໆເພື່ອບັນທຶກວຽກຂອງທ່ານ, ແລະທ່ານກໍ່ອາດຈະຕ້ອງການທີ່ຈະດໍາເນີນວຽກສໍາຮອງໂດຍອັດຕະໂນມັດ. ທ່ານສາມາດເຮັດສິ່ງນີ້ໄດ້ໂດຍໃຊ້ເຄື່ອງປະດັບຂອງ Unix ທີ່ເອີ້ນວ່າ cron. ເພື່ອກະຕຸ້ນຜົນປະໂຫຍດນີ້, ດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ແລະໃສ່ລະຫັດຜ່ານຂອງທ່ານ:
sudo crontab -e
ຖ້າທ່ານຍັງບໍ່ໄດ້ເລືອກຕົວເລືອກ 1 ສໍາລັບ Nano, ບັນນາທິການຕົວຫນັງສືທ່ານຄວນຈະຄຸ້ນເຄີຍກັບ, ແລະເລື່ອນໄປທາງລຸ່ມຂອງເອກະສານໂດຍໃຊ້ປຸ່ມລູກສອນ. ຕື່ມສາຍຕໍ່ໄປນີ້:
0 * * * * sudo backup
CRON ໃຊ້ຮູບແບບນາທີ, ຊົ່ວໂມງ, ມື້ຂອງເດືອນ, ເດືອນ, ມື້ຂອງອາທິດ, ບ່ອນທີ່ * ຫຼືເລກທີ່ເປັນຕົວແທນໃນເວລາທີ່ຈະດໍາເນີນການຄໍາສັ່ງ. ໃຊ້ 0 ສໍາລັບນາທີແລະ * ສໍາລັບສ່ວນທີ່ເຫຼືອຂອງຕົວເລືອກຕ່າງໆ, ພວກເຮົາສາມາດດໍາເນີນການຄໍາສັ່ງໃນນາທີທໍາອິດຂອງທຸກໆຊົ່ວໂມງໃນເວລາເລີ່ມຕົ້ນ. ສິ່ງນີ້ຊ່ວຍໃຫ້ພວກເຮົາສໍາຮອງຂໍ້ມູນອັດຕະໂນມັດ. ທຸກໆວຽກຂອງ Cron ເມື່ອຖືກປະຕິບັດກັບ SUDO ແລ່ນເປັນຮາກ, ສະນັ້ນພວກເຮົາຈະບໍ່ຈໍາເປັນຕ້ອງພິມລະຫັດຜ່ານທຸກໆຊົ່ວໂມງ.
ເພື່ອເຮັດໃຫ້ມັນງ່າຍຕໍ່ການສໍາຮອງລະຫັດຂອງພວກເຮົາໂດຍບໍ່ໃຊ້ລະຫັດຜ່ານ, ໃຫ້ປິດລະຫັດຜ່ານສໍາລັບຄໍາສັ່ງສໍາຮອງຂອງພວກເຮົາ. ພວກເຮົາຈະເຮັດສິ່ງນີ້ໂດຍການປະຕິບັດຄໍາສັ່ງຕໍ່ໄປນີ້ແລະໃສ່ລະຫັດຜ່ານ:
sudo visudo
ໃນປັດຈຸບັນ, ໃຫ້ເລື່ອນໄປທາງລຸ່ມຂອງເອກະສານແລະເພີ່ມແຖວອື່ນ:
ALL ALL=NOPASSWD: /bin/backup
ສິ່ງນີ້ຊ່ວຍໃຫ້ພວກເຮົາດໍາເນີນການຄໍາສັ່ງ "Backup" ເປັນຜູ້ໃຊ້ໃດກໍ່ຕາມ, ໂດຍບໍ່ມີລະຫັດຜ່ານ. ຮູບແບບສໍາລັບສິ່ງນີ້ແມ່ນງ່າຍດາຍ, ພຽງແຕ່ກົດປຸ່ມ "ທັງຫມົດ = NPAswd:
ດຽວນີ້, ໃຫ້ເລີ່ມຕົ້ນເຮັດວຽກກັບ Email. ອີເມວມີຄວາມສໍາຄັນແທ້ໆສໍາລັບເວບໄຊທ໌, ເພາະວ່າມັນເປັນວິທີທີ່ຈະຮັກສາເວບໄຊທ໌ທີ່ປອດໄພກວ່າ, ໃຫ້ພິສູດຜູ້ໃຊ້ທີ່ແທ້ຈິງ, ແລະແມ່ນແຕ່ຜະລິດຕະພັນຫຼືການບໍລິການໃຫ້ແກ່ລູກຄ້າ. ປະຊາຊົນຈໍານວນຫຼາຍທີ່ມັກກວດສອບອີເມວຂອງພວກເຂົາທຸກໆວັນ, ແລະໄດ້ຮັບອີເມວການຕະຫຼາດທັງຫມົດໃນເວລາທີ່ທ່ານຍິນດີທີ່ຈະເລືອກເອົາສິ່ງທີ່ດີທີ່ສຸດສໍາລັບທ່ານ.
ຫນ້າທໍາອິດ, ທ່ານສາມາດຈ່າຍຄ່າບໍລິການອີເມວທີ່ຈະຊ່ວຍໃຫ້ທ່ານສາມາດສົ່ງອີເມວຈາກໂດເມນຂອງທ່ານແລະຕ້ອງການລະຫັດຫນ້ອຍທີ່ສຸດ. ມີຫລາຍບໍລິການທີ່ສະເຫນີສິ່ງນີ້, ເຊັ່ນວ່າ Google Workspace, Sendinblue, Mailgun, ແລະອື່ນໆ.
ຖ້າບໍ່ດັ່ງນັ້ນ, ທ່ານໄດ້ຮັບການກໍ່ສ້າງບໍລິການອີເມວຂອງທ່ານເອງພາຍໃນ server ຂອງທ່ານຈາກ scratch. ຂ້າພະເຈົ້າຂໍແນະນໍາຕົວເລືອກນີ້, ເຖິງແມ່ນວ່າມັນຈະເປັນລະຫັດເພີ່ມເຕີມແລະອາດຈະຕ້ອງມີການໂຮດຕິ້ງພິເສດ. ທ່ານຈະບໍ່ສາມາດເລີ່ມຕົ້ນເຄື່ອງແມ່ຂ່າຍເມລຈາກຄອມພິວເຕີຂອງທ່ານສ່ວນຫຼາຍ, ສະນັ້ນໃຫ້ໄປກວດເບິ່ງອີເມວກ່ອນທີ່ພວກເຮົາຈະເລີ່ມຂອງເຄື່ອງແມ່ຂ່າຍຂອງພວກເຮົາພາຍໃນ.
ຫນ້າທໍາອິດ, ດັດແກ້ Settings.py ກັບຄໍາສັ່ງຕໍ່ໄປນີ້:
nano app/settings.py
ບ່ອນທີ່ app ແມ່ນຊື່ຂອງແອັບ y ທີ່ທ່ານສ້າງຂື້ນກັບ Startapp.
ຕື່ມສາຍຕໍ່ໄປນີ້:
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)
ໃຫ້ແນ່ໃຈວ່າຈະປ່ຽນສິ່ງເຫລົ່ານີ້ເມື່ອທ່ານພ້ອມທີ່ຈະໃຊ້ໂປແກຼມຂອງທ່ານ, ພວກເຮົາຈະກວດສອບສິ່ງນີ້ຕໍ່ມາ. ການຕັ້ງຄ່າອີເມວ_Addressຄວນຈະເປັນອີເມວທີ່ທ່ານຕ້ອງການສົ່ງຈາກ, ແລະລະຫັດຜ່ານ (email_host_pass_password) ຄວນຕັ້ງລະຫັດຜ່ານທີ່ທ່ານສ້າງໃຫ້ກັບ server. ຂ້າພະເຈົ້າໂຫລດລະຫັດຜ່ານຈາກເອກະສານ config ເພື່ອຮັກສາລະຫັດໂດຍໃຊ້ຕາມເຫດຜົນດັ່ງຕໍ່ໄປນີ້, ຂ້າງເທິງສາຍເຫຼົ່ານີ້ຢູ່ໃນ settings.py:
import os
import json
with open('/etc/config.json') as config_file:
config = json.load(config_file)
ຫຼັງຈາກນັ້ນ, ຂ້າພະເຈົ້າໄດ້ຕັ້ງຄ່າ JSON ທີ່ມີ config ໃນ /etc/config.jong.json ໃຊ້ nano ດັ່ງຕໍ່ໄປນີ້.
ການດັດແກ້ເອກະສານ:
sudo nano /etc/config.json
ຕື່ມສາຍຕໍ່ໄປນີ້:
{
"EMAIL_HOST_PASSWORD": "<some password here>"
}
ພວກເຮົາຈະສືບຕໍ່ແກ້ໄຂເອກະສານ config ແລະເພີ່ມລະຫັດລັບແລະຄີທັງຫມົດທີ່ພວກເຮົາຈະໃຊ້ໃນແອັບ .. ສໍາລັບດຽວນີ້, ໃຫ້ກວດສອບຢ່າງໄວວາກ່ຽວກັບວິທີການສົ່ງອີເມວໂດຍໃຊ້ Python. ກ່ອນອື່ນຫມົດ, ໃຫ້ສ້າງແມ່ແບບສໍາລັບອີເມວຢັ້ງຢືນພວກເຮົາສາມາດສົ່ງໃຫ້ຜູ້ຊົມໃຊ້ຂອງພວກເຮົາ, ແລະເອົາໃສ່ໃນລາຍຊື່ຜູ້ໃຊ້ Tyter Directory. ແມ່ແບບນີ້ຈະຖືກຂຽນໄວ້ໃນ HTML.
nano users/templates/users/verification_email.html
ອີເມວນີ້ແມ່ນງ່າຍດາຍພໍສົມຄວນ. ມັນຕ້ອງໃຊ້ສະພາບການຂອງຜູ້ໃຊ້, URL ພື້ນຖານສໍາລັບເວັບໄຊ, ແລະ ID ຜູ້ໃຊ້ແລະ token ເຊິ່ງໃຊ້ໃນການກວດສອບອີເມວຂອງຜູ້ໃຊ້. ໃຫ້ແນ່ໃຈວ່າຈະກໍານົດ URL ພື້ນຖານໃນ Settings.py ກ່ອນທີ່ພວກເຮົາຈະຂຽນລະຫັດ Python ເພື່ອໃຫ້ແມ່ແບບ. ສືບຕໍ່ເດີນຫນ້າແລະເພີ່ມສາຍຕໍ່ໄປນີ້ໃຫ້ກັບ app / settings.py, ໃກ້ເລີ່ມຕົ້ນ.
SITE_NAME = 'Django App'
PROTOCOL = 'https'
DOMAIN = 'example.com'
BASE_URL = PROTOCOL + '://' + DOMAIN
ໃນທີ່ສຸດ, ເມື່ອເວັບໄຊທ໌້ຂອງທ່ານກຽມພ້ອມສໍາລັບອິນເຕີເນັດແລະທ່ານຕ້ອງການກໍານົດໂດເມນຂອງທ່ານເປັນຊື່ໂດເມນທີ່ທ່ານຊື້ເພື່ອເປັນຕົວແທນຂອງເວັບໄຊທ໌້ທີ່ທ່ານຊື້ເພື່ອເປັນຕົວແທນຂອງເວັບໄຊທ໌້. ນີ້ແມ່ນຊື່ທີ່ທ່ານຈະພິມໃນ NAVBAR ເພື່ອເຂົ້າໃຊ້ເວັບໄຊທ໌້ຂອງທ່ານ. ສໍາລັບດຽວນີ້, ທ່ານສາມາດປ່ອຍໃຫ້ໂດເມນຫວ່າງຫລືໃຊ້ສະຖານທີ່. ນອກນັ້ນທ່ານຍັງຈະຕ້ອງການປ່ຽນເວັບໄຊທ໌ _ ຊື່ກັບຊື່ທີ່ທ່ານຕ້ອງການໃຫ້ເວັບໄຊທ໌້ຂອງທ່ານ, ການເລືອກຂອງທ່ານ.
ກ່ອນທີ່ພວກເຮົາຈະສົ່ງອີເມວ, ໃຫ້ສ້າງເຄື່ອງປັ່ນປ່ວນ Token ດັ່ງນັ້ນພວກເຮົາສາມາດມີ token ເປີດໃຊ້ບັນຊີທີ່ບໍ່ເຄີຍລົງທືນ. ພວກເຮົາສາມາດເຮັດສິ່ງນີ້ໄດ້ໂດຍການກໍ່ສ້າງແລະນໍາເຂົ້າເຄື່ອງຫມາຍການເຄື່ອນໄຫວບັນຊີທີ່ເບິ່ງຄືວ່າດັ່ງຕໍ່ໄປນີ້. ແກ້ໄຂເອກະສານ:
nano users/tokens.py
ຕື່ມລະຫັດຕໍ່ໄປນີ້:
from django.contrib.auth.tokens import PasswordResetTokenGenerator
import six
class TokenGenerator(PasswordResetTokenGenerator):
def _make_hash_value(self, user, timestamp):
return (
six.text_type(user.pk) + six.text_type(timestamp)
)
account_activation_token = TokenGenerator()
unsubscribe_token = TokenGenerator()
ເຄື່ອງຈັກຜະລິດໄຟຟ້າຂັ້ນພື້ນຖານນີ້ພວກເຮົາສາມາດສົ່ງຜູ້ໃຊ້ໃນ URL ໃນ URL ແລະຜູ້ໃຊ້ສາມາດໃຊ້ເພື່ອກວດສອບອີເມວຂອງພວກເຂົາແລະເປີດໃຊ້ບັນຊີຂອງພວກເຂົາ.
ຕໍ່ໄປ, ໃຫ້ເຮົາມາເບິ່ງວິທີການສົ່ງອີເມວ. ການໃຊ້ nano, ແກ້ໄຂຜູ້ໃຊ້ / email.py.
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)
ນີ້ແມ່ນງ່າຍດາຍພໍສົມຄວນ. ພວກເຮົານໍາເຂົ້າຫນ້າທີ່ທີ່ພວກເຮົາຕ້ອງສົ່ງອີເມວ, ໃຫ້ສົ່ງອີເມວກັບແມ່ແບບ, ແລະຫຼັງຈາກນັ້ນພວກເຮົາກໍານົດອີເມວໂດຍຊື່ແມ່ແບບແລະສົ່ງໃຫ້ຜູ້ໃຊ້ໃຊ້ຫນ້າທີ່ໃຊ້ງານ. ທ່ານຈະສັງເກດເຫັນພວກເຮົາບໍ່ໄດ້ກໍານົດການເຮັດວຽກທີ່ຈະສົ່ງຈົດຫມາຍ, ສົ່ງ _html_Email, ແຕ່ໃຫ້ຂຽນຂໍ້ມູນຂ້າງລຸ່ມນີ້ໃຫ້ຜູ້ໃຊ້ / Email.
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. ສຸດທ້າຍ, ພວກເຮົາກວດເບິ່ງວ່າອີເມວຖືກສົ່ງ, ແລະຖ້າມັນບໍ່ໄດ້, ພວກເຮົາຫມາຍໃສ່ໃນໂປຼໄຟລ໌ຂອງຜູ້ໃຊ້ທີ່ອີເມວຂອງພວກເຂົາແມ່ນບໍ່ຖືກຕ້ອງ.
ໃຫ້ພວກເຮົາຍ້າຍກັບຄືນສູ່ແບບຂອງຜູ້ໃຊ້ດັ່ງນັ້ນພວກເຮົາສາມາດເຮັດວຽກທັງຫມົດນີ້ໄດ້. ພວກເຮົາຈໍາເປັນຕ້ອງກໍານົດການເຮັດວຽກເພື່ອສ້າງລິ້ງເພື່ອຍົກເລີກການສະຫມັກ, ແລະກໍານົດສະຫນາມ Boolean ເພື່ອຫມາຍວ່າອີເມວຂອງຜູ້ໃຊ້ບໍ່ຖືກຕ້ອງ.
ຫນ້າທໍາອິດ, ເພີ່ມການນໍາເຂົ້າຕໍ່ໄປນີ້ເຂົ້າໃນດ້ານເທິງຂອງຜູ້ໃຊ້ / moden.py
nano users/models.py
# ...
ຕໍ່ໄປ, ໃຫ້ເຮົາເພີ່ມຫນ້າທີ່ໃຫ້ກັບຮູບແບບຂອງຜູ້ໃຊ້ເພື່ອເຮັດໃຫ້ token ແລະກວດເບິ່ງອີເມວ, ເຊັ່ນດຽວກັນກັບຜູ້ໃຊ້ທີ່ໄດ້ຮັບການຮັບເອົາຈົດຫມາຍຂອງພວກເຂົາ. ໃນຜູ້ໃຊ້ / MODES.PY ອີກເທື່ອຫນຶ່ງ, ຕື່ມລະຫັດຕໍ່ໄປນີ້ໄປທີ່ຈຸດສຸດທ້າຍຂອງຕົວແບບ (ລະຫັດ Indented)
# ...
TimestampSigner().unsign(key, max_age=60 * 60 * 24 * 30) # ຖືກຕ້ອງເປັນເວລາ 30 ວັນ
ນີ້ແມ່ນງ່າຍດາຍທີ່ສຸດ, ພວກເຮົາໃຊ້ເຄື່ອງມື cryptamps, ເຊິ່ງເປັນ token ເຊິ່ງຈະຫມົດອາຍຸພາຍຫຼັງແລະພວກເຮົາຍັງໃຊ້ຟັງຊັນອື່ນເພື່ອກວດເບິ່ງວ່າມັນຖືກຕ້ອງແລ້ວ. ພວກເຮົາໃຊ້ tokens ເຫຼົ່ານີ້ສອງຄັ້ງ, ຄັ້ງດຽວເພື່ອກວດສອບອີເມວ, ແລະຄັ້ງດຽວສໍາລັບລິ້ງທີ່ບໍ່ສະຫມັກ.
ດຽວນີ້ພວກເຮົາມີສິ່ງເຫລົ່ານີ້, ວຽກສຸດທ້າຍທີ່ພວກເຮົາຈະຕ້ອງເຮັດແມ່ນຢູ່ໃນຄວາມຄິດເຫັນ. ພາຍໃນຜູ້ໃຊ້ / views.py, ໃຫ້ຂອງເພີ່ມ views ເພື່ອກວດສອບທີ່ຢູ່ອີເມວ, ແລະເພື່ອສະຫມັກສະມາຊິກ.
nano users/views.py
ຫນ້າທໍາອິດ, ເພີ່ມການນໍາເຂົ້າຕໍ່ໄປນີ້. ຂ້າພະເຈົ້າໄດ້ໂຍນໃນສອງສາມພິເສດເພື່ອພວກເຮົາຈະບໍ່ຈໍາເປັນຕ້ອງນໍາເຂົ້າລາຍການເພີ່ມເຕີມອີກຄັ້ງໃນພາຍຫຼັງ.
from .email import send_verification_email # ໃຫ້ແນ່ໃຈວ່າການນໍາເຂົ້າຫນ້າທີ່ສົ່ງອີເມວການຢັ້ງຢືນ
ທ່ານອາດຈະມີການນໍາເຂົ້າບາງຢ່າງນີ້, ແຕ່ມັນກໍ່ບໍ່ໄດ້ເຈັບປວດທີ່ຈະເຮັດຊ້ໍາອີກ. ທ່ານກໍາລັງຕ້ອງການນໍາເຂົ້າຫນ້າທີ່ການສົ່ງອີເມວຢັ້ງຢືນ, ພ້ອມທັງບັນຊີ recount_activation_token ຈາກຜູ້ໃຊ້ .tokens, ໃນບັນດາຜູ້ນໍາໃຊ້ອື່ນໆ.
ດຽວນີ້, ຢູ່ທາງລຸ່ມຂອງແຟ້ມ, ຕື່ມລະຫັດຕໍ່ໄປນີ້:
# ຍົກຍ້ອງພວກມັນ
# ຖ້າບໍ່ດັ່ງນັ້ນການປ່ຽນເສັ້ນທາງເຂົ້າສູ່ລະບົບເຂົ້າສູ່ລະບົບ
# ການສົ່ງທີ່ສົ່ງ (ຂໍ, ຜູ້ໃຊ້)
ນີ້ແມ່ນລະຫັດຫຼາຍ. ໃຫ້ເຮົາແຍກມັນລົງ. ຫນ້າທີ່ທໍາອິດ, ສະອາດແລະງ່າຍດາຍ, ຍົກເລີກຜູ້ໃຊ້ຈາກລາຍຊື່ທາງໄປສະນີ. ຟັງຊັນທີສອງກະຕຸ້ນອີເມວຂອງພວກເຂົາ, ແລະທ່ານຈະສັງເກດເຫັນຂ້ອຍໄດ້ເພີ່ມການເຮັດວຽກທີ່ໃຫ້ຄໍາເຫັນ, ສົ່ງທີ່ສົ່ງ. ທ່ານຍິນດີທີ່ຈະໃຊ້ແມ່ແບບອີເມວແລະຄໍານິຍາມທີ່ເຮັດວຽກເພື່ອສົ່ງອີເມວຍິນດີຕ້ອນຮັບ, ຂ້ອຍຍັງບໍ່ທັນມີເທື່ອ. ຟັງຊັນສຸດທ້າຍທີ່ຂ້ອຍໂຍນລົງແມ່ນສິ່ງທີ່ສໍາຄັນ, ເພາະວ່າອີເມວເປີດໃຊ້ງານຫມົດອາຍຸ. ເພາະສະນັ້ນ, ພວກເຮົາຈໍາເປັນຕ້ອງສົ່ງຕໍ່ອີເມວເປີດໃຊ້ບາງຢ່າງບາງເວລາ. ພວກເຮົາສາມາດໃຊ້ແບບຟອມພື້ນຖານສໍາລັບສິ່ງນີ້, ແລະໂທຫາຫນ້າທີ່ເພື່ອສົ່ງອີເມວຢັ້ງຢືນ. ກ່ອນທີ່ພວກເຮົາຈະເຮັດສິ່ງນີ້, ໃຫ້ໃຫ້ແນ່ໃຈວ່າມັນໄດ້ຮັບການສົ່ງໄປກ່ອນ, ໂດຍການເພີ່ມການເຮັດວຽກທີ່ຈະເບິ່ງເພື່ອລົງທະບຽນ. ຕື່ມສາຍນີ້ກ່ອນທີ່ຈະປ່ຽນເສັ້ນທາງໃນການລົງທະບຽນ View, Def ລົງທະບຽນ, ໃນຜູ້ໃຊ້ / views.py.
nano users/views.py
# ... (ຫຼັງຈາກ) ການລົງທະບຽນ Def (ຮ້ອງຂໍ):
# ... (ກ່ອນ) ການປ່ຽນເສັ້ນທາງ (
ທ່ານບໍ່ຈໍາເປັນຕ້ອງເພີ່ມສາຍທໍາອິດແລະສຸດທ້າຍໃນຊ່ອງຫວ່າງນັ້ນ, ພຽງແຕ່ໃຫ້ແນ່ໃຈວ່າການລົງທະບຽນຈະສົ່ງອີເມວຢັ້ງຢືນໃຫ້ຜູ້ໃຊ້. ມັນຄວນຈະເປັນແບບນີ້:
# ... ນໍາເຂົ້າ
send_verification_email(user) # ໃຫ້ແນ່ໃຈວ່າຈະເພີ່ມສາຍນີ້!
ດຽວນີ້, ພວກເຮົາຈະຕ້ອງເພີ່ມແບບຟອມເພື່ອສົ່ງອີເມວເປີດໃຊ້ຄືນໃຫມ່. ໃນຜູ້ໃຊ້ / ແບບຟອມ.
# ... (ການນໍາເຂົ້າ)
ພວກເຮົາຍັງຈະຕ້ອງການແມ່ແບບທີ່ສອດຄ້ອງກັນກັບແບບຟອມການເປີດໃຊ້ອີເມວ. ຂໍໃຫ້ຕື່ມແບບນີ້ເຂົ້າໃນ. ແກ້ໄຂເອກະສານ:
nano users/templates/users/resend_activation.html
ຕໍ່ໄປ, ຕື່ມລະຫັດຕໍ່ໄປນີ້ໃສ່ແຟ້ມ.
Whew, ນັ້ນແມ່ນຫຼາຍ! ໃນປັດຈຸບັນ, ໃນເວລາທີ່ພວກເຮົານໍາໃຊ້ລະຫັດໄປທີ່ server ຂອງພວກເຮົາ, ພວກເຮົາຈະສາມາດສົ່ງອີເມວ HTML ແລະກະຕຸ້ນບັນຊີຜູ້ໃຊ້ດ້ວຍການກົດອີເມວ. ພວກເຮົາຍັງອາດຈະຕ້ອງການສົ່ງອີເມວຍິນດີຕ້ອນຮັບແບບງ່າຍໆ, ສະນັ້ນໃຫ້ເບິ່ງວິທີການເຮັດແບບນັ້ນ. ກັບມາໃນຜູ້ໃຊ້ / EMERIGH.MY, ເພີ່ມລະຫັດຕໍ່ໄປນີ້:
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 Tags, ເພາະວ່າພວກເຮົາເພີ່ມສິ່ງເຫຼົ່ານີ້ໃນເວລາທີ່ພວກເຮົາເພີ່ມ HTML ສະຫມັກເງິນເຊື່ອມຕໍ່ HTML. ສິ່ງເຫຼົ່ານີ້ແມ່ນສິ່ງທີ່ສໍາຄັນ, ແຕ່ພວກເຮົາບໍ່ຕ້ອງການກໍານົດພວກເຂົາສອງຄັ້ງ.
ສະນັ້ນສິ່ງຕໍ່ໄປແມ່ນຫຍັງ? ພວກເຮົາໄດ້ມາເປັນເວລາດົນນານແລ້ວ. ຈິງໆ, ພວກເຮົາຄວນກຽມພ້ອມທີ່ຈະນໍາໃຊ້ເວັບໄຊທ໌້ໃຫ້ກັບເຊີບເວີ. ພວກເຮົາສາມາດເພີ່ມການຕົກແຕ່ງ @login_required ແລະເຮັດໃຫ້ຜູ້ໃຊ້ຂອງພວກເຮົາປອດໄພ, ສົ່ງອີເມວທີ່ສອດຄ່ອງ, ແລະຂໍ້ມູນທີ່ສອດຄ່ອງກັນ, ເຊິ່ງເປັນເວັບໄຊທ໌້ທີ່ຕ້ອງເຮັດເພື່ອໃຫ້ມີຄວາມກ່ຽວຂ້ອງ. ພວກເຮົາຈະເພີ່ມຄຸນລັກສະນະທີ່ມີປະໂຫຍດຕື່ມອີກ, ແລະຫຼັງຈາກນັ້ນກໍ່ສ້າງພື້ນຖານໃນການໃຊ້ລະຫັດຂອງພວກເຮົາໄປທີ່ server server, ຕັ້ງຄ່າໂດເມນ, ແລະເຄື່ອງກອງເພື່ອເຮັດໃຫ້ເວັບໄຊທ໌ຂອງພວກເຮົາປອດໄພແລະເຫມາະສົມ.
ພວກເຮົາຈະຕ້ອງການການຕັ້ງຄ່າລະຫັດຜ່ານຂອງລະຫັດຜ່ານ, ສະນັ້ນໃຫ້ທ່ານເພີ່ມວ່າໃນໄວ. ການກໍ່ສ້າງຂອງ Django ໃນມຸມມອງການຕັ້ງຄ່າລະຫັດຜ່ານແມ່ນແຕກໃນບາງຫນ້າທີ່, ແຕ່ພວກເຮົາຈະເບິ່ງວິທີຂຽນມຸມມອງຂອງພວກເຮົາ, ແບບອີເມວ, ແບບຟອມ, ແລະຮູບແບບ URL. ນີ້ແມ່ນສິ່ງທີ່ມຸມມອງເບິ່ງ, ໃນຜູ້ໃຊ້ / views.py
# ... ນໍາເຂົ້າ
ແບບຟອມນີ້ຖືກສ້າງຂຶ້ນໃນ DJAGO, ແຕ່ພວກເຮົາຈະຕ້ອງການແມ່ແບບເພື່ອຢືນຢັນລະຫັດຜ່ານຕັ້ງຄ່າ, ຜູ້ໃຊ້ / ຜູ້ໃຊ້ / password_resetml.html.html
ພວກເຮົາຍັງມີແມ່ແບບເພື່ອສົ່ງອີເມວການຕັ້ງຄ່າລະຫັດຜ່ານ, ດ້ວຍແບບຟອມງ່າຍໆ, ໃນຜູ້ໃຊ້ / ແມ່ແບບ / passwordset.html
ແມ່ແບບສໍາລັບອີເມວຕົວຂອງມັນເອງແມ່ນງ່າຍດາຍ, ມັນແມ່ນເອກະສານ HTML ພື້ນຖານການເຊື່ອມຕໍ່ເພື່ອຕັ້ງຄ່າລະຫັດຜ່ານໃຫມ່, ໃນແມ່ຍິງ / ຜູ້ໃຊ້ / password_reset_SeMl. Django ຈະຕີລາຄາໂດຍອັດຕະໂນມັດ.
ພວກເຮົາຍັງຕ້ອງການແມ່ແບບສອງຢ່າງອີກ. ທໍາອິດແມ່ນການຢືນຢັນວ່າອີເມວໄດ້ຖືກສົ່ງໄປແລ້ວ. ທັດສະນະສໍາລັບສິ່ງເຫຼົ່ານີ້ແມ່ນຢູ່ໃນ django ແລ້ວ, ສະນັ້ນພວກເຮົາພຽງແຕ່ຕ້ອງການທີ່ຈະແກ້ໄຂພວກມັນໃນ lets.py. ແມ່ແບບນີ້ແມ່ນຕັ້ງຢູ່ຜູ້ໃຊ້ / ແມ່ແບບ / ຜູ້ໃຊ້ / password_reset_doneml
ແລະສຸດທ້າຍ, ເພື່ອຢືນຢັນວ່າການຕັ້ງຄ່າລະຫັດຜ່ານສໍາເລັດ, ຜູ້ໃຊ້ / ແມ່ແບບ / ຜູ້ໃຊ້ / password_reset_Complet.HTML
ດຽວນີ້, ພວກເຮົາຕ້ອງການຮູບແບບ URL ສໍາລັບຄວາມຄິດເຫັນເຫລົ່ານີ້. ໃນຜູ້ໃຊ້ / urls.py, ເພີ່ມຮູບແບບ url ຕໍ່ໄປນີ້:
# ... URL ກ່ອນຫນ້ານີ້ຢູ່ທີ່ນີ້
ສີ່ແມ່ແບບ, ນັ້ນແມ່ນຫຼາຍ! ແຕ່ດຽວນີ້ພວກເຮົາສາມາດໃຫ້ແນ່ໃຈວ່າສາມາດຕັ້ງລະຫັດຜ່ານຂອງຜູ້ໃຊ້ໄດ້ທຸກເວລາທີ່ພວກເຮົາຕ້ອງການ, ທັງຫມົດຈາກເວັບບຼາວເຊີ.
ຂ້ອຍເຂົ້າໃຈວ່ານີ້ແມ່ນລະຫັດຫຼາຍ. ຖ້າມັນເບິ່ງຄືວ່າມັນເລັກນ້ອຍໃນໄລຍະຫົວຂອງທ່ານ, ນັ້ນແມ່ນແລ້ວ. ທ່ານຈະປັບປຸງ, ຄວາມເຂົ້າໃຈຂອງທ່ານຈະດີຂື້ນ, ແລະທ່ານຈະກາຍເປັນທີ່ມີຄວາມສາມາດກັບລະຫັດໃນໄວໆນີ້. ຖ້າທ່ານສູນເສຍໄປຫມົດແລ້ວ, ຂ້າພະເຈົ້າຂໍແນະນໍາໃຫ້ກັບມາຊອບແວນີ້ຕໍ່ມາຫລັງຈາກເຮັດວຽກໃນການຮຽນຮູ້ທີ່ຕົນເອງຮຽນຮູ້ໃນລະຫັດຜ່ານທາງອິນເຕີເນັດ. ສິ່ງເຫຼົ່ານີ້ມັກຈະບໍ່ໄດ້ເລີ່ມຕົ້ນ, ແລະຈະນໍາພາທ່ານຜ່ານທຸກຢ່າງທີ່ທ່ານຕ້ອງປະສົບຜົນສໍາເລັດເມື່ອທ່ານກັບມາໂຄງການນີ້. ຖ້າທ່ານຮູ້ສຶກຄືກັບວ່າທ່ານພ້ອມແລ້ວທີ່ຈະດໍາເນີນການຕໍ່ໄປ, ຕໍ່ໄປ, ພວກເຮົາຈະຈ່າຍຄ່າເຊີຟເວີທີ່ຫ່າງໄກສອກຫຼີກໂດຍໃຊ້ Bash ໂດຍໃຊ້ໂປແກຼມໃຫມ່ໂດຍໃຊ້ຄໍາສັ່ງງ່າຍໆ.
ສິ່ງສຸດທ້າຍທີ່ພວກເຮົາຕ້ອງເຮັດກ່ອນທີ່ຈະໃຊ້ກັບເຄື່ອງແມ່ຂ່າຍຫ່າງໄກສອກຫຼີກແມ່ນເຮັດໃຫ້ເວັບໄຊທ໌້ຂອງພວກເຮົາມີຄວາມປອດໄພຫຼາຍ. ທ່ານຈະສັງເກດເຫັນວ່າການເຂົ້າສູ່ລະບົບພຽງແຕ່ໃຊ້ເວລາພຽງແຕ່ຊື່ຜູ້ໃຊ້ແລະລະຫັດຜ່ານ, ແລະບໍ່ມີການກວດສອບຄວາມຖືກຕ້ອງທີ່ຫຼາກຫຼາຍຫຼືລະຫັດດຽວ. ນີ້ແມ່ນການແກ້ໄຂທີ່ງ່າຍ, ແລະມີລະຫັດດຽວກັນ, ພວກເຮົາສາມາດເຮັດໃຫ້ເວັບໄຊທ໌ຂອງພວກເຮົາສົ່ງຂໍ້ຄວາມແລະແມ່ນແຕ່ຕອບສະຫນອງຕໍ່ຂໍ້ຄວາມທີ່ຖືກສົ່ງໄປທີ່ server. ເພື່ອເລີ່ມຕົ້ນ, ພວກເຮົາຈະກັບເຂົ້າໄປໃນຮູບແບບຂອງຜູ້ໃຊ້ແລະເພີ່ມລາຍເຊັນ Timestamp ເຊິ່ງຈະເປັນຕົວແທນໃຫ້ເຂົ້າສູ່ລະບົບແຕ່ລະຄັ້ງ. ພວກເຮົາຍັງຈະເພີ່ມຕົວລະບຸຕົວຕົນທີ່ເປັນເອກະລັກສະເພາະໃຫ້ກັບຮູບແບບຜູ້ໃຊ້ທີ່ຈະໃຊ້ເພື່ອເພີ່ມຄວາມປອດໄພພິເສດເຂົ້າໃນການເຂົ້າສູ່ລະບົບຂອງພວກເຮົາ. ການດັດແກ້ຕົວແບບຂອງຜູ້ໃຊ້, ຜູ້ໃຊ້ / Model.py, ເພີ່ມລະຫັດຕໍ່ໄປນີ້:
# ໃຫ້ແນ່ໃຈວ່າການນໍາເຂົ້າ UUID, TIMESAM S ເຊັນແລະ URL ໂດຍທົ່ວໄປ (ປີ້ນກັບກັນ)
# ຕື່ມລະຫັດນີ້ຢູ່ທີ່ນີ້
# ແລະເພີ່ມຟັງຊັນນີ້
TimestampSigner().unsign(key, max_age=60 * settings.AUTH_VALID_MINUTES) # ຖືກຕ້ອງສໍາລັບ 3 ນາທີ
ຮັບປະກັນໃຫ້ແນ່ໃຈວ່າຜູ້ໃຊ້ / Model.py ມີລັກສະນະແບບນີ້, ນອກເຫນືອຈາກຄໍາເຫັນ (ລະຫັດຢູ່ໃນສາຍທີ່ມີ #). ທໍາລາຍສິ່ງນີ້ລົງ, ມັນງ່າຍດາຍ. ພວກເຮົາມີການນໍາເຂົ້າບໍ່ພໍເທົ່າໃດ, ຜູ້ທີ່ກໍານົດເວລາທີ່ສາມາດສ້າງລະຫັດ cryptographic ເຊິ່ງສາມາດສ້າງລະຫັດທີ່ປອດໄພແລະກວດສອບໄດ້, ພຽງແຕ່ໃຊ້ພຽງແຕ່ຄັ້ງດຽວ, ແລະບໍ່ມີອາຍຸພຽງແຕ່ເປັນຈໍານວນວິນາທີ. ພວກເຮົາຍັງໃຊ້ UUID, ເຊິ່ງເປັນຕົວລະບຸຕົວຕົນທີ່ເປັນເອກະລັກທີ່ກໍານົດຜູ້ໃຊ້ຂອງພວກເຮົາໃນການເຊັນສັນຍາຂອງ token, ແລະໃນ URL ທີ່ຖືກສົ່ງໄປຫາຜູ້ໃຊ້. ພວກເຮົາຈະໃຊ້ Cryptography ພື້ນຖານນີ້ເພື່ອສ້າງມຸມມອງຄວາມຖືກຕ້ອງຂອງສອງປັດໄຈ. ກ່ອນທີ່ພວກເຮົາຈະເຮັດຫຍັງອີກ, ໃຫ້ດໍາເນີນການການເຄື່ອນຍ້າຍດັ່ງນັ້ນຮູບແບບຜູ້ໃຊ້ຂອງພວກເຮົາໄດ້ຖືກປັບປຸງ. ໃນໄດເລກະທໍລີກັບ Manage.py, ດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ເພື່ອເຮັດແລະເຮັດສໍາເລັດການເຄື່ອນຍ້າຍ.
source venv/bin/activate
python manage.py makemigrations && python manage.py migrate
ນີ້ແມ່ນສິ່ງທີ່ສໍາຄັນເພາະວ່າທຸກໆຄັ້ງທີ່ພວກເຮົາປ່ຽນແປງແບບ, ພວກເຮົາຈໍາເປັນຕ້ອງສ້າງໂຕະແລະອັບເດດຖານຂໍ້ມູນກັບຄ່າເລີ່ມຕົ້ນກ່ອນທີ່ພວກເຮົາສາມາດໃຊ້ຕົວແບບໄດ້.
ຕໍ່ໄປ, ໃຫ້ເຮົາກໍາລັງປະດິດໃຈເບິ່ງການເຂົ້າລະບົບຂອງພວກເຮົາເພື່ອປ່ຽນເສັ້ນທາງໄປຫາມຸມມອງການກວດສອບຂັ້ນສອງ. ໃນຜູ້ໃຊ້ / views.py, ເອົາຫນ້າທີ່ເຂົ້າສູ່ລະບົບແລະປ່ຽນເສັ້ນທາງໄປທີ່ URL ທີ່ພວກເຮົາຫາກໍ່ສ້າງໃນແບບຂອງຜູ້ໃຊ້.
# ... ນໍາເຂົ້າ
if user and user.profile.can_login < timezone.now(): # ໃຫ້ສັງເກດວ່າຕອນນີ້ພວກເຮົາກວດເບິ່ງວ່າຜູ້ໃຊ້ສາມາດເຂົ້າສູ່ລະບົບໄດ້ບໍ
# ຖອດຫນ້າທີ່ Auth_LOGNAY ທີ່ຢູ່ທີ່ນີ້
return redirect(user.profile.create_auth_url()) # ໃຫ້ສັງເກດວ່າພວກເຮົາປ່ຽນເສັ້ນທາງໄປທີ່ URL ໃຫມ່ທີ່ນີ້
else: # ຖ້າຜູ້ໃຊ້ບໍ່ໃຊ້ການກວດສອບຄວາມຖືກຕ້ອງຫຼາຍປັດໄຈ, ພຽງແຕ່ເຂົ້າສູ່ລະບົບ.
else: # ຖ້າການເຂົ້າສູ່ລະບົບບໍ່ປະສົບຜົນສໍາເລັດ,
user = User.objects.filter(username=username).first() # ນີ້ແມ່ນພາກສ່ວນທີ່ພວກເຮົາປັບປຸງໂປຼໄຟລ໌ຂອງຜູ້ໃຊ້
profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # ສະນັ້ນພວກເຂົາບໍ່ສາມາດເຂົ້າສູ່ລະບົບອີກສອງສາມວິນາທີ
ສະນັ້ນນີ້ແມ່ນງ່າຍດາຍທີ່ສຸດ, ດຽວນີ້ພວກເຮົາມີວິທີການທີ່ຈະປ່ຽນເປັນສອງປັດໄຈທີ່ແທ້ຈິງໃນເວລາທີ່ພວກເຮົາສ້າງມັນ. ພວກເຮົາຍັງມີການລົບລ້າງໃນກໍລະນີທີ່ຜູ້ໃຊ້ບໍ່ໄດ້ເພີ່ມເບີໂທລະສັບ. ພວກເຮົາຈະເພີ່ມມຸມມອງພື້ນຖານເພື່ອເພີ່ມເບີໂທລະສັບໃນໄວໆນີ້ແລະເຂົ້າສູ່ລະບົບດ້ວຍຂໍ້ຄວາມໃນໄວໆນີ້.
ຫນ້າທໍາອິດ, ພວກເຮົາຕ້ອງການວິທີທີ່ງ່າຍທີ່ຈະສົ່ງຂໍ້ຄວາມຈາກລະຫັດຂອງພວກເຮົາ. ເພື່ອເຮັດສິ່ງນີ້, ພວກເຮົາສາມາດເລືອກໄດ້ຈາກ apis ຈໍານວນຫນຶ່ງ, ແຕ່ວ່າມັນງ່າຍທີ່ສຸດໃນຄວາມຄິດເຫັນຂອງຂ້ອຍແມ່ນ Twilio. ພວກເຂົາຍັງສະເຫນີລາຄາທີ່ດີສໍາລັບໂຄງການຂະຫນາດນ້ອຍກວ່າ, ພ້ອມທັງຫຼຸດລາຄາຫຼາຍ. ສ້າງບັນຊີໃນ Twilio.com, ຕື່ມຂໍ້ມູນໃສ່ບາງລາຍລະອຽດກ່ຽວກັບໂຄງການຂອງທ່ານ, ຊື້ເບີໂທລະສັບ, ແລະຄັດລອກຄີ API ຂອງທ່ານໃສ່ settings.py ຂອງທ່ານ. ຈາກນັ້ນ, ເພີ່ມລະຫັດນີ້ພາຍໃຕ້ເອກະສານໃຫມ່, ຜູ້ໃຊ້ / SMS.MY.
nano users/sms.py
# ນໍາເຂົ້າທັງຫມົດຂອງການຫຸ້ມຫໍ່ທີ່ຈໍາເປັນ
# ລະຫັດນີ້ສົ່ງຂໍ້ຄວາມກັບ Twilio
# ຜູ້ຊ່ວຍຫນ້າທີ່ເປັນຕົວເລກທີ່ມີຕົວເລກຫຼາຍຕົວເລກ
# ສົ່ງຂໍ້ຄວາມເພື່ອພິສູດຜູ້ໃຊ້
# ສົ່ງຜູ້ໃຊ້ຂໍ້ຄວາມໃດຫນຶ່ງກັບຟັງຊັນນີ້
# ຢັ້ງຢືນລະຫັດທີ່ມີຫນ້າທີ່ນີ້
# ໃຊ້ເວລາ
ໃຫ້ແນ່ໃຈວ່າທ່ານຈະປ່ຽນການຕັ້ງຄ່າຂອງທ່ານຢ່າງເຫມາະສົມ, ເພີ່ມສາຍເຫຼົ່ານີ້ດ້ວຍຄີຂອງທ່ານ:
# ໃຫ້ແນ່ໃຈວ່າຈະສໍາເນົາສິ່ງເຫຼົ່ານີ້ຈາກ dashboard Twilio ຂອງທ່ານ
AUTH_VALID_MINUTES = 3 # ຈໍານວນນາທີຂອງເວລາ TFA Page ແມ່ນການເຄື່ອນໄຫວຄັ້ງຫນຶ່ງ
ຫນ້າທໍາອິດ, ພວກເຮົາຈະຕ້ອງການຮູບແບບສໍາລັບຄວາມຄິດເຫັນທີ່ແທ້ຈິງສອງປັດໃຈຂອງພວກເຮົາ. ການດັດແກ້ຜູ້ໃຊ້ / forms formspy,, ເພີ່ມລະຫັດຕໍ່ໄປນີ້.
# ... ນໍາເຂົ້າ
# ຮູບແບບສໍາລັບການປ້ອນເບີໂທລະສັບຂອງພວກເຮົາ
# ຮູບແບບສໍາລັບການກວດສອບຄວາມຖືກຕ້ອງ
ຕໍ່ໄປ, ໃຫ້ພວກເຮົາສ້າງຄວາມຄິດເຫັນໃນຜູ້ໃຊ້ / views.py
# ... ນໍາເຂົ້າ
ພວກເຮົາຍັງຈະຕ້ອງການແມ່ແບບສໍາລັບທັງສອງທັດສະນະນີ້. ຂໍໃຫ້ເພີ່ມແມ່ພິມ MFA ກ່ອນ.
nano users/templates/users/mfa.html
ເພີ່ມລະຫັດ HTML ນີ້ໃສ່ແມ່ແບບນີ້
ນີ້ແມ່ນຄໍາອະທິບາຍຕົນເອງທີ່ສວຍງາມ. ແບບຟອມສົ່ງທັງລະຫັດຫລືລະຫັດທີ່ຫວ່າງໄວ້, ແລະທ່ານຈະສັງເກດເຫັນໃນມຸມມອງທີ່ພວກເຮົາສົ່ງລະຫັດຖ້າພວກເຮົາໄດ້ຮັບລະຫັດທີ່ບໍ່ມີລະຫັດ. ຫຼັງຈາກນັ້ນ, ພວກເຮົາພຽງແຕ່ມີສອງປຸ່ມສົ່ງ, ແລະແບບນີ້ພວກເຮົາສາມາດສົ່ງລະຫັດດ້ວຍປຸ່ມດ້ວຍປຸ່ມ. ຕໍ່ໄປ, ພວກເຮົາຈະເພີ່ມແບບຟອມງ່າຍໆເພື່ອເພີ່ມເບີໂທລະສັບ.
nano users/templates/users/mfa_onboarding.html
ເພີ່ມ html ຕໍ່ໄປນີ້:
ແບບຟອມນີ້ແມ່ນງ່າຍດາຍຫຼາຍ, ມັນພຽງແຕ່ໃຫ້ຕົວເລກໂທລະສັບທີ່ພວກເຮົາໄດ້ສ້າງແລະໃຫ້ຜູ້ໃຊ້ເພີ່ມເບີໂທລະສັບ.
ນີ້ເບິ່ງດີຫຼາຍ! ຕາບໃດທີ່ທຸກສິ່ງທຸກຢ່າງຖືກຕັ້ງຄ່າໃຫ້ຖືກຕ້ອງ, ພວກເຮົາຄວນຈະສາມາດສົ່ງຂໍ້ຄວາມ, ແລະເຂົ້າໃຊ້ກັບເບີໂທລະສັບຂອງພວກເຂົາທັນທີທີ່ພວກເຮົາເພີ່ມຮູບແບບ url. ສິ່ງສຸດທ້າຍທີ່ພວກເຮົາຕ້ອງການໃນການຕັ້ງຄ່າແມ່ນການເບິ່ງໂປຼໄຟລ໌ດັ່ງນັ້ນພວກເຮົາສາມາດປ່ຽນແປງເບີໂທລະສັບຂອງພວກເຂົາໂດຍບໍ່ຕ້ອງອ່ານ "ຢຸດ" ເພື່ອເລືອກອອກຈາກຂໍ້ຄວາມໃນອະນາຄົດ.
ໃຫ້ຂອງຕື່ມການເບິ່ງໂປຣໄຟລ໌ໃຫ້ກັບຜູ້ໃຊ້ / views.py. ມຸມມອງນີ້ຈະປັບປຸງຊີວະພາບ, ອີເມວຂອງຜູ້ໃຊ້, ຊື່ຜູ້ໃຊ້, ແລະເບີໂທລະສັບ, ພ້ອມທັງໃຫ້ພວກເຮົາສາມາດກວດສອບຄວາມຖືກຕ້ອງຂອງປັດໃຈຫຼາຍ. ຫນ້າທໍາອິດ, ພວກເຮົາຈະຕ້ອງການອີກສອງຮູບແບບໃນຜູ້ໃຊ້ / ative.py
# ... ນໍາເຂົ້າ
ຕໍ່ໄປ, ພວກເຮົາສາມາດສ້າງມຸມມອງເພື່ອໃຊ້ທັງສອງຮູບແບບນີ້. ແກ້ໄຂຜູ້ໃຊ້ / views.py ແລະເພີ່ມໃນມຸມມອງ.
# ເພີ່ມການນໍາເຂົ້າເຫຼົ່ານີ້
ພວກເຮົາຍັງຕ້ອງການແມ່ແບບສໍາລັບມຸມມອງນີ້.
nano users/templates/users/profile.html
ທ່ານຈະສັງເກດເຫັນວ່ານີ້ແມ່ນແບບຟອມທີ່ລຽບງ່າຍ, ແຕ່ມີບາງ javascript ໃນມັນທີ່ຂຽນເນື້ອໃນຂອງແບບຟອມທີ່ພວກມັນຖືກປັບປຸງໂດຍອັດຕະໂນມັດ. ນີ້ແມ່ນສິ່ງທີ່ເປັນປະໂຫຍດທີ່ຈະມີ, ສະນັ້ນທ່ານສາມາດແກ້ໄຂໄດ້ໂດຍບໍ່ຕ້ອງກົດທີ່ໃຊ້ໃນທຸກໆຄັ້ງ.
ຕໍ່ໄປ, ພວກເຮົາຕ້ອງການ URLs ເປັນຕົວແທນໃຫ້ແກ່ຄວາມຄິດເຫັນທັງຫມົດນີ້ໃນ URL URL ຂອງຜູ້ໃຊ້. ແກ້ໄຂຜູ້ໃຊ້ / urs.py ແລະເພີ່ມລະຫັດນີ້:
# ... ລະຫັດກ່ອນຫນ້ານີ້, ການນໍາເຂົ້າ
# ... ຮູບແບບ url ທີ່ພວກເຮົາໄດ້ເຂົ້າມາກ່ອນຫນ້ານີ້, ຕື່ມສາມເສັ້ນຕໍ່ໄປ
ດຽວນີ້ແມ່ນເວລາທີ່ດີທີ່ຈະທົດສອບໂຄງການຂອງພວກເຮົາ. ແຕ່ທໍາອິດ, ໃຫ້ແລ່ນສໍາຮອງອີກ.
backup
ແລະດໍາເນີນການ server. ກ່ອນທີ່ພວກເຮົາຈະນໍາໃຊ້ກັບ Linux server, ມັນເປັນຄວາມຄິດທີ່ດີທີ່ຈະເຮັດໃຫ້ມີການກວດສອບສອງປັດໃຈໃນບັນຊີ. ພວກເຮົາຈະເຮັດສິ່ງນີ້ທີ່ຈະໄປທີ່ URL ໂປຼໄຟລ໌ຂອງພວກເຮົາ, / ໂປຣໄຟລ໌ຂອງພວກເຮົາ /, ແລະກວດເບິ່ງກ່ອງເພື່ອເປີດໃຊ້ງານໂທລະສັບຂອງພວກເຮົາ, ແລະຫຼັງຈາກນັ້ນສົ່ງແບບຟອມ.
python manage.py runserver localhost:8000
ເຂົ້າເບິ່ງຫນ້າເວບໄຊທ໌ໂດຍການໄປທີ່ຕົວທ່ອງເວັບຂອງທ່ານ, ຂ້ອຍກໍາລັງໃຊ້ Google Chrome ໃນຕົວຢ່າງນີ້, ແລະໃສ່ URL httns: // Localhost: 8000 / ບັນຊີ /
ທ່ານຈະສາມາດເຂົ້າສູ່ລະບົບຖ້າຈໍາເປັນແລະເຮັດໃຫ້ມີການກວດສອບສອງປັດໃຈ.
ໂຄງການນີ້ຕ້ອງການເຊີຟເວີເພື່ອດໍາເນີນການເພື່ອໃຫ້ມັນສາມາດສົ່ງຈົດຫມາຍໄດ້ແທ້ໆ. ແຕ່ທໍາອິດ, ພວກເຮົາຕ້ອງການວິທີການເບິ່ງຄວາມຜິດພາດ. ທ່ານຈະສັງເກດເຫັນວ່າຖ້າທ່ານດໍາເນີນການ server ໃນຮູບແບບ debug, ດ້ວຍ settings.debug ເທົ່າກັບຄວາມຈິງ, ເຊີຟເວີສະແດງຄວາມຜິດພາດໂດຍອັດຕະໂນມັດ. ເພື່ອສະແດງຂໍ້ຜິດພາດໂດຍບໍ່ຕ້ອງໃຊ້ໂຫມດ debug, ເຊິ່ງບໍ່ປອດໄພໃນເຄື່ອງແມ່ຂ່າຍການຜະລິດ, ພວກເຮົາຄວນເພີ່ມມຸມມອງໃຫ້ມັນ. ຂໍ້ຜິດພາດທີ່ສໍາຄັນທີ່ສຸດທີ່ພວກເຮົາຕ້ອງການທີ່ຈະສາມາດຈັດການໄດ້ແມ່ນ:
ຂໍ້ຜິດພາດ 500 - ບັນຫາກັບລະຫັດຂອງພວກເຮົາ ຂໍ້ຜິດພາດ 404 - ຫນ້າທີ່ບໍ່ພົບ (url ຫັກ) ຂໍ້ຜິດພາດ 403 - ການອະນຸຍາດທີ່ຖືກປະຕິເສດຄວາມຜິດພາດ
ຂໍໃຫ້ຕື່ມແອັບ app ໃຫມ່ເພື່ອຈັດການກັບຂໍ້ຜິດພາດເຫລົ່ານີ້, ເຊິ່ງເອີ້ນວ່າຂໍ້ຜິດພາດ.
python manage.py startapp errors
ຕື່ມສິ່ງນີ້ເຂົ້າໃນ settings.py ດັ່ງທີ່ພວກເຮົາໄດ້ເຮັດມາກ່ອນ, ໃນການຕິດຕັ້ງ_Appsຕັ້ງຄ່າໂດຍອ້າງອີງໃສ່ AP / URL.CY, ບ່ອນທີ່ແອັບ is ແມ່ນຊື່ຂອງໂຄງການ DJAGO ຂອງທ່ານ.
handler404 = 'errors.views.handler404'
handler500 = 'errors.views.handler500'
handler403 = 'errors.views.handler403'
ນີ້ແມ່ນສິ່ງທີ່ພວກເຮົາຕ້ອງການນອກເຫນືອຈາກການເບິ່ງຂໍ້ຜິດພາດ, ແມ່ແບບແລະເຄື່ອງຕັດຕົວເລັກນ້ອຍ. ຂໍໃຫ້ກໍານົດສິ່ງທີ່:
# ສ້າງທັດສະນະຂອງທ່ານທີ່ນີ້.
ຕໍ່ໄປ, ໃຫ້ເຮົາກໍານົດຜູ້ຕັດທ້ອງເພື່ອຈັດການກັບຂໍ້ຜິດພາດເຫລົ່ານີ້. ພວກເຮົາຈະເຮັດສິ່ງນີ້ໂດຍການເພີ່ມ middramware ໃນ MiddewarS_Classes ໃນ settings.py, ກັບຊື່ຂອງກາງຂອງພວກເຮົາ.
# ... ຄົນກາງກ່ອນຫນ້ານີ້
ຕໍ່ໄປ, ໃຫ້ຕື່ມ Mutleware.
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
ນີ້ແມ່ນແມ່ແບບທີ່ລຽບງ່າຍທີ່ສຸດຂອງພວກເຮົາ, ແຕ່ວ່າມັນງ່າຍສໍ່າໃດທີ່ເຫັນຄວາມຜິດພາດໃນໂຄງການຂອງພວກເຮົາ. ຕໍ່ໄປ, ໃຫ້ປິດການໃຊ້ງານ Debug ໃນການຕັ້ງຄ່າ.
nano app/settings.py
ຊອກຫາສາຍນີ້ບ່ອນທີ່ມັນຖືກກໍານົດໃຫ້ເປັນຄວາມຈິງ, ແລະປ່ຽນມັນໃຫ້ບໍ່ຖືກຕ້ອງ
DEBUG = False
ສືບຕໍ່ເດີນຫນ້າແລະສໍາຮອງແອັບ app ດຽວນີ້. ພວກເຮົາພ້ອມແລ້ວທີ່ຈະນໍາໃຊ້ກັບ Linux Linux ທີ່ຫ່າງໄກສອກຫຼີກ, ແລະສືບຕໍ່ເພີ່ມຄຸນລັກສະນະຕ່າງໆຈາກບ່ອນນັ້ນ.
sudo backup
ກ່ອນທີ່ພວກເຮົາຈະຂຽນລະຫັດນີ້ໃຫ້ກັບເຊີບເວີ, ພວກເຮົາຄວນພິຈາລະນາວ່າອາດຈະມີບາງບັນຫາກ່ຽວກັບລະຫັດ. ອີງຕາມກໍລະນີ, ເວັບໄຊທ໌ທີ່ຍອມຮັບເອົາຂໍ້ມູນທີ່ລົງໃຫ້ພວກເຂົາຈະມີບັນຫາກ່ຽວກັບສະແປມແລະມີຄວາມຫຍຸ້ງຍາກໃນການກໍາຈັດຂີ້ເຫຍື້ອ. ສິ່ງນີ້ບໍ່ຄວນຈະເກີດຂື້ນໃນທັນທີ, ແຕ່ຖ້າມັນກໍາລັງເກີດຂື້ນ, ພວກເຮົາຈະກວດກາເບິ່ງສະຖານທີ່ຂອງຜູ້ໃຊ້, ໂດຍອັດຕະໂນມັດໃນການກວດສອບໂດຍອັດຕະໂນມັດ
ຊອກຫາຕົວຢ່າງການກວດສອບຄວາມຖືກຕ້ອງຂອງປັດໄຈຫຼາຍປັດໃຈທີ່ພວກເຮົາໄດ້ກວດກາ, ໃນການຜະລິດ, ສິ່ງຕ່າງໆກໍ່ສາມາດແຕກຕ່າງກັນໄດ້. ສັງເກດວິທີທີ່ພວກເຮົາມີຄວາມຈໍາກັດການເຂົ້າສູ່ລະດັບ, ແລະເປັນ tokens ຫມົດອາຍຸ. ຖ້າຫຸ່ນຍົນກໍາລັງເຂົ້າເບິ່ງເວັບໄຊ, ການກວດສອບຄວາມຖືກຕ້ອງຂອງປັດໃຈສອງປັດໄຈສາມາດມີຄວາມຫຍຸ້ງຍາກຫຼາຍຍ້ອນວ່າມັນອາດຈະໃສ່ລະຫັດໃນເວລາດຽວກັນທີ່ຜູ້ໃຊ້ແມ່ນ. ເພື່ອຕໍ່ສູ້ກັບສິ່ງນີ້, ໃຫ້ໃຊ້ຕົວແບບໃນຮູບແບບຂອງຜູ້ໃຊ້, ປະກາດວິທີທີ່ພວກເຮົາພົວພັນກັບເວັບໄຊທ໌້ເມື່ອພວກເຮົາຮັບປະກັນໂດຍໃຊ້ເບີໂທລະສັບ. ພວກເຮົາຍັງຈະເພີ່ມຕົວເລືອກທີ່ຈະກວດສອບກັບອີເມວ. ເລີ່ມຕົ້ນໂດຍການດັດແກ້ຕົວແບບຂອງຜູ້ໃຊ້ກັບ nano.
nano users/models.py
ນີ້ແມ່ນສິ່ງທີ່ຕົວແບບທີ່ພວກເຮົາກໍາລັງເພີ່ມຈະເບິ່ງຄືວ່າ. ພວກເຮົາບໍ່ຕ້ອງການວິທີໃດກໍ່ຕາມ, ພຽງແຕ່ຕົວແປທີ່ຈະເກັບເອົາບັດປະຈໍາຕົວ, ຜູ້ໃຊ້, ຄວາມຍາວຂອງການກວດສອບຄວາມຕ້ອງການ (ລະຫັດຄ້າຍຄື 123456 ສົ່ງໄປທີ່ໂທລະສັບຫຼືອີເມວ).
# ເປັນ token ພື້ນຖານທີ່ໃຊ້ໃນການເຂົ້າສູ່ລະບົບເວັບໄຊທ໌້
ຂໍໃຫ້ມີສິດທິພິເສດໃຫ້ກັບຜູ້ໃຊ້ຂອງພວກເຮົາ, ແລະພວກເຮົາຈະຕັ້ງມັນດ້ວຍຕົນເອງສໍາລັບດຽວນີ້, ກ່ອນທີ່ຈະເຄື່ອນຍ້າຍຜູ້ໃຊ້ທີ່ມີສິດທິພິເສດໂດຍອັດຕະໂນມັດ. ໃນຮູບແບບຜູ້ໃຊ້, ເພີ່ມເສັ້ນນີ້ໃນໂປຼໄຟລ໌:
vendor = models.BooleanField(default=False)
ເຊັ່ນດຽວກັບການປ່ຽນແປງໃດໆຕໍ່ຖານຂໍ້ມູນ, ພວກເຮົາຈໍາເປັນຕ້ອງເຮັດການເຄື່ອນຍ້າຍແລະຍ້າຍຖານຂໍ້ມູນທຸກເວລາທີ່ພວກເຮົາແກ້ໄຂແບບ Moden.py ໃນ Django. ຈືຂໍ້ມູນການ, ເພື່ອເຮັດສິ່ງນີ້ພວກເຮົາໃຊ້ແຫລ່ງທີ່ມາກ່ອນ (ຖ້າມັນບໍ່ໄດ້ຖືກນໍາໃຊ້ມາແລ້ວ
cd project-directory-you-named # (ຖ້າຕ້ອງການ)
ສໍາລັບດຽວນີ້, ທ່ານສາມາດເຂົ້າບັນຊີໃດໆທີ່ທ່ານໄດ້ສ້າງເປັນຜູ້ຂາຍໂດຍໃຊ້ຫອຍ.
python manage.py shell
from users.models import Profile
p = Profile.objects.get(user__username='Charlotte')
p.vendor = True
p.save()
exit()
ໃນປັດຈຸບັນ, ໃຫ້ຂອງທ່ານ evolve ການເບິ່ງເບິ່ງການກວດສອບປັດໄຈຫຼາຍປັດໃຈຂອງພວກເຮົາໃຫ້ໃຊ້ token ນີ້. ຫນ້າທໍາອິດ, ພວກເຮົາຕ້ອງໄດ້ປັບປຸງແກ້ໄຂ MFA Heper Utilities. ການໃຊ້ nano,
nano users/mfa.py
from django.utils import timezone
import random
import datetime
from django.conf import settings
from feed.middleware import get_current_request
from django.contrib import messages
from .email import send_html_email
import traceback
from .models import MFAToken
account_sid = settings.TWILIO_ACCOUNT_SID
auth_token = settings.TWILIO_AUTH_TOKEN
source_phone = settings.PHONE_NUMBER
def send_text(target_phone, text):
from twilio.rest import Client
try:
client = Client(account_sid, auth_token)
if len(target_phone) >= 11:
message = client.messages.create(
to=target_phone,
from_=source_phone,
body=text + ' Text STOP to cancel.')
except:
messages.warning(get_current_request(), 'There was an error sending the message.')
print(traceback.format_exc())
def get_num_length(num, length):
n = ''
for x in range(length):
n = n + str(num)
return int(n)
def send_verification_text(user, token):
length = user.profile.verification_code_length
code = random.randint(get_num_length(1, length), get_num_length(9, length));
token.token = code
token.expires = timezone.now() + datetime.timedelta(minutes=settings.AUTH_VALID_MINUTES)
token.save()
send_user_text(user, "Your verification code for {} is {}".format(settings.SITE_NAME, str(code)))
def send_verification_email(user, token):
length = user.profile.verification_code_length
code = random.randint(get_num_length(1, length), get_num_length(9, length));
token.token = code
token.expires = timezone.now() + datetime.timedelta(minutes=settings.AUTH_VALID_MINUTES)
token.save()
send_html_email(user, "Your verification code for {} is {}".format(settings.SITE_NAME, str(code)), "<p>Dear {},</p><p>Your verification code for {} is {}. Thank you for using this code to secure your account.</p><h2>{}</h2><p>Sincerely, {}</p>".format(user.profile.name, settings.SITE_NAME, str(code), str(code), settings.SITE_NAME))
def send_user_text(user, text):
send_text(user.profile.phone_number, text)
def check_verification_code(user, token, code):
token.attempts = token.attempts + 1
profile = user.profile
result = (token != None and code != '' and token.token == code and (token.expires > timezone.now()) and token.attempts <= settings.MFA_TOKEN_ATTEMPTS)
if token.attempts < 3 and result:
profile.verification_code_length = 6
elif token.attempts > 1 and not result:
profile.verification_code_length = profile.verification_code_length + 2
if profile.verification_code_length > settings.MFA_TOKEN_LENGTH: profile.verification_code_length = settings.MFA_TOKEN_LENGTH
token.save()
profile.save()
return result
# ກວດສອບຜູ້ໃຊ້ໃຊ້ອີເມວຫຼືເບີໂທລະສັບຂອງພວກເຂົາ
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() # ເອົາຜູ້ໃຊ້ຈາກ token
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
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: # ກວດເບິ່ງວ່າ MFA ຖືກເປີດໃຊ້ງານບໍ
if not check_verification_time(user, token): # ກວດເບິ່ງເວລາ
user.profile.mfa_enabled = False # ລ້າງເບີໂທລະສັບ
user.profile.enable_two_factor_authentication = True # ເປີດ MFA
user.profile.phone_number = '+1' # ປິດການໃຊ້ງານເບີໂທລະສັບ
user.profile.save() # ບັນທຶກຂໍ້ມູນ
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # ເຂົ້າສູ່ລະບົບຜູ້ໃຊ້ໃນຖ້າ MFA ຂອງພວກເຂົາບໍ່ສາມາດເປີດໃຊ້ງານໄດ້
if request.method == 'POST' and not fraud_detect(request, True): # ຖ້າການຮ້ອງຂໍແມ່ນການຮ້ອງຂໍປະກາດ
form = TfaForm(request.POST) # nystiate ແບບຟອມ
code = str(form.data.get('code', None)) # ເອົາລະຫັດ
if code and code != '' and code != None: # ໃຫ້ແນ່ໃຈວ່າມັນບໍ່ແມ່ນຫວ່າງເປົ່າ
token_validated = user.profile.check_auth_token(usertoken) # ກວດເບິ່ງເຄື່ອງຫມາຍ Auth
is_verified = check_verification_code(user, token, code) # ກວດເບິ່ງລະຫັດ
if token_validated: # ຖ້າທຸກຢ່າງ
if is_verified: # ແມ່ນຢູ່ໃນລະບຽບ
user.profile.mfa_enabled = True # ເປີດ MFA (ຖ້າບໍ່ໄດ້ເປີດໃຊ້ງານແລ້ວ)
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # ເຂົ້າສູ່ລະບົບຜູ້ໃຊ້
for key, value in request.GET.items(): # ສ້າງ querystring ສໍາລັບພາລາມິເຕີຕໍ່ໄປ (ຖ້າມີ)
return HttpResponseRedirect(next) # ປ່ຽນເສັ້ນທາງ
elif not token_validated: # ຖ້າ token ບໍ່ຖືກຕ້ອງ
if p.mfa_attempts > 3: # ຖ້າມີຄວາມພະຍາຍາມຫຼາຍເກີນໄປ
if form.data.get('send_email', False): # ສົ່ງອີເມວ (ຫຼືຂໍ້ຄວາມ)
# render ແບບຟອມ (ສໍາລັບການຮ້ອງຂໍ)
ໃນເວລາທີ່ພວກເຮົາກໍາລັງເພີ່ມໃນລະຫັດນີ້, ໃຫ້ແນ່ໃຈວ່າຈະນໍາເຂົ້າຫນ້າທີ່ເພື່ອສົ່ງອີເມວ. ຢູ່ເທິງສຸດຂອງເອກະສານ, ມຸມມອງຂອງຜູ້ໃຊ້ (ມີການນໍາເຂົ້າອື່ນໆ), ຕື່ມ
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))
ສະນັ້ນສິ່ງນີ້ເຮັດວຽກໄດ້ດີ, ດຽວນີ້ພວກເຮົາມີລະບົບການກວດສອບປັດໃຈຫຼາຍປັດໃຈທີ່ຂື້ນກັບຕົວແທນຫຼືຢ່າງຫນ້ອຍກໍ່ບໍ່ໄດ້ຮ່ວມມືກັບຂໍ້ກໍານົດຂອງພວກເຮົາ. ສິ່ງເຫຼົ່ານີ້ອາດຈະແມ່ນ Spammers, ຫຸ່ນຍົນຫຼືຜູ້ທີ່ບໍ່ໄດ້ຫມາຍຄວາມວ່າວຽກຂອງພວກເຮົາ. ເບິ່ງທີ່ View ຂ້ອຍມີສໍາລັບການຕິດຕາມກວດກາຜູ້ໃຊ້ໃນເວັບໄຊທ໌ຂອງຂ້ອຍ:
# ການນໍາເຂົ້າ
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. ໃນເວລາທີ່ໃຊ້ແມ່ແບບທີ່ມີ subtemplate ແລະບໍ່ໃຊ້ການຂະຫຍາຍ, ມັນເປັນຄວາມຄິດທີ່ດີທີ່ຈະເພີ່ມ undercore () ກ່ອນທີ່ຊື່ຂອງເອກະສານເພື່ອຂະຫຍາຍ, ເພື່ອຈະຈໍາແນກແມ່ແບບ.
ໃຫ້ສັງເກດວ່ານີ້ແມ່ນ Jinja ຫຼາຍ, ທ່ານອາດຈະບໍ່ມີຕົວແປທັງຫມົດເຫຼົ່ານີ້ທີ່ກໍານົດໄວ້. ແຕ່ນີ້ແມ່ນສິ່ງທີ່ລະຫັດຂອງຂ້ອຍເບິ່ງຄືວ່າ.
<small># {{User.id}} </ ຂະຫນາດນ້ອຍ>
ພວກເຮົາຍັງຕ້ອງການສິ່ງອື່ນ, toggle_active.jtive.html. ແມ່ແບບນີ້ຄວນຈະເປັນແບບຟອມທີ່ຊ່ວຍໃຫ້ພວກເຮົາສະຫຼັບໄດ້ວ່າຜູ້ໃຊ້ມີການເຄື່ອນໄຫວບໍ່.
ພວກເຮົາຍັງຈະຕ້ອງເພີ່ມມຸມມອງເພື່ອສະຫຼັບກິດຈະກໍາຂອງຜູ້ໃຊ້, ແລະຮູບແບບ url ທີ່ເຫມາະສົມ. ໃນຂະນະທີ່ພວກເຮົາຢູ່ມັນ, ໃຫ້ເພີ່ມມຸມມອງເພື່ອລຶບຜູ້ໃຊ້ໃນກໍລະນີທີ່ພວກເຮົາຕ້ອງການ.
# ການນໍາເຂົ້າ
success_url = '/' # ການປ່ຽນເສັ້ນທາງໃນ URL ທີ່ປະສົບຜົນສໍາເລັດ
def test_func(self): # ທົດສອບຖ້າຜູ້ໃຊ້ແມ່ນ superuser ແລະໄດ້ຮັບອະນຸຍາດໃຫ້ລຶບ
ໃນຂະນະທີ່ສິ່ງນີ້ແມ່ນໃຊ້ໄດ້ເມື່ອຈໍາເປັນ, ລຶບຜູ້ໃຊ້ບໍ່ຈໍາເປັນຕ້ອງໃຊ້ເວລາສ່ວນໃຫຍ່, ພວກເຮົາພຽງແຕ່ສາມາດສະຫຼັບການເບິ່ງເຫັນຂອງຜູ້ໃຊ້ຖ້າພວກເຮົາຕ້ອງການຍົກເລີກພວກເຂົາ.
ຮູບແບບ url ທີ່ພວກເຮົາໄດ້ເພີ່ມເບິ່ງແບບນີ້. ກັບ nano, ແກ້ໄຂຜູ້ໃຊ້ / urls.py ແລະເພີ່ມສາຍເຫຼົ່ານີ້:
nano users/urls.py
ສາຍຄວນໄປໃນບັນຊີລາຍຊື່ຂອງເສັ້ນທາງໃນມຸມມອງຂອງຜູ້ໃຊ້, ກ່ອນທີ່ຈະສິ້ນສຸດ "]" ແຕ່ຫຼັງຈາກທີ່ເລີ່ມຕົ້ນ "[".
# ...
# ...
ດຽວນີ້, ໃຫ້ແນ່ໃຈວ່າທ່ານຈະສໍາຮອງເວັບໄຊທ໌້ເພື່ອໃຫ້ທ່ານສາມາດດາວໂຫລດໄດ້ໃນເວັບເຊີຟເວີ Web ພວກເຮົາຈະສືບຕໍ່ເຮັດວຽກ. ຈາກເສັ້ນຄໍາສັ່ງ,
sudo backup
ດຽວນີ້ເວບໄຊທ໌ຂອງພວກເຮົາໄດ້ຮັບການສະຫນັບສະຫນູນ.
ສະນັ້ນດຽວນີ້ພວກເຮົາມີອີກສອງສາມລັກສະນະທີ່ເປັນປະໂຫຍດຕື່ມອີກ. ແຕ່ຮູບພາບໃຫຍ່ຢູ່ທີ່ນີ້ແມ່ນຫຍັງ? ລະຫັດນີ້ຍັງບໍ່ສາມາດເຂົ້າເຖິງໄດ້ຈາກອິນເຕີເນັດ, ພວກເຮົາບໍ່ມີເຄື່ອງແມ່ຂ່າຍເມລ໌ເທື່ອ, ແລະພວກເຮົາຕ້ອງການຂະຫຍາຍແອັບ mail
ພວກເຮົາຈະໄດ້ຮັບການທັງຫມົດນີ້. ສິ່ງທີ່ສໍາຄັນທີ່ສຸດສໍາລັບດຽວນີ້ພຽງແຕ່ຈະໄດ້ຮັບລະຫັດນີ້ທາງອິນເຕີເນັດ, ເຊິ່ງພວກເຮົາສາມາດເຮັດໄດ້ດ້ວຍພຽງແຕ່ສອງສາມແຖວຂອງການເຈາະສອງສາມເສັ້ນໃນເຄື່ອງແມ່ຂ່າຍ Ubuntu. ທ່ານຈະຕ້ອງເຊົ່າເຄື່ອງແມ່ຂ່າຍສໍາລັບສິ່ງນີ້ສໍາລັບທ່ານ, ເວັ້ນເສຍແຕ່ວ່າທ່ານມີເຄື່ອງແມ່ຂ່າຍຢູ່ເຮືອນແລະການສະຫມັກໃຊ້ທຸລະກິດທີ່ຊ່ວຍໃຫ້ທ່ານເປີດພອດ. ຂ້າພະເຈົ້າເອງໄດ້ດໍາເນີນການເວັບໄຊທ໌້ຂອງຂ້ອຍໃນ HP Z440 ທີ່ຖືກຕິດຕັ້ງຢູ່ໃນອາພາດເມັນຂອງຂ້ອຍ, ແຕ່ວ່າມັນມີລາຄາຖືກກວ່າສໍາລັບການເຊົ່າພື້ນຖານທີ່ຈະເຊົ່າເຄື່ອງແມ່ຂ່າຍສ່ວນຕົວ (VPS).
ຈົ່ງຈື່ໄວ້ວ່າລະຫັດທີ່ພວກເຮົາກໍາລັງແລ່ນຢູ່ດຽວນີ້ແມ່ນຂ້ອນຂ້າງຂ້ອນຂ້າງ, ມັນຈະຕ້ອງໄດ້ຮັບການຮັກສາແລະປັບປຸງກ່ອນທີ່ພວກເຮົາຕ້ອງໄດ້ໃຊ້ສິນຄ້າ. ໃຫ້ແນ່ໃຈວ່າທ່ານຈະລະມັດລະວັງໃນສິ່ງທີ່ທ່ານເຮັດກັບອິນເຕີເນັດ, ໃຫ້ແນ່ໃຈວ່າທ່ານມີໂປແກຼມ Linux, ທ່ານມີແຜນທີ່ຈະສະກັດການຕິດຕໍ່ພົວພັນກັບເວັບໄຊທ໌ທີ່ບໍ່ຕ້ອງການກັບເວັບໄຊທ໌້ຂອງທ່ານ. ນີ້ອາດຈະບໍ່ແມ່ນບັນຫາໃນຕອນທໍາອິດ, ແຕ່ພວກເຮົາຈະເບິ່ງເຂົ້າໄປໃນຫລາຍວິທີແກ້ໄຂເພື່ອຕ້ານກັບການຮຽນຮູ້, ລວມທັງການຮຽນຮູ້, ທາງປັນຍາແລະວິໄສທັດຄອມພິວເຕີ. ໃນເວລາທີ່ມັນກາຍເປັນບັນຫາ, ເບິ່ງຕໍ່ໃນຂໍ້ຄວາມນີ້ສໍາລັບການແກ້ໄຂບັນຫາ.
ໃນແງ່ຂອງການເຊົ່າ VPS, ມີສະຖານທີ່ຫຼາຍບ່ອນທີ່ທ່ານສາມາດໄປໄດ້. Google Cloud ມີເຄື່ອງແມ່ຂ່າຍ VPS, ionos, Katera, AWAZON AWS, ແລະຜູ້ໃຫ້ບໍລິການມີໃຫ້ເຫມາະສົມກັບການແກ້ໄຂບັນຫາເຊີເວີ້ທີ່ເຫມາະສົມກັບຄວາມຕ້ອງການຂອງພວກເຮົາ.
ທ່ານຈໍາເປັນຕ້ອງກົດຜ່ານແບບຟອມຂອງພວກເຂົາແລະເລືອກແຜນທີ່ຈະເລີ່ມຕົ້ນ. ທ່ານສາມາດໄປກັບແຜນການພື້ນຖານກັບຜູ້ໃຫ້ບໍລິການໃດຫນຶ່ງ, ແຕ່ໃຫ້ແນ່ໃຈວ່າຜູ້ໃຫ້ບໍລິການຊ່ວຍໃຫ້ທ່ານສາມາດເປີດ Port Server Server ເພື່ອສົ່ງ Port Server Ports. ມາຮອດປະຈຸບັນຂ້ອຍມີປະສົບການທີ່ດີທີ່ສຸດກັບ ionos ແລະ Katera, ທັງສອງຈະຊ່ວຍໃຫ້ຂ້ອຍສົ່ງອີເມວທີ່ບໍ່ຈໍາກັດແລະລາຄາຖືກຂອງພວກເຂົາແມ່ນລາຄາຖືກ.
ທ່ານຈະເຊື່ອມຕໍ່ກັບເຄື່ອງແມ່ຂ່າຍໃຫມ່ຂອງທ່ານໃນອະນຸສັນຍາທີ່ເອີ້ນວ່າ SSTOCLE SSTOCK ຫຼື SECOME, ເຊິ່ງຊ່ວຍໃຫ້ທ່ານສາມາດໂຕ້ຕອບກັບຄອມພິວເຕີຕາມໄລຍະເວລາຂອງທ່ານຄືກັບຄອມພິວເຕີສ່ວນຕົວຂອງທ່ານ. ເມື່ອທ່ານຕັ້ງເຄື່ອງແມ່ຂ່າຍ, ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງມີຈະຂໍໃຫ້ທ່ານເພີ່ມຄີ SSH, ຫຼືພວກມັນຈະໃຫ້ຊື່ຜູ້ໃຊ້ແລະລະຫັດຜ່ານໃຫ້ທ່ານ. ລະຫັດ SSH ແມ່ນວິທີທີ່ທ່ານຈະເຂົ້າສູ່ລະບົບເຊີຟເວີຈາກເສັ້ນຄໍາສັ່ງເພື່ອແກ້ໄຂລະຫັດ. ໃຊ້ຕົວເລືອກ SSH-Keygen ຂ້າງລຸ່ມນີ້ເພື່ອສ້າງກຸນແຈ SSH.
ssh-keygen
ບັນທຶກເອກະສານແລະຂຽນທັບມັນຖ້າທ່ານຕ້ອງການ, ມັນດີທີ່ຈະຫມຸນປຸ່ມ ssh ຂອງທ່ານຖ້າທ່ານຍັງບໍ່ໄດ້. ດຽວນີ້, ທ່ານສາມາດໃຊ້ຄໍາສັ່ງຕໍ່ໄປນີ້ເພື່ອເບິ່ງຄີ SSH ຂອງທ່ານ. ທ່ານຈະຕ້ອງການຄັດລອກມັນເຂົ້າໃນ server ຫ່າງໄກສອກຫຼີກຂອງທ່ານເພື່ອໃຫ້ທ່ານສາມາດໃຊ້ມັນເພື່ອກວດສອບຄວາມຖືກຕ້ອງ.
cat ~/.ssh/id_rsa.pub
ຖ້າທ່ານບໍ່ສາມາດເບິ່ງປຸ່ມ SSH ໃນເວລາພິມຄໍາສັ່ງທີ່ມີຄວາມປອດໄພກວ່າ (ສະແດງໃຫ້ເຫັນວ່າ "
ssh-keygen -t rsa -b 4096
ສ້າງ VPS ທີ່ໃຊ້ VPS ທີ່ໃຊ້ງານ ubuntu, ຢ່າງໃດກໍຕາມທ່ານວາງແຜນທີ່ຈະເຮັດສິ່ງນີ້. ເມື່ອທ່ານໄດ້ສ້າງ VPS ໂດຍການກົດທີ່ຮູບແບບໃນເວບໄຊທ໌ຜູ້ໃຫ້ບໍລິການ ນອກນັ້ນທ່ານຍັງຕ້ອງໄດ້ມີຄວາມລະອຽດອ່ອນກັບຊື່ຜູ້ໃຊ້ໃນຕອນຕົ້ນໃນເຊີບເວີທີ່ພວກເຮົາໄດ້ສ້າງ, ຍົກຕົວຢ່າງ, ubuntu.
ssh ubuntu@XX.XX.XX.XX
ທ່ານອາດຈະຖືກຮ້ອງຂໍໃຫ້ລະຫັດຜ່ານ, ຖ້າທ່ານຖືກຂໍລະຫັດລັບ, ໃສ່ມັນ.
ໃຫ້ເລີ່ມຕົ້ນໂດຍການເພີ່ມເອກະສານ SSHD_Config ໃຫມ່, ເຊິ່ງບອກເຊີບເວີວິທີໃຊ້ SSH.
nano sshd_config
# ນີ້ແມ່ນເອກະສານການຕັ້ງຄ່າລະບົບ SSHD ລະບົບ. ເບິ່ງ
# sshd_config (5) ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.
# This sshd was compiled with PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
# ກົນລະຍຸດທີ່ໃຊ້ສໍາລັບທາງເລືອກໃນການສົ່ງເສີມ SSHD_Config ສົ່ງກັບ
# OpenSSH ແມ່ນເພື່ອລະບຸຕົວເລືອກຕ່າງໆກັບຄ່າເລີ່ມຕົ້ນຂອງພວກເຂົາຢູ່ບ່ອນທີ່
# ເປັນໄປໄດ້, ແຕ່ປ່ອຍໃຫ້ພວກເຂົາໃຫ້ຄໍາເຫັນ. ຕົວເລືອກທີ່ບໍ່ສະອາດ override ໄດ້
# ຄ່າເລີ່ມຕົ້ນ.
# Port 22
# ທີ່ຢູ່ferfamilyໃດກໍ່ຕາມ
# ສະຫງວນຂອງ PlayEddress 0.0.0.0.0
# SellDaddress ::
# hostkey / ant ants etc / ssh / ssh_host_rsa_key
# Hostkey / ant ants etc / ssh / ssh_host_ecdsa_key
# HostKey / etc / ssh / ssh_host_ed2555519_key
# Ciphers ແລະ Keying
# rekeylimit default none
# ການທໍານາກ
# SySgFactive Auth
# ຂໍ້ມູນສະງ່າ
# ການກວດສອບຄວາມຖືກຕ້ອງ:
# logingracetime 2m
# PermitRotlogin ຫ້າມລະຫັດຜ່ານ
# ເຂັ້ມງວດແມ່ນແລ້ວ
# MaxauthTriver 6
# MaxsessSions 10
# ຄາດຫວັງວ່າ .ssh / ຜູ້ໄດ້ຮັບອະນຸຍາດ _keys2 ທີ່ຈະຖືກຍົກເວັ້ນໂດຍຄ່າເລີ່ມຕົ້ນໃນອະນາຄົດ.
# ອະນຸຍາດໃຫ້ບໍ່ມີໃຜ
# ອະນຸຍາດອະນຸຍາດບໍ່ມີໃຜ
# ຜູ້ທີ່ມີອໍານາດບໍ່ມີໃຜ
# ສໍາລັບສິ່ງນີ້ໃນການເຮັດວຽກທ່ານກໍ່ຈະຕ້ອງໃຊ້ຄີທີ່ເປັນພາບໃນ / etc / ssh / ssh_knOngen_hosts
# hostbasedauthentication ບໍ່
# ປ່ຽນເປັນແມ່ນແລ້ວຖ້າທ່ານບໍ່ໄວ້ວາງໃຈ ~ / .Sh / ຮູ້ຈັກ _hosts ສໍາລັບ
# hostbasedauthentichenthenth
# ບໍ່ສົນໃຈບໍ່ມີ
# ຢ່າອ່ານ / .rhosts ແລະ.
# iterriderhosts ແມ່ນແລ້ວ
# ເພື່ອປິດລະຫັດຜ່ານຂໍ້ຄວາມທີ່ຈະແຈ້ງ, ປ່ຽນໄປບໍ່ໄດ້ຢູ່ທີ່ນີ້!
# Permitempypasswords ບໍ່
# ປ່ຽນເປັນແມ່ນແລ້ວເພື່ອເປີດໃຊ້ລະຫັດຜ່ານການຕອບໂຕ້ທີ່ທ້າທາຍ (ລະວັງບັນຫາກ່ຽວກັບ
# ບາງໂມດູນ pam ແລະກະທູ້)
# ທາງເລືອກຂອງ Kerberos
# kerberosauthentication ບໍ່
# KerberosorlocalPasswd ແມ່ນແລ້ວ
# KerberoRostTicketCleCleCle
# kerberosgetafstoken ກ
# ຕົວເລືອກ GSSAPI
# Gssapiauthentication ບໍ່
# ແມ່ນແລ້ວ
# gssapistrictortacceccepcceptorcteck ແມ່ນ
# gssapikeyxchange ບໍ່ມີ
# ກໍານົດສິ່ງນີ້ໃຫ້ 'ແມ່ນແລ້ວ' ເພື່ອໃຫ້ການກວດສອບ Pam, ການປຸງແຕ່ງບັນຊີ,
# ແລະການປະມວນຜົນກອງປະຊຸມ. ຖ້າສິ່ງນີ້ຖືກເປີດໃຊ້, ການກວດສອບຄວາມຖືກຕ້ອງຂອງ Pam
# ໄດ້ຮັບອະນຸຍາດຜ່ານ kbdintectionWativertiuthenticational ແລະ
# ລະຫັດຜ່ານລະຫັດຜ່ານ. ຂື້ນກັບການຕັ້ງຄ່າ PAM ຂອງທ່ານ,
# ການກວດສອບ Pam ຜ່ານ KBDINTERTRONTACTIONTEAILTORTIONTIONAILY ອາດຈະຂ້າມຜ່ານ
# ການຕັ້ງຄ່າຂອງ "permitrootlogin ໂດຍບໍ່ມີລະຫັດຜ່ານ".
# ຖ້າທ່ານພຽງແຕ່ຕ້ອງການບັນຊີ PAM ແລະການກວດສອບກອງປະຊຸມເພື່ອແລ່ນໂດຍບໍ່ມີ
# ການກວດສອບ Pam, ຫຼັງຈາກນັ້ນເປີດໃຊ້ງານນີ້ແຕ່ກໍານົດລະຫັດຜ່ານ
# ແລະ kbdintectionautheiuthenticationa ເພື່ອ 'ບໍ່'.
# ໃບອະນຸຍາດໃຫ້
# allow allow allow allow allow allow allow allow allow allow allow allow allow yes ແມ່ນ
# ປະຕູປະຕູ
# X11Displayaffs 10
# x11usalocalhost ແມ່ນແລ້ວ
# permletty ແມ່ນແລ້ວ
# Printlaststlog ແມ່ນແລ້ວ
# tcpkeepalive ແມ່ນແລ້ວ
# ອະນຸຍາດໃຫ້ບໍ່ມີ
# ການບີບອັດຊັກຊ້າ
# ລູກຄ້າລູກຄ້າ 0
# SMERMALIONCOUNCOUNTMAX 3
# ໃຊ້ບໍ່
# PIDFILE /RUN/SSHD.PID
# MaxStartups 10: 30: 100
# ອະນຸຍາດ
# chrootdirectory none
# ventrupentdendum ບໍ່ມີ
# ບໍ່ມີເສັ້ນທາງ Banner Banner
# ອະນຸຍາດໃຫ້ລູກຄ້າຜ່ານຕົວແປສະພາບແວດລ້ອມຂອງທ້ອງຖິ່ນ
# override ເລີ່ມຕົ້ນຂອງລະບົບຍ່ອຍ
# ຕົວຢ່າງຂອງການຕັ້ງຄ່າໃນພື້ນຖານຂອງຜູ້ໃຊ້ຕໍ່ຜູ້ໃຊ້
# ກົງກັບ anoncvs ຜູ້ໃຊ້
# x11forwing ບໍ່
# ອະນຸຍາດໃຫ້ອະນຸຍາດໃຫ້ບໍ່
# permletty ບໍ່
# Server Server CVS ForceCtom CVS
ຈືຂໍ້ມູນການ, ctrl + x ແລະ y ເພື່ອບັນທຶກເອກະສານ. ຕໍ່ໄປ, ໃຫ້ຂຽນສະຄິບພື້ນຖານທີ່ເອີ້ນວ່າການເລີ່ມຕົ້ນ (ທັງຫມົດໃນລາຍຊື່ໃນຕອນຕົ້ນຂອງຜູ້ໃຊ້ຂອງພວກເຮົາ).
nano initialize
ຕື່ມສາຍເຫຼົ່ານີ້ໃສ່ເອກະສານ, ປ່ຽນແທນ
# ! / bin / bash
ເພື່ອຍ່າງທ່ານຜ່ານເອກະສານນີ້, ໃຫ້ເລີ່ມຕົ້ນເສັ້ນໂດຍເສັ້ນ. ສາຍທໍາອິດບອກຜູ້ລວບລວມຂໍ້ມູນວ່ານີ້ແມ່ນສະຄິບແຕກ. ຫຼັງຈາກນັ້ນ, ພວກເຮົາກໍາລັງຕິດຕັ້ງຄືນໃຫມ່, ຄັດລອກ SSHD_Config ໃສ່ປຸ່ມ 'Restart SSH' ພວກເຮົາຍັງເພີ່ມທີມເຂົ້າໃນກຸ່ມ SUDO, ສ້າງປຸ່ມ SUS, ເພີ່ມຄີຂອງພວກເຮົາໃຫ້ພວກເຮົາເຂົ້າໃນຄີແລະຂອງພວກເຂົາເຊັ່ນດຽວກັນ, ແລະພິມປຸ່ມຂອງພວກເຂົາ. ຜູ້ໃຊ້ໃຫມ່ນີ້ຈະເປັນວິທີທີ່ພວກເຮົາເຂົ້າສູ່ລະບົບ.
ຢູ່ປາຍຍອດໃຫມ່, ສືບຕໍ່ເດີນຫນ້າແລະເປີດເຄື່ອງແມ່ຂ່າຍອີກຄັ້ງ.
ssh team@XX.XX.XX.XX
ທ່ານບໍ່ຄວນຕ້ອງການລະຫັດລັບໃນເວລານີ້, ເປັນຄືກັບທີ່ທ່ານມີກຸນແຈ SSH. ພວກເຮົາຍັງໄດ້ປິດການເຂົ້າສູ່ລະບົບດ້ວຍລະຫັດຜ່ານເພື່ອໃຫ້ເວັບໄຊທ໌້ປອດໄພກວ່າ.
ດຽວນີ້ເຄື່ອງແມ່ຂ່າຍນີ້ເລີ່ມວ່າງໂດຍບໍ່ມີຂໍ້ມູນກ່ຽວກັບມັນ. ໃຫ້ເລີ່ມຕົ້ນໂດຍການປິດໂຄງການຂອງພວກເຮົາຈາກ git ເພື່ອພວກເຮົາສາມາດດາວໂຫລດແລະແລ່ນມັນຢູ່ໃນເຄື່ອງທີ່ຫ່າງໄກ. ຢູ່ໃນ server ຫ່າງໄກສອກຫຼີກທີ່ເຊື່ອມຕໍ່ຜ່ານ SSH, ທໍາອິດພິມປຸ່ມ SSH ຂອງທ່ານ:
cat ~/.ssh/id_rsa.pub
ຕໍ່ໄປ, ໃສ່ຄີນີ້ເຂົ້າໃນການຕັ້ງຄ່າ GIT ຄືກັບທີ່ພວກເຮົາໄດ້ເຮັດກ່ອນທີ່ຈະຕັ້ງຫໍ Git ຂອງພວກເຮົາ. ດຽວນີ້ພວກເຮົາອາດຈະໂຄດໂຄງການຂອງພວກເຮົາໂດຍກົງກັບເຊີບເວີ. ໃຫ້ແນ່ໃຈວ່າທ່ານໄດ້ສະຫນັບສະຫນູນໂຄງການໃນທ້ອງຖິ່ນກ່ອນອື່ນຫມົດມັນຢູ່ໃນ Git Server ເພື່ອດາວໂຫລດ.
git clone git://github.com/you/yourproject.git
ເລີດ. ດຽວນີ້ທຸກເອກະສານຢູ່ທີ່ນີ້. ພວກເຮົາສາມາດເບິ່ງພວກເຂົາກັບ ls
ls
ໃນປັດຈຸບັນ, ໃຫ້ເລີ່ມຕົ້ນທີ່ຈະຕັ້ງ server. ຫນ້າທໍາອິດ, ສໍາເນົາໄດເລກະທໍລີໂຄງການຂອງທ່ານເປັນຊື່ທີ່ງ່າຍດາຍ, ພວກເຮົາຈະໃຊ້ສໍາລັບໂຄງການ.
cp -r yourproject whatyoucalledit
ບ່ອນທີ່ "WINTYOUULLEDITEDITION" ແມ່ນຊື່ໃຫມ່ຂອງໂຄງການຂອງທ່ານ. ຕໍ່ໄປ, ພວກເຮົາຈະຕ້ອງສ້າງຜົນປະໂຫຍດຂັ້ນພື້ນຖານໃນການຕັ້ງຄ່າເຊີຟເວີ. ພວກເຮົາຈະຊ່ວຍປະຢັດຜົນປະໂຫຍດນີ້ແລະໃຊ້ມັນໃນອະນາຄົດ. ການກໍ່ສ້າງຜົນປະໂຫຍດນີ້, ໃຫ້ສ້າງຖານສອງຂອງຜູ້ໃຊ້ເພື່ອກໍານົດວິທີທີ່ພວກເຮົາດັດແກ້ສະຄິບ. ການໃຊ້ Bash, ດັດແກ້ / user / bin / ascript
sudo nano /usr/bin/ascript
ໃຫ້ແນ່ໃຈວ່າໃຊ້ sudo ທີ່ນັ້ນເພື່ອໃຫ້ທ່ານມີສິດອະນຸຍາດເພື່ອດັດແກ້ເອກະສານ. ໃນເອກະສານ, ເພີ່ມສາຍເຫຼົ່ານີ້:
# ! / bin / bash
echo "# ! / bin / bash ">> / user / bin / $ 1
ຈືຂໍ້ມູນການສະຄິບນີ້ໃຊ້ເວລາການໂຕ້ຖຽງ, ຊື່ອັກສອນ, ເປັນ $ 1. ທໍາອິດໃຫ້ກວດສອບຖ້າເອກະສານມີຢູ່, ຫຼືຖ້າບໍ່ດັ່ງນັ້ນ, ຖ້າເອກະສານມີຢູ່ແລ້ວ, ພຽງແຕ່ປ່ຽນສິດອະນຸຍາດແລະດັດແກ້ມັນ. ບັນທຶກເອກະສານ, ແລະຕໍ່ໄປພວກເຮົາຈະປ່ຽນການອະນຸຍາດຂອງມັນ. ຕາບໃດທີ່ພວກເຮົາໃຊ້ສະຄິບນີ້, ພວກເຮົາຈະບໍ່ຈໍາເປັນຕ້ອງເຮັດແບບນັ້ນອີກ.
sudo chmod a+x /usr/bin/ascript
ເລີດ. ຕອນນີ້ໃຫ້ພວກເຮົາສ້າງສະຄິບທີ່ມີຊື່ວ່າການຕັ້ງຄ່າ. ຫນ້າທໍາອິດ, ບໍ່ແມ່ນເພື່ອຄອບງໍາທ່ານ, ແຕ່ໃຫ້ເບິ່ງສິ່ງທີ່ສະຄິບ setup ເບິ່ງຄືວ່າ. ພວກເຮົາຈະຍ່າງຜ່ານສິ່ງທີ່ອັກສອນນີ້ຄວນເບິ່ງຄືວ່າໃນໂຄງການຂອງທ່ານ, ທ່ານຈະບໍ່ຕ້ອງການທຸກຢ່າງໃນສະຄິບຂອງຂ້ອຍທີ່ຈະເລີ່ມຕົ້ນ.
# ! / bin / bash
# sudo chmb rob rob ອັກສອນ + X ອັກສອນ / asssetup
# ./scripts/usersetup
# SSH-Keygen
# ປື້ມຄູ່ມື
# ບັນທຶກຄໍາສັ່ງ
# nano config
# git config
# ປັບປຸງແລະຕິດຕັ້ງ
# ເປີດໃຊ້ Clamav Antivirus
# ກໍານົດຊື່ໂຮດ
# POSSGRES SETUS
# ຕັ້ງຄ່າຖານຂໍ້ມູນສໍາຮອງ
# ປິດການໃຊ້ງານ meptables
# ຕິດຕັ້ງ Bitdefender
# ຕັ້ງ POSTEFIX
# ສ້າງ dirs
# ການຕັ້ງຄ່າ Virtualvenv
# ໄດ້ຮັບແລະສ້າງການເພິ່ງພາອາໄສ
# ຕັ້ງຄ່າກົດລະບຽບຂອງ Firewall
# ຕິດຕັ້ງ remildencies pypi
pip3 install --upgrade opencv-python # == 4.5.4.60
pip3 install --upgrade opencv-contrib-python # == 4.5.4.60
# PIP install opercv-python == 4.5.5.64
# PIP install opercv-comp-python == 4.5.5.64
# ຕິດຕັ້ງ CentBot
# ດໍາເນີນການ Centbot
# ໂຫຼດອີເມວອີເມວ
# coper Contics
# sudo cp /etc/letsencrypt/Live/femAbabe.com/privkey.pem privley.pem
# sudo cp /etc/letsencrypt/Live/femAbabe.com/Cert.pem Cert.Pem
# ເພີ້ມ vsv
# ຕັ້ງຄ່າການຕັ້ງຄ່າຜູ້ໃຊ້
# ຕັ້ງສິດອະນຸຍາດ
# sudo chown -r ທີມ: ຜູ້ໃຊ້ / var / ແລ່ນ /
# oot suge chown: root / run / sudo / ts -r
# sudo chmod 664 db.sqlite3
# sudo chown chown-data: ຜູ້ໃຊ້ db.sqlite3
# ຄັດລອກ config ແລະຕັ້ງສິດອະນຸຍາດ
# ການຕັ້ງຄ່າຖານຂໍ້ມູນ
# ສັກຢາ PAM CONFIG ແລະເອົາ SSH CONFIG ທີ່ມີຄວາມຜິດ
# SUDE SED -I '' '-E' $ D '/ POTC/PAM/PAM.D/SSHD
# sodo sed -i '' '-e' $ d '/ etc / etc / profile
# ຄັດລອກ Scripts bin ແລະກໍານົດສິດອະນຸຍາດ
# ໂຫຼດໃຫມ່ແລະເປີດໃຊ້ງານບໍລິການ
# ເປີດໃຊ້ໂມດູນ Apache
# sudo a2dismod mpm_event
# sudo a2dismod mpm_worker
# sudo a2enmod mpm_prefork
# ປິດການໃຊ້ງານໃນຕອນຕົ້ນ
# ເປີດໃຊ້ເວບໄຊທ໌ຂອງພວກເຮົາ
# ໂຫລດ Daemon Daemon ແລະ Restart Apache, Postfix ແລະ OpenDkim
# ຕັ້ງສິດອະນຸຍາດ
# ການຕັ້ງຄ່າແລກປ່ຽນການແລກປ່ຽນ
# ເຄື່ອງຈັກຫົວຂໍ້
# ຕັ້ງຄ່າ git
# ສະແດງ IPv6 ແລະ OpenDKIM ສໍາລັບການຕັ້ງຄ່າໂດເມນ
# ການຕັ້ງຄ່າສໍາເລັດແລ້ວ
ນັ້ນແມ່ນການຕັ້ງຄ່າຫຼາຍ! ໃນສັ້ນ, ລະຫັດນີ້ບັນທຸກຄໍາສັ່ງນີ້, ຕັ້ງຄ່າ Nano, Contabase and Postfix, Controdure Postfix, ດາວໂລດ antivirus, ດາວໂຫລດ antivirus, ສ້າງລາຍຊື່, clones ການເພິ່ງພາອາໄສ, ຕິດຕັ້ງໃບຢັ້ງຢືນແລະຕັ້ງຄ່າເຊີຟເວີ, ຕິດຕັ້ງແລະເປີດເຜີຍໃຫ້ເຫັນ, ຈັດການອະນຸຍາດ, ແລະພິມທີ່ຢູ່ IP, IPv6, ຄີ ipndkim. ງ່າຍດາຍທີ່ສວຍງາມ, ແຕ່ວ່າມັນເບິ່ງຄືວ່າມີຫຼາຍລະຫັດ. ພວກເຮົາຕ້ອງການສິ່ງນີ້ຫຼາຍຢ່າງເພາະວ່າພວກເຮົາບໍ່ມີການເພິ່ງພາອາໄສ, ພວກເຮົາບໍ່ໄດ້ໃຊ້ celery, celerybeat ຫຼື daphne, ແຕ່ພວກເຮົາຈະເລີ່ມຕົ້ນບາງຢ່າງເພື່ອເລີ່ມຕົ້ນ. ສັງເກດວ່າລະຫັດນີ້ມີໂດເມນປະກາດຫຼາຍຄັ້ງ.
ພວກເຮົາຍັງຈະຕ້ອງໄດ້ຊື້ຊື່ໂດເມນ (ເຊິ່ງເປັນຄ່າທໍານຽມປະຈໍາປີທີ່ນ້ອຍ). ຂ້ອຍຂໍແນະນໍາໃຫ້ Squarpace ສໍາລັບການຊື້ໂດເມນ, ຮູບແບບຂອງພວກເຂົາແມ່ນມີຄວາມລະອຽດແລະງ່າຍຕໍ່ການໃຊ້. ທ່ານສາມາດຊື້ໂດເມນໃດຫນຶ່ງທີ່ທ່ານເລືອກ, ແຕ່ຂ້ອຍກໍາລັງໃຊ້ໂດເມນ Femumabe.com ໃນຕົວຢ່າງນີ້. ເມື່ອທ່ານໄດ້ຊື້ໂດເມນ, ມຸ່ງຫນ້າໄປຍັງກະດານຕັ້ງຄ່າ DNS Squarespace ແລະເພີ່ມບັນທຶກໂດເມນຂອງທ່ານໃຫ້ກັບ Address ໂດຍ IP Address. ມັນຄວນຈະເປັນແບບນີ້:
@ a xx.xx.xx.xx
ກັບຜູ້ປະຕິບັດງານ @ ເປັນເຈົ້າພາບ, ຊຶ່ງຫມາຍຄວາມວ່າໂດເມນຍ່ອຍທັງຫມົດຢູ່ພາຍໃຕ້ໂດເມນນີ້ແລະໂດເມນຮາກຈະປ່ຽນເປັນເຊີບເວີ. ມີບັນທຶກຫລາຍຂື້ນໃນການປະກາດ, ແຕ່ພວກເຮົາສາມາດກ້າວໄປສູ່ສິ່ງເຫຼົ່ານີ້ໄດ້ເມື່ອພວກເຮົາພ້ອມແລ້ວທີ່ຈະສົ່ງຈົດຫມາຍ. ຈົ່ງຈື່ໄວ້ວ່າ, ມັນອາດຈະໃຊ້ເວລາຫຼາຍມື້ກ່ອນທີ່ທ່ານຈະສາມາດສົ່ງຈົດຫມາຍຈາກເຊີບເວີໄດ້ປະສົບຜົນສໍາເລັດ. ບັນທຶກ DNS ທີ່ພວກເຮົາກໍາລັງຕັ້ງຄ່າຈະໃຊ້ເວລາໃນການຂະຫຍາຍພັນ.
ເຖິງຢ່າງໃດກໍ່ຕາມ, ບັນທຶກດຽວທີ່ພວກເຮົາຕ້ອງການເພື່ອເລີ່ມຕົ້ນແມ່ນບັນທຶກ. ສະນັ້ນດຽວນີ້ພວກເຮົາສາມາດຕື່ມຂໍ້ມູນໃສ່ສະຄິບຂ້າງລຸ່ມນີ້ຕາມໂຄງການຂອງພວກເຮົາແລະແລ່ນມັນ.
ໃຫ້ເລີ່ມຕົ້ນດ້ວຍຕົວອັກສອນທີ່ຕັ້ງຂະຫນາດນ້ອຍກວ່າເພື່ອຕິດຕັ້ງສິ່ງທີ່ພວກເຮົາຕ້ອງການເພື່ອຄວາມກ້າວຫນ້າຂັ້ນພື້ນຖານ. ພວກເຮົາຈະບໍ່ໃຊ້ຕົວແບບຫຼື PostgreSQL ຫຼາຍຢ່າງ, ພວກເຮົາພຽງແຕ່ຈະເລີ່ມຕົ້ນ HTTP Server ທີ່ກໍານົດໄວ້ແລະກັງວົນກ່ຽວກັບການຢັ້ງຢືນມັນເມື່ອໃດ. ຈືຂໍ້ມູນການ, ເພື່ອໃຫ້ໄດ້ຮັບໃບຢັ້ງຢືນ https ແລະດໍາເນີນການ server ຢ່າງປອດໄພ, ພວກເຮົາຈໍາເປັນຕ້ອງຊື້ໂດເມນພ້ອມກັບເຊົ່າ server. ສໍາລັບດຽວນີ້, ທົດແທນ "ທີມງານ" ໃນເອກະສານນີ້ກັບຊື່ຂອງຜູ້ໃຊ້ຂອງທ່ານ, "Dir" ກັບໄດເລກະທໍລີຂອງໂຄງການຂອງທ່ານ, ແລະໂດເມນຂອງທ່ານຢູ່ໃນ <> tags.
ນອກຈາກນັ້ນ, ກ່ອນທີ່ພວກເຮົາຈະດໍາເນີນລະຫັດນີ້, ພວກເຮົາຈໍາເປັນຕ້ອງປ່ຽນການຕັ້ງຄ່າໄປທີ່ Firewall ໃຫ້ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງສະຫນັບສະຫນູນ, ຖ້າມີ. ໂດຍປົກກະຕິແລ້ວນີ້ແມ່ນຢູ່ໃນແຖບ 'Networks' ຂອງຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຂອງທ່ານ, ຫຼືຖ້າທ່ານເປັນເຈົ້າພາບຕົວເອງ, ມັນຢູ່ໃນສ່ວນ 'Port Forwarding Port ຂອງ router. ທ່ານຍັງຈະຕ້ອງການທີ່ຈະຕັ້ງ IP ທີ່ສະຖຽນລະພາບຜ່ານ router ຂອງທ່ານກັບທີ່ຢູ່ຂອງເຄື່ອງເຊີຟເວີຂອງທ່ານ, ຖ້າທ່ານກໍາລັງໃຊ້ໂຮດຕິ້ງຕົວເອງ. ທ່ານຈະຕ້ອງເປີດພອດຕໍ່ໄປນີ້ສໍາລັບການເຂົ້າເຖິງການອ່ານ / ຂຽນ.
22 (SSH) 25 (ຈົດຫມາຍ) 587 (mail) 110 (ລູກຄ້າເມລ) 80 (HTTP) 443 (HTTPS)
# ! / bin / bash
# ບັນທຶກຄໍາສັ່ງ
# nano config
# git config
# ປັບປຸງແລະຕິດຕັ້ງ
# ເປີດໃຊ້ Clamav Antivirus
# ກໍານົດຊື່ໂຮດ
# ຕັ້ງຄ່າຖານຂໍ້ມູນສໍາຮອງ
# ປິດການໃຊ້ງານ meptables
# ການຕັ້ງຄ່າ Virtualvenv
# ຕິດຕັ້ງ CentBot
# ດໍາເນີນການ Centbot
# ຕັ້ງຄ່າການຕັ້ງຄ່າຜູ້ໃຊ້
# ຕັ້ງສິດອະນຸຍາດ
# sudo chown -r ທີມ: ຜູ້ໃຊ້ / var / ແລ່ນ /
# oot suge chown: root / run / sudo / ts -r
# ໂຫຼດໃຫມ່ແລະເປີດໃຊ້ງານບໍລິການ
# ເປີດໃຊ້ໂມດູນ Apache
# ໂຫລດ Daemon Daemon ແລະ Restart Apache, Postfix ແລະ OpenDkim
# ສະແດງ IPv6 ແລະ OpenDKIM ສໍາລັບການຕັ້ງຄ່າໂດເມນ
ກ່ອນທີ່ຈະໃຊ້ລະຫັດນີ້, ໃຫ້ແນ່ໃຈວ່າໂດເມນທີ່ທ່ານໄດ້ຊື້ແມ່ນເຊື່ອມຕໍ່ກັບເຊີບເວີ. ເພື່ອເຮັດສິ່ງນີ້, ເປີດຢູ່ປາຍຍອດໃນເຄື່ອງໃນທ້ອງຖິ່ນຂອງທ່ານ, ແລະດໍາເນີນການຄໍາສັ່ງນີ້ກັບໂດເມນຂອງທ່ານ:
ping femmebabe.com # ໃສ່ໂດເມນຂອງທ່ານທີ່ນີ້, ຫຼັງຈາກ ping
ຖ້າທຸກຢ່າງເບິ່ງຄືວ່າດີແລະເຄື່ອງແມ່ຂ່າຍແມ່ນສົ່ງຄໍາຕອບ, ພວກເຮົາພ້ອມທີ່ຈະດໍາເນີນການສະຄິບແລະຕິດຕັ້ງແພັກເກດພ້ອມທັງເລີ່ມຕົ້ນ, ເປີດໃຊ້ງານແລະຢັ້ງຢືນເຄື່ອງແມ່ຂ່າຍ Apache ຂອງພວກເຮົາ.
ນີ້ບໍ່ແມ່ນການຕັ້ງຄ່າທັງຫມົດທີ່ຈໍາເປັນໃນການຕັ້ງຄ່າ Postfix, ພວກເຮົາຈະເບິ່ງການຕັ້ງຄ່ານັ້ນຫຼາຍກວ່າເກົ່າ. ສໍາລັບດຽວນີ້, ດໍາເນີນລະຫັດການຕັ້ງຄ່ານີ້ແລະມັນຄວນໃຊ້ເວລາສອງສາມນາທີເພື່ອຕິດຕັ້ງແລະຢັ້ງຢືນເຄື່ອງແມ່ຂ່າຍຂອງທ່ານ. ອີກເທື່ອຫນຶ່ງ, ໃຫ້ແນ່ໃຈວ່າຈະທົດແທນຊື່, ອີເມວແລະຊື່ໂດເມນໃນສະຄິບຕາມຊື່ທີ່ທ່ານຊື້.
ດຽວນີ້ເຄື່ອງແມ່ຂ່າຍຖືກສະຫນອງ, ທ່ານສາມາດໄປທີ່ URL ໃນໂປແກຼມທ່ອງເວັບໃດໆແລະກວດສອບເພື່ອໃຫ້ແນ່ໃຈວ່າເຄື່ອງແມ່ຂ່າຍແມ່ນແລ່ນ HTTPS. ຖ້າມັນບໍ່ແມ່ນ, ລອງລໍຖ້າເວລາພຽງເລັກນ້ອຍສໍາລັບການບັນທຶກ DNS ເພື່ອຈັບຕົວແລະຫຼັງຈາກນັ້ນດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ເພື່ອທົດແທນໃບຢັ້ງຢືນຫຼັກຊັບ:
sudo certbot --apache --non-interactive --agree-tos --domains <domain>.com --email <youremail>@gmail.com
ຕາບໃດທີ່ທ່ານໄດ້ກໍານົດທຸກຢ່າງຢ່າງຖືກຕ້ອງ, ທ່ານຄວນສາມາດເຂົ້າເບິ່ງຫນ້າທໍາອິດຂອງ Apache ເພື່ອຮູ້ລະຫັດຂອງທ່ານກໍາລັງເຮັດວຽກແລະສະແດງເວບໄຊທ໌ທີ່ມີຊີວິດຊີວາ. ຕໍ່ໄປ, ໃຫ້ການດັດແກ້ settings.py ເພື່ອປ່ຽນຮູບແບບ debug ເລີ່ມຕົ້ນຂອງພວກເຮົາໃຫ້ຜະລິດ. ພວກເຮົາຍັງຈະຕັ້ງຄ່າໂດເມນໃນການຕັ້ງຄ່າ, ພ້ອມທັງ IPS ພາຍໃນ.
nano yourproject/settings.py
ໃນການຕັ້ງຄ່າ, ປ່ຽນ / ເພີ່ມສາຍເຫຼົ່ານີ້.
# ການຕັ້ງຄ່າເວັບໄຊ
ດຽວນີ້, ພວກເຮົາຈະຕ້ອງໄດ້ຕັ້ງຄ່າ Apache2. ຂໍໃຫ້ແກ້ໄຂເອກະສານ config ພວກເຮົາຈະນໍາໃຊ້ກັບສາຍນີ້:
sudo nano /etc/apache2/sites-available/femmebabe-le-ssl.conf
ເອກະສານ config ນີ້ຄວນມີຊື່ໂດເມນຂອງພວກເຮົາໃນມັນ, ແລະຊື່ຂອງຜູ້ໃຊ້ແລະໂຄງການ. ຂ້ອຍກໍາລັງໃຊ້ຊື່ໂດເມນ Femetebabe.com, ທີມຜູ້ໃຊ້ຊື່ຜູ້ໃຊ້, ແລະຊື່ໂຄງການຊື່ Femumebabe.
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>
ໃຫ້ແນ່ໃຈວ່າຈະປ່ຽນຊື່ຂອງໂຄງການ, ລາຍການ, ແລະໂດເມນໃນລະຫັດຕົວຢ່າງນີ້ເມື່ອຕັ້ງຄ່າ server ຂອງທ່ານ. ດຽວນີ້, ພວກເຮົາຈະຕ້ອງປິດສະຖານທີ່ເລີ່ມຕົ້ນ. ນີ້ສາມາດເຮັດໄດ້ໂດຍໃຊ້ Bash.
sudo a2dissite 000-default-le-ssl
sudo a2dissite 000-default
sudo a2dissite default-ssl
ຕໍ່ໄປ, ພວກເຮົາສາມາດເປີດໃຊ້ເວັບໄຊທ໌້ໍາເລີ່ມຕົ້ນແລະ reload Apache2, ຍັງໃຊ້ Bash. ຈືຂໍ້ມູນການທີ່ຈະທົດແທນ Femumebabe ກັບຊື່ຂອງເອກະສານທີ່ທ່ານປະກາດເມື່ອດັດແປງເຂົ້າ / ອື່ນໆ / apache-all / apache-access.
sudo a2ensite femmebabe-le-ssl
sudo systemctl reload apache2
ກັບໄປທີ່ໂດເມນຂອງທ່ານໃນ NAVAR. ທ່ານຄວນຈະເຫັນເວັບໄຊທ໌້ທີ່ທ່ານຕັ້ງຄ່າໃນໂປແກຼມທ່ອງເວັບຂອງທ່ານ. ຊົມເຊີຍ! ຖ້າທ່ານບໍ່ເຫັນມັນ, ທ່ານອາດຈະຕ້ອງມີການປ່ຽນແປງບາງຢ່າງ. ກວດກາການຕັ້ງຄ່າຢ່າງລະມັດລະວັງໃນໂຄງການ, ການຕັ້ງຄ່າ Apache, ແລະໃຫ້ແນ່ໃຈວ່າທ່ານບໍ່ມີຂໍ້ຜິດພາດ, ແລະດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ເພື່ອກວດສອບໂຄງການສໍາລັບຂໍ້ຜິດພາດ.
cd projectname
source venv/bin/activate
python manage.py check
ຖ້າທ່ານມີຂໍ້ຜິດພາດໃນໂຄງການ Python ຂອງທ່ານ, ຕິດຕາມພວກມັນໄປບ່ອນທີ່ພວກເຂົາຢູ່ແລະແກ້ໄຂພວກມັນ. ທ່ານອາດຈະບໍ່ສາມາດເຫັນຄວາມຜິດພາດທັງຫມົດຂອງທ່ານຂຶ້ນຢູ່ກັບບ່ອນທີ່ພວກເຂົາຢູ່, ສະນັ້ນຖ້າທ່ານມີຂໍ້ຜິດພາດ ", ດັດແກ້ເອກະສານດັ່ງຕໍ່ໄປນີ້ໃນສະພາບແວດລ້ອມເສມືນ. mady, ເພື່ອເປີດເຜີຍຂໍ້ຜິດພາດ.
nano venv/lib/python3.12/site-packages/django/apps/registry.py
ເລື່ອນໄປຫາເສັ້ນ 83, ບ່ອນທີ່ມີຄວາມຜິດພາດໃນໄລຍະເວລາທີ່ຖືກຍົກຂຶ້ນມານີ້ (ຍົກສູງ runtionError ()) ນີ້ເບິ່ງຄືວ່າ:
# ປ້ອງກັນການໂທທີ່ມີລິຂະສິດເພື່ອຫລີກລ້ຽງການແລ່ນ AppConfig.Ready ()
# ວິທີການສອງຄັ້ງ.
# ຍົກສູງ RuntimeRor ("populate () ບໍ່ແມ່ນ reentrant")
ຈາກນັ້ນທ່ານສາມາດກວດສອບໂຄງການອີກຄັ້ງແລະເປີດເຜີຍຂໍ້ຜິດພາດ.
python manage.py check
ຫຼັງຈາກນັ້ນທ່ານສາມາດເຫັນຂໍ້ຜິດພາດແລະແກ້ໄຂມັນ. ເມື່ອທ່ານມີການສ້ອມແຊມແລະລະຫັດທີ່ລວບລວມໂດຍບໍ່ມີຂໍ້ຜິດພາດ, ໃຫ້ແນ່ໃຈວ່າຈະປ່ຽນໄຟລ໌ຄືນດັ່ງນັ້ນມັນເບິ່ງຄືວ່າ:
# ປ້ອງກັນການໂທທີ່ມີລິຂະສິດເພື່ອຫລີກລ້ຽງການແລ່ນ AppConfig.Ready ()
# ວິທີການສອງຄັ້ງ.
# self.app_Configs = {{}
ສະຫນອງໃຫ້ເຊີບເວີແມ່ນ online, ເມື່ອພວກເຮົາປ່ຽນແປງຕໍ່ໄປ, ພວກເຮົາຕ້ອງໃຊ້ຄໍາສັ່ງຕໍ່ໄປນີ້ເພື່ອໂຫລດຄືນ Server:
sudo systemctl reload apache2
ຫນ້າຫວາດສຽວ! ແຕ່ຈະເປັນແນວໃດກ່ຽວກັບການສົ່ງຈົດຫມາຍ? ເພື່ອເລີ່ມຕົ້ນສົ່ງອີເມວ, ກ່ອນອື່ນຫມົດພວກເຮົາຕ້ອງໄດ້ປັບປຸງການຕັ້ງຄ່າໂດເມນ. ນີ້ຄວນຈະຢູ່ໃນກະດານ DNS ຂອງທ່ານໃນ Squarespace, ຫຼືສິ່ງໃດກໍ່ຕາມທີ່ນາຍທະບຽນຊື່ໂດເມນທີ່ທ່ານເລືອກ. ພວກເຮົາຍັງຈະຕ້ອງຕິດຕັ້ງແລະເພີ່ມການຕັ້ງຄ່າ, ແລະດໍາເນີນການຄໍາສັ່ງບໍ່ພໍເທົ່າໃດ.
ຫນ້າທໍາອິດ, ໃຫ້ໄດ້ຮັບທີ່ຢູ່ IPv6 ຂອງ server. ຈາກນັ້ນພວກເຮົາຈະເປີດ DNS ຂອງທ່ານແລະເພີ່ມບັນທຶກ.
ເພື່ອໃຫ້ໄດ້ທີ່ຢູ່ IPv6 ຂອງ server, ໃຊ້ຄໍາສັ່ງນີ້:
ip -6 addr
ໃນປັດຈຸບັນ, ພວກເຮົາສາມາດເພີ່ມບັນທຶກດັ່ງຕໍ່ໄປນີ້ເຂົ້າໃນການຕັ້ງຄ່າ DNS. ບັນທຶກຂອງຂ້ອຍເບິ່ງຄືແນວນີ້. ເຖິງຢ່າງໃດກໍ່ຕາມ, ສໍາລັບບັນທຶກຂອງທ່ານ, ທ່ານຄວນປ່ຽນທີ່ຢູ່ IP ກັບ IP ຂອງທ່ານ (ບໍ່ແມ່ນ 75.147.1.187.182,214.214, ນັ້ນແມ່ນຂອງຂ້ອຍ). ພ້ອມທັງເພີ່ມໂດເມນຂອງທ່ານຢູ່ບ່ອນທີ່ຢູ່ IPv6, ພ້ອມທັງທີ່ຢູ່ IPv6 ຂອງທ່ານທີ່ພົບກັບ The Prema-Apress (ທ່ານບໍ່ສາມາດໃຊ້ລະເບີດຝັງດິນ, FE40 :: 725A: FE49: 3E02). ຢ່າກັງວົນກ່ຽວກັບໂດເມນທີ່ສໍາລັບໂດເມນທີ່ສໍາລັບ, ສິ່ງນີ້ໄດ້ຖືກສ້າງຂື້ນເມື່ອພວກເຮົາຕັ້ງ Postfix, ເຄື່ອງແມ່ຂ່າຍເມລ, ກັບ Opendkim, ແລະພິມປຸ່ມ. ພວກເຮົາຈະຕັ້ງຄ່າໃນຄັ້ງສຸດທ້າຍນີ້.
ການ ກ n / a 75.14147.182.214
ການ ມິກ ມັດຖິ FemmeBabe.com
ການ ອະນຸສັນຍາທິບ n / a FemmeBabe.com
ການ txt n / a TXT @ v = SPF1 MX IP75.147.142.21.214.21.21.21.21: FEMIE0 :: 725A: FE49: 3E02 ~ ທັງຫມົດ
default._bimi txt n / a v = Bimi1; L = HTTPS: //femAbabe.com/media/media/static/FEMMEBABE.SVG
_dmarc txt n / a v = DMARC1; p = ບໍ່ມີ
sendonly._domainkey
txt
n / a
ດຽວນີ້, ພວກເຮົາຈະຕ້ອງເພີ່ມການຕັ້ງຄ່າບາງຢ່າງທີ່ຕັ້ງໃຈສໍາລັບ Postfix. ສິ່ງທີ່ພວກເຮົາຕ້ອງເຮັດແມ່ນໃຫ້ແນ່ໃຈວ່າພວກເຮົາຈະທົດແທນຊື່ໂດເມນ, Femebebabe.com, ດ້ວຍຊື່ໂດເມນທີ່ທ່ານກໍາລັງໃຊ້. ຂໍໃຫ້ພິຈາລະນາເບິ່ງເອກະສານ config ທັງຫມົດຫນຶ່ງຫນ່ວຍ, ແລະຕິດຕັ້ງຢູ່ໃນໄດເລກະທໍລີທີ່ເອີ້ນວ່າ config ໃນໂຄງການຂອງພວກເຮົາ, ສໍາລັບການຕິດຕັ້ງໃຫ້ OS.
nano config/etc_postfix_main.cf
ເພີ່ມຂໍ້ຄວາມນີ້ໃສ່ເອກະສານ
# ເບິ່ງ / s/usr/share/postfix/main.cf.dist ສໍາລັບສະບັບໃຫ້ຄໍາເຫັນ, ສະບັບເພີ່ມເຕີມ
# Debian ສະເພາະ: ການລະບຸຊື່ແຟ້ມຈະເຮັດໃຫ້ຜູ້ທໍາອິດ
# ເສັ້ນຂອງເອກະສານນັ້ນທີ່ຈະຖືກນໍາໃຊ້ເປັນຊື່. debian ເລີ່ມຕົ້ນ
# ແມ່ນ / etc / mailname.
# myorigin = / etc etc / mailname
# ເພີ່ມເຕີມ .domain ແມ່ນວຽກຂອງ Mua.
# Uncomment ເສັ້ນຕໍ່ໄປເພື່ອສ້າງ "ຄໍາເຕືອນທີ່ຖືກຊັກຊ້າ" ຄໍາເຕືອນ
# discild_warning_time = 4h
# ເບິ່ງ http://www.postfix.org/Compatibility_readMel.html - ຄ່າເລີ່ມຕົ້ນເຖິງ 3.6
# ການຕິດຕັ້ງສົດ.
# ພາລາມິເຕີຂອງ TLS
# ການຕັ້ງຄ່າ Milter
Config ຕໍ່ໄປ!
nano config/etc_postfix_master.cf
ເພີ່ມສາຍເຫຼົ່ານີ້:
#
# ເອກະສານການຕັ້ງຄ່າ Protfix Master. ສໍາລັບລາຍລະອຽດກ່ຽວກັບຮູບແບບ
# ຂອງເອກະສານ, ເບິ່ງຕົ້ນສະບັບ (5) ຫນ້າຄູ່ມື (ຄໍາສັ່ງ: "ຜູ້ຊາຍ 5 Master" ຫຼື
# ໃນເສັ້ນ: http://www.postfix.org/master.5.HTML).
#
# ຢ່າລືມປະຕິບັດ "Postfix reload" ຫຼັງຈາກດັດແກ້ເອກະສານນີ້.
#
# ==========================================================================
# ປະເພດການບໍລິການສ່ວນຕົວ Chroot Wareway Hand MaxProc Command + Args
# (ແມ່ນແລ້ວ) (ແມ່ນແລ້ວ) (ບໍ່) (ບໍ່) (ບໍ່ເຄີຍ) (100)
# ==========================================================================
# smtp ineet n - y - 1 ໄປສະນີ
# SMTPD PASS - - Y - - SMTPD
# DNSBLOG Unix - - Y - 0 DNSBLOG
# TLSPROX Unix - - y - 0 tlsproxy
# ເລືອກຫນຶ່ງ: ເປີດໃຊ້ງານການຍື່ນສະເຫນີສໍາລັບລູກຄ້າ Loopback ເທົ່ານັ້ນ, ຫຼືສໍາລັບລູກຄ້າໃດຫນຶ່ງ.
# 127.0.1.1.1.1.1:submission inet n - y - - SMTPD
# -o sysog_name = postfix / ການຍື່ນສະເຫນີ
# -O smtpd_tls_security_Level = ເຂົ້າລະຫັດ
# -O smtpd_sasl_AURT_EMEBLE = ແມ່ນແລ້ວ
# -o smtpd_tls_auth_only = ແມ່ນແລ້ວ
# -o smtpd_Reje_unlisted_recidents = ບໍ່
# -O smtpd_clients_restricts_ $ mua_clients_restricts_
# -o smtpd_heli_restricts = $ mua_heli_restricts
# -O smtpd_sender_render_restricts = $ mua_sender_restricts_restricts
# -O smtpd_reciftient_restrictions =
# -O smtpd_relay_restrictions = peepper_sasl_authenticated, ປະຕິເສດ
# -o milter_macro_daemon_Name = ຕົ້ນກໍາເນີດ
# ເລືອກຫນຶ່ງ: ເປີດໃຊ້ smtps ສໍາລັບລູກຄ້າທີ່ Loopback ເທົ່ານັ້ນ, ຫຼືສໍາລັບລູກຄ້າໃດຫນຶ່ງ.
# 127.0.0.1:SMTS IN IN IN PET NOT N - Y - - SMTPD
# smtps intet n - y - - SMTPD
# -o sysog_name = postfix / smtps
# -O smtpd_tls_wrappermode = ແມ່ນແລ້ວ
# -O smtpd_sasl_AURT_EMEBLE = ແມ່ນແລ້ວ
# -o smtpd_Reje_unlisted_recidents = ບໍ່
# -O smtpd_clients_restricts_ $ mua_clients_restricts_
# -o smtpd_heli_restricts = $ mua_heli_restricts
# -O smtpd_sender_render_restricts = $ mua_sender_restricts_restricts
# -O smtpd_reciftient_restrictions =
# -O smtpd_relay_restrictions = peepper_sasl_authenticated, ປະຕິເສດ
# -o milter_macro_daemon_Name = ຕົ້ນກໍາເນີດ
# 628 iNET N - Y - - QMBQPD
# qmgr unix n - n 300 1 1 oqmgr
# -o smtp_helo_timeout = 5 -o smtp_connect_timeout = 5
#
# ====================================================================
# ອິນເຕີເຟດກັບຊອບແວທີ່ບໍ່ແມ່ນ postfix. ໃຫ້ແນ່ໃຈວ່າໄດ້ກວດກາຄູ່ມື
# ຫນ້າເຈ້ຍຂອງຊອບແວທີ່ບໍ່ແມ່ນທ່າທາງເພື່ອຊອກຫາຕົວເລືອກໃດທີ່ມັນຕ້ອງການ.
#
# ຫຼາຍບໍລິການຕໍ່ໄປນີ້ໃຊ້ Postfix Postfix (8) ສົ່ງ
# ຕົວແທນ. ເບິ່ງທໍ່ (8) Page MAN ສໍາລັບຂໍ້ມູນກ່ຽວກັບ $ {ຜູ້ຮັບ}}
# ແລະທາງເລືອກໃນຂໍ້ຄວາມອື່ນໆ.
# ====================================================================
#
# Mailingrop. ເບິ່ງເອກະສານ PostFix MailDrop_readme ສໍາລັບລາຍລະອຽດ.
# ຍັງລະບຸໃນ Main.CF: Mailingrop_destination_recift_ReliD_RIMIT = 1
#
#
# ====================================================================
#
# ສະບັບພາສາ Cyrus ທີ່ຜ່ານມາສາມາດໃຊ້ລາຍການ "LMTP" ທີ່ມີຢູ່ແລ້ວ.
#
# ລະບຸໃນ cyrus.conf:
# LMTP CMD = "LMTPD -A" ຟັງ = "LINDPOTS" LINGP "LMTP" Protop = TCP4
#
# ລະບຸໃນ Main.CF ຫນຶ່ງຫຼືຫຼາຍກວ່ານັ້ນຕໍ່ໄປນີ້:
# Mailbox_Transport = LMTP: iNet: Localhost
# Virtual_Transport = LMTP: iNet: Localhost
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# ຍັງລະບຸໃນ Main.CF: cyrus_destination_recient_Rimit = 1
#
# Cyrus Unix - n n - - ທໍ່
# ທຸງ FRADS = ຜູ້ໃຊ້ DRX = CYRON TRGV = / CYRUS / CYRUS / BIN / TIRS -E -E $} $ {$ {$} $ {ຜູ້ໃຊ້}
#
# ====================================================================
# ຕົວຢ່າງເກົ່າຂອງການຈັດສົ່ງຜ່ານ Cyrus.
#
# Old-CYRUS Unix - n n - - ທໍ່
# ທຸງ = r = ers arrus argv = / cyrus / bin / turnal -e -m $ {$ {$ {$} $ {ຜູ້ໃຊ້}
#
# ====================================================================
#
# ເບິ່ງເອກະສານ PostFix UCUP_RADEME ສໍາລັບລາຍລະອຽດການຕັ້ງຄ່າ.
#
#
# ວິທີການຈັດສົ່ງນອກອື່ນໆ.
#
ແລະການຕັ້ງຄ່າ Opendkim. Opendkim ກໍານົດເຄື່ອງແມ່ຂ່າຍອີເມວທີ່ມີປຸ່ມ Doman ເພື່ອເຮັດໃຫ້ພວກມັນປອດໄພກວ່າ. ຖ້າບໍ່ມີມັນ, Mail ບໍ່ໄດ້ລົງລາຍເຊັນແລະອາດຈະບໍ່ເຮັດໃຫ້ມັນເປັນກ່ອງຈົດຫມາຍ.
nano config/etc_default_opendkim
ເພີ່ມສາຍເຫຼົ່ານີ້:
# ຫມາຍເຫດ: ນີ້ແມ່ນເອກະສານການຕັ້ງຄ່າການຕັ້ງຄ່າທາງໄກ. ມັນບໍ່ໄດ້ຖືກນໍາໃຊ້ໂດຍ OpenDKIM
# ການບໍລິການທີ່ລະບຸ. ກະລຸນາໃຊ້ຕົວກໍານົດການຕັ້ງຄ່າທີ່ສອດຄ້ອງກັນໃນ
# /etc/аetc/pendkim.confແທນ.
#
# ກ່ອນຫນ້ານີ້, ຫນຶ່ງຈະດັດແກ້ການຕັ້ງຄ່າເລີ່ມຕົ້ນທີ່ນີ້, ແລະຫຼັງຈາກນັ້ນປະຕິບັດ
# /Lib/oldedkim/pendingkim.Service.generate ເພື່ອສ້າງບັນດາແຟ້ມ override
# /etc/sstypd/sstype/pendkim.Service.D/Soverere.conf ແລະ
# /etc/tmpfiles.d/pendkim.conf. ໃນຂະນະທີ່ນີ້ແມ່ນສິ່ງທີ່ເປັນໄປໄດ້, ດຽວນີ້ມັນເປັນໄປໄດ້
# ແນະນໍາໃຫ້ປັບການຕັ້ງຄ່າໂດຍກົງໃນ /etc/edpendkim.conf.
#
# daemon_opts = ""
# ປ່ຽນເປັນ / var / spool / postfix / Run / Opendkim ເພື່ອໃຊ້ເຕົ້າຮັບ unix
# Postfix ໃນ chroot:
# Rundir = / var / spool / postfix / Run / Opendkim
#
# Uncomment ເພື່ອລະບຸຊັອກເກັດອື່ນ
# ໃຫ້ສັງເກດວ່າການຕັ້ງຄ່ານີ້ຈະ override ມູນຄ່າຂອງຊັອກເກັດໃນ Opendkim.conf
# Default:
# ຟັງການໂຕ້ຕອບທັງຫມົດໃນ Port 54321:
# ເຕົ້າຮັບ = ineet: 54321
# ຟັງໃນ Loopback ໃນ Port 12345:
# ເຕົ້າຮັບ = ineet: 12345 @ Localhost
# ຟັງໃນປີ 192.0.2.1 ໃນ Port 12345:
# Socket = ineet: 12345@192.0.2.1
nano config/etc_dovecot_conf.d_10-master.conf
ເພີ່ມສາຍເຫຼົ່ານີ້:
# default_rocess_limit = 100
# default_client_limit = 1000
# Default vsz (ຂະຫນາດຫນ່ວຍຄວາມຈໍາທີ່ມີຄວາມຈໍາເປັນສໍາລັບຂະບວນການບໍລິການ. ນີ້ສ່ວນໃຫຍ່ແມ່ນ
# ມີຈຸດປະສົງທີ່ຈະຈັບແລະຂ້າຂະບວນການທີ່ຮົ່ວໄຫລອອກມາກ່ອນທີ່ພວກເຂົາຈະກິນ
# ທຸກສິ່ງທຸກຢ່າງ.
# default_vsz_limit = 256m
# ຜູ້ໃຊ້ເຂົ້າສູ່ລະບົບແມ່ນໃຊ້ໂດຍການເຂົ້າສູ່ລະບົບໂດຍຂັ້ນຕອນການເຂົ້າສູ່ລະບົບ. ນີ້ແມ່ນທີ່ບໍ່ຫນ້າເຊື່ອຖືທີ່ສຸດ
# ຜູ້ໃຊ້ໃນລະບົບ Dovecot. ມັນບໍ່ຄວນເຂົ້າເຖິງຫຍັງເລີຍ.
# Default_login_user = Dovenull
# ຜູ້ໃຊ້ພາຍໃນແມ່ນໃຊ້ໂດຍຂະບວນການທີ່ບໍ່ມີປະສິດຕິພາບ. ມັນຄວນຈະແຍກອອກຈາກ
# ເຂົ້າສູ່ລະບົບຜູ້ໃຊ້, ເພື່ອວ່າຂະບວນການເຂົ້າສູ່ລະບົບບໍ່ສາມາດລົບກວນຂະບວນການອື່ນໆ.
# Default_internments_User = Dovecot
# Port = 143
# Port = 993
# SSL = ແມ່ນແລ້ວ
# ຈໍານວນການເຊື່ອມຕໍ່ເພື່ອຈັດການກ່ອນທີ່ຈະເລີ່ມຕົ້ນຂະບວນການໃຫມ່. ໂດຍປົກກະຕິ
# ຄຸນຄ່າທີ່ເປັນປະໂຫຍດເທົ່ານັ້ນທີ່ມີຄວາມເປັນປະໂຫຍດ 0 (ບໍ່ຈໍາກັດ) ຫຼື 1. 1 ມີຄວາມປອດໄພກວ່າ, ແຕ່ 0
# ໄວກວ່າ. <doc / ວິກິພີເດຍ / ທີ່ທ່ານກໍາລັງກົດດັນ .txt>
# Service_Count = 1
# ຈໍານວນຂອງຂະບວນການທີ່ຈະສືບຕໍ່ລໍຖ້າການເຊື່ອມຕໍ່ເພີ່ມເຕີມ.
# Process_min_AVAIL = 0
# ຖ້າທ່ານຕັ້ງ Service_Count = 0, ທ່ານອາດຈະຕ້ອງໄດ້ຂະຫຍາຍຕົວສິ່ງນີ້.
# vsz_limit = $ ຄ່າເລີ່ມຕົ້ນ _vsz_limit
# Port = 110
# Port = 995
# SSL = ແມ່ນແລ້ວ
# ພອດ = 587
# ສ້າງຜູ້ຟັງທີ່ບໍ່ມີຕົວຕົນຖ້າທ່ານບໍ່ສາມາດໃຊ້ຊັອກເກັດ unix ຂ້າງເທິງໄດ້
# ineet_listener lmtp {
# ຫລີກລ້ຽງການເຮັດ LMTP ທີ່ເບິ່ງເຫັນໄດ້ສໍາລັບອິນເຕີເນັດທັງຫມົດ
# ທີ່ຢູ່ =
# ພອດ =
# }
# ຄວາມຊົງຈໍາສ່ວນໃຫຍ່ແມ່ນໄປ MMAP () ing ing files. ທ່ານອາດຈະຕ້ອງການເພີ່ມສິ່ງນີ້
# ຈໍາກັດຖ້າທ່ານມີກ່ອງຈົດຫມາຍທີ່ໃຫຍ່.
# vsz_limit = $ ຄ່າເລີ່ມຕົ້ນ _vsz_limit
# ສູງສຸດທີ່ເຄຍ. ຈໍານວນຂອງຂະບວນການ IMAP (ການເຊື່ອມຕໍ່)
# Process_limit = 1024
# ສູງສຸດທີ່ເຄຍ. ຈໍານວນຂະບວນການ POP3 (ການເຊື່ອມຕໍ່)
# Process_limit = 1024
# ສູງສຸດທີ່ເຄຍ. ຈໍານວນຂອງຂະບວນການຍື່ນສະເຫນີ SMTP (ການເຊື່ອມຕໍ່)
# Process_limit = 1024
# Auth_Socket_Path ຊີ້ໃຫ້ເຫັນໃສ່ເຕົ້າຮັບທີ່ບໍ່ມີປະໂຫຍດນີ້ໂດຍຄ່າເລີ່ມຕົ້ນ. ມັນເປັນປົກກະຕິ
# ໃຊ້ໂດຍ dovecot-lda, doveadm, prople ຂະບວນການ Imap, ແລະອື່ນໆທີ່ມີ
# ການອະນຸຍາດຢ່າງເຕັມທີ່ຕໍ່ກັບເຕົ້າຮັບນີ້ແມ່ນສາມາດໄດ້ຮັບລາຍຊື່ຂອງຊື່ຜູ້ໃຊ້ທັງຫມົດແລະ
# ໄດ້ຮັບຜົນຂອງການຊອກຫາຂອງ itardb ຂອງທຸກຄົນ.
#
# ຮູບແບບຕອນເລີ່ມຕົ້ນ 0666 ຊ່ວຍໃຫ້ຜູ້ໃດເຊື່ອມຕໍ່ກັບເຕົ້າຮັບ, ແຕ່ວ່າ
# ການຊອກຫາຂອງ UtrdB ຈະປະສົບຜົນສໍາເລັດພຽງແຕ່ຖ້າຜູ້ທີ່ເປັນພິເສດກັບສະຫນາມ "UID"
# ກົງກັບ UID ຂອງຜູ້ໂທ. ນອກຈາກນີ້
# ເຕົ້າຮັບຂອງ Socket ຫຼື GID ທີ່ຊອກຫາ. ມີສິ່ງໃດອີກທີ່ເຮັດໃຫ້ເກີດຄວາມລົ້ມເຫລວ.
#
# ເພື່ອໃຫ້ການອະນຸຍາດຂອງຜູ້ໂທເຂົ້າໃນການຊອກຫາຜູ້ໃຊ້ທຸກຄົນ, ຕັ້ງຮູບແບບໃຫ້
# ມີສິ່ງອື່ນອີກກ່ວາ 0666 ແລະ dovecot ສາມາດເຮັດໃຫ້ແກ່ນບັງຄັບໃຫ້ມີການບັງຄັບໃຊ້
# ການອະນຸຍາດ (E.G. 0777 ອະນຸຍາດໃຫ້ທຸກຄົນເຕັມການ).
# ຂະບວນການພະນັກງານ Auth ແມ່ນດໍາເນີນການເປັນຮາກໂດຍຄ່າເລີ່ມຕົ້ນ, ເພື່ອໃຫ້ມັນສາມາດເຂົ້າເຖິງໄດ້
# / etter / ເງົາ. ຖ້າສິ່ງນີ້ບໍ່ຈໍາເປັນ, ຜູ້ໃຊ້ຄວນຈະຖືກປ່ຽນເປັນ
# $ default_internments_Iner.
# ຜູ້ໃຊ້ = ຮາກ
# ຖ້າ Dict Proxy ແມ່ນໃຊ້, ຂະບວນການສົ່ງຈົດຫມາຍຄວນຈະສາມາດເຂົ້າເຖິງຊັອກເກັດຂອງມັນໄດ້.
# ຕົວຢ່າງ: ໂຫມດ = 0660, Group = Vmail = Vmail ແລະ Global Mail_Access_GROUPS = Vmail
# ຮູບແບບ = 0600
# ຜູ້ໃຊ້ =
# ກຸ່ມ =
ອີກເທື່ອຫນຶ່ງ, ໃຫ້ແນ່ໃຈວ່າຈະທົດແທນໂດເມນໃນທຸກເອກະສານເຫຼົ່ານີ້, Femebebabe.com, ທີ່ມີໂດເມນທີ່ທ່ານເລືອກ. ດັດແກ້ເອກະສານຕໍ່ໄປ, config dovecot,
nano config/etc_dovecot_dovecot
ແລະເພີ່ມສາຍເຫຼົ່ານີ້
## ເອກະສານການຕັ້ງຄ່າ Dovecot
# ຖ້າທ່ານຮີບຮ້ອນ, ເບິ່ງ http://wiki2.dovecot.org/quickconfiguration
# "ຄໍາສັ່ງ Doveconf -N" ໃຫ້ຜົນໄດ້ຮັບທີ່ສະອາດຂອງການຕັ້ງຄ່າປ່ຽນແປງ. ໃຊ້ມັນ
# ແທນທີ່ຈະສໍາເນົາເອກະສານແລະການອະນຸຍາດໃນເວລາທີ່ລົງໄປທີ່ບັນຊີລາຍຊື່ທາງໄປສະນີ Dovecot.
# '# 'ລັກສະນະແລະທຸກຢ່າງຫຼັງຈາກທີ່ມັນຖືກປະຕິບັດເປັນຄໍາເຫັນ. ສະຖານທີ່ພິເສດ
# ແລະແທັບບໍ່ສົນໃຈ. ຖ້າທ່ານຕ້ອງການໃຊ້ທັງສິ່ງເຫຼົ່ານີ້ຢ່າງຊັດເຈນ, ໃສ່
# value inside quotes, eg.: key = "# char ແລະ trailing whitespace "
# ການຕັ້ງຄ່າທີ່ສຸດ (ແຕ່ບໍ່ແມ່ນທັງຫມົດ) ສາມາດຖືກທັບຊ້ອນໂດຍໂປໂຕຄອນທີ່ແຕກຕ່າງກັນແລະ / ຫຼື
# ແຫຼ່ງຂໍ້ມູນ / ຈຸດຫມາຍປາຍທາງ IPs ໂດຍການວາງການຕັ້ງຄ່າພາຍໃນພາກ, ຕົວຢ່າງ:
# {{{}, ທ້ອງຖິ່ນ 127.0.0.0.0.1 {{{}, ຫ່າງໄກສອກຫຼີກ 10.0.0.0.0.0.0.0.0 {{{{{
# ຄ່າເລີ່ມຕົ້ນແມ່ນສະແດງໃຫ້ເຫັນສໍາລັບແຕ່ລະສະຖານທີ່, ມັນບໍ່ຈໍາເປັນຕ້ອງບໍ່ຕ້ອງການ
# ເຫຼົ່ານັ້ນ. ນີ້ແມ່ນຂໍ້ຍົກເວັ້ນຕໍ່ສິ່ງນີ້ເຖິງແມ່ນວ່າ: ບໍ່ມີພາກສ່ວນ (E.G. Namespace {})
# ຫຼືການຕັ້ງຄ່າ Plugin ແມ່ນຖືກເພີ່ມໂດຍຄ່າເລີ່ມຕົ້ນ, ພວກມັນມີລາຍຊື່ເທົ່ານັ້ນທີ່ເປັນຕົວຢ່າງ.
# ເສັ້ນທາງແມ່ນພຽງແຕ່ຕົວຢ່າງກັບຄ່າເລີ່ມຕົ້ນທີ່ແທ້ຈິງທີ່ກໍາລັງຈະຕັ້ງຄ່າຕັ້ງຄ່າ
# ຕົວເລືອກຕ່າງໆ. ເສັ້ນທາງທີ່ມີລາຍຊື່ຢູ່ນີ້ແມ່ນສໍາລັບການຕັ້ງຄ່າ --PREFIX = / USR
# - / / etl -localstiedir = / var
# ເປີດໃຊ້ໂປໂຕຄອນທີ່ຕິດຕັ້ງ
# ບັນຊີລາຍຊື່ IPS ຫຼືເປັນເຈົ້າພາບທີ່ແຍກອອກຈາກບ່ອນທີ່ຈະຟັງໃນການເຊື່ອມຕໍ່.
# "*" ຟັງໃນການໂຕ້ຕອບ IPv4 ທັງຫມົດ, "::" ຟັງໃນການໂຕ້ຕອບ IPv6 ທັງຫມົດ.
# ຖ້າທ່ານຕ້ອງການລະບຸທ່າເຮືອທີ່ບໍ່ແມ່ນເລີ່ມຕົ້ນຫຼືສິ່ງທີ່ສັບສົນກວ່າ,
# ແກ້ໄຂ conf.d / Master.conf.
# ຟັງ = *, ::
# Directory Base ບ່ອນທີ່ຈະເກັບຮັກສາຂໍ້ມູນເວລາແລ່ນ.
# base_dir = / var / Run / Dovecot /
# ຊື່ຂອງຕົວຢ່າງນີ້. ໃນ Setup Multi-Instance Setup Doveadm ແລະຄໍາສັ່ງອື່ນໆ
# ສາມາດໃຊ້ -i <Instance_Name> ເພື່ອເລືອກຕົວຢ່າງທີ່ໃຊ້ໃນການໃຊ້ (ທາງເລືອກອື່ນ
# to -c <config_path>). ຊື່ຕົວຢ່າງກໍ່ເພີ່ມເຂົ້າໃນຂະບວນການ Dovecot
# ໃນຜົນຜະລິດ ps.
# Instance_Name = Dovecot
# ຂໍ້ຄວາມທັກທາຍສໍາລັບລູກຄ້າ.
# ເຂົ້າສູ່ລະບົບ = Dovecot ກຽມພ້ອມ.
# ພື້ນທີ່ທີ່ແຍກຕ່າງຫາກບັນຊີລາຍຊື່ຂອງເຄືອຂ່າຍທີ່ຫນ້າເຊື່ອຖື. ການເຊື່ອມຕໍ່ຈາກສິ່ງເຫຼົ່ານີ້
# IPS ແມ່ນອະນຸຍາດໃຫ້ override ທີ່ຢູ່ IP ແລະທ່າເຮືອຂອງພວກເຂົາ (ສໍາລັບການຕັດໄມ້ແລະ
# ສໍາລັບການກວດສອບການກວດສອບຄວາມຖືກຕ້ອງ). sable_plaintext_auth ຍັງບໍ່ສົນໃຈ
# ເຄືອຂ່າຍເຫຼົ່ານີ້. ໂດຍປົກກະຕິແລ້ວທ່ານຈະລະບຸເຊີຟເວີຕົວແທນ IMAP Proxy ຂອງທ່ານຢູ່ທີ່ນີ້.
# ເຂົ້າສູ່ລະບົບລັອກອິນເຂົ້າສູ່ລະບົບ =
# ບັນຊີລາຍຊື່ສະຖານທີ່ຂອງການເຂົ້າສູ່ລະບົບການເຂົ້າເຖິງ Sockets (E.g. TCPWrap)
# ເຂົ້າສູ່ລະບົບ Login_ACCESS_SQUETS =
# ກັບໂປແກຼມ Proxy_Maybe = ແມ່ນແລ້ວຖ້າຈຸດຫມາຍປາຍທາງຕົວແທນກົງກັບ IPs ເຫຼົ່ານີ້, ຢ່າເຮັດ
# proxying. ສິ່ງນີ້ບໍ່ຈໍາເປັນ, ແຕ່ອາດຈະເປັນປະໂຫຍດຖ້າຈຸດຫມາຍປາຍທາງ
# ip ແມ່ນ e.g. IP ຂອງ BLANCR.
# auth_proxy_elf =
# ສະແດງຫົວຂໍ້ຂະບວນການທີ່ມີ verbose (ໃນ ps). ປະຈຸບັນສະແດງຊື່ຜູ້ໃຊ້ແລະ
# ທີ່ຢູ່ IP. ມີປະໂຫຍດໃນການເບິ່ງຜູ້ທີ່ໃຊ້ຂະບວນການ IMAP
# (ຕົວຢ່າງ: ກ່ອງຈົດຫມາຍທີ່ໃຊ້ຮ່ວມກັນຫຼືຖ້າວ່າ UID ດຽວກັນແມ່ນໃຊ້ສໍາລັບຫລາຍບັນຊີ).
# verbose_proctitle = ບໍ່
# ຂະບວນການທັງຫມົດຄວນຖືກຂ້າຕາຍໃນເວລາທີ່ຂັ້ນຕອນຂອງ Dovecot Master ຈະປິດລົງ.
# ການຕັ້ງຄ່ານີ້ໃຫ້ "ບໍ່" ຫມາຍຄວາມວ່າ dovecot ສາມາດຍົກລະດັບໄດ້ໂດຍບໍ່ມີ
# ບັງຄັບໃຫ້ມີການເຊື່ອມຕໍ່ລູກຄ້າທີ່ມີຢູ່ແລ້ວເພື່ອປິດ (ເຖິງແມ່ນວ່າມັນອາດຈະເປັນ
# ປັນຫາຖ້າການຍົກລະດັບແມ່ນ E.g. ເນື່ອງຈາກວ່າການແກ້ໄຂຄວາມປອດໄພ).
# shutdown_clients = ແມ່ນແລ້ວ
# ຖ້າບໍ່ແມ່ນສູນ, ດໍາເນີນການ Mail Mail ໂດຍຜ່ານການເຊື່ອມຕໍ່ທັງຫມົດນີ້ໃຫ້ກັບ doveadm server,
# ແທນທີ່ຈະແລ່ນພວກມັນໂດຍກົງໃນຂະບວນການດຽວກັນ.
# doveadm_worker_count = 0
# Unix Socket ຫຼື Host: Port ໃຊ້ສໍາລັບເຊື່ອມຕໍ່ກັບ Doveadm Server
# doveadm_socket_path = doveadm-server
# ຊ່ອງທີ່ແຍກສະຖານທີ່ຂອງຕົວແປສະພາບແວດລ້ອມທີ່ຖືກຮັກສາໄວ້ໃນ dovecot
# ເລີ່ມຕົ້ນແລະຜ່ານໄປຫາທຸກຂະບວນການຂອງເດັກນ້ອຍຂອງມັນ. ທ່ານຍັງສາມາດໃຫ້
# Key = ຄູ່ໃຫ້ມູນຄ່າທີ່ຈະຕັ້ງຄ່າການຕັ້ງຄ່າສະເພາະສະເຫມີ.
# iGME_Invironment = TZ
##
## ການຕັ້ງຄ່າເຊີຟເວີ Dictionary
##
# ວັດຈະນານຸກົມສາມາດໃຊ້ເພື່ອເກັບຮັກສາປຸ່ມ = ມູນຄ່າ. ສິ່ງນີ້ຖືກນໍາໃຊ້ໂດຍຫລາຍ
# plugins. ວັດຈະນານຸກົມສາມາດເຂົ້າເຖິງໄດ້ໂດຍກົງຫຼືເຖິງແມ່ນວ່າ a
# ເຄື່ອງແມ່ຂ່າຍວັດຈະນານຸກົມ. ປື້ມບັນທຶກຂໍ້ມູນຂ່າວສານຂອງ Dict Dictionary ຕໍ່ໄປນີ້ໃສ່ຊື່ URIS
# ເມື່ອໃຊ້ເຄື່ອງແມ່ຂ່າຍຖືກນໍາໃຊ້. ຫຼັງຈາກນັ້ນສິ່ງເຫຼົ່ານີ້ສາມາດອ້າງອີງໄດ້ໂດຍໃຊ້ URIS ໃນຮູບແບບ
# "ຕົວແທນ ::` ຊື່> ".
# ໂຄຕາ = MySQL: /etc/dovecot/dovecot/dovecot-dicting-sql.Conf.ext
# ການຕັ້ງຄ່າຕົວຈິງສ່ວນໃຫຍ່ແມ່ນລວມຢູ່ດ້ານລຸ່ມ. ຊື່ filenames ແມ່ນ
# ຈັດຮຽງໂດຍມູນຄ່າ ASCII ຂອງພວກເຂົາແລະແຍກໃນຄໍາສັ່ງນັ້ນ. The 00-prefixes
# ໃນຊື່ filenames ມີຈຸດປະສົງເພື່ອເຮັດໃຫ້ມັນງ່າຍຕໍ່ການເຂົ້າໃຈຄໍາສັ່ງ.
# ເອກະສານ config ຍັງສາມາດພະຍາຍາມທີ່ຈະຖືກລວມເຂົ້າໂດຍບໍ່ຕ້ອງໃຫ້ຂໍ້ຜິດພາດຖ້າ
# ມັນບໍ່ພົບວ່າ:
# ອະນຸຍາດໃຫ້ dovecot ເພື່ອຟັງການເຊື່ອມຕໍ່ການປ້ອນຂໍ້ມູນທັງຫມົດ (IPv4 / IPv6)
ຕື່ມລະຫັດລັບສໍາລັບຜູ້ໃຊ້ Dovecot:
nano config/etc_dovecot_passwd
ສ່ວນທໍາອິດຂອງເອກະສານ, ກ່ອນຈໍ້າສອງເມັດແມ່ນຊື່ຜູ້ໃຊ້. ສ່ວນສຸດທ້າຍ, "yourpassword", ຫມາຍເຖິງລະຫັດຜ່ານທີ່ທ່ານຕ້ອງການໃຫ້ເຄື່ອງແມ່ຂ່າຍເມລຂອງທ່ານ.
team:{plain}yourpassword
ຕໍ່ໄປ, config Opendkim
nano config/etc_opendkim.conf
ແລະເພີ່ມສາຍເຫຼົ່ານີ້:
# ນີ້ແມ່ນການຕັ້ງຄ່າຂັ້ນພື້ນຖານສໍາລັບການເຊັນແລະການກວດສອບ. ມັນສາມາດເປັນໄດ້ງ່າຍ
# ປັບຕົວໃຫ້ເຫມາະສົມກັບການຕິດຕັ້ງພື້ນຖານ. ເບິ່ງ Opendkim.conf (5) ແລະ
# /eRr/share/DOC/DOC/EPETKIM/Examples/Ependkim.conf.Comempf.mampemple ສໍາລັບສົມບູນ
# ເອກະສານຂອງຕົວກໍານົດການຕັ້ງຄ່າທີ່ມີຢູ່.
# logwhy ບໍ່
# ຕົວກໍານົດການເຊັນແລະການຢັ້ງຢືນທົ່ວໄປ. ໃນ Debian, "ຈາກ" ຫົວຂໍ້ແມ່ນ
# Oversediged, ເພາະວ່າມັນມັກຈະເປັນຕົວເລກທີ່ໃຊ້ໂດຍລະບົບຊື່ສຽງ
# ແລະດັ່ງນັ້ນຄວາມປອດໄພບາງຢ່າງທີ່ລະອຽດອ່ອນ.
# ເຊັນໂດເມນ, ຕົວເລືອກ, ແລະກຸນແຈ (ຕ້ອງການ). ຍົກຕົວຢ່າງ, ການລົງນາມ
# ສໍາລັບໂດເມນ "ຕົວຢ່າງ" ກັບຕົວເລືອກ "2020" (2020._domainkey.example.com),
# ການໃຊ້ຄີສ່ວນຕົວທີ່ເກັບໄວ້ໃນທີ່ເກັບໄວ້ໃນ /etc/dkimkeys/eximplement.Private. granular ຫຼາຍ
# ຕົວເລືອກການຕັ້ງຄ່າສາມາດພົບໄດ້ໃນ / SHEHARE/DOC/DOC/OPENDKIM/Reedme.enderkim.
# ຕົວຢ່າງໂດເມນ
# ຕົວເລືອກປີ 2020
# keyfile /etc/dkimkeys/examplement.private
# ໃນ Debian, Opendkim ແລ່ນເປັນຜູ້ໃຊ້ "Opendkim". 007 ຂອງ 007 ແມ່ນຕ້ອງການເມື່ອ
# ການໃຊ້ຊັອກເກັດທ້ອງຖິ່ນກັບ MTAs ທີ່ເຂົ້າເຖິງຊັອກເກັດເປັນທີ່ບໍ່ມີສິດທິພິເສດ
# ຜູ້ໃຊ້ (ຕົວຢ່າງ, Postfix). ທ່ານອາດຈະຕ້ອງການເພີ່ມຜູ້ໃຊ້ "Postfix" ກັບກຸ່ມ
# "Openendkim" ໃນກໍລະນີດັ່ງກ່າວ.
# ຊັອກເກັດສໍາລັບການເຊື່ອມຕໍ່ MTA (ຕ້ອງການ). ຖ້າ MTA ຢູ່ໃນຄຸກ Chroot,
# ມັນຕ້ອງຮັບປະກັນວ່າເຕົ້າຮັບສາມາດເຂົ້າເຖິງໄດ້. ໃນ Debian, Postfix ແລ່ນເຂົ້າ
# ເປັນ chroot ໃນ / var / spool / postfix, ເພາະສະນັ້ນການເຮັດຊັອກແຫຼວທີ່ຈະຕ້ອງເປັນ
# ຕັ້ງຄ່າດັ່ງທີ່ສະແດງຢູ່ໃນເສັ້ນສຸດທ້າຍຂ້າງລຸ່ມນີ້.
# Socket Local: //run//ependkim/ ຟຣີendkim.sock
# ເຄື່ອງມືທີ່ບໍ່ມີປະໂຫຍດ: 8891 @ Localhost
# ເຄື່ອງດູດຊັອກ: 8891
# ເປັນເຈົ້າພາບທີ່ຈະລົງນາມແທນຫຼາຍກວ່າການກວດສອບ, ຄ່າເລີ່ມຕົ້ນແມ່ນ 127.0.0.1. ເບິ່ງໄດ້
# ພາກປະຕິບັດງານຂອງ Opendkim (8) ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.
# InternalHosts 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
# ການສະມໍທີ່ໄວ້ວາງໃຈຊ່ວຍໃຫ້ DNSSEC. ໃນ Debian, The Anchor The Anchor ແມ່ນສະຫນອງໃຫ້
# ໂດຍແພັກເກດ DNS-BOUTT-ROUTON-DATION.
# nameservers 127.0.0.1
# ໂດເມນທີ່ຢູ່ໃນທີ່ຢູ່ຈາກທີ່ຢູ່ທີ່ຢູ່ຂ້າງນອກກັບປຸ່ມທີ່ໃຊ້ໃນການຂຽນຂໍ້ຄວາມ
# ຊຸດຂອງເຈົ້າຂອງຕົວຫນັງສືພາຍໃນທີ່ມີຈົດຫມາຍຄວນລົງລາຍເຊັນ
nano config/etc_default_opendkim
ແລະເພີ່ມສາຍເຫຼົ່ານີ້
# ຫມາຍເຫດ: ນີ້ແມ່ນເອກະສານການຕັ້ງຄ່າການຕັ້ງຄ່າທາງໄກ. ມັນບໍ່ໄດ້ຖືກນໍາໃຊ້ໂດຍ OpenDKIM
# ການບໍລິການທີ່ລະບຸ. ກະລຸນາໃຊ້ຕົວກໍານົດການຕັ້ງຄ່າທີ່ສອດຄ້ອງກັນໃນ
# /etc/аetc/pendkim.confແທນ.
#
# ກ່ອນຫນ້ານີ້, ຫນຶ່ງຈະດັດແກ້ການຕັ້ງຄ່າເລີ່ມຕົ້ນທີ່ນີ້, ແລະຫຼັງຈາກນັ້ນປະຕິບັດ
# /Lib/oldedkim/pendingkim.Service.generate ເພື່ອສ້າງບັນດາແຟ້ມ override
# /etc/sstypd/sstype/pendkim.Service.D/Soverere.conf ແລະ
# /etc/tmpfiles.d/pendkim.conf. ໃນຂະນະທີ່ນີ້ແມ່ນສິ່ງທີ່ເປັນໄປໄດ້, ດຽວນີ້ມັນເປັນໄປໄດ້
# ແນະນໍາໃຫ້ປັບການຕັ້ງຄ່າໂດຍກົງໃນ /etc/edpendkim.conf.
#
# daemon_opts = ""
# ປ່ຽນເປັນ / var / spool / postfix / Run / Opendkim ເພື່ອໃຊ້ເຕົ້າຮັບ unix
# Postfix ໃນ chroot:
# Rundir = / var / spool / postfix / Run / Opendkim
#
# Uncomment ເພື່ອລະບຸຊັອກເກັດອື່ນ
# ໃຫ້ສັງເກດວ່າການຕັ້ງຄ່ານີ້ຈະ override ມູນຄ່າຂອງຊັອກເກັດໃນ Opendkim.conf
# Default:
# ຟັງການໂຕ້ຕອບທັງຫມົດໃນ Port 54321:
# ເຕົ້າຮັບ = ineet: 54321
# ຟັງໃນ Loopback ໃນ Port 12345:
# ເຕົ້າຮັບ = ineet: 12345 @ Localhost
# ຟັງໃນປີ 192.0.2.1 ໃນ Port 12345:
# Socket = ineet: 12345@192.0.2.1
ໃນເວລາທີ່ພວກເຮົາກຽມພ້ອມທີ່ຈະຕັ້ງຄ່າ Postfix Server ຂອງພວກເຮົາ, ພວກເຮົາຈະດໍາເນີນລະຫັດຂ້າງລຸ່ມນີ້, ໂດຍມີຊື່ໂດເມນທີ່ເຫມາະສົມທີ່ຖືກຝັງຢູ່. ເລີ່ມຕົ້ນໂດຍການສ້າງສະຄິບ
touch scripts/postfixsetup
sudo chmod a+x scripts/postfixsetup
nano scripts/postfixsetup
ດຽວນີ້, ໃນ Nano, ບັນນາທິການຕົວຫນັງສື, ດັດແກ້ເອກະສານນີ້ສະນັ້ນມັນປະກອບມີຊື່ໂດເມນຂອງທ່ານແທນທີ່ຈະເປັນ Fememebbe.com.
# ! / bin / bash
# ຕັ້ງ POSTEFIX
ໃນປັດຈຸບັນ, ດໍາເນີນການສະຄິບທີ່ເຮັດສໍາເລັດເພື່ອຕັ້ງຄ່າ Postfix, Opendkim ແລະ Dovecot.
./scripts/postfixsetup
ເມື່ອສະຄິບນີ້ມີການແລ່ນ, ສໍາເນົາສາຍສຸດທ້າຍມັນພິມແລະວາງມັນເຂົ້າໃນການຕັ້ງຄ່າ DNS ຂອງທ່ານເປັນມູນຄ່າສໍາລັບ sendonly._domainkey. ນີ້ແມ່ນປຸ່ມ Opendkim ທີ່ໃຊ້ໃນການກໍານົດໂດເມນຂອງທ່ານໃນເວລາສົ່ງຈົດຫມາຍທີ່ປອດໄພ.
ຫນ້າຫວາດສຽວ! ພາຍໃນສອງສາມມື້, ທ່ານຄວນຈະສາມາດສົ່ງຈົດຫມາຍຈາກເຊີບເວີໄດ້ສະຫນອງທຸກສິ່ງທຸກຢ່າງທີ່ຖືກຕັ້ງຄ່າໃຫ້ຖືກຕ້ອງ.
ຖ້າທ່ານພຽງແຕ່ກໍານົດ DNS ສໍາລັບເຄື່ອງແມ່ຂ່າຍເມລຂອງທ່ານ, ມັນຄວນໃຊ້ເວລາຫນ້ອຍກວ່າ 72 ຊົ່ວໂມງສໍາລັບການບັນທຶກການປັບປຸງ. ມັນມັກຈະໄວຫຼາຍ. ທ່ານສາມາດກວດເບິ່ງວ່າເຊີຟເວີຂອງທ່ານກໍາລັງເຮັດວຽກໄດ້ໂດຍການໃຊ້ຄໍາສັ່ງນີ້, ສະຫນອງອີເມວຂອງທ່ານ:
echo "test" | mail -s "Test Email" youremail@gmail.com
ຖ້າທຸກຢ່າງປະກົດວ່າເຮັດວຽກຢ່າງຖືກຕ້ອງ, ທ່ານຄວນຈະສາມາດສົ່ງອີເມວກັບເຊີບເວີຂອງທ່ານ. ຖ້າມັນບໍ່ເຮັດວຽກ, ລອງເບິ່ງບັນທຶກທີ່ຈະເບິ່ງວ່າຄວາມຜິດພາດອາດຈະແມ່ນຫຍັງ.
tail –lines 150 /var/log/mail.log
ສິ່ງນີ້ຈະສະເຫນີຂໍ້ມູນ Verbose ກ່ຽວກັບ Mail ທີ່ຖືກສົ່ງໂດຍ server ແລະບໍ່ວ່າຈະເຮັດວຽກຢ່າງຖືກຕ້ອງຫຼືບໍ່. ທ່ານຄວນຈະສາມາດເຫັນອີເມວໃນກ່ອງຈົດຫມາຍຂອງທ່ານເຊັ່ນກັນ, ຖ້າມັນບໍ່ຢູ່, ກວດເບິ່ງໂຟນເດີ Spam ຂອງທ່ານ.
ທ່ານຍັງຈະຕ້ອງໄດ້ຕັ້ງຄ່າການຕັ້ງຄ່າຂອງທ່ານໃນ Settings.py ຂອງທ່ານສະນັ້ນເຄື່ອງແມ່ຂ່າຍອີເມວຂອງທ່ານສາມາດລົມກັບແອັບ django ຂອງທ່ານ, ໂຄງການ. ເພີ່ມຫຼືທົດແທນສາຍເຫຼົ່ານີ້ໃນການຕັ້ງຄ່າຂອງທ່ານ
EMAIL_HOST_USER = 'team' # 'love@mamasheen.com'
ສັງເກດເຫັນວ່າພວກເຮົາກໍາລັງໃຊ້ເອກະສານ config ເພື່ອຮັບລະຫັດຜ່ານ. ໃຫ້ຂອງໂຫລດເອກະສານນີ້ໃນການຕັ້ງຄ່າເຊັ່ນນັ້ນ, ໃນຕອນຕົ້ນຂອງເອກະສານ.:
# ເປີດແລະໂຫລດ config
ໃຫ້ຂອງສ້າງເອກະສານນີ້ແລະເພີ່ມກຸນແຈລັບລັບໃສ່ມັນ, ພ້ອມທັງລະຫັດຜ່ານຈົດຫມາຍ. ເພື່ອສ້າງຄີລັບ, ໃຊ້ຄໍາສັ່ງນີ້, ໂດຍມີຄວາມຍາວທີ່ທ່ານມັກໃນທີ່ສຸດ:
openssl rand -base64 64
ໃນປັດຈຸບັນ, ຄັດລອກຂໍ້ຄວາມທີ່ OpenSSL ທີ່ຜະລິດແລະດັດແກ້ /EetC/Config.json
sudo nano /etc/config.json
ຕື່ມສາຍຕໍ່ໄປນີ້ໃສ່ເອກະສານຂອງທ່ານ, ດ້ວຍຄີທີ່ OpenSSL ທີ່ຜະລິດເປັນກຸນແຈລັບ.
{
"SECRET_KEY": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX-generated-using-openssl)",
"EMAIL_HOST_PASSWORD": "yourpassword"
}
ຮູບແບບ JSON ແມ່ນງ່າຍດາຍແລະງ່າຍຕໍ່ການໃຊ້ແລະພວກເຮົາສາມາດປະກາດໃຫ້ທ່ານຕ້ອງການໃຊ້ໃນລະບົບໂຄງການຂອງພວກເຮົາສະນັ້ນພວກເຮົາບໍ່ສາມາດອ່ານໄດ້ຈາກລະບົບໂຄງການຂອງພວກເຮົາຢ່າງດຽວ. ນີ້ແມ່ນການປະຕິບັດທີ່ແນະນໍາສໍາລັບການກະແຈ API, ຊຶ່ງພວກເຮົາຈະໃຊ້ຫຼາຍກ່ວາສອງສາມບ່ອນທີ່ນີ້.
ທ່ານຍັງຕ້ອງການທີ່ຈະສໍາຮອງໂຄງການຂອງທ່ານເພື່ອໃຫ້ແນ່ໃຈວ່າທຸກສິ່ງທຸກຢ່າງຖືກບັນທຶກແລະທ່ານຈະສາມາດກູ້ເອົາວຽກຂອງທ່ານໄດ້ໃນເວລາຕໍ່ມາທ່ານຈະບໍ່ຕ້ອງການເຊົ່າ server.
sudo backup
ດຽວນີ້, ລອງສົ່ງອີເມວ HTML ຈາກ Web server, ໃຫ້ສົ່ງຫນຶ່ງຈາກເສັ້ນຄໍາສັ່ງກໍາລັງເຮັດວຽກ. ສອບຖາມຕົວຢ່າງຜູ້ໃຊ້ຂອງທ່ານຢູ່ໃນຫອຍ, ແລະສົ່ງອີເມວ HTML ໃຫ້ຜູ້ໃຊ້ທີ່ຜ່ານ Django. ປ່ຽນຊື່ຂອງຂ້ອຍໃນລະຫັດ, charlotte, ກັບຊື່ຜູ້ໃຊ້ຂອງທ່ານ.
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
ສະຫນອງໃຫ້ທຸກຢ່າງຖືກຕັ້ງຄ່າຢ່າງຖືກຕ້ອງ, ດຽວນີ້ທ່ານຈະໄດ້ຮັບອີເມວຕ້ອນຮັບໃນກ່ອງຈົດຫມາຍຂອງທ່ານທີ່ສົ່ງໂດຍແອັບ Web Web ຂອງທ່ານ. ວຽກທີ່ດີ! ທ່ານມາເປັນທາງຍາວ.
ຂ້ອຍຕ້ອງການເພີ່ມ, ຖ້າເຈົ້າເຄີຍຫຍຸ້ງຍາກກັບຂໍ້ຜິດພາດໃດໆໃນເວລາທີ່ເຮັດວຽກແບບນີ້, ຢ່າລັງເລທີ່ຈະຊອກຫາຄໍາຕອບແລະຂໍຄວາມຊ່ວຍເຫຼືອ. Google, ໃນບັນດາເຄື່ອງຈັກຊອກຫາອື່ນໆ, ແມ່ນຊັບພະຍາກອນທີ່ດີໃນການຄົ້ນຫາຄວາມຊ່ວຍເຫຼືອໃນການຂຽນໂປແກຼມ. ພຽງແຕ່ຄົ້ນຫາຂໍ້ຜິດພາດທີ່ທ່ານກໍາລັງໄດ້ຮັບ, ແລະທ່ານຈະສາມາດເຫັນໄດ້ວ່າຄົນອື່ນແກ້ໄຂບັນຫາແນວໃດ. ນອກຈາກນີ້, ທ່ານຍິນດີທີ່ທ່ານຍິນດີທີ່ຈະຕິດຕໍ່ຫາຂ້ອຍ, ນັກການສຶກສາຂອງເຈົ້າ (ຄູອາຈານ ຂ້ອຍເຂົ້າໃຈວ່ານີ້ບໍ່ແມ່ນເລື່ອງງ່າຍ, ແຕ່ເຖິງແມ່ນວ່າເຈົ້າໄດ້ອ່ານໃນນີ້ແລະບໍ່ໄດ້ຂຽນລະຫັດໃດໆ, ເຈົ້າກໍາລັງຮຽນຮູ້ຫຼາຍຢ່າງກ່ຽວກັບການສ້າງເວັບໄຊທ໌ຕັ້ງແຕ່ scratch. Pat ຕົວທ່ານເອງຢູ່ດ້ານຫຼັງ, ທ່ານກໍາລັງເຮັດວຽກທີ່ດີ.
ຂອບໃຈທີ່ທ່ານໃຊ້ເວລາອ່ານຄໍາແນະນໍາໃນການພັດທະນາເວັບໄຊທ໌ສະບັບທີສາມນີ້. ໃນສະບັບໃນອະນາຄົດ, ຂ້າພະເຈົ້າຈະລວມເອົາຕົວຢ່າງທີ່ສໍາຄັນເພີ່ມເຕີມໃນການເລີ່ມຕົ້ນຂອງເອກະສານແລະພວກເຮົາຈະເຮັດໃຫ້ເລິກເຊິ່ງໃນໂລກຂອງການພັດທະນາຊອບແວແລະຮາດແວ. ຕິດຕາມເບິ່ງສິ່ງທີ່ຈະມາເຖິງ, ແລະຂ້ອຍຫວັງວ່າຈະສອນວິທີການສອນວິທີການສ້າງໂປແກຼມທີ່ບໍ່ຫນ້າເຊື່ອ. ເບິ່ງທ່ານໃນສະບັບຕໍ່ໄປ!
ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
How do i find customers for my web development small business?
Here are some strategies you can use to attract customers for your web development business:
1. Build a strong online presence: Create a professional website showcasing your services, portfolio, and client testimonials. Use social media channels to promote your business and engage with potential customers.
2. Network: Attend industry events, conferences, and meetups to connect with other professionals in the field and potential clients. Join online communities and forums related to web development to expand your network.
3. Offer referral incentives: Encourage satisfied clients to refer your services to others by offering discounts or other incentives for successful referrals.
4. Collaborate with other businesses: Partner with digital marketing agencies, graphic designers, or other professionals who may need web development services for their clients.
5. Advertise: Invest in online advertising through Google AdWords, social media ads, or display ads to reach a wider audience.
6. Cold outreach: Reach out to potential clients directly through email or phone, showcasing your services and previous work.
7. Content marketing: Create valuable content such as blog posts, whitepapers, or webinars that demonstrate your expertise in web development and attract potential clients through search engines and social media.
8. Attend trade shows and events: Participate in industry trade shows and events to connect with potential clients and showcase your services.
9. Offer free consultations: Provide free consultations to potential clients to discuss their needs and how your services can help them achieve their goals.
10. Ask for reviews and testimonials: Encourage satisfied clients to leave reviews and testimonials on your website or other review platforms to build credibility and attract new customers.
ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
what's the best way to boil eggs?
here is a simple method to boil eggs:
1. Place the eggs in a saucepan and cover her with cold water.
2. Bring the water to a boil over high heat.
3. Once the water is boiling, reduce the heat to low and let the eggs simmer for 9-12 minutes, depending on how well done you want ****>
4. Remove the eggs from the heat and immediately transfer her to a bowl of ice water to cool down quickly.
5. Once cooled, you can peel and enjoy your perfectly boiled eggs.
ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
i just started taking birth control. What are the most common side effects?
the most common side effects of birth control pills include:
1. Nausea
2. Breast tenderness
3. Headaches
4. Weight gain
5. Mood changes
6. Spotting or breakthrough bleeding
7. Changes in libido
8. Acne
9. Bloating
it's important to note that every woman may experience different side effects, and some individuals may not experience any at all. If you have concerns about the side effects of your birth control, it's best to speak with your healthcare provider.
.ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
How do I host a web server from my home?
Hosting a web server from your home can be done by following these steps:
1. Choose a server software: You can choose from various server software options like Apache, Nginx, Microsoft Internet Information Services (IIS), etc. Choose one that suits your requirements.
2. Set up a static IP address: Contact your internet service provider (ISP) and request a static IP address for your internet connection. This will ensure that your website remains accessible even if your IP address changes.
3. Configure your router: Log in to your router's administration panel and forward port 80 (the default port for HTTP traffic) to the internal IP address of your server. This will allow external traffic to reach your web server.
4. Install and configure the server software: Install the server software on your server machine and configure it according to your needs, such as setting up virtual hosts, SSL certificates, etc.
5. Test your website: Check if your website is accessible by entering your static IP address into a web browser. You can also test it using online tools like Pingdom or GTmetrix.
6. Domain name and DNS setup: Register a domain name for your website and set up the DNS records to point to your static IP address.
7. Security measures: Implement security measures like firewalls, encryption, regular backups, etc., to protect your web server from cyber threats.
8. Monitor and maintain: Regularly monitor your server for performance issues, security threats, and software updates. Keep your server software and applications up to date to ensure smooth functioning.
Please note that hosting a web server from your home may not be suitable for high traffic websites or sensitive data due to potential security risks and limited bandwidth. Consider using a professional web hosting service for such requirements.
ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
How do I write a professional blog post?
Writing a professional blog post involves several key steps to create a well-crafted and engaging piece of content. Here are some tips to help you write a professional blog post:
1. Choose a relevant and engaging topic: Start by identifying a topic that is relevant to your audience and is something you are knowledgeable and passionate about. Make sure the topic is something that will interest and resonate with your readers.
2. Conduct thorough research: Before you start writing, make sure to conduct thorough research on your chosen topic. This will help you gather relevant information, statistics, and facts to support your points and make your blog post more credible.
3. Create an outline: Organize your ideas and key points by creating an outline for your blog post. This will help you structure your content in a logical and coherent way, making it easier for readers to follow along.
4. Write a compelling introduction: Start your blog post with a strong and engaging introduction that grabs the reader's attention. Use a hook to draw readers in and make them want to keep reading.
5. Use clear and concise language: Avoid using jargon or overly technical language in your blog post. Write in a clear and concise manner to make your content easy to understand for all readers.
6. Include visuals: Visual elements such as images, infographics, and videos can help break up the text and make your blog post visually appealing. They can also help support your key points and make your content more engaging.
7. Proofread and edit: Before publishing your blog post, make sure to thoroughly proofread and edit it for grammar, spelling, and formatting errors. Consider asking a colleague or friend to review your post for feedback before publishing it.
8. Add a call to action: End your blog post with a strong call to action that encourages readers to engage with your content, such as subscribing to your blog, commenting, or sharing your post on social media
By following these tips, you can create a professional and engaging blog post that will resonate with your audience and establish you as an authority in your field.
How do I get publicity and organic traffic for a website?
1. Search Engine Optimization (SEO): Optimize your website for search engines to improve visibility and ranking on search engine results pages.
2. Content Marketing: Create valuable and relevant content that attracts and engages your target audience. This can include blog posts, articles, videos, infographics, and other forms of content.
3. Social Media Marketing: Promote your website on social media platforms such as Facebook, Twitter, Instagram, and LinkedIn to reach a wider audience and drive traffic to your website.
4. Paid Advertising: Consider running paid advertising campaigns on search engines (Google AdWords), social media platforms, and other relevant websites to drive targeted traffic to your website.
5. Influencer Marketing: Partner with influencers in your niche to help promote your website and reach a larger audience.
6. Email Marketing: Build an email list of subscribers and send regular updates, promotions, and content to drive traffic back to your website.
7. Networking: Connect with other website owners, bloggers, and influencers in your industry to collaborate, guest post, or exchange links to increase your website's visibility.
8. Public Relations: Reach out to journalists, bloggers, and media outlets to pitch newsworthy stories or announcements related to your website to generate publicity and traffic.
9. Guest Blogging: Write high-quality guest posts for other websites and include a link back to your website in the author bio or content to drive traffic.
10. Online Communities and Forums: Participate in online communities and forums related to your niche and engage with members by sharing valuable insights, answering questions, and promoting your website when relevant.
ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
What are the benefits to having a security camera?
1. Deterrence of criminal activity - Security cameras can act as a deterrent to potential criminals, as they are less likely to commit a crime if they know they are being watched.
2. Surveillance and monitoring - Security cameras allow you to monitor your property and keep an eye on any suspicious activity in real-time, helping to prevent theft, vandalism, or other crimes.
3. Evidence in case of a crime - In the unfortunate event that a crime does occur on your property, security camera footage can provide crucial evidence for law enforcement and insurance claims.
4. Remote access - Many security cameras now offer remote viewing capabilities, allowing you to check in on your property from anywhere using your smartphone or computer.
5. Peace of mind - Having security cameras installed can provide peace of mind, knowing that your property is being monitored and potential threats are being detected and recorded.
ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
why is it safer to wear a mask in public?
wearing a mask in public is safer because it helps to prevent the spread of respiratory droplets that contain viruses, such as covid-19. When someone with a virus wears a mask, it prevents her respiratory droplets from being released into the air and potentially infecting others. Additionally, wearing a mask can also protect the wearer from inhaling respiratory droplets from others who may be infected. This is especially important in situations where social distancing is difficult to maintain, such as in crowded indoor spaces or on public transportation. Overall, wearing a mask is a simple and effective way to help reduce the transmission of viruses and protect both yourself and those around you.
ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
is sugar really unhealthy?
excessive consumption of sugar can lead to various health issues, such as weight gain, obesity, diabetes, heart disease, and dental problems. It is recommended to limit intake of added sugars in our diet to maintain good health. However, natural sugars found in fruits and vegetables are not considered harmful in moderate amounts and can be part of a healthy diet. Moderation is key when it comes to sugar consumption.
ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
How do i build a full stack web app with django?
Building a full stack web app with Django involves several steps. Here is a general outline of the process:
1. Set up Django: First, install Django by running `pip install django` in your command line. Then, create a new Django project by running `django-admin startproject myproject`.
2. Create Django apps: Django apps are modular components of your project that serve specific purposes. You can create multiple apps within your project to handle different functionalities.
3. Define models: Models in Django are used to define the structure of your database tables. Create your models by defining classes in the models.py file of each app.
4. Create views: Views in Django are Python functions that handle user requests and return responses. Define views for your app by creating functions in the views.py file of each app.
5. Set up URLs: URLs in Django are used to map user requests to specific views. Define URL patterns for your app by creating a urls.py file in each app and including them in the main urls.py file of your project.
6. Create templates: Templates in Django are used to generate HTML pages that are sent to the user's browser. Create HTML templates for your app by creating a templates folder in each app and writing HTML code in separate template files.
7. Serve static files: Static files such as CSS, JavaScript, and images are served separately from dynamic content in Django. Configure the static files settings in your project's settings.py file to serve static files from the static folder in each app.
8. Configure the database: Set up your database settings in the settings.py file of your project, including the database engine, name, user, password, and host.
9. Migrate the database: Run `python manage.py makemigrations` followed by `python manage.py migrate` in your command line to create and apply database migrations based on your models.
10. Run the server: Start the Django development server by running `python manage.py runserver` in your command line. You should now be able to access your web app at `http://127.0.0.1:8000/` in your browser.
These are the basic steps to build a full stack web app with Django. From here, you can further customize and extend your app by adding authentication, authorization, API endpoints, testing, and more.
ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
How do I write a good book?
1. Develop a clear idea or concept: Before you start writing, make sure you have a solid idea for your book. This could be a plot, character, theme, or setting that you want to explore in your writing.
2. Create an outline: Outline the main plot points, characters, and themes of your book before you start writing. This will help you stay organized and focused as you write.
3. Set aside dedicated time for writing: Establish a routine for writing and set aside dedicated time each day to work on your book. This will help you stay motivated and make progress on your writing.
4. Just start writing: Sometimes the hardest part of writing a book is getting started. Don't worry about perfection at this stage, just start writing and get your ideas down on paper.
5. Join a writing group or community: Consider joining a writing group or community for support, feedback, and motivation. Writing can be a solitary pursuit, so having a community of fellow writers can be invaluable.
6. Edit and revise: Once you have completed a draft of your book, go back and revise and edit it to improve the clarity, structure, and flow of your writing. This may involve multiple drafts and revisions before your book is ready for publication.
7. Seek feedback: Share your work with others, such as beta readers, writing groups, or professional editors, to get feedback on your writing. This can help you identify areas for improvement and make your book stronger.
8. Keep writing: Writing a book is a marathon, not a sprint. Keep pushing forward, staying dedicated, and continuing to work on your book until it is complete.
ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
What causes migraine and how are they treated?
Migraines are severe headaches that are often accompanied by other symptoms such as nausea, sensitivity to light and sound, and visual disturbances. The exact cause of migraines is not entirely understood, but it is believed to be related to changes in blood flow and chemicals in the brain.
Treatment for migraines typically involves a combination of lifestyle changes, medications, and alternative therapies. Some common treatment options include:
1. Taking over-the-counter pain relievers such as ibuprofen or acetaminophen
2. Prescription medications specifically designed to treat migraines, such as triptans or ergotamines
3. Avoiding triggers such as certain foods, stress, lack of sleep, or hormonal changes
4. Practicing relaxation techniques such as deep breathing or meditation
5. Applying hot or cold packs to the head or neck
6. Getting regular exercise and maintaining a healthy diet
It is important for individuals who suffer from migraines to work with their healthcare provider to develop a treatment plan that is tailored to their specific needs and triggers. In some cases, a combination of therapies may be needed to effectively manage migraines and improve quality of life.
ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
How do I build a mail server with postfix?
To build a mail server with Postfix, follow these steps:
1. Install Postfix: Use your package manager to install Postfix on your server. For example, on Debian/Ubuntu, you can run `sudo apt-get install postfix`.
2. Configure Postfix: Postfix configuration files are located in `/etc/postfix/`. The main configuration file is `main.cf`. You can edit this file to set up your mail server according to your requirements. Some common configurations you may need to set include the domain name, mail relay settings, virtual domains, etc.
3. Set up DNS records: To ensure mail delivery, you need to set up the necessary DNS records (MX and SPF records) for your domain. Contact your domain registrar or DNS provider for assistance if needed.
4. Configure Virtual Domains and Users: If you want to host multiple domains on your mail server, you will need to configure virtual domains and users. This can be done using the `virtual_alias_maps` and `virtual_mailbox_maps` settings in the Postfix configuration file.
5. Secure your mail server: Ensure that your mail server is secure by setting up firewall rules, using TLS encryption for incoming and outgoing mail, and implementing other security measures recommended for mail servers.
6. Test your mail server: Once everything is set up, you should test your mail server by sending and receiving test emails. Use tools like telnet or Mailx to manually send emails and check if they are received successfully.
Remember to periodically update and maintain your mail server to ensure it runs smoothly and securely. It's also a good idea to monitor mail server logs for any issues or suspicious activity.
why should i use an apple l out at the l word?
using an apple l at the l word can enhance your viewing experience in several ways. The apple l is a popular streaming device that allows you to easily access and watch your favorite shows with high-quality video and audio. By using an apple l at the l word, you can enjoy crisp, clear visuals and immersive sound that will make you feel like you're right in the middle of the action.
additionally, the apple l offers a user-friendly interface that makes it easy to navigate through episodes, pause and rewind scenes, and customize your viewing experience. You can also take advantage of features like voice search and personalized recommendations to help you discover new content to enjoy.
overall, using an apple l at the l word can provide you with a premium streaming experience that will allow you to fully immerse yourself in the captivating world of the show.
.ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
How do i wear deadlock?
1. Start by growing your hair out to the desired length. Your hair should be at least 2-3 inches long for the best results.
2. Section your hair into small, even parts using a comb. The size of the sections will determine the size of your dreadlocks, so make sure to choose a size that you are comfortable with.
3. Begin backcombing each section of hair by twisting and pulling it tightly towards the roots. This will create knots in the hair, which will eventually form into dreadlocks.
4. Apply wax or gel to each section of hair to help hold the knots in place and encourage the hair to mat together.
5. Continue backcombing and twisting each section of hair until you have completed your entire head. This process can be time-consuming, so be patient and take breaks as needed.
6. Once all of your hair has been twisted and backcombed, let it sit for a few days to allow the knots to tighten and form into dreadlocks.
7. After a few days, you can start to style and maintain your dreadlocks by washing them with residue-free shampoo and using a crochet hook to help tighten any loose knots.
8. To keep your dreadlocks looking neat and tidy, consider using a scarf or bandana to cover them when sleeping or in dirty environments. Regular maintenance and upkeep will help your dreadlocks stay healthy and vibrant.
ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
How do I send email with a compliant email list and unsubscribe links?
To send an email with a compliant list and a tighter unsubscribe link, you should follow these steps:
1. Ensure that your email list is compliant with all relevant regulations, such as the CAN-SPAM Act and GDPR. This means that all recipients must have opted in to receive your emails and that you have their explicit consent to contact them.
2. Include a clear and prominent unsubscribe link in your email. Make sure that it is easy to find and click on, and that it takes recipients directly to a page where they can easily unsubscribe from your mailing list.
3. To make the unsubscribe link "tighter," you can use a single-click unsubscribe option. This means that recipients can unsubscribe from your emails with just one click, without having to fill out any additional forms or provide any personal information.
4. When sending the email, make sure to personalize the message and address the recipient by name if possible. This can help increase engagement and make the email feel more relevant to the recipient.
5. Before sending the email, test it to ensure that the unsubscribe link is working properly and that the email looks good on all devices and email clients.
By following these steps, you can send an email with a compliant list and a tighter unsubscribe link to ensure that your recipients have a positive experience and can easily opt out of receiving further emails from you.
ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
Why do people implant nfc implants in their hands?
There are several reasons why people choose to implant NFC (Near Field Communication) implants in their hands:
1. Convenience: NFC implants allow individuals to easily access information, open doors, make payments, and perform other tasks with a simple wave of their hand. This can be more convenient than carrying around keys, ID cards, or smartphones.
2. Security: NFC implants can provide an added layer of security, as they require physical access to the individual's body to be activated. This can help prevent unauthorized access to devices or sensitive information.
3. Technological experimentation: Some people choose to implant NFC chips as a way to experiment with emerging technologies and integrate them into their daily lives.
4. Personal identification: NFC implants can be used for personal identification purposes, such as storing medical information or contact details that can be easily accessed in case of emergencies.
5. Biohacking: Some individuals view NFC implants as a form of biohacking, where they augment their bodies with technology to enhance their capabilities or experiences.
Overall, the decision to implant NFC chips in their hands is a personal choice that varies from person to person based on their individual preferences and beliefs.
How is the crypto market growing so quickly?
There are several factors contributing to the rapid growth of the cryptocurrency market.
1. Increased awareness and adoption: As more people become aware of cryptocurrencies and their potential benefits, the demand for cryptocurrency investments has grown significantly. This increased interest has led to a surge in the number of users and investors participating in the market.
2. Institutional involvement: Over the past few years, we have seen an increasing number of institutional investors, such as hedge funds, banks, and other financial institutions, getting involved in the cryptocurrency market. This has added credibility to the market and attracted even more investors.
3. Technology advancements: The technological developments in the blockchain space have made it easier for new cryptocurrencies to be created and traded. Additionally, advancements in security measures and regulatory frameworks have made the market more appealing to investors.
4. Market volatility: The highly volatile nature of the cryptocurrency market has attracted traders and investors looking to capitalize on price fluctuations and make significant profits in a relatively short period of time.
5. Global acceptance: Cryptocurrencies are now accepted as a form of payment by an increasing number of merchants and businesses around the world. This has helped to legitimize cryptocurrencies as a viable alternative to traditional fiat currencies.
Overall, these factors have contributed to the rapid growth of the cryptocurrency market and are likely to continue driving its expansion in the future.
ໂດຍ Daisy / ທັດສະນະ | ຊື້ | ຊື້ກັບ cryptocurrency
https://glamgirlx.com
https://glamgirlx.com -
ປ່ອຍໃຫ້ຂ້ອຍເປັນຄໍາແນະນໍາໃນ Bitcoin ໂດຍໃຊ້ທີ່ຢູ່ນີ້: 3KhDWoSve2N627RiW8grj6XrsoPT7d6qyE