server



یک زبان برنامه نویسی انعطاف پذیر و همه کاره است که می تواند در بسیاری از موارد به خاطر داشتن نقاط قوت در اسکریپت ، اتوماسیون ، تجزیه و تحلیل داده ها ، یادگیری ماشین و توسعه back-end مورد استفاده قرار گیرد. تیم توسعه پایتون برای اولین بار در سال 1991 با نامی الهام گرفته از گروه طنز بریتانیایی مونتی پایتون، آن را منتشر کردند و میخواستند پایتون را به زبانی تبدیل کنند که استفاده از آن بسیار جالب باشد. ستاپ سریع و سبک نسبتاً ساده و بازخورد فوری در مورد خطاها، پایتون را به یک انتخاب عالی برای مبتدیان و توسعه دهندگان با تجربه تبدیل کرده است. پایتون 3 جدیدترین نسخه این زبان است و آینده پایتون به حساب می آید.
در این آموزش 

سرور مجازی Ubuntu 18.04 شما با یک محیط برنامه نویسی Python 3 تنظیم می شود. برنامه نویسی روی 

سرور مجازی مزایای بسیاری دارد و از همکاری در پروژه های توسعه پشتیبانی می کند. اصول کلی این آموزش در مورد هرگونه توزیع Debian Linux کاربرد دارد.
پیش نیازها
برای تکمیل این آموزش ، باید یک کاربر غیر root با امتیازات sudo در 

سرور مجازی Ubuntu 18.04 داشته باشید. برای یادگیری چگونگی دستیابی به این تنظیمات ، راهنمای راه اندازی 

سرور مجازی اولیه ما را دنبال کنید یا اسکریپت خودکار خود را اجرا کنید.
اگر از قبل با محیط ترمینال آشنایی ندارید ، می توانید مقاله مقدمه ای بر ترمینال لینوکس” را برای کارکردن بهتر با ترمینال بخوانید.
با راه اندازی 

سرور مجازی و کاربر ، آماده شروع کار هستید.
مرحله 1 – تنظیم پایتون 3
اوبونتو 18.04 و سایر نسخه های دبیان لینوکس هم Python 3 و هم Python 2 را از قبل نصب شده دارند. برای اطمینان از به روز بودن نسخه های خود ، بیایید سیستم را با دستور apt به روزرسانی کنیم تا با ابزار بسته بندی پیشرفته اوبونتو کار کند:
$ sudo apt update

$ sudo apt -y upgrade
پرچم -y تأیید خواهد کرد که ما موافق نصب همه موارد هستیم ، اما بسته به نسخه لینوکس شما ، ممکن است لازم باشد که در به روزرسانی و ارتقای سیستم ، اعلان های بیشتری را تأیید کنید.
پس از اتمام روند ، می توانیم با تایپ کردن دستور زیر، نسخه پایتون 3 که در سیستم نصب شده است را بررسی کنیم:
$ python3 -V

در پنجره ترمینال، خروجی دریافت خواهید کرد که شماره نسخه را به شما اطلاع می دهد. در حالی که ممکن است این عدد متفاوت باشد ، خروجی مشابه این خواهد بود:
Output
Python 3.6.7

برای مدیریت بسته های نرم افزاری برای پایتون ، بیایید pip را نصب کنیم ، ابزاری که بسته های برنامه نویسی را که ممکن است بخواهیم در پروژه های توسعه خود استفاده کنیم ، نصب و مدیریت خواهد کرد. می توانید با خواندن مقاله چگونگی وارد کردن ماژول ها در پایتون 3” در مورد ماژول ها یا بسته هایی که می توانید آنها را نصب کنید اطلاعات کسب کنید.
$ sudo apt install -y python3-pip

بسته های پایتون با تایپ دستور زیر قابل نصب هستند:
$ pip3 install package_name

در اینجا ، pack_name می تواند به هر بسته یا کتابخانه Python مانند Django برای توسعه وب یا NumPy برای محاسبات علمی مراجعه کند. بنابراین اگر می خواهید NumPy را نصب کنید ، می توانید با دستور pip3 install numpy این کار را انجام دهید.
چند بسته و ابزار توسعه دیگر وجود دارد که باید اطمینان حاصل شود که یک مجموعه قوی برای محیط برنامه نویسی خود داریم:
$ sudo apt install build-essential libssl-dev libffi-dev python3-dev

پس از راه اندازی پایتون و نصب pip و سایر ابزارها ، می توانیم یک محیط مجازی برای پروژه های توسعه خود تنظیم کنیم.
مرحله 2 – تنظیم یک محیط مجازی
محیط های مجازی شما را قادر می سازد برای پروژه های پایتون فضایی مجزا در 

سرور مجازی خود داشته باشید ، اطمینان حاصل کنید که هر یک از پروژه های شما می توانند مجموعه ای از متعلقات خاص خود را داشته باشند که هیچ یک از پروژه های دیگر شما را مختل نمی کند.
تنظیم یک محیط برنامه نویسی ، کنترل بیشتری بر روی پروژه های Python و نحوه دستیابی به نسخه های مختلف بسته ها برای ما فراهم می کند. این امر به ویژه هنگام کار با بسته های شخص ثالث بسیار مهم است.
می توانید همانطور که می خواهید محیط برنامه نویسی Python را تنظیم کنید. هر محیط در واقع یک دیرکتوری یا پوشه ای در 

سرور مجازی شماست که چندین اسکریپت در آن وجود دارد تا بتواند به عنوان یک محیط عمل کند.
در حالی که چند روش برای دستیابی به یک محیط برنامه نویسی در پایتون وجود دارد ، ما در اینجا از ماژول venv استفاده می کنیم که بخشی از کتابخانه استاندارد Python 3 است. بگذارید venv را با تایپ کردن دستور زیر نصب کنیم:
$ sudo apt install -y python3-venv

با نصب آن، آماده ایجاد محیط هستیم. بیایید انتخاب کنیم که می خواهیم محیط های برنامه نویسی پایتون را در کدام دایرکتوری قرار دهیم ، یا یک دیرکتوری جدید با mkdir ایجاد کنیم ، مانند:
$ mkdir environments

$ cd environments
وقتی در دایرکتوری قرار گرفتید که میخواهید محیط در آنجا قرار گیرد ، می توانید با اجرای دستور زیر محیطی ایجاد کنید:
$ python3.6 -m venv my_env

در اصل ، pyvenv یک دیرکتوری جدید ایجاد می کند که شامل چند مورد است که می توانیم با دستور ls آنها را مشاهده کنیم:
$ ls my_env

Output
bin include lib lib64 pyvenv.cfg share

این فایلها با هم کار می کنند تا اطمینان حاصل کنند که پروژه های شما از بستر وسیع تر دستگاه محلی تان جدا شده اند ، به گونه ای که فایل های سیستم و فایل های پروژه مخلوط نشوند. این روش خوبی برای کنترل نسخه و اطمینان از دسترسی هر یک از پروژه های شما به بسته های خاص مورد نیاز خود است. Python Wheels ، یک فرمت بسته ای ساخته شده برای Python است که می تواند با کاهش تعداد دفعات لازم برای تهیه کامپایل ، سرعت تولید نرم افزار شما را بالا ببرد و در دایرکتوری share Ubuntu 18.04 قرار خواهد گرفت.
برای استفاده از این محیط ، باید آن را فعال کنید ، که می توانید با تایپ دستور زیر که اسکریپت فعال سازی را فراخوانی می کند به آن دست پیدا کنید:
$ source my_env/bin/activate

خط فرمان شما اکنون با نام محیط شما پیشوند داده می شود ، در این حالت my_env نام دارد. بسته به اینکه کدام نسخه Debian Linux در حال اجرا است ، پیشوند شما ممکن است تا حدودی متفاوت به نظر برسد ، اما نام محیط شما در پرانتز باید اولین چیزی باشد که در خط خود مشاهده می کنید:
(my_env) Sammy@ubuntu:~/environments$
این پیشوند به ما اطلاع می دهد که محیط my_env در حال حاضر فعال است ، به این معنی که وقتی ما در اینجا برنامه هایی را ایجاد می کنیم آنها فقط از تنظیمات و بسته های خاص این محیط استفاده می کنند.
توجه: در محیط مجازی می توانید به جای python3 از فرمان python استفاده کنید و در صورت تمایل به جای pip3 از pip استفاده کنید. اگر در خارج از محیط از پایتون 3 در دستگاه خود استفاده می کنید ، لازم است که از دستورات python3 و pip3 استفاده کنید.

بعد از طی کردن این مراحل ، محیط مجازی شما آماده استفاده است.
مرحله 3 – ایجاد یک برنامه ” hello, world”
اکنون که محیط مجازی ما تنظیم شده است ، بیایید یک برنامه ” hello, world!” معمول ایجاد کنیم. این برنامه به ما امکان می دهد تا محیط خود را مورد آزمایش قرار دهیم و اگر قبلاً با پایتون کار نکرده ایم، بیشتر با آن آشنا شویم.
برای این کار ، یک ویرایشگر متن خط فرمان مانند nano را باز خواهیم کرد و یک فایل جدید ایجاد می کنیم:
(my_env) Sammy@ubuntu:~/environments$ nano hello.py

پس از باز شدن فایل متنی در پنجره ترمینال ، برنامه خود را تایپ می کنیم:
print(Hello, World!”)
Copy
با تایپ کلیدهای CTRL و X از nano خارج شوید و هنگامی که از شما خواسته شد فایل را ذخیره کنید، y را فشار دهید.
پس از بیرون آمدن از nano و بازگشت به پوسته خود ، اجازه دهید برنامه را اجرا کنیم:
(my_env) Sammy@ubuntu:~/environments$ python hello.py

برنامه hello.py که به تازگی ایجاد کرده اید باید باعث شود ترمینال شما خروجی زیر را تولید کند:
Output
Hello, World!

برای ترک محیط ، به سادگی فرمان deactivate را تایپ کنید و به فهرست اصلی خود باز خواهید گشت.
نتیجه
در این مرحله شما یک محیط برنامه نویسی پایتون 3 در 

سرور مجازی Debian Linux خود تنظیم کرده اید و هم اکنون می توانید یک پروژه رمزگذاری را شروع کنید!
اگر از دستگاه محلی به جای 

سرور مجازی استفاده می کنید ، به مجموعه آموزشهای مربوط به سیستم عامل خود در سری نحوه نصب و تنظیم یک محیط برنامه نویسی محلی برای پایتون 3” مراجعه کنید.
با آماده سازی 

سرور مجازی خود برای توسعه نرم افزار ، می توانید با خواندن کتاب رایگان نحوه کدنویسی در Python 3 ، یا مشاوره گرفتن از آموزش های پروژه برنامه نویسی ما ، اطلاعات بیشتری درباره کد نویسی در پایتون کسب کنید.

 

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

استفاده از nsh برای دستورات از راه دور اوبونتو 18 –  

میزبانی وب سایت با Caddy اوبونتو 18

تنظیم سرور ذخیره سازی آبجکت با استفاده از Minio در اوبونتو 18  –  

ضبط و اشتراک گذاری ترمینال با Terminalizer اوبونتو

تنظیم مسیریابی شرطی و پاسخگو با React Router v4  –  

ایجاد یک URL کوتاه کننده با Django و GraphQL

یک برنامه ردیابی سلامت را با React ،GraphQL و Okta –  

ساخت برنامه چت زمان حقیقی React و GraphQL

به روزرسانی فیلترهای مرتب سازی Angular (زاویه ای) –  

با استفاده از React ، Superagent و API اینستاگرام

نحوه ساختن یک برنامه جهانی با Nuxt.js و Django –  

دکمه دانلود با ریزتعاملات با CSS ، anime.js و segment.js

نحوه اضافه کردن عکسهای پیشرفته در Node و Express  –  

با Vue ،GraphQL و Apollo Client یک وبلاگ ساخت

یک برنامه SSR با روتر Preact ، Unistore و Preact بسازید  –  

ساخت برنامه های وب پیشرونده با Angular

اشکال زدایی JavaScript در تولید با نقشه های منبع  –  

می توان با Koa برنامه سلام جهانی” ساخت

ساختن یک برنامه با Node ، React ، Okta  –   

مدیریت حالت فرم در React با Redux Form

نحوه تنظیم Laravel ، Nginx و MySQL  –  

ارتقاء از AngularJS به Angular با ngUpgrade

استفاده از ویژوال استودیو از راه دور  –  

احراز هویت API با JSON Web Tokens و Passport

راه اندازی یک پروژه React با Parcel  –  

ایجاد Swiper مانند Netflix را در Vue

ساختن یک ربات تلگرام با Laravel و BotMan  –  

استفاده از map، filter، و reduce در جاوااسکریپت

چگونه می توان موتور جستجوی زمان واقعی را با Vue  –  

ساختن سیستم مستندات (Documentation) با Vue و VuePress

استفاده از اشتراک زنده با کد ویژوال استودیو  –  

ساخت یک مقیاس اندازه گیری قدرت رمز عبور را در React

شروع عملی GraphQL با Node.js و Express  –  

ساخت یک برنامه آب و هوا در Django

نحوه نصب Discourse روی Ubuntu 18  –  

تأیید رمز عبور با استفاده از درخواست فرم Laravel

نحوه نصب MySQL در CentOS 8  –  

استفاده از پسوند PDO PHP برای انجام تراکنش MySQL

نصب و پیکربندی SNMP Daemon و Client در Ubuntu 18  –  

نصب Linux، Nginx، MariaDB،PHP در Debian 10

 

 

کلمات کلیدی خرید سرور

خرید vps – 

خرید سرور مجازی – 

خرید سرور – 

سرور هلند – 

فروش vps – 

سرور مجازی آمریکا – 

خریدvps – 

سرور مجازی هلند – 

فروش سرور مجازی – 

سرور آمریکا – 

vps – 

سرور مجازی انگلیس – 

سرور مجازی آلمان – 

سرور مجازی کانادا – 

خرید vps آمریکا – 

خرید وی پی اس – 

سرور – 

خرید سرور مجازی هلند – 

vps خرید – 

سرور مجازی فرانسه – 

سرور مجازی هلند – 

خرید vps آمریکا – 

خرید سرور مجازی ارزان هلند – 

vps – 

خرید vps هلند – 

خرید سرور مجازی آمریکا – 

خرید vps فرانسه – 

تست vps – 

سرور مجازی تست – 

سرور مجازی ویندوز – 

ارزانترین vps – 

خرید وی پی اس – 

vps ارزان – 

 

 

برچسب‌ها:,


که شما برای اولین بار یک 

سرور مجازی Debian 10 جدید ایجاد می کنید ، چند مرحله پیکربندی وجود دارد که باید آنها را به عنوان بخشی از ستاپ اولیه انجام دهید. این کار باعث افزایش امنیت و قابلیت استفاده 

سرور مجازی شما می شود و پایه و اساس محکمی را برای اقدامات بعدی به شما می دهد.
در این آموزش یاد خواهیم گرفت که چگونه به عنوان کاربر اصلی وارد 

سرور مجازی خود شویم ، کاربر جدیدی با امتیازات ادمین ایجاد کنیم و یک فایروال پایه تنظیم کنیم.
مرحله 1 – ورود به عنوان Root
برای ورود به 

سرور مجازی خود ، باید آدرس IP عمومی 

سرور مجازی خود را بدانید. در صورت نصب کلید SSH برای تأیید اعتبار ، یعنی کلید خصوصی برای حساب کاربر root، به گذرواژه نیز احتیاج دارید. اگر قبلاً به 

سرور مجازی خود وارد نشده اید ، ممکن است بخواهید راهنمای ما در مورد نحوه اتصال به دراپلت خود را با SSH دنبال کنید ، که این لینک روند را با جزئیات پوشش می دهد.
اگر قبلاً به 

سرور مجازی خود وصل نشده اید ، پیش بروید و با استفاده از دستور زیر به عنوان کاربر اصلی وارد سیستم شوید (بخش هایلایت شده فرمان را با آدرس IP عمومی 

سرور مجازی خود جایگزین کنید):
$ ssh root@your_server_ip

در صورت وجود هشدار درباره تایید صحت میزبان آن را بپذیرید. اگر از تأیید اعتبار گذرواژه استفاده می کنید ، رمز ورود ریشه خود را وارد کنید. اگر از یک کلید SSH استفاده می کنید که عبارت عبور آن محافظت شده است ، ممکن است اولین باری که از هر کلید استفاده می کنید از شما خواسته شود کلمه عبور را وارد کنید. اگر اولین بار است که با گذرواژه وارد 

سرور مجازی می شوید ، ممکن است از شما خواسته شود رمزعبور root را تغییر دهید.
درباره ریشه
کاربر ریشه کاربر ادمین در محیط لینوکس است که امتیازات بسیار گسترده ای دارد. به دلیل امتیازات زیاد حساب ریشه ، استفاده منظم از آن توصیه نمیشود. این امر به این دلیل است که بخشی از قدرت ذاتی حساب ریشه ، توانایی ایجاد تغییرات بسیار مخرب ، حتی به طور تصادفی است.
قدم بعدی راه اندازی یک حساب کاربری جایگزین با حوزه تاثیرات کمتر برای کارهای روزانه است. بعداً ، توضیح خواهیم داد که چگونه می توانید در مواقعی که به آنها احتیاج دارید ، امتیازات بیشتری را دریافت کنید.
مرحله 2 – ایجاد یک کاربر جدید
پس از ورود به عنوان root ، آماده هستیم تا حساب کاربری جدیدی را اضافه کنیم که از این پس برای ورود به سیستم استفاده خواهیم کرد .
این مثال یک کاربر جدید به نام sammy ایجاد می کند ، اما شما باید آن را با نام کاربری که دوست دارید جایگزین کنید:
# adduser sammy

با شروع رمز ورود به حساب ، چند سؤال از شما پرسیده خواهد شد.
یک رمز عبور قوی وارد کنید و به صورت اختیاری ، هر یک از اطلاعات اضافی را که می خواهید پر کنید. این مورد نیاز نیست و می توانید ENTER را در هر زمینه ای که مایل به عبور هستید ، بزنید.
در مرحله بعدی ، این کاربر جدید را با امتیازات ادمین تنظیم خواهیم کرد.
مرحله 3 – اعطای امتیازات ادمین
اکنون ، ما یک حساب کاربری جدید با امتیازات معمول حساب ایجاد کرده ایم. با این حال ، ممکن است گاهی اوقات نیاز به انجام کارهای اجرایی با آن داشته باشیم.
برای جلوگیری از خروج از حساب کاربری عادی و ورود به سیستم به عنوان حساب اصلی ، می توانیم برای حساب عادی خود چیزی به اسم superuser ایجاد کنیم یا امتیازات اصلی را به آن بدهیم. این کار به کاربر عادی ما امکان می دهد با قرار دادن کلمه sudo قبل از دستور ، دستوراتی را با امتیازات ادمین اجرا کند.
برای افزودن این امتیازات به کاربر جدید خود ، باید کاربر جدید را به گروه sudo اضافه کنیم. به طور پیش فرض ، در Debian 10 ، کاربرانی که به گروه sudo تعلق دارند مجاز به استفاده از دستور sudo هستند.
به عنوان root ، این دستور را اجرا کنید تا کاربر جدید خود را به گروه sudo اضافه کنید (کلمه هایلایت شده را با کاربر جدید خود جایگزین کنید):
# usermod -aG sudo sammy

اکنون ، هنگامی که به عنوان کاربر معمولی خود وارد سیستم شدید ، می توانید قبل از دستورات sudo را تایپ کنید تا دستور را با امتیازات superuser اجرا کنید.
مرحله 4 – تنظیم فایروال پایه

سرور مجازی های دبیان می توانند از فایروال ها استفاده کنند تا اطمینان حاصل شود که فقط اتصالات خاصی به سرویس های خاص مجاز هستند. در این راهنما ، فایروال UFW را برای کمک به تنظیم رویکرد فایروال و مدیریت استثناعات، نصب و استفاده خواهیم کرد.
می توانیم از مدیر بسته apt برای نصب UFW استفاده کنیم. فهرست محلی را به روز کنید تا آخرین اطلاعات در مورد بسته های موجود را بازیابی کنید و سپس با تایپ کردن دستور زیر نرم افزار فایروال UFW را نصب کنید:
# apt update

# apt install ufw

توجه: اگر 

سرور مجازی های شما روی 

vpsgol در حال اجرا هستند ، می توانید به طور اختیاری به جای فایروال UFW از فایروال های 

vpsgol Cloud استفاده کنید. توصیه می کنیم فقط از یک فایروال به طور هم زمان استفاده کنید تا از قوانین متناقض برای اشکال زدایی جلوگیری شود.

پروفایل های فایروال به UFW اجازه می دهد مجموعه ای از قوانین فایروال را برای برنامه های نصب شده مدیریت کند. پروفایل برخی از نرم افزارهای رایج بصورت پیش فرض با UFW همراه شده و بسته ها می توانند پروفایل های اضافی را با UFW در طی مراحل نصب ثبت کنند. OpenSSH ، سرویسی که به ما امکان اتصال کنونی به 

سرور مجازی خود را می دهد ، دارای پروفایل فایروال است که می توانیم از آن استفاده کنیم.
با تایپ کردن دستور زیر تمام پروفایل های موجود را لیست می کنید:
# ufw app list

Output
Available applications:
. . .
OpenSSH
. . .

باید اطمینان حاصل کنیم که فایروال امکان اتصالات SSH را می دهد تا بتوانیم دفعه دیگر وارد سیستم شویم. می توانیم با تایپ این دستور اجازه این اتصالات را فراهم کنیم:
# ufw allow OpenSSH

پس از آن ، می توانیم با تایپ کردن دستور زیر فایروال را فعال کنیم:
# ufw enable

y را تایپ کرده و ENTER را برای ادامه فشار دهید. با تایپ کردن دستور زیر می توانید ببینید که اتصالات SSH هنوز مجاز هستند:
# ufw status

Output
Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

از آنجا که فایروال در حال حاضر همه اتصالات به جز SSH را مسدود می کند ، در صورت نصب و پیکربندی سرویس های اضافی ، باید تنظیمات فایروال را برای ایجاد ترافیک قابل قبول را تنظیم کنید. شما می توانید برخی از عملیات معمول UFW را در راهنمای ضروریات UFW بیاموزید.
مرحله 5 – فعال کردن دسترسی خارجی برای کاربر معمولی شما
اکنون که ما یک کاربر معمولی برای استفاده روزانه داریم ، باید اطمینان حاصل کنیم که می توانیم مستقیماً SSH را وارد حساب کاربری خود کنیم.
توجه: تا زمانی که تأیید نکنید که می توانید با کاربر جدید خود وارد سیستم شوید و از sudo استفاده کنید ، توصیه می کنیم به عنوان root وارد شوید. به این ترتیب ، اگر مشکل دارید می توانید به عنوان ریشه عیب یابی کرده و هرگونه تغییر لازم را انجام دهید. اگر از Droplet 

vpsgol استفاده می کنید و در ارتباط با اتصال SSH ریشه خود مشکل دارید ، می توانید با استفاده از کنسول 

vpsgol وارد Droplet شوید.

روند پیکربندی دسترسی SSH برای کاربر جدید شما به این بستگی دارد که آیا حساب اصلی 

سرور مجازی شما از رمز عبور یا کلیدهای SSH برای تأیید اعتبار استفاده می کند.
اگر حساب Root از احراز هویت رمز عبور استفاده می کند
اگر با استفاده از گذرواژه وارد حساب اصلی خود شده اید ، تأیید رمز عبور برای SSH فعال می شود. با باز کردن بخش ترمینال جدید و استفاده از SSH با نام کاربری جدید خود می توانید به حساب کاربری جدید، SSH کنید:
$ ssh sammy@your_server_ip

بعد از وارد کردن رمزعبور معمولی کاربر ، وارد سیستم می شوید. به یاد داشته باشید اگر نیاز به اجرای یک فرمان با امتیازات اداری دارید ، قبل از این کار sudo را تایپ کنید:
$ sudo command_to_run

برای اولین بار در هر بخش (و به صورت دوره ای بعد از آن) رمزعبور کاربر معمولی از شما خواسته می شود.
برای تقویت امنیت 

سرور مجازی خود ، به شدت توصیه می کنیم به جای استفاده از احراز هویت رمز عبور ، کلیدهای SSH را تنظیم کنید. برای یادگیری نحوه پیکربندی احراز هویت مبتنی بر کلید ، راهنمای ما در مورد تنظیم کلیدهای SSH در Debian 10 را دنبال کنید.
اگر حساب Root از احراز هویت کلید SSH استفاده می کند
اگر با استفاده از کلیدهای SSH به حساب اصلی خود وارد شده اید ، تأیید رمز عبور برای SSH غیرفعال است. برای ورود موفقیت آمیز به سیستم ، باید یک نسخه از کلید عمومی محلی خود را در فایل ~/.ssh/authorized_keys کاربر جدید اضافه کنید.
از آنجا که کلید عمومی شما قبلاً در فایل ~/.ssh/authorized_keys حساب ریشه در 

سرور مجازی است ، می توانیم در بخش موجود با دستور cp آن فایل و ساختار دیرکتوری را در حساب کاربری جدید خود کپی کنیم. پس از آن ، می توانیم مالکیت فایل ها را با استفاده از دستور chown تنظیم کنیم.
اطمینان حاصل کنید که قسمت هایلایت شده فرمان زیر را تغییر دهید تا با نام کاربر معمولی شما مطابقت داشته باشد:
# cp -r ~/.ssh /home/sammy

#
chown -R sammy:sammy /home/sammy/.ssh

دستور cp -r کل دایرکتوری را در دیرکتوری هوم کاربر جدید کپی می کند ، و دستور chown -R صاحب آن دیرکتوری (و هر چیزی را که در داخل آن است) را به username:groupname مشخص شده تغییر می دهد (دبیان به طور پیش فرض گروهی را با همین نام کاربری شما ایجاد می کند).
اکنون ، یک بخش ترمینال جدید را باز کرده و از طریق SSH با نام کاربری جدید خود وارد شوید:
$ ssh sammy@your_server_ip

بدون استفاده از رمز ورود باید به حساب کاربری جدید وارد شوید. به یاد داشته باشید ، اگر نیاز به اجرای یک فرمان با امتیازات ادمین دارید ، sudo را قبل از آن تایپ کنید:
$ sudo command_to_run

برای اولین بار در هر بخش (و به صورت دوره ای بعد از آن) رمزعبور کاربر معمولی از شما خواسته می شود.
از اینجا به کجا برویم؟
در این مرحله ، شما یک پایه محکم برای 

سرور مجازی خود دارید. اکنون می توانید هرکدام از نرم افزارهای مورد نیاز خود را بر روی 

سرور مجازی خود نصب کنید.

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

استفاده از nsh برای دستورات از راه دور اوبونتو 18 –  

میزبانی وب سایت با Caddy اوبونتو 18

تنظیم سرور ذخیره سازی آبجکت با استفاده از Minio در اوبونتو 18  –  

ضبط و اشتراک گذاری ترمینال با Terminalizer اوبونتو

تنظیم مسیریابی شرطی و پاسخگو با React Router v4  –  

ایجاد یک URL کوتاه کننده با Django و GraphQL

یک برنامه ردیابی سلامت را با React ،GraphQL و Okta –  

ساخت برنامه چت زمان حقیقی React و GraphQL

به روزرسانی فیلترهای مرتب سازی Angular (زاویه ای) –  

با استفاده از React ، Superagent و API اینستاگرام

نحوه ساختن یک برنامه جهانی با Nuxt.js و Django –  

دکمه دانلود با ریزتعاملات با CSS ، anime.js و segment.js

نحوه اضافه کردن عکسهای پیشرفته در Node و Express  –  

با Vue ،GraphQL و Apollo Client یک وبلاگ ساخت

یک برنامه SSR با روتر Preact ، Unistore و Preact بسازید  –  

ساخت برنامه های وب پیشرونده با Angular

اشکال زدایی JavaScript در تولید با نقشه های منبع  –  

می توان با Koa برنامه سلام جهانی” ساخت

ساختن یک برنامه با Node ، React ، Okta  –   

مدیریت حالت فرم در React با Redux Form

نحوه تنظیم Laravel ، Nginx و MySQL  –  

ارتقاء از AngularJS به Angular با ngUpgrade

استفاده از ویژوال استودیو از راه دور  –  

احراز هویت API با JSON Web Tokens و Passport

راه اندازی یک پروژه React با Parcel  –  

ایجاد Swiper مانند Netflix را در Vue

ساختن یک ربات تلگرام با Laravel و BotMan  –  

استفاده از map، filter، و reduce در جاوااسکریپت

چگونه می توان موتور جستجوی زمان واقعی را با Vue  –  

ساختن سیستم مستندات (Documentation) با Vue و VuePress

استفاده از اشتراک زنده با کد ویژوال استودیو  –  

ساخت یک مقیاس اندازه گیری قدرت رمز عبور را در React

شروع عملی GraphQL با Node.js و Express  –  

ساخت یک برنامه آب و هوا در Django

نحوه نصب Discourse روی Ubuntu 18  –  

تأیید رمز عبور با استفاده از درخواست فرم Laravel

نحوه نصب MySQL در CentOS 8  –  

استفاده از پسوند PDO PHP برای انجام تراکنش MySQL

نصب و پیکربندی SNMP Daemon و Client در Ubuntu 18  –  

نصب Linux، Nginx، MariaDB،PHP در Debian 10

 

 

کلمات کلیدی خرید سرور

خرید vps – 

خرید سرور مجازی – 

خرید سرور – 

سرور هلند – 

فروش vps – 

سرور مجازی آمریکا – 

خریدvps – 

سرور مجازی هلند – 

فروش سرور مجازی – 

سرور آمریکا – 

vps – 

سرور مجازی انگلیس – 

سرور مجازی آلمان – 

سرور مجازی کانادا – 

خرید vps آمریکا – 

خرید وی پی اس – 

سرور – 

خرید سرور مجازی هلند – 

vps خرید – 

سرور مجازی فرانسه – 

سرور مجازی هلند – 

خرید vps آمریکا – 

خرید سرور مجازی ارزان هلند – 

vps – 

خرید vps هلند – 

خرید سرور مجازی آمریکا – 

خرید vps فرانسه – 

تست vps – 

سرور مجازی تست – 

سرور مجازی ویندوز – 

ارزانترین vps – 

خرید وی پی اس – 

vps ارزان – 

 

 

برچسب‌ها:


آموزش می آموزید که چگونه عناصر را با JSX توصیف کنید. JSX انتزاعی است که به شما امکان می دهد دستور مشابه HTML را در کد جاوا اسکریپت خود بنویسید و شما را قادر میسازد تا مولفه های React را که شبیه علائم استاندارد HTML هستند ، بسازید. JSX زبان تمپلیت مولفه های React است و بنابراین پایه و اساس هر نشانه گذاری ای است که React به برنامه شما ارائه می دهد.
از آنجایی که JSX شما را قادر می سازد جاوا اسکریپت را نیز در نشانه گذاری خود بنویسید ، می توانید از توابع و روش های JavaScript ، از جمله نگاشت آرایه و ارزیابی اتصال کوتاه برای شرطی ها استفاده کنید.
به عنوان بخشی از آموزش ، رویدادهای کلیک را مستقیماً در نشانه گذاری روی دکمه ها ضبط می کنید و مواردی را مشاهده می کنید که ترکیب دقیقاً مطابق با HTML استاندارد نباشد ، مانند کلاس های CSS. در پایان این آموزش ، یک برنامه کاری دارید که از انواع مختلفی از ویژگیهای JSX استفاده می کند تا لیستی از مولفه هایی را که دارای یک شنونده کلیک داخلی هستند ، نمایش دهد. این یک الگوی رایج در برنامه های React است که شما اغلب در طول یادگیری چارچوب استفاده خواهید کرد. همچنین می توانید عناصر استاندارد HTML را با جاوا اسکریپت مخلوط کنید تا ببینید چگونه React به شما امکان ایجاد کد های کوچک و قابل استفاده مجدد را می دهد.
پیش نیازها
• به محیط توسعه در حال اجرای Node.js نیاز دارید. این آموزش بر روی Node.js نسخه 10.19.0 و npm نسخه 6.13.4 تست شده است. برای نصب این برنامه در macOS یا Ubuntu 18.04 ، مراحل نحوه نصب Node.js و ایجاد محیط توسعه محلی را در macOS یا نصب با استفاده از بخش PPA در آموزش نحوه نصب Node.js در اوبونتو 18.04 را دنبال کنید.
• باید با  Create React App قادر به ایجاد برنامه باشید. می توانید دستورالعمل نصب را در نحوه ایجاد یک پروژه React با  Create React App پیدا کنید.
• همچنین به دانش پایه از JavaScript نیاز خواهید داشت که می توانید در نحوه کدنویسی در JavaScript بیاموزید و به دانش پایه از HTML و CSS نیز احتیاج دارید. یک منبع مناسب برای HTML و CSS ، شبکه توسعه دهنده Mozilla میباشد.
مرحله 1 – اضافه کردن نشانه گذاری به یک مولفه React
همانطور که قبلاً نیز اشاره شد ، React یک زبان نشانه گذاری خاص به نام JSX دارد. پ ترکیبی از نحو HTML و JavaScript است که چیزی شبیه به این میباشد:
<div>
{inventory.filter(item => item.available).map(item => (
<Card>
<div className=”title”}>{item.name}</div>
<div className=”price”>{item.price}</div>
</Card>
))
}
</div>

