سرور مجازی

۴ مطلب با کلمه‌ی کلیدی «​» ثبت شده است

  • ۰
  • ۰

نحوه ایجاد یک سرور Minecraft در اوبونتو 18.04

ورود به سایت

معرفی

Minecraft یک بازی ویدیویی محبوب sandbox است. این برنامه که در ابتدا در سال 2009 منتشر شد، به بازیکنان اجازه می‌دهد در دنیایی سه بعدی بسازند، بسازند، بسازند و زنده بمانند. از اوایل سال 2022، این بازی پرفروش ترین بازی ویدیویی تمام دوران بود. در این آموزش شما سرور Minecraft خود را ایجاد می کنید تا شما و دوستانتان با هم بازی کنید. به طور خاص، شما بسته های نرم افزاری لازم را برای اجرای Minecraft نصب می کنید، سرور را برای اجرا پیکربندی می کنید و سپس بازی را اجرا می کنید.

متناوبا، می‌توانید سرور DigitalOcean’s One-Click Minecraft: Java Edition را به‌عنوان مسیر نصب دیگری بررسی کنید.

پیش نیازها

برای پیروی از این راهنما، شما نیاز دارید:

  • یک سرور با نصب جدید اوبونتو 18.04، یک کاربر غیر ریشه با امتیازات sudo و SSH فعال. شما می توانید این راهنما را برای مقداردهی اولیه سرور خود دنبال کنید و این مراحل را کامل کنید. Minecraft می تواند منابع فشرده ای داشته باشد، بنابراین هنگام انتخاب اندازه سرور خود این را در نظر داشته باشید. اگر از DigitalOcean استفاده می کنید و به منابع بیشتری نیاز دارید، همیشه می توانید اندازه Droplet خود را تغییر دهید تا CPU و RAM بیشتری اضافه کنید.
  • یک کپی از Minecraft Java Edition که روی یک دستگاه Mac، Windows یا Linux محلی نصب شده است.

مرحله 1 – بسته های نرم افزاری لازم را نصب کرده و فایروال را پیکربندی کنید

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

sudo add-apt-repository ppa:openjdk-r/ppa

سپس، منابع بسته خود را به‌روزرسانی کنید تا این افزوده را منعکس کند:

sudo apt update

در نهایت، OpenJDK نسخه 17 جاوا، به طور خاص JRE هدلس را نصب کنید. این نسخه حداقلی از جاوا است که پشتیبانی از برنامه های رابط کاربری گرافیکی را حذف می کند. این آن را برای اجرای برنامه های جاوا بر روی سرور ایده آل می کند:

sudo apt install openjdk-17-jre-headless

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

sudo apt install screen

اکنون که بسته‌ها را نصب کرده‌اید، باید فایروال را فعال کنیم تا ترافیک به سرور Minecraft ما وارد شود. در راه اندازی اولیه سرور که انجام دادید، فقط به ترافیک ssh اجازه دادید. اکنون باید اجازه دهید که ترافیک از طریق پورت 25565 وارد شود، که پورت پیش فرضی است که Minecraft برای اجازه دادن به اتصالات استفاده می کند. در برخی موارد ufw از قوانین ترافیکی نام‌گذاری شده استفاده می‌کند، مانند ssh، که همیشه به طور پیش‌فرض از پورت 22 استفاده می‌کند، اما در موارد کمتر رایج مانند این، شماره پورت را به صورت دستی مشخص می‌کنیم. با اجرای دستور زیر قانون فایروال لازم را اضافه کنید:

sudo ufw allow 25565

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

مرحله 2 – دانلود آخرین نسخه Minecraft

اکنون باید نسخه فعلی سرور Minecraft را دانلود کنید. می‌توانید این کار را با رفتن به وب‌سایت Minecraft و کپی کردن پیوندی که می‌گوید دانلود minecraft_server.X.X.X.jar انجام دهید، جایی که Xها آخرین نسخه سرور هستند.

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

wget https://launcher.mojang.com/v1/objects/125e5adf40c659fd3bce3e66e67a16bb49ecc1b9/server.jar

برنامه سرور به عنوان server.jar دانلود می شود. اگر نیاز به مدیریت نسخه‌های Minecraft دارید، یا اگر می‌خواهید سرور Minecraft خود را ارتقا دهید، ممکن است مفید باشد که server.jar دانلود شده را به minecraft_server_1.18.1.jar تغییر نام دهید و اعداد نسخه برجسته شده را با نسخه‌ای که تازه دانلود کرده‌اید مطابقت دهید:

mv server.jar minecraft_server_1.18.1.jar

اگر می‌خواهید نسخه قدیمی‌تر Minecraft را دانلود کنید، می‌توانید آن‌ها را در mcversions.net بایگانی کنید. اما این آموزش بر آخرین نسخه فعلی تمرکز خواهد کرد. اکنون که دانلود خود را دارید، بیایید پیکربندی سرور Minecraft خود را شروع کنیم.

مرحله 3 – پیکربندی و اجرای سرور Minecraft

اکنون که jar Minecraft را دانلود کرده اید، آماده اجرای آن هستید.

ابتدا یک جلسه صفحه نمایش را با اجرای دستور screen شروع کنید:

screen

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

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

java -Xms1024M -Xmx1024M -jar minecraft_server_1.18.1.jar nogui

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

  • Xms1024M – این سرور را به گونه ای پیکربندی می کند که با 1024 مگابایت یا 1 گیگابایت رم در حال اجرا باشد. اگر می خواهید سرور شما با رم بیشتری شروع به کار کند، می توانید این محدودیت را افزایش دهید. هر دو M برای مگابایت و G برای گیگابایت گزینه های پشتیبانی می شوند. به عنوان مثال: Xms2G سرور را با 2 گیگابایت رم راه اندازی می کند.
  • Xmx1024M – این سرور را برای استفاده حداکثر از 1024M رم پیکربندی می کند. اگر می‌خواهید سرورتان در اندازه بزرگ‌تری اجرا شود، بازیکنان بیشتری را مجاز کنید، یا اگر احساس می‌کنید که سرورتان کند کار می‌کند، می‌توانید این محدودیت را افزایش دهید. برنامه های جاوا از این جهت منحصر به فرد هستند که همیشه از شما می خواهند حداکثر مقدار حافظه ای که می توانند استفاده کنند را مشخص کنید.
  • jar – این پرچم مشخص می کند که کدام فایل jar سرور اجرا شود.
  • nogui – این به سرور می گوید که رابط کاربری گرافیکی را راه اندازی نکند زیرا این یک سرور است و شما یک رابط کاربری گرافیکی ندارید.

اولین باری که این دستور را اجرا می کنید که معمولاً سرور شما را راه اندازی می کند، این خروجی را دریافت خواهید کرد:

 

