<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های maliheshahi4</title><link>https://virgool.ir/feed/@maliheshahi4</link><description></description><language>fa</language><pubDate>2026-11-11 08:04:55</pubDate><image><url>https://virgool.ir/images/default-avatar.jpg</url><title>maliheshahi4</title><link>https://virgool.ir/@maliheshahi4</link></image><item><title>نصب و پیکربندی Postfix در اوبونتو 20.04</title><link>https://virgool.ir/@maliheshahi4/نصب-و-پیکربندی-postfix-در-اوبونتو-2004-iburng9m989q</link><description>Postfix یک عامل انتقال ایمیل (MTA) است ، که برای هدایت و دریافت ایمیل در سیستم لینوکس استفاده می شود. پیش بینی میشود حدود 25 درصد سرور مجازی های ایمیل عمومی در اینترنت Postfix را اجرا میکنند.در این راهنما ، نحوه نصب و پیکربندی Postfix را در سرور مجازی Ubuntu 20.04 یاد خواهید گرفت. سپس با نصب s-nail ، یک نماینده کاربر ایمیل (MUA) ، که به کلاینت ایمیل نیز شناخته میشود، آزمایش می کنید که آیا Postfix قادر است به درستی ایمیل را مسیریابی کند.توجه داشته باشید که هدف از این آموزش این است که به شما کمک کند تا فقط با برخی از قابلیت های معمول ایمیل، سریعا Postfix را راه اندازی و اجرا کنید. در پایان این راهنما یک سرور مجازی ایمیل تمام عیار ندارید ، اما برخی از مؤلفه های اساسی چنین ستاپی را برای کمک به شما در شروع کار خواهید داشت.پیش نیازهابرای پیروی از این راهنما ، موارد زیر را لازم دارید:• سرور مجازی دارای Ubuntu 20.04 که به عنوان سرور مجازی ایمیل Postfix شما فعالیت می کند. این سرور مجازی باید دارای یک کاربر غیر ریشه با امتیازات sudo و فایروال تنظیم شده با UFW باشد. برای تنظیم این گزینه می توانید راهنمای ستاپ اولیه سرور مجازی Ubuntu 20.04 را دنبال کنید.• یک نام دامنه کاملاً واجد شرایط که به سرور مجازی Ubuntu 20.04 شما اشاره کند. توجه داشته باشید که اگر قصد دسترسی به ایمیل از یک مکان خارجی را دارید ، باید مطمئن شوید که یک رکورد MX دارید که به سرور مجازی ایمیل شما نیز اشاره کند.توجه داشته باشید که این آموزش با این فرض پیش میرود که شما هاستی را پیکربندی می کنید که دارای FQDN mail.example.com میباشد. در صورت لزوم ، حتماً example.com یا mail.example.com را تغییر دهید تا FQDN شما را منعکس کند.مرحله 1 – نصب PostfixPostfix در مخازن پیش فرض اوبونتو گنجانده شده است ، بنابراین می توانید آن را با APT نصب کنید.برای شروع ، حافظه نهان بسته محلی apt خود را به روز کنید:$ sudo apt updateسپس بسته ی postfix را با دستور زیر نصب کنید. توجه داشته باشید که در اینجا ما متغیر محیطی DEBIAN_PRIORITY=low را در این دستور نصب وارد میکنیم. این امر باعث می شود فرآیند نصب از شما بخواهد برخی گزینه های اضافی را پیکربندی کنید:$ sudo DEBIAN_PRIORITY=low apt install postfixاین فرآیند نصب یک سری اعلان های تعاملی را باز می کند. برای اهداف این آموزش ، از اطلاعات زیر برای پر کردن فرم های خود استفاده کنید:• نوع کلی پیکربندی ایمیل؟برای این، Internet Site را انتخاب کنید چرا که با تیازهای فراساختاری مطابقت دارد.• نام ایمیل سیستم: این دامنه اصلی است که برای ساختن یک آدرس ایمیل معتبر استفاده می شود هنگامی که فقط بخش حساب آدرس داده می شود. به عنوان مثال ، نام میزبان سرور مجازی شما mail.example.com است. به احتمال زیاد باید نام ایمیل سیستم را به صورت example.com قرار دهید تا با توجه به نام کاربری user1 ، Postfix از آدرس user1@example.com استفاده کند.• گیرنده ایمیل Root و postmaster: این حساب لینوکس است که از طریق ایمیل به root @ و postmaster @ ارسال می شود. برای این کار از حساب اصلی خود استفاده کنید. در این مورد مثال ، Sammy .• سایر مقاصد برای پذیرش ایمیل: مقصد پستی را که این نمونه Postfix می پذیرد تعیین می کند. اگر لازم است دامنه دیگری را که این سرور مجازی مسئول دریافت آن است اضافه کنید ، آنها را در اینجا اضافه کنید. در غیر این صورت ، پیش فرض کافی خواهد بود.• اجبار به روزرسانی های همزمان در صف ایمیل ؟: از آنجا که به احتمال زیاد از یک سیستم فایل ژورنال دار استفاده می کنید ، no را در اینجا بپذیرید.• شبکه های محلی: لیستی از شبکه هایی است که سرور مجازی ایمیل شما برای تقویت پیام های آن ها پیکربندی شده است. پیش فرض برای بیشتر سناریوها کار خواهد کرد. اگر می خواهید آن را تغییر دهید ، مطمئن شوید که از نظر دامنه شبکه بسیار محدود باشد.• محدودیت اندازه صندوق پستی: این می تواند برای محدود کردن اندازه پیام ها استفاده شود. تنظیم آن بر روی 0 محدودیت اندازه را غیرفعال می کند.• کاراکتر پسوند آدرس محلی: کاراکتری است که می تواند برای جدا کردن قسمت معمول آدرس از یک پسوند (برای ایجاد نام های مستعار پویا استفاده شود) استفاده می شود. به طور پیش فرض ، + برای این آموزش کار خواهد کرد.• پروتکل های اینترنت برای استفاده: انتخاب کنید آیا نسخه IP را که Postfix از آن پشتیبانی می کند محدود کنید یا خیر. برای اهداف این آموزش ، all را انتخاب کنید.برای بیان صریح تر ، این تنظیمات مورد استفاده در این راهنماست:نوع کلی پیکربندی ایمیل: سایت اینترنتینام ایمیل سیستم: example.com (نه mail.example.com)گیرنده ایمیل Root و postmaster: نام کاربری حساب لینوکس اولیه (در این مثال ها sammy )سایر مقاصد برای پذیرش ایمیل: $myhostname, example.com, mail.example.com, localhost.example.com,localhostاجبار به روزرسانی های همزمان در صف ایمیل : خیرشبکه های محلی: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128محدودیت اندازه صندوق پستی: 0کاراکتر پسوند آدرس محلی: +پروتکل های اینترنت برای استفاده:alتوجه: اگر نیاز به بازگشت برای تغییر این تنظیمات داشتید ، می توانید با تایپ کردن دستور زیر این کار را انجام دهید:$ sudo dpkg-reconfigure postfixاعلان ها با پاسخ های قبلی شما ، از قبل پر می شوند.پس از اتمام مراحل نصب ، می توانید چند نسخه به روزرسانی پیکربندی Postfix خود را انجام دهید.مرحله 2 – تغییر پیکربندی Postfixاکنون می توانید برخی تنظیمات را انجام دهید که روند نصب بسته از شما نخواسته بود. بسیاری از تنظیمات پیکربندی Postfix در فایل /etc/postfix/main.cf تعریف شده اند. به جای ویرایش مستقیم این فایل ، می توانید از دستور postconf Postfix برای پرس و جو یا تعیین تنظیمات پیکربندی استفاده کنید.برای شروع ، لوکیشن را برای صندوق پستی کاربر غیر ریشه اوبونتو تنظیم کنید. در این راهنما ، ما از قالب Maildir استفاده خواهیم کرد ، که پیام ها را به فایل های جداگانه که بر اساس عملکرد کاربر بین دایرکتوری ها منتقل می شوند ، جدا می کند. گزینه دیگری که در این راهنما پوشش داده نشده است ، فرمت mbox است که تمام پیام ها را در یک فایل واحد ذخیره می کند.متغیر home_mailbox را روی Maildir/ تنظیم کنید. سپس ، یک ساختار دایرکتوری تحت این نام در دیرکتوری هوم کاربر خود ایجاد خواهید کرد. home_mailbox را با تایپ کردن دستور زیر پیکربندی کنید:$ sudo postconf -e ‘home_mailbox= Maildir/’در مرحله بعدی ، مکان جدول virtual_alias_maps را تنظیم کنید ، که نقشه های ایمیل دلخواه را به حساب های سیستم لینوکس نگاشت می کند. دستور زیر را اجرا کنید ، که نقشه جدول را در یک فایل پایگاه داده هش به نام / etc / postfix / virtual نگاشت می کند:$ sudo postconf -e ‘virtual_alias_maps= hash:/etc/postfix/virtual’اکنون که مکان فایل نقشه های مجازی را در فایل main.cfخود تعریف کرده اید ، می توانید خود این فایل را ایجاد کرده و نگاشت حساب های ایمیل را به حساب کاربری در سیستم لینوکس خود شروع کنید. فایل را با ویرایشگر متن مورد نظر خود ایجاد کنید. در این مثال ، ما از nano استفاده خواهیم کرد:$ sudo nano /etc/postfix/virtualآدرسهایی را که مایلید ایمیل را برای آن بپذیرید ، لیست کنید و به دنبال آن فضای سفید و کاربر لینوکس را که دوست دارید ایمیل را به ان تحویل دهید.به عنوان مثال ، اگر می خواهید ایمیل را در آدرس contact@example.com و admin@example.com بپذیرید و دوست دارید آن ایمیل ها را به کاربر sammy Linux تحویل دهید ، می توانید فایل خود را مانند این تنظیم کنید:/etc/postfix/virtualcontact@example.com sammyadmin@example.com sammyپس از نگاشت همه آدرس ها به حساب های سرور مجازی مناسب ، فایل را ذخیره کنید و ببندید. اگر از nano استفاده کرده اید ، این کار را با فشار دادن CTRL + X ، Y ، سپس ENTER انجام دهید.نگاشت را با تایپ این دستور اعمال کنید:$ sudo postmap /etc/postfix/virtualفرایند Postfix را مجدداً راه اندازی کنید تا مطمئن شوید که تمام تغییرات شما اعمال شده است:$ sudo systemctl restart postfixبا فرض اینکه از راهنمای ستاپ اولیه پیروی کرده اید ، فایروال را با UFW پیکربندی نموده اید. این فایروال به طور پیش فرض اتصالات خارجی را به سرویس های روی سرور مجازی شما مسدود می کند مگر اینکه این اتصالات به صراحت مجاز باشند ، بنابراین باید یک قانون فایروال اضافه کنید تا استثنائی برای Postfix داشته باشید.می توانید با تایپ دستور زیر، اجازه اتصالات به سرویس را بدهید:$ sudo ufw allow Postfixبا این کار ، Postfix پیکربندی شده و آماده پذیرش اتصالات خارجی است. با این حال ، شما هنوز آمادگی آزمایش آن را با یک سرویس گیرنده ایمیل ندارید. قبل از اینکه بتوانید کلاینت را نصب کنید و از آن برای تعامل با ایمیل ارسال شده به سرور مجازی خود استفاده کنید ، لازم است چند تغییر در تنظیمات سرور مجازی اوبونتو انجام دهید.مرحله 3 – نصب کلاینت پست الکترونیکی و اولیه سازی ساختار Maildirبه منظور تعامل با ایمیل تحویل داده شده ، این مرحله شما را با روند نصب بسته s-s-nail آشنا می کند. یک متغیر پر از ویژگی از کلاینت xmail BSD است که می تواند فرمت Maildir را به درستی اداره کند.اما قبل از نصب کلاینت ، منطقی است که مطمئن شوید متغیر محیط MAIL شما به درستی تنظیم شده است. s-nailبه دنبال این متغیر است تا بفهمد کجا می تواند ایمیل را برای کاربر شما پیدا کند.برای اطمینان از تنظیم متغیر MAIL بدون توجه به نحوه دسترسی به حساب کاربری خود – خواه از طریق ssh، su، su – یا sudo، به عنوان مثال – باید متغیر را در فایل /etc/bash.bashrc تنظیم کرده و اضافه کنید. آن را به فایلی در /etc/profile.d اضافه کنید تا مطمئن شوید که به طور پیش فرض برای همه کاربران تنظیم شده است.برای افزودن متغیر به این فایل ها ، دستور زیر را تایپ کنید:$ echo ‘export MAIL=~/Maildir’ | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.shبرای خواندن متغیر در بخش فعلی ، فایل /etc/profile.d/mail.sh را وارد کنید:$ source /etc/profile.d/mail.shبا کامل شدن آن ، کلاینت ایمیل s-nail را با APT نصب کنید:$ sudo apt install s-nailقبل از اجرای کلاینت ، چند تنظیمات وجود دارد که باید انجام دهید. فایل /etc/s-nail.rc را در ویرایشگر خود باز کنید:$ sudo nano /etc/s-nail.rcدر انتهای فایل گزینه های زیر را اضافه کنید:/etc/s-nail.rc. . .set emptystartset folder=Maildirset record=+sentدر اینجا عملکرد این خطوط آورده شده است:set emptystart به کلاینت اجازه می دهد حتی با یک صندوق ورودی خالی باز شودset folder=Maildir دیرکت.ری Maildir را روی متغیر folder داخلی تنظیم می کندset record=+sent یک فایل mbox ارسال شده را برای ذخیره ایمیل ارسال شده در هر دیرکتوری به عنوان متغیر folder  ایجاد می کند ، در این حالت Maildirپس از اتمام فایل را ذخیره کنید و ببندید. اکنون آماده هستید تا ساختار Maildir سیستم را تنظیم کنید.یک راه سریع برای ایجاد ساختار Maildir در دیرکتوری هوم شما این است که به خودتان یک ایمیل با دستور s-nail ارسال کنید. از آنجا که فایل ارسال شده فقط پس از ایجاد Maildir در دسترس خواهد بود ، شما باید نوشتن آن را برای این ایمیل اولیه غیرفعال کنید. این کار را با عبور از گزینه -Snorecord انجام دهید.با اتصال یک رشته به دستور s-nail ، ایمیل را ارسال کنید. این دستور را تنظیم کنید تا کاربر Linux خود را به عنوان گیرنده علامت گذاری کند:$ echo ‘init’ | s-nail -s ‘init’ -Snorecord sammyتوجه: ممکن است پاسخ زیر را دریافت کنید:OutputCan’t canonicalize “/home/sammy/Maildir”طبیعی است و ممکن است هنگام ارسال این پیام اول ظاهر شود.با جستجوی دیرکتوری ~ / Maildir خود می توانید مطمئن شوید که دیرکتوری ایجاد شده است:$ ls -R ~/Maildirخواهید دید که ساختار دایرکتوری ایجاد شده است و یک فایل پیام جدید در دیرکتوری ~ / Maildir / new موجود است:Output/home/sammy/Maildir/:cur new tmp/home/sammy/Maildir/cur:/home/sammy/Maildir/new:1463177269.Vfd01I40e4dM691221.mail.example.com/home/sammy/Maildir/tmp:اکنون که ساختار دایرکتوری ایجاد شده است ، می توانید با مشاهده پیام init که ارسال کرده اید و ارسال یک پیام به آدرس ایمیل خراجی، کلاینت s-nail s را امتحان کنید.مرحله 5 – آزمایش کلاینتبرای باز کردن کلاینت ، دستور s-nail را اجرا کنید:$ s-nailدر کنسول خود ، یک صندوق ورودی ابتدایی با پیام init  خواهید دید:Outputs-nail version v14.9.15. Type `?’ for help“/home/sammy/Maildir”: 1 message 1 new&gt;N 1 sammy@example.com 2020-05-19 15:40 14/392 initبرای نمایش پیام، ENTER را فشار دهید:Output[– Message 1 — 14 lines, 369 bytes –]:From sammy@example.com Tue May 19 15:40:48 2020Date: Tue, 19 May 2020 15:40:48 +0000To: sammy@example.comSubject: initMessage-Id: &lt;20160513220749.A278F228D9@mail.example.com&gt;From: sammy@example.cominitمی توانید با تایپ h و سپس ENTER به لیست پیام ها برگردید :? hOutput&gt;R 1 sammy@example.com 2020-05-19 15:40 14/392 initتوجه کنید که پیام اکنون حالت R دارد ، نشان می دهد که خوانده شده است.از آنجا که این پیام چندان مفید نیست ، می توانید با فشار دادن d آن را حذف کرده و سپس ENTER بزنید.? dبرای بازگشت به ترمینال ، q و سپس ENTER را بزنید:? qبه عنوان یک آزمایش نهایی ، بررسی کنید که آیا s-nail قادر به ارسال صحیح پیام های ایمیل است یا خیر. برای این کار می توانید همانند پیام init  که در مرحله قبل برای خود ارسال کردید ، محتویات یک فایل متنی را درون فرایند s-nail قرار دهید.با نوشتن پیام آزمایشی در ویرایشگر متن شروع کنید:$ nano ~/test_messageدر داخل ، متنی را که می خواهید ارسال کنید ، وارد کنید:~/test_messageHello,This is a test. Please confirm receipt!فایل را پس از نوشتن پیام خود ذخیره کنید و ببندید.سپس از دستور cat برای ارسال پیام به روند s-nail استفاده کنید. می توانید با مثال زیر این کار را انجام دهید:-s: خط موضوع پیام ایمیل را مشخص می کند-r: تغییر اختیاری در قسمت “from” ایمیل. به طور پیش فرض ، کاربر لینوکس که با آن وارد شده اید برای پر کردن این فیلد استفاده می شود. گزینه -r به شما امکان می دهد این مسئله را با یک آدرس معتبر ، مانند یکی از مواردی که در فایل / etc / postfix / virtual تعریف کرده اید ، پر کنید. برای نشان دادن ، دستور زیر از contact@example.com استفاده می کندهمچنین ، حتما user@email.com را به یک آدرس ایمیل معتبر که به آن دسترسی دارید تغییر دهید:$ cat ~/test_message | s-nail -s ‘Test email subject line’ -r contact@example.com user@email.comسپس ، برای آدرس ایمیلی که پیام را برای آن ارسال کرده اید ، به صندوق ورودی بروید. پیام خود را تقریباً فوراً خواهید دید.توجه: اگر پیام در صندوق ورودی شما نیست ، ممکن است به پوشه Spam تحویل داده شده باشد.می توانید پیام های ارسالی خود را در کلاینت s-nail خود مشاهده کنید. دوباره کلاینت تعاملی را شروع کنید:$ s-nailاز کلاینت ایمیل ، پیام های ارسالی خود را با تایپ کردن این دستور مشاهده کنید:? file +sentخروجی مانند این را خواهید دید:Output+[/home/sammy/Maildir/]sent: 1 message 1 new▸N 1 contact@example.com 2020-05-19 15:47 12/297 Test email subject lineمی توانید ایمیل ارسال شده را با استفاده از همان دستوراتی که برای ایمیل های ورودی استفاده می کنید مدیریت کنید.نتیجهاکنون Postfix را در سرور مجازی Ubuntu 20.04 خود تنظیم کرده اید. مدیریت سرور مجازی های ایمیل می تواند یک کار سخت برای مدیران جدید سیستم باشد ، اما با این پیکربندی ، باید عملکرد ایمیل MTA کافی را برای شروع کار خود داشته باشید.</description><category>maliheshahi4</category><author>maliheshahi4</author><pubDate>Sat, 06 Jun 2020 14:07:50 +0430</pubDate></item><item><title>نصب و پیکربندی Laravel با Nginx در اوبونتو 20.04</title><link>https://virgool.ir/@maliheshahi4/نصب-و-پیکربندی-laravel-با-nginx-در-اوبونتو-2004-sygatfcfgxlm</link><description>Laravel یک چارچوب منبع باز PHP است که مجموعه ای از ابزارها و منابع را برای ساخت برنامه های کاربردی مدرن PHP فراهم می کند. محبوبیت Laravel به واسطه اکوسیستم کامل ویژگی های داخلی اش ، در چند سال گذشته به سرعت در حال رشد است و بسیاری از توسعه دهندگان آن را به عنوان چارچوب انتخاب خود برای یک فرایند توسعه کارآمد پذیرفته اند.در این راهنما ، یک برنامه جدید Laravel را روی یک سرور مجازی Ubuntu 20.04 نصب و پیکربندی می کنید ، از Composer برای دانلود و مدیریت متعلقات چارچوب استفاده میکنید. پس از پایان کار ، یک برنامه آزمایشی کاربردی Laravel دارید که محتوا را از یک پایگاه داده MySQL بیرون می کشد.پیش نیازهابرای تکمیل این راهنما ، ابتدا لازم است کارهای زیر را در سرور مجازی Ubuntu 20.04 خود انجام دهید:⦁ یک کاربر Sudo ایجاد کنید و ufw را فعال کنید. برای انجام این کار ، می توانید راهنمای راه اندازی اولیه سرور مجازی در اوبونتو 20.04 را دنبال کنید.⦁ یک پشته LEMP با MySQL 8 نصب کنید. اگر هنوز این کار را انجام نداده اید ، می توانید مراحل 1 تا 3 راهنمای ما درباره نحوه نصب Nginx ، MySQL و PHP را در اوبونتو 20.04 دنبال کنید.⦁ composer را نصب کنید. برای نصب Laravel و متعلقات آن از Composer استفاده خواهیم کرد. می توانید Composer را با پیروی از راهنمای ما در مورد نحوه نصب Composer در اوبونتو 20.04 نصب کنید.مرحله 1 – نصب ماژول های PHP مورد نیازقبل از نصب Laravel ، باید چند ماژول PHP را که مورد نیاز چارچوب است ، نصب کنید. ما برای نصب ماژول های php-mbstring ، php-xml و php-bcmath از PHP استفاده می کنیم. این پسوندهای PHP پشتیبانی بیشتری را برای مقابله با رمزگذاری کاراکترها ، XML و ریاضیات دقیق ارائه می دهند.اگر اولین بار است که از apt در این بخش استفاده می کنید ، ابتدا باید دستور update را برای به روزرسانی حافظه نهان مدیر بسته اجرا کنید:⦁ $ sudo apt update⦁اکنون می توانید بسته های مورد نیاز را با این دستور نصب کنید:⦁ $ sudo apt install php-mbstring php-xml php-bcmathاکنون سیستم شما آماده اجرای نصب Laravel از طریق Composer است ، اما قبل از انجام این کار ، به یک بانک اطلاعاتی برای برنامه خود نیاز دارید.مرحله 2 – ایجاد یک بانک اطلاعاتی برای برنامهبرای نشان دادن نصب و به کارگیری ساده Laravel ، یک برنامه لیست سفر ایجاد می کنیم تا لیستی از مکانهایی را که کاربر می خواهد به آن سفر کند و لیستی از مکانهایی که قبلاً بازدید کرده است ، نشان دهیم. این کار می تواند در یک جدول places ساده با یک فیلد برای مکان هایی که نام را قرار میدهیم و یک فیلد دیگر برای ذخیره آنها به عنوان بازدید شده یا بازدید نشده ذخیره شود ، که ما آن را بازدید شده مینامیم. علاوه بر این ، ما یک فیلد id برای شناسایی منحصر به فرد هر ورودی وارد خواهیم کرد.برای اتصال به بانک اطلاعاتی از برنامه Laravel ، یک کاربر اختصاصی MySQL ایجاد خواهیم کرد و به این کاربر امتیازات کاملی نسبت به بانک اطلاعاتی travellist اعطا می کنیم.در زمان نوشتن این مقاله، باینری MySQL PHP یعنی mysqlnd  از caching_sha2_authentication، روش تایید هویت پیش فرض برای MySQL 8 پشتیابی نمیکند. لازم است کاربر دیتابیس را با روش احراز هویت mysql_native_password تنظیم کنیم تا بتوانیم از PHP به پایگاه داده MySQL متصل شویم.برای شروع کار ، با دستور زیر به عنوان کاربر اصلی پایگاه داده به کنسول MySQL وارد شوید:⦁ $ sudo mysql⦁برای ایجاد یک پایگاه داده جدید ، دستور زیر را از کنسول MySQL خود اجرا کنید:⦁ Mysql&gt; CREATE DATABASE travellist;اکنون می توانید یک کاربر جدید ایجاد کنید و در پایگاه داده سفارشی که اخیراً ایجاد کرده اید ، به آنها امتیاز بدهید. در این مثال ، ما یک کاربر با نام Travelist_user و رمز عبور password ایجاد می کنیم ، اگرچه باید آن را با یک رمز عبور ایمن به انتخاب خود عوض کنید:⦁ Mysql&gt; CREATE USER ‘travellist_user’@’%’ IDENTIFIED WITH mysql_native_password BY ‘password’;⦁اکنون باید به این کاربر روی دیتابیس travellist مجوز اعطا کنیم:⦁ Mysql&gt; GRANT ALL ON travellist.* TO ‘travellist_user’@’%’;⦁این کار به کاربر Travelist_user امتیازات کامل نسبت به پایگاه داده Travellist می دهد ، ضمن اینکه از ایجاد یا تغییر سایر پایگاه های داده دیگر روی سرور مجازی شما جلوگیری می کند.پس از این ، از پوسته MySQL خارج شوید:⦁ Mysql&gt; exit⦁اکنون می توانید با ورود دوباره به کنسول MySQL ، این بار با استفاده از اعتبارات کاربر سفارشی ، آزمایش کنید که آیا کاربر جدید دارای مجوزهای مناسب است:⦁ $ mysql -u travellist_user -p⦁در این دستور ، به پرچم -p دقت کنید ، که پسورد استفاده شده هنگام ایجاد کاربر travel_userرا از شما میخواهد. پس از ورود به کنسول MySQL ، تأیید کنید که به بانک اطلاعاتی Travellist دسترسی دارید:⦁ Mysql&gt; SHOW DATABASES;⦁خروجی زیر را به شما می دهد:Output+——————–+| Database |+——————–+| information_schema || travellist |+——————–+2 rows in set (0.01 sec)در مرحله بعدی ، یک جدول با نام places در بانک اطلاعاتی Travellist ایجاد کنید. از کنسول MySQL عبارت زیر را اجرا کنید:⦁ Mysql&gt; CREATE TABLE travellist.places (⦁⦁ Mysql&gt; id INT AUTO_INCREMENT,⦁⦁ Mysql&gt; name VARCHAR(255),⦁⦁ Mysql&gt; visited BOOLEAN,⦁⦁ Mysql&gt; PRIMARY KEY(id)⦁⦁ Mysql&gt; );⦁اکنون ، جدول places را با داده های نمونه ای پر کنید:⦁ Mysql&gt; INSERT INTO travellist.places (name, visited)⦁⦁ Mysql&gt;VALUES (“Tokyo”, false),⦁⦁ Mysql&gt; (“Budapest”, true),⦁⦁ Mysql&gt; (“Nairobi”, false),⦁⦁ Mysql&gt; (“Berlin”, true),⦁⦁ Mysql&gt; (“Lisbon”, true),⦁⦁ Mysql&gt; (“Denver”, false),⦁⦁ Mysql&gt; (“Moscow”, false),⦁⦁ Mysql&gt; (“Olso”, false),⦁⦁ Mysql&gt; (“Rio”, true),⦁⦁ Mysql&gt; (“Cincinnati”, false),⦁⦁ Mysql&gt; (“Helsinki”, false);⦁⦁⦁برای اینکه تأیید کنید داده ها با موفقیت در جدول شما ذخیره شده اند ، این دستور اجرا کنید:⦁ Mysql&gt; SELECT * FROM travellist.places;⦁خروجی مشابه این را مشاهده خواهید کرد:Output+—-+———–+———+| id | name | visited |+—-+———–+———+| 1 | Tokyo | 0 || 2 | Budapest | 1 || 3 | Nairobi | 0 || 4 | Berlin | 1 || 5 | Lisbon | 1 || 6 | Denver | 0 || 7 | Moscow | 0 || 8 | Oslo | 0 || 9 | Rio | 1 || 10 | Cincinnati| 0 || 11 | Helsinki | 0 |+—-+———–+———+11 rows in set (0.00 sec)پس از تأیید اینکه داده های معتبری در جدول آزمون خود دارید ، می توانید از کنسول MySQL خارج شوید:⦁ Mysql&gt; exit⦁اکنون برای ایجاد برنامه و پیکربندی آن برای اتصال به پایگاه داده جدید آماده هستید.مرحله 3 – ایجاد یک برنامه جدید Laravelاکنون با استفاده از دستور composer create-project، یک برنامه جدید Laravel ایجاد خواهید کرد. این دستور Composer معمولاً برای راه اندازی برنامه های جدید بر اساس چارچوب های موجود و سیستم های مدیریت محتوا استفاده می شود.در طول این راهنما ، از Travellist به عنوان یک برنامه نمونه استفاده خواهیم کرد ، اما میتوانید این را به چیز دیگری تغییر دهید. برنامه travellist لیستی از مکانهای دریافتی از یک سرور مجازی محلی MySQL را نشان می دهد ، که قصد دارد پیکربندی اساسی Laravel را توصیف کند و تأیید کند که شما قادر به اتصال به پایگاه داده هستید.ابتدا به دیرکتوری هوم کاربر خود بروید:⦁ $ cd ~⦁دستور زیر یک دیرکتوری جدید Travellist را که شامل یک برنامه مختصر Laravel است بر اساس تنظیمات پیش فرض ایجاد می کند:⦁ $ composer create-project –prefer-dist laravel/laravel travellistخروجی مشابه این را مشاهده خواهید کرد:… OutputInstalling laravel/laravel (v5.8.17)– Installing laravel/laravel (v5.8.17): Downloading (100%)Created project in travellist&gt; @php -r “file_exists(‘.env’) || copy(‘.env.example’, ‘.env’);”Loading composer repositories with package informationUpdating dependencies (including require-dev)Package operations: 80 installs, 0 updates, 0 removals– Installing symfony/polyfill-ctype (v1.11.0): Downloading (100%)– Installing phpoption/phpoption (1.5.0): Downloading (100%)– Installing vlucas/phpdotenv (v3.4.0): Downloading (100%)– Installing symfony/css-selector (v4.3.2): Downloading (100%)…پس از اتمام نصب ، به دیرکتوری برنامه دسترسی پیدا کنید و دستور artisan Laravel را اجرا کنید تا تأیید کنید که همه مؤلفه ها با موفقیت نصب شده اند:⦁ $ cd travellist⦁⦁ $ php artisanخروجی مشابه این را مشاهده خواهید کرد:OutputLaravel Framework 7.11.0Usage:command [options] [arguments]Options:-h, –help Display this help message-q, –quiet Do not output any message-V, –version Display this application version–ansi Force ANSI output–no-ansi Disable ANSI output-n, –no-interaction Do not ask any interactive question–env[=ENV] The environment the command should run under-v|vv|vvv, –verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug…این خروجی تأیید می کند که فایل های برنامه در دسترس هستند و ابزارهای خط فرمان Laravel همانطور که انتظار می رود کار می کنند. با این حال ، هنوز نیاز به پیکربندی برنامه برای تنظیم پایگاه داده و چند جزئیات دیگر داریم.مرحله 4 – پیکربندی Laravelفایل های پیکربندی Laravel در پوشه ای به نام config ، در دیرکتوری اصلی برنامه قرار دارند. علاوه بر این ، وقتی Laravel را با Composer نصب می کنید ، یک فایل محیط ایجاد می کند. این فایل شامل تنظیمات خاص برای محیط فعلی است که برنامه در آن اجرا می شود و بر مقادیر تعیین شده در فایل های پیکربندی منظم واقع در دیرکتوری پیکربندی تقدم می یابد. هر نصب بر روی یک محیط جدید نیاز به یک فایل متناسب با محیط دارد تا مواردی از قبیل تنظیمات اتصال بانک اطلاعاتی ، گزینه های اشکال زدایی ، URL برنامه را در میان موارد دیگر که ممکن است بسته به محیطی که برنامه اجرا میشود متفاوت باشد، تعریف کند.هشدار: فایل پیکربندی محیط شامل اطلاعات حساس در مورد سرور مجازی، از جمله اطلاعات پایگاه داده و کلیدهای امنیتی است. به همین دلیل ، شما هرگز نباید این فایل را به صورت عمومی به اشتراک بگذارید.اکنون برای سفارشی کردن گزینه های پیکربندی محیط برنامه فعلی ، فایل .env را ویرایش خواهیم کرد.فایل .env را با استفاده از ویرایشگر خط فرمان خود انتخاب کنید. در اینجا ما از nano استفاده خواهیم کرد:⦁ $ nano .env⦁حتی اگر متغیرهای پیکربندی زیادی در این فایل وجود داشته باشد ، لازم نیست اکنون همه آنها را تنظیم کنید. لیست زیر شامل نمای کلی از متغیرهایی است که نیاز به توجه فوری دارند:⦁ APP_NAME: نام برنامه ، که برای اعلان ها و پیام ها استفاده می شود.⦁ APP_ENV: محیط برنامه فعلی.⦁ APP_KEY: برای تولید salts  و hashes استفاده میشود، این کلید منحصر به فرد هنگام نصب Laravel از طریق Composer به طور خودکار ایجاد می شود ، بنابراین نیازی به تغییر آن نیست.⦁ APP_DEBUG: این که آیا اطلاعات اشکال زدایی را در سمت کلاینت نشان دهد یا خیر.⦁ APP_URL: URL پایه برای برنامه ، که برای تولید لینک های برنامه کاربردی استفاده می شود.⦁ DB_DATABASE: نام بانک اطلاعاتی⦁ DB_USERNAME: نام کاربری برای اتصال به بانک اطلاعاتی.⦁ DB_PASSWORD: رمز عبور برای اتصال به پایگاه داده.به طور پیش فرض ، این مقادیر برای یک محیط توسعه محلی که از Homestead استفاده می کند ، (یک جعبه بسته بندی شده Vagrant ارائه شده توسط Laravel ) تنظیم شده است. ما این مقادیر را تغییر خواهیم داد تا منعکس کننده تنظیمات محیط فعلی برنامه مثال ما باشد.در صورت نصب Laravel در یک محیط توسعه یا آزمایش ، می توانید گزینه APP_DEBUG را فعال کنید زیرا این کار هنگام آزمایش برنامه از یک مرورگر ، اطلاعات اشکال زدایی مهم را به شما می دهد. متغیر APP_ENV باید در این حالت روی development  یا testing  تنظیم شود.در صورت نصب Laravel در یک محیط تولید ، باید گزینه APP_DEBUG را غیرفعال کنید ، زیرا اطلاعات حساس کاربر نهایی را درباره برنامه شما نشان می دهد. APP_ENV در این حالت باید روی production تنظیم شود.فایل های .env زیر برنامه نمونه ما را برای development  تنظیم می کند:توجه: متغیر APP_KEY حاوی یک کلید منحصر به فرد است که هنگام نصب Laravel از طریق Composer به صورت خودکار ایجاد شد. نیازی نیست این مقدار را تغییر دهید. اگر می خواهید یک کلید ایمن جدید تولید کنید ، می توانید از فرمان php artisan key:generate استفاده کنید./var/www/travellist/.envAPP_NAME=TravelListAPP_ENV=developmentAPP_KEY=APPLICATION_UNIQUE_KEY_DONT_COPYAPP_DEBUG=trueAPP_URL=http://domain_or_IPLOG_CHANNEL=stackDB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=travellistDB_USERNAME=travellist_userDB_PASSWORD=password…متغیرهای خود را بر این اساس تنظیم کنید. وقتی ویرایش به پایان رسید ، فایل را ذخیره کنید و ببندید تا تغییرات خود را حفظ کنید. اگر از nano استفاده می کنید ، می توانید این کار را با CTRL + X انجام دهید ، سپس Y و Enter انجام دهید.برنامه Laravel شما اکنون تنظیم شده است ، اما ما هنوز باید سرور مجازی وب را پیکربندی کنیم تا بتوانیم از یک مرورگر به آن دسترسی پیدا کنیم. در مرحله بعدی ، Nginx را برای ارائه برنامه Laravel شما پیکربندی می کنیم.مرحله 5 – راه اندازی NginxLaravel را در یک پوشه محلی در دیرکتوری اصلی کاربر از راه دور شما نصب کرده ایم ، و اگرچه این کار برای محیط های محلی توسعه مناسب است ، یک سرویس توصیه شده برای سرور مجازی های وب نیست که برای اینترنت عمومی باز باشد. پوشه برنامه را به / var / www که مکان معمول برنامه های وب است که در Nginx در حال اجرا هستند منتقل می کنیم.ابتدا ، از دستور mv برای انتقال پوشه برنامه با تمام محتویات آن به / var / www / travellist استفاده کنید:⦁ $ sudo mv ~/travellist /var/www/travellist⦁حال باید به کاربر سرور مجازی وب به پوشه های storage  و cache  دسترسی دهیم ، یعنی جایی که Laravel فایل های تولید شده توسط برنامه را ذخیره می کند:⦁ $ sudo chown -R www-data.www-data /var/www/travellist/storage⦁⦁ $ sudo chown -R www-data.www-data /var/www/travellist/bootstrap/cacheاکنون فایل های برنامه به ترتیب هستند ، اما برای ارائه محتوا هنوز باید پیکربندی Nginx را انجام دهیم. برای این کار ، یک فایل پیکربندی هاست مجازی جدید را در /etc/nginx/sites-available ایجاد خواهیم کرد:⦁ $ sudo nano /etc/nginx/sites-available/travellist⦁فایل پیکربندی زیر شامل تنظیمات پیشنهادی برای برنامه های Laravel در Nginx است:/etc/nginx/sites-available/travellistserver {listen 80;server_name server_domain_or_IP;root /var/www/travellist/public;add_header X-Frame-Options “SAMEORIGIN”;add_header X-XSS-Protection “1; mode=block”;add_header X-Content-Type-Options “nosniff”;index index.html index.htm index.php;charset utf-8;location / {try_files $uri $uri/ /index.php?$query_string;}location = /favicon.ico { access_log off; log_not_found off; }location = /robots.txt { access_log off; log_not_found off; }error_page 404 /index.php;location ~ \.php$ {fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;include fastcgi_params;}location ~ /\.(?!well-known).* {deny all;}}این محتوا را در فایل / etc / nginx / sites-available / travellist خود کپی کنید و در صورت لزوم مقادیر هایلایت شده را تنظیم کنید تا با پیکربندی شما مطابقت داشته باشد. پس از پایان ویرایش ، فایل را ذخیره کنید و ببندید.برای فعال کردن فایل پیکربندی میزبان مجازی جدید ، پیوندی نمادین به travellist در sites-enabled بدهید:⦁ $ sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/⦁توجه: اگر فایل میزبان مجازی دیگری دارید که قبلاً برای همان server_name استفاده شده در میزبان مجازی travellist پیکربندی شده است ، ممکن است نیاز به غیرفعال کردن تنظیمات قدیمی با حذف پیوند نمادین مربوطه در داخل /etc/nginx/sites-enabled/ داشته باشید.برای تأیید اینکه پیکربندی شامل هیچ خطای نحوی نیست ، می توانید از این دستور استفاده کنید:⦁ $ sudo nginx -t⦁باید خروجی مانند این را مشاهده کنید:Output⦁ $ nginx: the configuration file /etc/nginx/nginx.conf syntax is ok⦁⦁ $ nginx: configuration file /etc/nginx/nginx.conf test is successfulبرای اعمال تغییرات ، دوباره Nginx را با دستور زیر لود کنید:⦁ $ sudo systemctl reload nginx⦁اکنون به مرورگر خود بروید و با استفاده از نام دامنه یا آدرس IP سرور مجازی ، مطابق با دستور server_name در فایل تنظیمات خود ، به مرورگر خود بروید و به برنامه دسترسی پیدا کنید:http://server_domain_or_IPصفحه ای مانند این را مشاهده خواهید کرد:این صفحه تأیید می کند که سرور مجازی Nginx شما به درستی پیکربندی شده است تا Laravel را ارائه کند. از این مرحله ، می توانید برنامه خود را روی اسکلت ارائه شده توسط نصب پیش فرض شروع کنید.در مرحله بعدی ، مسیر اصلی برنامه را برای جستجوی داده ها در پایگاه داده با استفاده از نمای DB Laravel اصلاح خواهیم کرد.مرحله 6 – شخصی سازی صفحه اصلیبا فرض اینکه شما تاکنون تمامی مراحل این راهنما را رعایت کرده اید ، باید یک برنامه کاربردی Laravel و یک جدول بانک اطلاعاتی به نام palces داشته باشید که حاوی برخی از داده های نمونه است.اکنون مسیر اصلی برنامه را برای جستجوی پایگاه داده ویرایش می کنیم و محتویات را به نمای برنامه باز می گردانیم.فایل مسیر اصلی ، یعنی routes/web.php را باز کنید:⦁ $ nano routes/web.php⦁این فایل به طور پیش فرض با محتوای زیر ارائه می شود:routes/web.php&lt;?php/*|————————————————————————–| Web Routes|————————————————————————–|| Here is where you can register web routes for your application. These| routes are loaded by the RouteServiceProvider within a group which| contains the “web” middleware group. Now create something great!|*/Route::get(‘/’, function () {return view(‘welcome’);});مسیرها با استفاده از روش Route::get استاتیک تعریف می شوند که یک مسیر و یک عملکرد برگشتی را به عنوان آرگومان دریافت می کند.کد زیر جایگزین عملکرد برگشتی مسیر اصلی است. با استفاده از پرچم visited  برای فیلتر نتایج ، 2 جستار به دیتابیس فرستاده میشود. این کار، نتایج را به نمایی به نام travellist باز می گرداند ، که می خواهیم بعدا آن را ایجاد کنیم. این محتوا را در فایل routes/web.php خود کپی کنید و کدی را که قبلاً در آنجا قرار دارد جایگزین کنید:routes/web.php&lt;?phpuse Illuminate\Support\Facades\DB;Route::get(‘/’, function () {$visited = DB::select(‘select * from places where visited = ?’, [1]);$togo = DB::select(‘select * from places where visited = ?’, [0]);return view(‘travellist’, [‘visited’ =&gt; $visited, ‘togo’ =&gt; $togo ] );});پس از پایان ویرایش ، فایل را ذخیره کنید و ببندید. اکنون نمایی را ایجاد می کنیم که نتایج دیتابیس را به کاربر ارائه می دهد. یک فایل نمای جدید در داخل resources/views ایجاد کنید:⦁ $ nano resources/views/travellist.blade.php⦁الگوی زیر بر اساس متغیرهای visited  و togo ، دو لیست از مکان ها ایجاد می کند. این محتوا را در فایل نمای جدید خود کپی کنید:resources/views/travellist/blade.php&lt;html&gt;&lt;head&gt;&lt;title&gt;Travel List&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;h1&gt;My Travel Bucket List&lt;/h1&gt;&lt;h2&gt;Places I’d Like to Visit&lt;/h2&gt;&lt;ul&gt;@foreach ($togo as $newplace)&lt;li&gt;{{ $newplace-&gt;name }}&lt;/li&gt;@endforeach&lt;/ul&gt;&lt;h2&gt;Places I’ve Already Been To&lt;/h2&gt;&lt;ul&gt;@foreach ($visited as $place)&lt;li&gt;{{ $place-&gt;name }}&lt;/li&gt;@endforeach&lt;/ul&gt;&lt;/body&gt;&lt;/html&gt;پس از پایان کار ، فایل را ذخیره کنید و ببندید. اکنون به مرورگر خود بروید و برنامه را مجدد لود کنید. صفحه ای را به این شکل مشاهده خواهید کرد:اکنون یک برنامه کاربردی Laravel در حال دریافت محتوا از یک پایگاه داده MySQL دارید.نتیجهدر این آموزش ، یک برنامه جدید Laravel را روی پشته LEMP (Linux ، Nginx ، MySQL و PHP) تنظیم کرده اید که روی یک سرور مجازی اوبونتو 20.04 اجرا می شود. همچنین مسیر پیش فرض خود را برای جستجوی محتوای پایگاه داده تنظیم کرده اید و نتایج را در نمای سفارشی به نمایش می گذارید.از اینجا ، می توانید مسیرها و نماهای جدیدی را برای هر صفحه دیگری که برنامه شما به آن نیاز دارد ایجاد کنید. برای اطلاعات بیشتر در مورد مسیرها ، نماها و پشتیبانی از پایگاه داده ، مطالب رسمی Laravel را بررسی کنید. اگر به استقرار تولید مشغول هستید ، باید بخش بهینه سازی را نیز به چند روش مختلف بررسی کنید تا بتوانید عملکرد برنامه خود را بهبود بخشید.</description><category>maliheshahi4</category><author>maliheshahi4</author><pubDate>Sat, 06 Jun 2020 13:59:19 +0430</pubDate></item><item><title>نحوه توسعه برنامه ها در Kubernetes با Okteto</title><link>https://virgool.ir/@maliheshahi4/نحوه-توسعه-برنامه-ها-در-kubernetes-با-okteto-met1rkztjys1</link><description>Okteto CLI یک پروژه منبع باز است که تجربه توسعه محلی را برای برنامه های در حال اجرا در Kubernetes فراهم می کند. با استفاده از آن می توانید کد خود را بر روی IDE محلی خود بنویسید و به محض ذخیره یک فایل ، تغییرات را می توان به خوشه Kubernetes خود وارد کرد و برنامه شما فوراً بروزرسانی خواهد شد. کل این فرآیند بدون نیاز به ساخت تصاویر Docker یا اعمال مانیفست های Kubernetes اتفاق می افتد ، که می تواند زمان قابل توجهی طول بکشد.در این آموزش ، شما از Okteto برای بهبود بهره وری در هنگام تهیه یک برنامه بومی Kubernetes استفاده خواهید کرد. ابتدا ، یک خوشه Kubernetes ایجاد می کنید و از آن برای اجرای یک برنامه استاندارد “Hello World” استفاده می کنید. سپس از Okteto برای توسعه و به روز کردن خودکار برنامه خود بدون نیاز به نصب محلی استفاده خواهید کرد.پیش نیازهاقبل از شروع این آموزش ، موارد زیر را نیاز خواهید داشت:⦁ خوشه Kubernetes 1.12+ . در این آموزش ، از یک خوشه vpsgol Kubernetes با سه گره استفاده می شود ، اما شما می توانید با استفاده از یک روش دیگر ، خوشه ایجاد کنید.⦁ kubectl و doctl برای برقراری ارتباط با خوشه شما نصب و تنظیم شده باشند.⦁ یک حساب کاربری Docker Hub⦁ Docker در حال اجرا بر روی دستگاه محلی شما.مرحله 1 – ایجاد برنامه Hello Worldبرنامه “hello world” یک سنت قدیمی در توسعه وب است. در این حالت ، یک سرویس وب ساده است که به هر درخواست با ” hello world” پاسخ می دهد. اکنون که خوشه Kubernetes خود را ایجاد کرده اید ، اجازه دهید یک برنامه “Hello World” را در Golang و مانیفیستی که برای استقرار آن در Kubernetes استفاده خواهید کرد ، ایجاد کنیم.اولین به دایرکتوری هوم خود سوییچ کنید:⦁ $ cd ~⦁اکنون یک دایرکتوری جدید به نام hello_world تهیه کرده و به داخل آن بروید:⦁ $ mkdir hello_world⦁⦁ $ cd hello_worldبا IDE یا ویرایشگر متن مورد علاقه خود ، فایل جدیدی را با نام main.go ایجاد و باز کنید:⦁ $ nano main.go⦁main.go یک وب سرور مجازی Golang خواهد بود که پیام hello world را به شما باز می گرداند !. بنابراین ، اجازه دهید از کد زیر استفاده کنیم:main.gopackage mainimport (“fmt”“net/http”)func main() {fmt.Println(“Starting hello-world server…”)http.HandleFunc(“/”, helloServer)if err := http.ListenAndServe(“:8080”, nil); err != nil {panic(err)}}func helloServer(w http.ResponseWriter, r *http.Request) {fmt.Fprint(w, “Hello world!”)}کد main.go موارد زیر را انجام می دهد:⦁ اولین عبارت در یک فایل منبع Go باید نام بسته باشد. دستورات اجرایی همیشه باید از package main استفاده کنند.⦁ بخش ورودی نشان می دهد کد بسته به چه مواردی بستگی دارد. در این حالت از fmt برای دستکاری رشته و net / http برای سرور مجازی HTTP استفاده می کند.⦁ تابع main نقطه ورود به باینری شماست. از روش http.HandleFunc برای پیکربندی سرور مجازی جهت فراخوانی helloServer در هنگام دریافت درخواست به مسیر / استفاده می شود. http.ListenAndServe یک سرور مجازی HTTP را شروع می کند که در تمام رابط های شبکه به پورت 8080 گوش می دهد.⦁ عملکرد helloServer شامل منطق کنترل کننده درخواست شما است. در این حالت ، hello world! را به عنوان پاسخ به درخواست خواهد نوشت.شما باید یک تصویر Docker ایجاد کرده و آن را به سمت رجیستری Docker خود هدایت کنید تا Kubernetes بتواند آن را دریافت و سپس برنامه را اجرا کند.یک فایل جدید با نام Dockerfile را با IDE یا ویرایشگر متن مورد علاقه خود باز کنید:⦁ $ nano Dockerfile⦁Dockerfile شامل دستورات لازم برای ساخت کانتینر Docker برنامه شما می باشد. اجازه دهید از کد زیر استفاده کنیم:DockerfileFROM golang:alpine as builderRUN apk –update –no-cache add bashWORKDIR /appADD . .RUN go build -o appFROM alpine as prodWORKDIR /appCOPY –from=builder /app/app /app/appEXPOSE 8080CMD [“./app”]CopyDockerfile شامل دو مرحله است builder و  prod:• مرحله builder  شامل ابزارهای ساخت Go است. که مسئول کپی کردن فایل ها و ساخت باینری Go است.• مرحله prod تصویر نهایی است. فقط شامل یک سیستم تهی و باینری برنامه خواهد بود.این یک تمرین خوب میباشد. کانتینر تولید شما را کوچکتر و ایمن تر می کند زیرا تنها شامل برنامه شما و دقیقاً آنچه برای اجرای آن لازم است می باشد.تصویر کانتینر را بسازید (نام_DockerHub_usus را با نام کاربری داکر هاب خود جایگزین کنید):⦁ $ docker build -t your_DockerHub_username/hello-world:latest⦁اکنون آن را به Docker Hub وارد کنید:⦁ $ docker push your_DockerHub_username/hello-world:latest⦁سپس ، یک پوشه جدید برای مانیفست Kubernetes ایجاد کنید:⦁ $ mkdir k8s⦁وقتی از مانیفست Kubernetes استفاده می کنید ، به Kubernetes می گویید که چگونه برنامه شما اجرا می شود. این بار ، یک شیء استقرار ایجاد می کنید. بنابراین ، یک فایل جدید deployment.yaml را با IDE یا ویرایشگر متن مورد علاقه خود ایجاد کنید:⦁ $ nano k8s/deployment.yaml⦁مطالب زیر یک شیء استقرار Kubernetes را شرح می دهد که تصویر داکر okteto/hello-world:latest را اجرا میکند. این محتوا را به فایل جدید خود اضافه کنید ، اما در مورد شما okteto ذکر شده بعد از برچسب image را با your_DockerHub_username جایگزین کنید:~/hello_world/k8s/deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata:name: hello-worldspec:selector:matchLabels:app: hello-worldreplicas: 1template:metadata:labels:app: hello-worldspec:containers:– name: hello-worldimage: your_DockerHub_username/hello-world:latestports:– containerPort: 8080مانیفست استقرار دارای سه بخش اصلی است:⦁ metadata  نام استقرار شما را مشخص می کند.⦁ replicas  مشخص می کند که چند نسخه از آن را می خواهید اجرا کنید.⦁ template  به Kubernetes می گوید که چه چیزی را مستقر کند و چه برچسب هایی را اضافه نماید. در این حالت ، یک کانتینر واحد ، با تصویر okteto/hello-world:latest ، که به پورت 8080 گوش میدهد، و با برچسب app: hello-world همراه است. توجه داشته باشید که این برچسب همان مورد استفاده در بخش selector  است.اکنون به راهی برای دسترسی به برنامه خود نیاز دارید. می توانید با ایجاد یک شیء سرویس ، برنامه ای را در Kubernetes قرار دهید. بیایید با استفاده از مانیفست این کار را انجام دهیم. با IDE یا ویرایشگر متن مورد علاقه خود فایل جدیدی به نام service.yaml ایجاد کنید:⦁ nano k8s/service.yaml⦁محتوای زیر سرویس هایی را نشان می دهد که شیء استقرار hello world را در معرض دید شما قرار می دهد:k8s/service.yamlapiVersion: v1kind: Servicemetadata:name: hello-worldspec:type: LoadBalancerports:– protocol: TCPport: 80targetPort: 8080name: httpselector:app: hello-worldمانیفست سرویس چهار بخش اصلی دارد:⦁ metadata  به Kubernetes می گوید كه چگونه سرویس خود را نامگذاری كنند.⦁ type  به Kubernetes می گوید چگونه می خواهید سرویس خود را در معرض دید قرار دهید.⦁ برچسب ports  به Kubernetes می گوید كه كدام پورت را می خواهید در معرض دید قرار دهید ، و چگونه می توانید آنها را برای استقرار خود نگاشت كنید. در این حالت ، پورت 80 را به صورت خارجی در معرض دید قرار می دهید و آن را به پورت 8080 در محل استقرار خود هدایت می کنید.⦁ selector  به Kubernetes می گوید که چگونه ترافیک را هدایت کند. در این حالت ، هر پوسته با برچسب app: hello-world ترافیک دریافت می کند.اکنون شما همه چیز را برای استقرار برنامه “hello world” خود در Kubernetes دارید. در ادامه کار استقرار را انجام خواهیم داد.مرحله 2 – استفاده از برنامه Hello World شمادر این مرحله برنامه “Hello World” خود را در Kubernetes مستقر می کنید ، سپس تأیید می کنید که درست کار می کند.با استقرار برنامه خود در Kubernetes کار را شروع کنید:⦁ $ kubectl apply -f k8s⦁خروجی زیر را مشاهده خواهید کرد:Outputdeployment.apps “hello-world” createdservice “hello-world” createdبعد از گذشت حدود یک دقیقه یا بیشتر ، می توانید IP برنامه خود را بازیابی کنید. برای بررسی سرویس خود از این دستور kubectl استفاده کنید:⦁ $ kubectl get service hello-world⦁خروجی مانند این را مشاهده خواهید کرد که اشیاء سرویس Kubernetes را لیست میکند. به IP برنامه خود در ستون EXTERNAL-IP توجه کنید:OutputNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEhello-world ClusterIP your_cluster_ip your_external_ip 8080/TCP 37sمرورگر خود را باز کنید و به برنامه your_external_ip که برای برنامه “Hello World” ذکر شده است بروید. قبل از ادامه مرحله بعدی تأیید کنید که برنامه شما در حال اجرا است.تا این لحظه ، شما یک مسیر نسبتاً سنتی را برای توسعه برنامه ها با Kubernetes دنبال کرده اید. در ادامه ، هر زمان که می خواهید کد را در برنامه خود تغییر دهید ، باید یک تصویر جدید Docker بسازید و وارد کنید و سپس آن تصویر را از Kubernetes بیرون بکشید. این روند می تواند مدتی طول بکشد. Okteto برای ساده تر ساختن این حلقه درونی طراحی شده است. بیایید به Okteto CLI نگاهی بیندازیم و ببینیم چگونه می تواند کمک کند.مرحله 3 – نصب Okteto CLIاکنون با نصب Okteto CLI ، بهره وری توسعه Kubernetes را بهبود می بخشید. رابط خط فرمان Okteto یک پروژه منبع باز است که به شما امکان می دهد تغییرات کد برنامه را با برنامه های Kubernetes همزمان کنید. شما می توانید با استفاده از IDE ، اشکال زداگر یا کامپایلرهای مورد علاقه خود استفاده کنید بدون اینکه برای تست برنامه خود مجبور به تعهد ، ساخت ، ارائه یا استقرار مجدد کانتینرها باشید – همانطور که در مراحل قبلی انجام دادید.برای نصب Okteto CLI در دستگاه macOS یا Linux ، دستور زیر را اجرا کنید:⦁ $ curl https://get.okteto.com -sSfL | sh⦁بیایید نگاهی دقیق تر به این دستور بیاندازیم:⦁ از دستور curl برای انتقال داده به سرور مجازی استفاده می شود.⦁ پرچم -s هر خروجی را سرکوب می کند.⦁ پرچم -S خطاها را نشان می دهد.⦁ پرچم -f باعث عدم موفقیت درخواست در HTTP می شود.⦁ پرچم -L باعث می شود درخواست از تغییر مسیر پیروی کند.⦁ عملگر | این خروجی را به دستور sh پایپ می کند ، که آخرین باینری okteto را در دستگاه محلی شما دانلود و نصب می کند.اگر ویندوز را اجرا می کنید ، می توانید فایل را بطور متناوب از طریق مرورگر وب خود دانلود کرده و به صورت دستی آن را به PATH $ خود اضافه کنید.پس از نصب Okteto CLI ، آماده هستید تا برنامه “hello world” را در حالت توسعه قرار دهید.مرحله 4 – قرار دادن برنامه Hello world در حالت توسعهOkteto CLI به منظور جابجایی برنامه در حال اجرا بر روی خوشه Kubernetes با کد موجود در دستگاه شما طراحی شده است. برای این کار ، Okteto از اطلاعات ارائه شده از یک فایل مانیفست Okteto استفاده می کند. این فایل شیء استقرار Kubernetes را که با کد محلی شما تعویض می شود ، اعلام می کند.با IDE یا ویرایشگر متن مورد علاقه خود فایل جدیدی به نام okteto.yaml ایجاد کنید:⦁ $ nano okteto.yaml⦁بیایید یک مانیفست پایه بنویسیم که در آن می توانید نام شیء استقرار ، تصویر پایه Docker برای استفاده و یک پوسته را تعریف کنید. بعداً به این اطلاعات برمی گردیم. از فایل محتوای نمونه زیر استفاده کنید:okteto.yamlname: hello-worldimage: okteto/golang:1workdir: /appcommand: [“bash”]با اجرای دستور زیر آماده شوید تا برنامه خود را در حالت توسعه قرار دهید:⦁ $ okteto up⦁Output✓ Development environment activated✓ Files synchronizedNamespace: defaultName: hello-worldWelcome to your development environment. Happy coding!default:hello-world /app&gt;دستور okteto up برنامه “hello world” را در یک محیط توسعه عوض می کند ، این بدان معنی است که:⦁ کانتینر برنامه Hello World با تصویرداکر okteto/golang:1 به روز می شود. این تصویر شامل ابزارهای لازم برای ساخت ، آزمایش ، اشکال زدایی و اجرای برنامه “Hello World” است.⦁ یک سرویس همگام سازی فایل ایجاد شده است تا تغییرات شما بین سیستم فایل محلی و غلاف برنامه تان را به روز نگه دارد.⦁ یک پوسته از راه دور در محیط توسعه شما شروع می شود. اکنون می توانید برنامه خود را بگونه ای که در دستگاه محلی خود هستید ، بسازید ، آزمایش و اجرا کنید.⦁ هر پردازشی که در پوسته از راه دور اجرا می کنید ، همان ترافیک ورودی ، همان متغیرهای محیط ، والیوم یا رمزها را به عنوان غلافهای اصلی برنامه “Hello World” دریافت خواهد کرد. این به نوبه خود ، یک محیط توسعه کاملاً واقع بینانه و شبیه تولید را به شما می دهد.در همان کنسول ، اکنون برنامه را طبق معمول اجرا کنید (بدون ساختن و ارائه تصویر Docker) ، مانند این:⦁ Okteto&gt; go run main.go⦁OutputStarting hello-world server…اولین باری که برنامه را اجرا می کنید ، Go متعلقات شما را دانلود و برنامه را کامپایل می کند. صبر کنید تا این فرآیند کامل شود و با باز کردن مرورگر و ریفرش صفحه برنامه خود ، دقیقاً مانند گذشته ، برنامه خود را تست کنید.اکنون آماده هستید تا توسعه را مستقیماً روی Kubernetes شروع کنید.مرحله 5 – توسعه مستقیم روی Kubernetesبیایید شروع به ایجاد تغییراتی در برنامه “hello world” کنیم و سپس ببینیم که چگونه در Kubernetes بازتاب می یابند.فایل main.go را با IDE یا ویرایشگر متن مورد علاقه خود باز کنید. به عنوان مثال ، یک کنسول جداگانه باز کنید و دستور زیر را اجرا کنید:⦁ $ nano main.go⦁سپس ، پیام پاسخ خود را به Hello world from vpsgol! تغییر دهید!:main.gopackage mainimport (“fmt”“net/http”)func main() {fmt.Println(“Starting hello-world server…”)http.HandleFunc(“/”, helloServer)if err := http.ListenAndServe(“:8080”, nil); err != nil {panic(err)}}func helloServer(w http.ResponseWriter, r *http.Request) {fmt.Fprint(w, “Hello world from vpsgol!”)}اینجاست که گردش کار شما تغییر می کند. Okteto به جای ساختن تصاویر و استفاده مجدد از کانتینر برای به روزرسانی برنامه “hello world” ، تغییرات شما را در محیط توسعه خود در Kubernetes همگام سازی می کند.از کنسولی که فرمان okteto up را اجرا کردید ، با فشار دادن CTRL + C، اجرای go run main.go را لغو کنید. اکنون برنامه را دوباره اجرا کنید:⦁ Okteto&gt; default:hello-world /app&gt; go run main.go⦁OutputStarting hello-world server…به مرورگر برگردید و صفحه برنامه “Hello World” خود را مجدد لود کنید.تغییرات کد شما بلافاصله و همه بدون نیاز به تعهد ، ایجاد یا ارائه در Kubernetes اعمال شد .نتیجهOkteto با کلیک روی یک دکمه ، خوشه Kubernetes را به یک پلت فرم توسعه کاملاً برجسته تبدیل می کند. در این آموزش شما Okteto CLI را نصب و پیکربندی کرده اید تا کدهای خود را مستقیماً بر روی Kubernetes تغییر دهید تا بتوانید کد را سریعاً تایپ کنید. اکنون می توانید به مخزن نمونه Okteto بروید تا نحوه استفاده از Okteto با زبان های مختلف برنامه نویسی و اشکال زدایی را ببینید.همچنین ، اگر یک خوشه Kubernetes را با تیم خود به اشتراک می گذارید ، میتوانید به هر یک از اعضا یک فضای نام Kubernetes ارائه دهید که به گونه ای پیکربندی شده که از سایر توسعه دهندگان که بر روی همان خوشه کار میکنند، جدا باشد. این قابلیت عالی توسط اپلیکیشن Okteto در بازار Kubernetes vpsgol نیز ارائه شده است.</description><category>maliheshahi4</category><author>maliheshahi4</author><pubDate>Sat, 06 Jun 2020 13:53:04 +0430</pubDate></item></channel></rss>