سرور مجازی

۱۱۸ مطلب در مرداد ۱۳۹۹ ثبت شده است

  • ۰
  • ۰

یکی از بزرگترین چالش های توسعه اپلیکیشن ، مرحله نهایی توزیع محصول نهایی به کاربران یا مشتریان شما است. بسیاری از متدولوژی های استقرار اپلیکیشن فاقد سازگاری با کاربر و امنیت هستند و یا روشهایی برای بروزرسانی خودکار یک برنامه پس از نصب را فراهم نمی کنند.
Snap یک فرمت پکیج اپلیکیشن مدرن با ویژگی های تکنیک جعبه شنی و امنیتی قدرتمند از جمله جداسازی سیستم فایل ، بروزرسانی های خودکار و مدیریت وابستگی یکپارچه است. اپلیکیشن های اسنپ ، معروف به اسنپ ها ، می توانند با استفاده از یک برنامه خط فرمان ، دقیقاً شبیه apt یا yum ، دانلود و نصب شوند. اوبونتو با اسنپ از پیش نصب شده همراه است ، به این معنی که مخاطبان گسترده ای برای اپلیکیشن های Snap وجود دارد.
در این آموزش یک برنامه Snap ایجاد کرده و در Snap Store منتشر می کنید.
پیش نیازها
برای تکمیل این آموزش ، به موارد زیر نیاز دارید:
⦁ یک سرور مجازی Ubuntu 18.04 که با دنبال کردن راهنمای راه اندازی سرور مجازی اولیه با اوبونتو 18.04 ، شامل یک کاربر غیر ریشه sudo راه اندازی شده باشد.
⦁ برنامه ای که می خواهید به عنوان Snap پکیج و منتشر کنید. این برنامه ممکن است یک اپلیکیشن پیچیده باشد که شما ایجاد کرده اید ، یک پروژه منبع باز مشترک یا یک برنامه “Hello, world! ” ساده باشد. اگر برنامه ای ندارید ، مرحله 1 این آموزش نحوه تهیه برنامه Hello World را در Go ارائه می دهد.
⦁ یک حساب کاربری در داشبورد برنامه نویسی Snapcraft.
پس از آماده شدن ، به عنوان کاربر غیر ریشه خود وارد سرور مجازی تان شوید.
مرحله 1 – آماده سازی برنامه برای پکیج
در مرحله اول ، با اطمینان از وجود همه چیزهای لازم در یک تک دیرکتوری ، برنامه خود را برای پکیج کردن به عنوان یک برنامه Snap آماده خواهید کرد.
با ایجاد یک دیرکتوری جدید برای Snap و رفتن به داخل آن شروع کنید:
⦁ $ mkdir ~/your-snap

⦁ $ cd ~/your-snap
در مرحله بعد ، اگر از قبل برنامه ای دارید ، یک کپی کامل از کد منبع را برای برنامه خود در دایرکتوری که تازه ایجاد کرده اید، وارد کنید. فرآیند در اینجا بسته به نوع دقیق اپلیکیشنی که پکیج میکنید متفاوت خواهد بود ، با این وجود در صورتی که کد منبع در یک مخزن Git ذخیره شود ، می توانید یک مخزن را در دایرکتوری git init کرده و تمام کد مربوطه را به دست بیاورید.
اگر هنوز برنامه ای ندارید که می خواهید آن را پکیج کنید ، می توانید یک برنامه “Hello world” ایجاد کنید تا در عوض از آن استفاده کنید. اگر برای نوشتن این برنامه با Go به محتوای بیشتری نیاز دارید ، نحوه آموزش نوشتن اولین برنامه خود را در آموزش Go بررسی کنید.

می توانید با ایجاد یک فایل جدید Go و باز کردن آن با استفاده از ویرایشگر متن مورد نظر خود این کار را انجام دهید:
⦁ $ nano helloworld.go
سپس کد زیر را به فایل اضافه کنید:
helloworld.go
package main
import “fmt”
func main() {
fmt.Println(“Hello, world!”)
}

سپس فایل را ذخیره کرده و از آن خارج شوید.
اگر Go را نصب نکردید ، می توانید آن را با استفاده از دستور زیر نصب کنید:
⦁ $ sudo apt install golang-go
پس از نصب Go ، می توانید برنامه جدید خود را اجرا کنید تا بررسی کنید که کار می کند:
⦁ $ go run helloworld.go
خروجی زیر را مشاهده خواهید کرد:
Output
Hello, world!

شما برنامه خود را برای پکیج شدن به عنوان Snap آماده کرده اید. در مرحله بعد نرم افزار مورد نیاز برای شروع فرایند پکیج را نصب خواهید کرد.
مرحله 2 – نصب Snapcraft
در این مرحله Snapcraft را که نام ابزار رسمی پکیج برنامه Snap است ، دانلود و نصب خواهید کرد. Snapcraft در Snap Store موجود است که به صورت پیش فرض در اوبونتو ساخته شده است. این بدان معناست که می توانید Snapcraft را از خط فرمان با استفاده از دستور snap نصب کنید.
دستور snap معادل دستور apt است ، اما شما می توانید از آن برای نصب نرم افزار از Snap Store استفاده کنید ، نه بسته هایی از منابع Apt.
به منظور نصب Snapcraft ، دستور زیر را اجرا کنید:
⦁ $ sudo snap install snapcraft –classic
شما از آرگومان فرمان –classic استفاده می کنید تا Snapcraft بدون ویژگی های سختگیرانه تکنیک جعبه شنی که اسنپ معمولاً از آن استفاده می کند ، نصب شود. Snapcraft به این آرگومان نیاز دارد زیرا نیاز به دسترسی های اختصاصی به سیستم شما برای پکیج کردن قابل اعتماد برنامه ها دارد.

پس از نصب Snapcraft ، خروجی زیر را مشاهده خواهید کرد:
Output
snapcraft 3.9.8 from Canonical✓ installed

در آخر ، می توانید دو بار نصب Snapcraft را با اجرای این دستور بررسی کنید:
⦁ $ snapcraft –version
با این کار خروجی شبیه به این خواهید داشت:
Output
snapcraft, version 3.9.8

اکنون که Snapcraft را نصب کردید ، می توانید پیکربندی و ابرداده را برای برنامه Snap خود تعریف کنید.
مرحله 3 – تعریف پیکربندی و ابرداده برای اسنپ
در این مرحله شروع به تعریف پیکربندی ، ساختار و ابرداده برای برنامه Snap می کنید.
با اطمینان از اینکه هنوز در دایرکتوری برنامه Snap خود کار می کنید شروع کنید:
⦁ $ cd ~/your-snap
سپس ، با استفاده از ویرایشگر متن مورد نظر خود ، فایل snapcraft.yaml را ایجاد و ویرایش کنید:

⦁ $ nano snapcraft.yaml
برای ذخیره کلیه پیکربندی برنامه Snap ، از جمله نام ، توضیحات و نسخه و همچنین تنظیمات مربوط به مدیریت وابستگی و جعبه شنی ، از فایل snapcraft.yaml استفاده خواهید کرد.
با تعیین نام ، خلاصه ، توضیحات و شماره نسخه برنامه خود شروع کنید:
snapcraft.yaml
name: your-snap
summary: A summary of your application in 78 characters or less.
description: |
A detailed description of your application.
The description can have multiple lines.
version: ‘1.0’

اگر می خواهید آن را در Snap Store منتشر کنید ، باید نام Snap شما مشابه نداشته باشد – برنامه های دیگر با همین نام را جستجو کنید تا مطمئن شوید قبلاً انتخاب نشده است.
در مرحله بعد ، می توانید فرمان (های) مورد نظر خود را برای برنامه خود تعریف کنید. این کار باعث می شود Snap شما مستقیماً از خط فرمان Bash به عنوان یک دستورالعمل معمولی استفاده شود.
موارد زیر را به فایل snapcraft.yaml خود اضافه کنید:
snapcraft.yaml
. . .
apps:
your-snap-command:
command: your-snap

your-snap-command نام دستوری است که می خواهید تعریف کنید. به عنوان مثال ، ممکن است شما بخواهید از دستور Helloworld برای اجرای برنامه Hello World استفاده کنید.
از command: your-snap برای این استفاده می کنید که به Snapcraft بگویید هنگام اجرای دستور برنامه چه کاری انجام دهد. در مورد برنامه Hello World ، شما از مقدار helloworld برای ارجاع فایل helloworld.go استفاده می کنید ، این به شما امکان می دهد Snapcraft برنامه شما را با موفقیت اجرا کند.
این کار به پیکربندی مثال زیر منجر میشود:
snapcraft.yaml
apps:
helloworld:
command: helloworld

اگر نام فرمان دقیقاً با نام Snap مطابقت داشته باشد ، می توانید آن را مستقیماً از خط فرمان اجرا کنید. اگر این دستور با اسنپ مطابقت نداشته باشد ، فرمان به طور خودکار با اسنپ پیشوند داده می شود. به عنوان مثال ، helloworld.command1.
در آخر ، می توانید بخش هایی را که برنامه Snap شما را تشکیل می دهند ، تعریف کنید. برنامه های اسنپ از چندین بخش ساخته شده اند که همگی مؤلفه هایی هستند که برنامه شما را تشکیل می دهند. در بسیاری موارد ، فقط یک قسمت وجود دارد ، که خود اپلیکیشن است.
هر قسمت یک افزونه مرتبط دارد. به عنوان مثال ، برای مؤلفه های برنامه شما که در Ruby نوشته شده است ، از افزونه ruby ​​استفاده می شود و برای مؤلفه های نوشته شده در Go ، از افزونه go استفاده می شود.
می توانید از فرمان Snapcraft list-plugins برای شناسایی افزونه های صحیح برای برنامه خود استفاده کنید:
⦁ $ snapcraft list-plugins
با این کار لیستی مشابه موارد زیر حاصل می شود:
Output
ant catkin-tools conda dump gradle make nil python rust
autotools cmake crystal go kbuild maven nodejs qmake scons
catkin colcon dotnet godeps kernel meson plainbox-provider ruby waf

متداول ترین افزونه ها، مختص زبان های برنامه نویسی رایج مانند Go ، Rust ، Ruby یا Python هستند.
پس از شناسایی افزونه های صحیح برای برنامه خود ، می توانید پیکربندی بخش ها را به فایل snapcraft.yaml خود اضافه کنید:
snapcraft.yaml
. . .
parts:
your-snap:
plugin: plugin-name
source: .

برای تعیین مسیر نسبی کد منبع برای برنامه خود از پارامتر پیکربندی source استفاده می کنید. معمولاً این همان دایرکتوری فایل snapcraft.yaml خواهد بود ، بنابراین مقدار منبع یک نقطه واحد (.) است.
توجه: اگر مؤلفه برنامه شما متعلقات لازم را برای ساخت یا اجرای آن دارد ، می توانید با استفاده از ویژگی های build-pack و stage-packets این موارد را مشخص کنید. نام متعلقات مشخص شده به طور خودکار از پکیج منیجر پیش فرض برای سیستم شما گرفته می شوند.
مثلا:
snapcraft.yaml
parts:
your-snap:
plugin: plugin-name
source: .
build-packages:
– gcc
– make
stage-packages:
– libcurl4

برخی از افزونه های Snapcraft گزینه های خاص خود را دارند که ممکن است برای برنامه شما لازم باشد ، بنابراین ارزشمند است صفحات کتابچه راهنمای مربوطه را برای افزونه خود مرور کنید:
⦁ $ snapcraft help plugin-name

در مورد برنامه های Go ، go-importpath را نیز مشخص می کنید. برای پیکربندی Hello world ، منجر به پیکربندی زیر خواهد شد:
snapcraft.yaml
parts:
helloworld:
plugin: go
source: .
go-importpath: helloworld

می توانید فایل snapcraft.yaml خود را باز بگذارید تا در مرحله بعدی پیکربندی بیشتری را اضافه کنید.
شما تنظیمات پایه را برای برنامه Snap خود تعریف کرده اید. در مرحله بعد ، جنبه های امنیتی و جعبه شنی برنامه خود را پیکربندی خواهید کرد.
مرحله 4 – ایمن سازی برنامه Snap
برنامه های اسنپ به گونه ای طراحی شده اند که به اصطلاح در یک محفظه شنی اجرا شوند ، بنابراین در این مرحله شما تکنیک sandboxing را برای Snap خود پیکربندی خواهید کرد. در مرحله اول ، باید جعبه شنی را برای برنامه خود فعال کنید ، که در Snapcraft به confinement شناخته می شود.
موارد زیر را به فایل snapcraft.yaml خود اضافه کنید:
snapcraft.yaml
. . .
confinement: strict

این کار جعبه شنی را برای برنامه شما فعال می کند و از دسترسی آن به اینترنت ، سایر اسنپ های در حال اجرا یا خود سیستم هاست جلوگیری می کند. با این حال ، در بیشتر موارد ، برنامه ها نیازی به برقراری ارتباط خارج از جعبه شنی خود ندارند مانند زمانی که نیاز به دسترسی به اینترنت یا خواندن و نوشتن سیستم فایل دارید.
این مجوزها که در Snapcraft به عنوان interfaces شناخته می شوند ، می توانند با استفاده از پلاگین ها به برنامه Snap شما اعطا شوند. با استفاده از افزونه ها ، می توانید کنترل برنامه ریز و جزیی بر روی جعبه شنی برای برنامه خود داشته باشید تا به آن دسترسی لازم را بدهید و نه چیزی بیشتر (اصل حداقل امتیاز).
رابط های دقیق مورد نیاز بسته به برنامه شما متفاوت هستند. برخی از رایج ترین رابط ها عبارتند از:
⦁ audio-playback – امکان صداهای خروجی / پخش را میدهد.
⦁ audio-record – امکان ورودی صوت / ضبط صدا را می دهد.
⦁ camera – دسترسی به وب کم های متصل را امکان پذیر می کند.
⦁ home – دسترسی به فایل های غیر پنهان را در دیرکتوری هوم شما ممکن می سازد.
⦁ network – دسترسی به شبکه / اینترنت را امکان پذیر می کند.
⦁ network-bind – به شما اجازه می دهد تا درگاه ها را برای کار به عنوان سرویس شبکه متصل کنید.
⦁ system-files – دسترسی به کل سیستم فایل دستگاه هاست را امکان پذیر می کند.
لیست کامل واسط های موجود را می توان در مطالب Snapcraft تحت عنوان واسط های پشتیبانی شده بیابید.
هنگامی که تمام رابط های مورد نیاز برنامه خود را شناسایی کردید ، می توانید این افزونه ها را به فایل های snapcraft.yaml خود اختصاص دهید.
پیکربندی مثال زیر به برنامه اجازه می دهد تا به شبکه و فضای هوم کاربران دسترسی پیدا کند:
snapcraft.yaml
. . .
plugs:
your-snap-home:
interface: home
your-snap-network:
interface: network

فایل خود را ذخیره کنید و از آن خارج شوید.
نام Plug باید یک اسم توصیفی باشد تا کاربران بتوانند هدف Plug را شناسایی کنند.
شما sandboxing را برای Snap فعال کرده اید و برخی از افزونه ها را پیکربندی کرده اید تا دسترسی محدود به منابع سیستم را داشته باشند. در مرحله بعدی ساخت برنامه Snap خود را تمام می کنید.
مرحله 5 – ساخت و آزمایش برنامه Snap
اکنون که تمام تنظیمات لازم را برای Snap خود نوشتید ، می توانید با ساختن آن و آزمایش پکیج اسنپ بصورت محلی پیش بروید
اگر دنبال استفاده از یک برنامه Hello World به عنوان برنامه خود بوده اید ، فایل کامل snapcraft.yaml شما اکنون شبیه زیر است:
snapcraft.yaml
name: helloworld
summary: A simple Hello World program.
description: |
A simple Hello World program written in Go.
Packaged as a Snap application using Snapcraft.
version: ‘1.0’
confinement: strict

apps:
helloworld:
command: helloworld

parts:
helloworld:
plugin: go
source: .
go-importpath: helloworld

plugs:
helloworld-home:
interface: home
helloworld-network:
interface: network

برای ساختن برنامه Snap ، دستور Snapcraft را از درون دیرکتوری برای Snap خود اجرا کنید:
⦁ $ snapcraft
سپس Snapcraft به صورت خودکار یک ماشین مجازی (VM) را راه اندازی می کند و ساخت Snap را شروع می کند. پس از اتمام ، Snapcraft خارج می شود و چیزی شبیه به خروجی زیر را مشاهده خواهید کرد:
Output
Snapped your-snap_1.0_amd64.snap

اکنون می توانید Snap خود را بصورت محلی نصب کنید تا بررسی کنید که در حال کار است:
⦁ $ sudo snap install your-snap.snap –dangerous
آرگومان فرمان –dangerous لازم خواهد بود چرا که شما یک اسنپ محلی را نصب میکنید که امضا نشده است.
Output
your-snap 1.0 installed

پس از اتمام مراحل نصب ، می توانید Snap خود را با استفاده از دستور مربوط به آن اجرا کنید. مثلا:
⦁ $ helloworld
در مورد برنامه Hello World مثال ، خروجی مشابه زیر خواهد بود:
Output
Hello, world!

همچنین می توانید رویکرد تکنیک جعبه شنی را برای Snap خود مشاهده کنید تا مطمئن شوید که مجوزهای اختصاص یافته به درستی اعطا شده اند:
⦁ $ snap connections your-snap
با این کار لیستی از افزونه ها و رابط ها ، مشابه زیر صادر می شود:
Output
snap connections your-snap
Interface Plug Slot Notes
home your-snap:your-snap-home :home –
network your-snap:your-snap-network :network –

در این مرحله اسنپ خود را ساختید و آن را به صورت محلی نصب کردید تا آزمایش کنید که کار می کند یا خیر. در مرحله بعد ، اسنپ خود را در Snap Store منتشر می کنید.
مرحله ششم – انتشار اسنپ خود
اکنون که برنامه Snap خود را ساخته و آزمایش کرده اید ، زمان آن رسیده است که آن را در Snap Store منتشر کنید.
با ورود به حساب Snap Developer خود با استفاده از برنامه خط فرمان Snapcraft شروع کنید:
⦁ $ snapcraft login
برای وارد کردن آدرس ایمیل و گذرواژه ، اعلان ها را دنبال کنید.
در مرحله بعد ، باید نام برنامه را در Snap Store ثبت کنید:
⦁ $ snapcraft register your-snap
پس از ثبت نام اسنپ ، می توانید بسته ساخت اسنپ را وارد فروشگاه کنید:
⦁ $ snapcraft push your-snap.snap
خروجی مشابه زیر را مشاهده خواهید کرد:
Output
Preparing to push ‘your-snap_1.0_amd64.snap’.
Install the review-tools from the Snap Store for enhanced checks before uploading this snap.
Pushing ‘your-snap_1.0_amd64.snap’ [====] 100%
Processing…|
Ready to release!
Revision 1 of ‘your-snap’ created.

هر بار که به Snap Store میروید ، تعداد نسخه مرور شده که از یک شروع شروع می شود افزایش یافته است. این امر برای کمک به شناسایی انواع ساخت Snap شما مفید میباشد.
در نهایت ، می توانید Snap خود را برای عموم منتشر کنید:
⦁ $ snapcraft release your-snap revision-number channel
اگر این اولین بار است که به Snap Store میروید ، تعداد تجدید نظر در آن 1 خواهد بود. اگر نسخه های مختلفی از برنامه خود را در مراحل مختلف توسعه دارید ، می توانید بین انتشارها کانالهای stable ، candidate ، beta و edge  نیز انتخاب کنید.
به عنوان مثال ، دستور زیر ویرایش 1 نسخه Hello World Snap را به کانال stable منتشر می کند:
⦁ $ snapcraft release helloworld 1 stable
خروجی مشابه زیر را مشاهده خواهید کرد:
Output
Track Arch Channel Version Revision
latest amd64 stable 1.0 1
candidate ^ ^
beta ^ ^
edge ^ ^
The ‘stable’ channel is now open.