Output

[22:05:31] [22:05:31] [main/ERROR]: Failed to load properties from file: server.properties
[22:05:31] [main/WARN]: Failed to load eula.txt
[22:05:31] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

این خطاها به این دلیل ایجاد شده‌اند که سرور نمی‌تواند دو فایل لازم برای اجرا را پیدا کند: EULA (توافقنامه مجوز کاربر نهایی) که در eula.txt یافت می‌شود و فایل پیکربندی server.properties. از آنجایی که سرور قادر به یافتن این فایل ها نبود، آنها را در فهرست کاری فعلی شما ایجاد کرد. Minecraft این کار را عمدا انجام می دهد تا مطمئن شود که EULA آن را خوانده اید و با آن موافقت کرده اید.

eula.txt را در nano یا ویرایشگر متن مورد علاقه خود باز کنید:

nano eula.txt

در داخل این فایل، پیوندی به EULA Minecraft مشاهده خواهید کرد. URL را کپی کنید:

~/eula.txt

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Tue Mar 24 22:05:31 UTC 2020
eula=false

URL را در مرورگر وب خود باز کنید و توافق نامه را بخوانید. سپس به ویرایشگر متن خود برگردید و آخرین خط را در eula.txt پیدا کنید. در اینجا eula=false را به eula=true تغییر دهید. سپس فایل را ذخیره کرده و ببندید. در نانو، این به این معنی است که Ctrl+X را برای خروج فشار دهید، سپس وقتی از شما خواسته شد ذخیره کنید، Y و سپس Enter کنید.

اکنون که EULA را پذیرفته اید، می توانید سرور را مطابق با مشخصات خود پیکربندی کنید.

در دایرکتوری فعلی خود، فایل server.properties ایجاد شده جدید را نیز خواهید یافت. این فایل شامل تمامی گزینه های پیکربندی سرور Minecraft شما می باشد. می‌توانید فهرست دقیقی از تمام ویژگی‌های سرور را در ویکی رسمی Minecraft پیدا کنید. قبل از راه اندازی سرور باید این فایل را با تنظیمات دلخواه خود تغییر دهید. این آموزش برخی از تنظیمات اساسی را پوشش می دهد:

nano server.properties

فایل شما به شکل زیر ظاهر می شود:

~/server.properties

#Minecraft server properties
#Thu Apr 30 23:42:29 UTC 2020
spawn-protection=16
max-tick-time=60000
query.port=25565
generator-settings=
force-gamemode=false
allow-nether=true
enforce-whitelist=false
gamemode=survival
broadcast-console-to-ops=true
enable-query=false
player-idle-timeout=0
difficulty=easy
spawn-monsters=true
broadcast-rcon-to-ops=true
op-permission-level=4
pvp=true
snooper-enabled=true
level-type=default
hardcore=false
enable-command-block=false
max-players=20
network-compression-threshold=256
resource-pack-sha1=
max-world-size=29999984
function-permission-level=2
rcon.port=25575
server-port=25565
server-ip=
spawn-npcs=true
allow-flight=false
level-name=world
view-distance=10
resource-pack=
spawn-animals=true
white-list=false
rcon.password=
generate-structures=true
online-mode=true
max-build-height=256
level-seed=
prevent-proxy-connections=false
use-native-transport=true
motd=A Minecraft Server
enable-rcon=false

بیایید نگاهی دقیق تر به برخی از مهم ترین ویژگی های این لیست بیندازیم:

دشواری (پیش‌فرض آسان) – این میزان سختی بازی را تعیین می‌کند، مانند میزان آسیب وارد شده و چگونگی تأثیر عناصر بر بازیکن شما. گزینه ها صلح آمیز، آسان، عادی و سخت هستند.
حالت بازی (بقای پیش فرض) – این حالت گیم پلی را تنظیم می کند. گزینه ها بقا، خلاقیت، ماجراجویی و تماشاگر هستند.
level-name (دنیای پیش فرض) – این نام سرور شما را تعیین می کند که در مشتری ظاهر می شود. ممکن است لازم باشد قبل از کاراکترهای خاص مانند آپوستروف، علامت معکوس وجود داشته باشد. شناخته شده است که این کاراکترهای فرار است، و زمانی که کاراکترهای خاص ممکن است به درستی در زمینه تجزیه و تحلیل نشوند، معمول است.
motd (سرور پیش فرض یک Minecraft) – پیامی که در لیست سرور مشتری Minecraft نمایش داده می شود.
pvp (پیش‌فرض درست) – نبرد بازیکن در مقابل بازیکن را فعال می‌کند. اگر روی true تنظیم شود، بازیکنان می‌توانند وارد جنگ شوند و به یکدیگر آسیب برسانند.
پس از تنظیم گزینه های مورد نظر، فایل را ذخیره کرده و ببندید.

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

مانند دفعه قبل، بیایید سرور خود را با 1024M RAM راه اندازی کنیم. این بار، همچنین باید به Minecraft این امکان را بدهید که در صورت لزوم تا 4G از رم استفاده کند. به یاد داشته باشید که می توانید این شماره را متناسب با محدودیت های سرور یا نیازهای کاربر خود تنظیم کنید:

java -Xms1024M -Xmx4G -jar minecraft_server_1.18.1.jar nogui

چند لحظه به مقدار دهی اولیه بدهید. به زودی سرور Minecraft جدید شما شروع به تولید خروجی مشابه این خواهد کرد:

 

Output

[21:08:14] [Server thread/INFO]: Starting minecraft server version 1.15.2
[21:08:14] [Server thread/INFO]: Loading properties
[21:08:14] [Server thread/INFO]: Default game type: SURVIVAL
[21:08:14] [Server thread/INFO]: Generating keypair
[21:08:15] [Server thread/INFO]: Starting minecraft server on *:25565

پس از راه اندازی سرور، خروجی زیر را مشاهده خواهید کرد:

 

Output

[21:15:37] [Server thread/INFO]: Done (30.762s)! For help, type "help"

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

help

خروجی به شکل زیر ظاهر می شود:

 

Output

[21:15:37] [Server thread/INFO]: /advancement (grant|revoke)
[21:15:37] [Server thread/INFO]: /ban <targets> [<reason>]
[21:15:37] [Server thread/INFO]: /ban-ip <target> [<reason>]
[21:15:37] [Server thread/INFO]: /banlist [ips|players]
...

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

مرحله 4 – نگه داشتن سرور در حال اجرا

اکنون که سرور خود را روشن کرده اید، می خواهید حتی پس از قطع اتصال از جلسه SSH، همچنان در حال اجرا باشد. از آنجایی که قبلاً از صفحه استفاده کرده اید، می توانید با فشار دادن Ctrl + A + D از این جلسه جدا شوید. باید ببینید که به پوسته اصلی خود برگشته اید:

 