برخی از قابلیت های JavaScript مانند .filter و .map و همچنین برخی HTML های استاندارد مانند <div> را خواهید شناخت. اما بخش های دیگری مانند <card> و className نیز وجود دارند که شبیهHTML و JavaScript به نظر می رسد.
این زبان JSX است ، یعنی زبان نشانه گذاری ویژه ای که به مولفه های React حس HTML را با قدرت JavaScript می دهد.
در این مرحله ، می آموزید که ترکیب HTML مانند پایه را به مولفه موجود React اضافه کنید. برای شروع ، مولفه های HTML استاندارد را به یک تابع JavaScript اضافه خواهید کرد ، سپس کد کامپایل شده را در یک مرورگر مشاهده می کنید. همچنین عناصر را گروه بندی می کنید تا React بتواند آنها را با حداقل نشانه گذاری کامپایل کند ، و HTML تمیزی را ارائه کند.
برای شروع ، یک پروژه جدید درست کنید. در خط فرمان خود ، اسکریپت زیر را اجرا کنید تا یک پروژه تازه با استفاده از create-react-app نصب کنید:
⦁ $ npx create-react-app jsx-tutorial

پس از اتمام پروژه ، دایرکتوری را تغییر دهید:
⦁ $ cd jsx-tutorial

در یک ترمینال یا پنجره جدید ، پروژه را با استفاده از اسکریپت شروع Create React App شروع کنید. مرورگر بعد از تغییرات مجدداً ریفرش میشود ، بنابراین در تمام مدت کار شما این اسکریپت را رها میکند:
⦁ $ npm start

یک 

سرور مجازی محلی در حال اجرا دریافت خواهید کرد. اگر پروژه در پنجره مرورگر باز نشد ، می توانید آن را در http: // localhost: 3000 / پیدا کنید. اگر این کار را از یک 

سرور مجازی از راه دور انجام می دهید ، آدرس http: // your_IP_address: 3000 خواهد بود.
مرورگر شما با یک برنامه React به عنوان بخشی از Create React App لود می شود.

شما در حال ساخت مجموعه کاملاً جدیدی از مولفه های سفارشی هستید ، بنابراین باید با پاک کردن برخی از کد های متن استاندارد شروع کنید تا بتوانید یک پروژه خالی داشته باشید. برای شروع App.js ار در ویرایشگر متن باز کنید. این قسمت اصلی است که به صفحه تزریق می شود. همه مؤلفه ها از اینجا شروع می شوند.
در یک ترمینال جدید ، وارد پوشه پروژه شوید و src / App.js را با دستور زیر باز کنید:
⦁ $ nano src/App.js

فایلی مانند این را مشاهده خواهید کرد:
jsx-tutorial/src/App.js
import React from ‘react’;
import logo from ‘./logo.svg’;
import ‘./App.css’;

function App() {
return (
<div className=”App”>
<header className=”App-header”>
<img src={logo} className=”App-logo” alt=”logo” />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className=”App-link”
href=”https://reactjs.org”
target=”_blank”
rel=”noopener noreferrer”
>
Learn React
</a>
</header>
</div>
);
}

export default App;

اکنون پس از عبارت بازگشت در تابع ، خط import logo from ‘./logo.svg و هر چیز دیگر را حذف کنید. آن را به null تغییر دهید. کد نهایی به شرح زیر خواهد بود:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
return null;
}

export default App;

ویرایشگر متن را ذخیره کرده و از آن خارج شوید.
در آخر ، لوگو را حذف کنید. در پنجره ترمینال دستور زیر را تایپ کنید:
⦁ $ rm src/logo.svg

شما در برنامه خود از این فایل SVG استفاده نخواهید کرد و باید هنگام کار ، فایل های بلااستفاده را حذف کنید. بهتر است در طولانی مدت کد خود را سازماندهی کنید.
اکنون که این قسمت از پروژه شما حذف شده است ، می توانید به جستجو در جنبه های دیگر JSX بپردازید. این زبان نشانه گذاری توسط React کامپایل شده و در نهایت تبدیل به HTML می شود که در یک صفحه وب مشاهده می کنید. بدون وارد شدن عمیق داخلی React ، JSX را می گیرد و الگویی از صفحه شما را ایجاد می کند ، سپس عناصر لازم را ایجاد کرده و آنها را به صفحه اضافه می کند.
این بدان معنی است که می توانید چیزی را بنویسید که شبیه HTML است و انتظار داشته باشید که HTML ارائه شده مشابه باشد. با این حال ، چند مرحله وجود دارد.
ابتدا ، اگر به سربرگ یا پنجره 

سرور مجازی خود نگاه کنید ، این را مشاهده خواهید کرد
Output

./src/App.js
Line 1:8: ‘React’ is defined but never used no-unused-vars

این linter به شما می گوید که از کد React وارد شده استفاده نمی کنید. هنگامی که خط import React from ‘react’ را به کد خود اضافه می کنید ، کد JavaScript را وارد می کنید که JSX را به React code تبدیل می کند. اگر JSX وجود نداشته باشد ، دیگر نیازی به ورودی نیست.
بیایید با اضافه کردن مقدار کمی JSX این مسئله را تغییر دهیم. با جایگزین کردن null با یک مثال hello, world شروع کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
return <h1>Hello, World</h1>;
}

export default App;

فایل را ذخیره کنید. اگر به ترمینال با 

سرور مجازی در حال اجرا نگاه کنید ، پیام اخطار از بین خواهد رفت. اگر از مرورگر خود بازدید کنید ، پیام را به عنوان مولفه h1 مشاهده خواهید کرد.

سپس ، در زیر برچسب <h1> ، یک برچسب پاراگراف اضافه کنید که شامل رشته I am writing JSX است. کد به صورت زیر خواهد بود:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
return(
<h1>Hello, World</h1>
<p>I am writing JSX</p>
)
}

export default App;

از آنجایی که JSX چندین خط دارد ، نیاز است عبارت در پرانتز قرار داده شود.
فایل را ذخیره کنید. هنگامی که این کار را کردید، خطایی در اجرای 

سرور مجازی خود در ترمینال مشاهده می کنید:
Output
./src/App.js
Line 7:5: Parsing error: Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>…</>?

5 | return(
6 | <h1>Hello, World</h1>
> 7 | <p>I am writing JSX</p>
| ^
8 | )
9 | }
10 |

وقتی JSX را از یک تابع یا عبارت باز می گردانید ، باید یک مولفه واحد را برگردانید. این مولفه ممکن است بخش های لانه گزیده باشد ، اما اگر یک مولفه سطح بالا باشد. در این حالت ، دو مولفه را بر می گردانید.
fix یک تغییر کد جزیی است. با یک برچسب خالی کد را محصور کنید. برچسب خالی یک مولفه HTML است که هیچ کلمه ای ندارد. به این شکل: <> </>
به./src/App.js در ویرایشگر خود بروید و برچسب خالی را اضافه کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
return(
<>
<h1>Hello, World</h1>
<p>I am writing JSX</p>
</>
)
}

export default App;

برچسب خالی یک مولفه واحد ایجاد می کند ، اما وقتی کد کامپایل شد ، به نشانه گذاری نهایی اضافه نمی شود. این کار باعث می شود کدهای شما در عین حال که یک مولفه واحد به React می دهند ، صحیح باقی بمانند.
توجه: شما می توانید به جای برچسب های خالی ، کد را با یک div محصور کنید ، مادامی که کد یک مولفه را برگرداند. در این مثال ، یک برچسب خالی این مزیت را دارد که نشانه گذاری اضافی به خروجی تجزیه نشده اضافه نمی کند.

کد را ذخیره کرده و از فایل خارج شوید. مرورگر شما صفحه به روز شده را با مولفه پاراگراف نشان می دهد. علاوه بر این ، هنگام تبدیل کد ، برچسب های خالی از بین می روند:

اکنون JSX اساسی را به مؤلفه خود اضافه کرده اید و یاد گرفته اید که چگونه باید همه JSX در یک مؤلفه مستقر شود. در مرحله بعد ، یک ظاهر طراحی را به مؤلفه خود اضافه می کنید.
مرحله 2 – اضافه کردن طراحی به یک مولفه به همراه ویژگی ها
در این مرحله ، به عناصر موجود در مؤلفه خود می پردازید تا یاد بگیرید که چگونه ویژگی های HTML با JSX کار می کنند. در React گزینه های بسیاری برای طراحی وجود دارد. برخی از آنها شامل نوشتن CSS در جاوا اسکریپت است، بو رخی دیگر از پیش پردازنده استفاده می کنند. در این آموزش با کلاس های CSS و CSS وارد شده کار خواهید کرد.
اکنون که کد خود را دارید ، وقت آن است که یک ظاهر طراحی شده اضافه کنید. App.css را در ویرایشگر متن خود باز کنید:
⦁ $ nano src/App.css

از آنجا که شما با JSX جدید شروع می کنید ، CSS فعلی به عناصری اشاره می کند که دیگر وجود ندارند. از آنجا که به CSS احتیاج ندارید ، می توانید آن را حذف کنید.
پس از حذف کد ، فایلی خالی خواهید داشت.
در مرحله بعد ، می توانید طراحی به مرکز متن اضافه کنید. در src / App.css کد زیر را اضافه کنید:
jsx-tutorial/src/App.css
.container {
display: flex;
flex-direction: column;
align-items: center;
}

در این بلوک کد ، شما  CSS class selector را با نام .container ایجاد کرده اید و از آن برای در مرکز قرار دادن محتوا با استفاده از display: flex استفاده کرده اید.
فایل را ذخیره کرده و خارج شوید. مرورگر بروزرسانی می شود ، اما هیچ چیز تغییر نخواهد کرد. قبل از مشاهده تغییر ، باید کلاس CSS را به مؤلفه React خود اضافه کنید. کد JavaScript مولفه را انتخاب کنید:
⦁ $ nano src/App.js

کد CSS قبلاً با خط import ‘./App.css’ وارد شده است. این بدان معنی است که webpack برای ساختن یک صفحه طراحی نهایی، کد را وارد می کنند ، اما برای اعمال CSS روی عناصر خود ، باید کلاس ها را اضافه کنید.
ابتدا ، در ویرایشگر متن ، برچسب های خالی ، <> را به <div> تغییر دهید.
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
return(
<div>
<h1>Hello, World</h1>
<p>I am writing JSX</p>
</div>
)
}

export default App;

در این کد تگ های خالی – <> – را با برچسب های div جایگزین کرده اید. تگ های خالی برای گروه بندی کد شما بدون اضافه کردن برچسب های اضافی مفید هستند ، اما در اینجا شما باید از div استفاده کنید زیرا برچسب های خالی هیچ ویژگی HTML را نمی پذیرند.
در مرحله بعد باید نام کلاس را اضافه کنید. اینجاست که JSX شروع به واگرایی از HTML می کند. اگر می خواهید یک کلاس را به یک مولفه HTML معمولی اضافه کنید ، این کار را اینگونه انجام می دهید:
<div class=”container”>
Copy

اما از آنجا که JSX جاوا اسکریپت است ، محدودیت هایی دارد. یکی از محدودیت ها این است که جاوا اسکریپت کلمات کلیدی خود را رزرو کرده است. این بدان معناست که شما نمی توانید از کلمات خاصی در هر کد JavaScript استفاده کنید. به عنوان مثال ، شما نمی توانید یک متغیر به نام null ایجاد کنید زیرا این کلمه در حال حاضر محفوظ است.
یکی از کلمات رزرو شده class است. React با کمی تغییر دادن این کلمه کار خود را انجام میدهد. به جای اضافه کردن مشخصه class ، className را اضافه می کنید. به عنوان یک قاعده ، اگر یک مشخصه (attribute) همانطور که انتظار می رود کار نمی کند ، سعی کنید نسخه camel case را اضافه کنید. مشخصه دیگری که کمی متفاوت است مشخصه for میباشد که برای برچسب ها استفاده میکنید. چند مورد دیگر نیز وجود دارد ، اما خوشبختانه این لیست نسبتاً کوتاه است.
توجه: در React ، مشخصه ها اغلب prps خوانده می شوند. Props داده هایی هستند که می توانید به سایر مؤلفه های سفارشی منتقل کنید. آنها مشابه مشخصه ها هستند به جز اینکه با هیچ یک از مشخصات HTML مطابقت ندارند. در این آموزش ، آنها را مشخصه می نامیم زیرا عمدتا مانند مشخصه های استاندارد HTML استفاده می شوند. این امر آنها را از propهایی که مانند مشخصه های HTML رفتار نمی کنند ، متمایز می کند ، که بعداً در این مجموعه پوشش داده می شود.

اکنون که می دانید چگونه از مشخصه calss در React استفاده می شود ، می توانید کد خود را به روز کنید تا طراحی ها را درج کنید. در ویرایشگر متن خود ، className=”container” را به برچسب div اضافه کنید
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
return(
<div className=”container”>
<h1>Hello, World</h1>
<p>I am writing JSX</p>
</div>
)
}

export default App;

فایل را ذخیره کنید. با انجام این کار ، صفحه مجدد لودد می شود و محتوا در مرکز قرار می گیرد

ویژگی className در React بی نظیر است. شما می توانید اکثر ویژگیهای HTML را بدون هیچ تغییری به JSX اضافه کنید. به عنوان نمونه ، به ویرایشگر متن خود برگردید و شناسه greeting را به مولفه <h1> خود اضافه کنید. مانند HTML استاندارد به نظر می رسد:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
return(
<div className=”container”>
<h1 id=”greeting”>Hello, World</h1>
<p>I am writing JSX</p>
</div>
)
}

export default App;

صفحه را ذخیره کرده و مرورگر را مجدد لود کنید. مشابه قبلی خواهد بود.
تاکنون ، JSX به عنوان نشانه گذاری استاندارد به نظر می رسید ، اما مزیت JSX این است که حتی اگر شبیهHTML به نظر می رسد ، قدرت جاوا اسکریپت را دارد. این بدان معناست که می توانید متغیرها را اختصاص دهید و آنها را در مشخصه های خود ارجاع دهید. برای ارجاع به یک مشخصه ، آن را به جای نقل قولها در پرانتزهای به شکل {} قرار دهید.
در ویرایشگر متن خود ، خطوط هایلایت شده زیر را به عنوان یک مشخصه اضافه کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
const greeting = greeting”;
return(
<div className=”container”>
<h1 id={greeting}>Hello, World</h1>
<p>I am writing JSX</p>
</div>
)
}

export default App;

در این کد ، در بالای عبارت return یک متغیر به نام greeting با مقدار greeting” ایجاد کرده اید ، سپس متغیر را در مشخصه id برچسب <h1> خود ارجاع داده اید.
فایل را ذخیره کنید و از آن خارج شوید. صفحه همان خواهد بود، اما برچسب id خواهد داشت.

تاکنون با چند مولفه به تنهایی کار کرده اید ، اما می توانید از JSX همچنین برای اضافه کردن بسیاری از عناصر HTML استفاده کرده و آنها را برای ایجاد صفحات پیچیده مستقر نمایید.
برای نشان دادن این موضوع ، می توانید با لیستی از ایموجی ها صفحه ای ایجاد کنید. این شکلک ها با یک مولفه <button> محصور می شوند. هنگامی که روی ایموجی ها کلیک می کنید ، نام کوتاه CLDR آنها را دریافت خواهید کرد.
برای شروع ، باید چند مولفه دیگر به صفحه اضافه کنید. . src / App.js را در ویرایشگر متن خود باز کنید. در طول این مرحله آن را باز نگه دارید.
⦁ $ nano src/App.js

ابتدا با افزودن خطوط هایلایت شده زیر لیستی از ایموجی ها را اضافه کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
const greeting = greeting”;
return(
<div className=”container”>
<h1 id={greeting}>Hello, World</h1>
<p>I am writing JSX</p>
<ul>
<li>
<button>
<span role=”img” aria-label=”grinning face” id=”grinning face”></span>
</button>
</li>
<li>
<button>
<span role=”img” aria-label=”party popper” id=”party popper”></span>
</button>
</li>
<li>
<button>
<span role=”img” aria-label=”woman dancing” id=”woman dancing”></span>
</button>
</li>
</ul>
</div>
)
}

export default App;

در اینجا شما برای نگه داشتن لیستی از ایموجی ها برچسب <ul> ایجاد کرده اید. هر ایموجی در یک مولفه <li> جداگانه قرار دارد و با یک مولفه <button> احاطه شده است. در مرحله بعد رویدادی را به این دکمه اضافه خواهید کرد.
همچنین ایموجی ها را با یک برچسب <span> محاصره کرده اید که دارای چند ویژگی دیگر است. هر span دارای مشخصه role میباشد که روی img تنظیم شده است. این به نرم افزار در دسترس سیگنال میفرستد که این عنصر به شکل تصویر عمل میکند. علاوه بر این ، هر <span> همچنین دارای یک aria-label و یک ویژگی id با نام ایموجی است. aria-label آنچه نمایش داده می شود را به بازدید کنندگان می گوید. در مرحله بعدی از id در حین نوشتن رویداد استفاده خواهید کرد.
وقتی کد را به این روش می نویسید ، از عناصر معنایی استفاده می کنید ، که به شما کمک می کند صفحه را در دسترس قرار دهید و دنبال کردن آن برای صفحه خوان (screen readers) راحت باشد.
فایل را ذخیره کنید و از آن خارج شوید. مرورگر شما ریفرش می شود و این تصویر را مشاهده خواهید کرد:

اکنون کمی طراحی اضافه کنید. کد CSS را در ویرایشگر متن خود باز کنید:
⦁ $ nano src/App.css

کد هایلایت شده زیر را اضافه کنید تا ضمن افزایش اندازه فونت ، پیش زمینه و حاشیه پیش فرض دکمه ها را حذف کنید:
jsx-tutorial/src/App.css
.container {
display: flex;
flex-direction: column;
align-items: center;
}

button {
font-size: 2em;
border: 0;
padding: 0;
background: none;
cursor: pointer;
}

ul {
display: flex;
padding: 0;
}

li {
margin: 0 20px;
list-style: none;
padding: 0;
}

در این کد از تنظیمات اندازه قلم ، حاشیه و پارامترهای دیگر برای تنظیم ظاهر دکمه های خود و تغییر فونت استفاده کرده اید. همچنین سبک های لیست را حذف کرده و display: flex را به مولفه <ul>اضافه می کنید تا افقی شود.
فایل CSS را ذخیره کنید و ببندید. مرورگر شما ریفرش می شود و شما این را مشاهده خواهید کرد:

اکنون با چندین مولفه JSX کار کرده اید که مانند HTML معمولی به نظر می رسند. شما کلاس ها ، شناسه ها و برچسب های Aria را اضافه کرده اید و با داده ها به عنوان رشته ها و متغیرها کار کرده اید. اما React همچنین از ویژگیهایی برای تعریف نحوه پاسخگویی عناصر شما به رویدادهای کاربر استفاده می کند. در مرحله بعدی ، با افزودن رویدادها به دکمه ، صفحه را به صورت تعاملی خواهید ساخت.
مرحله 3 – افزودن رویدادها به عناصر
در این مرحله ، با استفاده از ویژگی های خاص ، رویدادها را به عناصر اضافه می کنید و یک رویداد کلیک را روی یک مولفه دکمه دریافت می کنید. یاد می گیرید که چگونه اطلاعات را از این رویداد دریافت کنید تا عملی دیگر ارسال شود یا از سایر اطلاعات در دامنه فایل استفاده کند.
اکنون که یک صفحه اصلی با اطلاعات دارید ، زمان آن رسیده که چند رویداد را به آن اضافه کنید. event handler بسیاری وجود دارند که می توانید به عناصر HTML اضافه کنید. React به شما امکان دسترسی به همه اینها را می دهد. از آنجا که کد جاوا اسکریپت همراه با نشانه گذاری شما است ، می توانید ضمن نگه داشتن نظم کد خود ، به سرعت رویدادها را اضافه کنید.
برای شروع ، کنترل کننده رویداد onclick را اضافه کنید. به شما امکان می دهد به جای ضمیمه کردن شنونده رویداد (event listener) ، تعدادی کد جاوا اسکریپت را مستقیماً به مولفه خود اضافه کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
const greeting = greeting”;
return(
<div className=”container”>
<h1 id={greeting}>Hello, World</h1>
<p>I am writing JSX</p>
<ul>
<li>
<button
onClick={event => alert(event.target.id)}
>
<span role=”img” aria-label=”grinning face” id=”grinning face”></span>
</button>
</li>
<li>
<button
onClick={event => alert(event.target.id)}
>
<span role=”img” aria-label=”party popper” id=”party popper”></span>
</button>
</li>
<li>
<button
onClick={event => alert(event.target.id)}
>
<span role=”img” aria-label=”woman dancing” id=”woman dancing”></span>
</button>
</li>
</ul>
</div>
)
}

export default App;

از آنجا که این JSX است ، onclick را به صورت camelCased درمی آورید ، به این معنی که آن را به صورت onClick اضافه کرده اید. این مشخصه onClick از یک تابع ناشناس برای بازیابی اطلاعات در مورد آیتمی که کلیک شده است استفاده می کند.
شما یک تابع فلش ناشناس اضافه کردید که این رویداد را از روی دکمه کلیک شده دریاقن می کند و رویداد دارای هدفی خواهد بود که مولفه <span> است. اطلاعات مورد نیاز در مشخصه id است که می توانید با event.target.id به آنها دسترسی پیدا کنید. با تابع () alert می توانید هشدار را فعال کنید.
فایل را ذخیره کنید. در مرورگر خود ، روی یکی از ایموجی ها کلیک کرده و هشداری را به همراه نام دریافت خواهید کرد.

می توانید با یکبار اعلام تابع و انتقال آن به هر تابع onClick ، ​​ تکرار را کاهش دهید. از آنجایی که این تابع به چیزی غیر از ورودی و خروجی متکی نیست ، می توانید آن را خارج از تابع مؤلفه اصلی اعلام کنید. به عبارت دیگر ، تابع نیازی به دسترسی به حوزه مولفه ندارد. مزیت جدا کردن آنها این است که تابع کامپوننت شما کمی کوتاه تر است و می توانید در صورت نیاز بعدا تابع را به یک فایل جداگانه منتقل کنید.
در ویرایشگر متن خود ، تابعی به نام displayEmojiName ایجاد کنید که این رویداد را بگیرد و تابع ()alert را با شناسه فراخوانی کند. سپس تابع را به هر مشخصه onClick منتقل کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

const displayEmojiName = event => alert(event.target.id);

function App() {
const greeting = greeting”;
return(
<div className=”container”>
<h1 id={greeting}>Hello, World</h1>
<p>I am writing JSX</p>
<ul>
<li>
<button
onClick={displayEmojiName}
>
<span role=”img” aria-label=”grinning face” id=”grinning face”></span>
</button>
</li>
<li>
<button
onClick={displayEmojiName}
>
<span role=”img” aria-label=”party popper” id=”party popper”></span>
</button>
</li>
<li>
<button
onClick={displayEmojiName}
>
<span role=”img” aria-label=”woman dancing” id=”woman dancing”></span>
</button>
</li>
</ul>
</div>
)
}

export default App;

فایل را ذخیره کنید. در مرورگر خود ، روی emoji کلیک کنید و همان هشدار را مشاهده خواهید کرد.
در این مرحله ، شما به هر مولفه رویدادهایی اضافه کردید. همچنین دیدید که چگونه JSX از اسامی کمی متفاوت برای رویدادهای مولفه استفاده می کند ، و با گرفتن تابع و استفاده مجدد از آن بر روی چندین مولفه ، شروع به نوشتن کد قابل استفاده مجدد کردید. در مرحله بعد ، یک تابع قابل استفاده مجدد خواهید نوشت که به جای نوشتن هر مولفه به صورت دستی، عناصر JSX را برمی گرداند. این امر بیشتر باعث کاهش تکرار خواهد شد.
مرحله 4 – نگاشت روی داده ها برای ایجاد عناصر
در این مرحله ، استفاده از JSX فراتر از نشانه گذاری ساده خواهد رفت. یاد می گیرید که آن را با جاوا اسکریپت ترکیب کنید تا نشانه گذاری پویا ایجاد کنید که کد را کوچک می کند و خوانایی را بهبود می بخشد. می توانید کد خود را در آرایه ای که برای ایجاد عناصر HTML حلقه می کنید ، آنالیز کنید.
JSX شما را به یک ترکیب مشابه HTML محدود نمی کند. همچنین امکان استفاده مستقیم از JavaScript را در نشانه گذاری به شما می دهد. این کار را تا حدی با وارد کردن توابع به مشخصه ها امتحان کرده اید. همچنین از متغیرها برای استفاده مجدد از داده ها استفاده کرده اید. اکنون زمان آن رسیده که JSX را مستقیماً از داده ها با استفاده از کد استاندارد JavaScript بسازید.
در ویرایشگر متن خود ، باید آرایه ای از داده های ایموجی را در فایل src / App.js ایجاد کنید. اگر بسته است ، فایل را مجدداً باز کنید:
⦁ $ nano src/App.js

آرایه ای را اضافه کنید که شامل آبجکت های دارای ایموجی و نام ایموجی باشد. توجه داشته باشید که ایموجی ها باید با علامت نقل قول احاطه شوند. این آرایه را فراتر از تابع app ایجاد کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

const displayEmojiName = event => alert(event.target.id);
const emojis = [
{
emoji: ”,
name: grinning face”
},
{
emoji: ”,
name: party popper”
},
{
emoji: ”,
name: woman dancing”
}
];

function App() {

}

export default App;

اکنون که داده دارید می توانید از طریق آن حلقه بزنید. برای استفاده از JavaScript در داخل JSX ، باید آن را در پرانتز {} قرار دهید. مشابه زمانی است که توابع را به مشخصه ها اضافه کردید.
برای ایجاد مؤلفه های React ، باید داده ها را به عناصر JSX تبدیل کنید. برای انجام این کار ، روی داده ها نگاشت می کنید و یک مولفه JSX را برمی گردانید. چند نکته وجود دارد که هنگام نوشتن کد باید آنها را به خاطر بسپارید.
ابتدا ، یک گروه از آیتم ها باید توسط یک کانتینر <div> احاطه شوند. سپس ، هر آیتم به یک مشخصه خاص به نام key نیاز دارد. Key نیاز به یک سری داده منحصر به فرد دارد که React می تواند از آنها استفاده کند تا عناصر را ردیابی کند و بداند چه موقع به روز رسانی این مؤلفه را انجام دهد. این کلید از HTML کامپایل شده خارج می شود ، زیرا فقط برای اهداف داخلی است. هر زمان که با حلقه کار می کنید ، باید یک رشته ساده را به عنوان کلید اضافه کنید.
در اینجا مثال ساده ای وجود دارد که لیستی از نام ها را در یک <div> نگاشت می کند:

const names = [
Atul Gawande”,
Stan Sakai”,
Barry Lopez”
];

return(
<div>
{names.map(name => <div key={name}>{name}</div>)}
</div>
)

HTML حاصل از این قرار است:

<div>
<div>Atul Gawande</div>
<div>Stan Sakai</div>
<div>Barry Lopez</div>
</div>

تبدیل لیست ایموجی مشابه خواهد بود. <ul> کانتینر خواهد بود. روی داده ها نگاشت می کنید و <li> را با کلید نام کوتاه ایموجی برمیگردانید. شما داده های به سختی کد شده را در برچسب های <button> و <span> با اطلاعات حلقه جایگزین می کنید.
در ویرایشگر متن خود موارد زیر را اضافه کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

const displayEmojiName = event => alert(event.target.id);
const emojis = [
{
emoji: ‘’,
name: test grinning face”
},
{
emoji: ‘’,
name: party popper”
},
{
emoji: ‘’,
name: woman dancing”
}
];

function App() {
const greeting = greeting”;
return(
<div className=”container”>
<h1 id={greeting}>Hello, World</h1>
<p>I am writing JSX</p>
<ul>
{
emojis.map(emoji => (
<li key={emoji.name}>
<button
onClick={displayEmojiName}
>
<span role=”img” aria-label={emoji.name} id={emoji.name}>{emoji.emoji}</span>
</button>
</li>
))
}
</ul>
</div>
)
}
export default App;
Copy

در این کد ، شما بر روی آرایه emojis در برچسب <ul> نگاشت کردید و <li> را برگرداندید. در هر <li> از نام ایموجی به عنوان مشخصه key استفاده کرده اید. دکمه همان تابع عادی را خواهد داشت. در مولفه <span> ، aria-label و id را با name جایگزین کنید. محتوای برچسب <span> باید ایموجی باشد.
فایل را ذخیره کنید. پنجره شما ریفرش خواهد شد و داده ها را مشاهده خواهید کرد. توجه کنید که کلید در HTML تولید شده وجود ندارد.

ترکیب JSX با استاندارد JavaScript ابزارهای زیادی را در اختیار شما قرار می دهد تا بصورت دینامیکی محتوا را ایجاد کنید و می توانید از هر JavaScript استاندارد مورد نظر خود استفاده کنید. در این مرحله ، JSX سخت کد گذاری شده را با یک آرایه و یک حلقه جایگزین کردید تا HTML به صورت پویا ایجاد شود. در مرحله بعد ، با استفاده از اتصال کوتاه ، اطلاعات را به صورت مشروط نشان می دهید.
مرحله 5 – نمایش مشروط عناصر با اتصال کوتاه
در این مرحله ، از اتصال کوتاه برای نمایش مشروط عناصر HTML استفاده خواهید کرد. این کار به شما امکان می دهد تا مؤلفه هایی ایجاد کنید که بتوانند HTML را بر اساس اطلاعات اضافی پنهان کند یا نشان دهد ، و به انعطاف پذیری مولفه های شما برای رسیدگی به موقعیت های مختلف می پردازند.
مواقعی وجود دارد که شما برای نشان دادن اطلاعات در بعضی آیتم ها به مؤلفه نیاز دارید و در آیتم های دیگر احتیج نیست. به عنوان مثال ، فقط در صورت صحت برخی موارد ممکن است بخواهید برای کاربر پیام هشدار نشان دهید ، یا ممکن است بخواهید برخی از اطلاعات حساب را برای ادمین نمایش دهید که نمی خواهید یک کاربر عادی آن را ببیند.
برای این کار از گردش کوتاه استفاده خواهید کرد. این بدان معناست که شما از یک شرط استفاده خواهید کرد و اگر قسمت اول صادق باشد ، اطلاعات را در قسمت دوم برمی گرداند.
در اینجا یک مثال مطرح شده است. اگر می خواهید یک دکمه را فقط در صورت ورود کاربر به سیستم نشان دهید ، این مولفه را در پرانتز {} قرار دهید و شرایط را قبل از آن اضافه می کنید.
{isLoggedIn && <button>Log Out</button>}
Copy

در این مثال ، شما در حال استفاده از عملگر && هستید که اگر همه چیز صادق باشد ، آخرین مقدار را به شما بازمی گرداند. در غیر این صورت ، false را برگردانده ، که به React می گویند هیچ نشانه گذاری اضافی را برنگرداند. اگر isLoggedIn صادق باشد ، React دکمه را نشان می دهد. اگر isLoggedIn غلط باشد ، دکمه را نشان نمی دهد.
برای امتحان کردن این مسئله ، خطوط هایلایت شده زیر را اضافه کنید:
jsx-tutorial/src/App.js
import React from ‘react’;
import ‘./App.css’;

function App() {
const greeting = greeting”;
const displayAction = false;
return(
<div className=”container”>
<h1 id={greeting}>Hello, World</h1>
{displayAction && <p>I am writing JSX</p>}
<ul>

</ul>
</div>
)
}

export default App;

در ویرایشگر متن خود متغیری به نام displayAction با مقدار false ایجاد کرده اید. سپس برچسب <p> را در {} قرار دادید. در شروع پرانتزها ، برای ایجاد شرط ، displayAction && را اضافه کردید.
فایل را ذخیره کنید و خواهید دید که مولفه در مرورگر شما ناپدید می شود. مهم است بدانید ، در HTML تولید شده نیز ظاهر نمی شود. این مخفی کردن یک مولفه با CSS نیست. اصلاً در نشانه گذاری نهایی وجود نخواهد داشت.

در حال حاضر مقدار displayAction سخت کدنویسی شده است ، اما می توانید آن مقدار را به عنوان حالت ذخیره کرده یا آن را به عنوان یک پایه در قسمت مولفه های بالاسری منتقل کنید.
در این مرحله یاد گرفتید که چگونه عناصر را به صورت مشروط نشان دهید. این به شما امکان می دهد تا مؤلفه هایی را تنظیم کنید که براساس اطلاعات دیگر قابل تنظیم هستند.
نتیجه
در این آموزش ، یک برنامه سفارشی با JSX ایجاد کردید. آموختید که چگونه عناصر HTML مانند، را به مولفه های خود اضافه کنید ، یک ظاهر طراحی را به آن عناصر اضافه کنید ، ویژگی هایی را برای ایجاد نشانه گذاری معنایی و در دسترس اضافه کنید و رویدادها را به مؤلفه ها اضافه نمایید. سپس جاوا اسکریپت را با JSX خود ترکیب کردید تا کد تکراری را کاهش داده و عناصر را به طور مشروط نشان داده و مخفی کند.
این مبنایی است که شما برای ساختن مولفه های آینده نیاز دارید. با استفاده از ترکیبی از JavaScript و HTML ، می توانید مولفه های پویا ایجاد کنید که قابل انعطاف باشند و به شما امکان می دهد برنامه تان رشد و تغییر یابد.
اگر می خواهید در مورد React اطلاعات بیشتری کسب کنید ، از صفحه موضوع React ما دیدن کنید.

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

استفاده از nsh برای دستورات از راه دور اوبونتو 18 –  

میزبانی وب سایت با Caddy اوبونتو 18

تنظیم سرور ذخیره سازی آبجکت با استفاده از Minio در اوبونتو 18  –  

ضبط و اشتراک گذاری ترمینال با Terminalizer اوبونتو