اکنون می توانید برنامه خود را در Snap Store جستجو کرده و در هر یک از دستگاه های خود نصب کنید.

در این مرحله آخر ، بسته ساخت اسنپ خود را در Snap Store آپلود کرده و آن را برای عموم منتشر کردید.
نتیجه
در این مقاله شما یک برنامه Snap را پیکربندی کرده و ساخته اید ، و سپس آن را از طریق Snap Store منتشر کردید. اکنون شما دانش بنیادی لازم برای حفظ برنامه خود و ساختن موارد جدید را دارید.
اگر می خواهید Snaps Store را بیشتر یاد بگیرید ، بهتر است در فهرست کامل Snap Store چرخی بزنید. همچنین میتوانید رفرنس YAML Snapcraft را مرور کنید تا اطلاعات بیشتری در مورد آن بیابید و ویژگیهای بیشتری را برای پیکربندی Snap خود شناسایی کنید.
سرانجام ، اگر مایل به تحقیق بیشتر درباره توسعه اسنپ هستید ، از خواندن و اجرای Snap Hooks لذت خواهید برد ، که به Snaps اجازه می دهد به صورت پویا نسبت به تغییرات سیستم مانند به روزرسانی ها یا تنظیم رویکردهای امنیتی واکنش نشان دهد.

 

 

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

نحوه نصب Nginx در CentOS 8  –  استفاده از Cron برای خودکارسازی کارها در اوبونتو 18

پکیج کردن و انتشار برنامه Snap در اوبونتو 18 – نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18

استقرارهای تولید Node.js خود را با Shipit در CentOS 7 –  نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10

چگونگی استفاده از migrations و seeders دیتابیس  –  نحوه نصب Docker Compose در Debian 10

نحوه نصب R روی اوبونتو 18.04 – چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد

چگونه می توان هاست های مجازی Apache را در اوبونتو 18.04  –  نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04

نصب پشته Nginx، MySQL، PHP LEMP در CentOS 8 – نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7

نحوه نصب پشته یا استک Nginx ، MySQL ، PHP LEMP  –  بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose

مراحل ایمن سازی Apache HTTP در FreeBSD 12  – بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16

درک Objectهای Map و Set در JavaScript  –  استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18

نحوه راه اندازی Eclipse Theia Cloud IDE در اوبونتو  –  چگونه می توان پلتفرم کد سرور Cloud IDE را در اوبونتو 18.04

نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8   –  چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی

نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js –  نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18

راه اندازی اولیه سرور با CentOS 8 –   تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes

نحوه تنظیم کلیدهای SSH در CentOS 8 –  نحوه نصب و استفاده از PostgreSQL در CentOS 7

نحوه ساختن یک برنامه Node.js با Docker  Quickstart  –  چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو

چگونه می توان هاست های مجازی Apache را در اوبونتو  –  مدیریت DNS با استفاده از DNSControl در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 –  چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7

نحوه نصب و استفاده از TimescaleDB در CentOS 7 – نحوه نصب Apache Kafka در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04  –  نحوه نصب وردپرس با OpenLiteSpeed ​​در اوبونتو 18.04

 

 

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

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان – 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

Nginx یکی از محبوب ترین سرور مجازی های وب در جهان است و مسئولیت میزبانی برخی از بزرگترین و محبوب ترین سایت های اینترنتی را بر عهده دارد. در بیشتر موارد نسبت به Apache با منبع سازگارتر است و می تواند به عنوان سرور مجازی وب یا پروکسی معکوس مورد استفاده قرار گیرد.
در این راهنما ، ما درباره نحوه نصب Nginx در سرور مجازی CentOS 8 بحث خواهیم کرد.
پیش نیازها
برای دنبال کردن این راهنما ، به دسترسی به یک سرور مجازی CentOS 8 به عنوان کاربر غیر ریشه با امتیازات sudo و یک فایروال فعال روی سرور مجازی خود نیاز خواهید داشت. برای انجام این کار، می توانید راهنمای تنظیم اولیه سرور مجازی ما برای CentOS 8 را دنبال کنید.
مرحله 1 – نصب سرور مجازی Nginx
به منظور نصب Nginx ، از مدیر بسته dnf ، که پکیج منیجر جدید پیش فرض در CentOS 8 است ، استفاده خواهیم کرد.
بسته nginx را با این دستور نصب کنید:
⦁ $ sudo dnf install nginx

هنگامی که از شما خواسته شد ، y را وارد کنید تا تأیید کنید که می خواهید nginx را نصب کنید. پس از آن ، dnf ، Nginx و هرگونه متعلقات لازم برای سرور مجازی شما را نصب می کند.
بعد از اتمام نصب ، با اجرای دستورهای زیر سرور مجازی را فعال و راه اندازی کنید:
⦁ $ sudo systemctl enable nginx

⦁ $ sudo systemctl start nginx
این باعث می شود Nginx در بوت سیستم شروع شود.
مرحله 2 – تنظیم قوانین فایروال
در صورتی که فایروال firewalld را طبق دستورالعمل راهنمای تنظیم اولیه سرور مجازی ما برای CentOS 8 فعال کرده باشید ، باید تنظیمات فایروال را تنظیم کنید تا بتوانید اتصالات خارجی را در سرور مجازی Nginx خود داشته باشید ، که به طور پیش فرض روی پورت 80 اجرا می شود.
برای فعال کردن دائمی اتصالات HTTP در پورت 80 ، دستور زیر را اجرا کنید:
⦁ $ sudo firewall-cmd –permanent –add-service=http

برای تأیید اینکه سرویس فایروال http به درستی اضافه شده است ، می توانید این دستور را اجرا کنید:
⦁ $ sudo firewall-cmd –permanent –list-all

خروجی مانند این را خواهید دید:
Output
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

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

اکنون سرور مجازی Nginx شما کاملاً نصب شده و آماده دسترسی بازدید کنندگان خارجی است.
مرحله 3 – بررسی سرور مجازی وب خود
اکنون با دسترسی به آدرس IP عمومی یا نام دامنه سرور مجازی خود از مرورگر وب خود می توانید آزمایش کنید که آیا سرور مجازی وب Nginx شما در حال کار است یا خیر.
توجه: در صورتی که از vpsgol به عنوان ارائه دهنده میزبانی DNS خود استفاده می کنید ، می توانید مطالب محصول ما را برای راهنمایی های دقیق در مورد چگونگی تنظیم نام دامنه جدید بررسی کنید و آن را روی سرور مجازی خود به کار بگیرید.

اگر نام دامنه ای به سرور مجازی خود معرفی نکرده اید و آدرس IP عمومی سرور مجازی خود را نمی شناسید ، می توانید با اجرای دستور زیر آن را پیدا کنید:
⦁ $ ip addr show eth0 | grep inet | awk ‘{ print $2; }’ | sed ‘s/\/.*$//’

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

آدرسی را که در مرورگر وب خود دریافت می کنید تایپ کنید و شما را به صفحه فرود پیش فرض Nginx می برد:

اگر این صفحه را مشاهده کردید ، اکنون سرور مجازی وب شما به درستی نصب شده است.
مرحله 4 – مدیریت فرایند Nginx
اکنون که سرور مجازی وب خود را فعال کرده اید ، نحوه مدیریت سرویس Nginx را از طریق systemctl بررسی خواهیم کرد.
هر زمان که نیاز به متوقف کردن سرور مجازی وب خود دارید ، می توانید از این دستور استفاده کنید:
⦁ $ sudo systemctl stop nginx

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

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

Nginx همچنین می تواند تغییرات پیکربندی را بدون افت اتصالات مجدد لود کند. برای انجام این کار ، تایپ کنید:
⦁ $ sudo systemctl reload nginx

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

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

مرحله 5 – آشنایی با فایل ها و راهنمای مهم Nginx
اکنون که می دانید چگونه سرویس Nginx را مدیریت کنید ، باید چند دقیقه وقت بگذارید تا با چند دایرکتوری و فایل مهم آشنا شوید.
محتوا
/ usr / share / nginx / html: محتوای وب واقعی ، که به طور پیش فرض فقط شامل صفحه پیش فرض Nginx است که قبلاً دیدید ، از دیرکتوری / usr / share / nginx / html ارائه می شود. این امر با تغییر فایل های پیکربندی Nginx قابل تغییر است.
پیکربندی سرور مجازی
⦁ / etc / nginx: دیرکتوری پیکربندی Nginxاست. همه فایل های پیکربندی Nginx در اینجا قرار دارند.
⦁ /etc/nginx/nginx.conf: فایل اصلی پیکربندی Nginxاست. می تواند برای ایجاد تغییر در تنظیمات جهانی Nginx اصلاح شود.
⦁ /etc/nginx/conf.d/: این دایرکتوری حاوی فایل های پیکربندی بلوک سرور مجازی است ، جایی که می توانید وب سایت هایی را که در Nginx میزبان هستند تعریف کنید. یک رویکرد معمولی این است که هر وب سایت را در یک فایل جداگانه با نام دامنه وب سایت مانند your_domain.conf قرار دهید.
logهای سرور مجازی
⦁ /var/log/nginx/access.log:هر درخواستی به سرور مجازی وب شما در این فایل log ثبت می شود ، مگر اینکه Nginx به گونه ای پیکربندی شده باشد که کار دیگری انجام دهد.
⦁ /var/log/nginx/error.log:هرگونه خطای Nginx در این log ثبت می شود.
مرحله 6 – تنظیم بلوک های سرور مجازی (اختیاری)
در صورتی که مایل به میزبانی وب سایت های متعدد در یک سرور مجازی وب Nginx هستید ، باید بلوک های سرور مجازی را تنظیم کنید. بلوک های سرور مجازی Nginx با روشی مشابه هاست های مجازی Apache کار می کنند و به یک سرور مجازی واحد نیز اجازه می دهند به چندین نام دامنه پاسخ دهد و برای هر یک از آنها مطالب مختلفی ارائه دهد. در CentOS 8 ، بلوک های سرور مجازی در فایل های .conf واقع در /etc/nginx/conf.d تعریف شده اند.
ما یک بلوک سرور مجازی را برای دامنه ای به نام your_domain تنظیم خواهیم کرد.
به طور پیش فرض ، Nginx در CentOS 8 پیکربندی شده است تا اسناد را از دیرکتوری موجود در / usr / share / nginx / html ارائه دهد. اگرچه برای یک سایت واحد خوب عمل می کند ، اگر هاست چندین سایت هستید ، می تواند غیرقابل کنترل شود. به جای تغییر / usr / share / nginx / html ، یک ساختار دایرکتوری را در / var / www برای وب سایت your_domain ایجاد خواهیم کرد ، و / usr / share / nginx / html را در جای خود به عنوان دایرکتوری پیش فرض قرار می دهیم که در صورت عدم مطابقت درخواست کلاینت با سایت های دیگر ارائه شود.
با استفاده از فلگ -p ، برای ایجاد هر دیرکتوری لازم ، دایرکتوری را برای your_domain ایجاد کنید:
⦁ $ sudo mkdir -p /var/www/your_domain/html

در مرحله بعدی ، مالکیت دایرکتوری را با متغیر محیط USER $ اختصاص دهید ، که باید کاربر سیستم فعلی شما را ارجاع دهد:
⦁ $ sudo chown -R $USER:$USER /var/www/your_domain/html

در مرحله بعدی ، برای آزمایش پیکربندی بلوک سرور مجازی ، یک صفحه index.html نمونه ایجاد خواهیم کرد. ویرایشگر متن پیش فرض که با CentOS 8 همراه است vi است. vi یک ویرایشگر متن بسیار قدرتمند است ، اما می تواند برای کاربرانی که فاقد تجربه با آن هستند ، تا حدودی خسته کننده باشد. برای تسهیل ویرایش فایل های پیکربندی روی سرور مجازی CentOS 8 خود ، بهتر است ویرایشگر کاربر پسند دیگری مانند nano را نصب کنید:
⦁ $ sudo dnf install nano

اکنون می توانید از nano برای ایجاد فایل index.html نمونه استفاده کنید:
⦁ $ nano /var/www/your_domain/html/index.html

در داخل آن فایل ، کد HTML زیر را اضافه کنید:
/var/www/your_domain/html/index.html
<html>
<head>
<title>Welcome to your_domain</title>
</head>
<body>
<h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
</body>
</html>

پس از اتمام فایل را ذخیره کنید و ببندید. اگر از nano استفاده کرده اید ، می توانید با فشار دادن CTRL + X ، Y ، سپس ENTER این کار را انجام دهید.
برای اینکه Nginx بتواند این محتوا را ارائه دهد ، باید یک بلوک سرور مجازی با دستورالعمل صحیح که به ریشه وب سفارشی ما اشاره دارد، ایجاد کنیم. ما یک بلوک سرور مجازی جدید در /etc/nginx/conf.d/your_domain.conf ایجاد خواهیم کرد:
⦁ $ sudo nano /etc/nginx/conf.d/your_domain.conf

در بلوک تنظیمات زیر پیست کنید:
/etc/nginx/conf.d/your_domain.conf
server {
listen 80;
listen [::]:80;

root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;

server_name your_domain www.your_domain;

location / {
try_files $uri $uri/ =404;
}
}

وقتی ویرایش محتوای آن را انجام دادید ، فایل را ذخیره کنید و ببندید.
برای اطمینان از اینکه هیچ خطای نحوی در هیچ یک از فایل های 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

قبل از اینکه بتوانید تغییرات را از مرورگر خود آزمایش کنید ، باید زمینه های امنیتی SELinux سرور مجازی خود را به روز کنید تا Nginx مجاز به ارائه محتوا از دیرکتوری / var / www / your_domain شما باشد.
دستور زیر اجازه می دهد تا ریشه سند سفارشی شما به عنوان محتوای HTTP ارائه شود:
⦁ $ chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/

اکنون می توانید با رفتن به http: // your_domain ، مکان تنظیم دامنه دلخواه خود را آزمایش کنید ، جایی که چیزی شبیه به این را مشاهده خواهید کرد:

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

 

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

نحوه نصب Nginx در CentOS 8  –  استفاده از Cron برای خودکارسازی کارها در اوبونتو 18

پکیج کردن و انتشار برنامه Snap در اوبونتو 18 – نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18

استقرارهای تولید Node.js خود را با Shipit در CentOS 7 –  نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10

چگونگی استفاده از migrations و seeders دیتابیس  –  نحوه نصب Docker Compose در Debian 10

نحوه نصب R روی اوبونتو 18.04 – چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد

چگونه می توان هاست های مجازی Apache را در اوبونتو 18.04  –  نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04

نصب پشته Nginx، MySQL، PHP LEMP در CentOS 8 – نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7

نحوه نصب پشته یا استک Nginx ، MySQL ، PHP LEMP  –  بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose

مراحل ایمن سازی Apache HTTP در FreeBSD 12  – بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16

درک Objectهای Map و Set در JavaScript  –  استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18

نحوه راه اندازی Eclipse Theia Cloud IDE در اوبونتو  –  چگونه می توان پلتفرم کد سرور Cloud IDE را در اوبونتو 18.04

نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8   –  چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی

نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js –  نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18

راه اندازی اولیه سرور با CentOS 8 –   تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes

نحوه تنظیم کلیدهای SSH در CentOS 8 –  نحوه نصب و استفاده از PostgreSQL در CentOS 7

نحوه ساختن یک برنامه Node.js با Docker  Quickstart  –  چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو

چگونه می توان هاست های مجازی Apache را در اوبونتو  –  مدیریت DNS با استفاده از DNSControl در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 –  چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7

نحوه نصب و استفاده از TimescaleDB در CentOS 7 – نحوه نصب Apache Kafka در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04  –  نحوه نصب وردپرس با OpenLiteSpeed ​​در اوبونتو 18.04

 

 

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

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان – 

  • behnam gol mohamadi
  • ۰
  • ۰

مقدمه
معمولاً مدیریت چندین دستگاه به صورت روزانه دشوار است. در حالی که Secure Shell SSH گزینه مناسبی برای دسترسی از راه دور است ، و خود پروتکل از نظر راحتی و امنیت دارای اشکالاتی است.
به عنوان مثال ، برای دسترسی به دستگاه های از راه دور نیاز به داشتن یک آدرس IP عمومی و یک درگاه فوروارد شده است ، که آنها را در معرض اینترنت یا حداقل شبکه بزرگتری قرار می دهد. این امر به ویژه در مورد استفاده از گذرواژه برای احراز هویت به جای یک جفت کلید عمومی و خصوصی نگران کننده است. علاوه بر این ، اگر از قبل کلید عمومی دستگاه از راه دور را نمی شناسید ، ممکن است در معرض حمله “شخص سومی” قرار داده باشید. و بسیاری از دستگاه های از راه دور که می خواهید به آنها دسترسی داشته باشید ، آدرس IP عمومی ندارند ، یا دارای یک آدرس IP پویا هستند که ممکن است شما از آن اطلاع نداشته باشید.
علاوه بر این ، SSH در هر بخش از راه دور به یک اتصال نیاز دارد. اگر یک کاربر نیاز به اجرای یک فرمان واحد در بین صدها یا حتی هزاران دستگاه داشته باشد ، ابتدا باید با استفاده از یک TCP ، اتصال به هر دستگاه را برقرار کند ، که کارایی کمتری دارد.
NKN Shell یا nsh جایگزینی برای SSH است که روشی مناسب و مطمئن برای اجرای دستورات از راه دور فراهم می کند. nsh از شبکه عمومی جهانی NKN که انتقال داده های امن و غیرمتمرکز را فراهم می کند ، بهره می برد. این معماری از آدرسهای منحصر به فردی استفاده می کند که حاوی یک کلید عمومی است که برای مسیریابی و رمزنگاری پایان به پایان و بدون هیچ گونه زیرساخت کلید عمومی (PKI) استفاده می شود. همچنین این شبکه نیازی به داشتن سرور مجازی از راه دور برای داشتن آدرس IP عمومی ندارد. سرور مجازی از راه دور فقط باید به اینترنت دسترسی داشته باشد و بتواند اتصالات خروجی HTTP و WEBocket را برقرار کند. در نتیجه ، دستگاه های از راه دور شما در معرض اینترنت باز قرار ندارند.
در این آموزش برای اجرای دستورات روی یک دستگاه از راه دور از برنامه های کاربردی NKN shell daemon و NKN Shell Client Xterm استفاده خواهید کرد. برای این کار ، NKN Shell daemon را بر روی یک دستگاه از راه دور با دسترسی به اینترنت نصب و پیکربندی می کنید ، یک جفت کلید تولید می کنید و اتصال خود را از کلاینت انجام می دهید.
پیش نیازها
برای دنبال کردن این آموزش به موارد زیر نیاز دارید:
• یک سرور مجازی Ubuntu 18.04 که طبق راهنمای تنظیم اولیه سرور مجازی Ubuntu 18.04 تنظیم شد و شامل یک کاربرغیر ریشه فعال شده با SUDO و یک فایروال باشد.
• یک مرورگر وب نصب شده بر روی دستگاه محلی شما.
مرحله 1 – نصب سرور مجازی NKN Shell Daemon روی یک سرور مجازی از راه دور
ابتدا NKN Shell Daemon (nsd) را بر روی سرور مجازی خود نصب کنید. این برنامه nkn-multiclient را فراخوانی می کند ، که به شبکه عمومی NKN متصل می شود و آدرس مسیریابی را بدست می آورد. سپس Daemon دستورات پوسته های دریافتی را از کلاینت های معتبر و لیست بندی شده شنود می کند ، آن دستورات را اجرا می کند ، و سپس نتایج را ارسال می کند.
با دانلود آخرین باینری nshd پیش ساخته از GitHub شروع کنید:
$ wget https://github.com/nknorg/nkn-shell-daemon/releases/latest/download/linux-amd64.tar.gz