Output

​​ubuntu@minecraft-1804:~$ screen
[detached from 3626.pts-0.minecraft-1804]
$

این دستور را اجرا کنید تا تمام جلسات صفحه نمایش خود را ببینید:

screen -list

یک خروجی با شناسه جلسه خود دریافت خواهید کرد که برای از سرگیری آن جلسه باید آن را از سر بگیرید:

 

Output

There is a screen on:
        3626.pts-0.minecraft-1804 (11/16/21 22:56:33) (Detached)
1 Socket in /run/screen/S-root.

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

screen -r 3626

وقتی دوباره آماده خروج از ترمینال شدید، حتما با Ctrl + A + D از جلسه جدا شده و سپس از سیستم خارج شوید.

مرحله 5 – اتصال به سرور خود از مشتری Minecraft

اکنون که سرور شما راه اندازی شده است، بیایید از طریق مشتری Minecraft به آن متصل شویم. سپس می توانید بازی کنید!

نسخه Minecraft Java Edition خود را اجرا کنید و Multiplayer را در منو انتخاب کنید.

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

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

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

از این پس سرور شما همیشه در این لیست ظاهر می شود. آن را انتخاب کرده و روی Join Server کلیک کنید.

شما در سرور خود هستید و آماده بازی هستید!

نتیجه

شما اکنون یک سرور Minecraft دارید که روی اوبونتو 18.04 اجرا می شود تا شما و همه دوستانتان با آن بازی کنید! از کاوش، کاردستی و زنده ماندن در یک دنیای خام سه بعدی لذت ببرید.

 

https://vpsgol.net/product/vps-germany/

 

https://vpsgol.net/product/vps-usa/

 

https://vpsgol.net/product/vps-france/

 

https://vpsgol.net/product/vps-canada/

 

https://vpsgol.net/product/vps-poland/

 

https://vpsgol.net/product/vps-netherlands/

 

https://vpsgol.net/product/vps-england/

برچسب‌ها:Minecraft نصباتصال به سرور مجازیاوبونتو 18.04ایجاد یک سرور Minecraftخرید سرور مجازیسرور Minecraftسرور مجازیسرور مجازی آمریکاسرور مجازی لهستان

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه نصب و مدیریت Supervisor

ورود به سایت

معرفی

در بسیاری از محیط‌های VPS، معمولاً تعدادی برنامه کوچک خواهید داشت که می‌خواهید دائماً اجرا کنید، چه اسکریپت‌های پوسته کوچک، برنامه‌های Node.js یا هر بسته‌ای با اندازه بزرگ.

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

Supervisor یک مدیر فرآیند است که یک رابط منحصر به فرد برای مدیریت و نظارت بر تعدادی از برنامه های طولانی مدت ارائه می دهد. در این آموزش، Supervisor را بر روی یک سرور لینوکس نصب می‌کنید و یاد می‌گیرید که چگونه تنظیمات Supervisor را برای چندین برنامه مدیریت کنید.

پیش نیازها

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

  • یک سرور لینوکس و یک کاربر غیر ریشه با امتیازات sudo.

مرحله 1 – نصب

با نصب Supervisor شروع کنید:

sudo apt install supervisor

سرویس سرپرست پس از نصب به طور خودکار اجرا می شود. می توانید وضعیت آن را بررسی کنید:

sudo systemctl status supervisor

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

 

Output

 supervisor.service - Supervisor process control system for UNIX
     Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2021-11-17 22:56:48 UTC; 5min ago

اکنون که Supervisor را نصب کرده ایم، می توانیم اولین برنامه های خود را اضافه کنیم.

مرحله 2 – اضافه کردن یک برنامه

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

به منظور نشان دادن عملکرد Supervisor، ما یک اسکریپت پوسته ایجاد می کنیم که کاری جز تولید یک خروجی قابل پیش بینی در ثانیه انجام نمی دهد، اما به طور مداوم در پس زمینه اجرا می شود تا زمانی که به صورت دستی متوقف شود. با استفاده از nano یا ویرایشگر متن مورد علاقه خود، فایلی به نام idle.sh را در فهرست اصلی خود باز کنید:

nano ~/idle.sh

مطالب زیر را اضافه کنید:

~/idle.sh

#!/bin/bash
while true
do
    # Echo current date to stdout
    echo `date`
    # Echo 'error!' to stderr
    echo 'error!' >&2
    sleep 1
done

ذخیره کنید و فایل را ببندید. اگر از nano استفاده می کنید، Ctrl+X را فشار دهید، سپس وقتی از شما خواسته شد، Y و Enter را فشار دهید.

بعد، اسکریپت خود را قابل اجرا کنید:

chmod +x ~/idle.sh