تنظیم مسیریابی شرطی و پاسخگو با React Router v4  –  

ایجاد یک URL کوتاه کننده با Django و GraphQL

یک برنامه ردیابی سلامت را با React ،GraphQL و Okta –  

ساخت برنامه چت زمان حقیقی React و GraphQL

به روزرسانی فیلترهای مرتب سازی Angular (زاویه ای) –  

با استفاده از React ، Superagent و API اینستاگرام

نحوه ساختن یک برنامه جهانی با Nuxt.js و Django –  

دکمه دانلود با ریزتعاملات با CSS ، anime.js و segment.js

نحوه اضافه کردن عکسهای پیشرفته در Node و Express  –  

با Vue ،GraphQL و Apollo Client یک وبلاگ ساخت

یک برنامه SSR با روتر Preact ، Unistore و Preact بسازید  –  

ساخت برنامه های وب پیشرونده با Angular

اشکال زدایی JavaScript در تولید با نقشه های منبع  –  

می توان با Koa برنامه سلام جهانی” ساخت

ساختن یک برنامه با Node ، React ، Okta  –   

مدیریت حالت فرم در React با Redux Form

نحوه تنظیم Laravel ، Nginx و MySQL  –  

ارتقاء از AngularJS به Angular با ngUpgrade

استفاده از ویژوال استودیو از راه دور  –  

احراز هویت API با JSON Web Tokens و Passport

راه اندازی یک پروژه React با Parcel  –  

ایجاد Swiper مانند Netflix را در Vue

ساختن یک ربات تلگرام با Laravel و BotMan  –  

استفاده از map، filter، و reduce در جاوااسکریپت

چگونه می توان موتور جستجوی زمان واقعی را با Vue  –  

ساختن سیستم مستندات (Documentation) با Vue و VuePress

استفاده از اشتراک زنده با کد ویژوال استودیو  –  

ساخت یک مقیاس اندازه گیری قدرت رمز عبور را در React

شروع عملی GraphQL با Node.js و Express  –  

ساخت یک برنامه آب و هوا در Django

نحوه نصب Discourse روی Ubuntu 18  –  

تأیید رمز عبور با استفاده از درخواست فرم Laravel

نحوه نصب MySQL در CentOS 8  –  

استفاده از پسوند PDO PHP برای انجام تراکنش MySQL

نصب و پیکربندی SNMP Daemon و Client در Ubuntu 18  –  

نصب Linux، Nginx، MariaDB،PHP در Debian 10

 

 

کلمات کلیدی خرید سرور

خرید vps – 

خرید سرور مجازی – 

خرید سرور – 

سرور هلند – 

فروش vps – 

سرور مجازی آمریکا – 

خریدvps – 

سرور مجازی هلند – 

فروش سرور مجازی – 

سرور آمریکا – 

vps – 

سرور مجازی انگلیس – 

سرور مجازی آلمان – 

سرور مجازی کانادا – 

خرید vps آمریکا – 

خرید وی پی اس – 

سرور – 

خرید سرور مجازی هلند – 

vps خرید – 

سرور مجازی فرانسه – 

سرور مجازی هلند – 

خرید vps آمریکا – 

خرید سرور مجازی ارزان هلند – 

vps – 

خرید vps هلند – 

خرید سرور مجازی آمریکا – 

خرید vps فرانسه – 

تست vps – 

سرور مجازی تست – 

سرور مجازی ویندوز – 

ارزانترین vps – 

خرید وی پی اس – 

vps ارزان – 

 

 

برچسب‌ها:,


تصاویر و باینری های دارای CPU فشرده ، فرایندی بسیار کند و زمان بری است که می تواند در بعضی مواقع لپ تاپ شما را به بخاری تبدیل کند. وارد کردن تصاویر Docker با اتصال آهسته ، مدت زمان زیادی طول می کشد. خوشبختانه ، رفع این مشکلات آسان است. Docker به شما امکان می دهد تمام کارها را به یک 

سرور مجازی از راه دور بسپارید تا دستگاه محلی شما مجبور به انجام آن کار سخت نباشد.
این ویژگی در Docker 18.09 معرفی شده است. این نسخه پشتیبانی اتصال به یک میزبان Docker از راه دور از طریق SSH را به همراه دارد. به تنظیمات بسیار کمی در کلاینت احتیاج دارد و فقط به یک 

سرور مجازی Docker معمولی و بدون هیچگونه تنظیم خاص در حال اجرا بر روی یک دستگاه از راه دور نیاز خواهد داشت. قبل از Docker 18.09 ، باید از دستگاه Docker برای ایجاد یک 

سرور مجازی Docker از راه دور استفاده کرده و سپس محیط محلی Docker را پیکربندی کنید تا از آن استفاده کنید. این روش جدید آن پیچیدگی اضافی را از بین می برد.
در این آموزش ، شما یک Droplet ایجاد می کنید تا میزبان 

سرور مجازی Docker از راه دور باشید و دستور docker را روی دستگاه محلی خود پیکربندی کنید تا از آن استفاده نمایید.
پیش نیازها
برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید:
یک حساب DigitalOcean. اگر قبلاً حساب کاربری ندارید می توانید یک حساب کاربری ایجاد کنید.
Docker که روی دستگاه محلی یا 

سرور مجازی توسعه شما نصب شده باشد. اگر با Ubuntu 18.04 کار می کنید ، مراحل 1 و 2 نحوه نصب و استفاده از Docker را در اوبونتو 18.04 دنبال کنید. در غیر این صورت ، برای کسب اطلاعات در مورد نصب در سیستم عامل های دیگر ، مطالب رسمی را دنبال کنید. حتماً کاربر غیر ریشه خود را به گروه docker اضافه کنید ، همانطور که در مرحله 2 از آموزش مربوطه توضیح داده شده است.
مرحله 1 – ایجاد هاست Docker
برای شروع کار ، Droplet را با مقدار مناسب قدرت پردازش راه اندازی کنید. برنامه های بهینه سازی CPU برای این منظور ایده آل هستند ، اما برنامه های استاندارد دیگر نیز به خوبی کار می کنند. اگر برنامه هایی با منابع فشرده را کامپایل می کنید ، برنامه های بهینه سازی CPU هسته های CPU اختصاصی را ارائه می دهند که امکان ساخت سریع تر را فراهم می کنند. در غیر این صورت ، برنامه های استاندارد نسبت CPU به RAM متعادل تری را ارائه می دهند.
Docker One-click image از همه تنظیمات مربوطه برای ما مراقبت می کند. این لینک را دنبال کنید تا یک دراپلت بهینه سازی شده با CPU 16 GB / 8vCPU با Docker از کنترل پنل ایجاد کنید.
از طرف دیگر ، می توانید برای ایجاد Droplet از خط فرمان محلی خود ، از doctl استفاده کنید. برای نصب آن ، دستورالعمل موجود در فایل README doctl را در GitHub دنبال کنید.
دستور زیر یک دراپلت جدید بهینه شده با CPU 16GB/8vCPU در ناحیه FRA1 را بر اساس تصویر تک کلیک Docker ایجاد می کند:
$ doctl compute droplet create docker-host \

$ –image docker-18-04 \

$ –region fra1 \

$ –size c-8 \

$ –wait \

$ –ssh-keys $(doctl compute ssh-key list –format ID –no-header | sed ‘s/$/,/’ | tr -d ‘\n’ | sed ‘s/,$//’)

دستور doctl از مقدار ssh-keys استفاده می کند تا مشخص کند کدام کلید SSH را باید برای Droplet جدید خود اعمال کند. برای بازیابی کلیدهای SSH مرتبط با حساب DigitalOcean از یک زیرپوسته استفاده می کنیم تا doctl compute ssh-key-list را فراخوانی کنیم و سپس نتایج را با استفاده از دستور sed و tr تجزیه و تحلیل می کنیم تا داده ها را در قالب صحیح قالب بندی کنیم. این دستور شامل کلیه کلیدهای SSH حساب شما می باشد ، اما می توانید دستور فرعی هایلایت شده را با اثرانگشت هر کلید موجود در حساب خود جایگزین کنید.
پس از ایجاد دراپلت ، آدرس IP آن را در بین سایر جزئیات مشاهده خواهید کرد:
Output
ID Name Public IPv4 Private IPv4 Public IPv6 Memory VCPUs Disk Region Image Status Tags Features Volumes
148681562 docker-host your_server_ip 16384 8 100 fra1 Ubuntu Docker 5:18.09.6~3 on 18.04 active

می توانید اطلاعات بیشتری در مورد استفاده از دستور doctl در آموزش نحوه استفاده از doctl ، کلاینت خط فرمان رسمی DigitalOcean دریافت کنید.
وقتی دراپلت ایجاد شد ، آماده استفاده از 

سرور مجازی Docker خواهید بود. برای اهداف امنیتی ، یک کاربر لینوکس ایجاد کنید تا به جای root استفاده شود.
ابتدا با SSH به عنوان کاربر اصلی به دراپلت وصل شوید:
$ ssh root@your_server_ip
پس از اتصال ، یک کاربر جدید اضافه کنید. این دستور شخصی را به نام SAMMY اضافه می کند:
# adduser sammy

سپس کاربر را به گروه docker اضافه کنید تا به وی اجازه اجرای دستورات روی هاست Docker را بدهد.
# sudo usermod -aG docker sammy

در آخر با تایپ کردن exit از 

سرور مجازی راه دور خارج شوید.
اکنون که 

سرور مجازی آماده است ، اجازه دهید دستور docker محلی را برای استفاده از آن پیکربندی کنیم.
مرحله 2 – پیکربندی Docker برای استفاده از میزبان از راه دور
برای استفاده از میزبان از راه دور به عنوان میزبان Docker خود به جای دستگاه محلی ، متغیر محیط DOCKER_HOST را تنظیم کنید تا به میزبان از راه دور اشاره کند. این متغیر به کلاینت Docker CLI دستور می دهد تا به 

سرور مجازی از راه دور متصل شود.
$ export DOCKER_HOST=ssh://sammy@your_server_ip

اکنون هر دستور Docker که اجرا می کنید ، روی Droplet اجرا می شود. به عنوان مثال ، اگر یک کانتینر وب 

سرور مجازی راه اندازی کنید و یک پورت را در معرض دید قرار دهید ، روی Droplet اجرا خواهد شد و از طریق درگاهی که در آدرس IP Droplet به نمایش گذاشته اید ، قابل دسترسی خواهد بود.
برای تأیید اینکه به Droplet به عنوان میزبان Docker دسترسی دارید ، docker info را اجرا کنید.
$ docker info

نام میزبان Droplet خود را که در قسمت Name ذکر شده است ، مشاهده خواهید کرد:
Output

Name: docker-host

نکته ای که باید در نظر داشته باشید اینست که وقتی دستور docker build را اجرا می کنید ، محتوای ساخت (کلیه فایل ها و پوشه های قابل دسترسی از Dockerfile) به هاست ارسال می شود و سپس مراحل ساخت اجرا می شود. بسته به اندازه محتوای ساخت و میزان فایل ها ، ممکن است در مقایسه با ساخت تصویر روی یک دستگاه محلی زمان بیشتری طول بکشد. یکی از راه حل ها این است که یک دایرکتوری جدید اختصاص داده شده به تصویر Docker ایجاد کنید و فقط فایل هایی را که در تصویر استفاده خواهد شد کپی کنید یا پیوند دهید تا هیچ فایلغیر ضروری به صورت سهوی آپلود نشود.
هنگامی که متغیر DOCKER_HOST را با استفاده از export تنظیم کردید ، مقدار آن برای مدت زمان بخش پوسته دوام خواهد داشت. در صورت نیاز به استفاده مجدد از 

سرور مجازی محلی Docker ، می توانید متغیر را با دستور زیر پاک کنید:
unset DOCKER_HOST
نتیجه
شما یک میزبان Docker از راه دور ایجاد کرده اید و به صورت محلی به آن متصل هستید. دفعه بعد که باتری لپ تاپ شما رو به کاهش بود یا مجبور بودید یک تصویر سنگین Docker بسازید ، به جای دستگاه محلی خود از 

سرور مجازی از راه دور Docker خود استفاده کنید.
همچنین ممکن است علاقه مند به یادگیری در مورد چگونگی بهینه سازی تصاویر Docker برای تولید یا چگونگی بهینه سازی آنها به طور خاص برای Kubernetesباشید.

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

استفاده از nsh برای دستورات از راه دور اوبونتو 18 –  

میزبانی وب سایت با Caddy اوبونتو 18

تنظیم سرور ذخیره سازی آبجکت با استفاده از Minio در اوبونتو 18  –  

ضبط و اشتراک گذاری ترمینال با Terminalizer اوبونتو

تنظیم مسیریابی شرطی و پاسخگو با React Router v4  –  

ایجاد یک URL کوتاه کننده با Django و GraphQL

یک برنامه ردیابی سلامت را با React ،GraphQL و Okta –  

ساخت برنامه چت زمان حقیقی React و GraphQL

به روزرسانی فیلترهای مرتب سازی Angular (زاویه ای) –  

با استفاده از React ، Superagent و API اینستاگرام

نحوه ساختن یک برنامه جهانی با Nuxt.js و Django –  

دکمه دانلود با ریزتعاملات با CSS ، anime.js و segment.js

نحوه اضافه کردن عکسهای پیشرفته در Node و Express  –  

با Vue ،GraphQL و Apollo Client یک وبلاگ ساخت

یک برنامه SSR با روتر Preact ، Unistore و Preact بسازید  –  

ساخت برنامه های وب پیشرونده با Angular

اشکال زدایی JavaScript در تولید با نقشه های منبع  –  

می توان با Koa برنامه سلام جهانی” ساخت

ساختن یک برنامه با Node ، React ، Okta  –   

مدیریت حالت فرم در React با Redux Form

نحوه تنظیم Laravel ، Nginx و MySQL  –  

ارتقاء از AngularJS به Angular با ngUpgrade

استفاده از ویژوال استودیو از راه دور  –  

احراز هویت API با JSON Web Tokens و Passport

راه اندازی یک پروژه React با Parcel  –  

ایجاد Swiper مانند Netflix را در Vue

ساختن یک ربات تلگرام با Laravel و BotMan  –  

استفاده از map، filter، و reduce در جاوااسکریپت

چگونه می توان موتور جستجوی زمان واقعی را با Vue  –  

ساختن سیستم مستندات (Documentation) با Vue و VuePress

استفاده از اشتراک زنده با کد ویژوال استودیو  –  

ساخت یک مقیاس اندازه گیری قدرت رمز عبور را در React

شروع عملی GraphQL با Node.js و Express  –  

ساخت یک برنامه آب و هوا در Django

نحوه نصب Discourse روی Ubuntu 18  –  

تأیید رمز عبور با استفاده از درخواست فرم Laravel

نحوه نصب MySQL در CentOS 8  –  

استفاده از پسوند PDO PHP برای انجام تراکنش MySQL

نصب و پیکربندی SNMP Daemon و Client در Ubuntu 18  –  

نصب Linux، Nginx، MariaDB،PHP در Debian 10

 

 

کلمات کلیدی خرید سرور

خرید vps – 

خرید سرور مجازی – 

خرید سرور – 

سرور هلند – 

فروش vps – 

سرور مجازی آمریکا – 

خریدvps – 

سرور مجازی هلند – 

فروش سرور مجازی – 

سرور آمریکا – 

vps – 

سرور مجازی انگلیس – 

سرور مجازی آلمان – 

سرور مجازی کانادا – 

خرید vps آمریکا – 

خرید وی پی اس – 

سرور – 

خرید سرور مجازی هلند – 

vps خرید – 

سرور مجازی فرانسه – 

سرور مجازی هلند – 

خرید vps آمریکا – 

خرید سرور مجازی ارزان هلند – 

vps – 

خرید vps هلند – 

خرید سرور مجازی آمریکا – 

خرید vps فرانسه – 

تست vps – 

سرور مجازی تست – 

سرور مجازی ویندوز – 

ارزانترین vps – 

خرید وی پی اس – 

vps ارزان – 

 

 

برچسب‌ها:,


کنترل نسخه بخشی ضروری از توسعه نرم افزاری مدرن هستند. نسخه سازی به شما امکان می دهد تا نرم افزار خود را در سطح منبع نگه دارید. می توانید تغییرات را ردیابی کنید ، به مراحل قبلی برگردید و شاخه بدهید تا نسخه های متفاوتی از فایل ها و فهرست ها ایجاد کنید.
یکی از محبوب ترین سیستم های کنترل نسخه در حال حاضر موجود Git است. بسیاری از فایل های پروژه ها در یک مخزن Git نگهداری می شوند و سایت هایی مانند GitHub ، GitLab و Bitbucket به تسهیل اشتراک و همکاری پروژه توسعه نرم افزار کمک می کنند.
در این راهنما نحوه نصب و پیکربندی Git روی 

سرور مجازی CentOS 8 را بررسی خواهیم کرد. نحوه نصب نرم افزار را به دو روش مختلف پوشش خواهیم داد: از طریق مدیر بسته داخلی و از طریق منبع. هر یک از این رویکردها بسته به نیازهای خاص شما مزایای خاص خود را دارد.
پیش نیازها
شما به یک 

سرور مجازی CentOS 8 با یک حساب کاربری فوق کاربری غیر ریشه نیاز خواهید داشت.
برای انجام این کار، می توانید راهنمای تنظیم اولیه 

سرور مجازی برای CentOS 8 را دنبال کنید.
با راه اندازی 

سرور مجازی و کاربر ، آماده شروع کار هستید.
نصب Git با بسته های پیش فرض
اولین گزینه ما برای نصب Git از طریق بسته های پیش فرض CentOS است.
این گزینه برای کسانی که می خواهند به سرعت با Git پیش بروند، یا کسانی که نسخه پایدار و پر کاربرد را ترجیح می دهند ، یا کسانی که به دنبال جدیدترین گزینه های موجود نیستند، بهترین انتخاب است. اگر به دنبال جدیدترین نسخه منتشر شده هستید ، باید به سراغ بخش نصب آن از منبع بروید.
ما از ابزار مدیریت منبع باز DNF استفاده می کنیم ، که مخفف Dandified YUM نسخه نسل بعدی Yellowdog Updater ، اصلاح شده است (یعنی yum) . DNF مدیر بسته ای است که هم اکنون مدیر بسته پیش فرض سیستم های لینوکس مبتنی بر Red Hat مانند CentOS میباشد. به شما امکان می دهد بسته های نرم افزاری را بر روی 

سرور مجازی خود نصب ، به روز و حذف کنید.
ابتدا ، از ابزارهای مدیریت بسته مناسب برای به روزرسانی فهرست بسته محلی خود استفاده کنید.

$ sudo dnf update -y

پرچم -y برای هشدار به سیستم است مبنی بر اینکه ما آگاهیم که در حال ایجاد تغییر هستیم و از اعلان تأیید توسط ترمینال جلوگیری شود.
با تکمیل به روزرسانی ، می توانید Git را نصب کنید:
$ sudo dnf install git -y

با اجرای دستور زیر می توانید تایید کنید که Git را به درستی نصب کرده اید:
$ git –version

Output
git version 2.18.2

با نصب موفقیت آمیز Git ، اکنون می توانید برای تکمیل تنظیم خود به بخش Setting Up Git بروید.
نصب Git از Source
یک روش انعطاف پذیرتر برای نصب Git ، کامپایل نرم افزار از منبع است. این کار زمان بیشتری طول می کشد و از طریق مدیر بسته شما نگه داری نمی شود ، اما به شما امکان می دهد آخرین نسخه را دانلود کنید و در صورت تمایل به شخصی سازی ، کنترل برخی گزینه ها را در اختیار شما قرار می دهد.
قبل از شروع ، باید نرم افزاری را نصب کنید که Git به آن بستگی دارد. این همه ی چیزی است که در مخازن پیش فرض موجود است ، بنابراین می توانیم فهرست بسته محلی خود را بروزرسانی کنیم و سپس بسته ها را نصب کنیم.
$ sudo dnf update -y

$ sudo dnf install gettext-devel openssl-devel perl-CPAN perl-devel zlib-devel gcc autoconf -y

بعد از اینکه متعلقات لازم را نصب کردید ، یک دیرکتوری موقت ایجاد کنید و به داخل آن بروید. اینجاست که تاربال Git خود را دانلود خواهیم کرد.
$ mkdir tmp

$ cd /tmp

از وب سایت پروژه Git ، می توانیم به لیست تاربل توزیع Red Hat لینوکس موجود در https://mirrors.edge.kernel.org/pub/software/scm/git/ برویم و نسخه مورد نظر خود را دانلود کنیم. در زمان نوشتن این مقاله ، جدیدترین نسخه 2.26.0 است ، بنابراین ما آن را برای اهداف نمایشی دانلود خواهیم کرد. ما از curl استفاده می کنیم و فایلی را که دانلود می کنیم به git.tar.gz. میفرستیم:

$ curl -o git.tar.gz https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.26.0.tar.gz

فایل تاربال فشرده را باز کنید:

$ tar -zxf git.tar.gz
سپس، وارد دیرکتوری جدید Git شوید:

$ cd git-*

اکنون می توانید بسته را ایجاد کرده و با تایپ این دو دستور آن را نصب کنید:
$ make prefix=/usr/local all

$ sudo make prefix=/usr/local install

پس از تکمیل این کار ، می توانید با بررسی نسخه مطمئن باشید که نصب شما موفقیت آمیز بوده است.
$ git –version

Output
git version 2.26.0
با نصب موفقیت آمیز Git ، اکنون می توانید ستاپ خود را تکمیل کنید.

راه اندازی Git
اکنون که Git را نصب کرده اید ، باید آن را پیکربندی کنید تا پیام های commit تولید شده حاوی اطلاعات صحیح شما باشند.
این کار را می توان با استفاده از دستور git config انجام داد. به طور خاص ، باید نام و آدرس ایمیل خود را ارائه کنیم زیرا Git این اطلاعات را در هر کاری که انجام می دهیم تعبیه می کند. می توانیم پیش برویم و با تایپ کردن این دستور این اطلاعات را اضافه کنیم:
$ git config –global user.name Your Name”

$ git config –global user.email youremail@domain.com”

می توانیم تمام موارد پیکربندی تنظیم شده را با تایپ دستور زیر نمایش دهیم:
$ git config –list

Output
user.name=Your Name
user.email=youremail@domain.com

اطلاعاتی که وارد می کنید در فایل پیکربندی Git شما ذخیره می شود ، که می توانید به صورت اختیاری و دستی با یک ویرایشگر متن مانند این ویرایش کنید:
$ vi ~/.gitconfig

~/.gitconfig contents
[user]
name = Your Name
email = youremail@domain.com

سپس برای خروج از ویرایشگر متن ESC را فشار دهید.
گزینه های بسیار دیگری وجود دارد که می توانید تنظیم کنید ، اما این دو مورد ضروری هستند. اگر این مرحله را رد کنید ، احتمالاً هنگام ورود به Git هشدارهایی مشاهده خواهید کرد. این باعث می شود کار بیشتری برای شما ایجاد شود زیرا مجبور خواهید بود کارهایی را که انجام داده اید با اطلاعات اصلاح شده عوض کنید.
نتیجه
اکنون باید Git را نصب کرده و آماده استفاده در سیستم خود باشید.
برای کسب اطلاعات بیشتر در مورد نحوه استفاده از Git ، این مقاله ها و مجموعه ها را بررسی کنید:
• نحوه استفاده کارآمد از Git
• نحوه استفاده از انشعابات Git
• مقدمه ای بر منبع آزاد

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

استفاده از nsh برای دستورات از راه دور اوبونتو 18 –  

میزبانی وب سایت با Caddy اوبونتو 18

تنظیم سرور ذخیره سازی آبجکت با استفاده از Minio در اوبونتو 18  –  

ضبط و اشتراک گذاری ترمینال با Terminalizer اوبونتو

تنظیم مسیریابی شرطی و پاسخگو با React Router v4  –  

ایجاد یک URL کوتاه کننده با Django و GraphQL

یک برنامه ردیابی سلامت را با React ،GraphQL و Okta –  

ساخت برنامه چت زمان حقیقی React و GraphQL

به روزرسانی فیلترهای مرتب سازی Angular (زاویه ای) –  

با استفاده از React ، Superagent و API اینستاگرام

نحوه ساختن یک برنامه جهانی با Nuxt.js و Django –  

دکمه دانلود با ریزتعاملات با CSS ، anime.js و segment.js

نحوه اضافه کردن عکسهای پیشرفته در Node و Express  –  

با Vue ،GraphQL و Apollo Client یک وبلاگ ساخت

یک برنامه SSR با روتر Preact ، Unistore و Preact بسازید  –  

ساخت برنامه های وب پیشرونده با Angular

اشکال زدایی JavaScript در تولید با نقشه های منبع  –  

می توان با Koa برنامه سلام جهانی” ساخت

ساختن یک برنامه با Node ، React ، Okta  –   

مدیریت حالت فرم در React با Redux Form

نحوه تنظیم Laravel ، Nginx و MySQL  –  

ارتقاء از AngularJS به Angular با ngUpgrade

استفاده از ویژوال استودیو از راه دور  –  

احراز هویت API با JSON Web Tokens و Passport

راه اندازی یک پروژه React با Parcel  –  

ایجاد Swiper مانند Netflix را در Vue

ساختن یک ربات تلگرام با Laravel و BotMan  –  

استفاده از map، filter، و reduce در جاوااسکریپت

چگونه می توان موتور جستجوی زمان واقعی را با Vue  –  

ساختن سیستم مستندات (Documentation) با Vue و VuePress

استفاده از اشتراک زنده با کد ویژوال استودیو  –  

ساخت یک مقیاس اندازه گیری قدرت رمز عبور را در React

شروع عملی GraphQL با Node.js و Express  –  

ساخت یک برنامه آب و هوا در Django

نحوه نصب Discourse روی Ubuntu 18  –  

تأیید رمز عبور با استفاده از درخواست فرم Laravel

نحوه نصب MySQL در CentOS 8  –  

استفاده از پسوند PDO PHP برای انجام تراکنش MySQL

نصب و پیکربندی SNMP Daemon و Client در Ubuntu 18  –  

نصب Linux، Nginx، MariaDB،PHP در Debian 10

 

 

کلمات کلیدی خرید سرور

خرید vps – 

خرید سرور مجازی – 

خرید سرور – 

سرور هلند – 

فروش vps – 

سرور مجازی آمریکا – 

خریدvps – 

سرور مجازی هلند – 

فروش سرور مجازی – 

سرور آمریکا – 

vps – 

سرور مجازی انگلیس – 

سرور مجازی آلمان – 

سرور مجازی کانادا – 

خرید vps آمریکا – 

خرید وی پی اس – 

سرور – 

خرید سرور مجازی هلند – 

vps خرید – 

سرور مجازی فرانسه – 

سرور مجازی هلند – 

خرید vps آمریکا – 

خرید سرور مجازی ارزان هلند – 

vps – 

خرید vps هلند – 

خرید سرور مجازی آمریکا – 

خرید vps فرانسه – 

تست vps – 

سرور مجازی تست – 

سرور مجازی ویندوز – 

ارزانترین vps – 

خرید وی پی اس – 

vps ارزان – 

 

 

برچسب‌ها:,


یک نرم افزار مانیتورینگ منبع باز برای شبکه ها و برنامه ها است. این برنامه نظارت بر هزاران معیار (metricها) جمع آوری شده از 

سرور مجازی ها ، ماشین های مجازی ، دستگاه های شبکه و برنامه های وب را در زمان واقعی ارائه می دهد. این معیارها به شما کمک می کند تا سلامت فعلی زیرساخت IT خود را تعیین کنید و قبل از شکایت مشتریان مشکلات سخت افزار یا اجزای نرم افزاری را تشخیص دهید. اطلاعات مفید در یک پایگاه داده ذخیره می شود ، بنابراین می توانید داده ها را با گذشت زمان تجزیه و تحلیل کرده و کیفیت خدمات ارائه شده را بهبود بخشید ، یا برای ارتقاء برنامه های خود تصمیم گیری کنید.
Zabbix از گزینه های مختلفی برای جمع آوری معیارها استفاده می کند ، از جمله آن می توان به نظارت بدون عامل بر خدمات کاربر و معماری کلاینت-

سرور مجازی اشاره کرد. برای جمع آوری متریک 

سرور مجازی ، از یک عامل کوچک در سرویس گیرنده تحت نظارت برای جمع آوری داده ها و ارسال آن به 

سرور مجازی Zabbix استفاده می کند. Zabbix از ارتباط رمزگذاری شده بین 

سرور مجازی و کلاینت های متصل پشتیبانی می کند ، بنابراین هنگام گذر از شبکه های ناایمن ، از داده های شما محافظت می شود.

سرور مجازی Zabbix داده های خود را در یک پایگاه داده رابطه ای ایجاد می کند که توسط MySQL ، PostgreSQL یا Oracle تهیه می شود. همچنین می توانید داده های تاریخی را در پایگاه های داده nosql مانند Elasticsearch و TimescaleDB ذخیره کنید. Zabbix یک رابط وب فراهم می کند تا بتوانید داده ها را مشاهده کرده و تنظیمات سیستم را پیکربندی کنید.
در این آموزش دو ماشین پیکربندی خواهید کرد. یکی به عنوان 

سرور مجازی پیکربندی می شود و دیگری به عنوان کلاینت که بر آن نظارت می کنید. 

سرور مجازی از یک پایگاه داده MySQL برای ضبط داده های مانیتورینگ استفاده می کند و از Apache برای سرویس رابط وب استفاده می شود.
پیش نیازها
برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید:
• دو 

سرور مجازی CentOS 7 که با طبق مقاله نحوه راه اندازی 

سرور مجازی اولیه با CentOS تنظیم شده باشد ، و شامل یک کاربر غیر ریشه با امتیازات sudo و فایروال باشد. روی یک 

سرور مجازی ، Zabbix را نصب می کنید. این آموزش به این 

سرور مجازی، 

سرور مجازی Zabbix خواهد گفت. در واقع 

سرور مجازی دوم شما را کنترل می کند. به این 

سرور مجازی دوم 

سرور مجازی دوم CentOS گفته می شود.
• 

سرور مجازی Zabbix به نصب Apache ، MySQL و PHP نیاز دارد. نحوه نصب Linux ، Apache ، MySQL ، PHP (LAMP) را بر روی CentOS 7 دنبال کنید تا این موارد را روی 

سرور مجازی Zabbix پیکربندی کنید.
توجه: CentOS به جای MySQL از MariaDB استفاده می کند ، اما در دنبال کردن این آموزش مشکلی ایجاد نمی کند.

علاوه بر این ، از آنجا که شما از 

سرور مجازی Zabbix برای دسترسی به اطلاعات با ارزش در مورد زیرساخت های خود استفاده می کنید که نمی خواهید کاربران غیرمجاز به آنها دسترسی پیدا کنند ، مهم است که با نصب گواهی TLS / SSL ، 

سرور مجازی خود را ایمن نگه دارید. این کار اختیاری است اما به شدت توصیه میشود. برای به دست آوردن گواهینامه رایگان TLS / SSL می توانید راهنمای Let’s Encrypt on CentOS 7 را دنبال کنید.
مرحله 1 – نصب 

سرور مجازی Zabbix
ابتدا باید Zabbix را روی 

سرور مجازی ی که MySQL ،Apache و PHP را نصب کرده اید ، نصب کنید. به عنوان کاربر غیر ریشه خود به این دستگاه وارد شوید:
⦁ $ ssh sammy@zabbix_server_ip_address

Zabbix به طور پیش فرض در مدیر بسته موجود نیست ، بنابراین بسته بندی پیکربندی مخزن را با استفاده از مخزن رسمی Zabbix برای CentOS نصب کنید. در این آموزش از نسخه 4.2 Zabbix استفاده می شود:
⦁ $ sudo rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm

خروجی زیر را مشاهده خواهید کرد:
Output
Retrieving https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.WXsYNB: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing… ################################# [100%]
Updating / installing…
1:zabbix-release-4.2-1.el7 ################################# [100%]

فعلا همه ورودی های مخازن فعال را از حافظه نهان پاک کنید:
⦁ $ sudo yum clean all

سپس 

سرور مجازی Zabbix و Web Frontend را با پشتیبانی پایگاه داده MySQL نصب کنید:
⦁ $ sudo yum install zabbix-server-mysql zabbix-web-mysql

در طی مراحل نصب از شما در مورد وارد کردن یک کلید GPG سؤال می شود. این کلید صحت بسته ای را که نصب می کنید تأیید می کند. برای پایان دادن به نصب ، کلید GPG را با تایپ y و فشار دادن ENTER هنگام درخواست، بپذیرید.

همچنین ، عامل Zabbix را نصب کنید ، که به شما امکان می دهد اطلاعات مربوط به وضعیت 

سرور مجازی Zabbix را جمع کنید.
⦁ $ sudo yum install zabbix-agent

قبل از استفاده از Zabbix ، شما باید یک بانک اطلاعاتی را تنظیم کنید تا داده هایی را که 

سرور مجازی Zabbix از عاملین آن جمع آوری خواهد کرد ، نگه دارید. می توانید این کار را در مرحله بعدی انجام دهید.
مرحله 2 – پیکربندی پایگاه داده MySQL برای Zabbix
باید یک پایگاه داده MySQL جدید ایجاد کرده و آن را با برخی از اطلاعات اصلی پر کنید تا برای Zabbix مناسب باشد. همچنین یک کاربر خاص برای این بانک اطلاعات ایجاد خواهید کرد تا Zabbix با حساب ریشه وارد MySQL نشود.
به عنوان کاربر ریشه با استفاده از رمز ریشه که هنگام نصب 

سرور مجازی MySQL تنظیم کرده اید به MySQL وارد شوید:
⦁ mariaDB [(none)]> mysql -uroot -p

پایگاه داده Zabbix را با پشتیبانی کاراکتر UTF-8 ایجاد کنید:
⦁ mariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;

سپس کاربری ایجاد کنید که 

سرور مجازی Zabbix از آن استفاده کند ، به آن دسترسی به پایگاه داده جدید را بدهید و رمز عبور را برای کاربر تنظیم کنید:
⦁ mariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by ‘your_zabbix_mysql_password’;

سپس این مجوزهای جدید را اعمال کنید:
⦁ mariaDB [(none)]> flush privileges;

این امر از کاربر و بانک اطلاعاتی مراقبت میکند. از کنسول پایگاه داده خارج شوید:
⦁ mariaDB [(none)]> quit;

در مرحله بعد ، طرح و داده های اولیه را وارد کنید. نصب Zabbix فایلی را در اختیارتان قرار می دهد.
برای تنظیم شماتیک و وارد کردن داده ها به پایگاه داده zabbix ، دستور زیر را اجرا کنید. ازzcat  استفاده کنید چرا که اطلاعات موجود در فایل ، فشرده است.
⦁ $ zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

رمزعبور را برای کاربر zabbix MySQL که هنگام درخواست از شما پیکربندی کردید وارد نمایید.
در صورت موفقیت، این فرمان خطایی به همراه نخواهد داشت. اگر خطای ERROR 1045 (28000): Access denied for user zabbix@’localhost’ (using password: YES) را مشاهده کردید ، مطمئن شوید که از رمز عبور برای کاربر zabbix استفاده کرده اید و نه کاربر root.
به منظور استفاده 

سرور مجازی Zabbix از این پایگاه داده ، باید گذرواژه پایگاه داده را در فایل پیکربندی 

سرور مجازی Zabbix تنظیم کنید. فایل پیکربندی را در ویرایشگر متن مورد نظر خود باز کنید. این آموزش از vi استفاده می کند:
⦁ $ sudo vi /etc/zabbix/zabbix_server.conf

توجه: برای کسب اطلاعات بیشتر در مورد ویرایشگر متن vi و vim جانشین آن ، از نصب و استفاده از ویرایشگر متن Vim در آموزش Cloud Server استفاده کنید.
به دنبال قسمت زیر در فایل باشید:
/etc/zabbix/zabbix_server.conf

### Option: DBPassword
# Database password. Ignored for SQLite.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=

این نظرات در فایل نحوه اتصال به پایگاه داده را توضیح می دهkد. شما باید مقدار DBPassword را در فایل برای کاربر پایگاه داده خود تنظیم کنید . با وارد کردن دکمه i حالت insert را وارد کرده ،DBPassword = را حذف کنید و و رمز خود را برای پیکربندی بانک اطلاعات اضافه کنید:
/etc/zabbix/zabbix_server.conf

# Mandatory: no
# Default
DBPassword=your_zabbix_mysql_password

پس از اتمام ، ESC را فشار دهید تا حالت درج باقی بماند ، سپس: wq و ENTER برای ذخیره و خروج از فایل تایپ کنید.
این امر از پیکربندی 

سرور مجازی Zabbix محافظت میکند. در مرحله بعد ، برای کارکرد صحیح رابط وب Zabbix اصلاحاتی را در تنظیمات PHP ایجاد خواهید کرد.
مرحله 3 – پیکربندیPHP برای Zabbix
رابط وب Zabbix به زبان PHP نوشته شده است و به برخی تنظیمات ویژه 

سرور مجازی PHP احتیاج دارد. مراحل نصب Zabbix یک فایل پیکربندی Apache ایجاد کرد که شامل این تنظیمات است. شما باید تغییر کوچکی در این فایل ایجاد کنید ، بنابراین آن را با دستور زیر باز کنید:
⦁ $ sudo vi /etc/httpd/conf.d/zabbix.conf

این فایل شامل تنظیمات PHP است که شرایط لازم برای رابط وب Zabbix را برآورده می کند. با این حال ، تنظیم منطقه زمانی به طور پیش فرض حذف می شود. برای اینکه مطمئن شوید Zabbix از زمان صحیح استفاده می کند ، باید منطقه زمانی مناسب را تنظیم کنید.
/etc/httpd/conf.d/zabbix.conf

<IfModule mod_php5.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value max_input_vars 10000
php_value always_populate_raw_post_data -1
# php_value date.timezone Europe/Riga
</IfModule>

خط منطقه زمانی که در بلوک کد قبلی هایلایت شده است را باطل کنید و آن را به منطقه زمانی خود تغییر دهید. می توانید از این لیست از مناطق زمانی پشتیبانی شده استفاده کنید تا یک لیست مناسب برای شما پیدا شود. سپس فایل را ذخیره کنید و ببندید.
اکنون Apache را مجدداً راه اندازی کنید تا این تنظیمات جدید اعمال شود:
⦁ $ sudo systemctl restart httpd

توجه: اگر SELinux در حالت اجباری در حال اجرا است ، باید با استفاده از دستور sudo setenforce 0 آن را در حالت مجاز قرار دهید تا به عامل Zabbix اجازه دهید به طور آزادانه عمل کند. می توانید از این آموزش برای اطلاعات بیشتر درباره مکانیسم کنترل امنیت Security Enhanced Linux استفاده کنید.

اکنون می توانید 

سرور مجازی و عامل Zabbix را راه اندازی کنید:
⦁ $ sudo systemctl start zabbix-server

⦁ $ sudo systemctl start zabbix-agent
سپس بررسی کنید که آیا 

سرور مجازی Zabbix به درستی کار می کند:
⦁ $ sudo systemctl status zabbix-server

وضعیت زیر را مشاهده خواهید کرد:
Output
● zabbix-server.service – Zabbix Server
Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2019-05-03 05:57:29 UTC; 2s ago
Process: 4461 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)