فایل را از حالت فشرده خارج کنید:
$ tar -zxvf linux-amd64.tar.gz

سپس فایل ها را به دیرکتوری / usr / local / bin انتقال دهید تا سیستم در دسترس باشد:
$ sudo mv ./linux-amd64/* /usr/local/bin/

در مرحله بعد ، آن را پیکربندی می کنید تا به عنوان یک فرآیند daemon با استفاده از Systemd اجرا شود و در صورت ریستارت سرور مجازی مجدداً راه اندازی شود.
فایلی با نام nshd.service را در / etc / systemd / system ایجاد کنید:
$ sudo nano /etc/systemd/system/nshd.service

تعاریف خدمات زیر را برای پیکربندی سرویس اضافه کنید:
/etc/systemd/system/nshd.service
[Unit]
Description=NKN Shell Daemon
After=network.target

[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/usr/local/bin/nshd

[Install]
WantedBy=multi-user.target

اطلاعات بیشتر در مورد فایلهای واحد Systemd را در لینک Understanding Systemd Units and Unit Files ببینید.
فایل را ذخیره کرده و از ویرایشگر خارج شوید. سپس سرویس nshd را با دستورات زیر فعال و راه اندازی کنید:
$ sudo systemctl enable nshd.service

$ sudo systemctl start nshd.service

برای اطمینان از فعال بودن سرویس ، دستور زیر را اجرا کنید:
$ sudo systemctl status nshd.service

خواهید دید که این وضعیت فعال است:
Output
● nshd.service – NKN Shell Daemon
Loaded: loaded (/etc/systemd/system/nshd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-02-19 19:16:02 UTC; 7s ago
Main PID: 3457 (nshd)
Tasks: 10 (limit: 1152)
CGroup: /system.slice/nshd.service
└─3457 /usr/local/bin/nshd

Feb 19 19:16:02 your_hostname systemd[1]: Started NKN Shell Daemon.
Feb 19 19:16:03 your_hostname nshd[3457]: Create directory /etc/nshd/
Feb 19 19:16:03 your_hostname nshd[3457]: Create password and save to file /etc/nshd/wallet.pswd
Feb 19 19:16:03 your_hostname nshd[3457]: Create wallet and save to file /etc/nshd/wallet.json
Feb 19 19:16:03 your_hostname nshd[3457]: Create authorized pubkeys file /etc/nshd/authorized_pubkeys
Feb 19 19:16:03 your_hostname nshd[3457]: Listening at d46567b883a3070ee3fe879d9fa2d5dc55a95f79ff2797c42df36c6979e5c4Aba

برای اتصال به سرور مجازی خود ، باید آدرس NKN آن را دریافت کنید ، که می توانید در خروجی دستور قبلی پیدا کنید. همچنین می توانید دستور زیر را برای به دست آوردن آدرس اجرا کنید:
$ nshd addr

آدرس خود را مشاهده می کنید:
Output
e70ca28ede84fc0659f2869255e8a393aef35b4fa5a7e036f29127c7dba75383
این آدرس را جایی بنویسید زیرا برای اتصال به سرور مجازی خود به آن نیاز خواهید داشت.
اکنون که Daemon در حال اجرا و شنود است ، می توانید کلاینت مبتنی بر وب را پیکربندی کنید تا با سرور مجازی در ارتباط باشد.
مرحله 2 – پیکربندی مجوزها برای کلاینت (سرویس گیرنده) NKN Shell
به یک کلاینت سازگار نیاز دارید که بتواند به دستگاه از راه دور متصل شود. در این آموزش از NKN Shell Client Xterm ، یک سرویس دهنده پوسته NKN مبتنی بر وب استفاده خواهید کرد. چند روش مختلف برای اجرای آن وجود دارد:
از نسخه میزبانی شده در https://nsh.nkn.org/ استفاده کنید. توجه داشته باشید که در حالی که این صفحه وب روی سرور مجازی میزبانی شده است ، در واقع یک برنامه وب محلی خالص است که در مرورگر شما اجرا می شود.
کد منبع را بدست آورید و خودتان هاست آن باشید.
از افزونه nShell Chrome استفاده کنید.
در این آموزش از نسخه میزبانی شده استفاده خواهید کرد. در دستگاه محلی خود ، مرورگر وب خود را باز کرده و به https://nsh.nkn.org بروید. یک صفحه خوش آمد گویی خواهید دید.
روی Generate New Key Pair کلیک کنید. کلیدهای شما مطابق تصویر زیر تولید و نمایش داده می شوند:
توجه: هنگامی که یک جفت کلید جدید تولید می کنید ، یک secret seed را مشاهده خواهید کرد. این seed مخفی را درست مانند کلید خصوصی SSH خود ایمن نگه دارید . هرکسی که این seed مخفی را داشته باشد می تواند از آن برای بازگرداندن کلید عمومی شما استفاده کند و سپس دستورات را بر روی دستگاههای از راه دور خود اجرا کند. مرورگر شما این seed را به خاطر می سپارد ، اما باید آن را در جایی ایمن کپی کنید تا بتوانید دوباره از آن در دستگاه جدید استفاده کنید.

secret seed را در جایی امن ذخیره کنید. بعدا می توانید از آن برای بازگرداندن کلید عمومی خود استفاده کنید تا بتوانید از یک دستگاه کلاینت دیگر متصل شوید.
از آنجا که این یک جفت کلید جدید است ، می بایست کلید عمومی را به فایل / etc / nshd / autor_pubkeys روی سرور مجازی خود اضافه کنید.
/etc/nshd/authorized_pubkeys نقش مشابهی با فایل ~/authorized_keys دارد که کنترل می کند کدام کلیدهای عمومی SSH می توانند وارد سیستم شوند. فایل authorized_pubkeys می تواند مشخص کند که کدام کاربر با یک کلید در ارتباط است. برای اهداف امنیتی ، بهتر است با استفاده از یک کاربر غیر ریشه در این آموزش وارد شوید ، تا بتوانید کلید عمومی تولید شده را با کاربر sammy خود که در راهنمای اولیه تنظیم سرور مجازی در پیش نیاز این مقاله ایجاد کرده اید ، مرتبط کنید.
برای متصل کردن کاربر به کلید عمومی ، باید شناسه کاربر (UID) و شناسه گروه (GID) این کاربر را دریافت کنید. در هنگام ورود به عنوان کاربر sammy ، دستور زیر را روی سرور مجازی خود اجرا کنید:
$ id

UID و GID کاربر را مشاهده خواهید کرد:
Output
uid=1000(sammy) gid=1000(sammy) groups=1000(sammy),27(sudo)

اکنون فایل authorized_pubkeys را در ویرایشگر خود باز کنید:
$ sudo nano /etc/nshd/authorized_pubkeys

یک خط واحد حاوی کلید عمومی ، uid و gid را اضافه کنید که با فاصله جدا شده اند:
authorized_pubkeys
5d5367a5730427c205904a4457392051d2045dbce0186518fb6eb24dd9e41ba6 1000 1000

فایل را ذخیره کنید.
تأیید کنید که فایل حاوی محتوای صحیح است:
$ cat /etc/nshd/authorized_pubkeys

کلید شما روی صفحه چاپ می شود:
Output
5d5367a5730427c205904a4457392051d2045dbce0186518fb6eb24dd9e41ba6 1000 1000

سپس nshd daemon را دوباره شروع کنید تا تغییرات اعمال شود:
$ sudo systemctl restart nshd.service

اکنون بیایید با اتصال به سرور مجازی و اجرای یک دستور ، آن را تست کنیم.
مرحله 3 – ارسال یک فرمان به دستگاه از راه دور و دریافت پاسخ
در NKN Shell Client ، آدرس nshd راه دور خود را از مرحله 1 و همچنین یک شناسه کلاینت اختیاری وارد کنید:
برای شروع اتصال ، روی connect کلیک کنید.
شما به دستگاه از راه دور خود متصل خواهید شد و یک اعلان پایانه را در مرورگر میبینید. از اینجا به بعد می توانید درست مانند SSH از آن استفاده کنید. به عنوان مثال ، دستور زیر را برای سوییچ به دیرکتوری / etc / nshd اجرا کنید:
Sammy@your_server_ip~$ cd /etc/nshd

سپس مطالب آن را لیست کنید:
Sammy@your_server_ip/etc/nshd$ ls

محتوای دایرکتوری را مشاهده خواهید کرد:
Output
authorized_pubkeys wallet.json wallet.pswd

می توانید با تایپ کردن exit اتصال را قطع کنید. هنگامی که نیاز به اتصال مجدد دارید ، به اینترفیس وب مجدداً سر بزنید و جزئیات اتصال خود را وارد کنید. اگر یک جفت کلید جدید ایجاد می کنید ، باید کلید عمومی جدید را به سرور مجازی خود اضافه کنید.
نتیجه
در این آموزش ، nsh را نصب کرده و پیکربندی کرده اید تا ایمن و راحت دستورات را به یک دستگاه از راه دور ارسال کنید. nsh برای دستیابی به یک دستگاه از راه دور و اجرای سریع یک فرمان جهت دستیابی به آخرین وضعیت خدمات یا مشاهده برخی از تنظیمات پیکربندی ، راهی عالی میباشد. این برنامه مبتنی بر شبکه عمومی جهانی NKN است ، و استفاده از آن رایگان است بنابراین می توانید امروز آن را در برنامه یا جریان کاری خود وارد کنید.
همچنین می توانید nkn-tunel را که از SSH یا سایر برنامه های مبتنی بر TCP پشتیبانی می کند ، جستجو کنید.

 

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

استفاده از 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 ارزان – 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

مقدمه
از راه حل های بکاپ گیری مبتنی بر cloud گرفته تا شبکه های تحویل محتوا با دسترسی بالا (CDN) ، امکان ذخیره حباب های بدون ساختار داده های هدف و دسترسی آنها از طریق API های HTTP ، معروف به  object storage، به بخشی جدایی ناپذیر از چشم انداز فناوری مدرن تبدیل شده است.
Minio یک سرور مجازی ذخیره سازی آبجکت منبع باز محبوب است که با سرویس ذخیره cloud Amazon S3 سازگار است. برنامه هایی که برای گفتگو با آمازون S3 پیکربندی شده اند نیز می توانند پیکربندی شوند تا با Minio صحبت کنند ، و در صورتی که می خواهید کنترل بیشتری روی سرور مجازی ذخیره سازی شیء خود داشته باشید ، Minio یک گزینه مناسب برای S3 خواهد بود. این سرویس داده های بدون ساختار مانند عکس ها ، فیلم ها ، فایل های ورود به سیستم ، نسخه پشتیبان، و عکس های کانتینر یا VM را ذخیره می کند ، و حتی می تواند یک سرور مجازی ذخیره سازی شیء تکی را فراهم کند که چندین درایو را در بسیاری از سرور مجازی ها پخش کند.
Minio در Go نوشته شده است ، با یک کلاینت خط فرمان به اضافه یک رابط مرورگر ارائه می شود و از سرویس صف بندی ساده برای پروتکل درخواست پیشرفته پیام (AMQP) ، Elasticsearch ، Redis ، NATS و PostgreSQL پشتیبانی می کند. به خاطر همه ی این دلایل ، یادگیری راه اندازی سرور مجازی ذخیره سازی Minio می تواند انعطاف پذیری و کاربرد گسترده ای را به پروژه شما بیافزاید.
در این آموزش ،
• سرور مجازی Minio را روی سرور مجازی Ubuntu 18.04 خود نصب خواهید کرد و آن را به عنوان یک سرویس systemd پیکربندی میکنید.
• با استفاده از Let’s Encrypt ، یک SSL / TLS را برای تأمین امنیت ارتباط بین سرور مجازی و مشتری تنظیم میکنید.
• برای استفاده و مدیریت سرور مجازی به رابط مرورگر Minio از طریق HTTPS دسترسی پیدا میکنید.
پیش نیازها
برای تکمیل این آموزش ، به موارد زیر نیاز دارید:
• یک سرور مجازی Ubuntu 18.04 که مطابق با آموزش راه اندازی اولیه سرور مجازی Ubuntu 18.04 تنظیم شده باشد، شامل یک کاربر غیر ریشه sudo و فایروال .
• نام دامنه کاملاً ثبت شده. می توانید یکی از آنها را در Namecheap خریداری کنید یا به صورت رایگان در Freenom دریافت کنید. در این آموزش دامنه شما به صورت your_domain نمایش داده می شود.
• سوابق DNS زیر که برای سرور مجازی Minio شما تنظیم شده باشد.
o یک رکورد A با نام سرور مجازی تان (به عنوان مثال minio-server.your_domain) که به آدرس IPv4 سرور مجازی شما اشاره کند.
o (اختیاری) اگر می خواهید سرور مجازی شما از طریق IPv6 قابل دسترسی باشد ، به یک رکورد AAAA با نام سرور مجازی خود نیاز خواهید داشت که به آدرس IPv6 سرور مجازی شیء شما اشاره دارد.
مرحله 1 – نصب و پیکربندی سرور مجازی Minio
می توانید سرور مجازی Minio را با کامپایل کد منبع یا از طریق یک فایل باینری نصب کنید. برای نصب آن باید حداقل Go 1.12 را روی سیستم خود نصب داشته باشید.
در این مرحله شما سرور مجازی را از طریق باینری از پیش کامپایل شده نصب کرده و سرور مجازی Minio را پس از آن پیکربندی می کنید.
ابتدا به سرور مجازی خود وارد شوید و sammy را با نام کاربری و your_server_ip را با آدرس IP سرور مجازی Ubuntu 18.04 خود جایگزین کنید:
⦁ $ ssh sammy@your_server_ip

اگر اخیراً پایگاه داده بسته را به روز نکرده اید ، اکنون آن را به روز کنید:
⦁ $ sudo apt update

در مرحله بعد ، فایل باینری سرور مجازی Minio را از وب سایت رسمی دانلود کنید:
⦁ $ wget https://dl.min.io/server/minio/release/linux-amd64/minio

خروجی مشابه زیر را دریافت خواهید کرد:
Output
–2019-08-27 15:08:49– https://dl.min.io/server/minio/release/linux-amd64/minio
Resolving dl.min.io (dl.min.io)… 178.128.69.202
Connecting to dl.min.io (dl.min.io)|178.128.69.202|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 44511616 (42M) [application/octet-stream]
Saving to: ‘minio’

minio 100%[===================>] 42.45M 21.9MB/s in 1.9s

2019-08-27 15:08:51 (21.9 MB/s) – ‘minio’ saved [44511616/44511616]

پس از اتمام دانلود ، فایلی به نام minio در دیرکتوری کار شما قرار می گیرد. برای اجرای آن از دستور زیر استفاده کنید:
⦁ $ sudo chmod +x minio

اکنون ، فایل را به دیرکتوری / usr / local / bin انتقال دهید جایی که اسکریپت راه اندازی systemd  در Minio انتظار دارد آن را پیدا کند:
⦁ $ sudo mv minio /usr/local/bin

این کار به ما این امکان را می دهد که بعداً یک فایل واحد خدمات را در این آموزش بنویسیم تا به طور خودکار Minio را در هنگام راه اندازی اجرا کند.
به دلایل امنیتی ، بهتر است از اجرای سرور مجازی Minio به عنوان root اجتناب کنید. با این کار آسیب هایی که در صورت به خطر افتادن به سیستم شما وارد میشود، می تواند محدود شود. از آنجا که اسکریپت systemd  که در مرحله 2 از آن استفاده خواهید کرد به دنبال یک حساب کاربری و گروهی به نام minio-user است ، کاربر جدیدی با این نام ایجاد کنید:
⦁ $ sudo useradd -r minio-user -s /sbin/nologin

در این دستور ، شما از فلگ -s برای تنظیم / sbin / nologin به عنوان پوسته برای minio-user استفاده کرده اید. این پوسته ای است که اجازه ورود به کاربر را نمی دهد ، که برای minio-user استفاده نمی شود.
سپس ، مالکیت Binary Minio را به minio-user تغییر دهید:
⦁ $ sudo chown minio-user:minio-user /usr/local/bin/minio

سپس ، یک دایرکتوری ایجاد خواهید کرد که در آن Minio فایل ها را ذخیره می کند. این محل ذخیره برای سطل هایی خواهد بود که بعداً برای سازماندهی اشیاء ذخیره شده روی سرور مجازی Minio خود استفاده خواهید کرد. در این آموزش دایرکتوری minio نامگذاری می شود:
⦁ $ sudo mkdir /usr/local/share/minio

مالکیت آن دایرکتوری را به minio-user بدهید:
⦁ $ sudo chown minio-user:minio-user /usr/local/share/minio

بیشتر فایل های پیکربندی سرور مجازی در دیرکتوری / etc ذخیره می شوند ، بنابراین فایل پیکربندی Minio خود را در آنجا ایجاد کنید:
⦁ $ sudo mkdir /etc/minio

مالکیت آن دیرکتوری را نیز به minio-user اختصاص دهید:
⦁ $ sudo chown minio-user:minio-user /etc/minio

برای ایجاد فایل محیط مورد نیاز برای تغییر پیکربندی پیش فرض از Nano یا ویرایشگر متن مورد علاقه خود استفاده کنید:
⦁ $ sudo nano /etc/default/minio

پس از باز شدن فایل ، خطوط زیر را اضافه کنید تا متغیرهای مهم محیطی در فایل محیط شما تنظیم شود:
/etc/default/minio
MINIO_ACCESS_KEY=”minio”
MINIO_VOLUMES=”/usr/local/share/minio/”
MINIO_OPTS=”-C /etc/minio –address your_server_ip:9000″
MINIO_SECRET_KEY=”miniostorage”

بیایید به این متغیرها و مقادیری که تعیین کرده اید نگاهی بیندازیم:
⦁ MINIO_ACCESS_KEY: کلید دسترسی شما برای دسترسی به رابط کاربری مرورگر Minio را تعیین می کند.
⦁ MINIO_SECRET_KEY: کلید خصوصی را که برای تکمیل اطلاعات ورود به سیستم استفاده می کنید ، رابط Miniio قرار می دهد. این آموزش مقدار را miniostorage تنظیم کرده است ، اما ما توصیه می کنیم یک رمز عبور متفاوت و پیچیده تر را برای امنیت سرور مجازی خود انتخاب کنید.
⦁ MINIO_VOLUMES: پوشه ذخیره ای را که برای سطل های خود ایجاد کرده اید مشخص می کند.
⦁ MINIO_OPTS: مکان و نحوه سرویس دهی سرور مجازی داده ها را تغییر می دهد. فلگ -C ، Minio را به دیرکتوری پیکربندی مورد استفاده خود هدایت میکند ، در حالی که فلگ –address ، آدرس IP و پورت اتصال را به Minio می گوید . اگر آدرس IP مشخص نشده باشد ، Minio به هر آدرس پیکربندی شده روی سرور مجازی ، از جمله localhost و هر آدرس IP مربوط به Docker متصل می شود ، بنابراین مشخص کردن مستقیم آدرس IP در اینجا توصیه می شود. در صورت تمایل می توانید درگاه پیش فرض 9000 را تغییر دهید.
در آخر ، پس از اتمام تغییرات ، فایل محیط را ذخیره کنید و ببندید.
اکنون Minio را نصب کرده اید و متغیرهای مهم محیطی را تنظیم کرده اید. در مرحله بعدی ، سرور مجازی را پیکربندی می کنید تا به عنوان یک سرویس سیستمی اجرا شود.
مرحله 2 – نصب اسکریپت Systemd راه اندازی Minio
در این مرحله ، سرور مجازی Minio را پیکربندی خواهید کرد تا به عنوان یک سرویس سیستمی مدیریت شود.
ابتدا فایل رسمی توصیف کننده خدمات Minio را با استفاده از دستور زیر دانلود کنید:
⦁ $ curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service

خروجی مشابه زیر را دریافت خواهید کرد:
Output

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 835 100 835 0 0 6139 0 –:–:– –:–:– –:–:– 6139

پس از اتمام دانلود ، فایلی به نام minio.service در دیرکتوری کار شما قرار می گیرد.
برای حسابرسی محتوای minio.service قبل از استفاده ، آن را در ویرایشگر متن باز کنید تا محتویات آن را مشاهده کنید:
⦁ $ nano minio.service

خروجی زیر را نشان می دهد:
/etc/systemd/system/minio.service
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/usr/local/

User=minio-user
Group=minio-user

EnvironmentFile=/etc/default/minio
ExecStartPre=/bin/bash -c “if [ -z \”${MINIO_VOLUMES}\” ]; then echo \”Variable MINIO_VOLUMES not set in /etc/default/minio\”; exit 1; fi”

ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

# Built for ${project.name}-${project.version} (${project.name})

این فایل واحد خدمات، سرور مجازی Minio را با استفاده از کاربر minio-user که قبلاً ایجاد کرده اید ، شروع می کند. همچنین متغیرهای محیطی را که در مرحله آخر تنظیم کرده اید ، پیاده سازی می کند و باعث می شود سرور مجازی به طور خودکار در هنگام راه اندازی اجرا شود. برای اطلاعات بیشتر در مورد فایل های واحد سیستمی ، به راهنمای ما در مورد اطلاع از واحدهای سیستمی و فایل های واحد مراجعه کنید.
هنگامی که محتوای اسکریپت را مشاهده کردید ، ویرایشگر متن خود را ببندید.
Systemd نیاز دارد که فایلهای واحد در دیرکتوری تنظیمات سیستمی ذخیره شود ، بنابراین minio.service را به آنجا جابجا کنید:
⦁ $ sudo mv minio.service /etc/systemd/system

سپس دستور زیر را برای لود مجدد تمام واحدهای systemd  اجرا کنید:
⦁ $ sudo systemctl daemon-reload

در آخر ، Minio را فعال کنید تا شروع به کار کند:
⦁ $ sudo systemctl enable minio

منجر به خروجی زیر می شود:
Output
Created symlink from /etc/systemd/system/multi-user.target.wants/minio.service to /etc/systemd/system/minio.service.

اکنون که اسکریپت systemd نصب و پیکربندی شده است ، زمان شروع کار سرور مجازی است.
مرحله 3 – شروع به کار سرور مجازی Minio
در این مرحله ، شما سرور مجازی را راه اندازی کرده و فایروال را اصلاح می کنید تا امکان دسترسی از طریق رابط مرورگر فراهم شود.
ابتدا سرور مجازی Minio را شروع کنید:
⦁ $ sudo systemctl start minio

در مرحله بعدی ، با اجرای این دستور، وضعیت Minio ، آدرس IP مورد نظر خود ، استفاده از حافظه آن و موارد دیگر را تایید کنید:
⦁ $ sudo systemctl status minio
خروجی زیر را دریافت خواهید کرد:
⦁ Output
● minio.service – MinIO
Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-12-09 21:54:02 UTC; 46s ago
Docs: https://docs.min.io
Process: 3405 ExecStartPre=/bin/bash -c if [ -z “${MINIO_VOLUMES}” ]; then echo “Variable MINIO_VOLUMES not set in /etc/default/minio”; exit 1; fi (code=exited, status=0/SUCCES
Main PID: 3407 (minio)
Tasks: 7 (limit: 1152)
CGroup: /system.slice/minio.service
└─3407 /usr/local/bin/minio server -C /etc/minio –address your_server_IP:9000 /usr/local/share/minio/

Dec 09 21:54:02 cart-Minion-Object-1804-1 systemd[1]: Started MinIO.
Dec 09 21:54:03 cart-Minion-Object-1804-1 minio[3407]: Endpoint: http://your_server_IP:9000
Dec 09 21:54:03 cart-Minion-Object-1804-1 minio[3407]: Browser Access:
Dec 09 21:54:03 cart-Minion-Object-1804-1 minio[3407]: http://your_server_IP:9000

در مرحله بعد ، دسترسی از طریق فایروال به سرور مجازی Minio در پورت پیکربندی شده را فعال کنید. در این آموزش ، این درگاه 9000 است.
ابتدا این قانون را اضافه کنید:
$ sudo ufw allow 9000

سپس فایروال را فعال کنید:
⦁ $ sudo ufw enable

اعلان زیر را دریافت خواهید کرد:
Output
Command may disrupt existing ssh connections. Proceed with operation (y|n)?

برای تأیید ، y و ENTER را فشار دهید. سپس خروجی زیر را دریافت خواهید کرد:
Output
Firewall is active and enabled on system startup

اکنون Minio آماده پذیرش ترافیک است ، اما قبل از اتصال به سرور مجازی ، با نصب یک گواهی SSL / TLS ارتباط خود را ایمن خواهید کرد.
مرحله چهارم – ایمن سازی دسترسی به سرور مجازی Minio با یک گواهینامه TLS
در این مرحله با استفاده از یک کلید خصوصی و مجوز عمومی که از یک مرجع گواهی (CA) ، در این حالت  Let’s Encryptبه دست آمده است ، به سرور مجازی Minio خود دسترسی پیدا خواهید کرد. برای دریافت گواهینامه رایگان SSL ، از Certbot استفاده خواهید کرد.
ابتدا به HTTP و HTTPS اجازه دهید به فایروال شما دسترسی داشته باشید. برای انجام این کار ، پورت 80 را باز کنید که درگاه HTTP است:
⦁ $ sudo ufw allow 80

سپس ، درگاه 443 را برای HTTPS باز کنید:
⦁ $ sudo ufw allow 443

پس از افزودن این قوانین ، وضعیت فایروال خود را با این دستور بررسی کنید:
⦁ $ sudo ufw status verbose

خروجی مشابه زیر را دریافت خواهید کرد:
Output
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To Action From
— —— —-
22/tcp (OpenSSH) ALLOW IN Anywhere
9000 ALLOW IN Anywhere
443 ALLOW IN Anywhere
80 ALLOW IN Anywhere
22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
9000 (v6) ALLOW IN Anywhere (v6)
443 (v6) ALLOW IN Anywhere (v6)
80 (v6) ALLOW IN Anywhere (v6)

این خروجی تأیید می کند که درگاه های 80 و 443 باز هستند ، و اطمینان می دهند که سرور مجازی شما درخواست هایی را از طریق اینترنت می پذیرد.
سپس ، Certbot را نصب خواهید کرد. از آنجا که Certbot منبع PPA جداگانه ای را حفظ می کند ، ابتدا باید آن را قبل از نصب Certbot ، همانطور که نشان داده شده است ، به لیست منابع خود اضافه کنید:
برای آمادگی برای اضافه کردن منبع PPA ، ابتدا software-properties-common که بسته ای برای مدیریت PPA ها است را نصب کنید:
⦁ $ sudo apt install software-properties-common

این بسته به جای اینکه بصورت دستی انجام شود ، چندین اسکریپت مفید برای اضافه کردن و حذف PPA ها ارائه می دهد.
اکنون منبع Universe را اضافه کنید:
⦁ $ sudo add-apt-repository universe

این منبع حاوی نرم افزار منبع آزاد و باز است که توسط انجمن اوبونتو حفظ می شود ، اما توسط Canonical ، یعنی توسعه دهندگان اوبونتو به طور رسمی نگهداری نمی شود. اینجا مرحله است که ما برایCertbot منبع پیدا خواهیم کرد.
سپس منبع Certbot را اضافه کنید:
⦁ $ sudo add-apt-repository ppa:certbot/certbot

خروجی زیر را دریافت خواهید کرد:
Output
This is the PPA for packages prepared by Debian Let’s Encrypt Team and backported for Ubuntu(s).
More info: https://launchpad.net/~certbot/+archive/ubuntu/certbot
Press [ENTER] to continue or ctrl-c to cancel adding it

ENTER را برای پذیرش فشار دهید.
سپس لیست بسته ها را به روز کنید:
⦁ $ sudo apt update

در آخر ، certbot را نصب کنید:
⦁ $ sudo apt install certbot

در مرحله بعد ، برای تولید یک گواهینامه جدید SSL از certbot استفاده خواهید کرد.
از آنجا که اوبونتو 18.04 هنوز نصب اتوماتیک را پشتیبانی نمی کند ، برای به دست آوردن گواهینامه از دستور certonly  و –standalone استفاده خواهید کرد:
⦁ $ sudo certbot certonly –standalone -d minio-server.your_domain

–standalone بدان معنی است که این گواهی مربوط به یک وب سرور مجازی مستقل داخلی است. برای کسب اطلاعات بیشتر در این مورد ، به آموزش نحوه استفاده از حالت مستقل Certbot برای بازیابی گواهی های Let’s Encrypt SSL در اوبونتو 18.04 مراجعه کنید.
خروجی زیر را دریافت خواهید کرد:
Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices) (Enter ‘c’ to
cancel):

ایمیل خود را اضافه کنید و ENTER را فشار دهید.
سپس Certbot از شما می خواهد Letry Encrypt ثبت نام کنید.
Output
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
(A)gree/(C)ancel:

A را تایپ کرده و ENTER را برای تایید فشار دهید.
در مرحله بعد ، از شما سؤال میشود که آیا می خواهید ایمیل خود را با بنیاد الکترونیکی Frontier به اشتراک بگذارید:
Output
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let’s Encrypt project and the non-profit
organization that develops Certbot? We’d like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
(Y)es/(N)o:

پس از پاسخ دادن به صورت Y یا N ، کلیدهای عمومی و خصوصی شما ایجاد خواهند شد و در دیرکتوری /etc/letsencrypt/live/minio-server.your_domain_name ذخیره میشود.
در مرحله بعد ، این دو فایل (privkey.pem و fullchain.pem) را در دیرکتوری certs در پوشه تنظیمات سرور مجازی Minio ، که در این آموزش /etc/minio است، کپی کنید. برای کپی کردن privkey.pem و تغییر نام فایل private.key از دستور زیر استفاده کنید:
⦁ $ sudo cp /etc/letsencrypt/live/minio-server.your_domain_name/privkey.pem /etc/minio/certs/private.key

سپس همین کار را برای fullchain.pem انجام دهید ، و نتیجه را public.crt بنامید.
⦁ $ sudo cp /etc/letsencrypt/live/minio-server.your_domain_name/fullchain.pem /etc/minio/certs/public.crt

اکنون ، مالکیت فایل ها را به minio-user تغییر دهید. ابتدا این کار را برای private.key انجام دهید:
⦁ $ sudo chown minio-user:minio-user /etc/minio/certs/private.key

سپس برای public.crt:
⦁ $ sudo chown minio-user:minio-user /etc/minio/certs/public.crt

سرور مجازی Minio را مجدداً راه اندازی کنید تا از گواهینامه آگاه شود و شروع به استفاده از HTTPS کند:
⦁ $ sudo systemctl restart minio

گواهی های Let’s Encrypt فقط برای نود روز اعتبار دارند. این امر برای ترغیب کاربران به اتوماسیون فرایند تجدید گواهینامه است. بسته Certbot که نصب کردید ، یک اسکریپت تجدید شده را به /etc/cron.d اضافه می کند. این اسکریپت روزانه دو بار اجرا می شود و به طور خودکار هر مدرکی را که سی روز از انقضا آن گذشته ، تمدید می کند.
با این کار ، اتصال Minio اکنون ایمن است و گواهی SSL / TLS به طور خودکار برای شما تجدید می شود. در مرحله بعدی ، از طریق مرورگر به Minio وصل می شوید تا از سرور مجازی استفاده شود.
مرحله 5 – اتصال ایمن به رابط وب Minio با استفاده از HTTPS
در این مرحله ، با اطمینان از طریق HTTPS به رابط وب Minio وصل خواهید شد و سپس سطل ایجاد کرده و اشیاء را در آنها آپلود می کنید.
با قرار دادن مرورگر خود به https: //minio-server.your_domain: 9000 به رابط وب دسترسی پیدا کنید.
صفحه ورود به سرور مجازی Minio را مشاهده خواهید کرد:

اکنون با وارد کردن اعتبارنامه خود وارد رابط اصلی شوید. برای دسترسی به کلید ، MINIO_ACCESS_KEY را که در فایل محیط /etc/default/minio در مرحله 1 تنظیم کرده اید، وارد کنید. برای کلید مخفی ، MINIO_SECRET_KEY را که در همان فایل تنظیم کرده اید ، تایپ کنید. پس از وارد کردن اعتبارنامه ، روی دکمه گرد که فلشی درست در زیر فیلدهای ورودی دارد، کلیک کنید.
سپس رابط کاربری Minio به شما ارائه می شود. برای ایجاد یک سطل جدید که در آن می توانید اشیاء را ذخیره کنید ، روی دکمه + به رنگ قرمز روشن در سمت راست پایین رابط اصلی کلیک کنید تا دو دکمه زرد دیگر ظاهر شود.

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

هنگامی که می خواهید اشیاء را به سطل خود اضافه کنید ، بر روی همان دکمه قرمز روشن مانند قبل کلیک کنید و سپس بر روی دکمه زرد بالا کلیک کنید تا اعلان آپلود فایل باز شود.
در این مرحله ، شما در کل رابط اصلی وب برای ایجاد سطل و آپلود اشیاء کار کرده اید.
نتیجه
اکنون سرور مجازی ذخیره سازی شیء Minio خود را دارید که می توانید با استفاده از گواهی نامه Let’s Encrypt SSL/TLS آن را ایمن کنید. به صورت اختیاری ، میتوانید به کلاینت های دسکتاپ Minio برای FreeBSD ، لینوکس ، مک و ویندوز به عنوان یک روش جایگزین برای استفاده و مدیریت سرور مجازی ذخیره سازی شیء خود نگاهی بیاندازید.
علاوه بر این ، اگر مایل هستید ظرفیت ذخیره سازی Minio خود را فراتر از اندازه دیسک سرور مجازی خود افزایش دهید ، می توانید از سرویس ذخیره بلوک vpsgol برای وصل کردن یک حجم به سرور مجازی خود استفاده کنید و ظرفیت ذخیره سازی را تا 80 TB افزایش دهید.
اطلاعات بیشتر در مورد Minio در وب سایت مطالب پروژه موجود است. اگر می خواهید اطلاعات بیشتری در مورد ذخیره اشیاء کسب کنید ، آموزشهای مربوط به ذخیره سازی شیء را مشاهده کنید.

 

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

استفاده از 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 ارزان – 

  • behnam gol mohamadi
  • ۰
  • ۰

مقدمه
مسیریابی پاسخگو در React شامل ارائه مسیرهای مختلف به کاربران بر اساس پورت نمای دستگاهشان است. معمولاً از درخواست های CSS رسانه برای دستیابی به این هدف استفاده می شود ، اما این بدان معنی است که شما فقط با نشان دادن یا عدم نمایش عناصر مختلف با استفاده از گزاره های CSS محدود هستید. با استفاده از مسیرهای پاسخگو ، اکنون می توانید نمایش کامل و جداگانه برنامه های React خود را بر اساس اندازه صفحه نمایش آنها به کاربران مختلف ارائه دهید.
در این آموزش ، نحوه اجرای مسیریابی و سرویس دهی به مسیرهای پاسخگو را در برنامه های React به شما نشان خواهیم داد. با دنبال کردن این آموزش ، یک برنامه داشبورد کاربر ایجاد خواهید کرد که براساس اندازه صفحه نمایش دستگاه آنها ، مسیرهای مختلفی را برای کاربران ارائه می دهد.
پیش نیازها
برای دنبال کردن این راهنما به صورت مناسب ، به موارد زیر نیاز دارید:
Node.js که روی دستگاه شما نصب شده باشد
npm نصب شده بر روی دستگاه شما
برای تأیید نصب خود ، دستورات زیر را اجرا کنید:
$ node –version

$ npm –version

اگر شماره نسخه آنها را به عنوان نتیجه بدست آورید ، آماده هستید تا پیش بروید.
مرحله 1 – نصب React
این مقاله مبتنی بر React است ، بنابراین باید آن را در دستگاه خود نصب کنید. برای نصب React ، دستور زیر را اجرا کنید:
$ npm install -g create-react-app

پس از اتمام این کار ، React را با موفقیت روی دستگاه خود نصب کرده اید. اکنون می توانیم با اجرای این دستورات برنامه جدید خود را ایجاد کنیم:
$ create-react-app responsive-routing

$ cd responsive-routing

نکته بعدی اینست که ماژول های لازم را برای موفقیت ساخت این نسخه ی نمایشی نصب کنیم. این ماژول ها react-router-dom و react-media هستند. ما این کار را با اجرای دستور زیر نصب می کنیم:
$ npm install react-router-dom react-media

اکنون می توانیم با اجرای دستور برنامه را شروع کنیم:
$ npm start

مرحله 2 – ایجاد مؤلفه پیمایش
نماد Github در مرکز صفحه به عنوان قسمت ناوبری برنامه ما عمل می کند. بیایید ببینیم چگونه این کار را انجام دهیم. در پوشه src / خود یک پوشه جدید با نام Nav و فایل های لازم را به شرح زیر ایجاد کنید:
$ cd src

$ mkdir Nav

$ cd Nav && touch index.js Nav.css

باید آرم Github را اضافه کنید و آن را به عنوان logo.svg ذخیره کنید.
اکنون فایل src / Nav / index.js را به روز کنید تا به این شکل ظاهر شود:
// src/Nav/index.js
import React from ‘react’;
import ‘./Nav.css’;
import logo from ‘./logo.svg’;
const Nav = () => (
<nav>
<img src={logo} alt=”” />
</nav>
);
export default Nav;

مولفه ناوبری دارای ظاهر زیر میباشد:
/** src/Nav/Nav.css **/
nav {
display: flex;
justify-content: center;
height: 50px;
margin-bottom: 10px;
}
nav > img {
display: block;
width: 50px;
height: auto;
}