فایل های پیکربندی هر برنامه برای برنامه های Supervisor در دایرکتوری /etc/supervisor/conf.d قرار دارند، معمولاً یک برنامه در هر فایل اجرا می شود و به .conf ختم می شود. ما یک فایل پیکربندی برای این اسکریپت به عنوان`/etc/supervisor/conf.d/idle.conf ایجاد می کنیم:

sudo nano /etc/supervisor/conf.d/idle.conf

این مطالب را اضافه کنید:

/etc/supervisor/conf.d/idle.conf

command=/home/ubuntu/idle.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/idle.err.log
stdout_logfile=/var/log/idle.out.log

این را خط به خط مرور می کنیم:

command=/home/ubuntu/idle.sh

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

autostart=true
autorestart=true

دو خط بعدی رفتار خودکار اسکریپت را تحت شرایط خاصی تعریف می کند.

گزینه autostart به Supervisor می گوید که این برنامه باید هنگام بوت شدن سیستم راه اندازی شود. تنظیم این مورد روی false به شروع دستی پس از خاموش شدن سیستم نیاز دارد.

autorestart تعریف می کند که چگونه Supervisor باید برنامه را در صورت خروج از آن مدیریت کند:

false به Supervisor می‌گوید که پس از خروج برنامه هرگز آن را مجددا راه‌اندازی نکند.
true به Supervisor می گوید که همیشه برنامه را پس از خروج مجدداً راه اندازی کند.
unexpected به Supervisor می گوید که فقط در صورتی برنامه را مجدداً راه اندازی کند که با یک کد خطای غیرمنتظره (به طور پیش فرض هر چیزی غیر از کدهای 0 یا 2) خارج شود. برای کسب اطلاعات بیشتر در مورد کدهای خطا، به دستور errno نگاه کنید.

stderr_logfile=/var/log/idle.err.log
stdout_logfile=/var/log/idle.out.log

دو خط پایانی مکان دو فایل لاگ اصلی را برای برنامه مشخص می کند. همانطور که توسط نام گزینه پیشنهاد می شود، stdout و stderr به ترتیب به مکان های stdout_logfile و stderr_logfile هدایت می شوند. دایرکتوری های مشخص شده باید از قبل وجود داشته باشند، زیرا Supervisor سعی نخواهد کرد هیچ دایرکتوری گمشده ای ایجاد کند.

پیکربندی که ما در اینجا ایجاد کرده ایم یک الگوی حداقلی برای یک برنامه Supervisor است. اسناد Supervisor بسیاری از گزینه های پیکربندی اختیاری دیگر را فهرست می کند که برای تنظیم نحوه اجرای برنامه ها در دسترس هستند.

هنگامی که فایل پیکربندی ما ایجاد و ذخیره شد، می توانیم از طریق دستور supervisorctl برنامه جدید خود را به Supervisor اطلاع دهیم. ابتدا به Supervisor می‌گوییم که به دنبال تنظیمات برنامه جدید یا تغییر یافته در فهرست /etc/supervisor/conf.d با استفاده از:

sudo supervisorctl reread

 

Output

idle: available

هر زمان که تغییری در هر فایل پیکربندی برنامه ایجاد می کنید، اجرای دو دستور قبلی تغییرات را اعمال می کند.

در این مرحله برنامه ما اکنون باید در حال اجرا باشد. ما می توانیم خروجی آن را با مشاهده فایل گزارش خروجی بررسی کنیم:

sudo tail /var/log/idle.out.log

 

Output

Sat Nov 20 22:21:22 UTC 2021
Sat Nov 20 22:21:23 UTC 2021
Sat Nov 20 22:21:24 UTC 2021
Sat Nov 20 22:21:25 UTC 2021
Sat Nov 20 22:21:26 UTC 2021
Sat Nov 20 22:21:27 UTC 2021
Sat Nov 20 22:21:28 UTC 2021
Sat Nov 20 22:21:29 UTC 2021
Sat Nov 20 22:21:30 UTC 2021
Sat Nov 20 22:21:31 UTC 2021

در مرحله بعد، برخی دیگر از کاربردهای Supervisor را پوشش خواهیم داد.

مرحله 3 – مدیریت برنامه ها

فراتر از اجرای برنامه‌ها، می‌خواهید توقف، راه‌اندازی مجدد یا وضعیت آنها را ببینید. برنامه supervisorctl که در مرحله 2 از آن استفاده کردیم، یک حالت تعاملی نیز دارد که می توانیم از آن برای کنترل برنامه های خود استفاده کنیم.

برای وارد شدن به حالت تعاملی، supervisorctl را بدون آرگومان اجرا کنید:

sudo supervisorctl

supervisorctl در ابتدا وضعیت و زمان آپدیت تمام برنامه های پیکربندی شده را چاپ می کند و سپس خط فرمان آن را چاپ می کند. با وارد کردن راهنما، تمام دستورات موجود آن آشکار می‌شود:

supervisor> help

 

Output

default commands (type help <topic>):
=====================================
add    clear  fg        open  quit    remove  restart   start   stop  update
avail  exit   maintail  pid   reload  reread  shutdown  status  tail  version

شما می توانید یک برنامه را با دستورات مرتبط به دنبال نام برنامه شروع یا متوقف کنید:

supervisor> stop idle

 

Output

idle: stopped

supervisor> start idle

 

Output

idle: started

با استفاده از دستور tail، می‌توانید آخرین ورودی‌های فهرست‌های stdout و stderr را برای برنامه خود مشاهده کنید:

supervisor> tail idle

 

Output

Sun Nov 21 00:36:10 UTC 2021
Sun Nov 21 00:36:11 UTC 2021
Sun Nov 21 00:36:12 UTC 2021
Sun Nov 21 00:36:13 UTC 2021
Sun Nov 21 00:36:14 UTC 2021
Sun Nov 21 00:36:15 UTC 2021
Sun Nov 21 00:36:17 UTC 2021

supervisor> tail idle stderr

 

Output

error!
error!
error!
error!
error!
error!
error!

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

supervisor> status

 

Output

idle                      STOPPED    Nov 21 01:07 AM

در نهایت، می‌توانید با Ctrl+C یا با وارد کردن quit در فرمان از supervisorctl خارج شوید:

supervisor> quit

نتیجه

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

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

 

 

https://vpsgol.net/product/vps-germany/

 

https://vpsgol.net/product/vps-usa/

 

https://vpsgol.net/product/vps-france/

 

https://vpsgol.net/product/vps-canada/

 

https://vpsgol.net/product/vps-poland/

 

https://vpsgol.net/product/vps-netherlands/

 

https://vpsgol.net/product/vps-england/

برچسب‌ها:Supervisorبرنامه supervisorctlپیکربندی Nginxخرید vpsخرید سرور مجازیراه اندازی سرور مجازیسرور مجازیسرور مجازی آمریکا

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه ایجاد افزونه منبع سفارشی در Gatsby

ورود به سایت

معرفی

در ایجاد یک وب سایت یا برنامه ، اغلب یکی از سخت ترین کارها این است که داده ها را از منابع متعدد جمع آوری کرده و آنها را در یک خروجی یکنواخت جمع آوری کنید. یک راه رایج برای حل این مشکل استفاده از سیستم های ساخت کاملاً متفاوت برای قسمت های مختلف یک سایت است ، اما این امر گاهی پیچیدگی را افزایش می دهد در حالی که دستیابی به یکنواختی را دشوارتر می کند. اینجاست که Gatsby ، یک تولید کننده سایت استاتیک مبتنی بر داده (SSG) می تواند راه حلی ارائه دهد.

یکی از اهداف اصلی Gatsby حل این مشکل برای توسعه دهندگان است و افزونه های منبع اصلی ترین راه برای این کار هستند. افزونه منبع مجموعه ای از کد است که داده ها را از یک منبع معین وارد اکوسیستم Gatsby می کند. منابع می توانند از سیستم فایل محلی مانند فایلهای Markdown ، پایگاه های داده ، فیدهای داده منتشر شده یا حتی منابع داده از راه دور کاملاً پویا مانند API ها باشند.

در این آموزش ، شما پلاگین منبع سفارشی خود را ایجاد می کنید تا داده های جدید را از یک API دنیای واقعی به Gatsby وارد کنید. همچنین داده ها را فرمت می کنید تا در سراسر Gatsby به آنها دسترسی داشته باشید و در پایان آموزش ، یک پروژه کاری داشته باشید که HTML ایستا را از منبع داده پویای جدید شما ایجاد می کند.

پیش نیازها

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

  • نصب محلی Node.js برای اجرای Gatsby و ایجاد سایت شما. روش نصب بر اساس سیستم عامل متفاوت است ، اما vpsgol دارای راهنمای Ubuntu 20.04 و macOS است و همیشه می توانید آخرین نسخه را در صفحه بارگیری رسمی Node.js پیدا کنید.
  • آشنایی با جاوا اسکریپت برای کار در Gatsby. زبان جاوا اسکریپت یک مبحث گسترده است ، اما نقطه شروع خوب ما نحوه کدگذاری در سری جاوا اسکریپت است.
  • آشنایی با API های وب ، Node.js و JSON.
  • یک پروژه جدید Gatsby، داربست از gatsby-starter-default. برای برآوردن این نیاز و ایجاد پروژه جدید Gatsbyاز ابتدا ، می توانید به مرحله 1 آموزش نحوه راه اندازی اولین وب سایت Gatsby مراجعه کنید.
  • اگر می خواهید رابط کاربری (UI) پست های خود را فراتر از آنچه در این آموزش آمده است سفارشی کنید ، با React و JSX و همچنین عناصر HTML آشنا باشید.

این آموزش روی Node.js v14.16.1 ، npm v6.14.12 ، Gatsby v3.13.0 و node-fetch v2.6.2 آزمایش شده است.

مرحله 1 – فایل های داربست و نصب وابستگی ها

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

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

mkdir -p plugins/my-custom-source-plugin

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

cd plugins/my-custom-source-plugin
npm init -y

این دستور به پوشه افزونه تازه ایجاد شده شما منتقل می شود و سپس از npm init برای راه اندازی مجدد یک بسته جدید استفاده می کند. پرچم -y برخی از سوالات بی ربط به این پروژه را رد می کند و فایل package.json را با حداقل مقادیر مورد نیاز پر می کند.

اکنون که package.json وجود دارد ، می توانید وابستگی هایی را به افزونه خود اضافه کنید که کدگذاری عملکرد را آسان تر می کند. پیش بروید و تنها وابستگی اضافی مورد نیاز خود را در این آموزش ، node-fetch ، با استفاده از دستور زیر نصب کنید:

npm install node-fetch@^2

در نهایت ، فایل gatsby-node.js را ایجاد کنید که در نهایت کد اصلی افزونه منبع را در اختیار داشته باشد:

touch gatsby-node.js

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

مرحله 2 – بارگیری و پیکربندی افزونه

مانند هر افزونه یا تم Gatsby ، Gatsby باید در مورد نحوه بارگیری افزونه از کجا آموزش داده شود. برای انجام این کار ، فایل پیکربندی اصلی Gatsby را ویرایش می کنید gatsby-config.js ، که در ریشه پروژه Gatsby شما قرار دارد. فایل را در ویرایشگر دلخواه خود باز کنید و خط برجسته زیر را اضافه کنید:

gatsby-config.js

module.exports = {
...
  plugins: [
    `gatsby-plugin-react-helmet`,
    `gatsby-plugin-image`,
    {
      resolve: `gatsby-source-filesystem`,
      options: {
        name: `images`,
        path: `${__dirname}/src/images`,
      },
    },
    `my-custom-source-plugin`,
    `gatsby-transformer-sharp`,
...

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

gatsby-config.js را ذخیره کرده و از فایل خارج شوید.

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

مرحله 3 – کشیدن داده های خام به Node.js

در مرحله قبل ، شما Gatsbyرا برای بارگیری و اجرای کد افزونه منبع سفارشی خود پیکربندی کرده اید ، اما برای انجام وظیفه وارد کردن داده های جدید به اکوسیستم Gatsby، هنوز باید این کد را ایجاد کنید. در این مرحله ، کدی را که این کار را انجام می دهد ، می نویسید ، داده های از راه دور را از طریق node-fetch واکشی کرده و برای استفاده در مراحل بعدی آماده می کنید.

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

فایل my-custom-source-plugin/gatsby-node.js خود را در فهرست افزونه ها باز کرده و کد زیر را اضافه کنید:

plugins/my-custom-source-plugin/gatsby-node.js

const fetch = require('node-fetch').default

/**
 * Fetch a list of computer books from Wikipedia, with excerpts
 */
async function getWikiProgrammingBooks() {
  const BASE_ENDPOINT = "https://en.wikipedia.org/w/api.php?action=query&format=json&utf8=1&redirects=1";

  // Get list of books
  const listEndpoint = new URL(BASE_ENDPOINT);
  listEndpoint.searchParams.append('list', 'categorymembers');
  listEndpoint.searchParams.append("cmtitle", "Category:Computer_programming_books");
  listEndpoint.searchParams.append("cmlimit", "10");
  const listResults = await (await fetch(listEndpoint.toString())).json();


  // Extract out the page IDs from the list
  const pageIds = listResults.query.categorymembers.map((listing) => listing.pageid);

  // Fetch details for page IDs
  const extractEndpoint = new URL(BASE_ENDPOINT);
  extractEndpoint.searchParams.append("pageids", pageIds.join("|"));
  extractEndpoint.searchParams.append("prop", "extracts|info");
  extractEndpoint.searchParams.append("exintro", "");
  extractEndpoint.searchParams.append("explaintext", "");
  extractEndpoint.searchParams.append("inprop", "url");

  const bookResult = await (await fetch(extractEndpoint.toString())).json();

  return Object.values(bookResult.query.pages);
}

در این کد ، شما یک تابع قابل استفاده مجدد ایجاد کرده اید که می تواند برای بازگرداندن لیستی از کتابهای برنامه نویسی کامپیوتر ، به همراه شناسه های صفحه آنها (یک شناسه منحصر به فرد در ویکی پدیا) و گزیده ها/عصاره ها فراخوانی شود. در قسمت اول تابع ، URL API مناسب را ایجاد می کنید تا بتوانید لیست اولیه عناوین و شناسه های مربوط به یک دسته خاص (کتابهای برنامه نویسی کامپیوتر) را برای استفاده از آن استفاده کنید. از سازنده URL و رابط برای خواندن و مدیریت تغییرات پرس و جو استفاده می شود.

شما از روش واکشی از node-fetch برای درخواست GET به URL ساخته شده استفاده می کنید ، که لیستی از عناوین کتاب با شناسه های آنها را برمی گرداند. سپس این پاسخ به آرایه ای از مقادیر pageid تبدیل می شود ، سپس برای پرس و جو مجدد API ویکی پدیا استفاده می شود ، این بار درخواست استخراج و اطلاعات متای تولید شده برای شناسه صفحه داده شده. شناسه های صفحه با کاراکتر پیپ (|) به هم متصل می شوند ، زیرا API ویکی پدیا از این قالب برای پذیرش چندین شناسه از طریق یک مقدار رشته استفاده می کند.

سرانجام ، از آنجا که نتایج گزیده های صفحه به عنوان یک شیء باز می گردند و هر کتابی در شناسه خود به عنوان کلید درج شده است ، از Object.values ​​() برای حذف کلید شناسه صفحه و تبدیل نتایج به یک آرایه قبل از بازگشت آنها استفاده می کنید.

اگر خروجی این تابع را وارد کنید ، چیزی شبیه به این خواهد بود:

[
  {
    "pageid": 379671,
    "ns": 0,
    "title": "The C Programming Language",
    "extract": "The C Programming Language (sometimes termed K&R, after its authors' initials) is a computer programming book written by Brian Kernighan and Dennis Ritchie...",
    "fullurl": "https://en.wikipedia.org/wiki/The_C_Programming_Language",
    ...
  },
  ...
]

مطمئن شوید که تغییرات خود را ذخیره می کنید ، اما این فایل را باز نگه دارید زیرا در مرحله بعد کد بیشتری به آن اضافه می کنید.

در این مرحله از node-fetch برای بازیابی محتوای منبع از راه دور و نمایش آن در فایل gatsby-node.js استفاده کردید. در مرحله بعد ، محتوا را عادی می کنید زیرا از آن برای ایجاد گره های جدید Gatsby برای استفاده در کل پروژه Gatsby استفاده می کنید.

مرحله 4 – عادی سازی داده ها و ایجاد گره ها

واکشی محتوای از راه دور و آوردن آن در gatsby-node.js در مرحله قبل به این معنی نیست که اکنون در سراسر Gatsbyقابل دسترسی است. به منظور به اشتراک گذاری داده ها به صورت جهانی ، Gatsby از مفهوم گره ها استفاده می کند ، که در یک لایه داده GraphQL یکپارچه به اشتراک گذاشته می شوند. در این مرحله ، شما این گره ها را ایجاد می کنید و محتوای جدید خود را برای مطابقت قالب بندی می کنید.

اگرچه اکنون می توانید با فراخوانی getWikiProgrammingBooks () نتایج ویکی پدیا را بازیابی کرده و به آنها دسترسی پیدا کنید ، اما برای ادغام این کد با سیستم گره Gatsby، هنوز باید کد را اضافه کنید. در همان فایل gatsby-node.js مرحله قبل ، این بلوک جدید کد را برای مدیریت تولید گره ها اضافه کنید:

plugins/my-custom-source-plugin/gatsby-node.js

const fetch = require('node-fetch').default

...

exports.sourceNodes = async ({ actions, createContentDigest, createNodeId }) => {
  // Arbitrary node type constant
  const BOOK_TYPE = 'BookWikiPage';

  // Get books
  const bookResults = await getWikiProgrammingBooks();

  // Convert raw book results to nodes
  for (const book of bookResults) {
    actions.createNode({
      ...book,
      id: createNodeId(`${BOOK_TYPE}-${book.pageid}`),
      parent: null,
      children: [],
      internal: {
        type: BOOK_TYPE,
        contentDigest: createContentDigest(book)
      }
    })
  }
};

در این بلوک کد ، شما در حال تکرار هر کتابی هستید که توسط getWikiProgrammingBooks بازگردانده می شود و یک گره Gatsbyبرای آن از طریق روش createNode ایجاد می کنید. هر ویژگی و مقداری که به createNode منتقل می شود دارای اهمیت است و ارزش توجه دارد:

  • … کتاب برای گسترش جفت های کلید-مقدار از شی API ویکی پدیا در گره Gatsby که ایجاد می کنید استفاده می شود. این بدان معناست که بعداً می توانید به node.title دسترسی پیدا کنید ، زیرا از book.title کپی می شود.
  • شناسه یک ارزش جهانی منحصر به فرد در داخل Gatsby است. برای اینکه شناسه هر کتاب را در افزونه خود منحصر به فرد کنید ، باید نوع کتاب را با شناسه صفحه ویکی پدیا ترکیب کرده و یک رشته شناسه تشکیل دهید. با این حال ، از آنجا که نمی توانید مطمئن شوید سایر افزونه ها از چه شناسه هایی استفاده می کنند ، از بهترین روش ارسال شناسه خود برای ایجادNodeId استفاده کرده اید ، که یک تابع کمکی Gatsby است و تضمین می کند که شناسه به چیزی در سطح جهانی تبدیل شده است.
  • والد فیلدی است که می توان از آن برای اتصال گره شما به دیگری از طریق شناسه استفاده کرد و این گره را در کودکی علامت گذاری کرد. از آنجا که هر کتاب موجودیت خاص خود است و به گره های دیگر متصل نیست ، این را به عنوان خالی گذاشته اید ، به این معنی که والد ندارد.
  • کودکان به عنوان راهی برای پیوند گره ها شبیه به والدین هستند ، اما آرایه ای از شناسه ها را می گیرد. از آنجا که هر کتاب فرزندی ندارد ، آرایه را خالی گذاشته اید.
  • داخلی شیئی است که زمینه های بسیار ویژه سیستم مدیریت گره داخلی Gatsby و سایر افزونه ها را با هم گروه بندی می کند. این فقط می تواند شامل فیلدهای رسمی باشد ، به همین دلیل است که شما شیء کتاب را در آن پخش نکرده اید.
  • type یک رشته منحصر به فرد در سطح جهان است که نوع گره ای را که ایجاد می کنید توصیف می کند و بعداً هنگام درخواست گره ها از طریق GraphQL مورد استفاده قرار می گیرد.
  • contentDigest یک رشته هش است که از محتویات گره و ابزار کمکی Gatsby createContentDigest ساخته شده است. این فیلد به Gatsby کمک می کند تا تشخیص دهد که یک گره چه زمانی تغییر کرده است ، زیرا در صورت اصلاح هرگونه ویژگی شیء کتاب ، رشته هش تغییر می کند.

شما به تازگی کدی را اضافه کرده اید که محتوای منبع شما را می گیرد و با آن گره های جدید Gatsby ایجاد می کند و آنها را در محیط Gatsby به اشتراک می گذارد. در مرحله بعد ، شما تأیید می کنید که این گره ها در لایه داده GraphQL ظاهر می شوند و می توان آنها را پرس و جو کرد.

مرحله 5 – (اختیاری) بازرسی خروجی گره با API GraphQL

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

پیش بروید و با اجرای این دستور از ریشه پروژه Gatsby خود ، سرور توسعه محلی خود را راه اندازی کنید:

npm run develop

علاوه بر راه اندازی نسخه زنده سایت Gatsby ، فرمان develop همچنین سرور GraphQL و IDE محلی را نیز نشان می دهد. برای تأیید اینکه کد شما در gatsby-node.js تمام گره های کتاب را ایجاد می کند ، از این پرس و جو GraphQL برای دریافت عناوین کتاب ، شناسه های صفحه و شناسه های Gatsby استفاده خواهید کرد:

{
  allBookWikiPage {
    edges {
      node {
        title
        pageid
        id
      }
    }
  }
}

برای اجرای این پرس و جو ، یا GraphQL IDE تعاملی را در localhost باز کنید: 8000/___ graphql و قبل از اجرا پرس و جو را در سمت چپ قرار دهید یا از طریق cURL آن را پرس و جو کنید.

curl –location –request POST ‘http://localhost:8000/___graphql’ \
–header ‘Content-Type: application/json’ \
–data-raw ‘{
“query”: “{ allBookWikiPage { edges { node { title pageid id } } } }”
}’

پاسخ JSON چیزی شبیه به این خواهد بود:

{
  "data": {
    "allBookWikiPage": {
      "edges": [
        {
          "node": {
            "title": "The C Programming Language",
            "pageid": 379671,
            "id": "818771ca-40aa-5cfd-b9e7-fddff093d5ec"
          }
        },
        ...
      ]
    }
  },
  "extensions": {}
}

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

مرحله 6 – (اختیاری) ایجاد صفحات بر اساس گره ها

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

روش های مختلفی برای ایجاد صفحات بر اساس گره های Gatsby وجود دارد ، اما برای این آموزش شما از API File System Route استفاده خواهید کرد ، که صفحات را بر اساس نحو نام فایل خاص ایجاد می کند.

ابتدا یک فایل خالی در src/pages با نام فایل {BookWikiPage.title} .js ایجاد کنید. مهاربندهای پیچ دار به Gatsby می گویند که نام فایل از API مسیر سیستم استفاده می کند و در داخل براکت ها ، BookWikiPage.title به Gatsby می گوید که برای هر عنوان کتاب منحصر به فرد صفحه ای ایجاد کند. توجه داشته باشید که دیگر روی فایلهای موجود در فهرست افزونه ها کار نمی کنید ، اما اکنون در داخل پروژه اصلی Gatsby کار می کنید.

در مرحله بعد ، کدی را به آن فایل اضافه کنید که گره کتاب را گرفته و آن را به عنوان یک صفحه وب نمایش می دهد:

import { graphql } from "gatsby";
import * as React from "react";
import Layout from "../components/layout";
import Seo from "../components/seo";

export default function BookPageTemplate({ data: { bookWikiPage } }) {
  const { title, extract, fullurl } = bookWikiPage;
  return (
    <Layout>
      <Seo title={title} />
      <h1>{title}</h1>
      <blockquote>{extract}</blockquote>

      <i>This article uses material from the Wikipedia article <a href={fullurl} target="_blank" rel="noreferrer">"{title}"</a>, which is released under the <a href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-Share-Alike License 3.0</a>.</i>
    </Layout>
  );
}

export const pageQuery = graphql`
  query ($id: String!) {
    bookWikiPage(id: { eq: $id }) {
      title
      extract
      fullurl
    }
  }