در آخر ، 

سرور مجازی و نماینده را فعال کنید تا در زمان بوت شروع شوند:
⦁ $ sudo systemctl enable zabbix-server

⦁ 4 sudo systemctl enable zabbix-agent

این 

سرور مجازی تنظیم شده و به بانک اطلاعاتی وصل میباشد. سپس ، ظاهر وب را تنظیم کنید.
توجه: همانطور که در بخش Preferences ذکر شد ، توصیه می شود SSL / TLS را روی 

سرور مجازی خود فعال کنید. برای بدست آوردن یک گواهینامه SSL رایگان برای Apache در CentOS 7می توانید این آموزش را دنبال کنید. پس از اخذ گواهینامه های SSL / TLS ، می توانید دوباره برگشته و این آموزش را تکمیل کنید.

مرحله 4 – پیکربندی تنظیمات رابط وب Zabbix
رابط وب به شما امکان می دهد گزارش ها را مشاهده کنید و میزبان هایی را که می خواهید نظارت کنید اضافه نمایید ، اما قبل از استفاده از آن نیاز به تنظیمات اولیه دارد. مرورگر خود را راه اندازی کنید و به آدرس http: // zabbix_server_name / zabbix / بروید. در صفحه اول یک پیام خوش آمدید مشاهده خواهید کرد. برای ادامه بر روی next step کلیک کنید.
در صفحه بعدی ، جدول را مشاهده خواهید کرد که لیست تمامی پیش نیازهای اجرای Zabbix را نشان می دهد.

همه مقادیر موجود در این جدول باید ok باشد ، بنابراین تأیید کنید که هستند. حتماً تا پایین صفحه رفته و همه پیش نیازها را نگاه کنید. هنگامی که تأیید کردید که همه چیز آماده است ، برای ادامه روی next step کلیک کنید.
صفحه بعدی اطلاعات اتصال داده را می پرسد.

به 

سرور مجازی Zabbix در مورد بانک اطلاعاتی خود آگاهی دادید ، اما رابط وب Zabbix برای مدیریت هاست و خواندن داده نیز به دسترسی به بانک اطلاعاتی احتیاج دارد. بنابراین اعتبارات MySQL را که در مرحله 2 پیکربندی کرده اید وارد کنید و برای ادامه بر روی next step کلیک کنید.
در صفحه بعدی می توانید گزینه ها را در مقادیر پیش فرض آنها قرار دهید.

name اختیاری است. در صورت داشتن چندین 

سرور مجازی نظارت ، از آن در رابط وب استفاده می شود. برای ادامه بر روی next step کلیک کنید.
صفحه بعدی خلاصه پیش از نصب را نشان می دهد تا بتوانید تأیید کنید که همه چیز صحیح است.

بر روی next step کلیک کنید تا به صفحه نهایی بروید.
ستاپ رابط وب اکنون تکمیل شده است. این فرآیند فایل پیکربندی /etc/zabbix/web/zabbix.conf.php را ایجاد می کند که می توانید در آینده از آنها نسخه پشتیبان تهیه کنید و استفاده کنید. برای رفتن به صفحه ورود ، روی Finish کلیک کنید. کاربر پیش فرض Admin و پسورد zabbix است.
قبل از ورود به سیستم ، عامل Zabbix را در دومین 

سرور مجازی CentOS خود تنظیم کنید.
مرحله 5 – نصب و پیکربندی عامل Zabbix
حال باید نرم افزار عامل را تنظیم کنید که داده های مانیتورینگ را به 

سرور مجازی Zabbix ارسال می کند.
وارد 

سرور مجازی CentOS دوم شوید:
⦁ $ ssh sammy@second_centos_server_ip_address

سپس ، دقیقاً مانند 

سرور مجازی Zabbix ، دستور زیر را برای نصب بسته تنظیمات مخزن اجرا کنید:
⦁ $ sudo rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm

بعد ، حافظه yum را پاک کنید:
⦁ $ sudo yum clean all
سپس عامل Zabbix را نصب کنید:
⦁ $ sudo yum install zabbix-agent

در طی مراحل نصب در مورد وارد کردن یک کلید GPG از شما سؤال می شود. آن را تأیید کنید تا نصب کامل شود.
در حالی که Zabbix از رمزگذاری مبتنی بر گواهی پشتیبانی می کند ، تنظیم مجوز قانونی فراتر از محدوده این آموزش است. در عوض ، در این آموزش از کلیدهای از پیش اشتراکی (PSK) برای برقراری ارتباط بین 

سرور مجازی و عامل استفاده خواهید کرد.
ابتدا یک PSK ایجاد کنید:
⦁ $ sudo sh -c openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk”

کلید را نشان دهید تا بتوانید آن را در جایی کپی کنید. برای پیکربندی هاست به آن احتیاج خواهید داشت.
⦁ $ cat /etc/zabbix/zabbix_agentd.psk

کلید چیزی شبیه به این خواهد بود:
Output
a4374c8c3b55de472225dbf96aa7cd3ce6a34abc95d0eb2a601d954ee0cd4410

اکنون تنظیمات عامل Zabbix را ویرایش کنید تا اتصال ایمن آن به 

سرور مجازی Zabbix تنظیم شود. فایل پیکربندی عامل را در ویرایشگر متن خود باز کنید:
⦁ $ sudo vi /etc/zabbix/zabbix_agentd.conf

هر تنظیماتی درون این فایل از طریق کامنت های آگاهی دهنده در سراسر فایل مستند میشود ، اما نیاز به ویرایش برخی از آنها دارید.
ابتدا باید آدرس IP 

سرور مجازی Zabbix را ویرایش کنید. بخش زیر را پیدا کنید:
/etc/zabbix/zabbix_agentd.conf

### Option: Server
# List of comma delimited IP addresses (or hostnames) of Zabbix servers.
# Incoming connections will be accepted only from the hosts listed here.
# If IPv6 support is enabled then ‘127.0.0.1’, ‘::127.0.0.1’, ‘::ffff:127.0.0.1’ are treated equally.
#
# Mandatory: no
# Default:
# Server=

Server=127.0.0.1

مقدار پیش فرض را به IP 

سرور مجازی Zabbix تغییر دهید:
/etc/zabbix/zabbix_agentd.conf

# Mandatory: no
# Default:
# Server=

Server=zabbix_server_ip_address

در مرحله بعد ، بخشی را پیدا کنید که اتصال ایمن به 

سرور مجازی Zabbix را پیکربندی کرده و پشتیبانی از کلید پیش اشتراک گذاری شده را فعال کنید. بخش TLSConnect را پیدا کنید ، که اینگونه به نظر می رسد:
/etc/zabbix/zabbix_agentd.conf

### Option: TLSConnect
# How the agent should connect to server or proxy. Used for active checks.
# Only one value can be specified:
# unencrypted – connect without encryption
# psk – connect using TLS and a pre-shared key
# cert – connect using TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for ‘unencrypted’ connection)
# Default:
# TLSConnect=unencrypted

سپس TLSConnect = را باطل کنید و unencrypted را با psk جایگزین کنید تا پشتیبانی از کلید پیش اشتراکی را پیکربندی کنید:
/etc/zabbix/zabbix_agentd.conf

TLSConnect=psk

سپس ، بخش TLSAccept را پیدا کنید ، که اینگونه به نظر می رسد:
/etc/zabbix/zabbix_agentd.conf

### Option: TLSAccept
# What incoming connections to accept.
# Multiple values can be specified, separated by comma:
# unencrypted – accept connections without encryption
# psk – accept connections secured with TLS and a pre-shared key
# cert – accept connections secured with TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for ‘unencrypted’ connection)
# Default:
# TLSAccept=unencrypted

پیوندهای ورودی را برای پشتیبانی از کلیدهای از پیش اشتراکی با استفاده از TLSAccept = و اضافه کردن psk پیکربندی کنید:
/etc/zabbix/zabbix_agentd.conf

TLSAccept=psk

سپس ، بخش TLSPSKIdentity را پیدا کنید ، که اینگونه به نظر می رسد:
/etc/zabbix/zabbix_agentd.conf

### Option: TLSPSKIdentity
# Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKIdentity=

با باطل کردن TLSPSKIdentity = و اضافه کردن کد هایلایت شده ، یک نام منحصر به فرد برای شناسایی کلید از پیش اشتراک گذاری خود انتخاب کنید:
/etc/zabbix/zabbix_agentd.conf

TLSPSKIdentity=PSK 001

هنگامی که میزبان خود را از طریق رابط وب Zabbix اضافه می کنید ، از این به عنوان شناسه PSK استفاده خواهید کرد.
سپس گزینه ای را انتخاب کنید که به کلید پیش اشتراک شده قبلی شما اشاره دارد. گزینه TLSPSKFile را بیابید:
/etc/zabbix/zabbix_agentd.conf

### Option: TLSPSKFile
# Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKFile=

TLSPSKFile = را حذف کنید و این متن را اضافه کنید تا عامل Zabbix را به فایل PSK که ایجاد کردید، معرفی کند:
/etc/zabbix/zabbix_agentd.conf

TLSPSKFile=/etc/zabbix/zabbix_agentd.psk

فایل را ذخیره کنید و ببندید. اکنون می توانید عامل Zabbix را شروع کرده و آن را به گونه ای تنظیم کنید که در زمان بوت شروع شود:
⦁ $ sudo systemctl start zabbix-agent

⦁ $ sudo systemctl enable zabbix-agent

برای محاسبات دقیق ، بررسی کنید که عامل Zabbix به درستی اجرا شده است:
⦁ $ sudo systemctl status zabbix-agent

وضعیت زیر را مشاهده خواهید کرد ، نشان می دهد عامل در حال اجرا است:
Output
● zabbix-agent.service – Zabbix Agent
Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2019-05-03 06:25:06 UTC; 28s ago

عامل برای پیگیری اتصالات از 

سرور مجازی، پورت 10050 را شنود می کند. به منظور پیکربندی دسترسی از آدرس های IP خاص یا زیر شبکه ها ، از قابلیت rich rule در firewalld استفاده کنید:
⦁ $ sudo firewall-cmd –permanent –zone=public –add-rich-rule=’rule family=”ipv4″ source address=”zabbix_server_ip_address/32″ port protocol=”tcp” port=”10050″ accept’

rich rule ها به شما امکان می دهند قوانینی پیچیده تر و قابل تنظیم تر firewalld را ایجاد کنید تا کنترل بیشتری بر فایروال خود داشته باشید. در این دستور ، شما یک قاعده اضافه می کنید که ترافیک ipv4 را از مبدأ ، که به عنوان آدرس IP 

سرور مجازی Zabbix تعیین کرده اید ، تا پورت 10050 

سرور مجازی CentOS دوم می پذیرد.
در مرحله بعدی ، Firewalld را دوباره لود کنید تا قانون جدید را فعال کنید:
⦁ $ sudo firewall-cmd –reload

اکنون عامل شما آماده پذیرش اتصالات و ارسال داده به 

سرور مجازی Zabbix است. اما برای استفاده از آن ، باید از طریق کنسول وب 

سرور مجازی به آن پیوند دهید. در مرحله بعد ، پیکربندی را کامل می کنید.
مرحله 6 – اضافه کردن هاست جدید به 

سرور مجازی Zabbix
نصب یک عامل بر روی 

سرور مجازی ی که می خواهید نظارت کنید ، فقط نیمی از روند کار است. هر هاستی که برای نظارت می خواهید نیاز به ثبت در 

سرور مجازی Zabbix دارد، که می توانید این کار را از طریق رابط وب انجام دهید.
با رفتن به آدرس http: // zabbix_server_name / zabbix / وارد رابط وب 

سرور مجازی Zabbix شوید.

هنگامی که وارد سیستم شده اید ، در نوار پیمایش بالا بر روی Configuration و سپس Hosts  کلیک کنید. سپس بر روی دکمه Create host در گوشه سمت راست بالای صفحه کلیک کنید. با این کار صفحه پیکربندی میزبان باز می شود.

نام هاست و آدرس IP را تنظیم کنید تا نام هاست و آدرس IP 

سرور مجازی دوم CentOS شما را منعکس نماید ، سپس هاست را به یک گروه اضافه کنید. می توانید یک گروه موجود ، به عنوان مثال 

سرور مجازی های لینوکس را انتخاب کنید یا گروه خود را ایجاد کنید. هاست می تواند در چند گروه باشد. برای این کار ، نام گروه موجود یا جدید را در قسمت Groups وارد کرده و از لیست پیشنهادی مقدار مورد نظر را انتخاب کنید.
پس از افزودن گروه ، بر روی تب Templates کلیک کنید.

Template OS Linux را در قسمت جستجو تایپ کنید و سپس بلافاصله در زیر نوار جستجو روی add کلیک کنید تا این الگو به هاست اضافه شود.
در مرحله بعد ، به سربرگ Encryption  بروید. PSK  را هم برای اتصال به هاست و هم اتصالات حاصله از هاست انتخاب کنید و برای اتصالات از سوی هاست، No encryption را uncheck کنید. سپس PSK identity  را روی PSK 001 قرار دهید ، که مقدار تنظیم TLSPSKIdentity عامل Zabbix است که قبلاً پیکربندی کرده اید. سپس مقدار PSK را روی کلید تولید شده برای عامل Zabbix تنظیم کنید. این چیزی است که در فایل /etc/zabbix/zabbix_agentd.psk در دستگاه عامل دخیره شده است.

در آخر ، بر روی دکمه Add در پایین فرم کلیک کنید تا میزبان ایجاد شود.
میزبان جدید خود را در این لیست مشاهده خواهید کرد. یک دقیقه صبر کنید و صفحه را مجدد لود کنید تا برچسب های سبز نشان دهند که همه چیز خوب است و اتصال رمزگذاری شده است.

در صورت داشتن 

سرور مجازیهای اضافی که باید نظارت شوند ، به هر هاست وارد شوید ، عامل Zabbix را نصب کنید ، یک PSK تولید کنید ، عامل را پیکربندی کنید و با دنبا کردن همان مراحل برای اضافه کردن اولین هاست ، هاست بعدی را به رابط وب اضافه کنید.

سرور مجازی Zabbix اکنون 

سرور مجازی دوم CentOS شما را تحت نظر دارد. اکنون ، اعلان های ایمیل را تنظیم کنید تا در مورد مشکلات به شما اطلاع داده شود.
مرحله 7 – پیکربندی اعلان های ایمیل
Zabbix به طور خودکار انواع مختلفی از اعلان ها را پشتیبانی می کند: ایمیل ، Jabber ، پیام کوتاه و غیره. همچنین می توانید از روش های اعلان جایگزین مانند Telegram یا Slack نیز استفاده کنید. لیست کامل ادغام ها را می توانید در اینجا مشاهده کنید.
ساده ترین روش ارتباطی ایمیل است و این آموزش اعلان ها را برای این نوع رسانه پیکربندی می کند.
در نوار پیمایش بالا بر روی Administration ، و سپس Media types کلیک کنید. لیست انواع رسانه ها را مشاهده خواهید کرد. روی ایمیل کلیک کنید.
گزینه های SMTP را مطابق تنظیمات ارائه شده توسط سرویس ایمیل خود تنظیم کنید. این آموزش از ویژگی های SMTP Gmail برای تنظیم اعلان های ایمیل استفاده می کند. اگر می خواهید اطلاعات بیشتری درباره این تنظیمات داشته باشید ، به نحوه استفاده از 

سرور مجازی SMTP Google مراجعه کنید.
توجه: اگر از تأیید صحت دو مرحله ای با Gmail استفاده می کنید ، باید یک رمزعبور app برای Zabbix تولید کنید. لازم نیست آن را به خاطر بسپارید ، فقط باید یک بار رمز عبور برنامه را هنگام تنظیم وارد کنید. در مرکز راهنمایی Google دستورالعملهایی درباره نحوه تولید این رمز عبور پیدا خواهید کرد.

همچنین می توانید قالب پیام — html یا متن ساده را انتخاب کنید. در آخر ، بر روی دکمه Update در پایین فرم کلیک کنید تا پارامترهای ایمیل به روز شود.

اکنون یک کاربر جدید ایجاد کنید. در نوار پیمایش بالا روی Administrator و سپس Users کلیک کنید. لیست کاربران را مشاهده خواهید کرد. سپس بر روی دکمه Create user در گوشه سمت راست بالای صفحه کلیک کنید. با این کار صفحه پیکربندی کاربر باز می شود.

نام کاربری جدید را در قسمت Alias ​​وارد کرده و رمزعبور جدیدی تنظیم کنید. در مرحله بعد کاربر را به گروه administrator اضافه کنید. Zabbix administrators را در قسمت Groups تایپ کرده و آن را از لیست پیشنهادی انتخاب کنید.
پس از افزودن گروه ، بر روی تب Media کلیک کرده و روی لینک Add که زیر آن خط کشیده شده کلیک کنید. یک پنجره pop-up مشاهده خواهید کرد.

آدرس ایمیل خود را در قسمت Send to وارد کنید. می توانید بقیه گزینه ها را روی مقادیر پیش فرض بگذارید. برای ارسال ، روی دکمه add در پایین کلیک کنید.
اکنون به سربرگ Permissions  بروید.Zabbix Super Admin را از منوی کشویی نوع کاربر انتخاب کنید.
در آخر ، بر روی دکمه Add در پایین فرم کلیک کنید تا کاربر ایجاد شود.
اکنون باید اعلان ها را فعال کنید. بر روی تب Configuration  و سپس Actions  در نوار پیمایش بالا کلیک کنید. عملکردی از پیش تنظیم شده را مشاهده خواهید کرد ، که وظیفه ارسال اعلان ها به همه ادمین های Zabbix را بر عهده دارد. می توانید تنظیمات را با کلیک روی نام آن بررسی و تغییر دهید. برای اهداف این آموزش از پارامترهای پیش فرض استفاده کنید. برای فعال کردن این عمل ، بر روی لینک قرمز Disabled در ستون Status کلیک کنید.
اکنون آماده دریافت هشدار هستید. در مرحله بعدی ، یک مورد را آزمایش می کنید تا تنظیم اعلان خود بررسی نمایید.
مرحله 8 – ایجاد هشدار آزمایشی
در این مرحله ، برای اطمینان از اتصال همه موارد ، یک هشدار تست تولید می کنید. به طور پیش فرض ، Zabbix مقدار فضای دیسک خالی روی 

سرور مجازی شما را پیگیری می کند. به طور خودکار تمام دیسک های قرار داده شده را شناسایی میکند و بررسی های مربوطه را اضافه می کند. این شناسایی هر ساعت اجرا می شود ، بنابراین باید مدت زمانی صبر کنید تا اعلان شروع شود.
یک فایل موقت ایجاد کنید که به اندازه کافی بزرگ باشد تا هشدار استفاده از سیستم فایل Zabbix را فعال کند. برای این کار ، اگر هنوز به سیستم متصل نشده اید ، به 

سرور مجازی CentOS دوم خود وارد شوید.
⦁ $ ssh sammy@second_centos_server_ip_address

در مرحله بعد مشخص کنید که چه مقدار فضای خالی روی 

سرور مجازی دارید. برای فهمیدن می توانید از دستور df استفاده کنید:
⦁ $ df -h

دستور df میزان استفاده از فضای دیستم فایل شما را گزارش می کند ، و -h باعث می شود که خروجی قابل خواندن باشد. خروجی مانند زیر را مشاهده خواهید کرد:
Output
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 958M 25G 4% /
در این حالت فضای آزاد 25 گیگابایت است. فضای آزاد شما ممکن است متفاوت باشد.
از دستور fallocate استفاده کنید ، که به شما امکان می دهد فضای اختصاصی را به یک فایل اختصاص بدهید یا ندهید، تا فایلی ایجاد کنید که بیش از 80٪ فضای موجود دیسک را داشته باشد. این کار برای ایجاد هشدار کافی خواهد بود:
⦁ $ fallocate -l 20G /tmp/temp.img

Zabbix پس از گذشت حدود یک ساعت ، هشداری در مورد میزان فضای خالی دیسک ارائه می کند و عملی را که پیکربندی کرده اید ، اجرا می کند که پیامی را ارسال خواهد کرد. می توانید صندوق ورودی خود را برای دریافت پیام از 

سرور مجازی Zabbix بررسی کنید. پیامی مانند خواهید دید:
Problem started at 10:49:25 on 2019.05.03
Problem name: Free disk space is less than 20% on volume /
Host: Second Centos Server
Severity: Warning

Original problem ID: 34

همچنین می توانید برای مشاهده اطلاعیه و جزئیات آن به سربرگ Monitoring و سپس Dashboard حرکت کنید.

اکنون که می دانید هشدارها کار می کنند ، فایل موقت ایجاد شده را حذف کنید تا بتوانید فضای دیسک خود را دوباره پس بگیرید:
⦁ $ rm -f /tmp/temp.img

پس از یک دقیقه Zabbix پیام بازیابی را ارسال می کند و هشدار از داشبورد اصلی ناپدید می شود.
نتیجه
در این آموزش یک راه حل ساده و ایمن برای نظارت تنظیم کرده اید که به شما در نظارت بر وضعیت 

سرور مجازی های خود کمک می کند. اکنون می تواند مشکلات را به شما هشدار دهد ، و شما این فرصت را دارید که فرآیندهای رخ داده در زیرساخت IT خود را تجزیه و تحلیل کنید.
برای کسب اطلاعات بیشتر درباره راه اندازی زیرساخت های نظارت ، نحوه نصب Elasticsearch ، Logstash و Kibana (Elastic Stack) را در CentOS 7 و نحوه جمع آوری معیارهای زیرساخت با Metricbeat در CentOS 7 را بررسی کنید.

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

استفاده از nsh برای دستورات از راه دور اوبونتو 18 –  

میزبانی وب سایت با Caddy اوبونتو 18

تنظیم سرور ذخیره سازی آبجکت با استفاده از Minio در اوبونتو 18  –  

ضبط و اشتراک گذاری ترمینال با Terminalizer اوبونتو

تنظیم مسیریابی شرطی و پاسخگو با React Router v4  –  

ایجاد یک URL کوتاه کننده با Django و GraphQL

یک برنامه ردیابی سلامت را با React ،GraphQL و Okta –  

ساخت برنامه چت زمان حقیقی React و GraphQL

به روزرسانی فیلترهای مرتب سازی Angular (زاویه ای) –  

با استفاده از React ، Superagent و API اینستاگرام

نحوه ساختن یک برنامه جهانی با Nuxt.js و Django –  

دکمه دانلود با ریزتعاملات با CSS ، anime.js و segment.js

نحوه اضافه کردن عکسهای پیشرفته در Node و Express  –  

با Vue ،GraphQL و Apollo Client یک وبلاگ ساخت

یک برنامه SSR با روتر Preact ، Unistore و Preact بسازید  –  

ساخت برنامه های وب پیشرونده با Angular

اشکال زدایی JavaScript در تولید با نقشه های منبع  –  

می توان با Koa برنامه سلام جهانی” ساخت

ساختن یک برنامه با Node ، React ، Okta  –   

مدیریت حالت فرم در React با Redux Form

نحوه تنظیم Laravel ، Nginx و MySQL  –  

ارتقاء از AngularJS به Angular با ngUpgrade

استفاده از ویژوال استودیو از راه دور  –  

احراز هویت API با JSON Web Tokens و Passport

راه اندازی یک پروژه React با Parcel  –  

ایجاد Swiper مانند Netflix را در Vue

ساختن یک ربات تلگرام با Laravel و BotMan  –  

استفاده از map، filter، و reduce در جاوااسکریپت

چگونه می توان موتور جستجوی زمان واقعی را با Vue  –  

ساختن سیستم مستندات (Documentation) با Vue و VuePress

استفاده از اشتراک زنده با کد ویژوال استودیو  –  

ساخت یک مقیاس اندازه گیری قدرت رمز عبور را در React

شروع عملی GraphQL با Node.js و Express  –  

ساخت یک برنامه آب و هوا در Django

نحوه نصب Discourse روی Ubuntu 18  –  

تأیید رمز عبور با استفاده از درخواست فرم Laravel

نحوه نصب MySQL در CentOS 8  –  

استفاده از پسوند PDO PHP برای انجام تراکنش MySQL

نصب و پیکربندی SNMP Daemon و Client در Ubuntu 18  –  

نصب Linux، Nginx، MariaDB،PHP در Debian 10

 

 

کلمات کلیدی خرید سرور

خرید vps – 

خرید سرور مجازی – 

خرید سرور – 

سرور هلند – 

فروش vps – 

سرور مجازی آمریکا – 

خریدvps – 

سرور مجازی هلند – 

فروش سرور مجازی – 

سرور آمریکا – 

vps – 

سرور مجازی انگلیس – 

سرور مجازی آلمان – 

سرور مجازی کانادا – 

خرید vps آمریکا – 

خرید وی پی اس – 

سرور – 

خرید سرور مجازی هلند – 

vps خرید – 

سرور مجازی فرانسه – 

سرور مجازی هلند – 

خرید vps آمریکا – 

خرید سرور مجازی ارزان هلند – 

vps – 

خرید vps هلند – 

خرید سرور مجازی آمریکا – 

خرید vps فرانسه – 

تست vps – 

سرور مجازی تست – 

سرور مجازی ویندوز – 

ارزانترین vps – 

خرید وی پی اس – 

vps ارزان – 

 

 

برچسب‌ها:,


یک 

سرور مجازی وب Apache با میزبان های مجازی روی 

سرور مجازی CentOS 7 خود نصب خواهید کرد.
پیش نیازها
برای تکمیل این راهنما به موارد زیر نیاز دارید:
• کاربر غیر ریشه ای با امتیازات sudo که با دنبال کردن راهنمای اولیه تنظیم 

سرور مجازی برای CentOS 7 بر روی 

سرور مجازی شما پیکربندی شده باشد.
•یک فایروال پایه که با دنبال کردن مراحل اضافی توصیه شده برای 

سرور مجازی های جدید CentOS 7 ، پیکربندی شده است.
مرحله 1 – نصب Apache
Apache در مخازن پیش فرض نرم افزار CentOS موجود است ، به این معنی که می توانید آن را با مدیر بسته yum نصب کنید.
وقتی که کاربر sudo غیر ریشه در پیش شرط ها پیکربندی شد، فهرست بسته محلی httpd Apache را به روز کنید تا آخرین تغییرات بالادست را منعکس کند:
⦁ $ sudo yum update httpd

پس از به روزرسانی بسته ها ، بسته Apache را نصب کنید:
⦁ $ sudo yum install httpd

پس از تأیید نصب ، yum ، Apache و تمام متعلقات لازم را نصب می کند.
اگر راهنمای مراحل توصیخ شده اضافی را برای 

سرور مجازی های جدید CentOS 7 که در بخش پیش نیازها ذکر شد، تکمیل کرده باشید ، فایروال را روی 

سرور مجازی خود نصب کرده اید و باید پورت 80 را باز کنید تا به Apache امکان ارائه درخواست از طریق HTTP را بدهد. اگر قبلاً این کار را نکرده اید ، می توانید با فعال کردن سرویس http firewalld با دستور زیر این کار را انجام دهید:
⦁ $ sudo firewall-cmd –permanent –add-service=http

اگر قصد دارید Apache را برای ارائه محتوا از طریق HTTPS پیکربندی کنید ، بهتر است با فعال کردن سرویس https ، پورت 443 را نیز باز کنید:
⦁ $ sudo firewall-cmd –permanent –add-service=https

در مرحله بعد ، فایروال را مجدد لود کنید تا این قوانین جدید به مرحله اجرا در بیایند:
⦁ $ sudo firewall-cmd –reload

پس از لود مجدد فایروال ، شما آماده شروع سرویس و بررسی 

سرور مجازی وب هستید.
مرحله 2 – بررسی 

سرور مجازی وب خود
Apache پس از اتمام نصب به طور خودکار در CentOS شروع نمی شود. شما باید فرایند Apache را بصورت دستی شروع کنید:
⦁ $ sudo systemctl start httpd