اکنون ، اجازه دهید مؤلفه Nav را ارائه دهیم. برای انجام این کار ، فایل پیش فرض src / App.js را ویرایش کنید تا به این شکل ظاهر شود:
// src/App.js
import React, { Component } from ‘react’;
import Nav from ‘./Nav’;

= App extends Component {
render() {
return (
<div>
<Nav />
</div>
);
}
}
export default App;

مرحله 3 – ایجاد کارت های کاربری
کارتهای کاربر وظیفه نمایش جزئیات کاربر را دارند. حال ، بیایید ببینیم چگونه می توانیم این کار را ایجاد کنیم. در دایرکتوری src / برنامه خود ، یک پوشه جدید Users ایجاد کرده و فایل های زیر را ایجاد کنید:
$ mkdir Users

$ cd Users && touch UsersCard.js UsersCard.css

فایل UsersCard.js را ویرایش کنید تا به این شکل ظاهر شود:
// src/Users/UsersCard.js
import React from ‘react’;
import {Link} from ‘react-router-dom’;
import ‘./UsersCard.css’
const UsersCard = ({ user, match }) => <Link to={`${match.url}/${user.id}`} className=”column card”>
<img src={user.avatar} alt=””/>
<p className=”users-card__name”>{user.name}</p>
<p className=”users-card__username”>@{user.username}</p>
<div className=”users-card__divider”></div>
<div className=”users-card__stats”>
<div>
<p>{user.followers}</p>
<span>Followers</span>
</div>
<div>
<p>{user.following}</p>
<span>Following</span>
</div>
<div>
<p>{user.repos}</p>
<span>Repositories</span>
</div>
</div>
</Link>;
export default UsersCard;