`;

در انتهای کد شما یک متغیر صادر شده به نام pageQuery وجود دارد که از تگ Gatsby GraphQL استفاده می کند. Gatsby پرس و جو GraphQL را که از آن استفاده می کند ، ارزیابی کرده و نتایج را به تابع BookPageTemplate منتقل می کند.

تابع BookPageTemplate ، که جزء React است ، سپس نتایج پرس و جو GraphQL را گرفته و با جاسازی مقادیر در JSX که برمی گرداند ، آنها را به عنوان بخشی از یک صفحه وب نمایش می دهد. عنوان کتاب به عنوان عنوان اصلی و عنوان صفحه استفاده می شود ، عصاره به عنوان نقل قول بلوک نمایش داده می شود و پیوندی به صفحه ورود کامل ویکی پدیا در پایین تعبیه شده است.

شما همچنین با استفاده از پیش فرض صادرات قبل از اعلان ، عملکرد BookPageTemplate را به عنوان صادرات پیش فرض علامت گذاری می کنید ، زیرا Gatsby انتظار دارد که جزء React مسئول تولید صفحه رندر شده نهایی را به عنوان صادرات پیش فرض هر فایل قالب صفحه بیابد.

پس از افزودن کد قالب React به فایل ، تغییرات را ذخیره کرده و ببندید. به http: // localhost: 8000/the-c-programming-language بروید تا یک صفحه نمونه را ارائه دهید:

برای نمایش فهرستی از این گره های جدید و صفحات مرتبط با آنها ، همچنین یک صفحه فهرست اختصاصی ایجاد می کنید که همه کتابها را در یک مکان نمایش می دهد. در قسمت src/pages یک فایل جدید با نام فایل books.js ایجاد کنید. بعد ، کد زیر را به آن اضافه کنید:

src/pages/books.js

import { graphql, Link } from "gatsby";
import * as React from "react";
import Layout from "../components/layout";
import Seo from "../components/seo";

export default function BookListingsPageTemplate({ data: { allBookWikiPage } }) {
  return (
    <Layout>
      <Seo title="Programming Books Listing" />
      <p>Here are some computer programming books that have their own Wikipedia entries:</p>

      {allBookWikiPage.edges.map((edge) => {
        const node = edge.node;
        return (
          <details key={node.title}>
            <summary>{node.title}</summary>

            <div className="details-body">
              <p>{node.extract}</p>
              <div className="links">
                <Link href={node.gatsbyPath}>Internal Page</Link>
                <a rel="noreferrer" href={node.fullurl}>Wikipedia Page</a>
              </div>
            </div>
          </details>
        )
      })}
    </Layout>
  );
}

export const pageQuery = graphql`
  query {
    allBookWikiPage {
      edges {
        node {
          title
          extract
          gatsbyPath(filePath: "/{BookWikiPage.title}")
          fullurl
        }
      }
    }
  }