با دستور زیر تأیید کنید که این سرویس در حال اجرا است:
⦁ $ sudo systemctl status httpd

هنگام اجرای سرویس وضعیت فعال را مشاهده خواهید کرد:
Output
Redirecting to /bin/systemctl status httpd.service
● httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2019-02-20 01:29:08 UTC; 5s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 1290 (httpd)
Status: Processing requests…”
CGroup: /system.slice/httpd.service
├─1290 /usr/sbin/httpd -DFOREGROUND
├─1291 /usr/sbin/httpd -DFOREGROUND
├─1292 /usr/sbin/httpd -DFOREGROUND
├─1293 /usr/sbin/httpd -DFOREGROUND
├─1294 /usr/sbin/httpd -DFOREGROUND
└─1295 /usr/sbin/httpd -DFOREGROUND

همانطور که از این خروجی می بینید ، به نظر می رسد این سرویس با موفقیت شروع شده است. با این حال ، بهترین راه برای آزمایش ، درخواست یک صفحه از Apache است.
برای تأیید صحت اجرای نرم افزار از طریق آدرس IP خود ، می توانید به صفحه فرود پیش فرض Apache دسترسی پیدا کنید. اگر آدرس IP 

سرور مجازی خود را نمی دانید ، می توانید آن را چند راه مختلف از خط فرمان دریافت کنید.
این دستور را در اعلان فرمان 

سرور مجازی خود تایپ کنید:
⦁ $ hostname -I

این دستور همه آدرس های شبکه میزبان را نشان می دهد ، بنابراین چند آدرس IP که با فاصله جدا شده اند را دریافت خواهید کرد. می توانید هرکدام را در مرورگر وب خود امتحان کنید تا ببینید که آیا کار می کنند.
از طرف دیگر ، می توانید از Curl برای درخواست IP خود از icanhazip.com استفاده کنید ، که آدرس IPv4 عمومی شما را به عنوان مکان دیگری در اینترنت مشاهده می کند:
⦁ $ curl -4 icanhazip.com

هنگامی که آدرس IP 

سرور مجازی خود را دارید ، آن را در نوار آدرس مرورگر خود وارد کنید:
http://your_server_ip
صفحه پیش فرض CentOS 7 Apache را مشاهده خواهید کرد:

این صفحه نشان می دهد که Apache درست کار می کند. این برنامه همچنین شامل برخی از اطلاعات اولیه در مورد فایل های مهم Apache و مکان های فهرست بندی است. اکنون که سرویس نصب و راه اندازی شده است ، می توانید از دستورات مختلف systemctl برای مدیریت سرویس استفاده کنید.
مرحله 3 – مدیریت فرایند Apache
اکنون که 

سرور مجازی وب شما فعال و در حال کار است ، اجازه دهید برخی از دستورات مدیریت اصلی را مرور کنیم.
برای متوقف کردن 

سرور مجازی وب خود ، تایپ کنید:
⦁ $ sudo systemctl stop httpd

برای شروع 

سرور مجازی وب پس از متوقف کردن ، تایپ کنید:
⦁ $ sudo systemctl start httpd

برای متوقف کردن و شروع مجدد سرویس ، تایپ کنید:
⦁ $ sudo systemctl restart httpd

اگر به سادگی تغییرات پیکربندی را انجام می دهید ، Apache اغلب می تواند بدون افت اتصالات مجدد لود شود. برای انجام این کار ، از این دستور استفاده کنید:
⦁ $ sudo systemctl reload httpd

به طور پیش فرض ، Apache به گونه ای تنظیم می شود که به طور خودکار شروع به کار کند. اگر این چیزی نیست که شما می خواهید ، با تایپ کردن دستور زیر این رفتار را غیرفعال کنید:
⦁ $ sudo systemctl disable httpd

برای فعال کردن مجدد سرویس در هنگام بوت شدن ، این دستور را تایپ کنید:
⦁ $ sudo systemctl enable httpd

با دوباره بوت شدن 

سرور مجازی ، Apache به طور خودکار شروع می شود.
پیکربندی پیش فرض برای Apache به 

سرور مجازی شما امکان میزبانی وب سایت واحد را می دهد. اگر قصد دارید میزبان چندین دامنه در 

سرور مجازی خود باشید ، باید هاست های مجازی را در 

سرور مجازی وب Apache خود پیکربندی کنید.
مرحله 4 – تنظیم هاست های مجازی (توصیه می شود)
هنگام استفاده از وب 

سرور مجازی Apache ، می توانید از هاست های مجازی (مشابه بلوک های 

سرور مجازی در Nginx) برای محصور کردن جزئیات پیکربندی و میزبانی بیش از یک دامنه از یک 

سرور مجازی واحد استفاده کنید. در این مرحله دامنه ای به نام example.com را تنظیم می کنید ، اما باید این را با نام دامنه خود جایگزین کنید. برای کسب اطلاعات بیشتر در مورد تنظیم نام دامنه با 

vpsgol ، به مقدمه ما در 

vpsgol DNS مراجعه کنید.
Apache در CentOS 7 دارای یک بلوک 

سرور مجازی است که بصورت پیش فرض فعال شده است تا برای ارائه اسناد از دیرکتوری / var / www / html پیکربندی شود. اگرچه برای یک سایت واحد به خوبی کار می کند ، اما اگر میزبان چندین سایت باشید ، می تواند مشکل ساز شود. به جای تغییر / var / www / html ، یک ساختار دایرکتوری را در / var / www برای سایت example.com ایجاد می کنید ، در صورت عدم تطابق درخواست کلاینت با هیچ یک از سایت های دیگر، / var / www / html را به عنوان دایرکتوری پیش فرض قرار میدهید.
دایرکتوری html را برای example.com به شرح زیر بسازید ، از پرچم -p برای ایجاد دیرکتوری های لازم استفاده کنید:
⦁ $ sudo mkdir -p /var/www/example.com/html

دایرکتوری دیگری را برای ذخیره فایل های ورود به سایت ایجاد کنید:
⦁ $ sudo mkdir -p /var/www/example.com/log

سپس ، مالکیت دایرکتوری html را به متغیر محیطی $USER اختصاص دهید:
⦁ $ sudo chown -R $USER:$USER /var/www/example.com/html

اطمینان حاصل کنید که ریشه وب شما دارای مجوزهای پیش فرض است:
⦁ $ sudo chmod -R 755 /var/www

سپس ، با استفاده از vi یا ویرایشگر مورد علاقه خود ، صفحه index.html نمونه را ایجاد کنید:
⦁ $ sudo vi /var/www/example.com/html/index.html

i را فشار دهید تا به حالت INSERT بروید و نمونه HTML زیر را به فایل اضافه کنید:
/var/www/example.com/html/index.html
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com virtual host is working!</h1>
</body>
</html>

با فشردن ESC ، تایپ: wq و فشار دادن ENTER فایل را ذخیره کنید و ببندید.
با قرارگیری دایرکتوری سایت و فایل درج شده نمونه در جای خود، تقریباً آماده ساختن فایل های هاست مجازی هستید. فایلهای هاست مجازی پیکربندی سایتهای جداگانه شما را مشخص می کنند و به 

سرور مجازی وب Apache نشان می دهند که چگونه به درخواستهای دامنه مختلف پاسخ دهد.
قبل از ایجاد هاست مجازی ، باید یک دیرکتوری sites-available ایجاد کنید تا آنها را ذخیره کنید. همچنین دایرکتوری sites-enabled را ایجاد خواهید کرد که به Apache می گوید یک هاست مجازی آماده خدمت به بازدید کنندگان است. دایرکتوری sites-enabled پیوندهای سمبولیکی را برای هاست های مجازی که می خواهیم منتشر کنیم ، نگه می دارد. هر دو دیرکتوری را با دستور زیر ایجاد کنید:
⦁ $ sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

در مرحله بعد ، به Apache می گویید که در دایرکتوری sites-enabled به دنبال هاست های مجازی باشد. برای انجام این کار ، فایل پیکربندی اصلی Apache را ویرایش کنید و خطی را اضافه کنید که یک دیرکتوری اختیاری برای فایل های پیکربندی اضافی را اعلام می کند:
⦁ $ sudo vi /etc/httpd/conf/httpd.conf