در این قطعه کد ، ما از مؤلفه Link از re-router-dom استفاده کردیم تا کاربر بتواند در هنگام کلیک بر روی کارت ، جزئیات مربوط به یک کاربر واحد را مشاهده کند. بنابراین ، برای یک کارت کاربر خاص با شناسه 10009 ، کامپوننت Link ، URL ای به صورت زیر ایجاد می کند:
http://your-app/current-page/10009
http://your-app/current-page آدرس URL موجود را نشان می دهد.
10009 شناسه کاربر را نشان می دهد.
با ارائه مؤلفه ، تمام این اطلاعات منتقل می شود. این مؤلفه به شکل زیر است:
/** src/Nav/UsersCard.css **/
.card {
border-radius: 2px;
background-color: #ffffff;
box-shadow: 0 1.5px 3px 0 rgba(0, 0, 0, 0.05);
max-width: 228px;
margin: 10px;
display: flex;
flex-direction: column;
align-items: center;
padding: 0;
}
.card img {
width: 50px;
height: auto;
border-radius: 50%;
display: block;
padding: 15px 0;
}
.users-card__name {
font-weight: 400;
font-size: 16.5px;
line-height: 1.19;
letter-spacing: normal;
text-align: left;
color: #25292e;
}
.users-card__username {
font-size: 14px;
color: #707070;
}
.users-card__divider {
border: solid 0.5px #efefef;
width: 100%;
margin: 15px 0;
}
.users-card__stats {
display: flex;
}
.users-card__stats p {
font-size: 20px;
}
.users-card__stats div {
margin: 10px;
text-align: center;

}
.users-card__stats span {
color: #707070;
font-size: 12px;
}
Copy

مرحله 4 – لیست کردن همه کاربران
برای اینکه برنامه خود را برای لیست کاربران قرار دهیم ، ابتدا باید یک جزء UsersList ایجاد کنیم. در دیرکتوری src / Users ، فایلهای زیر را ایجاد کنید:
$ touch UsersList.js UsersList.css

بیایید UsersList.js را به شرح زیر ویرایش کنیم. ابتدا ورودی های لازم را ایجاد می کنیم:
// src/Users/UsersList.js
import React from ‘react’;
import UsersCard from ‘./UsersCard’;
import ‘./UsersList.css’;

const listOfUsersPerRow = (users, row, itemsPerRow, match) =>
users
.slice((row – 1) * itemsPerRow, row * itemsPerRow)
.map(user => <UsersCard user={user} key={user.id} match={match} />);

const listOfRows = (users, itemsPerRow, match) => {
const numberOfUsers = users.length;
const rows = Math.ceil(numberOfUsers / itemsPerRow);
return Array(rows)
.fill()
.map((val, rowIndex) => (
<div className=”columns”>
{listOfUsersPerRow(users, rowIndex + 1, itemsPerRow, match)}
</div>
));
};

//…

توابع listOfUsersPerRow و listOfRows به صورت دست به دست کار می کنند تا اطمینان حاصل شود که در هر سطر بیشتر از تعداد مشخص شده کارت نداریم. نکته بعدی که باید انجام شود استفاده از توابع برای ایجاد لیست کاربران به شرح زیر است:
//src/Users/UsersList.js
//…
const UsersList = ({ users, itemsPerRow = 2, match }) => (
<div className=”cards”>
<h3 className=”is-size-3 has-text-centered”>Users</h3>
{listOfRows(users, itemsPerRow, match)}
</div>
);
export default UsersList;

UsersList.css به صورت زیر ظاهر می شود:
/** src/Users/UsersList.css **/
.cards {
margin-left: 20px;
}
.columns {
margin-top: 0;
}

مرحله 5 – ایجاد نمای جزئیات کاربر
هنگامی که یک کارت کاربر از لیست کاربران کلیک می شود ، کارت تک کاربره تحت بخش جزئیات نمایش داده می شود. بیایید نحوه ساخت این مؤلفه را ببینیم.
فایل های زیر را در دیرکتوری src / Users ایجاد کنید:
$ touch UsersDetails.js UsersDetails.css

اکنون ، بیایید موارد زیر را به فایل UsersDetails.js اضافه کنیم:
// src/Users/UsersDetails.js
import React from ‘react’;
import UsersCard from ‘./UsersCard’;
const UsersDetails = ({ user, match }) => <div>
<h3 className=”is-size-3 has-text-centered”>Details</h3>
<UsersCard user={user} match={match} />
</div>;
export default UsersDetails;

مرحله 6 – ایجاد مؤلفه داشبورد
برای ساخت مؤلفه داشبورد ، UserList را نمایش می دهیم و هنگامی که یک کارت کلیک می شود ، بدون نیاز به لود مجدد صفحه ، جزئیات را در کنار صفحه نمایش می دهید.
بیایید ببینیم چگونه آن را عملی کنیم. یک فایل UsersDashboard.js را در فهرست کاربران ایجاد کنید:
$ touch UserDashboard.js

UserDashboard.js را ویرایش کنید تا به شرح زیر باشد:
// src/Users/UsersDashboard.js

import React from ‘react’;
import { Route } from ‘react-router-dom’;
import UsersList from ‘./UsersList’;
import UsersDetails from ‘./UsersDetails’;
const UsersDashboard = ({ users, user, match }) => (
<div className=”columns”>
<div className=”column”>
<UsersList users={users} match={match} />
</div>
<div className=”column”>
<Route
path={match.url + ‘/:id’}
render={props => (
<UsersDetails
user={
users.filter(
user => user.id === parseInt(props.match.params.id, 10)
)[0]
}
match={match}
/>
)}
/>
</div>
</div>
);
export default UsersDashboard;

در این بخش ، ما از مؤلفه Route ارائه شده توسط re-router-dom به عنوان یک جزء برای نمایش جزئیات خاص کاربر هنگام کلیک روی کارت ، استفاده کردیم.
حالا ، بیایید همه اینها را کنار هم بگذاریم. فایل src / App.js را به روز کنید تا به صورت زیر باشد:
// src/App.js
import React, { Component } from ‘react’;
import { Route, Redirect } from ‘react-router-dom’;
import Nav from ‘./Nav’;
import UsersList from ‘./Users/UsersList’;
import UsersDetails from ‘./Users/UsersDetails’;
import UsersDashboard from ‘./Users/UsersDashboard’;
import ‘./App.css’;
class App extends Component {
state = {
users: [
{
id: 39191,
avatar: ‘https://avatars0.githubusercontent.com/u/39191?v=4’,
name: ‘Paul Irish’,
username: ‘paulirish’,
followers: ’12k’,
following: ‘1k’,
repos: ‘1.5k’
},
//… other user data
]
};
render() {
return (
<div className=”App”>
<Nav />
<Route
path=”/dashboard”
render={props => (
<UsersDashboard users={this.state.users} {…props} />
)}
/>
<Redirect from=”/” to=”/dashboard”/>
<Redirect from=”/users” to=”/dashboard”/>
</div>
);
}
}

export default App;

مرحله 7 – تنظیم مسیریابی پاسخگو
وقتی کاربران از این برنامه بازدید می کنند ، صرف نظر از اندازه صفحه نمایش ، از این منظر و عملکرد مشابه برخوردار می شوند. در برنامه های تمام عیار ، بهتر است به کاربران تجربیاتی ارائه دهند که می توانند از آنها به درستی استفاده کنند. یکی از راه های انجام این کار ، ارائه خدماتی به آنهاست که با اندازه دقیق دستگاه آنها مطابقت دارند. اکنون می خواهیم به چگونگی انجام این کار در برنامه خود نگاهی بیندازیم.
هنگام بازدید از برنامه بر روی صفحه نمایش پهن ، کاربر به مسیر /dashboard برنامه هدایت می شود و هنگام مشاهده بر روی صفحه نمایش کوچکتر ، کاربر به مسیر /users برنامه هدایت می شود. بیایید ببینیم چگونه این کار را انجام دهیم.
فایل src / App.js را به روز کنید تا به این صورت باشد:
// src/App.js

import React, { Component } from ‘react’;
import { Route, Switch, Redirect } from ‘react-router-dom’;
import Media from ‘react-media’;
import Nav from ‘./Nav’;
import UsersList from ‘./Users/UsersList’;
import UsersDetails from ‘./Users/UsersDetails’;
import UsersDashboard from ‘./Users/UsersDashboard’;
import ‘./App.css’;

class App extends Component {
//set application state
[…]
render() {
return (
<div className=”App”>
<Nav />
<Media query=”(max-width: 599px)”>
{matches =>
matches ? (
<Switch>
<Route
exact
path=”/users”
render={props => (
<UsersList users={this.state.users} {…props} />
)}
/>
<Route
path=”/users/:id”
render={props => (
<UsersDetails
user={
this.state.users.filter(
user =>
user.id === parseInt(props.match.params.id, 10)
)[0]
}
{…props}
/>
)}
/>
<Redirect from=”/” to=”/users”/>
<Redirect from=”/dashboard” to=”/users”/>
</Switch>
)
[…]

در این بخش از مؤلفه media برای بررسی اندازه صفحه نمایش استفاده می کنیم. اگر عرض صفحه نمایش از 599 پیکسل کمتر باشد ، آنچه را که می خواهیم برای مسیرهای مختلف نمایش داده شود تعیین می کنیم و همچنین مسیرهای / و /dashboard را به مسیر /users تغییر می دهیم.
اگر اندازه صفحه نمایش از پیکسل بیشتر باشد ، پیش می رویم و داشبورد کامل کاربر را مشابه قبل، نمایش می دهیم:
// src/App.js
[…]
: (
<Switch>
<Route
path=”/dashboard”
render={props => (
<UsersDashboard users={this.state.users} {…props} />
)}
/>
<Redirect from=”/” to=”/dashboard”/>
<Redirect from=”/users” to=”/dashboard”/>
</Switch>
)
}
</Media>
</div>
);
}
}

export default App;

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

نتیجه
در این مقاله ، ما مقدمه ای برای مسیریابی مبتنی بر مؤلفه با React و نحوه اجرای رندر مشروط در برنامه های React را دیدیم. در اینجا پیوندی به منبع کامل Github وجود دارد. حتما در بخش نظرات، کامنت و پیشنهادات خود را بگذارید.

 

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

استفاده از 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 ارزان – 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

مقدمه
Elasticsearch یک موتور جستجو و تجزیه و تحلیل RESTful توزیع شده است که قادر به حل تعداد فزاینده ای موارد استفاده است. Elasticsearch در ورای Apache Lucene ساخته شده است که یک کتابخانه موتور جستجوگر متن میباشد.
در این آموزش ، شما با استفاده از Node.js ،Elasticsearch و Vue.js.s یک موتور جستجوی زمان واقعی ایجاد خواهید کرد. در نتیجه ، درک پایه از Vue.js و Node.js (Express) برای دنبال کردن این آموزش لازم است.

مرحله 1 – آماده سازی محیط
بیایید با تنظیم محیط این بخش را شروع کنیم. از آنجا که شما از Node.js استفاده خواهید کرد ، ساده ترین راه برای شروع ایجاد پوشه جدید و اجرای npm init است. پوشه جدیدی به نام elastic-node ایجاد کنید ، دیرکتوری را در پوشه جدید تغییر دهید و npm init را اجرا کنید:
یک دیرکتوری جدید به نام elastic-node ایجاد کنید:
⦁ $ mkdir elastic-node

به پوشه جدید بروید:
⦁ $ cd elastic-node

npm init را برای ایجاد فایل pack.json اجرا کنید:
⦁ $ npm init

دستورات فوق شما را به فرآیند ایجاد فایل pack.json هدایت میکند، که برای اجرای هر کتابخانه Node.js لازم است.
در مرحله بعد ، باید کتابخانه هایی را که برای موتور جستجوی زمان واقعی مورد نیاز است ، نصب کنید. کتابخانه ها را با دستور زیر نصب کنید:
⦁ $ npm install express body-parser elasticsearch

کتابخانه express ، سرور مجازی را اجرا می کند ، در حالی که کتابخانه body-parser با express کار میکند تا درخواست های بدن را دنبال کند. elasticsearch کتابخانه رسمی Node.js برای Elasticsearch است که موتوری است که جستجو در زمان واقعی بر روی آن ساخته خواهد شد.
اکنون قسمت اول محیط شما تنظیم شده است. با این حال ، خود Elasticsearch در ستاپ شما نیست. شما نیاز به نصب Elasticsearch دارید که می تواند به چند روش مختلف انجام شود. اگر از سیستم عامل Debian Linux استفاده می کنید ، می توانید فایل .deb را دانلود کرده و با استفاده از dpkg نصب کنید.
دستور زیر را برای دانلود فایل .deb اجرا کنید:
⦁ $ curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.4.deb

اکنون بسته deb را با استفاده از dpkg نصب کنید:
⦁ $ sudo dpkg -i elasticsearch-5.6.4.deb

برای سایر توزیع ها / سیستم عامل ها ، می توانید راهنمایی در مورد نحوه نصب Elasticsearch را در اینجا بیابید.
Elasticsearch پس از نصب به صورت خودکار شروع نمی شود. Elasticsearch را می توان با استفاده از فرمان service شروع و متوقف کرد.
موارد زیر را برای شروع سرویس elasticsearch اجرا کنید:
⦁ $ sudo -i service elasticsearch start

می توانید با این دستور سرویس elasticsearch را متوقف کنید:
⦁ $ sudo -i service elasticsearch stop

برای پیکربندی Elasticsearch جهت شروع خودکار پس از بوت شدن سیستم ، این دستور را اجرا کنید تا Daemon systemctl مجدد لود شود:
⦁ $ sudo /bin/systemctl daemon-reload

سپس elasticsearch  را فعال کنید تا بتوان آن را به عنوان سرویس نامگذاری کرد:
⦁ $ sudo /bin/systemctl enable elasticsearch.service

بعد از اجرای دستور فوق ، می توانید Elasticsearch را با این دستور شروع کنید:
⦁ $ sudo systemctl start elasticsearch.service

و با دستور زیر متوقف کنید:
⦁ $ sudo systemctl stop elasticsearch.service

همچنین می توانید وضعیت Elasticsearch را بررسی کنید:
⦁ $ sudo service elasticsearch status

مرحله 2 – ایندکس کردن داده ها در Elasticsearch
یک فایل data.js را در پوشه root خود ایجاد کنید و کد زیر را اضافه کنید:
data.js