`;

شبیه به الگوی صفحه {BookWikiPage.title} .js ، این فایل همچنین از برچسب GraphQL pageQuery برای برداشتن داده ها از لایه GraphQL و ارسال آن به یک جزء React استفاده می کند. با این حال ، در حالی که الگوی قبلی یک کتاب را بر اساس شناسه ارائه می داد ، این الگو فهرستی از همه کتابها را ارائه می دهد ، در حالی که به صفحات کتاب جداگانه پیوند داده شده است.

هر فهرست کتاب از یک عنصر <details> استفاده می کند ، که این لیست را قادر می سازد تا قسمت کامل کتاب و پیوندها را نشان دهد یا برای نشان دادن عنوان فقط جمع شود. با پیروی از بهترین روش ها ، شما همچنین یک مقدار منحصر به فرد را به کلید در حین تکرار در آرایه منتقل می کنید ، با استفاده از مولفه Gatsby Link برای پیوندهای داخلی و یک برچسب برای پیوندهای خارجی.

رشته gatsbyPath (filePath: “/{BookWikiPage.title}”) در پرس و جو GraphQL از تابع () gatsbyPath ویژه برای بازیابی مسیر عمومی ایجاد شده بر اساس نام فایل API مسیر فایل سیستم استفاده می کند.

این فایل را ذخیره کرده و از آن خارج شوید.

با وجود تمام کتابهای موجود در یک صفحه ، حتی با بخشهای جمع شونده همه چیز کمی شلوغ شده است ، بنابراین آخرین مرحله این است که برخی از ظاهر را اضافه کنید تا خوانندگان بتوانند فهرست را آسانتر کنند. یک فایل شیوه نامه جدید در src/styles/books.css ایجاد کنید. می توانید این کار را در مرورگر فایل خود یا با خط فرمان از ریشه پروژه Gatsby انجام دهید:

mkdir -p ./src/styles
touch ./src/styles/books.css

سپس CSS زیر را به فایل اضافه کنید:

src/styles/books.css

details {
  border: 1px dotted black;
  margin: 6px;
  padding: 6px;
}

.details-body {
  background-color: #eedeff;
  margin: 4px 0px 2px 12px;
  padding: 4px;
  border-radius: 4px;
}

.links {
  display: flex;
  justify-content: space-evenly;
}

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

در نهایت ، الگوی صفحه فهرست کتاب را به روز کنید تا این فایل CSS را در آن بکشید:

src/pages/books.js

import { graphql, Link } from "gatsby";
import * as React from "react";
import Layout from "../components/layout";
import Seo from "../components/seo";
import "../styles/books.css";

این فایل را با خط وارد کردن CSS که به تازگی اضافه شده است ذخیره و ببندید.

برای مشاهده نتایج ، دوباره فرمان develop را اجرا کنید تا سرور توسعه ظاهر شود و صفحات جدید را پیش نمایش کنید:

npm run develop

اکنون می توانید به صفحه فهرست کتابهای خود در localhost دسترسی داشته باشید: 8000/books/.

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

نتیجه

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

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

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

c

 

  • behnam gol mohamadi
  • ۰
  • ۰

افزایش امنیت ، بینش و ادغام DBaaS در پلت فرم برنامه DigitalOcean

ورود به سایت

مشاغل به طور فزاینده ای به دنبال راهی هستند تا برنامه های خود را سریعتر به بازار عرضه کنند. پلتفرم برنامه DigitalOcean با ارائه یک راه حل کاملاً مدیریت شده که به شما کمک می کند برنامه های خود را بسازید ، مستقر و مقیاس بندی کنید ، به آن نیازها آدرس می دهد. شما می توانید برنامه ها را به سادگی با اشاره به repo GitHub یا GitLab خود مستقر کنید ، و App Platform وظایف سنگین مدیریت زیرساخت ، زمان اجرای برنامه و سایر وابستگی ها را انجام می دهد.

برنامه های خود را به صورت امن به پایگاه های داده مدیریت شده به عنوان منابع قابل اعتماد متصل کنید

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

با افتخار اعلام می کنیم که اکنون می توانید برنامه های خود را که به طور امن بر روی App Platform ساخته شده اند به پایگاه های مدیریتی DigitalOcean به عنوان منابع قابل اعتماد متصل کنید. افزودن برنامه به عنوان یک منبع قابل اعتماد ، یک اتصال امن به پایگاه داده ایجاد می کند که ترافیک را فقط از برنامه می پذیرد و دیگر اتصالات خصوصی و عمومی را رد می کند و پایگاه داده شما را ایمن تر می کند. به طور مشابه ، اگر پایگاه داده مدیریت شده موجود شما منابع معتبری را فعال کرده باشد ، برنامه به طور خودکار به عنوان یک منبع قابل اعتماد اضافه می شود. این ویژگی برای پایگاه های مدیریتی Redis ، MySQL و PostgreSQL موجود است و به زودی برای Managed MongoDB اضافه می شود

با هشدارها و نظارت ، دید بهتری در برنامه های خود به دست آورید

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

خط مشی های پیش فرض هشدار

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

ادغام بستر برنامه با MongoDB مدیریت شده

در ماه ژوئن ، ما DigitalOcean Managed MongoDB را راه اندازی کردیم – یک پایگاه داده کاملاً مدیریت شده به عنوان سرویس برنامه های مدرن. پلتفرم برنامه به صورت یکپارچه با Managed MongoDB ادغام می شود و به شما این امکان را می دهد که MongoDB مدیریت شده را به عنوان پشتیبان برنامه خود انتخاب کنید. می توانید هنگام ایجاد برنامه خود با استفاده از App Platform ، یک خوشه MongoDB مدیریت شده را بچرخانید یا MongoDB را به برنامه ای که قبلاً ایجاد کرده اید متصل کنید. در اینجا یک ویدیو عالی وجود دارد که نشان می دهد چگونه می توانید از Managed MongoDB با برنامه های App Platforms استفاده کنید.

انعطاف پذیری بیشتری برای استقرار برنامه های خود با پشتیبانی از monorepos

monorepo یک مخزن واحد است که کد بسیاری از پروژه های مختلف را ذخیره می کند. توسعه دهندگان اغلب از monorepos برای استفاده مجدد از کد ، مدیریت وابستگی ها ، بهینه سازی ساختارها و همکاری موثر در بین تیم ها استفاده می کنند. ما مفتخریم اعلام کنیم که Platform App در حال حاضر از استقرار برنامه های مختلف پشتیبانی می کند که همه در یک مخزن واحد git (monorepo) قرار دارند. هر یک از این برنامه ها ممکن است در پوشه جداگانه ای در repo قرار داشته باشند. این به کاهش زمان لازم برای توسعه و استقرار برنامه ها کمک می کند و توسعه دهندگان را کارآمدتر و پربارتر می کند. این ویدئو را ببینید تا این قابلیت را در عمل ببینید.

ادغام بستر برنامه با Stackbit

Stackbit یک پلتفرم است که به شما امکان می دهد در سایت های Jamstack همکاری کنید ، و تیم خود را قادر می سازد تا به جای برخورد با Markdown ، git یا نوشتن کد ، آنها را بصری ویرایش کند. شما می توانید از مزایای Jamstack ، از جمله عملکرد بهتر ، امنیت بیشتر ، هزینه کمتر و مقیاس پذیری بیشتر ، همراه با راحتی ویرایش بصری داخلی استفاده کنید. اکنون می توانید به راحتی سایت های خود را که بر روی Stackbit to App Platform ساخته شده منتشر کرده و از پلتفرم کاملاً مدیریت شده استفاده کنید.

:DBaaSMongoDBStackbitپلتفرمپلتفرمStackbitسرورسرورمجازی ،vps ، خرید سرور ،فروش سرور 

  • behnam gol mohamadi