این خط را به انتهای فایل اضافه کنید:
IncludeOptional sites-enabled/*.conf

پس از اتمام افزودن آن خط ، فایل را ذخیره کنید و ببندید. اکنون که دایرکتوری های هاست مجازی خود را در اختیار دارید ، فایل هاست مجازی خود را ایجاد خواهید کرد.
با ایجاد یک فایل جدید در دیرکتوری sites-available شروع کنید:
⦁ $ sudo vi /etc/httpd/sites-available/example.com.conf

بلوک پیکربندی زیر را اضافه کنید ، و دامنه example.com را به نام دامنه خود تغییر دهید:
/etc/httpd/sites-available/example.com.conf
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/html
ErrorLog /var/www/example.com/log/error.log
CustomLog /var/www/example.com/log/requests.log combined
</VirtualHost>

این کار به Apache می گوید که کجا مستقیماً ریشه ای را که اسناد وب در دسترس را نگه می دارد ، پیدا کند. همچنین به Apache می گوید خطا و ورود های درخواست مربوط به این سایت خاص را کجا ذخیره کند.
پس از اتمام فایل را ذخیره کنید و ببندید.
اکنون که فایلهای هاست مجازی را ایجاد کرده اید ، آنها را فعال خواهید کرد تا Apache بداند که می تواند آنها را در اختیار بازدید کنندگان قرار دهد. برای انجام این کار ، برای هر هاست مجازی در دیرکتوری sites-enabled ، یک لینک نمادین ایجاد کنید:
⦁ $ sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

میزبان مجازی شما اکنون پیکربندی شده و آماده ارائه مطالب است. قبل از راه اندازی مجدد سرویس Apache ، مطمئن شوید که SELinux رویکرد های صحیحی را برای هاست های مجازی شما اعمال کرده است.
مرحله 5 – تنظیم مجوزهای SELinux برای هاست های مجازی (توصیه می شود)
SELinux به گونه ای پیکربندی شده است تا با پیکربندی پیش فرض Apache کار کند. از آنجا که دایرکتوری ورود به سیستم سفارشی را در فایل پیکربندی هاست مجازی تنظیم کرده اید ، در صورت تلاش برای شروع سرویس Apache ، خطایی دریافت خواهید کرد. برای رفع این مشکل ، باید رویکردهای SELinux را به روز کنید تا Apache بتواند در فایل های لازم بنویسد. SELinux باعث افزایش امنیت در محیط CentOS 7 شما می شود ، بنابراین توصیه نمی شود که ماژول هسته را به طور کامل غیرفعال کنید.
روش های مختلفی برای تنظیم رویکردها بر اساس نیاز محیط شما وجود دارد ، زیرا SELinux به شما امکان می دهد سطح امنیتی خود را شخصی سازی کنید. این مرحله شامل دو روش تنظیم خط مشی Apache خواهد بود: جهانی و در یک دیرکتوری خاص. تنظیم رویکرد در دایرکتوری ها ایمن تر است ، و بنابراین رویکرد توصیه شده است.
تنظیم رویکردهای Apache به صورت جهانی
تنظیم رویکرد Apache به صورت جهانی به SELinux می گوید که با استفاده از دوبایتی httpd_unified ، با تمام مراحل Apache را به طور یکسان رفتار کند. اگرچه این رویکرد راحت تر است ، اما کنترل مشابه با رویکردی که روی یک فایل یا دیرکتوری تمرکز دارد را به شما نمی دهد.
دستور زیر را برای تنظیم رویکرد جهانی Apache اجرا کنید:
⦁ $ sudo setsebool -P httpd_unified 1

دستور setsebool مقادیر بولی SELinux را تغییر می دهد. پرچم -P مقدار زمان بوت را به روز می کند ، و این تغییر در ریبوت ادامه می یابد. httpd_unified مقدار بولی است که به SELinux می گوید با تمام مراحل Apache به یک نوع رفتار کند ، بنابراین شما آن را با مقدار 1 فعال می کنید.
تنظیم رویکردهای Apache در یک دایرکتوری
تنظیم مجوزهای SELinux به صورت جداگانه برای دیرکتوری /var/www/example.com/log به شما امکان کنترل بیشتر روی رویکرد های Apache را می دهد ، اما ممکن است به نگهداری بیشتری نیز نیاز داشته باشد. از آنجا که این گزینه رویکرد های تنظیم جهانی نیست ، لازم است به طور دستی نوع متن را برای هر دیرکتوری جدید وارد کنید که در تنظیمات هاست مجازی شما مشخص شده است.
ابتدا نوع محتوایی را که SELinux به دیرکتوری /var/www/example.com/log داده است بررسی کنید:
⦁ $ sudo ls -dZ /var/www/example.com/log/

این دستور محتوای SELinux دیرکتوری را لیست و چاپ می کند. خروجی مشابه زیر را مشاهده خواهید کرد:
Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/log/

محتوای فعلی httpd_sys_content_t است ، که به SELinux می گوید فرآیند Apache فقط می تواند فایل های ایجاد شده در این دیرکتوری را بخواند. در این آموزش ، نوع متن دیرکتوری /var/www/example.com/log را به آدرس httpd_log_t تغییر می دهید که به Apache امکان می دهد فایل های ورود به سیستم برنامه وب را تولید و پیوست کند:
⦁ $ sudo semanage fcontext -a -t httpd_log_t /var/www/example.com/log(/.*)?”

در مرحله بعدی ، از دستور restorecon برای اعمال این تغییرات استفاده کنید و آنها را در ریبوت ادامه دهید:
⦁ $ sudo restorecon -R -v /var/www/example.com/log

پرچم -R این دستور را به صورت بازگشتی اجرا می کند ، به این معنی که هر فایل موجود را برای استفاده از متن جدید به روز می کند. پرچم -v تغییرات محتوایی را که فرمان انجام داده را چاپ می کند. خروجی زیر را مشاهده می کنید که تغییرات را تأیید میکند:
Output
restorecon reset /var/www/example.com/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0

برای دیدن تغییرات می توانید یک بار دیگر محتوا را فهرست کنید:
⦁ $ sudo ls -dZ /var/www/example.com/log/

خروجی نوع متن به روز شده را منعکس می کند:
Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log

اکنون که دیرکتوری /var/www/example.com/log از نوع httpd_log_t استفاده می کند ، آماده آزمایش پیکربندی هاست مجازی خود هستید.
مرحله 6 – آزمایش هاست مجازی (توصیه می شود)
پس از به روزرسانی متن SELinux با هر روش ، Apache می تواند به روی دیرکتوری /var/www/example.com/log بنویسد. اکنون می توانید سرویس Apache را با موفقیت مجدداً راه اندازی کنید:
⦁ $ sudo systemctl restart httpd

محتویات دیرکتوری /var/www/example.com/log را فهرست کنید تا ببینید آیا Apache فایلهای ورود را ایجاد کرده است:
⦁ $ ls -lZ /var/www/example.com/log

خواهید دید که Apache قادر به ایجاد فایل های error.log و requests.log مشخص شده در پیکربندی هاست مجازی است:
Output
-rw-r–r–. 1 root root 0 Feb 26 22:54 error.log
-rw-r–r–. 1 root root 0 Feb 26 22:54 requests.log

اکنون که هاست مجازی خود را تنظیم کرده و مجوزهای SELinux را به روز کرده اید ، Apache اکنون نام دامنه شما را ارائه می دهد. می توانید با رفتن به http://example.com ، جایی که باید چیزی شبیه به این را مشاهده کنید ، این کار را آزمایش کنید:

این امر تأیید می کند که هاست مجازی شما با موفقیت پیکربندی شده و محتوا را ارائه میکند. مراحل 4 و 5 را تکرار کنید تا هاست مجازی جدیدی با مجوز SELinux برای دامنه های بعدی ایجاد کنید.
نتیجه
در این آموزش وب 

سرور مجازی Apache را نصب و مدیریت کرده اید. اکنون که 

سرور مجازی وب خود را نصب کرده اید ، برای نوع محتوایی که می توانید ارائه کنید و فناوری هایی که می توانید برای ایجاد یک تجربه غنی تر استفاده نمایید ، گزینه های بسیاری را خواهید داشت.
اگر می خواهید یک برنامه کاربردی کامل تر ایجاد کنید ، می توانید مقاله نحوه پیکربندی پشته LAMP در CentOS 7 را مطالعه کنید.

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

استفاده از nsh برای دستورات از راه دور اوبونتو 18 –  

میزبانی وب سایت با Caddy اوبونتو 18

تنظیم سرور ذخیره سازی آبجکت با استفاده از Minio در اوبونتو 18  –  

ضبط و اشتراک گذاری ترمینال با Terminalizer اوبونتو

تنظیم مسیریابی شرطی و پاسخگو با React Router v4  –  

ایجاد یک URL کوتاه کننده با Django و GraphQL

یک برنامه ردیابی سلامت را با React ،GraphQL و Okta –  

ساخت برنامه چت زمان حقیقی React و GraphQL

به روزرسانی فیلترهای مرتب سازی Angular (زاویه ای) –  

با استفاده از React ، Superagent و API اینستاگرام

نحوه ساختن یک برنامه جهانی با Nuxt.js و Django –  

دکمه دانلود با ریزتعاملات با CSS ، anime.js و segment.js

نحوه اضافه کردن عکسهای پیشرفته در Node و Express  –  

با Vue ،GraphQL و Apollo Client یک وبلاگ ساخت

یک برنامه SSR با روتر Preact ، Unistore و Preact بسازید  –  

ساخت برنامه های وب پیشرونده با Angular

اشکال زدایی JavaScript در تولید با نقشه های منبع  –  

می توان با Koa برنامه سلام جهانی” ساخت

ساختن یک برنامه با Node ، React ، Okta  –   

مدیریت حالت فرم در React با Redux Form

نحوه تنظیم Laravel ، Nginx و MySQL  –  

ارتقاء از AngularJS به Angular با ngUpgrade

استفاده از ویژوال استودیو از راه دور  –  

احراز هویت API با JSON Web Tokens و Passport

راه اندازی یک پروژه React با Parcel  –  

ایجاد Swiper مانند Netflix را در Vue

ساختن یک ربات تلگرام با Laravel و BotMan  –  

استفاده از map، filter، و reduce در جاوااسکریپت

چگونه می توان موتور جستجوی زمان واقعی را با Vue  –  

ساختن سیستم مستندات (Documentation) با Vue و VuePress

استفاده از اشتراک زنده با کد ویژوال استودیو  –  

ساخت یک مقیاس اندازه گیری قدرت رمز عبور را در React

شروع عملی GraphQL با Node.js و Express  –  

ساخت یک برنامه آب و هوا در Django

نحوه نصب Discourse روی Ubuntu 18  –  

تأیید رمز عبور با استفاده از درخواست فرم Laravel

نحوه نصب MySQL در CentOS 8  –  

استفاده از پسوند PDO PHP برای انجام تراکنش MySQL

نصب و پیکربندی SNMP Daemon و Client در Ubuntu 18  –  

نصب Linux، Nginx، MariaDB،PHP در Debian 10

 

 

کلمات کلیدی خرید سرور

خرید vps – 

خرید سرور مجازی – 

خرید سرور – 

سرور هلند – 

فروش vps – 

سرور مجازی آمریکا – 

خریدvps – 

سرور مجازی هلند – 

فروش سرور مجازی – 

سرور آمریکا – 

vps – 

سرور مجازی انگلیس – 

سرور مجازی آلمان – 

سرور مجازی کانادا – 

خرید vps آمریکا – 

خرید وی پی اس – 

سرور – 

خرید سرور مجازی هلند – 

vps خرید – 

سرور مجازی فرانسه – 

سرور مجازی هلند – 

خرید vps آمریکا – 

خرید سرور مجازی ارزان هلند – 

vps – 

خرید vps هلند – 

خرید سرور مجازی آمریکا – 

خرید vps فرانسه – 

تست vps – 

سرور مجازی تست – 

سرور مجازی ویندوز – 

ارزانترین vps – 

خرید وی پی اس – 

vps ارزان – 

 

 

برچسب‌ها:


یک نرم افزار مانیتورینگ منبع باز برای شبکه ها و برنامه ها است. این برنامه نظارت بر هزاران معیار (metricها) جمع آوری شده از 

سرور مجازی ها ، ماشین های مجازی ، دستگاه های شبکه و برنامه های وب را در زمان واقعی ارائه می دهد. این معیارها به شما کمک می کند تا سلامت فعلی زیرساخت IT خود را تعیین کنید و قبل از شکایت مشتریان مشکلات سخت افزار یا اجزای نرم افزاری را تشخیص دهید. اطلاعات مفید در یک پایگاه داده ذخیره می شود ، بنابراین می توانید داده ها را با گذشت زمان تجزیه و تحلیل کرده و کیفیت خدمات ارائه شده را بهبود بخشید ، یا برای ارتقاء برنامه های خود تصمیم گیری کنید.
Zabbix از گزینه های مختلفی برای جمع آوری معیارها استفاده می کند ، از جمله آن می توان به نظارت بدون عامل بر خدمات کاربر و معماری کلاینت-

سرور مجازی اشاره کرد. برای جمع آوری متریک 

سرور مجازی ، از یک عامل کوچک در سرویس گیرنده تحت نظارت برای جمع آوری داده ها و ارسال آن به 

سرور مجازی Zabbix استفاده می کند. Zabbix از ارتباط رمزگذاری شده بین 

سرور مجازی و کلاینت های متصل پشتیبانی می کند ، بنابراین هنگام گذر از شبکه های ناایمن ، از داده های شما محافظت می شود.

سرور مجازی Zabbix داده های خود را در یک پایگاه داده رابطه ای ایجاد می کند که توسط MySQL ، PostgreSQL یا Oracle تهیه می شود. همچنین می توانید داده های تاریخی را در پایگاه های داده nosql مانند Elasticsearch و TimescaleDB ذخیره کنید. Zabbix یک رابط وب فراهم می کند تا بتوانید داده ها را مشاهده کرده و تنظیمات سیستم را پیکربندی کنید.
در این آموزش دو ماشین پیکربندی خواهید کرد. یکی به عنوان 

سرور مجازی پیکربندی می شود و دیگری به عنوان کلاینت که بر آن نظارت می کنید. 

سرور مجازی از یک پایگاه داده MySQL برای ضبط داده های مانیتورینگ استفاده می کند و از Apache برای سرویس رابط وب استفاده می شود.
پیش نیازها
برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید:
• دو 

سرور مجازی Ubuntu 18.04 که طبق مقاله نحوه راه اندازی 

سرور مجازی اولیه با Ubuntu 18.04 تنظیم شده باشد ، و شامل یک کاربر غیر ریشه با امتیازات sudo و فایروال پیکربندی شده با ufw باشد. روی یک 

سرور مجازی ، Zabbix را نصب می کنید. این آموزش به این 

سرور مجازی، 

سرور مجازی Zabbix خواهد گفت. در واقع 

سرور مجازی دوم شما را کنترل می کند. به این سرور دوم، سرور دوم Ubuntu 18.04 گفته می شود.
• 

سرور مجازی ی که Zabbix را اجرا میکند، به نصب Apache ، MySQL و PHP نیاز دارد. این لینک را دنبال کنید تا این موارد را روی سرور Zabbix پیکربندی کنید.
علاوه بر این ، از آنجا که شما از 

سرور مجازی Zabbix برای دسترسی به اطلاعات با ارزش در مورد زیرساخت های خود استفاده می کنید که نمی خواهید کاربران غیرمجاز به آنها دسترسی پیدا کنند ، مهم است که با نصب گواهی TLS / SSL ، 

سرور مجازی خود را ایمن نگه دارید. این کار اختیاری است اما به شدت توصیه میشود. برای به دست آوردن گواهینامه رایگان TLS / SSL می توانید راهنمای Let’s Encrypt on Ubuntu 18.04 را دنبال کنید.
مرحله 1 – نصب 

سرور مجازی Zabbix
ابتدا باید Zabbix را روی 

سرور مجازی ی که MySQL ،Apache و PHP را نصب کرده اید ، نصب کنید. به عنوان کاربر غیر ریشه خود به این دستگاه وارد شوید:
⦁ $ ssh sammy@zabbix_server_ip_address

Zabbix در مدیر بسته Ubuntu موجود است ، اما قدیمی است ، بنابراین از مخزن رسمی Zabbix برای نصب آخرین نسخه پایدار استفاده کنید. بسته تنظیمات را دانلود و نصب کنید:
⦁ $ wget https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1+bionic_all.deb

⦁ $ sudo dpkg -i zabbix-release_4.2-1+bionic_all.deb

خروجی زیر را مشاهده خواهید کرد:
Output
Selecting previously unselected package zabbix-release.
(Reading database … 61483 files and directories currently installed.)
Preparing to unpack zabbix-release_4.2-1+bionic_all.deb …
Unpacking zabbix-release (4.2-1+bionicc) …
Setting up zabbix-release (4.2-1+bionicc) …

فهرست بسته را به روز کنید تا مخزن جدید را شامل شود:
⦁ $ sudo apt update

سپس 

سرور مجازی Zabbix و Web Frontend را با پشتیبانی پایگاه داده MySQL نصب کنید:
⦁ $ sudo apt install zabbix-server-mysql zabbix-frontend-php

همچنین ، عامل Zabbix را نصب کنید ، که به شما امکان می دهد اطلاعات مربوط به وضعیت 

سرور مجازی Zabbix را جمع آوری کنید.
⦁ $ sudo apt install zabbix-agent

قبل از استفاده از Zabbix ، باید یک بانک اطلاعاتی را تنظیم کنید تا داده هایی را که 

سرور مجازی Zabbix از عاملین خود جمع آوری خواهد کرد ، نگه دارید. می توانید این کار را در مرحله بعدی انجام دهید.
مرحله 2 – پیکربندی پایگاه داده MySQL برای Zabbix
باید یک پایگاه داده MySQL جدید ایجاد کرده و آن را با برخی از اطلاعات اصلی پر کنید تا برای Zabbix مناسب باشد. همچنین یک کاربر خاص برای این بانک اطلاعات ایجاد خواهید کرد تا Zabbix با حساب ریشه وارد MySQL نشود.
به عنوان کاربر ریشه با استفاده از رمز ریشه که هنگام نصب 

سرور مجازی MySQL تنظیم کرده اید وارد شوید
⦁ $ mysql -uroot -p

پایگاه داده Zabbix را با پشتیبانی کاراکتر UTF-8 ایجاد کنید:
⦁ Mysql> create database zabbix character set utf8 collate utf8_bin;

سپس کاربری ایجاد کنید که 

سرور مجازی Zabbix از آن استفاده کند ، به آن دسترسی به پایگاه داده جدید را بدهید و رمز عبور را برای کاربر تنظیم کنید:
⦁ Mysql> grant all privileges on zabbix.* to zabbix@localhost identified by ‘your_zabbix_mysql_password’;

سپس این مجوزهای جدید را اعمال کنید:
⦁ Mysql>flush privileges;

این امر از کاربر و بانک اطلاعاتی مراقبت میکند. از کنسول پایگاه داده خارج شوید:
⦁ Mysql>quit;

در مرحله بعد ، طرح و داده های اولیه را وارد کنید. نصب Zabbix فایلی را در اختیارتان قرار می دهد.
برای تنظیم شماتیک و وارد کردن داده ها به پایگاه داده zabbix ، دستور زیر را اجرا کنید. ازzcat  استفاده کنید چرا که اطلاعات موجود در فایل ، فشرده است.
⦁ $ zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

رمزعبور را برای کاربر zabbix MySQL که هنگام درخواست از شما پیکربندی کردید وارد نمایید.
در صورت موفقیت، این فرمان خطایی به همراه نخواهد داشت. اگر خطای ERROR 1045 (28000): Access denied for userzabbix@’localhost’ (using password: YES) را مشاهده کردید ، مطمئن شوید که از رمز عبور برای کاربر zabbix استفاده کرده اید و نه کاربر root.
به منظور استفاده 

سرور مجازی Zabbix از این پایگاه داده ، باید گذرواژه پایگاه داده را در فایل پیکربندی 

سرور مجازی Zabbix تنظیم کنید. فایل پیکربندی را در ویرایشگر متن مورد نظر خود باز کنید. این آموزش از nano استفاده می کند:
⦁ $ sudo nano /etc/zabbix/zabbix_server.conf

به دنبال قسمت زیر در فایل باشید:
/etc/zabbix/zabbix_server.conf
### Option: DBPassword
# Database password. Ignored for SQLite.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=
این نظرات در فایل، نحوه اتصال به پایگاه داده را توضیح می دهد. باید مقدار DBPassword را در فایل برای کاربر پایگاه داده خود تنظیم کنید . برای پیکربندی پایگاه داده، این خط را زیر کامنت ها اضافه کنید:
/etc/zabbix/zabbix_server.conf

DBPassword=your_zabbix_mysql_password

اگر از nano استفاده می کنید با فشار دادن CTRL + X و سپس Y و ENTER، zabbix_server.conf را ذخیره کرده و ببندید .
این امر از پیکربندی 

سرور مجازی Zabbix مراقبت میکند. در مرحله بعد ، برای کارکرد صحیح رابط وب Zabbix اصلاحاتی را در تنظیمات PHP ایجاد خواهید کرد.
مرحله 3 – پیکربندیPHP برای Zabbix
رابط وب Zabbix به زبان PHP نوشته شده است و به برخی تنظیمات ویژه 

سرور مجازی PHP احتیاج دارد. مراحل نصب Zabbix یک فایل پیکربندی Apache ایجاد کرد که شامل این تنظیمات است. در دیرکتوری /etc/zabbix قرار دارد و به طور اوتوماتیک توسط Apache لود میشود. شما باید تغییر کوچکی در این فایل ایجاد کنید ، بنابراین آن را با دستور زیر باز کنید:
⦁ $ sudo nano /etc/zabbix/apache.conf

این فایل شامل تنظیمات PHP است که شرایط لازم برای رابط وب Zabbix را برآورده می کند. با این حال ، تنظیم منطقه زمانی به طور پیش فرض باطل می شود. برای اینکه مطمئن شوید Zabbix از زمان صحیح استفاده می کند ، باید منطقه زمانی مناسب را تنظیم کنید.
/etc/zabbix/apache.conf

<IfModule mod_php7.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
# php_value date.timezone Europe/Riga
</IfModule>

خط منطقه زمانی که در بلوک کد قبلی هایلایت شده است را باطل کنید و آن را به منطقه زمانی خود تغییر دهید. می توانید از این لیست از مناطق زمانی پشتیبانی شده استفاده نمایید تا یک لیست مناسب برای خود پیدا کنید. سپس فایل را ذخیره کنید و ببندید.
اکنون Apache را مجدداً راه اندازی کنید تا این تنظیمات جدید اعمال شود:
⦁ $ sudo systemctl restart apache2

اکنون می توانید 

سرور مجازی Zabbix را شروع کنید.
⦁ $ sudo systemctl start zabbix-server

سپس بررسی کنید که آیا 

سرور مجازی Zabbix به درستی کار می کند:
⦁ $ sudo systemctl status zabbix-server

وضعیت زیر را مشاهده خواهید کرد:
Output
● zabbix-server.service – Zabbix Server
Loaded: loaded (/lib/systemd/system/zabbix-server.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2019-04-05 08:50:54 UTC; 3s ago
Process: 16497 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)

سرانجام ، 

سرور مجازی را فعال کنید تا در زمان بوت شروع شود:
⦁ $ sudo systemctl enable zabbix-server

سرور مجازی تنظیم شده و به بانک اطلاعاتی وصل می شود. سپس ، ظاهر وب را تنظیم کنید.
توجه: همانطور که در بخش پیش نیازها ذکر شد ، توصیه می شود SSL / TLS را روی 

سرور مجازی خود فعال کنید. برای بدست آوردن یک گواهینامه رایگان SSL برای Apache در Ubuntu 18.04 می توانید هم اکنون این آموزش را دنبال کنید. پس از اخذ گواهینامه های SSL / TLS می توانید دوباره به این مرحله برگردید و این آموزش را ادامه دهید.

مرحله 4 – پیکربندی تنظیمات رابط وب Zabbix
رابط وب به شما امکان می دهد گزارش ها را مشاهده کنید و میزبان هایی را که می خواهید تحت نظارت قرار دهید اضافه نمایید ، اما قبل از استفاده از آن نیاز به تنظیمات اولیه دارد. مرورگر خود را راه اندازی کنید و به آدرس http: // zabbix_server_name / zabbix / بروید. در صفحه اول یک پیام خوش آمدید مشاهده خواهید کرد. برای ادامه بر روی next step کلیک کنید.
در صفحه بعدی ، جدول را مشاهده خواهید کرد که لیست تمامی پیش نیازهای اجرای Zabbix را نشان می دهد.

همه مقادیر موجود در این جدول باید ok باشد ، بنابراین تأیید کنید که هستند. حتماً تا پایین صفحه رفته و همه پیش نیازها را نگاه کنید. هنگامی که تأیید کردید که همه چیز آماده است ، برای ادامه روی next step کلیک کنید.
صفحه بعدی اطلاعات اتصال داده را می پرسد.

به 

سرور مجازی Zabbix در مورد بانک اطلاعاتی خود آگاهی دادید ، اما رابط وب Zabbix برای مدیریت هاست و خواندن داده نیز به دسترسی به بانک اطلاعاتی احتیاج دارد. بنابراین اعتبارات MySQL را که در مرحله 2 پیکربندی کرده اید وارد کنید و برای ادامه بر روی next step کلیک کنید.
در صفحه بعدی می توانید گزینه ها را روی مقادیر پیش فرض آنها قرار دهید.

name اختیاری است. در صورت داشتن چندین 

سرور مجازی نظارت ، از آن در رابط وب استفاده می شود. برای ادامه بر روی next step کلیک کنید.
صفحه بعدی خلاصه پیش از نصب را نشان می دهد تا بتوانید تأیید کنید که همه چیز صحیح است.

بر روی next step کلیک کنید تا به صفحه نهایی بروید.
ستاپ رابط وب اکنون تکمیل شده است. این فرآیند فایل پیکربندی /usr/share/zabbix/conf/zabbix.conf.php را ایجاد می کند که می توانید در آینده از آنها نسخه پشتیبان تهیه کنید و استفاده کنید. برای رفتن به صفحه ورود ، روی Finish کلیک کنید. کاربر پیش فرض Admin و پسورد zabbix است.
قبل از ورود به سیستم ، عامل Zabbix را در دومین 

سرور مجازی Ubuntu خود تنظیم کنید.
مرحله 5 – نصب و پیکربندی عامل Zabbix
حال باید نرم افزار عامل را تنظیم کنید که داده های مانیتورینگ را به 

سرور مجازی Zabbix ارسال می کند.
وارد 

سرور مجازی Ubuntu دوم شوید:
⦁ $ ssh sammy@second_ubuntu_server_ip_address

سپس ، دقیقاً مانند 

سرور مجازی Zabbix ، دستورات زیر را برای نصب بسته تنظیمات مخزن اجرا کنید:
⦁ $ wget https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1+bionic_all.deb

⦁ $ sudo dpkg -i zabbix-release_4.2-1+bionic_all.deb
سپس ، شاخص بسته را به روز کنید:
⦁ $ sudo apt update

سپس عامل Zabbix را نصب کنید:
⦁ $ sudo apt install zabbix-agent

در حالی که Zabbix از رمزگذاری مبتنی بر گواهی پشتیبانی می کند ، تنظیم مجوز فراتر از محدوده این آموزش است ، اما می توانید از کلیدهای از پیش اشتراکی (PSK) برای برقراری ارتباط بین 

سرور مجازی و کلاینت استفاده کنید.
ابتدا یک PSK ایجاد کنید:
⦁ $ sudo sh -c openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk”

کلید را نشان دهید تا بتوانید آن را در جایی کپی کنید. برای پیکربندی هاست به آن احتیاج خواهید داشت.
⦁ $ cat /etc/zabbix/zabbix_agentd.psk

کلید چیزی شبیه به این خواهد بود:
Output
12eb854dea38ac9ee7d1ded2d74cee6262b0a56710f6946f7913d674ab82cdd4

اکنون تنظیمات عامل Zabbix را ویرایش کنید تا اتصال ایمن آن به 

سرور مجازی Zabbix تنظیم شود. فایل پیکربندی عامل را در ویرایشگر متن خود باز کنید:
⦁ $ sudo nano /etc/zabbix/zabbix_agentd.conf

هر تنظیماتی درون این فایل از طریق کامنت های آگاهی دهنده در سراسر فایل مستند میشود ، اما نیاز به ویرایش برخی از آنها دارید.
ابتدا باید آدرس IP 

سرور مجازی Zabbix را ویرایش کنید. بخش زیر را پیدا کنید:
/etc/zabbix/zabbix_agentd.conf

### Option: Server
# List of comma delimited IP addresses (or hostnames) of Zabbix servers.
# Incoming connections will be accepted only from the hosts listed here.
# If IPv6 support is enabled then ‘127.0.0.1’, ‘::127.0.0.1’, ‘::ffff:127.0.0.1’ are treated equally.
#
# Mandatory: no
# Default:
# Server=

Server=127.0.0.1

مقدار پیش فرض را به IP 

سرور مجازی Zabbix تغییر دهید:
/etc/zabbix/zabbix_agentd.conf

Server=zabbix_server_ip_address

در مرحله بعد ، بخشی را پیدا کنید که اتصال ایمن به 

سرور مجازی Zabbix را پیکربندی کرده و پشتیبانی از پیش اشتراک گذاری شده کلید را فعال کنید. بخش TLSConnect را پیدا کنید ، که اینگونه به نظر می رسد:
/etc/zabbix/zabbix_agentd.conf

### Option: TLSConnect
# How the agent should connect to server or proxy. Used for active checks.
# Only one value can be specified:
# unencrypted – connect without encryption
# psk – connect using TLS and a pre-shared key
# cert – connect using TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for ‘unencrypted’ connection)
# Default:
# TLSConnect=unencrypted

سپس این پیوند را برای پیکربندی پشتیبانی از کلید پیش اشتراکی اضافه کنید:
/etc/zabbix/zabbix_agentd.conf

TLSConnect=psk

سپس ، بخش TLSAccept را پیدا کنید ، که اینگونه خواهد بود :
/etc/zabbix/zabbix_agentd.conf

### Option: TLSAccept
# What incoming connections to accept.
# Multiple values can be specified, separated by comma:
# unencrypted – accept connections without encryption
# psk – accept connections secured with TLS and a pre-shared key
# cert – accept connections secured with TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for ‘unencrypted’ connection)
# Default:
# TLSAccept=unencrypted

با افزودن این خط پیوندهای ورودی را برای پشتیبانی از کلیدهای از پیش اشتراک گذاری پیکربندی کنید:
/etc/zabbix/zabbix_agentd.conf

TLSAccept=psk

سپس بخش TLSPSKIdentity را پیدا کنید که اینگونه خواهد بود:
/etc/zabbix/zabbix_agentd.conf

### Option: TLSPSKIdentity
# Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKIdentity=

با افزودن این خط ، یک نام منحصر به فرد برای شناسایی کلید پیش اشتراکی خود انتخاب کنید:
/etc/zabbix/zabbix_agentd.conf

TLSPSKIdentity=PSK 001

هنگامی که هاست خود را از طریق رابط وب Zabbix اضافه می کنید ، از این به عنوان شناسه PSK استفاده خواهید کرد.
سپس گزینه ای را انتخاب کنید که به کلید پیش اشتراکی قبلی تان اشاره دارد. گزینه TLSPSKFile را بیابید:
/etc/zabbix/zabbix_agentd.conf

### Option: TLSPSKFile
# Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKFile=

این خط را اضافه کنید تا عامل Zabbix به فایل PSK شما اشاره کند:
/etc/zabbix/zabbix_agentd.conf

TLSPSKFile=/etc/zabbix/zabbix_agentd.psk

فایل را ذخیره کنید و ببندید. اکنون می توانید عامل Zabbix را مجدداً راه اندازی کنید و آن را به گونه ای تنظیم کنید تا در زمان بوت شروع شود:
⦁ $ sudo systemctl restart zabbix-agent

⦁ $ sudo systemctl enable zabbix-agent

بهتر است بررسی کنید که عامل Zabbix به درستی اجرا شده است یا خیر:
⦁ $ sudo systemctl status zabbix-agent

وضعیت زیر را مشاهده خواهید کرد ، نشان می دهد عامل در حال اجرا است:
Output
● zabbix-agent.service – Zabbix Agent
Loaded: loaded (/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2019-04-05 09:03:04 UTC; 1s ago

عامل ، اتصالات حاصله از 

سرور مجازی را از پورت 10050 گوش می دهد. UFW را برای برقراری اتصال به این پورت پیکربندی کنید:
⦁ $ sudo ufw allow 10050/tcp

می توانید اطلاعات بیشتری در مورد UFW در راهنمای نحوه راه اندازی فایروال با UFW در Ubuntu 18.04 کسب کنید.
اکنون عامل شما آماده پذیرش اتصالات و ارسال داده به 

سرور مجازی Zabbix است. اما برای استفاده از آن ، باید از طریق کنسول وب 

سرور مجازی به آن پیوند دهید. در مرحله بعد ، پیکربندی را کامل می کنید.
مرحله 6 – اضافه کردن هاست جدید به 

سرور مجازی Zabbix
نصب یک عامل بر روی 

سرور مجازی ی که می خواهید نظارت کنید ، فقط نیمی از روند کار است. هر هاستی که برای نظارت می خواهید نیاز به ثبت در سرور Zabbix دارد، که می توانید این کار را از طریق رابط وب انجام دهید.
با رفتن به آدرس http: // zabbix_server_name / zabbix / وارد رابط وب 

سرور مجازی Zabbix شوید.

هنگامی که وارد سیستم شده اید ، در نوار پیمایش بالا بر روی Configuration و سپس Hosts  کلیک کنید. سپس بر روی دکمه Create host در گوشه سمت راست بالای صفحه کلیک کنید. با این کار صفحه پیکربندی میزبان باز می شود.

نام هاست و آدرس IP را تنظیم کنید تا نام هاست و آدرس IP 

سرور مجازی دوم Ubuntu شما را منعکس نماید ، سپس هاست را به یک گروه اضافه کنید. می توانید یک گروه موجود ، به عنوان مثال 

سرور مجازی های لینوکس را انتخاب کنید یا گروه خود را ایجاد کنید. هاست می تواند در چند گروه باشد. برای این کار ، نام گروه موجود یا جدید را در قسمت Groups وارد کرده و از لیست پیشنهادی مقدار مورد نظر را انتخاب کنید.
پس از افزودن گروه ، بر روی تب Templates کلیک کنید.

Template OS Linux را در قسمت جستجو تایپ کنید و سپس بلافاصله در زیر نوار جستجو روی add کلیک کنید تا این الگو به هاست اضافه شود.
در مرحله بعد ، به سربرگ Encryption  بروید. PSK  را هم برای اتصال به هاست و هم اتصالات حاصله از هاست انتخاب کنید. سپس PSK identity  را روی PSK 001 قرار دهید ، که مقدار تنظیم TLSPSKIdentity عامل Zabbix است که قبلاً پیکربندی کرده اید. سپس مقدار PSK را روی کلید تولید شده برای عامل Zabbix تنظیم کنید. این چیزی است که در فایل /etc/zabbix/zabbix_agentd.psk در دستگاه عامل ذخیره شده است.

در آخر ، بر روی دکمه Add در پایین فرم کلیک کنید تا میزبان ایجاد شود.
میزبان جدید خود را در این لیست مشاهده خواهید کرد. یک دقیقه صبر کنید و صفحه را مجدد لود کنید تا برچسب های سبز نشان دهند که همه چیز خوب است و اتصال رمزگذاری شده است.

در صورت داشتن 

سرور مجازی های اضافی که باید نظارت کنید ، به هر هاست وارد شوید ، عامل Zabbix را نصب کنید ، یک PSK تولید کنید ، عامل را پیکربندی کنید و سپس همان مراحل اضافه کردن اولین هاست خود را تکرار کنید، تا هاست را به رابط وب اضافه کنید.

سرور مجازی Zabbix اکنون 

سرور مجازی دوم Ubuntu را کنترل می کند. اکنون ، اعلان های ایمیل را تنظیم کنید تا در مورد مشکلات به شما اطلاع داده شود.
مرحله 7 – پیکربندی اعلان های ایمیل
Zabbix به طور خودکار انواع مختلفی از اعلان ها را پشتیبانی می کند: ایمیل ، Jabber ، پیام کوتاه و غیره. همچنین می توانید از روش های اعلان جایگزین مانند Telegram یا Slack نیز استفاده کنید. لیست کامل ادغام ها را می توانید در اینجا مشاهده کنید.
ساده ترین روش ارتباطی ایمیل است و این آموزش اعلان ها را برای این نوع رسانه پیکربندی می کند.
در نوار پیمایش بالا بر روی Administration ، و سپس Media types کلیک کنید. لیست انواع رسانه ها را مشاهده خواهید کرد. روی ایمیل کلیک کنید.
گزینه های SMTP را مطابق تنظیمات ارائه شده توسط سرویس ایمیل خود تنظیم کنید. این آموزش از ویژگی های SMTP Gmail برای تنظیم اعلان های ایمیل استفاده می کند. اگر می خواهید اطلاعات بیشتری درباره این تنظیمات داشته باشید ، به نحوه استفاده از 

سرور مجازی SMTP Google مراجعه کنید.
توجه: اگر از تأیید صحت دو مرحله ای با Gmail استفاده می کنید ، باید یک رمزعبور app برای Zabbix تولید کنید. لازم نیست آن را به خاطر بسپارید ، فقط باید یک بار رمز عبور برنامه را هنگام تنظیم وارد کنید. در مرکز راهنمایی Google دستورالعملهایی درباره نحوه تولید این رمز عبور پیدا خواهید کرد.

همچنین می توانید قالب پیام — html یا متن ساده را انتخاب کنید. در آخر ، بر روی دکمه Update در پایین فرم کلیک کنید تا پارامترهای ایمیل به روز شود.

اکنون یک کاربر جدید ایجاد کنید. در نوار پیمایش بالا روی Administrator و سپس Users کلیک کنید. لیست کاربران را مشاهده خواهید کرد. سپس بر روی دکمه Create user در گوشه سمت راست بالای صفحه کلیک کنید. با این کار صفحه پیکربندی کاربر باز می شود.

نام کاربری جدید را در قسمت Alias ​​وارد کرده و رمزعبور جدیدی تنظیم کنید. در مرحله بعد کاربر را به گروه administrator اضافه کنید. Zabbix administrators را در قسمت Groups تایپ کرده و آن را از لیست پیشنهادی انتخاب کنید.
پس از افزودن گروه ، بر روی تب Media کلیک کرده و روی لینک Add که زیر آن خط کشیده شده کلیک کنید. یک پنجره pop-up مشاهده خواهید کرد.

آدرس ایمیل خود را در قسمت Send to وارد کنید. می توانید بقیه گزینه ها را روی مقادیر پیش فرض بگذارید. برای ارسال ، روی دکمه add در پایین کلیک کنید.
اکنون به سربرگ Permissions  بروید.Zabbix Super Admin را از منوی کشویی نوع کاربر انتخاب کنید.
در آخر ، بر روی دکمه Add در پایین فرم کلیک کنید تا کاربر ایجاد شود.
اکنون باید اعلان ها را فعال کنید. بر روی تب Configuration  و سپس Actions  در نوار پیمایش بالا کلیک کنید. عملکردی از پیش تنظیم شده را مشاهده خواهید کرد ، که وظیفه ارسال اعلان ها به همه ادمین های Zabbix را بر عهده دارد. می توانید تنظیمات را با کلیک روی نام آن بررسی و تغییر دهید. برای اهداف این آموزش از پارامترهای پیش فرض استفاده کنید. برای فعال کردن این عمل ، بر روی لینک قرمز Disabled در ستون Status کلیک کنید.
اکنون آماده دریافت هشدار هستید. در مرحله بعدی ، یک مورد را آزمایش می کنید تا تنظیم اعلان خود بررسی نمایید.
مرحله 8 – ایجاد هشدار آزمایشی
در این مرحله ، برای اطمینان از اتصال همه موارد ، یک هشدار تست تولید می کنید. به طور پیش فرض ، Zabbix مقدار فضای دیسک خالی روی 

سرور مجازی شما را پیگیری می کند. به طور خودکار تمام دیسک های قرار داده شده را شناسایی میکند و بررسی های مربوطه را اضافه می کند. این شناسایی هر ساعت اجرا می شود ، بنابراین باید مدت زمانی صبر کنید تا اعلان شروع شود.
یک فایل موقت ایجاد کنید که به اندازه کافی بزرگ باشد تا هشدار استفاده از سیستم فایل Zabbix را فعال کند. برای این کار ، اگر هنوز به سیستم متصل نشده اید ، به 

سرور مجازی Ubuntu دوم خود وارد شوید.
⦁ $ ssh sammy@second_ubuntu_server_ip_address

در مرحله بعد مشخص کنید که چه مقدار فضای خالی روی 

سرور مجازی دارید. برای این کار می توانید از دستور df استفاده کنید:
⦁ $ df -h

دستور df میزان استفاده از فضای دیستم فایل شما را گزارش می کند ، و -h باعث می شود که خروجی قابل خواندن باشد. خروجی مانند زیر را مشاهده خواهید کرد:
Output
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.2G 23G 5% /

در این حالت فضای آزاد 23 گیگابایت است. فضای آزاد شما ممکن است متفاوت باشد.
از دستور fallocate استفاده کنید ، که به شما امکان می دهد فضای اختصاصی را به یک فایل اختصاص بدهید یا ندهید، تا فایلی ایجاد کنید که بیش از 80٪ فضای موجود دیسک را داشته باشد. این کار برای ایجاد هشدار کافی خواهد بود:
⦁ $ fallocate -l 20G /tmp/temp.img

Zabbix پس از گذشت حدود یک ساعت ، هشداری در مورد میزان فضای خالی دیسک ارائه می کند و عملی را که پیکربندی کرده اید ، اجرا می کند که پیامی را ارسال خواهد کرد. می توانید صندوق ورودی خود را برای دریافت پیام از 

سرور مجازی Zabbix بررسی کنید. پیامی مانند خواهید دید:
Output
Problem started at 10:37:54 on 2019.04.05
Problem name: Free disk space is less than 20% on volume /
Host: Second Ubuntu server
Severity: Warning

Original problem ID: 34

همچنین می توانید برای مشاهده نوتیفیکیشن و جزئیات آن به سربرگ Monitoring و سپس Dashboard بروید.

اکنون که می دانید هشدارها کار می کنند ، فایل موقت ایجاد شده را حذف کنید تا بتوانید فضای دیسک خود را دوباره پس بگیرید:
⦁ $ rm -f /tmp/temp.img

پس از یک دقیقه Zabbix پیام بازیابی را ارسال می کند و هشدار از داشبورد اصلی ناپدید می شود.
نتیجه
در این آموزش یک راه حل ساده و ایمن برای نظارت تنظیم کردید که به شما در نظارت بر وضعیت 

سرور مجازی های تان کمک می کند. اکنون می تواند مشکلات را به شما هشدار دهد ، و شما این فرصت را دارید که فرآیندهای رخ داده در زیرساخت IT خود را تجزیه و تحلیل کنید.
برای کسب اطلاعات بیشتر درباره راه اندازی زیرساخت های نظارتی ، راهنمای نحوه نصب Elasticsearch ، Logstash و Kibana (Elastic Stack) در Ubuntu 18.04 و مقاله نحوه جمع آوری معیارهای زیرساخت با Metricbeat در Ubuntu 18.04 را بررسی کنید.

 

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

استفاده از nsh برای دستورات از راه دور اوبونتو 18 –  

میزبانی وب سایت با Caddy اوبونتو 18

تنظیم سرور ذخیره سازی آبجکت با استفاده از Minio در اوبونتو 18  –  

ضبط و اشتراک گذاری ترمینال با Terminalizer اوبونتو

تنظیم مسیریابی شرطی و پاسخگو با React Router v4  –  

ایجاد یک URL کوتاه کننده با Django و GraphQL

یک برنامه ردیابی سلامت را با React ،GraphQL و Okta –  

ساخت برنامه چت زمان حقیقی React و GraphQL

به روزرسانی فیلترهای مرتب سازی Angular (زاویه ای) –  

با استفاده از React ، Superagent و API اینستاگرام

نحوه ساختن یک برنامه جهانی با Nuxt.js و Django –  

دکمه دانلود با ریزتعاملات با CSS ، anime.js و segment.js

نحوه اضافه کردن عکسهای پیشرفته در Node و Express  –  

با Vue ،GraphQL و Apollo Client یک وبلاگ ساخت

یک برنامه SSR با روتر Preact ، Unistore و Preact بسازید  –  

ساخت برنامه های وب پیشرونده با Angular

اشکال زدایی JavaScript در تولید با نقشه های منبع  –  

می توان با Koa برنامه سلام جهانی” ساخت

ساختن یک برنامه با Node ، React ، Okta  –   

مدیریت حالت فرم در React با Redux Form

نحوه تنظیم Laravel ، Nginx و MySQL  –  

ارتقاء از AngularJS به Angular با ngUpgrade

استفاده از ویژوال استودیو از راه دور  –  

احراز هویت API با JSON Web Tokens و Passport

راه اندازی یک پروژه React با Parcel  –  

ایجاد Swiper مانند Netflix را در Vue

ساختن یک ربات تلگرام با Laravel و BotMan  –  

استفاده از map، filter، و reduce در جاوااسکریپت

چگونه می توان موتور جستجوی زمان واقعی را با Vue  –  

ساختن سیستم مستندات (Documentation) با Vue و VuePress

استفاده از اشتراک زنده با کد ویژوال استودیو  –  

ساخت یک مقیاس اندازه گیری قدرت رمز عبور را در React

شروع عملی GraphQL با Node.js و Express  –  

ساخت یک برنامه آب و هوا در Django

نحوه نصب Discourse روی Ubuntu 18  –  

تأیید رمز عبور با استفاده از درخواست فرم Laravel

نحوه نصب MySQL در CentOS 8  –  

استفاده از پسوند PDO PHP برای انجام تراکنش MySQL

نصب و پیکربندی SNMP Daemon و Client در Ubuntu 18  –  

نصب Linux، Nginx، MariaDB،PHP در Debian 10

 

 

کلمات کلیدی خرید سرور

خرید vps – 

خرید سرور مجازی – 

خرید سرور – 

سرور هلند – 

فروش vps – 

سرور مجازی آمریکا – 

خریدvps – 

سرور مجازی هلند – 

فروش سرور مجازی – 

سرور آمریکا – 

vps – 

سرور مجازی انگلیس – 

سرور مجازی آلمان – 

سرور مجازی کانادا – 

خرید vps آمریکا – 

خرید وی پی اس – 

سرور – 

خرید سرور مجازی هلند – 

vps خرید – 

سرور مجازی فرانسه – 

سرور مجازی هلند – 

خرید vps آمریکا – 

خرید سرور مجازی ارزان هلند – 

vps – 

خرید vps هلند – 

خرید سرور مجازی آمریکا – 

خرید vps فرانسه – 

تست vps – 

سرور مجازی تست – 

سرور مجازی ویندوز – 

ارزانترین vps – 

خرید وی پی اس – 

vps ارزان – 

 

 

برچسب‌ها:,


در سال 2015 توسط فیس بوک به عنوان یک زبان پرس و جو برای API ها منتشر شد که پرس و جو و جهش داده ها از مجموعه داده های مختلف را آسان می کند. از یک نقطه پایانی واحد ، می توانید چندین منبع داده را با یک درخواست POST منفرد جستجو کنید و به جش واردارید. GraphQL برخی از نقص طراحی معمول در معماری REST API را برطرف می کند ، مانند موقعیت هایی که نقطه انتهایی اطلاعات بیشتری را نسبت به آنچه در واقع لازم دارید برمی گرداند. همچنین ، هنگام استفاده از API های REST ممکن است برای جمع آوری تمام اطلاعات مورد نیاز خود، ممکن است نیاز به ارسال درخواست به چند مورد از نقاط انتهایی REST داشته باشید – وضعیتی که به آن مشکل n + 1 گفته می شود. نمونه ای از این موارد وقتی پیش می آید که می خواهید اطلاعات کاربر را نشان دهید ، اما باید اطلاعاتی از قبیل جزئیات شخصی و آدرس ها را از نقاط مختلف جمع آوری کنید.
این مشکلات برای GraphQL اعمال نمی شوند زیرا تنها یک نقطه پایانی دارد که می تواند داده ها را از چندین مجموعه بازگرداند. داده بازگشتی به پرس و جویی که به این نقطه پایانی ارسال شده بستگی دارد. در این پرس و جو ساختار داده ای را که می خواهید دریافت کنید ، از جمله هر مجموعه داده تو در تو را تعریف می کنید. علاوه بر یک پرس و جو ، می توانید از یک جهش برای تغییر داده ها روی یک سرور مجازی GraphQL و یک اشتراک نیز برای مشاهده تغییرات در داده استفاده کنید. برای کسب اطلاعات بیشتر در مورد GraphQL و مفاهیم آن ، می توانید به مطالب موجود در وب سایت رسمی مراجعه کنید.
از آنجا که GraphQL یک زبان پرس و جو با انعطاف پذیری زیاد است ، به خصوص با داده های مبتنی بر مستندات مانند MongoDB ترکیب می شود. هر دو فناوری مبتنی بر طرحواره های سلسله مراتبی ، تایپ شده هستند و در جامعه جاوا اسکریپت محبوب میباشند. همچنین ، داده های MongoDB به عنوان اشیاء JSON ذخیره می شوند ، بنابراین هیچ تجزیه و تحلیل اضافی در سرور مجازی GraphQL لازم نیست.
در این آموزش ، یک سرور مجازی GraphQL با Node.js ایجاد خواهید کرد و می توانید داده ها را از یک پایگاه داده MongoDB که در اوبونتو 18.04 در حال اجرا است ، پرس و جو کنید و جهش دهید. در پایان این آموزش ، شما می توانید با استفاده از یک نقطه پایانی واحد، هم با ارسال درخواست به سرور مجازی به طور مستقیم از طریق ترمینال و هم با استفاده از رابط پیش ساخته playground در GraphiQL به داده های موجود در بانک اطلاعاتی خود دسترسی داشته باشید. با استفاده از این playground می توانید محتویات سرور مجازی GraphQL را با ارسال پرس و جوها ، جهش ها و اشتراک ها کشف کنید. همچنین ، می توانید نمایش های بصری از طرح هایی را که برای این سرور مجازی تعریف شده است ، پیدا کنید.
در پایان این آموزش ، شما از playground GraphiQL برای ارتباط سریع سرور مجازی GraphQL خود استفاده خواهید کرد:

پیش نیازها
قبل از شروع این راهنما به موارد زیر نیاز خواهید داشت:
⦁ سرور مجازی Ubuntu 18.04 که با پیروی از راهنمای تنظیم اولیه سرور مجازی Ubuntu 18.04 تنظیم شده باشد، شامل یک کاربر sudo غیر ریشه و فایروال نیز باشد.
⦁ نصب MongoDB و اجرای آن در اوبونتو 18.04 که می توانید با دنبال کردن آموزش نحوه نصب MongoDB در اوبونتو 18.04 آن را تنظیم کنید.
⦁ Nginx نصب شده ، همانطور که در نحوه نصب Nginx در Ubuntu 18.04 مشاهده می شود ، از جمله مرحله 4 – تنظیم بلوک های سرور مجازی.
⦁ برای دسترسی از راه دور به سرور مجازی GraphQL ، به یک نام دامنه کاملاً واجد شرایط (FQDN) و یک رکورد A نیاز دارید که به IP سرور مجازی شما اشاره کند. در صورت داشتن حساب vpsgol ، می توانید اطلاعات بیشتری در مورد این مورد با خواندن طریق مقدمه DNS اصطلاحات ، مؤلفه ها و مفاهیم ، یا اسناد دامنه و DNS کسب کنید.
⦁ آشنایی با JavaScript ، که می توانید از مجموعه نحوه کدنویسی در جاواسکریپت بیاموزید.
مرحله 1 – تنظیم بانک اطلاعاتی MongoDB
قبل از ایجاد سرور مجازی GraphQL ، اطمینان حاصل کنید که پایگاه داده شما درست پیکربندی شده باشد ، تأیید هویت آن فعال باشد و با داده های نمونه پر شده باشد. برای این کار باید از اعلان خط فرمان به سرور مجازی Ubuntu 18.04 که پایگاه داده MongoDB است متصل شوید. کلیه مراحل این آموزش در این سرور مجازی انجام خواهد شد.
بعد از برقراری اتصال ، دستور زیر را اجرا کنید تا بررسی کنید که آیا MongoDB فعال و روی سرور مجازی شما فعال است:
⦁ $ sudo systemctl status mongodb

خروجی زیر را در ترمینال خود مشاهده خواهید کرد ، نشان می دهد که بانک اطلاعاتی MongoDB به طور فعال در حال اجرا است:
Output
● mongodb.service – An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2019-02-23 12:23:03 UTC; 1 months 13 days ago
Docs: man:mongod(1)
Main PID: 2388 (mongod)
Tasks: 25 (limit: 1152)
CGroup: /system.slice/mongodb.service
└─2388 /usr/bin/mongod –unixSocketPrefix=/run/mongodb –config /etc/mongodb.conf

قبل از ایجاد دیتابیس که داده های نمونه را در آن ذخیره می کنید ، ابتدا باید یک کاربر ادمین ایجاد کنید ، زیرا کاربران عادی در یک پایگاه داده خاص قرار می گیرند. می توانید با اجرای دستور زیر که پوسته MongoDB را باز می کند ، این کار را انجام دهید:
⦁ $ mongo

با پوسته MongoDB دسترسی مستقیم به پایگاه داده MongoDB خواهید داشت و می توانید کاربران یا بانکهای اطلاعاتی و داده های پرس و جو ایجاد کنید. در داخل این پوسته ، دستور زیر را اجرا کنید که یک کاربر ادمین جدید را به MongoDB اضافه می کند. می توانید کلمات کلیدی هایلایت شده را با نام کاربری و رمز ورود خود جایگزین کنید ، اما فراموش نکنید که آنها را در جایی بنویسید.
⦁ mongo> use admin

⦁ mongo> db.createUser({

⦁ mongo> user: admin_username”,

mongo> pwd: admin_password”,

⦁ mongo> roles: [{ role: root”, db: admin”}]

⦁ mongo> })

خط اول دستور قبلی دیتابیس را با نام ادمین انتخاب می کند ، یعنی همان دیتابیسی که تمام نقش های ادمین در آن ذخیره می شود. با روش db.createUser () می توانید کاربر واقعی ایجاد کرده و نام کاربری ، رمزعبور و نقش های آن را تعریف کنید.
اجرای این فرمان خروجی زیر را برمی گرداند:
Output
Successfully added user: {
user” : admin_username”,
roles” : [
{
role” : root”,
db” : admin”
}
]
}

اکنون می توانید پوسته MongoDB را با تایپ کردن exit ببندید.
در مرحله بعد ، دوباره وارد پوسته MongoDB شوید ، اما این بار با کاربر adminجدید:
⦁ $ mongo -u admin_username” -p admin_password” –authenticationDatabase admin”

این دستور پوسته MongoDB را به عنوان یک کاربر خاص باز می کند، که در آن پرچم -u نام کاربری و پرچم -p رمز عبور آن کاربر را مشخص می کند. پرچم اضافی –authenticationDatabase مشخص می کند که می خواهید به عنوان ادمین وارد شوید.
در مرحله بعد ، به یک بانک اطلاعاتی جدید می روید و سپس از روش db.createUser () برای ایجاد یک کاربر جدید دارای مجوز برای ایجاد تغییر در این پایگاه داده استفاده می کنید. بخش هایلایت شده را با اطلاعات مورد نظر خود جایگزین کنید ، حتما این مدارک را یادداشت کنید.
دستور زیر را در پوسته MongoDB اجرا کنید:
⦁ mongo> use database_name

⦁ mongo> db.createUser({

⦁ mongo> user: username”,

⦁ mongo> pwd: password”,

⦁ mongo> roles: [readWrite”]

⦁ mongo> })

با این کار خروجی زیر باز می گردد:
Output
Successfully added user: { user” : username”, roles” : [readWrite”] }

پس از ایجاد دیتابیس و کاربر ، این بانک اطلاعاتی را با داده های نمونه ای پر کنید که بعداً در این آموزش توسط سرور مجازی GraphQL می توانید جستجو کنید. برای این کار ، می توانید از نمونه مجموعه bios از وب سایت MongoDB استفاده کنید. با اجرای دستورات در قطعه کد زیر ، نسخه کوچکتری از این مجموعه داده bios را در پایگاه داده خود وارد می کنید. می توانید بخش های هایلایت شده را با اطلاعات شخصی خود جایگزین کنید ، اما برای اهداف این آموزش ، نام مجموعه را bios بگذارید:
⦁ mongo> db.bios.insertMany([

⦁ mongo> {

⦁ mongo> _id” : 1,

⦁ mongo> name” : {

⦁ mongo> first” : John”,

⦁ mongo> last” : Backus”

⦁ mongo> },

⦁ mongo> birth” : ISODate(1924-12-03T05:00:00Z”),

mongo> death” : ISODate(2007-03-17T04:00:00Z”),

⦁ mongo> contribs” : [

⦁ mongo> Fortran”,

⦁ mongo> ALGOL”,

⦁ mongo> Backus-Naur Form”,

⦁ mongo> FP”

⦁ mongo> ],

⦁ mongo> awards” : [

⦁ mongo> {

⦁ mongo> award” : W.W. McDowell Award”,

⦁ mongo> year” : 1967,

⦁ mongo> by” : IEEE Computer Society”

⦁ mongo> },

⦁ mongo> {

⦁ mongo> award” : National Medal of Science”,

⦁ mongo> year” : 1975,

⦁ mongo> by” : National Science Foundation”

⦁ mongo> },

⦁ mongo> {

⦁ mongo> award” : Turing Award”,

⦁ mongo> year” : 1977,

⦁ mongo> by” : ACM”

⦁ mongo> },

⦁ mongo> {

⦁ mongo> award” : Draper Prize”,

⦁ mongo> year” : 1993,

⦁ mongo> by” : National Academy of Engineering”

⦁ mongo> }

⦁ mongo> ]

mongo> },

⦁ mongo> {

⦁ mongo> _id” : ObjectId(51df07b094c6acd67e492f41”),

⦁ mongo> name” : {

⦁ mongo> first” : John”,

mongo> last” : McCarthy”

⦁ mongo> },

⦁ mongo> birth” : ISODate(1927-09-04T04:00:00Z”),

⦁ mongo> death” : ISODate(2011-12-24T05:00:00Z”),

⦁ mongo> contribs” : [

⦁ mongo> Lisp”,

⦁ mongo> Artificial Intelligence”,

⦁ mongo> ALGOL”

⦁ mongo> ],

⦁ mongo> awards” : [

⦁ mongo> {

⦁ mongo> award” : Turing Award”,

⦁ mongo> year” : 1971,

⦁ mongo> by” : ACM”

⦁ mongo> },

⦁ mongo> {

mongo> award” : Kyoto Prize”,

⦁ mongo> year” : 1988,

⦁ mongo> by” : Inamori Foundation”

⦁ mongo> },

⦁ mongo> {

⦁ mongo> award” : National Medal of Science”,

⦁ mongo> year” : 1990,

⦁ mongo> by” : National Science Foundation”

⦁ mongo> }

⦁ mongo> ]

⦁ mongo> }

⦁ mongo> ]);

این بلوک کد آرایه ای از آبجکت های مختلفی است که حاوی اطلاعات مربوط به دانشمندان موفق گذشته میباشد. پس از اجرای این دستورات برای وارد کردن این مجموعه به پایگاه داده خود ، پیام زیر را دریافت خواهید کرد که نشان می دهد داده ها اضافه شده اند:
Output
{
acknowledged” : true,
insertedIds” : [
1,
ObjectId(51df07b094c6acd67e492f41”)
]
}

پس از مشاهده پیام موفقیت ، می توانید پوسته MongoDB را با تایپ کردن exit ببندید. در مرحله بعد ، نصب MongoDB را پیکربندی کنید تا مجوز را فعال کنید و فقط کاربران معتبر بتوانند به داده ها دسترسی پیدا کنند. برای ویرایش پیکربندی نصب MongoDB ، فایل حاوی تنظیمات این نصب را باز کنید:
⦁ $ sudo nano /etc/mongodb.conf

برای فعال کردن مجوز ، خط هایلایت شده را در کد زیر را باطل کنید:
/etc/mongodb.conf

# Turn on/off security. Off is currently the default
#noauth = true
auth = true

برای فعال کردن این تغییرات ، MongoDB را مجدداً راه اندازی کنید:
⦁ $ Sudo systemctl restart mongodb

با اجرای دستور مطمئن شوید که پایگاه داده دوباره در حال اجرا است:
⦁ $ sudo systemctl status mongodb

خروجی زیر را مشاهده خواهید کرد:
Output
● mongodb.service – An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2019-02-23 12:23:03 UTC; 1 months 13 days ago
Docs: man:mongod(1)
Main PID: 2388 (mongod)
Tasks: 25 (limit: 1152)
CGroup: /system.slice/mongodb.service
└─2388 /usr/bin/mongod –unixSocketPrefix=/run/mongodb –config /etc/mongodb.conf

برای اطمینان از اینکه کاربر شما می تواند به دیتابیسی که ایجاد کرده اید وصل شود ، سعی کنید پوسته MongoDB را به عنوان یک کاربر معتبر با دستور زیر باز کنید:
⦁ $ mongo -u username” -p password” –authenticationDatabase database_name”

از همان پرچم های قبلی استفاده میکند، فقط این بار –authenticationDatabase روی پایگاه داده ای که ایجاد کرده اید تنظیم میشود و با داده های نمونه پر میگردد.
اکنون با موفقیت یک کاربر ادمین و کاربر دیگری را اضافه کرده اید که دسترسی به خواندن / نوشتن اطلاعات پایگاه داده با داده های نمونه را دارد. همچنین ، پایگاه داده دارای مجوزهای فعال است به این معنی که یک نام کاربری و رمزعبور برای دسترسی به آن نیاز دارید. در مرحله بعد سرور مجازی GraphQL را ایجاد خواهید کرد که بعداً در آموزش به این پایگاه داده وصل می شود.
مرحله دوم – ایجاد سرور مجازی GraphQL
با پیکربندی پایگاه داده و پر شدن با داده های نمونه ، زمان آن رسیده که یک سرور مجازی GraphQL ایجاد کنیم که بتواند این داده ها را پرس و جو کند و جهش دهد. برای این کار از Express و express-Graphql استفاده می کنید ، که هر دو در Node اجرا می شوند. Express یک چارچوب سبک برای ایجاد سریع سرور مجازی های HTTP Node.js است و Express-Graphql میان افزار را برای ایجاد سریع سرور مجازی های GraphQL امکان پذیر می کند.
اولین قدم اطمینان از به روزرسانی دستگاه شما است:
⦁ $ sudo apt update

در مرحله بعد با اجرای دستورات زیر Node.js را روی سرور مجازی خود نصب کنید. به همراه Node.js همچنین npm را نصب خواهید کرد ، یک مدیر بسته برای JavaScript که روی Node.js. اجرا می شود.
⦁ $ sudo apt install nodejs npm

پس از طی مراحل نصب ، بررسی کنید که آیا نسخه Node.js که اخیراً نصب کرده اید v8.10.0 یا بالاتر است:
⦁ $ node -v

با این کار خروجی زیر باز می گردد:
Output
v8.10.0

برای شروع یک پروژه جدید JavaScript ، دستورات زیر را به عنوان کاربر sudo روی سرور مجازی اجرا کنید و کلمات کلیدی هایلایت شده را با نامی برای پروژه خود جایگزین کنید.
ابتدا وارد دیرکتوری اصلی سرور مجازی خود شوید:
⦁ $ cd

پس از آنجا دایرکتوری جدیدی به همراه نام پروژه خود ایجاد کنید:
⦁ $ mkdir project_name

به این دیرکتوری بروید:
⦁ $ cd project_name

در آخر ، یک بسته npm جدید را با دستور زیر تنظیم کنید:
⦁ $ sudo npm init -y

بعد از اجرای npm init- پیام موفقیتی را دریافت خواهید کرد که فایل pack.json زیر ایجاد شده است:
Output
Wrote to /home/username/project_name/package.json:

{
name”: project_name”,
version”: 1.0.0”,
description”: ”,
main”: index.js”,
scripts”: {
test”: echo \”Error: no test specified\” && exit 1″
},
keywords”: [],
author”: ”,
license”: ISC”
}

توجه: همچنین می توانید npm init را بدون پرچم -y اجرا کنید ، که پس از آن به سؤالات مختلفی برای تنظیم نام پروژه ، نویسنده ، و غیره پاسخ می دهید. می توانید جزئیات را وارد کنید یا فقط برای ادامه کلید Enter را بزنید.

اکنون که پروژه را آغاز کردید ، بسته های لازم برای راه اندازی سرور مجازی GraphQL را نصب کنید:
⦁ $ sudo npm install –save express express-graphql graphql

یک فایل جدید با نام index.js ایجاد کنید و متعاقباً با اجرای دستور زیر این فایل را باز کنید:
⦁ $ sudo nano index.js

در مرحله بعد ، بلوک کد زیر را در فایل تازه ایجاد شده برای تنظیم سرور مجازی GraphQL اضافه کنید:
index.js
const express = require(‘express’);
const graphqlHTTP = require(‘express-graphql’);
const { buildSchema } = require(‘graphql’);

// Construct a schema, using GraphQL schema language
const schema = buildSchema(`
type Query {
hello: String
}
`);

// Provide resolver functions for your schema fields
const resolvers = {
hello: () => ‘Hello world!’
};

const app = express();
app.use(‘/graphql’, graphqlHTTP({
schema,
rootValue: resolvers
}));
app.listen(4000);

console.log(` Server ready at http://localhost:4000/graphql`);

این بلوک کد از چندین بخش تشکیل شده است که همه مهم هستند. ابتدا شمای داده هایی را که توسط GraphQL API برگردانده شده است شرح می دهید:
index.js

// Construct a schema, using GraphQL schema language
const schema = buildSchema(`
type Query {
hello: String
}
`);

نوع Query تعریف می کند چه پرس و جوهایی میتوانند اجرا شوند و به چه فرمتی می توانند نتیجه را برگردانند. همانطور که مشاهده می کنید ، تنها پرس و جوی تعریف شده hello است که داده ها را با فرمت String برمی گرداند.
در بخش بعدی ، resolvers تعیین می شوند ، جایی که داده ها با طرح هایی که می توانید پرس و جو کنند ، هماهنگ می شوند:
index.js

// Provide resolver functions for your schema fields
const resolvers = {
hello: () => ‘Hello world!’
};

این resolverها مستقیماً با طرحواره ها مرتبط هستند و داده هایی را که با این طرح ها مطابقت دارد ، برمی گردانند.
قسمت پایانی این بلاک کد سرور مجازی GraphQL را آغاز می کند ، نقطه پایانی API را با Express ایجاد می کند و پورتی را که انتهای GraphQL در آن در حال اجرا است توضیح می دهد:
index.js

const app = express();
app.use(‘/graphql’, graphqlHTTP({
schema,
rootValue: resolvers
}));
app.listen(4000);

console.log(` Server ready at http://localhost:4000/graphql`);

بعد از افزودن این خطوط ، ذخیره کنید و از index.js خارج شوید.
در مرحله بعد ، برای اجرای سرور مجازی GraphQL ، باید فایل index.js را با Node.js. اجرا کنید. این کار به صورت دستی از خط فرمان قابل انجام است ، اما معمول است که فایل pack.json را تنظیم کنید تا این کار برای شما انجام شود.
فایل pack.json را باز کنید:
⦁ $ sudo nano package.json

خط هایلایت شده زیر را به این فایل اضافه کنید:
package.json
{
name”: project_name”,
version”: 1.0.0”,
description”: ”,
main”: index.js”,
scripts”: {
start”: node index.js”,
test”: echo \”Error: no test specified\” && exit 1″
},
keywords”: [],
author”: ”,
license”: ISC”
}
فایل را ذخیره کنید و از آن خارج شوید.
برای راه اندازی سرور مجازی GraphQL ، دستور زیر را در ترمینال اجرا کنید:
⦁ $ npm start

پس از اجرای این برنامه ، اعلان ترمینال ناپدید می شود و پیامی برای تأیید سرور مجازی GraphQL ظاهر می شود:
Output
Server ready at http://localhost:4000/graphql

اگر اکنون بخش ترمینال دیگری را باز کرده اید ، می توانید با اجرای دستور زیر آزمایش کنید که آیا سرور مجازی GraphQL در حال اجرا است. این کار درخواست POST curlرا با بدنه JSON پس از پرچم –data که شامل پرس و جوی GraphQL شما به نقطه انتهایی محلی است ارسال می کند:
⦁ $ curl -X POST -H Content-Type: application/json” –data ‘{ query”: { hello }” }’ http://localhost:4000/graphql

با این کار پرس و جو همانطور که در شمای GraphQL در کد شما شرح داده شده است اجرا می شود و داده ها را با فرمت JSON قابل پیش بینی که یکسان با داده های برگشت یافته در resolver هاست، اجرا می کند:
Output
{ data”: { hello”: Hello world!” } }

توجه: در صورت خراب شدن یا گیر نکردن سرور مجازی اکسپرس ، باید فرایند node که روی سرور مجازی اجرا می شود را به صورت دستی از بین ببرید. برای لغو همه این مراحل ، می توانید موارد زیر را اجرا کنید:
⦁ $ killall node

پس از آن می توانید با دستور زیر، سرور مجازی GraphQL مجدداً راه اندازی کنید:
⦁ $ npm start

در این مرحله شما اولین نسخه از سرور مجازی GraphQL را ایجاد کرده اید که هم اکنون در یک نقطه پایانی محلی اجرا می شود که به سرور مجازی شما قابل دسترسی است. در مرحله بعد ، resolver های خود را به پایگاه داده MongoDB وصل خواهید کرد.
مرحله 3 – اتصال به بانک اطلاعاتی MongoDB
با نظم گیری سرور مجازی GraphQL ، اکنون می توانید ارتباط را با پایگاه داده MongoDB که قبلاً پیکربندی کرده و پر از داده کرده اید ، تنظیم نمایید و یک طرح جدید ایجاد کنید که مطابق با این داده ها باشد.
برای اینکه بتوانید از سرور مجازی GraphQL به MongoDB متصل شوید ، بسته JavaScript را برای MongoDB از npm نصب کنید:
⦁ $ sudo npm install –save mongodb

پس از نصب ، index.js را در ویرایشگر متن خود باز کنید:
⦁ $ sudo nano index.js

سپس ، کد هایلایت شده زیر را درست بعد از متعلقات وارد شده به index.js اضافه کنید و مقادیر هایلایت شده را با جزئیات اتصال خود به پایگاه داده محلی MongoDB پر کنید. نام کاربری ، رمز عبور و نام پایگاه داده همان مواردی هستند که در مرحله اول این آموزش ایجاد کرده اید.
index.js
const express = require(‘express’);
const graphqlHTTP = require(‘express-graphql’);
const { buildSchema } = require(‘graphql’);
const { MongoClient } = require(‘mongodb’);

const context = () => MongoClient.connect(‘mongodb://username:password@localhost:27017/database_name’, { useNewUrlParser: true }).then(client => client.db(‘database_name’));

این خطوط اتصال به پایگاه داده محلی MongoDB را به تابعی به نام context اضافه می کنند. این تابع context در دسترس هر resolver خواهد بود ، به همین دلیل شما از این گزینه برای تنظیم اتصالات بانک اطلاعاتی استفاده می کنید.
در مرحله بعد ، در فایل index.js ، با وارد کردن خطوط هایلایت شده زیر ، تابع context را برای مقداردهی اولیه سرور مجازی GraphQL اضافه کنید:
index.js

const app = express();
app.use(‘/graphql’, graphqlHTTP({
schema,
rootValue: resolvers,
context
}));
app.listen(4000);

console.log(` Server ready at http://localhost:4000/graphql`);

اکنون می توانید این تابع context را از طریق resolver های خود فراخوانی کنید و از این طریق متغیرهایی را از پایگاه داده MongoDB بخوانید. اگر به مرحله اول این آموزش بازگردید ، می توانید ببینید که کدام مقادیر در پایگاه داده وجود دارد. از اینجا ، یک طرح جدید GraphQL را تعریف کنید که با این ساختار داده مطابقت دارد. مقدار قبلی را برای طرحواره ثابت با خطوط هایلایت شده زیر بازنویسی کنید:
index.js

// Construct a schema, using GrahQL schema language
const schema = buildSchema(`
type Query {
bios: [Bio]
}
type Bio {
name: Name,
title: String,
birth: String,
death: String,
awards: [Award]
}
type Name {
first: String,
last: String
},
type Award {
award: String,
year: Float,
by: String
}
`);

نوع Query تغییر کرده است و اکنون مجموعه ای از نوع جدید Bio را برمی گرداند. این نوع جدید شامل چندین نوع از جمله دو نوع غیر اسکالر دیگر name و awards است ، به این معنی که این نوع ها با یک قالب از پیش تعریف شده مانند String یا Float مطابقت ندارند. برای اطلاعات بیشتر در مورد تعریف طرح های GraphQL می توانید به مستندات مربوط به GraphQL مراجعه کنید.
همچنین ، از آنجا که resolver ها داده را از دیتابیس به شماتیک گره می زنند ، هنگام ایجاد تغییر در طرح ، کد را برای resolver ها به روز کنید. یک resolver جدید ایجاد کنید که به آن bios گفته می شود ، , برابر با Query است که می توانید در طرحواره و نام مجموعه در بانک اطلاعاتی پیدا کنید. توجه داشته باشید که در این حالت ، نام مجموعه در db.collection (bios”) ، bios است ، اما اگر نام دیگری به مجموعه خود اختصاص داده باشید ، این نام تغییر خواهد کرد.
خط هایلایت شده زیر را به index.js اضافه کنید:
index.js

// Provide resolver functions for your schema fields
const resolvers = {
bios: (args, context) => context().then(db => db.collection(‘bios’).find().toArray())
};

این تابع از تابع context استفاده می کند ، که می توانید برای بازیابی متغیرها از پایگاه داده MongoDB استفاده کنید. پس از انجام این تغییرات در کد ، index.js را ذخیره کنید و از آن خارج شوید.
برای فعال سازی این تغییرات ، باید سرور مجازی GraphQL را مجدداً راه اندازی کنید. با استفاده از ترکیب صفحه کلید CTRL + C می توانید روند فعلی را متوقف کرده و با اجرای دستور زیر، سرور مجازی GraphQL را شروع کنید:
⦁ $ npm start

اکنون می توانید از طرحواره به روز شده استفاده کرده و داده هایی را که درون پایگاه داده است ، جستجو کنید. اگر به طرحواره نگاه کنید ، خواهید دید که Query برای bios نوع Bio را برمی گرداند. همچنین می تواند type name را برگرداند.
برای بازگرداندن تمام اسامی اول و خانوادگی برای همه bioها در پایگاه داده ، درخواست زیر را در یک پنجره ترمینال جدید به سرور مجازی GraphQL بفرستید:
⦁ curl -X POST -H Content-Type: application/json” –data ‘{ query”: { bios { name { first, last } } }” }’ http://localhost:4000/graphql

دوباره یک آبجکت JSON را که مطابق با ساختار طرح است برمی گرداند:
Output
{data”:{bios”:[{name”:{first”:”John”,”last”:”Backus”}},{name”:{first”:”John”,”last”:”McCarthy”}}]}}

به راحتی می توانید با گسترش پرس و جو با هر یک از انواع توصیف شده در نوع Bio ، متغیرهای بیشتری را از بایوس بازیابی کنید.
همچنین ، می توانید با مشخص کردن یک id ، bio را بازیابی کنید. برای انجام این کار باید نوع دیگری به Query اضافه کنید و resolver ها را گسترش دهید. به این منظور ، index.js را در ویرایشگر متن خود باز کنید:
⦁ $ sudo nano index.js

خطوط هایلایت شده کد را اضافه کنید:
index.js

// Construct a schema, using GrahQL schema language
const schema = buildSchema(`
type Query {
bios: [Bio]
bio(id: Int): Bio
}

// Provide resolver functions for your schema fields
const resolvers = {
bios: (args, context) => context().then(db => db.collection(‘bios’).find().toArray()),
bio: (args, context) => context().then(db => db.collection(‘bios’).findOne({ _id: args.id }))
};

فایل را ذخیره کنید و از آن خارج شوید.
در ترمینالی که سرور مجازی GraphQL شما در حال اجراست ، CTRL + C را فشار دهید تا آن را از حالت اجرا متوقف کنید، سپس دستور زیر را برای راه اندازی مجدد آن اجرا کنید:
⦁ $ npm start

در پنجره ترمینال دیگر ، درخواست GraphQL زیر را اجرا کنید:

⦁ $ curl -X POST -H Content-Type: application/json” –data ‘{ query”: { bio(id: 1) { name { first, last } } }” }’ http://localhost:4000/graphql

ورودی برای bio که دارای شناسه برابر با 1 است را برمی گرداند:
Output
{ data”: { bio”: { name”: { first”: John”, last”: Backus” } } } }

توانایی جستجوی داده ها از یک پایگاه داده تنها ویژگی GraphQL نیست. همچنین می توانید داده ها را در دیتابیس تغییر دهید. برای انجام این کار ، index.js را باز کنید:
⦁ $ sudo nano index.js

در کنار نوع Query می توانید از نوع Mutation نیز استفاده کنید که به شما امکان می دهد پایگاه داده را جهش دهید. برای استفاده از این نوع ، آن را به طرح اضافه کنید و همچنین با وارد کردن این خطوط هایلایت شده ، انواع ورودی را ایجاد کنید:
index.js

// Construct a schema, using GraphQL schema language
const schema = buildSchema(`
type Query {
bios: [Bio]
bio(id: Int): Bio
}
type Mutation {
addBio(input: BioInput) : Bio
}
input BioInput {
name: NameInput
title: String
birth: String
death: String
}
input NameInput {
first: String
last: String
}

این نوع ورودی ها تعریف می کنند که کدام متغیرها می توانند به عنوان ورودی استفاده شوند ، که می توانید به آنها در resolver ها دسترسی داشته باشید و از آنها برای درج یک سند جدید در بانک اطلاعاتی استفاده کنید. این کار را با اضافه کردن سطرهای زیر به index.js انجام دهید:
index.js

// Provide resolver functions for your schema fields
const resolvers = {
bios: (args, context) => context().then(db => db.collection(‘bios’).find().toArray()),
bio: (args, context) => context().then(db => db.collection(‘bios’).findOne({ _id: args.id })),
addBio: (args, context) => context().then(db => db.collection(‘bios’).insertOne({ name: args.input.name, title: args.input.title, death: args.input.death, birth: args.input.birth})).then(response => response.ops[0])
};

درست همانطور که در مورد resolver ها برای جستارهای معمول گفته شد ، شما باید یک مقدار از resolver در index.js را برگردانید. در مورد جهش که نوع Bio در آن جهش یافته است ، مقدار bio جهش یافته را برمی گردانید.
در این مرحله ، فایل index.js شما شامل سطرهای زیر خواهد بود:
index.js
iconst express = require(‘express’);
const graphqlHTTP = require(‘express-graphql’);
const { buildSchema } = require(‘graphql’);
const { MongoClient } = require(‘mongodb’);

const context = () => MongoClient.connect(‘mongodb://username:password@localhost:27017/database_name’, { useNewUrlParser: true })
.then(client => client.db(‘GraphQL_Test’));

// Construct a schema, using GraphQL schema language
const schema = buildSchema(`
type Query {
bios: [Bio]
bio(id: Int): Bio
}
type Mutation {
addBio(input: BioInput) : Bio
}
input BioInput {
name: NameInput
title: String
birth: String
death: String
}
input NameInput {
first: String
last: String
}
type Bio {
name: Name,
title: String,
birth: String,
death: String,
awards: [Award]
}
type Name {
first: String,
last: String
},
type Award {
award: String,
year: Float,
by: String
}
`);

// Provide resolver functions for your schema fields
const resolvers = {
bios: (args, context) =>context().then(db => db.collection(‘Sample_Data’).find().toArray()),
bio: (args, context) =>context().then(db => db.collection(‘Sample_Data’).findOne({ _id: args.id })),
addBio: (args, context) => context().then(db => db.collection(‘Sample_Data’).insertOne({ name: args.input.name, title: args.input.title, death: args.input.death, birth: args.input.birth})).then(response => response.ops[0])
};

const app = express();
app.use(‘/graphql’, graphqlHTTP({
schema,
rootValue: resolvers,
context
}));
app.listen(4000);

console.log(` Server ready at http://localhost:4000/graphql`);

ذخیره کنید و از index.js خارج شوید.
برای بررسی اینکه جهش جدید شما در حال کار است ، با فشار دادن CTRL + c و اجرای npm در ترمینالی که سرور مجازی GraphQL شما را اجرا می کند ، سرور مجازی GraphQL را مجدداً راه اندازی کنید ، سپس یک بخش ترمینال دیگر را برای اجرای درخواست curl زیر باز کنید. درست مانند درخواست curl برای پرس و جو ، بدنه در پرچم –data به سرور مجازی GraphQL ارسال می شود. قسمت های هایلایت شده به دیتابیس اضافه می شود:
⦁ $ curl -X POST -H Content-Type: application/json” –data ‘{ query”: mutation { addBio(input: { name: { first: \”test\”, last: \”user\” } }) { name { first, last } } }” }’ http://localhost:4000/graphql

نتیجه زیر را به همراه دارد ، بدین معنی که شما یک bio جدید را به بانک اطلاعاتی وارد کرده اید:
Output
{ data”: { addBio”: { name”: { first”: test”, last”: user” } } } }

در این مرحله ارتباط خود را با MongoDB و سرور مجازی GraphQL ایجاد کردید و با اجرای پرس و جوهای GraphQL می توانید داده ها را از این پایگاه داده بازیابی کنید و جهش دهید. در مرحله بعد ، این سرور مجازی GraphQL را برای دسترسی از راه دور قرار می دهید.
مرحله 4 – اجازه دسترسی از راه دور
با راه اندازی بانک اطلاعاتی و سرور مجازی GraphQL ، اکنون می توانید سرور مجازی GraphQL را پیکربندی کنید تا امکان دسترسی از راه دور فراهم شود. برای این کار از Nginx استفاده می کنید ، که در آموزش پیش نیاز نحوه نصب Nginx در اوبونتو 18.04 این کار را انجام دادید. این پیکربندی Nginx را می توان در فایل /etc/nginx/sites-available/example.com یافت ، جایی که example.com نام سرور مجازی ی است که در آموزش پیش نیاز اضافه کردید.
این فایل را برای ویرایش باز کنید و نام دامنه خود را در example.com جایگزین کنید:
⦁ $ sudo nano /etc/nginx/sites-available/example.com

در این فایل می توانید یک بلوک سرور مجازی پیدا کنید که به پورت 80 گوش می دهد ، جایی که در حال حاضر مقداری برای server_name در آموزش پیش نیاز تنظیم کرده اید. در داخل این بلوک سرور مجازی ، مقدار root را تغییر دهید تا دایرکتوری باشد که در آن کد را برای سرور مجازی GraphQL ایجاد کرده و index.js را به عنوان فهرست اضافه می کنید. همچنین ، در بلوک لوکیشن ، یک proxy_pass تنظیم کنید تا بتوانید از IP سرور مجازی یا نام دامنه دلخواه خود برای مراجعه به سرور مجازی GraphQL استفاده کنید:
/etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;

root /project_name;
index index.js;

server_name example.com;

location / {
proxy_pass http://localhost:4000/graphql;
}
}

با اجرای دستور زیر مطمئن شوید که هیچ خطای نحوی Nginx در این فایل پیکربندی وجود ندارد:
⦁ $ 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 restart nginx

اکنون می توانید با اجرا و جایگزین کردن example.com توسط IP سرور مجازی یا نام دامنه شخصی خود به سرور مجازی GraphQL خود از هر تب بخش ترمینال دسترسی داشته باشید:
⦁ $ curl -X POST -H Content-Type: application/json” –data ‘{ query”: { bios { name { first, last } } }” }’ http://example.com

همان آبجکت JSON به شیوه مرحله قبلی را برمی گرداند که شامل هر داده اضافی است که ممکن است با استفاده از یک جهش ، اضافه کرده باشید.
Output
{data”:{bios”:[{name”:{first”:”John”,”last”:”Backus”}},{name”:{first”:”John”,”last”:”McCarthy”}},{name”:{first”:”test”,”last”:”user”}}]}}

اکنون که سرور مجازی GraphQL را از راه دور در دسترس قرار داده اید ، هنگام بستن ترمینال یا راه اندازی مجدد سرور مجازی ، مطمئن شوید که سرور مجازی GraphQL شما متوقف نمیشود. به این ترتیب ، هر زمان که بخواهید درخواست کنید ، پایگاه داده MongoDB شما از طریق سرور مجازی GraphQL قابل دسترسی خواهد بود.
برای انجام این کار ، از بسته npm forever استفاده کنید ، یک ابزار CLI که تضمین می کند اسکریپت های خط فرمان شما به طور مداوم اجرا میشوند یا در صورت بروز هرگونه خرابی مجدداً راه اندازی می شوند.
Forever را با npm نصب کنید:
⦁ $ sudo npm install forever -g

پس از انجام کار نصب ، آن را به فایل pack.json اضافه کنید:
package.json
{
name”: project_name”,
version”: 1.0.0”,
description”: ”,
main”: index.js”,
scripts”: {
start”: node index.js”,
deploy”: forever start –minUptime 2000 –spinSleepTime 5 index.js”,
test”: echo \”Error: no test specified\” && exit 1″
},

برای راه اندازی سرور مجازی GraphQL با forever فعال ، دستور زیر را اجرا کنید:
⦁ $ npm run deploy

با این کار فایل index.js حاوی سرور مجازی GraphQL با forever شروع می شود و اطمینان حاصل می کند که در صورت عدم موفقیت ، با حداقل زمان اجرای 2000 میلی ثانیه و 5 میلی ثانیه در هر راه اندازی مجدد کار خود را ادامه می دهید. سرور مجازی GraphQL اکنون به طور مداوم در پس زمینه اجرا می شود ، بنابراین دیگر وقتی می خواهید یک درخواست به سرور مجازی ارسال کنید ، دیگر نیازی به باز کردن تب جدید ندارید.
اکنون یک سرور مجازی GraphQL ایجاد کرده اید که از MongoDB برای ذخیره داده استفاده می کند و برای دسترسی به سرور مجازی از راه دور تنظیم شده است. در مرحله بعدی می توانید playground را درGraphiQL را فعال کنید ، که این امکان را برای شما فراهم می کند که سرور مجازی GraphQL را بازرسی کنید.
مرحله 5 – فعال کردن playground GraphiQL
توانایی ارسال درخواستهای cURL به سرور مجازی GraphQL بسیار عالی است ، اما با داشتن یک رابط کاربری که بتواند بلافاصله درخواستهای GraphQL را اجرا کند ، به خصوص هنگام توسعه ، سریعتر خواهد بود. برای این کار می توانید از GraphiQL ، واسط پشتیبانی شده توسط بسته express-Graphql استفاده کنید.
برای فعال کردن GraphiQL ، فایل index.js را ویرایش کنید:
⦁ $ sudo nano index.js

خطوط هایلایت شده زیر را اضافه کنید:
index.js
const app = express();
app.use(‘/graphql’, graphqlHTTP({
schema,
rootValue: resolvers,
context,
graphiql: true
}));
app.listen(4000);

console.log(` Server ready at http://localhost:4000/graphql`);

فایل را ذخیره کنید و از آن خارج شوید.
برای اینکه این تغییرات قابل مشاهده باشند ، با اجرای دستور زیر forever را متوقف شوید:
⦁ $ forever stop index.js

سپس ، دوباره forever را شروع کنید تا آخرین نسخه سرور مجازی QL در حال اجرا را ببینید
⦁ $ npm run deploy

یک مرورگر به آدرس http://example.com باز کنید ، و جایگزین example.com را با نام دامنه یا IP سرور مجازی خود جایگزین کنید. playground GraphiQL را خواهید دید که در آن می توانید درخواست های GraphQL را تایپ کنید.

در سمت چپ این playground می توانید پرس و جوهای GraphQL و جهش ها را تایپ کنید ، در حالی که خروجی در سمت راست playground نشان داده خواهد شد. برای آزمایش اینکه آیا کار می کند ، عبارت زیر را در سمت چپ تایپ کنید:
query {
bios {
name {
first
last
}
}
}

نتیجه مشابه در سمت راست playground ، دوباره با فرمت JSON را نشان میدهد:

اکنون می توانید درخواست های GraphQL را با استفاده از ترمینال و playground GraphiQL ارسال کنید.
نتیجه
در این آموزش پایگاه داده MongoDB را تنظیم کرده و داده ها را از این پایگاه داده با استفاده از GraphQL ، Node.js و Express برای سرور مجازی بازیابی می کنید و جهش میدهید. علاوه بر این ، Nginx را پیکربندی کردید تا امکان دسترسی از راه دور به این سرور مجازی را فراهم کند. نه تنها می توانید درخواست ها را به طور مستقیم به این سرور مجازی GraphQL ارسال کنید ، بلکه می توانید از GraphiQL به عنوان یک رابط GraphQL در مرورگر GraphQL نیز استفاده کنید.
اگر می خواهید در مورد GraphQL اطلاعات کسب کنید ، می توانید فیلم ضبط شده از ارائه من در GraphQL را در NDC {London watch} مشاهده کنید یا برای آموزش در مورد GraphQL به وب سایت howtographql.com مراجعه کنید. برای مطالعه چگونگی تعامل GraphQL با سایر فناوری ها ، به آموزش نحوه تنطیم دستی سرور مجازی Prisma در اوبونتو 18.04 نگاهی بیاندازید، و برای کسب اطلاعات بیشتر در مورد ساخت برنامه های کاربردی با MongoDB ، به نحوه ایجاد بلاگ با Nest.js ، MongoDB و Vue.js مراجعه کنید.

 

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

استفاده از nsh برای دستورات از راه دور اوبونتو 18 –  میزبانی وب سایت با Caddy اوبونتو 18

تنظیم سرور ذخیره سازی آبجکت با استفاده از Minio در اوبونتو 18  –  ضبط و اشتراک گذاری ترمینال با Terminalizer اوبونتو

تنظیم مسیریابی شرطی و پاسخگو با React Router v4  –  ایجاد یک URL کوتاه کننده با Django و GraphQL

یک برنامه ردیابی سلامت را با React ،GraphQL و Okta –  ساخت برنامه چت زمان حقیقی React و GraphQL

به روزرسانی فیلترهای مرتب سازی Angular (زاویه ای) –  با استفاده از React ، Superagent و API اینستاگرام

نحوه ساختن یک برنامه جهانی با Nuxt.js و Django –  دکمه دانلود با ریزتعاملات با CSS ، anime.js و segment.js

نحوه اضافه کردن عکسهای پیشرفته در Node و Express  –  با Vue ،GraphQL و Apollo Client یک وبلاگ ساخت

یک برنامه SSR با روتر Preact ، Unistore و Preact بسازید  –  

 که بسیاری از کاربران به عملکرد سیستم دیتابیس مانند MySQL نیاز دارند ، تعامل با سیستم صرفاً از طریق سرویس دهنده خط فرمان MySQL نیاز به آشنایی با زبان SQL دارد ، بنابراین ممکن است برای بعضی ها رابط ارجح نباشد.
phpMyAdmin به گونه ای ایجاد شده است که کاربران بتوانند از طریق یک رابط وب بصری با MySQL در تعامل باشند که در کنار یک محیط توسعه PHP اجرا شود. در این راهنما ، در مورد نحوه نصب phpMyAdmin روی 

سرور Nginx و نحوه پیکربندی 

سرور برای افزایش امنیت بحث خواهیم کرد.
توجه: در هنگام استفاده از نرم افزاری مانند phpMyAdmin ملاحظات امنیتی مهمی وجود دارد ، از آنجا که بر روی 

سرور پایگاه داده اجرا می شود ، با اعتبارات پایگاه داده در ارتباط است ، و کاربر را قادر می سازد تا به راحتی پرس و جوهای SQL دلخواه را در پایگاه داده شما اجرا کند. از آنجا که phpMyAdmin یک برنامه PHP با استقرار گسترده است ، اغلب مورد حمله قرار می گیرد. در این آموزش برخی اقدامات امنیتی که می توانید انجام دهید را مرور خواهیم کرد تا بتوانید تصمیماتی آگاهانه بگیرید.

پیش نیازها
قبل از شروع این راهنما ، به موارد زیر نیاز خواهید داشت:
• 

سرور Ubuntu 18.04 که دارای یک پشته LEMP (Linux ، Nginx ، MySQL و PHP) و ایمن شده با ufw باشد ، همانطور که در راهنمای تنظیم اولیه 

سرور برای اوبونتو 18.04 شرح داده شده است. اگر هنوز 

سرور خود را تنظیم نکرده اید ، می توانید راهنمای نصب پشته LEMP در اوبونتو 18.04 را دنبال کنید.
• دسترسی به این 

سرور به عنوان یک کاربر غیر ریشه با امتیازات sudo.
از آنجا که phpMyAdmin احراز هویت را با استفاده از اعتبار MySQL انجام می دهد ، توصیه می شود یک SSL / TLS نصب کنید تا بتوانید ترافیک رمزگذاری شده بین 

سرور و کلاینت را فعال کنید. اگر دامنه موجود که با گواهی معتبر پیکربندی شده باشد ندارید ، می توانید این راهنما را در مورد ایمن سازی Nginx با let’s Encrypt در Ubuntu 18.04 دنبال کنید.
هشدار: اگر گواهی SSL / TLS را روی 

سرور نصب نکرده اید و همچنان مایل به ادامه کار هستید ، لطفاً دسترسی از طریق تونل های SSH را همانطور که در مرحله 5 این راهنما توضیح داده شده است ، در نظر بگیرید.
هنگامی که این پیش نیازها را انجام دادید ، می توانید با ادامه این راهنما پیش بروید.
مرحله 1 – نصب phpMyAdmin
اولین کاری که باید انجام دهیم نصب phpMyAdmin روی 

سرور LEMP است. ما می خواهیم از مخازن پیش فرض اوبونتو برای رسیدن به این هدف استفاده کنیم.
بیایید با به روزرسانی فهرست بسته 

سرور با دستور زیر شروع کنیم:
⦁ $ sudo apt update

اکنون می توانید phpMyAdmin را با این دستور نصب کنید:
⦁ $ sudo apt install phpmyadmin

در طی مراحل نصب ، از شما خواسته می شود تا وب 

سرور (Apache یا Lighthttp) را برای پیکربندی انتخاب کنید. از آنجا که ما از Nginx به عنوان وب 

سرور استفاده می کنیم ، نباید اینجا انتخابی انجام دهیم. برای رفتن به مرحله بعدی ، tab را فشار داده و سپس OK را بزنید.
در مرحله بعد ، از شما خواسته می شود که برای پیکربندی پایگاه داده برنامه از dbconfig-common استفاده شود یا خیر. yes را انتخاب کنید. این کار پایگاه داده داخلی و کاربر admin را برای phpMyAdmin تنظیم می کند. از شما خواسته می شود رمز جدید را برای کاربر phpmyadmin MySQL تعریف کنید. همچنین می توانید آن را خالی بگذارید و به phpMyAdmin اجازه دهید بطور تصادفی یک رمز عبور ایجاد کند.
اکنون نصب تمام می شود. برای اینکه 

سرور وب Nginx به درستی فایلهای phpMyAdmin را پیدا و ارائه کند ، باید یک لینک نمادین از فایلهای نصب به دیرکتوری اصلی سند Nginx بسازیم:
⦁ $ sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

نصب phpMyAdmin شما اکنون عملیاتی است. برای دسترسی به رابط ، به نام دامنه یا آدرس IP عمومی 

سرور خود که پس از آن / phpmyadmin در مرورگر وب وجود دارد ، بروید:
https://server_domain_or_IP/phpmyadmin

همانطور که قبلاً نیز گفته شد ، phpMyAdmin با استفاده از اعتبار MySQL ، احراز هویت را کنترل می کند ، به این معنی که شما باید از همان نام کاربری و رمز عبوری که معمولاً برای اتصال به بانک اطلاعاتی از طریق کنسول یا از طریق API استفاده می کنید ، استفاده نمایید. اگر در ایجاد کاربران MySQL به کمک نیاز دارید ، این راهنما را در مورد نحوه مدیریت بانک اطلاعاتی SQL بررسی کنید.
توجه: ورود به سیستم phpMyAdmin به عنوان کاربر ریشه MySQL توصیه نمی شود زیرا خطرات امنیتی قابل توجهی را به همراه دارد. در مرحله بعدی این راهنما نحوه غیرفعال کردن ورود به سیستم ریشه را مشاهده خواهیم کرد.
نصب phpMyAdmin شما باید در این مرحله کاملاً عملی باشد. اما ، با نصب یک رابط وب ، 

سرور پایگاه داده MySQL خود را در معرض دنیای خارج قرار می دهیم. به دلیل محبوبیت phpMyAdmin و مقادیر زیادی از داده هایی که ممکن است به آنها دسترسی پیدا کند ، نصب های این چنینی ، اهداف متداول برای حملات هستند. در بخش های بعدی این راهنما ، چند روش مختلف را مشاهده خواهیم کرد که با استفاده از آن می توانیم نصب phpMyAdmin را ایمن تر کنیم.
مرحله 2 – تغییر موقعیت پیش فرض phpMyAdmin
یکی از اساسی ترین راه های محافظت از نصب phpMyAdmin ، دشوار نمودن دسترسی به آن است. رباتها مسیرهای متداول مانند phpmyadmin ، pma ، admin ، mysql و مواردی از این دست را اسکن می کنند. تغییر آدرس URL رابط از / phpmyadmin به چیزی غیر استاندارد ، اسکریپت های خودکار را برای پیدا کردن نصب و راه اندازی phpMyAdmin و تلاش برای حملات مخرب را دشوارتر می کند.
با نصب phpMyAdmin ، پیوندی نمادین ایجاد کرده ایم که به / usr / share / phpmyadmin اشاره دارد، جایی که فایل های برنامه واقعی قرار دارند. برای تغییر URL رابط phpMyAdmin ، این پیوند نمادین را تغییر نام خواهیم داد.
ابتدا ، اجازه دهید به دیرکتوری اصلی سند Nginx برویم و لیست فایل هایی که در آن قرار دارد را فهرست کنیم تا درک بهتری از تغییراتی که ایجاد خواهیم کرد داشته باشیم:
⦁ $ cd /var/www/html/

⦁ $ ls -l
خروجی زیر را دریافت خواهید کرد:
Output
total 8
-rw-r–r– 1 root root 612 Apr 8 13:30 index.nginx-debian.html
lrwxrwxrwx 1 root root 21 Apr 8 15:36 phpmyadmin -> /usr/share/phpmyadmin

خروجی نشان می دهد که ما یک لینک نمادین به نام phpmyadmin در این دیرکتوری داریم. می توانیم این نام پیوند را به هر آنچه دوست داریم تغییر دهیم. که به نوبه خود URL دسترسی phpMyAdmin را تغییر می دهد ، و می تواند به پنهان کردن نقطه انتهایی از دسترس رباتهای رمزگذاری شده برای جستجوی نام نقاط پایانی معمول کمک کند.
نامی را انتخاب کنید که هدف نقطه پایانی را مبهم کند. در این راهنما ، نقطه پایانی را /nothingtosee می نامیم ، اما شما باید یک نام جایگزین انتخاب کنید. برای انجام این کار ، پیوند را تغییر نام می دهیم:
⦁ $ sudo mv phpmyadmin nothingtosee

⦁ $ ls -l

پس از اجرای دستورات فوق ، این خروجی را دریافت خواهید کرد:
Output
total 8
-rw-r–r– 1 root root 612 Apr 8 13:30 index.nginx-debian.html
lrwxrwxrwx 1 root root 21 Apr 8 15:36 nothingtosee -> /usr/share/phpmyadmin

اکنون ، اگر به URL قدیمی بروید ، خطای 404 را دریافت خواهید کرد:
https://server_domain_or_IP/phpmyadmin

رابط phpMyAdmin شما اکنون با URL جدیدی که تازه پیکربندی کرده ایم در دسترس خواهد بود:
https://server_domain_or_IP/nothingtosee

با ایجاد موقعیت واقعی phpMyAdmin در 

سرور ، رابط کاربری آن را در برابر اسکن خودکار و حملات دستی محافظت می کنید.
مرحله 3 – غیرفعال کردن ورود به عنوان ریشه
در MySQL و همچنین در سیستم های معمول لینوکس ، حساب اصلی یک حساب کاربری ویژه با دسترسی نامحدود به سیستم است. علاوه بر اینکه یک حساب ممتاز است ، یک نام ورود به سیستم شناخته شده است ، و آن را به یک هدف آشکار برای حملات مخرب تبدیل می کند. برای به حداقل رساندن خطرات ، phpMyAdmin را به گونه ای پیکربندی می کنیم تا هرگونه تلاش برای ورود به سیستم از سوی کاربر ریشه را رد کنیم. به این ترتیب ، حتی اگر اعتبارات معتبری برای ریشه کاربر ارائه دهید ، باز هم یک خطای ” access denied ” دریافت خواهید کرد و مجاز به ورود به سیستم نخواهید بود.
از آنجا که ما برای پیکربندی و ذخیره تنظیمات phpMyAdmin از dbconfig-common استفاده کردیم ، پیکربندی پیش فرض در حال حاضر در بانک اطلاعاتی ذخیره می شود. برای تعریف تنظیمات سفارشی باید یک فایل config.inc.php جدید ایجاد کنیم.
حتی اگر فایلهای PHP برای phpMyAdmin در داخل / usr / share / phpmyadmin قرار داشته باشند ، برنامه از فایلهای پیکربندی مستقر در / etc / phpmyadmin استفاده می کند. یک فایل تنظیمات سفارشی جدید را در داخل /etc/phpmyadmin/conf.d ایجاد خواهیم کرد و نام آن را pma_secure.php مینامیم:
⦁ $ sudo nano /etc/phpmyadmin/conf.d/pma_secure.php

فایل پیکربندی زیر شامل تنظیمات لازم برای غیرفعال کردن ورودهای بدون رمز (AllowNoPassword روی false تنظیم شده است) و ورود ریشه به سیستم است (AllowRoot روی false تنظیم شده است):
/etc/phpmyadmin/conf.d/pma_secure.php
<?php

# PhpMyAdmin Settings
# This should be set to a random string of at least 32 chars
$cfg[‘blowfish_secret’] = ‘3!#32@3sa(+=_4?),5XP_:U%%8\34sdfSdg43yH#{o’;

$i=0;
$i++;

$cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’;
$cfg[‘Servers’][$i][‘AllowNoPassword’] = false;
$cfg[‘Servers’][$i][‘AllowRoot’] = false;

?>

پس از ویرایش فایل ، با فشار دادن CTRL + X سپس y ، تغییرات را تأیید کنید و ENTER را بزنید. تغییرات بطور خودکار اعمال می شوند. اگر اکنون صفحه ورود را مجدد لود کنید و سعی کنید به عنوان root وارد شوید ، یک خطای Access Denied دریافت خواهید کرد:

اکنون ورود به سیستم به عنوان ریشه در نصب phpMyAdmin شما ممنوع است. این اقدامات امنیتی باعث می شود جلوی اسکریپت های مخرب در تلاش برای حدس زدن رمزعبور پایگاه داده اصلی روی 

سرور شما گرفته شود. علاوه بر این ، استفاده از حسابهای MySQL با امتیازات کمتر را برای دسترسی به رابط وب phpMyAdmin اعمال می کند ، که به خودی خود یک روش مهم امنیتی است.
مرحله 4 – ایجاد یک دروازه احراز هویت
پنهان کردن نصب phpMyAdmin در یک مکان غیرمعمول ممکن است برخی از ربات های خودکار را که در حال اسکن شبکه هستند ، گمراه کند ، اما در برابر حملات هدفمند بی فایده است. برای محافظت بهتر از یک برنامه وب با دسترسی محدود ، به طور کلی متوقف کردن مهاجمان قبل از اینکه حتی بتوانند به برنامه دسترسی پیدا کنند، مفیدتر است. به این ترتیب ، آنها نمی توانند از سوء استفاده های عمومی و حملات مخرب برای حدس زدن اعتبارات دسترسی استفاده کنند.
در مورد خاص phpMyAdmin ، محفوظ نگه داشتن رابط ورود به سیستم حتی مهمتر نیز هست. با در دسترس نگه داشتن آن به صورت جهانی ، یک بستر آماده برای مهاجمین ارائه می دهید تا اعتبارات بانک اطلاعاتی شما را حدس بزنند.
افزودن یک لایه اضافی تأیید اعتبار به نصب phpMyAdmin شما را قادر می سازد امنیت را افزایش دهید. کاربران باید قبل از دیدن صفحه ورود به سایت phpMyAdmin از اعلان تأیید هویت HTTP عبور کنند. اکثر 

سرور های وب ، از جمله Nginx ، این قابلیت را به صورت بومی ارائه می دهند.
برای انجام این کار ، ابتدا باید یک فایل رمز عبور برای ذخیره اعتبارات تأیید ایجاد کنیم. Nginx مستم رمزگذاری پسوردها با استفاده از تابع crypt () است. مجموعه OpenSSL ، که باید از قبل روی 

سرور شما نصب باشد ، این قابلیت را دارد.
برای ایجاد پسورد رمزگذاری شده ، این دستور را تایپ کنید:
⦁ $ openssl passwd

از شما خواسته می شود رمز عبوری را که می خواهید استفاده کنید وارد کنید و آن را تأیید نمایید. سپس این ابزار نسخه رمزگذاری شده رمزعبور را نمایش می دهد که چیزی شبیه به این خواهد بود:
Output
O5az.RSPzd.HE
این عبارت را کپی کنید ، زیرا لازم است که آن را در فایل تأیید اعتبار مورد استفاده قرار دهید.
اکنون ، یک فایل تأیید اعتبار ایجاد کنید. ما این فایل را pma_pass می نامیم و آن را در دیرکتوری تنظیمات Nginx قرار می دهیم:
⦁ $ sudo nano /etc/nginx/pma_pass

در این فایل ، نام کاربری مورد نظر خود را مشخص می کنید و به دنبال آن یک کولون (:) و سپس نسخه رمزگذاری شده پسورد را که از برنامه Openwl passwd دریافت کرده اید ، قرار دهید.
ما میخواهیم نام کاربر خود را Sammy قرار دهیم ، اما شما باید نام کاربری دیگری را انتخاب کنید. فایل باید به صورت زیر باشد:
/etc/nginx/pma_pass
sammy:O5az.RSPzd.HE
پس از انجام این کار ، فایل را ذخیره کنید و ببندید.
اکنون ما آماده اصلاح فایل پیکربندی Nginx هستیم. برای این راهنما ، از فایل پیکربندی واقع در /etc/nginx/sites-available/example.com استفاده خواهیم کرد. شما باید از فایل پیکربندی مربوط به Nginx برای مکان وب استفاده کنید که phpMyAdmin در حال حاضر میزبان آن است. این فایل را در ویرایشگر متن خود باز کنید تا کار را شروع کنید:
⦁ $ sudo nano /etc/nginx/sites-available/example.com

بلوک 

سرور و بخش location / را در آن قرار دهید. برای مطابقت با مسیر فعلی phpMyAdmin در 

سرور ، باید یک بخش location جدید در این بلوک ایجاد کنیم. در این راهنما ، مکان phpMyAdmin نسبت به ریشه وب /nothingtosee است:
/etc/nginx/sites-available/default
server {
. . .

location / {
try_files $uri $uri/ =404;
}

location /nothingtosee {
# Settings for phpMyAdmin will go here
}

. . .
}

در این بلوک ، باید دو دستورالعمل مختلف را تنظیم کنیم: auth_basic ، که پیامی را که در اعلان تأیید نمایش داده می شود معرفی میکند، و auth_basic_user_file ، که به فایلی که ایجاد کردیم ، اشاره می کند. فایل پیکربندی شما پس از اتمام اینگونه به نظر می رسد:
/etc/nginx/sites-available/default
server {
. . .

location /nothingtosee {
auth_basic Admin Login”;
auth_basic_user_file /etc/nginx/pma_pass;
}

. . .
}

سپس ، فایل را ذخیره کنید و ببندید. برای بررسی صحت فایل پیکربندی ، می توانید این دستور را اجرا کنید:
⦁ $ 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

برای فعال کردن دروازه احراز هویت جدید ، باید 

سرور وب را مجدد لود کنید:
⦁ $ sudo systemctl reload nginx

حال اگر از URL phpMyAdmin در مرورگر وب خود بازدید می کنید ، نام کاربری و رمز عبوری که به فایل pma_pass اضافه کرده اید ، از شما خواسته میشود:
https://server_domain_or_IP/nothingtosee

هنگامی که اعتبارات خود را وارد کردید ، به صفحه استاندارد ورود به سیستم phpMyAdmin منتقل می شوید.
توجه: اگر ریفرش صفحه کار نمی کند ، ممکن است مجبور شوید حافظه نهان خود را پاک کنید یا اگر قبلاً از phpMyAdmin استفاده کرده اید ، از یک مرورگر دیگر استفاده کنید.
این دروازه علاوه بر فراهم کردن یک لایه امنیتی بیشتر ، به حفظ فایل های MySQL در برابر تلاش برای تأیید اعتبارات Spammy کمک می کند.
مرحله 5 – تنظیم دسترسی از طریق تونل های رمزگذاری شده (اختیاری)
برای افزایش امنیت ، میتوان نصب phpMyAdmin را فقط برای هاست های مجاز قفل نکرد. می توانید هاست های مجاز را در فایل تنظیمات Nginx خود لیست کنید تا هرگونه درخواست از آدرس IP که در لیست موجود نیست ، رد شود.
حتی اگر این ویژگی در برخی موارد استفاده کافی باشد ، همیشه بهترین راه حل طولانی مدتی نیست ، عمدتا به این دلیل که اکثر افراد از آدرس های IP ایستا به اینترنت دسترسی ندارند. به محض دریافت یک آدرس IP جدید از Internet provider خود ، نمی توانید به رابط phpMyAdmin دسترسی پیدا کنید تا زمانی که فایل پیکربندی Nginx را با آدرس IP جدید خود به روز کنید.
برای یک راه حل طولانی مدت قوی تر ، می توانید از کنترل دسترسی مبتنی بر IP استفاده کنید تا تنظیماتی را ایجاد کنید که در آن کاربران فقط در صورت دسترسی به یک آدرس IP مجاز یا محلی از طریق تونل سازی SSH به رابط phpMyAdmin شما دسترسی داشته باشند. در بخش های زیر خواهیم دید که چگونه این کار را انجام دهیم.
ترکیب کنترل دسترسی مبتنی بر IP با تونل SSH امنیت را به شدت افزایش می دهد زیرا دسترسی از طریق اینترنت عمومی (به جز IP های مجاز) را کاملاً مسدود می کند و علاوه بر این کانال ایمن بین کاربر و 

سروراز طریق تونل های رمزگذاری شده فراهم میکند.
تنظیم کنترل دسترسی مبتنی بر IP در Nginx
در Nginx ، کنترل دسترسی مبتنی بر IP را می توان در بلوک location مربوطه یک سایت معین ، با استفاده از بخشنامه های allow و deny تعریف کرد. به عنوان مثال ، اگر فقط می خواهیم درخواست هایی را از یک هاست معین دریافت کنیم ، باید دو خط زیر را در این قسمت ، داخل بلوک location مربوطه برای سایت قرار دهیم که می خواهیم از آن محافظت کنیم:
allow hostname_or_IP;
deny all;

شما می توانید هر تعداد هاست که می خواهید اجازه دهید ، فقط باید یک خط allow برای هر هاست / IP مجاز در داخل بلوک location مربوطه برای سایتی که از آن محافظت می کنید درج کنید. دستورالعملها به همان ترتیبی که ذکر شده اند ارزیابی می شوند ، تا زمانی که تطابق پیدا شود یا درخواست به دلیل deny all رد شود.
اکنون Nginx را پیکربندی خواهیم کرد تا فقط به درخواستهایی که از localhost یا آدرس IP فعلی شما آمده اند اجازه ورود دهیم. ابتدا ، باید آدرس IP فعلی عمومی را که دستگاه محلی شما برای اتصال به اینترنت استفاده می کند ، بدانید. روش های مختلفی برای به دست آوردن این اطلاعات وجود دارد. برای سادگی ، می خواهیم از خدمات ارائه شده توسط ipinfo.io استفاده کنیم. می توانید URL https://ipinfo.io/ip را در مرورگر خود باز کنید ، یا دستور زیر را از دستگاه محلی خود اجرا کنید:
⦁ $ curl https://ipinfo.io/ip

باید یک آدرس IP ساده به عنوان خروجی دریافت کنید ، مانند این:
Output
203.0.113.111

این آدرس IP عمومی فعلی شما است. ما بلوک موقعیت مکانی phpMyAdmin را پیکربندی خواهیم کرد تا فقط به درخواستهایی که از آن IP می آیند ، علاوه بر localhost ، اجازه دهیم. باید بار دیگر پیکربندی phpMyAdmin را در داخل /etc/nginx/sites-available/example.com ویرایش کنیم.
فایل پیکربندی Nginx را با استفاده از ویرایشگر خط فرمان مورد نظر خود باز کنید:
⦁ $ sudo nano /etc/nginx/sites-available/example.com

از آنجا که از قبل یک قانون دسترسی در پیکربندی فعلی خود داریم ، باید آن را با کنترل دسترسی مبتنی بر IP ترکیب کنیم و از دستور satisfy all استفاده نماییم. به این ترتیب ، می توانیم تأیید هویت فعلی HTTP را برای افزایش امنیت سریع انجام دهیم.
به این ترتیب پیکربندی phpMyAdmin Nginx شما پس از انجام ویرایش اینگونه به نظر می رسد:
/etc/nginx/sites-available/example.com
server {
. . .

location /nothingtosee {
satisfy all; #requires both conditions

allow 203.0.113.111; #allow your IP
allow 127.0.0.1; #allow localhost via SSH tunnels
deny all; #deny all other sources

auth_basic Admin Login”;
auth_basic_user_file /etc/nginx/pma_pass;
}

. . .
}

به یاد داشته باشید که nothingtosee را با مسیر واقعی جایی که phpMyAdmin در آن قرار دارد ، و آدرس IP هایلایت شده را با آدرس IP عمومی فعلی خود جایگزین کنید.
هنگام کار ، فایل را ذخیره کنید و ببندید. برای بررسی صحت فایل پیکربندی ، می توانید این دستور را اجرا کنید:
⦁ $ 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

اکنون 

سرور وب را مجدد لود کنید تا تغییرات اعمال شوند:
⦁ $ sudo systemctl reload nginx

از آنجا که آدرس IP شما صریحاً به عنوان هاست مجاز ذکر شده است ، دسترسی شما نباید مختل شود. هر کس دیگری که سعی در دسترسی به نصب phpMyAdmin داشته باشد، یک خطای 403 (ممنوعه) دریافت میکند:
https://server_domain_or_IP/nothingtosee

در بخش بعدی ، نحوه استفاده از تونل SSH برای دسترسی به 

سرور وب را از طریق درخواست های محلی خواهیم دید. به این ترتیب ، شما حتی می توانید آدرس IP خود را تغییر دهید و به رابط phpMyAdmin دسترسی پیدا کنید.
دسترسی به phpMyAdmin از طریق یک تونل رمزگذاری شده
تونل زنی SSH به عنوان روشی جهت هدایت ترافیک شبکه از طریق کانال های رمزگذاری شده کار می کند. با اجرای یک دستور ssh مشابه آنچه برای ورود به 

سرور استفاده می کنید ، می توانید یک تونل” ایمن بین دستگاه محلی و آن 

سرور ایجاد کنید. همه ترافیک هایی که وارد یک پورت محلی خاص میشوند، می توانند از طریق تونل رمزگذاری شده هدایت شوند و قبل از دسترسی به اینترنت ، از 

سرور راه دور به عنوان یک پروکسی استفاده کنند. مشابه چیزی است که هنگام استفاده از VPN (شبکه خصوصی مجازی) اتفاق می افتد ، با این حال تنظیم تونل SSH بسیار ساده تر است.
ما از تونل سازی SSH استفاده خواهیم کرد تا درخواستهای خود را به 

سرور وب از راه دور که phpMyAdmin را اجرا می کند ، پروکسی کنیم. با ایجاد یک تونل بین دستگاه محلی و 

سرور که phpMyAdmin در آن نصب شده است ، می توانید درخواست های محلی را به 

سرور وب از راه دور هدایت کنید ، و مهمتر از همه ، ترافیک رمزگذاری می شود و درخواست ها به Nginx می رسند انگار که از localhost می آیند. به این ترتیب ، مهم نیست که از چه آدرس IP به آن وصل شوید ، می توانید به طور ایمن به رابط phpMyAdmin دسترسی پیدا کنید.
از آنجا که ترافیک بین دستگاه محلی شما و 

سرور وب از راه دور رمزگذاری می شود ، این گزینه جایگزین مناسبی برای موقعیت هایی است که نمی توانید گواهی SSL / TLS را در 

سرور وبی نصب کنید که دارای phpMyAdmin است.
از دستگاه محلی خود ، این دستور را هر زمان که نیاز به دسترسی به phpMyAdmin داشتید، اجرا کنید:
بگذارید هر بخش از دستور را بررسی کنیم:
⦁ ssh user@server_domain_or_IP -L 8000:localhost:80 -L 8443:localhost:443 -N

⦁ user: کاربر SSH برای اتصال به 

سرور ی که phpMyAdmin در آن کار می کند
⦁ hostname_or_IP: هاست SSH که phpMyAdmin در آن اجرا می شود
⦁ -L 8000: localhost: 80 مسیر HTTP را در پورت 8000 تغییر مسیر می دهد
⦁ -L 8443: localhost: 443 مسیر ترافیک HTTPS در پورت 8443 را تغییر میدهد
⦁ -N: دستورات از راه دور را اجرا نمی کند
توجه: این دستور تا زمانی که با CTRL + C قطع نشود ، ترمینال را مسدود می کند ، در این صورت اتصال SSH پایان می یابد و تغییر مسیر بسته را متوقف می کند. اگر ترجیح می دهید این دستور را در حالت پس زمینه اجرا کنید ، می توانید از گزینه –f SSH استفاده کنید.

اکنون به مرورگر خود بروید و server_domain_or_IP را با localhost:PORT جایگزین کنید، جایی که PORT برای HTTP ، 8000 و برای HTTPS، 8443 است:
http://localhost:8000/nothingtosee
https://localhost:443/nothingtosee

توجه: اگر از طریق https به phpMyAdmin دسترسی دارید ، ممکن است یک پیام هشدار دریافت کنید که امنیت گواهی SSL را سؤال می کند. این اتفاق به این دلیل است که نام دامنه ای که شما در آن استفاده می کنید (localhost) با آدرس ثبت شده در گواهی نامه (دامنه ای که phpMyAdmin در واقع در آن ارائه می شود) مطابقت ندارد. در این صورت ادامه کار بی خطر خواهد بود.

اکنون همه درخواست های localhost: 8000 (HTTP) و localhost: 8443 (HTTPS) از طریق یک تونل امن به برنامه راه دور phpMyAdmin خود هدایت می شوند. نه تنها با غیرفعال کردن دسترسی عمومی به phpMyAdmin ، امنیت را افزایش داده اید ، بلکه با استفاده از یک تونل رمزگذاری شده برای ارسال و دریافت داده ، از تمام ترافیک بین رایانه محلی و 

سرور از راه دور نیز محافظت می کنید.
اگر می خواهید استفاده از تونل زنی SSH را برای هرکسی که می خواهد به رابط phpMyAdmin شما (از جمله خودتان) دسترسی داشته باشد ، اعمال کنید ، می توانید با حذف سایر IPهای مجاز دیگر از فایل پیکربندی Nginx این کار را انجام دهید و 127.0.0.1 را به عنوان تنها هاست مجاز برای دسترسی به آن لوکیشن در نظر بگیرید. با توجه به اینکه هیچ کس قادر به درخواست مستقیم به phpMyAdmin نیست ، می توانید تأیید هویت HTTP را برای ساده سازی ستاپ خود حذف کنید. فایل پیکربندی شما در چنین سناریویی این گونه خواهد بود:
/etc/nginx/sites-available/example.com
server {
. . .

location /nothingtosee {
allow 127.0.0.1; #allow localhost only
deny all; #deny all other sources
}

. . .
}

هنگامی که پیکربندی Nginx را با sudo systemctl reload nginx مجدد لود کنید ، نصب phpMyAdmin شما قفل می شود و کاربران برای دسترسی به رابط phpMyAdmin از طریق درخواست های هدایت شده ، باید از تونل های SSH استفاده کنند.
نتیجه
در این آموزش ، ما شاهد نحوه نصب phpMyAdmin در Ubuntu 18.04 در حال اجرای Nginx به عنوان 

سرور وب بودیم. همچنین روشهای پیشرفته ای را برای تأمین امنیت نصب phpMyAdmin در اوبونتو ، مانند غیرفعال کردن ورود کاربر ریشه به سیستم ، ایجاد یک لایه بیشتر تأیید اعتبار ، و استفاده از تونل SSH برای دسترسی به نصب phpMyAdmin فقط از طریق درخواست های محلی را پوشش داده ایم.
پس از اتمام این آموزش ، باید بتوانید پایگاه داده MySQL خود را از یک رابط وب ایمن مدیریت کنید. این رابط کاربری بیشتر عملکردهای موجود از طریق خط فرمان MySQL را در معرض دید شما قرار می دهد. می توانید پایگاه های داده و شماتیک را بررسی کنید ، پرس و جوها را اجرا کنید و مجموعه ها و ساختارهای جدید داده ایجاد کنید.

 

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

استفاده از nsh برای دستورات از راه دور اوبونتو 18 –  

میزبانی وب سایت با Caddy اوبونتو 18

تنظیم سرور ذخیره سازی آبجکت با استفاده از Minio در اوبونتو 18  –  

ضبط و اشتراک گذاری ترمینال با Terminalizer اوبونتو

تنظیم مسیریابی شرطی و پاسخگو با React Router v4  –  

ایجاد یک URL کوتاه کننده با Django و GraphQL

یک برنامه ردیابی سلامت را با React ،GraphQL و Okta –  

ساخت برنامه چت زمان حقیقی React و GraphQL

به روزرسانی فیلترهای مرتب سازی Angular (زاویه ای) –  

با استفاده از React ، Superagent و API اینستاگرام

نحوه ساختن یک برنامه جهانی با Nuxt.js و Django –  

دکمه دانلود با ریزتعاملات با CSS ، anime.js و segment.js

نحوه اضافه کردن عکسهای پیشرفته در Node و Express  –  

با Vue ،GraphQL و Apollo Client یک وبلاگ ساخت

یک برنامه SSR با روتر Preact ، Unistore و Preact بسازید  –  

ساخت برنامه های وب پیشرونده با Angular

اشکال زدایی JavaScript در تولید با نقشه های منبع  –  

می توان با Koa برنامه سلام جهانی” ساخت

ساختن یک برنامه با Node ، React ، Okta  –   

مدیریت حالت فرم در React با Redux Form

نحوه تنظیم Laravel ، Nginx و MySQL  –  

ارتقاء از AngularJS به Angular با ngUpgrade

استفاده از ویژوال استودیو از راه دور  –  

احراز هویت API با JSON Web Tokens و Passport

راه اندازی یک پروژه React با Parcel  –  

ایجاد Swiper مانند Netflix را در Vue

ساختن یک ربات تلگرام با Laravel و BotMan  –  

استفاده از map، filter، و reduce در جاوااسکریپت

چگونه می توان موتور جستجوی زمان واقعی را با Vue  –  

ساختن سیستم مستندات (Documentation) با Vue و VuePress

استفاده از اشتراک زنده با کد ویژوال استودیو  –  

ساخت یک مقیاس اندازه گیری قدرت رمز عبور را در React

شروع عملی GraphQL با Node.js و Express  –  

ساخت یک برنامه آب و هوا در Django

نحوه نصب Discourse روی Ubuntu 18  –  

تأیید رمز عبور با استفاده از درخواست فرم Laravel

نحوه نصب MySQL در CentOS 8  –  

استفاده از پسوند PDO PHP برای انجام تراکنش MySQL

نصب و پیکربندی SNMP Daemon و Client در Ubuntu 18  –  

نصب Linux، Nginx، MariaDB،PHP در Debian 10

 

 

کلمات کلیدی خرید سرور

خرید vps – 

خرید سرور مجازی – 

خرید سرور – 

سرور هلند – 

فروش vps – 

سرور مجازی آمریکا – 

خریدvps – 

سرور مجازی هلند – 

فروش سرور مجازی – 

سرور آمریکا – 

vps – 

سرور مجازی انگلیس – 

سرور مجازی آلمان – 

سرور مجازی کانادا – 

خرید vps آمریکا – 

خرید وی پی اس – 

سرور – 

خرید سرور مجازی هلند – 

vps خرید – 

سرور مجازی فرانسه – 

سرور مجازی هلند – 

خرید vps آمریکا – 

خرید سرور مجازی ارزان هلند – 

vps – 

خرید vps هلند – 

خرید سرور مجازی آمریکا – 

خرید vps فرانسه – 

تست vps – 

سرور مجازی تست – 

سرور مجازی ویندوز – 

ارزانترین vps – 

خرید وی پی اس – 

vps ارزان – 

 

 

برچسب‌ها:,


آخرین ارسال ها

آخرین جستجو ها