//require the Elasticsearch librray
const elasticsearch = require(‘elasticsearch’);
// instantiate an Elasticsearch client
const client = new elasticsearch.Client({
hosts: [ ‘http://localhost:9200’]
});
// ping the client to be sure Elasticsearch is up
client.ping({
requestTimeout: 30000,
}, function(error) {
// at this point, eastic search is down, please check your Elasticsearch service
if (error) {
console.error(‘Elasticsearch cluster is down!’);
} else {
console.log(‘Everything is ok’);
}
});

این کد ابتدا به کتابخانه Elasticsearch نیاز دارد و سپس یک کلاینت جدید Elasticsearch را راه اندازی می کند ، و یک آرایه هاست را وارد میکند ، http: // localhost: 9200 . دلیل این است که ، به طور پیش فرض ، Elasticsearch به 9200 گوش می کند. در مرحله بعد ، کلاینت Elasticsearch را پینگ می کنید تا مطمئن شوید سرور مجازی آماده است. اگر node data.jsرا اجرا کنید ، پیامی دریافت خواهید کرد که می گوید Everything is ok.
مرحله 3 – درک ایندکس ها
بر خلاف بانک های اطلاعاتی عادی ، ایندکس Elasticsearch مکانی برای ذخیره اسناد مرتبط است. به عنوان مثال ، برای ذخیره کردن داده ها از نوع cities_list، یک ایندکس با نام scotch.io-tutorialایجاد خواهید کرد. به این صورت در Elasticsearch انجام می شود:
data.js
// create a new index called scotch.io-tutorial. If the index has already been created, this function fails safely
client.indices.create({
index: ‘scotch.io-tutorial’
}, function(error, response, status) {
if (error) {
console.log(error);
} else {
console.log(“created a new index”, response);
}
});

این قطعه کد را بعد از تابع ping  که قبلاً نوشته بودید اضافه کنید. اکنون دوباره node data.js را اجرا کنید. دو پیام دریافت خواهید کرد:
⦁ Everything is okay
⦁ Created a new index (Elasticsearch با پاسخ از)
مرحله 4 – اضافه کردن اسناد به ایندکس ها
می توانید با API Elasticsearch اسناد را به ایندکس های موجود اضافه کنید. برای این کار از کد زیر استفاده کنید:
// add a data to the index that has already been created
client.index({
index: ‘scotch.io-tutorial’,
id: ‘1’,
type: ‘cities_list’,
body: {
“Key1”: “Content for key one”,
“Key2”: “Content for key two”,
“key3”: “Content for key three”,
}
}, function(err, resp, status) {
console.log(resp);
});

body به سندی که می خواهید به ایندکس scotch.io-tutour اضافه کنید اشاره می کند ، در حالی که نوع، بیشتر برای دسته بندی است. با این حال ، توجه داشته باشید که اگر کلید id حذف شود ، Elasticsearch یکی از آنها را به صورت خودکار تولید می کند.
در این آموزش ، سند شما لیستی از تمام شهرهای جهان خواهد بود. اگر قرار باشد هر شهر را یکی یکی اضافه کنید ، ممکن است روزها طول بکشد تا همه آنها فهرست شوند. خوشبختانه ، Elasticsearch تابع bulk دارد که می تواند داده های فله ای را پردازش کند.
ابتدا فایل JSON را که شامل تمام شهرهای جهان است ، دریافت کنید و آن را در پوشه root خود به عنوان names.json ذخیره کنید.
زمان آن است که از API بالک برای وارد کردن مجموعه داده های بزرگ استفاده کنید:
data.js
// require the array of cities that was downloaded
const cities = require(‘./cities.json’);
// declare an empty array called bulk
var bulk = [];
//loop through each city and create and push two objects into the array in each loop
//first object sends the index and type you will be saving the data as
//second object is the data you want to index
cities.forEach(city =>{
bulk.push({index:{
_index:”scotch.io-tutorial”,
_type:”cities_list”,
}
})
bulk.push(city)
})
//perform bulk indexing of the data passed
client.bulk({body:bulk}, function( err, response ){
if( err ){
console.log(“Failed Bulk operation”.red, err)
} else {
console.log(“Successfully imported %s”.green, cities.length);
}
});

در اینجا ، شما در فایل JSON خود میان تمام شهرها حلقه زده اید ، و در هر حلقه ، یک آبجکت را با index  و type  سندی که در آن فهرست بندی می کنید ، به کار میگیرید. دو ورودی برای آرایه در حلقه وجود دارد زیرا API bulk در مرحله اول یک آبجکت حاوی تعریف ایندکس را انتظار دارد و سپس سندی را که می خواهید آن را ایندکس کنید. برای کسب اطلاعات بیشتر در این مورد ، می توانید این مقاله را بررسی کنید.
در مرحله بعدی ، تابع client.bulk را فراخوانی میکنید ، و به قسمت جدید آرایه bulk وارد میکنید. این کار با ایندکس کردن scotch.io-tutorial و cities_list، تمام داده های شما را به Elasticsearch  ایندکس میکند.
مرحله 5 – استفاده از Express برای ارائه صفحه فرود
نمونه Elasticsearch شما در حال اجراست و می توانید با استفاده از Node.js. با آن ارتباط برقرار کنید. زمان آن رسیده است که از Express برای ارائه یک صفحه فرود استفاده کرده و از ستاپ راه اندازی شده استفاده کنید.
فایلی با نام index.js ایجاد کنید و کد زیر را اضافه کنید:
index.js
//require the Elasticsearch librray
const elasticsearch = require(‘elasticsearch’);
// instantiate an elasticsearch client
const client = new elasticsearch.Client({
hosts: [ ‘http://localhost:9200’]
});
//require Express
const express = require( ‘express’ );
// instanciate an instance of express and hold the value in a constant called app
const app = express();
//require the body-parser library. will be used for parsing body requests
const bodyParser = require(‘body-parser’)
//require the path library
const path = require( ‘path’ );

// ping the client to be sure Elasticsearch is up
client.ping({
requestTimeout: 30000,
}, function(error) {
// at this point, eastic search is down, please check your Elasticsearch service
if (error) {
console.error(‘elasticsearch cluster is down!’);
} else {
console.log(‘Everything is ok’);
}
});

// use the bodyparser as a middleware
app.use(bodyParser.json())
// set port for the app to listen on
app.set( ‘port’, process.env.PORT || 3001 );
// set path to serve static files
app.use( express.static( path.join( __dirname, ‘public’ )));
// enable CORS
app.use(function(req, res, next) {
res.header(“Access-Control-Allow-Origin”, “*”);
res.header(‘Access-Control-Allow-Methods’, ‘PUT, GET, POST, DELETE, OPTIONS’);
res.header(“Access-Control-Allow-Headers”, “Origin, X-Requested-With, Content-Type, Accept”);
next();
});

// defined the base route and return with an HTML file called tempate.html
app.get(‘/’, function(req, res){
res.sendFile(‘template.html’, {
root: path.join( __dirname, ‘views’ )
});
})

// define the /search route that should return elastic search results
app.get(‘/search’, function (req, res){
// declare the query object to search elastic search and return only 200 results from the first result found.
// also match any data where the name is like the query string sent in
let body = {
size: 200,
from: 0,
query: {
match: {
name: req.query[‘q’]
}
}
}
// perform the actual search passing in the index, the search query and the type
client.search({index:’scotch.io-tutorial’, body:body, type:’cities_list’})
.then(results => {
res.send(results.hits.hits);
})
.catch(err=>{
console.log(err)
res.send([]);
});

})
// listen on the specified port
app .listen( app.get( ‘port’ ), function(){
console.log( ‘Express server listening on port ‘ + app.get( ‘port’ ));
} );

با نگاهی به کد بالا ، می بینید که کد موارد زیر را انجام داده است:
• کتابخانه های Express ، body-parser و path را درخواست کرده است.
• یک نمونه جدید از Express را روی ثابتی به نام app تنظیم کرده است.
• برنامه را تنظیم کرده تا از میان افزار bodyParser استفاده کند.
• بخش استاتیک برنامه را روی پوشه ای به نام public تنظیم کرده است. این پوشه هنوز ایجاد نشده است
• یک میان افزار تعریف کرده است که عنوان CORS را به برنامه اضافه می کند.
• یک مسیر GET برای URL ریشه برنامه تعریف کرده است ، که توسط / نشان داده میشود. در این مسیر ، کد فایلی به نام template.html را که در پوشه views قرار دارد ، باز می گرداند.
•یک مسیر GET برای URL سرچ برنامه تعریف کرده است ، که از جستجوی آبجکت برای یافتن مطابقت داده های منتقل شده از طریق رشته پرس و جو استفاده می کند. جستجوی اصلی در موضوع پرس و جو گنجانده شده است. می توانید جستارهای سرچ مختلف را به این آبجکت اضافه کنید. برای این جستجو، یک کلید با پرس و جو اضافه می کنید و یک آبجکت را برمیگردانید که به آن میگویید نام سندی که به دنبال آن هستید باید با req.query [‘q’] مطابقت داشته باشد.
علاوه بر موضوع پرس و جو ، بدنه جستجو می تواند شامل سایر خصوصیات اختیاری از جمله size و from باشد. ویژگی size تعداد اسنادی را که باید در پاسخ شامل شوند را تعیین می کند. اگر این مقدار موجود نباشد ، به طور پیش فرض 10 سند بازگردانده می شوند. ویژگی from، شاخص شروع اسناد برگشتی را تعیین می کند. این برای صفحه بندی مفید است.
مرحله 6 – درک پاسخ API جستجو
اگر مجبور باشید پاسخ را از API جستجو وارد کنید ، اطلاعات زیادی را در بر می گیرد. در زیر مثالی آورده شده است:
Output
{ took: 88,
timed_out: false,
_shards: { total: 5, successful: 5, failed: 0 },
hits:
{ total: 59,
max_score: 5.9437823,
hits:
[ {“_index”:”scotch.io-tutorial”,
“_type”:”cities_list”,
“_id”:”AV-xjywQx9urn0C4pSPv”,
“_score”:5.9437823,”
_source”:{“country”:”ES”,”name”:”A Coruña”,”lat”:”43.37135″,”lng”:”-8.396″}},
[Object],

[Object] ] } }

پاسخ شامل یک ویژگی took برای تعداد میلی ثانیه هایی است که برای یافتن نتایج طول میکشد ، timed_out ، که فقط درصورتی درست است که هیچ نتیجه ای در حداکثر زمان مجاز یافت نشود ، برای اطلاعات پیرامون وضعیت گره های مختلف (در صورت به کارگیری به عنوان خوشه گره ها) ، _shards میباشد و hits که شامل نتایج جستجو میباشد.
⦁ در خاصیت hits ، یک آبجکت با خصوصیات زیر خواهید داشت:
⦁ total تعداد کل موارد مطابقت یافته را نشان می دهد.
⦁ max_score حداکثر امتیاز از موارد یافت شده است.
⦁ hits آرایه ای است که شامل موارد یافت شده میباشد.
به همین دلیل شما در مسیر جستجو ، response.hits.hits را در بر می گردانید ، که جایگاه نتایج یافت شده است.
مرحله 7 – ایجاد الگوی HTML
ابتدا دو پوشه جدید را در پوشه root خود با نام views و public ایجاد کنید که در مرحله قبل به آنها ارجاع داده شده است. در مرحله بعدی ، یک فایل با نام pattern.html در پوشه views ایجاد کنید و کد زیر را پیست کنید:
template.html
<!– template.html –>
<link rel=”stylesheet” type=”text/css” href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css”>
<script src=”https://unpkg.com/axios/dist/axios.min.js”></script>
<script src=”https://cdn.jsdelivr.net/npm/vue”></script>
<div class=”container” id=”app”>
<div class=”row”>
<div class=”col-md-6 col-md-offset-3″>
<h1>Search Cities around the world</h1>
</div>
</div>
<div class=”row”>
<div class=”col-md-4 col-md-offset-3″>
<form action=”” class=”search-form”>
<div class=”form-group has-feedback”>
<label for=”search” class=”sr-only”>Search</label>
<input type=”text” class=”form-control” name=”search” id=”search” placeholder=”search” v-model=”query” >
<span class=”glyphicon glyphicon-search form-control-feedback”></span>
</div>
</form>
</div>
</div>
<div class=”row”>
<div class=”col-md-3″ v-for=”result in results”>
<div class=”panel panel-default”>
<div class=”panel-heading”>
<!– display the city name and country –>
{{ result._source.name }}, {{ result._source.country }}
</div>
<div class=”panel-body”>
<!– display the latitude and longitude of the city –>
<p>lat:{{ result._source.lat }}, long: {{ result._source.lng }}.</p>
</div>
</div>
</div>
</div>
</div>
<!— some styling for the page –>
<style>
.search-form .form-group {
float: right !important;
transition: all 0.35s, border-radius 0s;
width: 32px;
height: 32px;
background-color: #fff;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset;
border-radius: 25px;
border: 1px solid #ccc;
}

.search-form .form-group input.form-control {
padding-right: 20px;
border: 0 none;
background: transparent;
box-shadow: none;
display: block;
}

.search-form .form-group input.form-control::-webkit-input-placeholder {
display: none;
}

.search-form .form-group input.form-control:-moz-placeholder {
/* Firefox 18- */
display: none;
}

.search-form .form-group input.form-control::-moz-placeholder {
/* Firefox 19+ */
display: none;
}

.search-form .form-group input.form-control:-ms-input-placeholder {
display: none;
}

.search-form .form-group:hover,
.search-form .form-group.hover {
width: 100%;
border-radius: 4px 25px 25px 4px;
}

.search-form .form-group span.form-control-feedback {
position: absolute;
top: -1px;
right: -2px;
z-index: 2;
display: block;
width: 34px;
height: 34px;
line-height: 34px;
text-align: center;
color: #3596e0;
left: initial;
font-size: 14px;
}
</style>

در قسمت قطعه کد بالا دو بخش اصلی وجود دارد: کد HTML و CSS.
در بخش HTML ، شما به سه کتابخانه مختلف نیاز دارید:
1- Bootstrap CSS برای استایل صفحه.
2- Axios js برای درخواست های HTTP به سرور مجازی ما.
3- Vue.js که یک چارچوب حداقلی است که شما برای نما استفاده خواهید کرد.
در بخش CSS از یک طراحی استفاده کرده اید تا هنگامی که روی نماد جستجو می روید ، ورودی جستجو را مخفی کرده و خود را نشان دهد.
در مرحله بعد ، یک ورودی برای جعبه جستجو وجود دارد که شما v-model آن را برای query اختصاص داده اید (این مورد توسط Vue.js استفاده خواهد شد). بعد از این ، در تمام نتایج ما حلقه می زنید.
دستور node index.js را اجرا کنید و سپس از یک مرورگر به http: // localhost: 3001 / بروید. صفحه فرود برنامه را مشاهده خواهید کرد.

در مرحله بعد ، برچسب اسکریپت را در فایل template.html خود اضافه کنید:
template.html
// create a new Vue instance
var app = new Vue({
el: ‘#app’,
// declare the data for the component (An array that houses the results and a query that holds the current search string)
data: {
results: [],
query: ”
},
// declare methods in this Vue component. here only one method which performs the search is defined
methods: {
// make an axios request to the server with the current search query
search: function() {
axios.get(“http://127.0.0.1:3001/search?q=” + this.query)
.then(response => {
this.results = response.data;

})
}
},
// declare Vue watchers
watch: {
// watch for change in the query string and recall the search method
query: function() {
this.search();
}
}

})

در این بخش نمونه جدیدی از Vue را اعلام کردید که آن را با id برنامه بر روی المان، نصب میکنید. خواص داده را اعلام کردید که شامل query است ، که به ورودی جستجو پیوست کرده اید ، و results ، که مجموعه ای از تمام نتایج یافت شده است.
در بخش روشها ، فقط یک تابع به نام search دارید ، که یک درخواست GET را به مسیر جستجو میفرستد. از ورودی جعبه جستجو می گذرد. و به نوبه خود پاسخی را که در بلوک کد HTML حلقه شده است برمی گرداند.
سرانجام ، در Vue.js از watchers استفاده می کنید ، که در هر زمان که داده ها تغییرات را دیدند ، کاری انجام می دهد. در اینجا ، در حال مشاهده تغییر در داده query هستید و پس از تغییر ، روش search کنار گذاشته می شود.
اگر فرمان node index.js را مجدداً اجرا کنید و به http: // localhost: 3001 / بروید ، باید مطابق زیر کار کند:

مرحله 8 – جستجو از سمت کلاینت
اگر نمی خواهید در هر بار جستجو یک درخواست به سرور مجازی ارسال کنید ، می توانید موتور Elasticsearch را از طرف کلاینت جستجو کنید. ممکن است برخی از توسعه دهندگان مایل به استفاده از سرور مجازی های خود برای هر اصطلاح جستجو نباشند ، در حالی که برخی احساس می کنند جستجو از طرف سرور مجازی امن تر است.
Elasticsearch یک ساختار مرورگر پیشنهاد میکند که می تواند جستجو کند. این مرحله شما را در مورد جستجوی سمت کلاینت مرورگر راهنمایی می کنیم.
ابتدا مسیر جدیدی را به فایل Express خود اضافه کنید و سرور مجازی خود را مجدداً راه اندازی کنید:
index.js
// decare a new route. This route serves a static HTML template called template2.html
app.get(‘/v2’, function(req, res){
res.sendFile(‘template2.html’, {
root: path.join( __dirname, ‘views’ )
});
})

در این بلاک کد ، مسیر جدیدی را برای URL در / v2 ایجاد کرده اید تا یک فایل HTML استاتیک به نام template2.html را برگردانید. به زودی این فایل را ایجاد خواهید کرد.
در مرحله بعد ، باید کتابخانه کلاینت را برای Elasticsearch از اینجا دانلود کنید. بعد از دانلود ، elasticsearch.min.js را در پوشه عمومی در ریشه برنامه خود اکسترکت و کپی کنید.
توجه: اگر بعد از اتصال به موتور Elasticsearch از طرف کلاینت و دنبال کردن قطعه کد زیر تا انتهای فایل پیکربندی Elasticsearch ، با مشکلات CORS روبرو شدید، با مرور مطالب مرجع Elasticsearch می توانید این فایل را جایگذاری کنید.
/etc/elasticsearch/elasticsearch.yml

http.cors.enabled : true
http.cors.allow-origin : “*”

بعد از انجام این کار ، نمونه Elasticsearch خود را مجدداً راه اندازی کنید:
⦁ sudo service elasticsearch restart

سپس ، یک فایل با نام pattern2.html در پوشه views و این کد را ایجاد کنید:
template2.html
<!– template2.html –>
<link rel=”stylesheet” type=”text/css” href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css”>
<script src=”https://unpkg.com/axios/dist/axios.min.js”></script>
<script src=”https://cdn.jsdelivr.net/npm/vue”></script>
<div class=”container” id=”app”>
<div class=”row”>
<div class=”col-md-6 col-md-offset-3″>
<h1>Search Cities around the world</h1>
</div>
</div>
<div class=”row”>
<div class=”col-md-4 col-md-offset-3″>
<form action=”” class=”search-form”>
<div class=”form-group has-feedback”>
<label for=”search” class=”sr-only”>Search</label>
<input type=”text” class=”form-control” name=”search” id=”search” placeholder=”search” v-model=”query” >
<span class=”glyphicon glyphicon-search form-control-feedback”></span>
</div>
</form>
</div>
</div>
<div class=”row”>
<div class=”col-md-3″ v-for=”result in results”>
<div class=”panel panel-default”>
<div class=”panel-heading”>
<!– display the city name and country –>
{{ result._source.name }}, {{ result._source.country }}
</div>
<div class=”panel-body”>
<!– display the latitude and longitude of the city –>
<p>lat:{{ result._source.lat }}, long: {{ result._source.lng }}.</p>
</div>
</div>
</div>
</div>
</div>
<script src=”/elasticsearch.min.js”></script>
<style>
.search-form .form-group {
float: right !important;
transition: all 0.35s, border-radius 0s;
width: 32px;
height: 32px;
background-color: #fff;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset;
border-radius: 25px;
border: 1px solid #ccc;
}

.search-form .form-group input.form-control {
padding-right: 20px;
border: 0 none;
background: transparent;
box-shadow: none;
display: block;
}

.search-form .form-group input.form-control::-webkit-input-placeholder {
display: none;
}

.search-form .form-group input.form-control:-moz-placeholder {
/* Firefox 18- */
display: none;
}

.search-form .form-group input.form-control::-moz-placeholder {
/* Firefox 19+ */
display: none;
}

.search-form .form-group input.form-control:-ms-input-placeholder {
display: none;
}

.search-form .form-group:hover,
.search-form .form-group.hover {
width: 100%;
border-radius: 4px 25px 25px 4px;
}

.search-form .form-group span.form-control-feedback {
position: absolute;
top: -1px;
right: -2px;
z-index: 2;
display: block;
width: 34px;
height: 34px;
line-height: 34px;
text-align: center;
color: #3596e0;
left: initial;
font-size: 14px;
}
</style>

سپس، یک تگ اسکریپت در فایل template2.html خود ایجاد کرده و این کد را اضافه کنید:
template2.html
// instantiate a new Elasticsearch client like you did on the client
var client = new elasticsearch.Client({
hosts: [‘http://127.0.0.1:9200’]
});
// create a new Vue instance
var app = new Vue({
el: ‘#app’,
// declare the data for the component (An array that houses the results and a query that holds the current search string)
data: {
results: [],
query: ”
},
// declare methods in this Vue component. here only one method which performs the search is defined
methods: {
// function that calls the elastic search. here the query object is set just as that of the server.
//Here the query string is passed directly from Vue
search: function() {
var body = {
size: 200,
from: 0,
query: {
match: {
name: this.query
}
}
}
// search the Elasticsearch passing in the index, query object and type
client.search({ index: ‘scotch.io-tutorial’, body: body, type: ‘cities_list’ })
.then(results => {
console.log(`found ${results.hits.total} items in ${results.took}ms`);
// set the results to the result array we have
this.results = results.hits.hits;
})
.catch(err => {
console.log(err)

});

}
},
// declare Vue watchers
watch: {
// watch for change in the query string and recall the search method
query: function() {
this.search();
}
}

})

قطعه HTML و JavaScript در بالا شبیه به مرحله قبل است که تفاوت های اصلی آن به شرح زیر است:
• شما به Axios احتیاج نداشتید ، در عوض به elasticsearch.js نیاز داشتید.
• در بالای برچسب اسکریپت ، کلاینت Elasticsearch را همانطور که در سمت سرور مجازی انجام شد ، آغاز کردید.
• روش جستجو درخواست HTTP را انجام نمی دهد ، بلکه موتور Elasticsearch را همانطور که در مسیر جستجو در سمت سرور مجازی انجام می شود جستجو می کند.
اگر در http: // localhost: 3001 / v2 جستجو می کنید ، باید مطابق شکل زیر کار کند:

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

 

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

استفاده از 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 ارزان – 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

Live Share افزونه ای برای کد VS (ویژوال استودیو) است که امکان همکاری زمان واقعی بین توسعه دهندگان را فراهم می کند. این امکان را به کاربران می دهد تا یک جلسه را با شخص دیگری به اشتراک بگذارند ، به آنها امکان می دهد کدها را ویرایش کنند و همچنین سرور مجازی و بخش اشکال زدایی را به اشتراک بگذارند.
شروع
1- افزونه Live Share (اشتراک گذاری زنده) را نصب کنید
2- پالت فرمان را باز کنید
3- اشتراک گذاری زنده را شروع کنید
4- پیوند به اشتراک بگذارید
با پیش رفتن در طول این مقاله ، اسکرین شات دو رایانه مختلف را مشاهده می کنید تا نمونه ای از عملکرد Live Share به شما نشان داده شود. برای اهداف شفاف سازی ، این آموزش به ترتیب به شخصی اشاره دارد که دعوت جلسه را ارسال می کند و شخصی که دعوت نامه را میپذیرد یعنی دعوت کننده و دعوت شونده.
مرحله 1 – دانلود افزونه
اولین قدم برای استفاده از Live Share نصب آن به عنوان افزونه است. در VS Code می توانید سربرگ افزونه ها را باز کنید ، Live Share را جستجو کنید، روی نصب کلیک کنید و بعد از اتمام نصب مجدد لود کنید.

پس از آن ، باید وارد سیستم شوید. از همین حالا ، می توانید وارد حساب کاربری Microsoft یا Github شوید.
برای ورود به سیستم ، از دکمه sign in در پایین نوار وضعیت با آیکون شخصی استفاده کنید.
مرحله 2 – اشتراک گذاری و پیوستن به یک جلسه
پس از ورود به سیستم ، آماده ایجاد جلسه برای به اشتراک گذاشتن با دیگران هستید. مطمئن شوید که فقط جلسات زنده را با افرادی که به آنها اعتماد دارید به اشتراک بگذارید. همانطور که خواهید دید ، شما دسترسی خاصی را به کاربران اعطا می کنید که در صورت استفاده نادرست می توانند مخرب باشند.
با کلیک کردن روی نام کاربری خود در نوار وضعیت پایین شروع کرده و از گزینه های موجود Start Collaboration Session را انتخاب کنید. از طرف دیگر ، می توانید پالت فرمان (CMD + SHIFT + P را در Mac ، CTRL + SHIFT + P در ویندوز) را باز کنید و Start Collaboration Session را تایپ کنید.

به شما اطلاع داده می شود که لینک دعوت شما در کلیپ بورد کپی شده است.

این لینک را با شخصی به اشتراک بگذارید تا آنها را به جلسه خود دعوت کنید.
به عنوان دعوت شونده ، برای پذیرش دعوت نامه ، روی نام کاربری خود در نوار وضعیت پایین کلیک کنید و Join Collaborative Session را انتخاب کنید. روش دیگر ، مانند بالا ، می توانید پالت فرمان را باز کرده و Join Collaborative Session را تایپ کنید.

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

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

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

مرحله 3 – محدود کردن همکاری
به طور پیش فرض ، هنگام به اشتراک گذاشتن یک جلسه با شخصی ، آنها قادر به ویرایش کلیه فایل ها در فضای کاری خواهند بود. این یکی از دلایلی است که باید به شخصی که ممکن است چند فایل را ویرایش کند اعتماد داشته باشید ، اما باز کردن کل فضای کاری تان برای آنها توصیه نمیشود. خوشبختانه ، Live Share این امکان را به شما می دهد تا فایل هایی که می توانند مشاهده و ویرایش کنند را محدود کنید.
برای محدود کردن همکاری ، یک فایل .vsls.json ایجاد کنید. پیکربندی اصلی چیزی شبیه به این خواهد بود:
.vsls.json
{
“$schema”: “http://json.schemastore.org/vsls”,
“gitignore”: “none”,
“excludeFiles”: [],
“hideFiles”: []
}

دو کلید که بیشتر به آنها اهمیت می دهیم عبارتند از: excludeFiles  و hideFiles. excludFiles مجموعه ای از نام فایل ها است که نمی خواهید کاربران به آنها دسترسی داشته باشند. hideFiles بسیار مشابه است به جز اینکه همکاران در شرایط خاصی قادر به دیدن فایل های مخفی خواهند بود. برای اطلاعات بیشتر درباره امنیت ، اینجا کلیک کنید.
مرحله 4 – به اشتراک گذاری سرور مجازی
به اشتراک گذاشتن با دیگران هنگام کار در یک برنامه محلی می تواند چالش برانگیز باشد. می توانید کد را در GitHub بررسی کرده و شخص دیگری آن را کلون کند، اما هنوز هم آنها باید متعلقات را نصب کرده و خودشان سرور مجازی را راه اندازی کنند. با Live Share می توانید سرور مجازی را بصورت محلی شروع کنید و شخص دیگر می تواند به همان برنامه در حال اجرا دسترسی پیدا کند.
به عنوان دعوت کننده ، سرور مجازی خود را به طور عادی شروع کنید. سپس بر روی نام کاربری در نوار وضعیت پایین کلیک کرده و Share Server را انتخاب کنید. روش دیگر این است که پالت فرمان را باز کرده و Share Server را تایپ کنید.

به عنوان دعوت شونده ، می توانید برای دیدن سرور مجازی بهlocalhost  در پورت مناسب بروید.

مرحله 5 – به اشتراک گذاری ترمینال
ممکن است دلیلی وجود داشته باشد که بخواهید دستورات ترمینال را به فردی آموزش دهید ، مانند نحوه پیمایش فایل سیستم ، کار با npm ، راه اندازی سرور مجازی dev خود و غیره. همانند ویژگی های فوق ، ممکن است این کار از راه دور پیچیده باشد. Live Share همچنین یک ویژگی اشتراک گذاری پایانه برای حل این مشکل دارد.
اشتراک گذاری ترمینال شبیه به اشتراک گذاری سرور مجازی شماست. مشابه سایر ویژگی ها ، گزینه Share Terminal را انتخاب کنید. پس از آن ، بین مجوز read only یا read/write برای همکاران یکی را انتخاب کنید.

پس از به اشتراک گذاری ترمینال ، همکاران می توانند ترمینال را مشاهده کرده و ویرایش کنند. تصویر زیر چیزی است که دعوت شونده بعد از ارسال پیام به نمایشگر توسط دعوت کننده، میبیند.

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

 

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

استفاده از 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 ارزان – 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

GraphQL یک زبان جستجو است که توسط فیس بوک با هدف ساخت برنامه های کلاینت بر اساس نحو بصری و انعطاف پذیر برای توصیف نیازمندی و تعامل داده ها ایجاد شده است. یک سرویس GraphQL با تعیین انواع و فیلدهای مربوط به آن نوع ها ایجاد می شود ، سپس عملکردهایی را برای هر فیلد در هر نوع ارائه می دهد.
هنگامی که یک سرویس GraphQL در حال اجرا است (به طور معمول با URL در یک سرویس وب) ، می تواند برای اعتبار سنجی و اجرا، جستارهایGraphQL را دریافت کند. ابتدا جستار دریافت شده بررسی می شود تا اطمینان حاصل شود که فقط به انواع و فیلدهای تعریف شده اشاره دارد ، سپس توابع ارائه شده را اجرا می کند تا نتیجه ای حاصل شود.
در این آموزش قصد داریم سرور مجازی GraphQL را با استفاده از Express پیاده سازی کنیم و از آن برای یادگیری ویژگی های مهم GraphQL استفاده کنیم.

برخی از ویژگی های GraphQL عبارتند از:
• سلسله مراتبی – جستجوها دقیقاً مانند داده هایی هستند که برگردانده می شوند.
• پرس و جوهای مختص کلاینت – کلاینت این آزادی را دارد که بگوید چه چیزی را از سرور مجازی دریافت کند ،
• به صورت قوی دسته بندی شده – می توانید قبل از اجرا ، یک پرس و جو را به صورت نحوی و درون سیستم نوع GraphQL تأیید کنید. همچنین به اهرم ابزارهای قدرتمندی که باعث بهبود تجربه توسعه می شوند ، مانند GraphiQL کمک می کند.
• درون نگرانه – می توانید با استفاده از خود دستور GraphQL ، نوع سیستم را پرس و جو کنید. این امر برای تجزیه داده های ورودی به رابط های قوی دسته بندی شده عالی است و نیازی به تجزیه و تبدیل دستی JSON به آبجکت ها ندارد.
چرا از GraphQL استفاده کنیم
یکی از چالش های اصلی در تماس های معمول REST عدم توانایی کلاینت در درخواست مجموعه داده های سفارشی (محدود یا گسترش یافته) است. در بیشتر موارد ، هنگامی که کلاینت اطلاعاتی را از سرور مجازی درخواست می کند ، همه یا هیچ یک از قسمت ها را دریافت نمی کند.
مشکل دیگر، کار و حفظ چندین نقطه انتهایی است. با رشد یک پلتفرم، در نتیجه تعداد آنها افزایش می یابد. بنابراین ، کلاینت ها اغلب نیاز به درخواست داده ها از نقاط انتهایی مختلف دارند. API های GraphQL از نظر انواع و فیلدها سازماندهی می شوند نه بر حسب نقاط پایانی. شما می توانید از یک نقطه انتهایی به قابلیت های کامل داده های خود دسترسی پیدا کنید.
هنگام ساختن یک سرور مجازی GraphQL ، فقط لازم است که یک URL برای واکشی و جهش همه داده ها داشته باشد. بنابراین ، کلاینت می تواند با ارسال یک رشته پرس و جو به سرور مجازی که خواسته اش را توصیف میکند، مجموعه ای از داده ها را درخواست کند.
تنظیم GraphQL با Node
ما با ساختار اصلی فایل و قطعه کد نمونه شروع می کنیم. برای دنبال کردن گام به گام این آموزش ، یک پوشه GraphQL ایجاد کنید و در داخل پوشه با استفاده از npm init -y یک پروژه npm را آغاز کنید. سپس یک فایل server.js ایجاد کنید که فایل اصلی خواهد بود. برای کد کامل ، منبع را با استفاده از دستورالعمل های موجود در منبع github ضمیمه شده ، کلون کنید.

بسته های لازم را نصب خواهیم کرد که در هر مرحله مورد بحث قرار خواهد گرفت.
⦁ $ npm i graphql express express-graphql -S

با استفاده از Express و express-Graphql ، یعنی میان افزار سرور مجازی HTTP ، یک سرور مجازی تنظیم خواهیم کرد. در مورد معنی کد نگران نباشید زیرا در مراحل بعدی با افزودن مطالب بیشتر ، آن را اندک اندک به طور کامل کشف خواهیم کرد.
var express = require(‘express’);
var graphqlHTTP = require(‘express-graphql’);
var { buildSchema } = require(‘graphql’);

// Initialize a GraphQL schema
var schema = buildSchema(`
type Query {
hello: String
}
`);

// Root resolver
var root = {
hello: () => ‘Hello world!’
};

// Create an express server and a GraphQL endpoint
var app = express();
app.use(‘/graphql’, graphqlHTTP({
schema: schema, // Must be provided
rootValue: root,
graphiql: true, // Enable GraphiQL when server endpoint is accessed in browser
}));
app.listen(4000, () => console.log(‘Now browse to localhost:4000/graphql’));

مفاهیم
تاکنون برخی از ویژگیها و مزایای GraphQL را مورد بررسی قرار داده ایم. در این بخش به اصطلاحات مختلف و پیاده سازی برخی از مشخصات فنی در GraphQL خواهیم پرداخت. برای تمرین ویژگی های خود از یک سرور مجازی اکسپرس استفاده خواهیم کرد.
شماتیک
در GraphQL ، Schema پرس و جوها و جهش ها را مدیریت میکند و چیزی که مجاز است در سرور مجازی GraphQL اجرا شود را تعریف می کند. شماتیک یک سیستم نوع GraphQL API را تعریف می کند. مجموعه کاملی از داده های ممکن (اشیاء ، زمینه ها ، روابط ، همه چیز) را که کلاینت می تواند به آن دسترسی داشته باشد ، توصیف می کند. تماس های کلاینت در مقابل شماتیک اعتبار سنجی و اجرا می شوند. کلاینت می تواند از طریق درون نگاری اطلاعات مربوط به شماتیک را پیدا کند. شماتیک در سرور مجازی GraphQL API قرار دارد.
زبان تعریف رابط GraphQL (IDL) یا زبان تعریف شماتیک (SDL) مختصر ترین روش برای مشخص کردن یک طرح واره GraphQL است. ابتدایی ترین اجزای یک شماتیک GraphQL انواع آبجکت هستند ، که فقط نشان دهنده نوعی آبجکت هستند که می توانید سرویس خود بگیرید و اینکه چه فیلد هایی را در اختیار شما قرار می دهد. در زبان شماتیک GraphQL ، ممکن است آن را مانند این نشان دهیم:
type User {
id: ID!
name: String!
age: Int
}

در قطعه فوق ما از تابع buildSchema استفاده می کنیم که یک آبجکت شماتیک را از زبان شماتیک GraphQL می سازد.
var schema = buildSchema(`
type Query {
hello: String
}
`);

انواع ساخت
در داخل buildSchema ، می توان انواع مختلفی را تعریف کرد. ممکن است در بیشتر موارد به type Query {…} و type Mutation {…} توجه کنید. type Query {…} آبجکتی است که توابعی را شامل میشود که روی جستارهای GraphQL نگاشت می شود و برای واکشی داده ها (معادل GET در REST) ​​استفاده می شود ، در حالی که type Mutation {…} توابعی را دارد که روی جهش ها نگاشت می شود و برای ایجاد ، به روزرسانی یا حذف داده ها (معادل POST ، UPDATE و DELETE در REST) استفاده میشود.
ما با اضافه کردن برخی از انواع منطقی ، شماتیک خود را کمی پیچیده خواهیم کرد. به عنوان مثال ، می خواهیم یک user و آرایه ای از users از نوع person که خصوصیات id ، name ، age و gender دارند را بازگردانیم.
var schema = buildSchema(`
type Query {
user(id: Int!): Person
users(gender: String): [Person]
},
type Person {
id: Int
name: String
age: Int
gender: String
}
`);

شما می توانید به دستور جالبی در بالا توجه کنید ، [Person] به معنی بازگرداندن مجموعه ای از نوع person است در حالی که علامت تعجب در user(id: Int!) بدین معنی است که id باید ارائه شود. جستار users  یک متغیر جنسیت اختیاری می گیرد.
resolver
resolver مسئول نگاشت عملکرد روی تابع واقعی است. در داخل type Query، عملیاتی به نام users داریم. ما این عملیات را به یک تابع با همین نام در داخل root نگاشت می کنیم. همچنین برای این قابلیت ، چند کاربر ساختگی را ایجاد خواهیم کرد.

var users = [ // Dummy data
{
id: 1,
name: ‘Brian’,
age: ’21’,
gender: ‘M’
},
{
id:2,
name: ‘Kim’,
age: ’22’,
gender: ‘M’
},
{
id:3,
name: ‘Joseph’,
age: ’23’,
gender: ‘M’
},
{
id:3,
name: ‘Faith’,
age: ’23’,
gender: ‘F’
},
{
id:5,
name: ‘Joy’,
age: ’25’,
gender: ‘F’
}
];

var getUser = function(args) { … } // Return a single user
var retrieveUsers = function(args) { … } // Return a list of users

var root = {
user: getUser, // Resolver function to return user with specific id
users: retrieveUsers
};

برای خواناتر کردن کد، به جای اینکه همه چیز را در resolver اصلی جمع کنیم ، توابع جداگانه ایجاد خواهیم کرد. هر دو تابع یک پارامتر args اختیاری دارند که متغیرهایی را از جستار کلاینت دربردارند. بیایید اجرایی را برای resolver ها ارائه دهیم و عملکرد آنها را تست کنیم.

var getUser = function(args) { // return a single user based on id
var userID = args.id;
return users.filter(user => {
return user.id == userID;
})[0];
}

var retrieveUsers = function(args) { // Return a list of users. Takes an optional gender parameter
if(args.gender) {
var gender = args.gender;
return users.filter(user => user.gender === gender);
} else {
return users;
}
}

جستار
query getSingleUser {
user {
name
age
gender
}
}

خروجی

در نمودار بالا ، ما از عملیاتی به نام getSingleUser استفاده می کنیم تا یک کاربر واحد با نام ، جنسیت و سن آنها را بدست آوریم. به صورت اختیاری می توانیم مشخص کنیم که فقط در صورت عدم نیاز به سن و جنس ، به نام آنها احتیاج داریم.
هنگامی که چیزی در ورودهای شبکه یا سرور مجازی GraphQL شما رخ می دهد ، به جای تلاش برای رمزگشایی مطالب ، آسانتر است که یک پرس و جو در پایگاه داده خود را با نام خود شناسایی کنید.
این پرس و جو id مورد نیاز را ارائه نمی دهد و GraphQL به ما یک پیام خطای توصیفی می دهد. اکنون یک جستار صحیح ایجاد خواهیم کرد ، به استفاده از متغیرها / آرگومان ها دقت کنید.
جستار
query getSingleUser($userID: Int!) {
user(id: $userID) {
name
age
gender
}
}
متغیرها
{
“userID”:1
}
خروجی

نام های مستعار
شرایطی را تصور کنید که باید دو کاربر مختلف را بازیابی کنیم. چگونه می توانیم هر کاربر را شناسایی کنیم؟ در GraphQL ، شما به طور مستقیم نمی توانید یک فیلد یکسان را با آرگومان های مختلف جستجو کنید. بیایید این مطلب را نشان دهیم.
جستار
query getUsersWithAliasesError($userAID: Int!, $userBID: Int!) {
user(id: $userAID) {
name
age
gender
},
user(id: $userBID) {
name
age
gender
}
}
متغیرها
{
“userAID”:1,
“userBID”:2
}
خروجی

خطا توصیفی است و حتی استفاده از نام های مستعار را نشان می دهد. بیایید اجرا را اصلاح کنیم.
query getUsersWithAliases($userAID: Int!, $userBID: Int!) {
userA: user(id: $userAID) {
name
age
gender
},
userB: user(id: $userBID) {
name
age
gender
}
}
متغیرها
{
“userAID”:1,
“userBID”:2
}
خروجی

اکنون می توانیم به طور صحیح هر کاربر را با فیلدهای خود مشخص کنیم.
بخش ها (fragmentها)
سؤال بالا چندان بد نیست ، اما یک مشکل دارد. ما در حال تکرار فیلدهای یکسان برای userA و userB هستیم. می توانیم چیزی را پیدا کنیم که جستجوهای ما را DRY می کند. GraphQL شامل واحدهای قابل استفاده مجدد به نام fragment است که به شما امکان می دهد مجموعه هایی از فیلدها را بسازید ، و سپس آنها را در جستارهای مورد نظر خود درج کنید.
جستار
query getUsersWithFragments($userAID: Int!, $userBID: Int!) {
userA: user(id: $userAID) {
…userFields
},
userB: user(id: $userBID) {
…userFields
}
}

fragment userFields on Person {
name
age
gender
}
متغیرها
{
“userAID”:1,
“userBID”:2
}

خروجی

ما قطعه ای به نام userFields ایجاد کرده ایم که فقط می تواند در type Person اعمال شود و از آن برای بازیابی کاربران استفاده می شود.
دستورالعمل ها
دستورالعمل ها به ما امکان می دهند ساختار و شکل نمایش داده ها را با استفاده از متغیرها به طور پویا تغییر دهیم. در بعضی از موارد ممکن است بخواهیم بدون تغییر شماتیک ، برخی از فیلدها را رد کنیم یا شامل شویم. دو دستورالعمل موجود عبارتند از:
⦁ @include(if: Boolean) فقط در صورت صحت آرگومان این قسمت را در فیلد وارد میکند.
⦁ @skip(if: Boolean) در صورت صحیح بودن آرگومان ، از این قسمت پرش میگذرد.
بگذارید بگوییم که می خواهیم کاربران با جنسیت “F” را بازیابی کنیم اما سن آنها را کنار بگذاریم و id آنها را درج کنیم. از متغیرها برای وارد کردن جنسیت استفاده می کنیم و از دستورالعمل ها برای رد کردن و مستثنی شدن ویژگی های جست و جو استفاده می کنیم.
جستار
query getUsers($gender: String, $age: Boolean!, $id: Boolean!) {
users(gender: $gender){
…userFields
}
}

fragment userFields on Person {
name
age @skip(if: $age)
id @include(if: $id)
}
متغیرها
{
“gender”: “F”,
“age”: true,
“id”: true
}
خروجی

جهش ها
تاکنون با پرس و جوها سر و کار داشته ایم، عملیاتی برای بازیابی اطلاعات. جهش ها دومین عملیات اصلی در GraphQL هستند که با ایجاد ، حذف و به روز رسانی داده ها سر و کار دارند. بیایید به چند نمونه از نحوه انجام جهش ها توجه کنیم. به عنوان مثال ، ما می خواهیم یک کاربر را با id==1 به روز کنیم و سن ، نام آنها را تغییر داده و جزئیات جدید کاربر را برگردانیم.
ما طرح خود را به روز خواهیم کرد تا یک نوع جهش را در خود جای دهد و همچنین resolver اصلی ما را با توابع resolver مربوطه به روز کند.
// Add mutations
var schema = buildSchema(`

type Mutation {
updateUser(id: Int!, name: String!, age: String): Person
}
`);

var updateUser = function({id, name, age}) { // Update a user and return new user details
users.map(user => {
if(user.id === id) {
user.name = name;
user.age = age;
return user;
}
});
return users.filter(user=> user.id === id) [0];
}

var root = {
user: getUser,
users: retrieveUsers,
updateUser: updateUser // Include mutation function in root resolver
};
فرض کنید این اطلاعات اولیه کاربر هستند.

پس از جهش برای به روزرسانی کاربر ، اطلاعات جدید کاربر را دریافت می کنیم.
جستار
mutation updateUser($id: Int!, $name: String!, $age: String) {
updateUser(id: $id, name:$name, age: $age){
…userFields
}
}

fragment userFields on Person {
name
age
gender
}
متغیرها
{
“id”: 1,
“name”: “Keavin”,
“age”: “27”
}
خروجی

نتیجه
در این راهنما ، ما مفاهیم اساسی GraphQL و همچنین برخی از مثال های نسبتاً پیچیده را پوشش داده ایم. بیشتر این مثالها تفاوتهایی را بین GraphQL و REST برای کاربرانی که با REST تعامل داشته اند نشان می دهد.
برای کسب اطلاعات بیشتر در مورد GraphQL ، مطالب رسمی را بررسی کنید.

 

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

استفاده از 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 ارزان – 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

Discourse یک بستر بحث و گفتگوی منبع آزاد است. می تواند به عنوان یک لیست پستی ، یک انجمن بحث و گفتگو یا یک چت روم طولانی استفاده شود. در این آموزش ، Discourse را در یک محیط جداگانه با استفاده از Docker ، یک برنامه کانتینریزاسیون نصب خواهیم کرد.
پیش نیازها
قبل از شروع کار ، مواردی وجود دارد که ابتدا باید آنها را تنظیم کنیم:
یک سرور مجازی Ubuntu 18.04 با حداقل 2 گیگابایت رم ، که با دنبال کردن راهنمای راه اندازی اولیه اوبونتو 18.04 تنظیم شده باشد، و شامل یک کاربر sudo غیر ریشه و فایروال تنظیم شده باشد.
Docker نصب شده بر روی سرور مجازی، که می توانید با دنبال کردن مرحله 1 آموزش نصب Docker برای اوبونتو 18.04 انجام دهید.
نام دامنه ای که بر روی سرور مجازی شما ایجاد شود ، که می توانید با دنبال کردن این آموزش نام میزبان ، آن را تنظیم کنید.
سرور مجازی پستی SMTP . اگر نمی خواهید سرور مجازی پست الکترونیکی خود را اجرا کنید ، می توانید از یک سرویس دیگر مانند سرویس رایگان Mailgun استفاده کنید.
توجه: اگر از 1 گیگابایت رم استفاده می کنید ، Discourse نیاز به فایل swap دارد. اگرچه swap برای سیستمهای در حال استفاده از هارد دیسک های چرخشی قدیمی توصیه میشود ، اما استفاده از swap با SSD ها می تواند با گذشت زمان مشکلاتی را برای تخریب سخت افزار ایجاد کند. با توجه به این نکته ، ما فعال کردن swap در vpsgol یا هر ارائه دهنده دیگری که از حافظه SSD استفاده می کند را توصیه نمی کنیم. انجام این کار می تواند بر قابلیت اطمینان سخت افزار اصلی برای شما و همسایگانتان تأثیر بگذارد. از این رو ، حداقل 2 گیگ رم را برای اجرای Discourse روی یک دراپلت vpsgol توصیه می کنیم. برای جزئیات بیشتر در مورد استفاده از Discourse ، به نحوه اضافه کردن فضای Discourse در اوبونتو 18.04 مراجعه کنید.
مرحله 1 – دانلود Discourse
با داشتن تمام پیش شرط های موجود ، می توانید مستقیماً به سراغ نصب Discourse بروید.
باید در بقیه مراحل تنظیم و راه اندازی به عنوان root وارد شوید، بنابراین ابتدا به یک پوسته root بروید.
$ sudo -s

در مرحله بعد ، دیرکتوری /var/discourse را ایجاد کنید ، جایی که تمام فایل های مربوط به Discourse در آن قرار دارند.
# mkdir /var/discourse

سرانجام ، تصویر رسمی Discourse Docker را به /var/discourse کلون کنید.
# git clone https://github.com/discourse/discourse_docker.git /var/discourse

با استفاده از فایل هایی که به آنها نیاز داریم ، می توانیم به سراغ پیکربندی و راه اندازی مجدد برویم.
مرحله 2 – پیکربندی و را ه اندازی Discourse
به دیرکتوری / var / discourse بروید جایی که فایل های Discourse قرار دارند.
# cd /var/discourse

از اینجا ، می توانید اسکریپت راه اندازی موجود را راه اندازی کنید.
# ./discourse-setup

سوالات زیر از شما پرسیده خواهد شد:
• نام میزبان برای Discourse ؟
نام میزبان مورد نظر خود را برای Discourse وارد کنید، مثلاً discourse.your_domain.com که نام دامنه شما جایگزین your_domain.com خواهد شد. لازم نیست از نام دامنه استفاده کنید زیرا یک آدرس IP هنگام ارسال ایمیل کار نمی کند.
• آدرس ایمیل برای حساب کاربری ادمین؟
آدرس ایمیلی را که می خواهید برای حساب کاربری ادمین Discourse استفاده کنید ، انتخاب کنید. این می تواند کاملاً بی ارتباط به دامنه Discourse شما باشد و می تواند هر آدرس ایمیلی که مناسب میبینید باشد.
توجه داشته باشید که وقتی اولین کاربر با آن ایمیل ثبت نام می کند ، این آدرس ایمیل به صورت پیش فرض مدیر Discourse را ایجاد میکند. بعداً هنگام تنظیم Discourse از پنل کنترل وب ، به این آدرس ایمیل نیاز خواهید داشت.
• آدرس سرور مجازی SMTP؟
• نام کاربر SMTP؟
• پورت SMTP؟
• رمز عبور SMTP؟
جزئیات سرور مجازی SMTP خود را برای این سؤالات وارد کنید. اگر از Mailgun استفاده می کنید ، آدرس سرور مجازی SMTP smtp.mailgun.org خواهد بود ، نام کاربر و رمز عبور، اعتبار SMTP برای دامنه شما در زیر دامنه ها هستند.
در آخر از شما خواسته می شود تمام تنظیماتی را که تازه وارد کرده اید تأیید کنید. بعد از تأیید تنظیمات ، اسکریپت یک فایل پیکربندی به نام app.yml تولید می کند و سپس فرایند راه اندازی شروع می شود.
توجه: اگر بعد از راه اندازی مجدد (Bootstrapping) نیاز بود این تنظیمات را تغییر دهید یا آنها را برطرف کنید ، فایل /containers/app.yml خود را ویرایش کرده و ./launcher rebuild app را اجرا کنید. در غیر این صورت ، تغییرات شما مؤثر واقع نمی شوند.
Bootstrapping بین 2-8 دقیقه طول می کشد ، پس از آن نمونه شما اجرا خواهد شد! بیایید به سراغ ایجاد یک حساب ادمین برویم.
مرحله 3 – ثبت نام حساب کاربری ادمین
برای مشاهده صفحه وب Discourse ، از دامنه Discourse خود در مرورگر وب مورد علاقه خود بازدید کنید.
اگر یک خطای 502 Bad Gateway دریافت کردید ، یک یا دو دقیقه منتظر بمانید و سپس ریفرش کنید. ممکن است Discourse هنوز شروع نشده باشد.
هنگامی که صفحه لود می شود ، روی دکمه آبی Register کلیک کنید. یک فرم با عنوان Register Admin Account با فیلدهای زیر مشاهده خواهید کرد:
• ایمیل: آدرس ایمیلی را که قبلاً ارائه کرده اید از فهرست کشویی انتخاب کنید.
• نام کاربری: نام کاربری را انتخاب کنید.
• رمز عبور: یک رمز عبور قوی انتخاب کنید.
سپس بر روی دکمه آبی رنگ Register روی فرم کلیک کنید تا ارسال شود. اعلانی را می بینید که می گوید ایمیل خود را تأیید کنید. صندوق ورودی ایمیل خود را برای تأیید بررسی کنید. اگر آن را دریافت نکردید ، روی دکمه Resend Activation Email کلیک کنید. اگر هنوز قادر به ثبت نام یک حساب ادمین جدید نیستید ، لطفاً به لیست بررسی عیب یابی ایمیل Discourse مراجعه کنید.
پس از ثبت ادمین خود ، setup wizard راه اندازی میشود و شما را برای پیکربندی اصلی Discourse راهنمایی می کند. اکنون می توانید در آن چرخ بزنید یا برای رد کردن روی گزینه Maybe Later کلیک کنید.

پس از تکمیل یا رد setup wizard ، برخی از مباحث و راهنمای شروع سریع ادمین (با عنوان READ ME FIRST را مشاهده خواهید کرد) ، که حاوی نکاتی برای شخصی سازی بیشتر نصب Discours میباشد.

همه را تنظیم کرده اید! اگر در آینده نیاز داشتید Discours را به روز کنید، می توانید با دریافت آخرین نسخه کد از Git repo و ساخت مجدد برنامه ، مانند خط زیر ، آن را از خط فرمان انجام دهید:
# cd /var/discourse

# git pull

# ./launcher rebuild app
همچنین می توانید با مراجعه به سایت http://discourse.your_domain.com/admin/upgrade ، کلیک بر روی Upgrade to the Latest Version و دنبال کردن دستورالعمل ها ، آن را در مرورگر خود به روز کنید.
نتیجه
اکنون می توانید مدیریت انجمن Discourse خود را شروع کرده و به کاربران اجازه دهید ثبت نام کنند. در صفحه جزییات Discourse ، در مورد ویژگی های Discourse بیشتر بیاموزید.

 

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

استفاده از 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 ارزان – 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

MySQL یک سیستم مدیریت پایگاه داده منبع باز است که معمولاً به عنوان بخشی از پشته محبوب LEMP (Linux، Nginx ، MySQL / MariaDB ، PHP / Python / Perl) نصب می شود. این سیستم، مدل رابطه ای و زبان ساختار یافته جستجو (SQL) را برای مدیریت و پرس و جوی داده ها پیاده سازی می کند.
در این آموزش نحوه نصب نسخه 8 MySQL در سرور مجازی CentOS 8 توضیح داده شده است.
پیش نیازها
برای تکمیل این آموزش ، به سرور مجازی دارای CentOS 8 نیاز خواهید داشت. این سرور مجازی باید دارای کاربر غیر ریشه با امتیازات ادمین و فایروال تنظیم شده با firewalld باشد. برای انجام این کارها، راهنمای تنظیم اولیه سرور مجازی برای CentOS 8 را مشاهده کنید.
مرحله 1 – نصب MySQL
در CentOS 8 ، نسخه 8 MySQL از منابع پیش فرض در دسترس است.
برای نصب بسته mysql-server و تعدادی از متعلقات آن ، دستور زیر را اجرا کنید:
$ sudo dnf install mysql-server

هنگامی که از شما خواسته شد ، برای تأیید ادامه روی y کلیک کرده و enter بزنید :
utput
. . .
Install 49 Packages

Total download size: 46 M
Installed size: 252 M
Is this ok [y/N]: y

با این کار MySQL روی سرور مجازی شما نصب شده است اما هنوز عملیاتی نشده است. بسته ای که تازه نصب کردید MySQL را پیکربندی می کند تا به عنوان یک سرویس سیستمی به نام mysqld.service اجرا شود. برای استفاده از MySQL ، باید آن را با دستور systemctl شروع کنید:
$ sudo systemctl start mysqld.service

برای بررسی صحت عملکرد سرویس ، دستور زیر را اجرا کنید. توجه داشته باشید که برای بسیاری از دستورات systemctl از جمله start  و ، همانطور که در اینجا نشان داده شده است ، status  – لازم نیست خدمات پس از نام سرویس .service را وارد کنید:
$ sudo systemctl status mysqld

اگر MySQL با موفقیت شروع شد ، خروجی نشان می دهد که سرویس MySQL فعال است:
Output
● mysqld.service – MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-03-12 14:07:41 UTC; 1min 7s ago
Main PID: 15723 (mysqld)
Status: “Server is operational”
Tasks: 38 (limit: 5056)
Memory: 474.2M
CGroup: /system.slice/mysqld.service
└─15723 /usr/libexec/mysqld –basedir=/usr

Mar 12 14:07:32 cent-mysql-3 systemd[1]: Starting MySQL 8.0 database server…
Mar 12 14:07:32 cent-mysql-3 mysql-prepare-db-dir[15639]: Initializing MySQL database
Mar 12 14:07:41 cent-mysql-3 systemd[1]: Started MySQL 8.0 database server.

سپس با اجرای دستور زیر MySQL را تنظیم کنید تا پس از بوت شدن سرور مجازی راه اندازی شود.
$ sudo systemctl enable mysqld

توجه: اگر می خواهید این رفتار را تغییر داده و MySQL را از شروع کار هنگام بوت شدن بازدارید ، می توانید این دستور را اجرا کنید:
$ sudo systemctl disable mysqld

اکنون MySQL روی سرور مجازی شما نصب ، اجرا و فعال شده است. در مرحله بعدی ، به سراغ نحوه بالا بردن امنیت پایگاه داده شما را با استفاده از اسکریپت پوسته ای میرویم که با نمونه MySQL از قبل نصب شده همراه است.
مرحله 2 – ایمن سازی MySQL
MySQL شامل یک اسکریپت امنیتی است که به شما امکان می دهد برای بهبود امنیت MySQL برخی گزینه های پیکربندی پیش فرض را تغییر دهید.
برای استفاده از اسکریپت امنیتی ، دستور زیر را اجرا کنید:
$ sudo mysql_secure_installation

این امر شما را با مجموعه ای از سؤالات مواجه می کند که آیا می خواهید در گزینه های امنیتی نصب MySQL خود تغییرات خاصی ایجاد کنید یا خیر. اولین سؤال از شما میپرسد که آیا شما می خواهید افزونه Validate Password را تنظیم کنید ، که می توانید از آن برای تست قوی بودن پسورد MySQL استفاده کنید.
اگر تنظیم افزونه اعتبار سنجی گذرواژه را انتخاب کنید ، اسکریپت از شما می خواهد که یک سطح اعتبار رمز عبور را انتخاب کنید. قوی ترین سطح – که شما با وارد کردن 2 انتخاب می کنید – حداقل 8 کاراکتر برای پسورد نیاز دارد و باید ترکیبی از حروف بزرگ ، حروف کوچک ، عدد و کاراکترهای خاص را شامل شود:
Output
Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2

صرف نظر از این که آیا شما می خواهید افزونه رمز عبور معتبر را انتخاب کنید ، اعلان بعدی تعیین رمز عبور برای کاربر ریشه MySQL خواهد بود. رمز عبور ایمن را انتخاب و تأیید کنید:
Output
Please set the password for root here.

New password:

Re-enter new password:

اگر از افزونه اعتبار سنجی گذرواژه استفاده کرده اید ، در مورد قدرت رمزعبور جدید خود بازخورد خواهید گرفت. سپس اسکریپت از شما سؤال می کند که آیا می خواهید رمز عبوری را که وارد کرده اید ادامه دهید یا می خواهید یک رمز جدید را وارد کنید. با فرض اینکه از قدرت رمز عبوری که تازه وارد کرده اید راضی هستید ، Y را برای ادامه وارد کنید:
Output
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

پس از آن ، می توانید Y و سپس ENTER را فشار دهید تا پیش فرض برای همه سؤالات بعدی را بپذیرید. با این کار برخی از کاربران ناشناس و بانک اطلاعاتی آزمایشی حذف می شوند ، ورود root به سیستم از راه دور غیرفعال می شود و این قوانین جدید را لود می کند تا MySQL فوراً با تغییراتی که ایجاد کرده اید منطبق شود.
با این کار ، MySQL را روی سرور مجازی CentOS 8 خود نصب و ایمن کرده اید. به عنوان مرحله آخر ، آزمایش خواهیم کرد که بانک اطلاعاتی همانطور که انتظار می رود در دسترس بوده و کار می کند.
مرحله 3 – تست MySQL
می توانید با اتصال به ابزار mysqladmin ، کلاینتی که به شما امکان اجرای دستورات ادمین را می دهد ، نصب خود را تأیید کنید و در مورد آن اطلاعات کسب کنید. از دستور زیر برای اتصال به MySQL به عنوان root (-u root) ، اعلان رمز عبور (-p) و بازگردانی نسخه نصب استفاده کنید:
$ mysqladmin -u root -p version

خروجی مشابه این را مشاهده خواهید کرد:
Output
mysqladmin Ver 8.0.17 for Linux on x86_64 (Source distribution)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version 8.0.17
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 2 hours 52 min 37 sec

Threads: 2 Questions: 20 Slow queries: 0 Opens: 131 Flush tables: 3 Open tables: 48 Queries per second avg: 0.001

این نشان می دهد که نصب شما موفقیت آمیز بود.
اگر می خواهید به MySQL وصل شوید و داده های خود را به آن اضافه کنید ، دستور زیر را اجرا کنید:
$ mysql -u root -p

مانند دستور mysqladmin قبلی ، این دستور شامل گزینه -u می باشد که به شما امکان می دهد تا کاربر مورد نظر برای اتصال ( به عنوان root در این حالت) و گزینه -p را مشخص کنید ، که به دستور می گوید رمز عبور کاربر که در مرحله قبل تنظیم کرده اید را از شما بخواهد.
پس از وارد کردن رمز کاربری MySQL ریشه خود ، اعلان MySQL را مشاهده می کنید:
mysql>
از آنجا ، می توانید با استفاده از نصب MySQL خود برای ایجاد و لود پایگاه داده و شروع اجرای جستارها استفاده کنید.
نتیجه
با دنبال کردن این آموزش ، MySQL را روی یک سرور مجازی CentOS 8 نصب و ایمن کرده اید. از اینجا ، می توانید Nginx و PHP را نصب کنید تا یک پشته LEMP کاملاً عملی روی سرور مجازی خود داشته باشید.
برای کسب اطلاعات بیشتر در مورد استفاده از 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 ارزان – 

 

برچسب‌ها:

  • behnam gol mohamadi