سرور مجازی

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

  • ۰
  • ۰

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

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

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

$ git –version

اگر خروجی شبیه به زیر دریافت کردید، یعنی Git قبلا نصب شده است:
Output
git version 2.25.1

اگر این گونه است ، می توانید به سراغ تنظیم Git بروید ، یا در صورت نیاز به نسخه به روزتر ، می توانید بخش بعدی نحوه نصب از منبع را بخوانید.
با این حال ، اگر شماره نسخه Git را در خروجی دریافت نکردید ، می توانید آن را با مدیر بسته پیش فرض اوبونتو APT نصب کنید.
ابتدا ، از ابزارهای مدیریت بسته apt برای به روزرسانی ایندکس بسته محلی خود استفاده کنید.
$ sudo apt update

با اتمام به روزرسانی ، می توانید Git را نصب کنید:
$ sudo apt install git

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

Output
git version 2.25.1

با نصب موفقیت آمیز Git ، اکنون می توانید برای تکمیل تنظیم خود به بخش Setting Up Git بروید.

نصب Git از Source
یک روش انعطاف پذیرتر برای نصب Git ، کامپایل نرم افزار از منبع است. این کار زمان بیشتری طول می کشد و از طریق مدیر بسته شما نگه داری نمی شود ، اما به شما امکان می دهد آخرین نسخه را دانلود کنید و در صورت تمایل به شخصی سازی ، کنترل برخی گزینه ها را در اختیار شما قرار می دهد.
نسخه Git که در حال حاضر روی سرور مجازی شما نصب شده است را تایید کنید:
$ git –version

اگر Git نصب شده است، خروجی شبیه به این دریافت خواهید کرد:
Output
git version 2.25.1

قبل از شروع ، باید نرم افزاری را نصب کنید که Git به آن بستگی دارد. این همه ی چیزی است که در مخازن پیش فرض موجود است ، بنابراین می توانیم ایندکس بسته محلی خود را بروزرسانی کنیم و سپس بسته ها را نصب کنیم.
$ sudo apt update

$ sudo apt install libz-dev libssl-dev libcurl4-gnutls-dev libexpat1-dev gettext cmake gcc

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

$ cd /tmp

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

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

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

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

$ cd git-*

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

$ sudo make prefix=/usr/local install

اکنون فرآیند پوسته را به گونه ای جایگزین کنید که نسخه Git که اکنون نصب کرده ایم استفاده شود:
$ exec bash

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

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

راه اندازی Git

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

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

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

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

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

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

CTRL و X ، سپس Y و ENTER را فشار دهید تا از ویرایشگر متن خارج شوید.
گزینه های دیگر بسیاری وجود دارد که می توانید تنظیم کنید ، اما این دو مورد ضروری هستند. اگر این مرحله را رد کنید ، احتمالاً هنگام تعهد به Git هشدارهایی مشاهده خواهید کرد. این باعث می شود کار بیشتری برای شما ایجاد شود زیرا مجبور خواهید بود تعهداتی را که انجام داده اید با اطلاعات اصلاح شده جایگزین کنید.

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

 

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

چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهید

نحوه ایجاد نماها (Views) برای توسعه وب Django

نصب Mount NFS در اوبونتو 20.04

نحوه توسعه برنامه ها در Kubernetes با Okteto

نصب و پیکربندی Laravel با Nginx در اوبونتو 20.04

نحوه تنظیم Jupyter Notebook با پایتون در Ubuntu 20.04

نصب Jitsi Meet در Debian 10

نصب و پیکربندی Nextcloud در اوبونتو 20.04

نصب و پیکربندی Ansible در اوبونتو 20.04

مقدمه ای بر مدیریت پیکربندی با Ansible

نحوه نصب R روی اوبونتو 20.04

ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04

نصب و پیکربندی Postfix در اوبونتو 20.04

ارائه برنامه های Flask با Gunicorn و Nginx اوبونتو 20

ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04

تنظیم پلتفرم Cloud IDE کد سرور در اوبونتو 20

کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04

نصب و ایمن سازی Grafana در اوبونتو 20.04

نحوه نصب Git در Ubuntu 20.04

 

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

حتی با محبوبیت روزافزون خدمات ابری ، نیاز به اجرای برنامه های بومی هنوز وجود دارد.
با استفاده از noVNC و TigerVNC ، می توانید برنامه های بومی را درون یک کانتینر Docker اجرا کنید و از راه دور با استفاده از یک مرورگر وب به آنها دسترسی پیدا کنید. علاوه بر این ، می توانید برنامه خود را بر روی سرور مجازی با منابع سیستم بیشتر از آنچه به صورت محلی موجود دارید اجرا کنید ، که می تواند در هنگام اجرای برنامه های بزرگ ، انعطاف پذیری بیشتری را ارائه دهد.
در این آموزش ، Mozilla Thunderbird ، کلاینت ایمیل را با استفاده از Docker کانتینرایز می کنید. پس از آن ، آن را ایمن کرده و با استفاده از سرور مجازی وب Caddy امکان دسترسی از راه دور را فراهم خواهید کرد.
پس از اتمام کار ، فقط با یک مرورگر وب می توانید از هر وسیله ای به Thunderbird دسترسی پیدا کنید. همچنین به صورت اختیاری می توانید با استفاده از WebDAV به طور محلی به فایل های موجود در آن دسترسی پیدا کنید. همچنین یک تصویر کاملاً خود شمول از Docker خواهید داشت که می توانید در هر مکانی اجرا کنید.
پیش نیازها
قبل از شروع این راهنما ، به موارد زیر نیاز خواهید داشت:
⦁ یک سرور مجازی اوبونتو 18.04 با حداقل 2 گیگابایت رم و فضای دیسک 4 گیگابایتی.
⦁ یک کاربر غیر ریشه با امتیازات sudo.
⦁ Docker که روی سرور مجازی شما تنظیم شده باشد. می توانید نحوه نصب و استفاده از Docker در Ubuntu 18.04 را در این لینک دنبال کنید.
مرحله 1 – ایجاد پیکربندی supervisord
اکنون که سرور مجازی شما در حال اجرا است و Docker نصب شده است ، آماده هستید تا پیکربندی کانتینر برنامه خود را شروع کنید. از آنجا که کانتینر شما از چندین مؤلفه تشکیل شده است ، برای راه اندازی و نظارت بر آنها باید از یک مدیر فرآیند استفاده کنید. در اینجا ، از supervisord استفاده خواهید کرد. supervisord یک مدیر فرآیند است که در پایتون نوشته شده و اغلب برای موزون کردن کانتینرهای پیچیده استفاده می شود.
ابتدا دایرکتوری به نام thunderbird برای کانتینر خود ایجاد کنید و وارد شوید:
⦁ $ mkdir ~/thunderbird

⦁ $ cd ~/thunderbird

اکنون با استفاده از nano یا ویرایشگر مورد نظر خود ، فایلی به نام supervisord.conf ایجاد و باز کنید:
⦁ $ nano supervisord.conf

اکنون این اولین بلوک کد را به supraord.conf اضافه کنید ، که گزینه های جهانی برای supervisord را تعریف می کند:
~/thunderbird/supervisord.conf
[supervisord]
nodaemon=true
pidfile=/tmp/supervisord.pid
logfile=/dev/fd/1
logfile_maxbytes=0
در این بخش ، شما خود supervisord را پیکربندی می کنید. باید nodaemon را روی true تنظیم کنید زیرا درون یک کانتینر Docker به عنوان ورودی وارد می شود. بنابراین ، می خواهید که در پیش زمینه اجرا شود. همچنین pidfile را روی مسیری که توسط یک کاربر غیر ریشه قابل دسترسی است و logfile را روی stdout تنظیم میکنید تا بتوانید ورودها را مشاهده کنید.
در مرحله بعد ، یک بلوک کد کوچک دیگر را به supervisord.conf اضافه کنید. این بلوک TigerVNC را که یک سرور مجازی ترکیبی VNC / X11 است شروع می کند:
~/thunderbird/supervisord.conf

[program:x11]
priority=0
command=/usr/bin/Xtigervnc -desktop “Thunderbird” -localhost -rfbport 5900 -SecurityTypes None -AlwaysShared -AcceptKeyEvents -AcceptPointerEvents -AcceptSetDesktopSize -SendCutText -AcceptCutText :0
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

در این بلوک ، سرور مجازی X11 را تنظیم می کنید. X11 یک پروتکل سرور مجازی نمایشگر است ، همان چیزی است که به برنامه های GUI اجازه اجرا می دهد. توجه داشته باشید که در آینده باWayland جایگزین خواهد شد ، اما دسترسی از راه دور هنوز در دست توسعه است.
برای این کانتینر ، شما از TigerVNC و سرور مجازی داخلی VNC استفاده می کنید. که دارای چندین مزیت نسبت به استفاده از یک سرور مجازی جداگانه X11 و VNC است:
• زمان پاسخ سریعتر ، زیرا کشیدن GUI مستقیماً روی سرور مجازی VNC انجام می شود به جای اینکه روی یک بافر چارچوب واسطه (حافظه ای که محتویات صفحه را ذخیره می کند) انجام شود.
• تغییر اندازه خودکار صفحه ، که به برنامه ریموت اجازه می دهد تا به طور خودکار تغییر اندازه دهد تا با کلاینت (در این حالت ، پنجره مرورگر وب شما) متناسب باشد.
در صورت تمایل ، می توانید آرگومان را برای گزینه -desktop از Thunderbird به چیز دیگری که انتخاب کرده اید تغییر دهید. سرور مجازی انتخاب شما را به عنوان تیتر صفحه وب مورد استفاده برای دسترسی به برنامه شما نمایش می دهد.
اکنون ، بیایید یک بلوک سوم از کد را به supervisord.conf اضافه کنیم تا easy-novnc را شروع کنیم:
~/thunderbird/supervisord.conf

[program:easy-novnc]
priority=0
command=/usr/local/bin/easy-novnc –addr :8080 –host localhost –port 5900 –no-url-password –novnc-params “resize=remote”
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

در این بلوک ، یک easy-novnc را راه اندازی می کنید ، یک سرور مجازی مستقل که یک پوشش حول noVNC فراهم می کند. این سرور مجازی دو نقش را انجام می دهد. ابتدا یک صفحه اتصال ساده فراهم می کند که به شما امکان می دهد گزینه های اتصال را پیکربندی کنید و به شما امکان می دهد موارد پیش فرض را تنظیم کنید. دوم ، VNC را روی WebSocket پروکسی میکند ، که به آن امکان دسترسی از طریق یک مرورگر وب معمولی را می دهد.
معمولاً تغییر اندازه در سمت کلاینت انجام می شود (یعنی مقیاس بندی تصویر) ، اما شما از گزینه resize=remote استفاده می کنید تا از تنظیمات وضوح تصویری از راه دور TigerVNC استفاده کامل کنید. این گزینه همچنین تأخیر کمتری را در دستگاه های کندتر مانند Chromebooks رده پایین ایجاد می کند:
توجه: در این آموزش از easy-novnc استفاده شده است. در صورت تمایل می توانید به جای آن از websockify و یک وب سرور مجازی جداگانه استفاده کنید. مزیت easy-novnc این است که میزان حافظه و زمان راه اندازی آن به میزان قابل توجهی پایین است و خود شمول به حساب می آید. easy-novnc همچنین یک صفحه اتصال تمیزتر نسبت به noVNC پیش فرض ارائه می دهد و تنظیم گزینه های پیش فرض مفید برای این ستاپ (مانند resize=remote) را ممکن می سازد.

برای شروع OpenBox ، یعنی مدیر پنجره ، بلوک زیر را به پیکربندی خود اضافه کنید:
~/thunderbird/supervisord.conf

[program:openbox]
priority=1
command=/usr/bin/openbox
environment=DISPLAY=:0
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

در این بلوک ، شما در حال راه اندازی OpenBox ، مدیر پنجره سبک X11 هستید. می توانید از این مرحله بگذرید ، اما بدون آن ، نمودارهای میله ای عنوان را ندارید یا نمی توانید اندازه ویندوز را تغییر دهید.
در آخر ، بیایید آخرین بلوک را به supervisord.conf اضافه کنیم ، که برنامه اصلی را شروع می کند:
~/thunderbird/supervisord.conf

[program:app]
priority=1
environment=DISPLAY=:0
command=/usr/bin/thunderbird
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

در این بلوک آخر ، برای اطمینان از اجرای Thunderbird بعد از TigerVNC ، اولویت را روی 1 تنظیم کنید در غیر این صورت با یک شرایط مسابقه روبرو می شوید و به طور تصادفی در شروع کار ناکام خواهید ماند. بنابراین autorestart = true قرار دهید تا اگر برنامه به اشتباه بسته شد ، برنامه را مجدداً باز کنید. متغیر محیط DISPLAY به برنامه می گوید تا روی سرور مجازی VNC که قبلاً تنظیم کرده اید نمایش داده شود.
در اینجا ظاهر نهایی supervisord.conf شما نمایش داده شده است:
~/thunderbird/supervisord.conf
[supervisord]
nodaemon=true
pidfile=/tmp/supervisord.pid
logfile=/dev/fd/1
logfile_maxbytes=0

[program:x11]
priority=0
command=/usr/bin/Xtigervnc -desktop “Thunderbird” -localhost -rfbport 5900 -SecurityTypes None -AlwaysShared -AcceptKeyEvents -AcceptPointerEvents -AcceptSetDesktopSize -SendCutText -AcceptCutText :0
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

[program:easy-novnc]
priority=0
command=/usr/local/bin/easy-novnc –addr :8080 –host localhost –port 5900 –no-url-password –novnc-params “resize=remote”
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

[program:openbox]
priority=1
command=/usr/bin/openbox
environment=DISPLAY=:0
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

[program:app]
priority=1
environment=DISPLAY=:0
command=/usr/bin/thunderbird
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

اگر می خواهید برنامه دیگری را کانتینرایز کنید ، /usr/bin/thunderbird را با مسیر قابل اجرای برنامه خود جایگزین کنید. در غیر این صورت ، اکنون آماده پیکربندی منوی اصلی GUI خود هستید.
مرحله 2 – تنظیم منوی OpenBox
اکنون که مدیر پروسه شما پیکربندی شده است ، بیایید منوی OpenBox را تنظیم کنیم. این منو به ما امکان می دهد تا برنامه ها را درون کانتینر راه اندازی کنیم. همچنین یک ترمینال و مانیتور پردازش برای اشکال زدایی در صورت لزوم را در اختیار خواهیم داشت.
در داخل دیرکتوری برنامه خود ، از nano یا ویرایشگر متن مورد علاقه خود استفاده کنید تا فایل جدیدی به نام menu.xml ایجاد و باز کنید:
⦁ $ nano ~/thunderbird/menu.xml

اکنون کد زیر را به menu.xml اضافه کنید:
~/thunderbird/menu.xml
<?xml version=”1.0″ encoding=”utf-8″?>
<openbox_menu xmlns=”http://openbox.org/” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://openbox.org/ file:///usr/share/openbox/menu.xsd”>
<menu id=”root-menu” label=”Openbox 3″>
<item label=”Thunderbird”>
<action name=”Execute”>
<execute>/usr/bin/thunderbird</execute>
</action>
</item>
<item label=”Terminal”>
<action name=”Execute”>
<execute>/usr/bin/x-terminal-emulator</execute>
</action>
</item>
<item label=”Htop”>
<action name=”Execute”>
<execute>/usr/bin/x-terminal-emulator -e htop</execute>
</action>
</item>
</menu>
</openbox_menu>

این فایل XML شامل آیتم های منو است که با کلیک راست بر روی دسکتاپ ظاهر می شود. هر مورد از یک لیبل و یک عمل تشکیل شده است.
اگر می خواهید برنامه دیگری را کانتینرایز کنید ، / usr / bin / thunderbird را با مسیر اجرایی برنامه خود جایگزین کنید و لیبل مورد را تغییر دهید.
مرحله 3 – ایجاد Dockerfile
اکنون که OpenBox پیکربندی شده است ، Dockerfile را ایجاد خواهید کرد ، که همه چیز را به هم پیوند می دهد.
یک Dockerfile در دیرکتوری کانتینر خود ایجاد کنید:
⦁ $nano ~/thunderbird/Dockerfile

برای شروع ، بیایید برای ساختن easy-novnc کد دیگری اضافه کنیم:
~/thunderbird/Dockerfile
FROM golang:1.14-buster AS easy-novnc-build
WORKDIR /src
RUN go mod init build && \
go get github.com/geek1011/easy-novnc@v1.1.0 && \
go build -o /bin/easy-novnc github.com/geek1011/easy-novnc

در مرحله اول ، شما در حال ساختن easy-novnc هستید. برای سادگی و صرفه جویی در فضا این کار در یک مرحله جداگانه انجام می شود – به زنجیره ابزار کلیGo در تصویر نهایی خود نیازی ندارید. به@ v1.1.0 در دستور build توجه داشته باشید. این تضمین می کند که نتیجه تعیین کننده است ، و از آن جهت مهم است که Docker نتیجه هر مرحله را ذخیره می کند. اگر نسخه صریح را مشخص نکرده اید ، Docker در زمان ساخت اولین تصویر، آخرین نسخه های easy-novnc را ارجاع می دهد. علاوه بر این ، بهتر است اطمینان حاصل کنید که یک نسخه خاص از easy-novnc را دانلود می کنید تا در صورت ایجاد تغییرات در رابط CLI آن را داشته باشید.
حالا بیایید مرحله دوم را ایجاد کنیم که به تصویر نهایی تبدیل می شود. در اینجا از Debian 10 (Buster) به عنوان تصویر پایه استفاده خواهید کرد. توجه داشته باشید که از آنجا که این کار در یک کانتینر در حال اجرا است ، صرف نظر از توزیع شما در سرور خود ، کار خواهد کرد.
سپس ، بلوک زیر را به Dockerfile خود اضافه کنید:
~/thunderbird/Dockerfile

FROM debian:buster
RUN apt-get update -y && \
apt-get install -y –no-install-recommends openbox tigervnc-standalone-server supervisor gosu && \
rm -rf /var/lib/apt/lists && \
mkdir -p /usr/share/desktop-directories

در این دستورالعمل ، شما Debian 10 را به عنوان تصویر پایه خود نصب می کنید و سپس حداقل مورد نیاز برای اجرای برنامه های GUI را در کانتینر خود نصب می کنید. توجه داشته باشید که apt-get update را به عنوان بخشی از همان دستورالعمل ها برای جلوگیری از مشکلات ذخیره سازی در Docker ، اجرا کنید. برای صرفه جویی در فضا ، همچنین لیست های بسته را که بعد از آن دانلود شده است حذف می کنید (بسته های ذخیره شده به صورت پیش فرض حذف می شوند). همچنین /usr/share/desktop-directories را ایجاد می کنید زیرا برخی برنامه ها به دایرکتوری موجود بستگی دارند.
بیایید یک بلوک کد کوچک دیگر اضافه کنیم:
~/thunderbird/Dockerfile

RUN apt-get update -y && \
apt-get install -y –no-install-recommends lxterminal nano wget openssh-client rsync ca-certificates xdg-utils htop tar xzip gzip bzip2 zip unzip && \
rm -rf /var/lib/apt/lists

در این دستورالعمل ، شما در حال نصب برخی از نرم افزارها و بسته های عمومی مفید هستید. موارد قابل توجه در اینجا xd-utils (که دستورات پایه مورد استفاده برنامه های دسکتاپ را در لینوکس فراهم می کند) و ca-certificates (که گواهی های ریشه را نصب می کند تا به ما امکان دسترسی به سایت های HTTPS را بدهد) هستند.
اکنون می توانیم دستورالعمل برنامه اصلی را اضافه کنیم:
~/thunderbird/Dockerfile

RUN apt-get update -y && \
apt-get install -y –no-install-recommends thunderbird && \
rm -rf /var/lib/apt/lists

مانند گذشته ، در اینجا ما در حال نصب برنامه هستیم. اگر برنامه کاربردی دیگری را کانتینرایز میکنید ، می توانید این دستورات را با دستورالعمل های لازم برای نصب برنامه خاص خود جایگزین کنید. برخی از برنامه ها برای اجرای داخل Docker به کار کمی بیشتر نیاز دارند. به عنوان مثال ، اگر برنامه ای را نصب می کنید که از Chrome ،Chromium یا QtWebEngine استفاده می کند ، باید از آرگومان خط فرمان –no-sandbox استفاده کنید ، زیرا در Docker پشتیبانی نمی شود.
در مرحله بعد ، بیایید دستورالعمل هایی را اضافه کنیم تا چند فایل آخر به کانتینر اضافه شود:
~/thunderbird/Dockerfile

COPY –from=easy-novnc-build /bin/easy-novnc /usr/local/bin/
COPY menu.xml /etc/xdg/openbox/
COPY supervisord.conf /etc/
EXPOSE 8080

در اینجا شما می توانید فایل های پیکربندی را که قبلاً ایجاد کرده اید به تصویر اضافه کرده و از مرحله اول کپی کردن باینری easy-novnc را انجام دهید.
این بلوک کد بعدی دایرکتوری داده را ایجاد می کند و کاربر اختصاصی را برای برنامه شما اضافه می کند. از آن جهت مهم است که برخی برنامه ها از اجرا به عنوان ریشه خودداری می کنند. همچنین بهتر است که حتی در یک کانتینر ، برنامه ها را به صورت ریشه اجرا نکنید.
~/thunderbird/Dockerfile

RUN groupadd –gid 1000 app && \
useradd –home-dir /data –shell /bin/bash –uid 1000 –gid 1000 app && \
mkdir -p /data
VOLUME /data

برای اطمینان از یک UID / GID سازگار برای فایل ها ، صریحاً هر دو را روی 1000 تنظیم می کنید. همچنین می توانید یک حجم را در دایرکتوری داده قرار دهید تا اطمینان حاصل شود که بین راه ریستارت ها همچنان ادامه دارد.
در آخر ، دستورالعمل هایی را برای راه اندازی همه موارد اضافه می کنیم:
~/thunderbird/Dockerfile

CMD [“sh”, “-c”, “chown app:app /data /dev/stdout && exec gosu app supervisord”]

با تنظیم دستور پیش فرض روی supervisord ، مدیر فرآیندهای مورد نیاز برای اجرای برنامه شما را راه اندازی می کند. در این حالت ، به جای ENTRYPOINT از CMD استفاده می کنید. در بیشتر موارد ، تفاوتی ایجاد نمی کند ، اما استفاده از CMD برای این منظور به چند دلیل مناسب تر است. اولا ، supervisord هیچ آرگومانی مربوط به ما را دریافت نمیکند ، و اگر آرگومان هایی را به کانتینر ارائه می دهید ، آنها CMD را جایگزین می کنند و به ENTRYPOINT اضافه می شوند. دوما ، استفاده از CMD به ما امکان می دهد هنگام ارسال آرگومان ها به داخل کانتینر ، یک دستور کاملاً متفاوت (که توسط / bin / sh -c اجرا خواهد شد) ارائه دهیم ، که اشکال زدایی را آسان تر می کند.
و در آخر ، لازم است قبل از شروع supervisord ، chown را به عنوان ریشه اجرا کنید تا از مشکلات مجوز در حجم داده جلوگیری کنید و به فرآیند کودک (child) اجازه دهید stdout را باز کند. این همچنین بدان معنی است که شما باید به جای دستورالعمل USER برای تعویض کاربر از gosu استفاده کنید.
در اینجا ظاهر Dockerfile تکمیل شده شما به شرح زیر است:
~/thunderbird/Dockerfile
FROM golang:1.14-buster AS easy-novnc-build
WORKDIR /src
RUN go mod init build && \
go get github.com/geek1011/easy-novnc@v1.1.0 && \
go build -o /bin/easy-novnc github.com/geek1011/easy-novnc

FROM debian:buster

RUN apt-get update -y && \
apt-get install -y –no-install-recommends openbox tigervnc-standalone-server supervisor gosu && \
rm -rf /var/lib/apt/lists && \
mkdir -p /usr/share/desktop-directories

RUN apt-get update -y && \
apt-get install -y –no-install-recommends lxterminal nano wget openssh-client rsync ca-certificates xdg-utils htop tar xzip gzip bzip2 zip unzip && \
rm -rf /var/lib/apt/lists

RUN apt-get update -y && \
apt-get install -y –no-install-recommends thunderbird && \
rm -rf /var/lib/apt/lists

COPY –from=easy-novnc-build /bin/easy-novnc /usr/local/bin/
COPY menu.xml /etc/xdg/openbox/
COPY supervisord.conf /etc/
EXPOSE 8080

RUN groupadd –gid 1000 app && \
useradd –home-dir /data –shell /bin/bash –uid 1000 –gid 1000 app && \
mkdir -p /data
VOLUME /data

CMD [“sh”, “-c”, “chown app:app /data /dev/stdout && exec gosu app supervisord”]

Dockerfile خود را ذخیره کرده و ببندید. اکنون آماده ساخت و اجرای کانتینر خود هستیم و سپس به Thunderbird – که یک برنامه GUI است، دسترسی پیدا خواهیم کرد.
مرحله 4 – ساخت و اجرای کانتینر
مرحله بعدی ساخت کانتینر شما و تنظیم آن در زمان راه اندازی است. همچنین می توانید یک حجم برای حفظ داده های برنامه بین ریستارت ها و به روز رسانی تنظیم کنید.
ابتدا کانتینر خود را بسازید. حتماً این دستورات را در دیرکتوری ~ / thunderbird اجرا کنید:
⦁ $ docker build -t thunderbird .

اکنون یک شبکه جدید ایجاد کنید که بین کانتینرهای برنامه به اشتراک گذاشته شود:
⦁ $ docker network create thunderbird-net

سپس یک حجم برای ذخیره داده های برنامه ایجاد کنید:
⦁ $ docker volume create thunderbird-data

در آخر ، آن را اجرا کرده و آن را روی ریستارت خودکار تنظیم کنید:
⦁ $ docker run –detach –restart=always –volume=thunderbird-data:/data –net=thunderbird-net –name=thunderbird-app thunderbird

توجه داشته باشید که در صورت تمایل ، می توانید برنامه thunderbird را بعد از گزینه –name با نام دیگری جایگزین کنید. هرچه انتخاب کردید ، اکنون برنامه شما کانتینرایز شده و در حال اجرا است. اکنون بیایید از سرور وب Caddy برای امنیت آن استفاده کنیم و از راه دور به آن متصل شویم.
مرحله 5 – راه اندازی Caddy
در این مرحله ، وب سرور Caddy را تنظیم می کنید تا تأیید هویت انجام شود و به صورت اختیاری ، دسترسی از راه دور فایل از طریق WebDAV را انجام دهد. برای سادگی و اینکه به شما امکان استفاده از پروکسی معکوس موجود خود را بدهد ، آن را در یک کانتینر دیگر اجرا کنید.
یک دیرکتوری جدید ایجاد کنید و سپس به داخل آن بروید:
⦁ $ mkdir ~/caddy

⦁ $ cd ~/caddy

اکنون با استفاده از nano یا ویرایشگر مورد نظر خود ، یک Dockerfile جدید ایجاد کنید:
⦁ $ nano ~/caddy/Dockerfile

سپس بخش های زیر را اضافه کنید:
~/caddy/Dockerfile
FROM golang:1.14-buster AS caddy-build
WORKDIR /src
RUN echo ‘module caddy’ > go.mod && \
echo ‘require github.com/caddyserver/caddy/v2 v2.0.0’ >> go.mod && \
echo ‘require github.com/mholt/caddy-webdav v0.0.0-20200523051447-bc5d19941ac3’ >> go.mod
RUN echo ‘package main’ > caddy.go && \
echo ‘import caddycmd “github.com/caddyserver/caddy/v2/cmd”‘ >> caddy.go && \
echo ‘import _ “github.com/caddyserver/caddy/v2/modules/standard”‘ >> caddy.go && \
echo ‘import _ “github.com/mholt/caddy-webdav”‘ >> caddy.go && \
echo ‘func main() { caddycmd.Main() }’ >> caddy.go
RUN go build -o /bin/caddy .

FROM debian:buster

RUN apt-get update -y && \
apt-get install -y –no-install-recommends gosu && \
rm -rf /var/lib/apt/lists

COPY –from=caddy-build /bin/caddy /usr/local/bin/
COPY Caddyfile /etc/
EXPOSE 8080

RUN groupadd –gid 1000 app && \
useradd –home-dir /data –shell /bin/bash –uid 1000 –gid 1000 app && \
mkdir -p /data
VOLUME /data

WORKDIR /data
CMD [“sh”, “-c”, “chown app:app /data && exec gosu app /usr/local/bin/caddy run -adapter caddyfile -config /etc/Caddyfile”]

این Dockerfile با فعال کردن افزونه WebDAV ، Caddy را ایجاد می کند ، و سپس آن را در پورت 8080 با Caddyfile در / etc / Caddyfile راه اندازی می کند. فایل را ذخیره کنید و ببندید.
سپس سرور وب Caddy را پیکربندی می کنید. فایلی به نام Caddyfile را در دایرکتوری که تازه ایجاد کرده اید ایجاد کنید:
⦁ $ nano ~/caddy/Caddyfile

اکنون بلوک کد زیر را به Caddyfile خود اضافه کنید:
~/caddy/Caddyfile
{
order webdav last
}
:8080 {
log
root * /data
reverse_proxy thunderbird-app:8080

handle /files/* {
uri strip_prefix /files
file_server browse
}
redir /files /files/

handle /webdav/* {
uri strip_prefix /webdav
webdav
}
redir /webdav /webdav/

basicauth /* {
{env.APP_USERNAME} {env.APP_PASSWORD_HASH}
}
}

این Caddyfile دیرکتوری اصلی را به کانتینر thunderbird-app که در مرحله 4 ایجاد کرده اید پروکسی میکند ( Docker آن را در IP صحیح تجزیه می کند). همچنین یک مرورگر فایل مبتنی بر وب فقط قابل خواندن در /files ارائه می کند و یک سرور WebDAV را روی / webdav اجرا می کند که می توانید برای دسترسی به فایل های خود به صورت محلی قرار دهید. نام کاربری و رمز عبور از متغیرهای محیط APP_USERNAME و APP_PASSWORD_HASH خوانده می شود.
اکنون کانتینر را بسازید:
⦁ $ docker build -t thunderbird-caddy .

Caddy v.2 شما را مجبور به رمزگذاری رمز عبور مورد نظر خود می کند. دستور زیر را اجرا کنید و به یاد داشته باشید که mypass را با یک رمز عبور قوی به انتخاب خود جایگزین کنید:
⦁ $ docker run –rm -it thunderbird-caddy caddy hash-password -plaintext ‘mypass’

این دستور یک رشته کاراکتر را تولید می کند. این کار را برای تهیه دستور بعدی در کلیپ بورد خود کپی کنید.
اکنون آماده اجرای کانتینر هستید. اطمینان حاصل کنید که myuser را با نام کاربری مورد نظر خود جایگزین کنید و mypass-hash را با همان دستوری که در مرحله قبل اجرا کردید جایگزین نمایید. همچنین می توانید پورت (8080 در اینجا) را برای دسترسی به سرور خود در پورت دیگری تغییر دهید:
⦁ $ docker run –detach –restart=always –volume=thunderbird-data:/data –net=thunderbird-net –name=thunderbird-web –env=APP_USERNAME=”myuser” –env=APP_PASSWORD_HASH=”mypass-hash” –publish=8080:8080 thunderbird-caddy

اکنون آماده دسترسی و آزمایش برنامه خود هستیم.
مرحله 6 – تست و مدیریت برنامه
بیایید به برنامه دسترسی پیدا کنیم و از عملکرد آن اطمینان حاصل نماییم.
ابتدا http: // your_server_ip: 8080 را در یک مرورگر وب باز کنید ، با اعتباراتی که قبلاً انتخاب کرده اید وارد شوید و روی connect کلیک کنید.

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

اگر بر روی دسکتاپ سیاه رنگ کلیک راست کنید، باید منویی را مشاهده کنید که به شما امکان دسترسی به یک ترمینال را می دهد. اگر کلیک وسط کنید ​​، باید لیستی از پنجره ها را ببینید.

اکنون http://your_server_ip:8080/files/ را در یک مرورگر وب باز کنید. باید بتوانید به فایل های خود دسترسی پیدا کنید.

به صورت اختیاری ، می توانید http: // your_server_ip: 8080 / webdav / خود را در یک کلاینت WebDAV نصب کنید. باید بتوانید مستقیماً به فایل های خود دسترسی پیدا کرده و آن ها را تغییر دهید. اگر از گزینه Map network drive در ویندوز اکسپلورر استفاده می کنید ، باید برای اضافه کردنHTTPS از یک پروکسی معکوس استفاده کنید یا HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel را روی DWORD:2 تنظیم کنید.
در هر صورت ، برنامه GUI بومی شما اکنون برای استفاده از راه دور آماده است.
نتیجه
اکنون با موفقیت یک کانتینر Docker را برای Thunderbird تنظیم کرده اید و سپس با استفاده از Caddy ، دسترسی به آن را از طریق یک مرورگر وب پیکربندی کرده اید. در صورت نیاز به بروزرسانی برنامه خود ، کانتینرها را متوقف کنید ، docker rm thunderbird-app thunderbird-web را اجرای کنید، تصاویر را مجدد بسازید و سپس دستورات docker را از مراحل قبلی بالا مجدداً اجرا کنید. از آنجا که در یک حجم ذخیره می شود ، داده های شما همچنان حفظ می شوند.
اگر می خواهید در مورد دستورات اساسی Docker اطلاعات بیشتری کسب کنید ، می توانید این لینک آموزش یا این صفحه را بخوانید. برای استفاده طولانی مدت تر ، میتوانید HTTPS را برای امنیت بیشتر فعال کنید (برای این کار به دامنه ای نیاز دارید).
علاوه بر این ، اگر بیش از یک برنامه نصب کرده اید ، می توانید به جای شروع هر کانتینر به صورت دستی ، از Docker Compose یا Kubernetes استفاده کنید. و به یاد داشته باشید ، این آموزش می تواند به عنوان پایه ای برای اجرای سایر برنامه های لینوکس روی سرور شما استفاده شود ، از جمله:
⦁ Wine ، یک لایه سازگاری برای اجرای برنامه های ویندوز در لینوکس.
⦁ GIMP ، ویرایشگر تصویر منبع باز.
⦁ Cutter ، پلتفرم مهندسی معکوس منبع باز.
این گزینه آخر پتانسیل بسیار مهمی را برای کانتینرایزینگ و دسترسی از راه دور به برنامه های GUI ارائه می دهد. با استفاده از این ستاپ ، اکنون می توانید از سروری با توان محاسباتی بسیار بیشتر از آنچه به صورت محلی در دسترس دارید برای اجرای ابزارهای منبع فشرده مانند Cutter استفاده کنید.

 

 

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

دسترسی از راه دور به برنامه GUI با Docker در اوبونتو 18.04

راه اندازی سایت توسعه Jekyll در اوبونتو 20.04

نحوه راه اندازی سایت توسعه Jekyll در اوبونتو 18.04

نحوه نصب و استفاده از Docker Compose در اوبونتو 20.04

نحوه اجرای چند نسخه PHP بر روی یک سرور با استفاده از Apache و PHP-FPM در CentOS 8

نحوه نصب و استفاده از TimescaleDB در Ubuntu 20.04

نحوه نصب و راه اندازی Laravel با Docker Compose در اوبونتو 20.04

 

 

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

اگر به دنبال ایجاد یک وب سایت یا وبلاگ استاتیک (پایا) هستید ، Jekyll می تواند یک راه حل عالی باشد. Jekyll یک مولد سایت استاتیک منبع باز است که به زبان Ruby نوشته شده و امکان اجرای سریع دستوراتی را می دهد که به شما در مدیریت سایت شما از ابتدا تا استقرار تولید ، همه از خط فرمان کمک می کند. Jekyll از وبلاگ آگاه است و به دسته بندی ها ، پست ها و صفحه بندی هایی با طیف وسیعی از واردکنندگان در دسترس برای وارد کردن مطالب قبلی وبلاگ ، اولویت می دهد. اگر نیاز دارید که اغلب به صورت آفلاین کار کنید ، و ترجیح می دهید از ویرایشگرهای سبک برای فرم های وب جهت نگهداری محتوا استفاده کنید ، یا مایل به استفاده از کنترل نسخه برای ردیابی تغییرات در وب سایت خود هستید ، Jekyll می تواند آنچه را که برای تحقق اهداف خود نیاز دارید ، در اختیار شما قرار دهد.
در این آموزش ، ما یک سایت توسعه Jekyll را در Ubuntu 20.04 با محتوای تولید شده به صورت خودکار نصب خواهیم کرد. با نصب Jekyll ، می توانید یک سایت یا وبلاگ شخصی ایجاد کنید که در درجه اول با استفاده از فایل های علامت گذاری به عنوان و چند دستور Jekyll انجام می شود.
پیش نیازها
برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید:
• سرور مجازی Ubuntu 20.04 با یک کاربر غیر ریشه و دارای امتیازات sudo: می توانید در مورد نحوه تنظیم کاربر با این امتیازات در راهنمای ستاپ اولیه سرور مجازی برای اوبونتو 20.04 اطلاعات بیشتری کسب کنید.
پس از تکمیل این پیش نیاز ، آماده نصب Jekyll و متعلقات آن هستید.
مرحله 1 – نصب Jekyll
کار را با به روز کردن لیست بسته های خود شروع خواهیم کرد تا مطمئن شویم که جدیدترین اطلاعات را در مورد جدیدترین نسخه های بسته ها و متعلقات آنها داریم:
⦁ $ sudo apt update

در مرحله بعد ، بیایید make  و build-essential را نصب کنیم تا کتابخانه های Jekyll کامپایل شود ، و برای Ruby و کتابخانه های توسعه آن استفاده شود. ما در اینجا پرچم y را در نظر میگیریم که yes را تایید کنیم ، یعنی می خواهیم بسته ها را نصب کنیم و از تأیید اعلان خودداری کنیم.
⦁ $ sudo apt -y install make build-essential ruby ruby-dev

پس از اتمام این کار ، اجازه دهید دو خط به فایل .bashrc خود اضافه کنیم تا به مدیر بسته Ruby’s gem بگوییم که gems را در پوشه هوم کاربر ما قرار دهد. این کار از بروز مشکلات ناشی از نصب در سراسر سیستم جلوگیری می کند و در عین حال دستور jekyll  محلی را نیز به PATH کاربر اضافه می کند.
.bashrc را با یک ویرایشگر مورد نظر خود مانند nano باز کنید:
⦁ $ nano .bashrc

در انتهای فایل خطوط زیر را اضافه کنید:
.bashrc
# Ruby exports

export GEM_HOME=$HOME/gems
export PATH=$HOME/gems/bin:$PATH

فایل را ذخیره کنید و ببندید. برای فعال کردن خروجی ها ، دستور زیر را اجرا کنید:
⦁ $ source ~/.bashrc

پس از اتمام این کار ، از gem  برای نصب Jekyll خود و همچنین Bundler استفاده می کنیم که متعلقات gem  را مدیریت می کند. توجه داشته باشید که این کار ممکن است مدتی طول بکشد.
⦁ $ gem install jekyll bundler

در مرحله بعد ، مطمئن خواهیم شد که تنظیمات فایروال ما امکان ترافیک از طریق سرور مجازی وب توسعه Jekyll را فراهم می کند.
مرحله 2 – باز کردن فایروال
بیایید بررسی کنیم که آیا فایروال فعال است یا خیر. اگر چنین است ، اطمینان حاصل خواهیم کرد که ترافیک به سایت ما مجاز است ، بنابراین می توانیم سایت توسعه خود را در یک مرورگر وب مشاهده کنیم.
⦁ $ sudo ufw status

اگر با وضعیت غیرفعال مواجه شدید ، دستورات زیر را اجرا کنید.
ufw allow OpenSSH
sudo ufw enable

این کار باعث می شود فایروال شما در هنگام راه اندازی سیستم اجرا شود. ممکن است پیام های زیر را دریافت کنید (برای ادامه با ‘y ‘ تأیید کنید):
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

در مثال ما ، فقط SSH مجاز است:
Output
Status: active
To Action From
— —— —-
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

بسته به نحوه تنظیم فایروال تان ممکن است قوانین دیگری نیز در این زمینه داشته باشید یا اصلاً هیچ قانون فایروالی وجود نداشته باشد. از آنجا که فقط ترافیک SSH در این مورد مجاز است ، باید پورت 4000، پورت پیش فرض سرور مجازی توسعه Jekyll را باز کنیم:
⦁ $ sudo ufw allow 4000

اکنون قوانین فایروال ما باید موارد زیر را شامل شود:
Output
To Action From
— —— —-
OpenSSH ALLOW Anywhere
4000 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
4000 (v6) ALLOW Anywhere (v6)

اکنون با نصب نرم افزار و باز کردن پورت لازم ، آماده ایجاد سایت توسعه هستیم.
مرحله 3 – ایجاد یک سایت توسعه جدید
از دیرکتوری اصلی خود، از دستور Jekyll’s new برای ایجاد داربست برای سایتی در زیر مجموعه ای به نام www استفاده می کنیم:
⦁ $ cd ~

⦁ $ jekyll new www
دستور jekyll new برای نصب متعلقات لازم ، bundle install را شروع می کند ، سپس به صورت خودکار موضوعی با نام Minima را نصب می کند. پس از نصب موفق ، باید خروجی مانند زیر را دریافت کنید:
Output
New jekyll site installed in /home/sammy/www.

دستور جدید Jekyll دیرکتوری ها و فایل های زیر را ایجاد می کند:

├── 404.html
├── about.markdown
├── _config.yml
├── Gemfile
├── Gemfile.lock
├── index.markdown
├── _posts
│ └── 2020-05-29-welcome-to-jekyll.markdown
└── _site

این فایل های وب سایت واقعی نیستند. بلکه فایلهای منبعی هستند که Jekyll برای ایجاد سایت استاتیک از آنها استفاده خواهد کرد. Jekyll به نامهای خاص ، الگوهای نامگذاری و ساختارهای دیرکتوری متکی است تا منابع مختلف محتوا را تجزیه کند و آنها را در یک سایت استاتیک جمع کند. استفاده از ساختار موجود و پیگیری کنوانسیون های نامگذاری Jekyll در هنگام افزودن پست ها و صفحات جدید بسیار مهم است.
نکته: tree یک دستور مفید برای بازرسی ساختار فایل ها و دیرکتوری ها از خط فرمان است. می توانید آن را با دستور زیر نصب کنید:
⦁ $ sudo apt install tree

برای استفاده از آن ، cd را در دیرکتوری مورد نظر خود قرار دهید و tree را تایپ کنید و یا مسیر رسیدن به نقطه شروع را با tree /home/sammy/www ارائه کنید.
مرحله 4 – راه اندازی وب سرور مجازی Jekyll
سرور مجازی وب سبک Jekyll به منظور پشتیبانی از توسعه سایت با نظارت بر فایل ها در دیرکتوری و بازگرداندن خودکار سایت استاتیک هر زمان که تغییر ایجاد شود ، طراحی شده است.
از آنجا که ما در حال کار بر روی یک سرور مجازی از راه دور هستیم ، برای جستجوی سایت از دستگاه محلی خود ، آدرس هاست را مشخص خواهیم کرد. اگر در حال کار روی یک دستگاه محلی هستید ، می توانید jekyll service را بدون تنظیمات هاست اجرا کنید و با http: // localhost: 4000 وصل شوید.
⦁ $ cd ~/www

⦁ $ jekyll serve –host=203.0.113.0

Output of jekyll server
Configuration file: /home/sammy/www/_config.yml
Source: /home/sammy/www
Destination: /home/sammy/www/_site
Incremental build: disabled. Enable with –incremental
Generating…
done in 0.645 seconds.
Auto-regeneration: enabled for ‘/home/sammy/www’
Server address: http://203.0.113.0:4000/
Server running… press ctrl-c to stop.

هنگامی که jekyll serve را وادار به شروع کردیم ، Jekyll پیکربندی و فایل های محتوا را در یک دیرکتوری جدید ، _site تجزیه و شروع به ارائه محتوای موجود در آن پوشه _siteمیکند.
: …
├── 404.html
├── about.markdown
├── _config.yml
├── Gemfile
├── Gemfile.lock
├── index.markdown
├── _posts
│ └── 2020-05-29-welcome-to-jekyll.markdown
└── _site
├── 404.html
├── about
│ └── index.html
├── assets
│ ├── main.css
│ │ ├── main.css.map
│ └── minima-social-icons.svg
├── feed.xml
├── index.html
└── jekyll
└── update
└── 2020
└── 05
└── 29
└── welcome-to-jekyll.html

همچنین شروع به مشاهده تغییرات دیرکتوری فعلی ، www ، میکند. به محض ذخیره تغییر در یک پست یا صفحه ، سایت استاتیک به طور خودکار بازسازی می شود ، بنابراین مهم نیست که مستقیماً روی فایل های پوشه _site تغییری ایجاد نکنید.
اگر هنگام کار در سایت خود و در حین اجرای سرور مجازی توسعه در پیش زمینه ، این ترمینال را باز کنیم ، با اضافه کردن صفحات و پست ها و تغییر محتوا ، بازخورد فوری دریافت خواهیم کرد.
توجه: اگر در حال کار با یک سایت بزرگ هستید ، فعال کردن –incremental می تواند هر بار که تغییری به واسطه بازتولید فایل های تغییر یافته انجام میدهید، بازسازی را سرعت ببخشد اما ما برای این سایت کوچک به آن احتیاج نداریم. می توانید اطلاعات بیشتری در مورد این ویژگی آزمایشی در وب سایت Jekyll بدست آورید.
اکنون سایت در دسترس است. در یک مرورگر وب ، می توانیم از آن در آدرس سرور مجازی و پورت نمایش داده شده در خروجی حاصل از jekyll serve دیدن کنیم:

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

 

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

دسترسی از راه دور به برنامه GUI با Docker در اوبونتو 18.04

راه اندازی سایت توسعه Jekyll در اوبونتو 20.04

نحوه راه اندازی سایت توسعه Jekyll در اوبونتو 18.04

نحوه نصب و استفاده از Docker Compose در اوبونتو 20.04

نحوه اجرای چند نسخه PHP بر روی یک سرور با استفاده از Apache و PHP-FPM در CentOS 8

نحوه نصب و استفاده از TimescaleDB در Ubuntu 20.04

نحوه نصب و راه اندازی Laravel با Docker Compose در اوبونتو 20.04

 

 

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

  • behnam gol mohamadi
  • ۰
  • ۰

اگر به دنبال ایجاد یک وب سایت یا وبلاگ استاتیک (پایا) هستید ، Jekyll می تواند یک راه حل عالی باشد. Jekyll یک مولد سایت استاتیک منبع باز است که به زبان Ruby نوشته شده و امکان اجرای سریع دستوراتی را می دهد که به شما در مدیریت سایت شما از ابتدا تا استقرار تولید ، همه از خط فرمان کمک می کند. Jekyll از وبلاگ آگاه است و به دسته بندی ها ، پست ها و صفحه بندی هایی با طیف وسیعی از واردکنندگان در دسترس برای وارد کردن مطالب قبلی وبلاگ ، اولویت می دهد. اگر نیاز دارید که اغلب به صورت آفلاین کار کنید ، و ترجیح می دهید از ویرایشگرهای سبک برای فرم های وب جهت نگهداری محتوا استفاده کنید ، یا مایل به استفاده از کنترل نسخه برای ردیابی تغییرات در وب سایت خود هستید ، Jekyll می تواند آنچه را که برای تحقق اهداف خود نیاز دارید ، در اختیار شما قرار دهد.
در این آموزش ، ما یک سایت توسعه Jekyll را در Ubuntu 18.04 با محتوای تولید شده به صورت خودکار نصب خواهیم کرد. با نصب Jekyll ، می توانید یک سایت یا وبلاگ شخصی ایجاد کنید که در درجه اول با استفاده از فایل های علامت گذاری به عنوان و چند دستور Jekyll انجام می شود.
پیش نیازها
برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید:
• سرور مجازی Ubuntu 18.04 با یک کاربر غیر ریشه و دارای امتیازات sudo: می توانید در مورد نحوه تنظیم کاربر با این امتیازات در راهنمای ستاپ اولیه سرور مجازی برای اوبونتو 18.04 اطلاعات بیشتری کسب کنید.
پس از تکمیل این پیش نیاز ، آماده نصب Jekyll و متعلقات آن هستید.
مرحله 1 – نصب Jekyll
کار را با به روز کردن لیست بسته های خود شروع خواهیم کرد تا مطمئن شویم که جدیدترین اطلاعات را در مورد جدیدترین نسخه های بسته ها و متعلقات آنها داریم:
⦁ $ sudo apt update

در مرحله بعد ، بیایید make  و build-essential را نصب کنیم تا کتابخانه های Jekyll کامپایل شود ، و برای Ruby و کتابخانه های توسعه آن استفاده شود. ما در اینجا پرچم y را در نظر میگیریم که yes را تایید کنیم ، یعنی می خواهیم بسته ها را نصب کنیم و از تأیید اعلان خودداری کنیم.
⦁ $ sudo apt -y install make build-essential ruby ruby-dev

پس از اتمام این کار ، اجازه دهید دو خط به فایل .bashrc خود اضافه کنیم تا به مدیر بسته Ruby’s gem بگوییم که gems را در پوشه هوم کاربر ما قرار دهد. این کار از بروز مشکلات ناشی از نصب در سراسر سیستم جلوگیری می کند و در عین حال دستور jekyll  محلی را نیز به PATH کاربر اضافه می کند.
.bashrc را با یک ویرایشگر مورد نظر خود مانند nano باز کنید:
⦁ $ nano .bashrc

در انتهای فایل خطوط زیر را اضافه کنید:
.bashrc
# Ruby exports

export GEM_HOME=$HOME/gems
export PATH=$HOME/gems/bin:$PATH

فایل را ذخیره کنید و ببندید. برای فعال کردن خروجی ها ، دستور زیر را اجرا کنید:
⦁ $ source ~/.bashrc

پس از اتمام این کار ، از gem  برای نصب Jekyll خود و همچنین Bundler استفاده می کنیم که متعلقات gem  را مدیریت می کند. توجه داشته باشید که این کار ممکن است مدتی طول بکشد.
⦁ $ gem install jekyll bundler

در مرحله بعد ، مطمئن خواهیم شد که تنظیمات فایروال ما امکان ترافیک از طریق سرور مجازی وب توسعه Jekyll را فراهم می کند.
مرحله 2 – باز کردن فایروال
بیایید بررسی کنیم که آیا فایروال فعال است یا خیر. اگر فعال است ، اطمینان حاصل خواهیم کرد که ترافیک به سایت ما مجاز است ، بنابراین می توانیم سایت توسعه خود را در یک مرورگر وب مشاهده کنیم.
⦁ $ sudo ufw status

اگر با وضعیت غیرفعال مواجه شدید ، دستورات زیر را اجرا کنید.
ufw allow OpenSSH
sudo ufw enable

این کار باعث می شود فایروال شما در هنگام راه اندازی سیستم اجرا شود. ممکن است پیام های زیر را دریافت کنید (برای ادامه با ‘y ‘ تأیید کنید):
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

در مثال ما ، فقط SSH مجاز است:
Output
Status: active
To Action From
— —— —-
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

بسته به نحوه تنظیم فایروال تان ممکن است قوانین دیگری نیز در این زمینه داشته باشید یا اصلاً هیچ قانون فایروالی وجود نداشته باشد. از آنجا که فقط ترافیک SSH در این مورد مجاز است ، باید پورت 4000، پورت پیش فرض سرور مجازی توسعه Jekyll را باز کنیم:
⦁ $ sudo ufw allow 4000

اکنون قوانین فایروال ما باید موارد زیر را شامل شود:
Output
To Action From
— —— —-
OpenSSH ALLOW Anywhere
4000 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
4000 (v6) ALLOW Anywhere (v6)

اکنون با نصب نرم افزار و باز کردن پورت لازم ، آماده ایجاد سایت توسعه هستیم.
مرحله 3 – ایجاد یک سایت توسعه جدید
از دیرکتوری اصلی خود، از دستور Jekyll’s new برای ایجاد داربست برای سایتی در زیر مجموعه ای به نام www استفاده می کنیم:
⦁ $ cd ~

⦁ $ jekyll new www
دستور jekyll new برای نصب متعلقات لازم ، bundle install را شروع می کند ، سپس به صورت خودکار یک تم با نام Minima را نصب می کند. پس از نصب موفق ، باید خروجی مانند زیر را دریافت کنید:
Output
New jekyll site installed in /home/sammy/www.

دستور new  در Jekyll دیرکتوری ها و فایل های زیر را ایجاد می کند:

├── 404.html
├── about.markdown
├── _config.yml
├── Gemfile
├── Gemfile.lock
├── index.markdown
├── _posts
│ └── 2020-05-29-welcome-to-jekyll.markdown
└── _site

این فایل های وب سایت واقعی نیستند. بلکه فایلهای منبعی هستند که Jekyll برای ایجاد سایت استاتیک از آنها استفاده خواهد کرد. Jekyll به نامهای خاص ، الگوهای نامگذاری و ساختارهای دیرکتوری متکی است تا منابع مختلف محتوا را تجزیه کند و آنها را در یک سایت استاتیک جمع کند. استفاده از ساختار موجود و پیگیری کنوانسیون های نامگذاری Jekyll در هنگام افزودن پست ها و صفحات جدید بسیار مهم است.
نکته: tree یک دستور مفید برای بازرسی ساختار فایل ها و دیرکتوری ها از خط فرمان است. می توانید آن را با دستور زیر نصب کنید:
⦁ $ sudo apt install tree

برای استفاده از آن ، cd را در دیرکتوری مورد نظر خود قرار دهید و tree را تایپ کنید و یا مسیر رسیدن به نقطه شروع را با tree /home/sammy/www ارائه کنید.
مرحله 4 – راه اندازی وب سرور مجازی Jekyll
سرور مجازی وب سبک Jekyll به منظور پشتیبانی از توسعه سایت با نظارت بر فایل ها در دیرکتوری و بازگرداندن خودکار سایت استاتیک هر زمان که تغییر ایجاد شود ، طراحی شده است.
از آنجا که ما در حال کار بر روی یک سرور مجازی از راه دور هستیم ، برای جستجوی سایت از دستگاه محلی خود ، آدرس هاست را مشخص خواهیم کرد. اگر در حال کار روی یک دستگاه محلی هستید ، می توانید jekyll service را بدون تنظیمات هاست اجرا کنید و با http: // localhost: 4000 وصل شوید.
⦁ $ cd ~/www

⦁ $ jekyll serve –host=203.0.113.0

Output of jekyll server
Configuration file: /home/sammy/www/_config.yml
Source: /home/sammy/www
Destination: /home/sammy/www/_site
Incremental build: disabled. Enable with –incremental
Generating…
done in 0.645 seconds.
Auto-regeneration: enabled for ‘/home/sammy/www’
Server address: http://203.0.113.0:4000/
Server running… press ctrl-c to stop.

هنگامی که jekyll serve را وادار به شروع کردیم ، Jekyll پیکربندی و فایل های محتوا را در یک دیرکتوری جدید ، _site تجزیه و شروع به ارائه محتوای موجود در آن پوشه _siteمیکند.

├── 404.html
├── about.markdown
├── _config.yml
├── Gemfile
├── Gemfile.lock
├── index.markdown
├── _posts
│ └── 2020-05-29-welcome-to-jekyll.markdown
└── _site
├── 404.html
├── about
│ └── index.html
├── assets
│ ├── main.css
│ │ ├── main.css.map
│ └── minima-social-icons.svg
├── feed.xml
├── index.html
└── jekyll
└── update
└── 2020
└── 05
└── 29
└── welcome-to-jekyll.html

همچنین شروع به مشاهده تغییرات دیرکتوری فعلی ، www ، میکند. به محض ذخیره تغییر در یک پست یا صفحه ، سایت استاتیک به طور خودکار بازسازی می شود ، بنابراین مهم نیست که مستقیماً روی فایل های پوشه _site تغییری ایجاد نکنید.
اگر هنگام کار در سایت خود و در حین اجرای سرور مجازی توسعه در پیش زمینه ، این ترمینال را باز کنیم ، با اضافه کردن صفحات و پست ها و تغییر محتوا ، بازخورد فوری دریافت خواهیم کرد.
توجه: اگر در حال کار با یک سایت بزرگ هستید ، فعال کردن –incremental می تواند هر بار که تغییری به واسطه بازتولید فایل های تغییر یافته انجام میدهید، بازسازی را سرعت ببخشد اما ما برای این سایت کوچک به آن احتیاج نداریم. می توانید اطلاعات بیشتری در مورد این ویژگی آزمایشی در وب سایت Jekyll بدست آورید.
اکنون سایت در دسترس است. در یک مرورگر وب ، می توانیم از آن در آدرس سرور مجازی و پورت نمایش داده شده در خروجی حاصل از jekyll serve دیدن کنیم:

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

 

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

دسترسی از راه دور به برنامه GUI با Docker در اوبونتو 18.04

راه اندازی سایت توسعه Jekyll در اوبونتو 20.04

نحوه راه اندازی سایت توسعه Jekyll در اوبونتو 18.04

نحوه نصب و استفاده از Docker Compose در اوبونتو 20.04

نحوه اجرای چند نسخه PHP بر روی یک سرور با استفاده از Apache و PHP-FPM در CentOS 8

نحوه نصب و استفاده از TimescaleDB در Ubuntu 20.04

نحوه نصب و راه اندازی Laravel با Docker Compose در اوبونتو 20.04

 

 

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

Docker روند مدیریت فرآیندهای برنامه در کانتینرها را ساده می کند. در حالی که کانتینرها از جهات خاصی شبیه به ماشین های مجازی هستند ، اما سبک ترند و با منابع سازگاری دارند. این ویژگی به توسعه دهندگان اجازه می دهد یک محیط برنامه را به چندین سرویس مجزا تقسیم کنند.
برای برنامه های کاربردی وابسته به چندین سرویس ، مرتب کردن همه کانتینرها را برای راه اندازی ، برقراری ارتباط و خاموش کردن آن ها با هم می توانند به سرعت مشکل ساز شود. Docker Compose ابزاری است که به شما امکان می دهد محیط های برنامه چند کانتینری را بر اساس تعاریفی که در یک فایل YAML تعیین شده است ، اجرا کنید. با استفاده از تعاریف سرویس ، محیط های کاملاً قابل تنظیم با چندین کانتینر را ایجاد می کند که می توانند شبکه ها و حجم داده ها را به اشتراک بگذارند.
در این راهنما ، نحوه نصب Docker Compose روی سرور مجازی Ubuntu 20.04 و چگونگی شروع استفاده از این ابزار را نشان خواهیم داد.
پیش نیازها
برای دنبال کردن این مقاله ، به موارد زیر نیاز دارید:
⦁ دسترسی به یک دستگاه محلی یا سرور مجازی توسعه Ubuntu 20.04 به عنوان یک کاربر غیر ریشه و دارای امتیازات sudo. اگر از سرور مجازی راه دور استفاده می کنید ، توصیه می شود یک فایروال فعال نصب شده داشته باشید. برای انجام این کار ، لطفاً به راهنمای راه اندازی اولیه سرور مجازی برای اوبونتو 20.04 مراجعه کنید.
⦁ Docker نصب شده بر روی سرور مجازی یا دستگاه محلی شما ، طبق مراحل 1 و 2 نحوه نصب و استفاده از Docker در اوبونتو 20.04.
مرحله 1 – نصب Docker Compose
برای اطمینان از به روزترین نسخه پایدار Docker Compose ، این نرم افزار را از مخزن رسمی آن Github دانلود خواهیم کرد.
ابتدا آخرین نسخه موجود در صفحه نسخه های آنها را تأیید کنید. در زمان نوشتن این مقاله، جدیدترین نسخه پایدار 1.26.0 است.
دستور زیر نسخه 1.26.0 را دانلود کرده و فایل اجرایی را در / usr / local / bin / docker-compose ذخیره می کند ، که این نرم افزار را در سطح جهانی به صورت docker-compose در دسترس خواهد کرد:
⦁ $ sudo curl -L “https://github.com/docker/compose/releases/

download/1.26.0/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose

سپس ، مجوزهای صحیح را تنظیم کنید تا دستور docker-compose قابل اجرا باشد:
⦁ $ sudo chmod +x /usr/local/bin/docker-compose

برای تأیید موفقیت آمیز نصب ، می توانید این دستور را اجرا کنید:
⦁ $ docker-compose –version

خروجی مشابه این را مشاهده خواهید کرد:
Output
docker-compose version 1.26.0, build 8a1c60f6

Docker Compose اکنون با موفقیت روی سیستم شما نصب شده است. در بخش بعدی خواهیم دید که چگونه می توان فایل docker-compose.yml را تنظیم کرد و با استفاده از این ابزار ، یک محیط کانتینر را تنظیم و اجرا کرد.
مرحله 2 – تنظیم فایل docker-compose.yml
برای نشان دادن نحوه تنظیم فایل docker-compose.yml و کار با Docker Compose ، با استفاده از تصویر رسمی Nginx از Docker Hub ، رجیستری عمومی Docker ، یک محیط وب سرور مجازی ایجاد خواهیم کرد. این محیط حاوی یک فایل HTML ثابت است.
با ایجاد یک دیرکتوری جدید در پوشه هوم خود ، شروع به کار کنید و سپس به داخل آن بروید:
⦁ $ mkdir ~/compose-demo

⦁ $ cd ~/compose-demo
در این دیرکتوری ، یک پوشه برنامه را تنظیم کنید تا به عنوان ریشه سند برای محیط Nginx شما باشد:
⦁ $ mkdir app

با استفاده از ویرایشگر متن مورد نظر خود ، یک فایل جدید index.html در پوشه برنامه ایجاد کنید:
⦁ $ nano app/index.html

محتوای زیر را در این فایل قرار دهید:
~/compose-demo/app/index.html
<!doctype html>
<html lang=”en”>
<head>
<meta charset=”utf-8″>
<title>Docker Compose Demo</title>
<link rel=”stylesheet” href=”https://cdn.jsdelivr.net/gh/

kognise/water.css@latest/dist/dark.min.css”>
</head>
<body>

<h1>This is a Docker Compose Demo Page.</h1>
<p>This content is being served by an Nginx container.</p>

</body>
</html>

هنگام کار ، فایل را ذخیره کنید و ببندید. اگر از nano استفاده می کنید ، می توانید با تایپ کردن CTRL + X ، سپس Y این کار را انجام دهید و برای تایید ENTER را فشار دهید.
سپس ، فایل docker-compose.yml را ایجاد کنید:
⦁ $ nano docker-compose.yml

محتوای زیر را در فایل docker-compose.yml خود قرار دهید:
docker-compose.yml
version: ‘2.0’
services:
web:
image: nginx:alpine
ports:
– “8000:80”
volumes:
– ./app:/usr/share/nginx/html

فایل docker-compose.yml معمولاً با تعریف نسخه شروع می شود. و به Docker Compose می گوید که کدام نسخه پیکربندی مورد استفاده ماست.
پس از آن بلوک services  را خواهیم داشت که سرویس ها را تنظیم کرده ایم و بخشی از این محیط هستند. در مورد ما ، یک سرویس واحد به نام web داریم. این سرویس از تصویر nginx: alpine استفاده می کند و با تغییر مسیر یک پورت با دستور ports تنظیمات را انجام می دهد. کلیه درخواستهای پورت 8000 دستگاه هاست (سیستمی که Docker Compose را در آن اجرا می کنید) به پورت 80 ، محل اجرای Nginx به کانتینر وب هدایت می شوید.
دستورالعمل volumes باعث ایجاد یک حجم مشترک بین دستگاه هاست و کانتینر می شود. این پوشه برنامه محلی را با کانتینر به اشتراک می گذارد ، و حجم آن در / usr / share / nginx / html در داخل کانتینر قرار خواهد گرفت ، که سپس ریشه سند پیش فرض را برای Nginx بازنویسی می کند.
فایل را ذخیره کنید و ببندید.
ما یک صفحه نمایشی و یک فایل docker-compose.yml برای ایجاد یک محیط وب سرور مجازی کانتینرایز شده ایجاد کرده ایم که آن را ارائه میدهد. در مرحله بعدی ، این محیط را با Docker Compose همراه خواهیم کرد.
مرحله 3 – اجرای Docker composer
با قرارگیری فایل docker-compose.yml در جای خود، می توانیم Docker Compose را اجرا کنیم تا محیط خود را راه اندازی کنیم. دستور زیر تصاویر لازم Docker را دانلود می کند ، یک کانتینر برای سرویس وب ایجاد می کند و محیط کانتینرایز شده را در حالت پس زمینه اجرا می کند:
⦁ $ docker-compose up -d

Docker Compose ابتدا تصویر تعریف شده را در سیستم محلی شما جستجو می کند ، و اگر نتواند تصویر را پیدا کند ، تصویر را از Docker Hub دانلود می کند. خروجی مانند این را خواهید دید:
Output
Creating network “compose-demo_default” with the default driver
Pulling web (nginx:alpine)…
alpine: Pulling from library/nginx
cbdbe7a5bc2a: Pull complete
10c113fb0c77: Pull complete
9ba64393807b: Pull complete
c829a9c40ab2: Pull complete
61d685417b2f: Pull complete
Digest: sha256:57254039c6313fe8c53f1acbf15657

ec9616a813397b74b063e32443427c5502
Status: Downloaded newer image for nginx:alpine
Creating compose-demo_web_1 … done

اکنون محیط شما در پس زمینه اجرا میشود. برای تأیید فعال بودن کانتینر ، می توانید این دستور را اجرا کنید:
⦁ $ docker-compose ps

این دستور اطلاعاتی را در مورد کانتینرهای در حال اجرا و وضعیت آنها و همچنین تغییر مسیرهای فعلی پورت در اختیار شما قرار می دهد:
Output
Name Command State Ports
———————————————————————————-
compose-demo_web_1 /docker-entrypoint.sh ngin … Up 0.0.0.0:8000->80/tcp

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

از آنجا که حجم اشتراکی که شما در فایل docker-compose.yml تنظیم کرده اید ، فایل های پوشه app شما را با ریشه سند کانتینر همگام می کند. اگر تغییری در فایل index.html ایجاد کنید ، آن تغییرات به طور خودکار توسط کانتینر جمع می شوند و به این ترتیب هنگام دانلود مجدد صفحه ، در مرورگر شما منعکس می شود.
در مرحله بعد ، خواهید دید که چگونه محیط کانتینرایز شده خود را با دستورات Docker Compose مدیریت کنید.
مرحله 4 – آشنایی با دستورات Docker Compose
مشاهده کردید که چگونه یک فایل docker-compose.yml تنظیم کنید و محیط خود را با تنظیم docker راه اندازی نمایید. اکنون خواهید دید که چگونه از دستورات Docker Compose برای مدیریت و تعامل با محیط کانتینرایز خود استفاده کنید.
برای بررسی ورود های تولید شده توسط کانتینر Nginx ، می توانید از دستور logs استفاده کنید:
⦁ $ docker-compose logs

خروجی مشابه این را مشاهده خواهید کرد:
Output
Attaching to compose-demo_web_1
web_1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
web_1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
web_1 | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
web_1 | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
web_1 | /docker-entrypoint.sh: Configuration complete; ready for start up
web_1 | 172.22.0.1 – – [02/Jun/2020:10:47:13 +0000] “GET / HTTP/1.1” 200 353 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36” “-”

اگر می خواهید بدون تغییر وضعیت فعلی کانتینرهای خود ، اجرای محیط را متوقف کنید ، می توانید از دستور زیر استفاده کنید:
⦁ $ docker-compose pause

Output
Pausing compose-demo_web_1 … done

برای از سرگیری اجرا پس از صدور توقف:
⦁ $ docker-compose unpause

Output
Unpausing compose-demo_web_1 … done

فرمان stop اجرای کانتینرها را خاتمه می بخشد ، اما داده های مرتبط با کانتینرهای شما را از بین نمی برد:
⦁ $ docker-compose stop

Output
Stopping compose-demo_web_1 … done

اگر می خواهید کانتینرها ، شبکه ها و حجم های مرتبط با این محیط کانتینرایز شده را حذف کنید ، از دستور پایین استفاده کنید:
⦁ $ docker-compose down

Output
Removing compose-demo_web_1 … done
Removing network compose-demo_default

توجه کنید که این دستور تصویر اصلی را که توسط Docker Compose برای گردش محیط شما ساخته شده است (در مورد ما nginx: alpine) را حذف نمی کند. به این ترتیب ، هر زمان که محیط خود را دوباره با یک docker-compose up تلفیق کنید ، این روند بسیار سریعتر خواهد شد زیرا تصویر در سیستم شما موجود است.
در صورتی که می خواهید تصویر پایه را از سیستم خود نیز حذف کنید ، می توانید از این دستور استفاده کنید:
⦁ $ docker image rm nginx:alpine

Output
Untagged: nginx:alpine
Untagged: nginx@sha256:b89a6ccbda39576ad23fd079978c

967cecc6b170db6e7ff8a769bf2259a71912
Deleted: sha256:7d0cdcc60a96a5124763fddf5d5

34d058ad7d0d8d4c3b8be2aefedf4267d0270
Deleted: sha256:05a0eaca15d731e0029a7604ef54

f0dda3b736d4e987e6ac87b91ac7aac03ab1
Deleted: sha256:c6bbc4bdac396583641cb44cd3512

6b2c195be8fe1ac5e6c577c14752bbe9157
Deleted: sha256:35789b1e1a362b0da8392ca7d5759

ef08b9a6b7141cc1521570f984dc7905eb6
Deleted: sha256:a3efaa65ec344c882fe5d543a392a5

4c4ceacd1efd91662d06964211b1be4c08
Deleted: sha256:3e207b409db364b595ba862cdc12be9

6dcdad8e36c59a03b7b3b61c946a5741a

توجه: لطفاً برای اطلاعات بیشتر در مورد دستورات Docker ، به راهنمای ما در مورد نحوه نصب و استفاده از Docker مراجعه کنید.
نتیجه
در این راهنما ، ما شاهد نحوه نصب Docker Compose و تنظیم یک محیط کانتینرایز شده بر اساس تصویر سرور مجازی وب Nginx بودیم. همچنین دیدیم که چگونه می توان این محیط را با استفاده از دستورات Compose مدیریت کرد.
برای مطالعه مرجع کامل در مورد کلیه دستورات docker-compose موجود ، مطالب رسمی را بررسی کنید.

 

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

دسترسی از راه دور به برنامه GUI با Docker در اوبونتو 18.04

راه اندازی سایت توسعه Jekyll در اوبونتو 20.04

نحوه راه اندازی سایت توسعه Jekyll در اوبونتو 18.04

نحوه نصب و استفاده از Docker Compose در اوبونتو 20.04

نحوه اجرای چند نسخه PHP بر روی یک سرور با استفاده از Apache و PHP-FPM در CentOS 8

نحوه نصب و استفاده از TimescaleDB در Ubuntu 20.04

نحوه نصب و راه اندازی Laravel با Docker Compose در اوبونتو 20.04

 

 

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

سرور مجازی وب Apache از هاست های مجازی برای مدیریت دامنه های متعدد بر روی یک نمونه واحد استفاده می کند. به طور مشابه ، PHP-FPM از یک Daemon برای مدیریت چندین نسخه PHP در یک نمونه واحد استفاده می کند. می توانید از Apache و PHP-FPM با هم استفاده کنید تا هاست چند برنامه وب PHP باشید که هر یک از نسخه متفاوت PHP استفاده میکند اما همه روی یک سرور مجازی یکسان و به طور همزمان کار کنند. این ویژگی از این لحاظ مفید است که برنامه های مختلف ممکن است به نسخه های مختلف PHP نیاز داشته باشند ، اما برخی از پشته های سرور مجازی ، مانند پشته LAMP که به طور معمول پیکربندی شده است ، فقط می توانند یکی را مدیریت کنند. ترکیب Apache با PHP-FPM همچنین یک راه حل مقرون به صرفه تر از میزبانی هر برنامه به طور خاص است.
PHP-FPM همچنین گزینه های پیکربندی برای ورود به stderr و stdout ، ریستارت های اضطراری و spawning روند تطبیقی ​​را ارائه می دهد ، که برای سایت های دارای بار سنگین مفید است. در حقیقت ، استفاده از Apache با PHP-FPM یکی از بهترین پشته ها برای میزبانی برنامه های PHP ، به خصوص از لحاظ عملکرد میباشد.
در این آموزش دو سایت PHP را به صورت یکجا تنظیم خواهید کرد. هر سایت از دامنه خود استفاده می کند و هر دامنه نسخه PHP خود را مستقر می کند. اولی ، site1.your_domain ، PHP 7.3 را مستقر می کند. دومی ، site2.your_domain ، PHP 7.4 را مستقر می کند.
پیش نیازها
⦁ یک سرور مجازی CentOS 8 با حداقل 1 گیگابایت رم که طبق راهنمای ستاپ اولیه سرور مجازی تنظیم شده باشد ، شامل کاربر sudo غیر ریشه و فایروال باشد.
⦁ وب سرور مجازی Apache که با دنبال کردن آموزش نحوه نصب وب سرور مجازی Apache در CentOS 8 راه اندازی شود.
⦁ نام دامنه پیکربندی شده برای اشاره به سرور مجازی CentOS 8 شما. برای اهداف این آموزش ، از دو زیر دامنه استفاده خواهیم کرد که هر یک با یک رکورد A در تنظیمات DNS ما مشخص شده اند: site1.your_domain و site2.your_domain.
مرحله 1 – نصب نسخه های 7.3 و 7.4 PHP با PHP-FPM
با تکمیل پیش نیازها، اکنون نسخه های 7.3 و 7.4 PHP و همچنین PHP-FPM و چند افزونه دیگر را را نصب خواهید کرد. برای نصب چندین نسخه PHP به نصب و فعال سازی مخزنRemi روی سیستم خود احتیاج خواهید داشت. که همچنین آخرین نسخه های پشته PHP را روی سیستم CentOS 8 ارائه میکند.
با دستورات زیر میتوانید هر دو مخزن را به سیستم خود اضافه کنید:
⦁ $ sudo dnf install http://rpms.Remirepo.net/enterprise/Remi-release-8.rpm

دستور فوق مخزن EPEL را نیز فعال میکند.
ابتدا بیابید جستجو کنیم که نسخه های PHP 7 در Remi در دسترس هستند:
⦁ $ sudo dnf module list php

خروجی مانند این را خواهید دید:
Output
Remi’s Modular repository for Enterprise Linux 8 – x86_64
Name Stream Profiles Summary
php remi-7.2 common [d], devel, minimal PHP scripting language
php remi-7.3 common [d], devel, minimal PHP scripting language
php remi-7.4 common [d], devel, minimal PHP scripting language

سپس با دستور زیر، ماژول پیش فرض PHP را غیر فعال و ماژول PHP7.3 در Remi را فعال کنید:
⦁ $ sudo dnf module reset php

⦁ $ sudo dnf module enable php:remi-7.3
⦁ $

بیایید php73 و php73-php-fpm را نصب کنید:
⦁ $ sudo dnf install php73 php73-php-fpm -y

⦁ php73 متابسته ای است که برای اجرای برنامه های PHP استفاده می شود.
⦁ php73-php-fpm مترجم Fast Process Manager را ارائه می کند که به عنوان یک Daemon اجرا می شود و درخواست های Fast / CGI را دریافت می کند.
اکنون فرایند را برای نسخه PHP 7.4 تکرار کنید. php74 و php74-php-fpm را نصب کنید.
⦁ $ sudo dnf module reset php

⦁ $ sudo dnf module enable php:remi-7.4

⦁ $ sudo dnf install php74 php74-php-fpm -y


پس از نصب هر دو نسخه PHP ، با دستورات زیر سرویس php73-php-fpm را شروع و آن را فعال کنید تا در زمان بوت شدن آغاز شود:
⦁ $ sudo systemctl start php73-php-fpm

⦁ $ sudo systemctl enable php73-php-fpm

در مرحله بعدی ، وضعیت سرویس php73-php-fpm خود را با دستور زیر تأیید کنید:
⦁ $ sudo systemctl status php73-php-fpm

خروجی مانند این را خواهید دید:
⦁ ● php73-php-fpm.service – The PHP FastCGI Process Manager

⦁ Loaded: loaded (/usr/lib/systemd/system/php73-php-fpm.service; enabled; vendor preset: disabled)

⦁ Active: active (running) since Wed 2020-04-22 05:14:46 UTC; 52s ago

⦁ Main PID: 14206 (php-fpm)

⦁ Status: “Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec”

⦁ Tasks: 6 (limit: 5059)

⦁ Memory: 25.9M

⦁ CGroup: /system.slice/php73-php-fpm.service

⦁ ├─14206 php-fpm: master process (/etc/opt/remi/php73/php-fpm.conf)

⦁ ├─14207 php-fpm: pool www

⦁ ├─14208 php-fpm: pool www

⦁ ├─14209 php-fpm: pool www

⦁ ├─14210 php-fpm: pool www

⦁ └─14211 php-fpm: pool www



⦁ Apr 22 05:14:46 centos-s-1vcpu-1gb-nyc3-01 systemd[1]: Starting The PHP FastCGI Process Manager…

⦁ Apr 22 05:14:46 centos-s-1vcpu-1gb-nyc3-01 systemd[1]: Started The PHP FastCGI Process Manager.

با تکرار این فرایند ، سرویس php74-php-fpm را راه اندازی کنید و آن را فعال کنید تا از بوت شروع شود:
⦁ $ sudo systemctl start php74-php-fpm

⦁ $ sudo systemctl enable php74-php-fpm

در مرحله بعد ، وضعیت سرویس php74-php-fpm خود را تأیید کنید:
⦁ $ sudo systemctl status php74-php-fpm

خروجی دیگری مانند این را مشاهده خواهید کرد:
⦁ php74-php-fpm.service – The PHP FastCGI Process Manager

⦁ Loaded: loaded (/usr/lib/systemd/system/php74-php-fpm.service; enabled; vendor preset: disabled)

⦁ Active: active (running) since Wed 2020-04-22 05:16:16 UTC; 23s ago

⦁ Main PID: 14244 (php-fpm)

⦁ Status: “Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec”

⦁ Tasks: 6 (limit: 5059)

⦁ Memory: 18.8M

⦁ CGroup: /system.slice/php74-php-fpm.service

⦁ ├─14244 php-fpm: master process (/etc/opt/remi/php74/php-fpm.conf)

⦁ ├─14245 php-fpm: pool www

⦁ ├─14246 php-fpm: pool www

⦁ ├─14247 php-fpm: pool www

⦁ ├─14248 php-fpm: pool www

⦁ └─14249 php-fpm: pool www



⦁ Apr 22 05:16:15 centos-s-1vcpu-1gb-nyc3-01 systemd[1]: Starting The PHP FastCGI Process Manager…

⦁ Apr 22 05:16:16 centos-s-1vcpu-1gb-nyc3-01 systemd[1]: Started The PHP FastCGI Process Manager.

در این مرحله شما دو نسخه PHP را روی سرور مجازی خود نصب کرده اید. در مرحله بعد ، برای هر وب سایتی که می خواهید مستقر کنید ، یک ساختار دایرکتوری ایجاد خواهید کرد.
مرحله 2 – ایجاد ساختارهای دیرکتوری برای هر دو وب سایت
در این بخش یک دایرکتوری ریشه سند و یک صفحه ایندکس برای هر یک از وب سایت ها ایجاد می کنید.
ابتدا دایرکتوری های ریشه مستندات را برای هر دوی site1.yourdomain و site2.yourdomain ایجاد کنید:
⦁ $ sudo mkdir /var/www/site1.your_domain

⦁ $ sudo mkdir /var/www/site2.your_domain

به طور پیش فرض ، وب سرور مجازی Apache به عنوان یک کاربر Apache و یک گروه Apache اجرا می شود. برای اطمینان از مالکیت و مجوزهای صحیح دیرکتوری های ریشه وب سایت خود این دستورات را اجرا کنید:
⦁ $ sudo chown -R apache:apache /var/www/site1.your_domain

⦁ $ sudo chown -R apache:apache /var/www/site2.your_domain

⦁ $ sudo chmod -R 755 /var/www/site1.your_domain

⦁ $ sudo chmod -R 755 /var/www/site2.your_domain

دستور chown مالکیت دو دایرکتوری وب سایت شما را به کاربر apache و گروه apache تغییر می دهد. دستور chmod مجوزهای مرتبط با آن کاربر و گروه و سایر افراد را تغییر می دهد.
در مرحله بعد یک فایل info.php را در هر فهرست ریشه وب سایت ایجاد خواهید کرد. با این کار اطلاعات نسخه PHP هر وب سایت نمایش داده می شود. با site1 شروع کنید:
⦁ $ sudo vi /var/www/site1.your_domain/info.php

خط زیر را اضافه کنید:
/var/www/site1.your_domain/info.php
<?php phpinfo(); ?>

فایل را ذخیره کنید و ببندید. اکنون فایل info.php که در site2 ایجاد کرده اید را کپی کنید:
⦁ $ sudo cp /var/www/site1.your_domain/info.php /var/www/site2.your_domain/info.php

سرور مجازی وب شما اکنون دارای دیرکتوری های ریشه سند است که هر سایت برای ارائه داده ها به بازدید کنندگان به آن نیاز دارد. در مرحله بعدی ، وب سرور مجازی Apache خود را پیکربندی خواهید کرد تا با دو نسخه مختلف PHP کار کند.
مرحله 3 – پیکربندی Apache برای هر دو وب سایت
در این بخش دو فایل پیکربندی هاست مجازی ایجاد خواهید کرد. با این کار دو وب سایت شما قادر خواهند بود همزمان با دو نسخه مختلف PHP کار کنند.
برای اینکه Apache بتواند این محتوا را ارائه دهد ، باید یک فایل هاست مجازی با دستورالعمل های صحیح ایجاد کنید. دو فایل پیکربندی هاست مجازی جدید را درون دیرکتوری /etc/httpd/conf.d/ ایجاد خواهید کرد.
ابتدا یک فایل پیکربندی هاست مجازی جدید برای وب سایت site1.your_domain ایجاد کنید. در اینجا Apache را برای ارائه محتوا با استفاده از PHP 7.3 هدایت می کنید:
⦁ $ sudo vi /etc/httpd/conf.d/site1.your_domain.conf

محتوای زیر را اضافه کنید. اطمینان حاصل کنید که مسیر دیرکتوری وب سایت ، نام سرور مجازی ، پورت و نسخه PHP با تنظیمات شما مطابقت دارد:
/etc/httpd/conf.d/site1.your_domain.conf
<VirtualHost *:80>
ServerAdmin admin@site1.your_domain
ServerName site1.your_domain
DocumentRoot /var/www/site1.your_domain
DirectoryIndex info.php
ErrorLog /var/log/httpd/site1.your_domain-error.log
CustomLog /var/log/httpd/site1.your_domain-access.log combined

<IfModule !mod_php7.c>
<FilesMatch \.(php|phar)$>
SetHandler “proxy:unix:/var/opt/remi/php73/run/php-fpm/www.sock|fcgi://localhost”
</FilesMatch>
</IfModule>

</VirtualHost>

برای DocumentRoot مسیر دایرکتوری ریشه وب سایت خود را مشخص می کنید. برای ServerAdmin ایمیلی را اضافه می کنید که مدیر سایت your_domain بتواند به آن دسترسی پیدا کند. برای ServerName آدرس url زیر دامنه خود را اضافه می کنید. برای SetHandler فایل سوکت PHP-FPM را برای PHP 7.3 مشخص می کنند.
فایل را ذخیره کنید و ببندید.
در مرحله بعدی ، یک فایل پیکربندی هاست مجازی جدید برای وب سایت site2.your_domain ایجاد کنید. برای استقرار PHP 7.4 این زیر دامنه را مشخص می کنید:
⦁ $ sudo vi /etc/httpd/conf.d/site2.your_domain.conf

محتوای زیر را اضافه کنید. دوباره مطمئن شوید که مسیر دیرکتوری وب سایت ، نام سرور مجازی ، نسخه PHP با اطلاعات منحصر به فرد شما مطابقت دارد:
/etc/httpd/conf.d/site2.your_domain.conf
<VirtualHost *:80>
ServerAdmin admin@site2.your_domain
ServerName site2.your_domain
DocumentRoot /var/www/site2.your_domain
DirectoryIndex info.php
ErrorLog /var/log/httpd/site2.your_domain-error.log
CustomLog /var/log/httpd/site2.your_domain-access.log combined
<IfModule !mod_php7.c>
<FilesMatch \.(php|phar)$>
SetHandler “proxy:unix:/var/opt/remi/php74/run/php-fpm/www.sock|fcgi://localhost”
</FilesMatch>
</IfModule>

</VirtualHost>

پس از اتمام فایل را ذخیره کنید و ببندید. سپس فایل پیکربندی Apache را برای هرگونه خطای نحوی بررسی کنید:
⦁ $ sudo apachectl configtest

خروجی زیر را مشاهده خواهید کرد :
Output
⦁ Syntax OK

در آخر ، سرویس Apache را ریستارت کنید تا تغییرات خود را به اجرا درآورید:
⦁ $ sudo systemctl restart httpd

اکنون که Apache را برای ارائه هر سایت پیکربندی کرده اید ، آن ها را آزمایش می کنید تا مطمئن شوید که نسخه های مناسب PHP در حال اجرا هستند.
مرحله 4 – آزمایش هر دو وب سایت
در این مرحله ، شما برای اجرای دو نسخه مختلف از PHP ، دو وب سایت پیکربندی کرده اید. حالا نتایج را آزمایش کنید.
مرورگر وب خود را باز کنید و از هر دو سایت http: //site1.your_domain و http: //site2.your_domain بازدید کنید. دو صفحه را مشاهده خواهید کرد که به شکل زیر است:

به عناوین توجه کنید. صفحه اول نشان می دهد که site1.yourdomain نسخه 7.3 را مستقر کرده است. دومی نشان می دهد که site1.your_domain نسخه 7.4 را مستقر کرده است.
اکنون که سایت های خود را آزمایش کرده اید ، فایل های info.php را حذف کنید. از آنجا که آنها حاوی اطلاعات حساس در مورد سرور مجازی شما هستند و در دسترس کاربران غیرمجاز قرار میگیرند ، آسیب پذیری امنیتی ایجاد می کنند. با دستورات زیر فایل ها را حذف کنید:
⦁ $ sudo rm -rf /var/www/site1.your_domain/info.php

⦁ $ sudo rm -rf /var/www/site2.your_domain/info.php

اکنون یک سرور مجازی CentOS 8 واحد دارید که دو وب سایت با دو نسخه مختلف PHP را اداره می کند. با این حال PHP-FPM به این یک برنامه محدود نمی شود.
نتیجه
اکنون هاست های مجازی و PHP-FPM را برای ارائه خدمات به چندین وب سایت و نسخه های مختلف PHP در یک سرور مجازی واحد ترکیب کرده اید. تنها محدودیت عملی روی تعداد سایت های PHP و نسخه های PHP که سرویس Apache شما قادر به کنترل آن است ، قدرت پردازش نمونه شماست.
از اینجا به بعد ممکن است به کاوش در مورد ویژگی های پیشرفته تر PHP-FPM بپردازید ، مانند فرآیند spawning تطبیقی یا اینکه چگونه می تواند sdtout و stderr را وارد کند. اکنون می توانید وب سایت های خود را ایمن کنید. برای دستیابی به این هدف ، می توانید آموزش ما در مورد چگونگی تأمین امنیت سایتهای خود با مجوزهای رایگان TLS / SSL از Let’s Encrypt را دنبال کنید.

 

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

دسترسی از راه دور به برنامه GUI با Docker در اوبونتو 18.04

راه اندازی سایت توسعه Jekyll در اوبونتو 20.04

نحوه راه اندازی سایت توسعه Jekyll در اوبونتو 18.04

نحوه نصب و استفاده از Docker Compose در اوبونتو 20.04

نحوه اجرای چند نسخه PHP بر روی یک سرور با استفاده از Apache و PHP-FPM در CentOS 8

نحوه نصب و استفاده از TimescaleDB در Ubuntu 20.04

نحوه نصب و راه اندازی Laravel با Docker Compose در اوبونتو 20.04

 

 

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

بسیاری از برنامه ها ، مانند سیستم های مانیتورینگ و سیستم های جمع آوری داده، اطلاعات را برای تحلیل بیشتر جمع می کنند. این تجزیه و تحلیل ها اغلب به نحوه تغییر یک بخش از داده یا یک سیستم با زمان نگاه می کنند. در این موارد ، داده ها به عنوان یک سری زمان نمایش داده می شوند ، و هر نقطه داده همراه با یک timestamp همراه است. نمونه ای از آن ها به این صورت است:
2020-06-01 09:00:00 server.cpu.1 0.9
2020-06-01 09:00:00 server.cpu.15 0.8
2020-06-01 09:01:00 server.cpu.1 0.9
2020-06-01 09:01:00 server.cpu.15 0.8

اخیراً به لطف اینترنت اشیاء (IoT) و اینترنت صنعتی اشیاء، ارتباط داده های مجموعه زمانی افزایش یافته است. اکنون تعداد بیشتر و بیشتری دستگاه وجود دارد که اطلاعات مجموعه های مختلفی را جمع آوری می کنند: از جمله ثبت کننده های عملکرد ورزشی ، ساعت های هوشمند ، ایستگاه های خانگی آب و هوا و سنسورهای مختلف. این دستگاه ها اطلاعات زیادی را جمع می کنند و تمام این داده ها باید در جایی ذخیره شوند.
بانک های اطلاعاتی کلاسیک رابطه ای اغلب برای ذخیره داده ها استفاده می شود ، اما وقتی صحبت از حجم عظیم داده های سری زمانی است ، دیگر مناسب نخواهند بود. هنگامی که نیاز به پردازش میزان زیادی داده های مجموعه زمانی دارید ، دیتابیس رابطه ای می تواند خیلی کند باشد. به همین دلیل ، بانکهای اطلاعاتی بهینه سازی شده ای به نام پایگاه داده های NoSQL ایجاد شده اند تا از مشکلات پایگاه های داده رابطه ای جلوگیری شود.
TimescaleDB یک پایگاه داده منبع باز است که برای ذخیره داده های سری زمانی بهینه شده است. این برنامه به عنوان پسوند PostgreSQL پیاده سازی شده است و سهولت استفاده از پایگاه های داده رابطه ای و سرعت پایگاه داده های NoSQL را ترکیب می کند. در نتیجه ، به شما امکان می دهد تا از PostgreSQL برای ذخیره داده های کاری و داده های سری های زمانی به صورت همزمان استفاده کنید.
با دنبال کردن این آموزش ، TimescaleDB را روی Ubuntu 20.04 تنظیم میکنید ، آن را پیکربندی کرده و یاد می گیرید که چگونه با آن کار کنید. با ایجاد پایگاه داده های سری زمانی و ایجاد درخواست های ساده این کار را انجام خواهید داد. در آخر ، خواهید دید که چگونه داده های غیر ضروری را حذف کنید.
پیش نیازها
برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید:
یک سرور مجازی Ubuntu 20.04 که با دنبال کردن راهنمای اولیه راه اندازی سرور مجازی با Ubuntu 20.04 نصب شده باشد، و شامل یک کاربر غیر ریشه با امتیازات sudo و فایروال تنظیم شده باشد
PostgreSQL که بر روی سرور مجازی شما نصب شده باشد. برای نصب و پیکربندی آن ، راهنمای نصب و استفاده از PostgreSQL در Ubuntu 20.04 را دنبال کنید.
مرحله 1 – نصب TimescaleDB
TimescaleDB در منابع پکیجی پیش فرض Ubuntu در دسترس نیست ، بنابراین در این مرحله شما آن را از منبع شخص ثالث TimescaleDB نصب خواهید کرد.
ابتدا یک فایل منبع جدید ایجاد کنید:
$ sudo add-apt-repository ppa:timescale/timescaledb-ppa

با زدن enter این عمل را تایید کنید:
$ sudo apt update

اکنون می توانید مراحل نصب را ادامه دهید. در این آموزش از PostgreSQL نسخه 12 استفاده شده است. اگر از نسخه دیگری از PostgreSQL استفاده می کنید (به عنوان مثال 11 یا 10) ، مقدار مورد نظر را در دستور زیر جایگزین کرده و آن را اجرا کنید:
$ sudo apt install timescaledb-postgresql-12

توجه: در نسخه بعدی پشتیبانی نسخه های 9.6.3+ و 10.9+ حذف خواهد شد.
TimescaleDB اکنون نصب شده و آماده استفاده است. در مرحله بعد ، آن را روشن کرده و برخی از تنظیمات مرتبط با آن را در فایل پیکربندی PostgreSQL برای بهینه سازی بانک اطلاعات تنظیم خواهید کرد.
مرحله 2 – پیکربندی TimescaleDB
ماژول TimescaleDB با تنظیمات پیش فرض پیکربندی PostgreSQL خوب کار می کند ، اما برای بهبود عملکرد و استفاده بهتر از منابع پردازنده ، حافظه و منابع دیسک ، توسعه دهندگان TimescaleDB پیکربندی برخی پارامترهای فردی را پیشنهاد می کنند. این کار می تواند به صورت خودکار با ابزار timescaledb-tune یا با ویرایش دستی فایل postgresql.conf سرور مجازی شما انجام شود.
در این آموزش از ابزار timescaledb-tune استفاده خواهید کرد. این ابزار، فایل postgresql.conf را می خواند و به صورت تعاملی پیشنهاد ایجاد تغییرات را می دهد.
برای شروع wizard پیکربندی دستور زیر را اجرا کنید:
$ sudo timescaledb-tune
ابتدا از شما خواسته می شود مسیر فایل پیکربندی PostgreSQL را تأیید کنید:
Output
Using postgresql.conf at this path:
/etc/postgresql/12/main/postgresql.conf

Is this correct? [(y)es/(n)o]:

ابزار به طور خودکار مسیر فایل پیکربندی را تشخیص می دهد ، بنابراین با وارد کردن y این کار را تأیید کنید:
Output

Is this correct? [(y)es/(n)o]: y
Writing backup to:
/tmp/timescaledb_tune.backup202005300523

در مرحله بعد از شما خواسته می شود متغیر shared_preload_libraries را تغییر دهید تا قبل از شروع سرور مجازی PostgreSQL ، ماژول TimescaleDB را دانلود کنید:
Output
shared_preload_libraries needs to be updated
Current:
#shared_preload_libraries = ”
Recommended:
shared_preload_libraries = ‘timescaledb’
Is this okay? [(y)es/(n)o]:

shared_preload_libraries لیستی از ماژول های جدا شده با کاما را به عنوان یک مقدار میپذیرد و مشخص میکند که PostgreSQL باید قبل از شروع سرور مجازی پایگاه داده کدام ماژول ها را لود کند. با ایجاد این تغییر ، ماژول timescaledb به آن لیست اضافه می شود.
سپس ، ماژول TimescaleDB را با تایپ y در اعلان بعدی و فشار دادن ENTER فعال کنید:
Output

Is this okay? [(y)es/(n)o]: y
success: shared_preload_libraries will be updated

بر اساس ویژگی های سرور مجازی خود و نسخه PostgreSQL ، به شما پیشنهاد می شود تنظیمات خود را انجام دهید. برای شروع فرآیند تنظیم ، y را فشار دهید:
Output
Tune memory/parallelism/WAL and other settings? [(y)es/(n)o]: y
Recommendations based on 7.79 GB of available memory and 4 CPUs for PostgreSQL 12

Memory settings recommendations
Current:
shared_buffers = 128MB
#effective_cache_size = 4GB
#maintenance_work_mem = 64MB
#work_mem = 4MB
Recommended:
shared_buffers = 1990MB
effective_cache_size = 5971MB
maintenance_work_mem = 1019114kB
work_mem = 5095kB
Is this okay? [(y)es/(s)kip/(q)uit]:

timescaledb-tune به طور خودکار حافظه موجود سرور مجازی را تشخیص داده و مقادیر توصیه شده را برای تنظیمات shared_buffers ، effective_cache_size ، maintenance_work_mem و work_mem محاسبه می کند.
برای مثال shared_buffers مقدار حافظه اختصاص داده شده برای ذخیره داده ها را تعیین می کند. به طور پیش فرض ، این تنظیمات برای طیف وسیع تری از پلتفرم ها نسبتاً کم است ، بنابراین timescaledb-tune ایجاد فضای بیشتر برای ذخیره اطلاعات مانند جستارهای مکرر ، افزایش مقدار را پیشنهاد داده است که استفاده بهتر از منابع را منجر میشود. متغیر work_mem نیز افزایش یافته است تا امکان انواع پیچیده تری را نیز فراهم کند.
اگر می خواهید در مورد چگونگی انجام این کار اطلاعات بیشتری کسب کنید ، صفحه GitHub را برای دیدن timescaledb-tune چک کنید.
برای پذیرش مقادیر ، y را وارد کنید:
Output

Is this okay? [(y)es/(s)kip/(q)uit]: y
success: memory settings will be updated

در این مرحله ، اگر سرور مجازی شما دارای چندین CPU باشد ، توصیه های مربوط به تنظیمات موازی سازی را پیدا خواهید کرد. در حالی که اگر یک CPU داشته باشید ، timescaledb-tune با استفاده از جدول زمانی شما را مستقیماً به تنظیمات WAL هدایت میکند.
سرور مجازی هایی که دارای چندین CPU هستند ، با توصیه هایی مانند این روبرو می شوند:
Output
Parallelism settings recommendations
Current:
missing: timescaledb.max_background_workers
#max_worker_processes = 8
#max_parallel_workers_per_gather = 2
#max_parallel_workers = 8
Recommended:
timescaledb.max_background_workers = 8
max_worker_processes = 15
max_parallel_workers_per_gather = 2
max_parallel_workers = 4
Is this okay? [(y)es/(s)kip/(q)uit]:

این تنظیمات تعداد نیروهایی که درخواست ها و کارهای پس زمینه را پردازش می کنند را تنظیم می کند. می توانید اطلاعات بیشتری در مورد این تنظیمات را از مطالب TimescaleDB و PostgreSQL کسب کنید.
y را وارد کنید و برای پذیرش این تنظیمات enter بزنید:
Output

Is this okay? [(y)es/(s)kip/(q)uit]: y
success: parallelism settings will be updated

در مرحله بعد ، توصیه هایی برای Write Ahead Log (WAL) پیدا خواهید کرد:
Output
WAL settings recommendations
Current:
#wal_buffers = -1
#min_wal_size = 80MB
Recommended:
wal_buffers = 16MB
min_wal_size = 512MB
Is this okay? [(y)es/(s)kip/(q)uit]:

WAL یکپارچگی داده ها را حفظ می کند ، اما تنظیمات پیش فرض می تواند باعث عدم کارآیی I / O شود که عملکرد نوشتن را کند می کند. برای بهینه سازی این تنظیمات y را تایپ و وارد کنید:
Output

Is this okay? [(y)es/(s)kip/(q)uit]: y
success: WAL settings will be updated

اکنون چند توصیه متفرقه خواهید دید:
Output
Miscellaneous settings recommendations
Current:
#default_statistics_target = 100
#random_page_cost = 4.0
#checkpoint_completion_target = 0.5
#max_locks_per_transaction = 64
#autovacuum_max_workers = 3
#autovacuum_naptime = 1min
#effective_io_concurrency = 1
Recommended:
default_statistics_target = 500
random_page_cost = 1.1
checkpoint_completion_target = 0.9
max_locks_per_transaction = 64
autovacuum_max_workers = 10
autovacuum_naptime = 10
effective_io_concurrency = 200
Is this okay? [(y)es/(s)kip/(q)uit]:

تمام این پارامترهای مختلف با هدف افزایش کارایی هستند. به عنوان مثال ، SSD ها می توانند بسیاری از درخواست های همزمان را پردازش کنند ، بنابراین بهترین مقدار برای effective_io_concurrency ممکن است در بین صدها مورد باشد. می توانید اطلاعات بیشتری در مورد این گزینه ها را در مستندات PostgreSQL بیابید.
برای ادامه ، y را وارد کنید و enter بزنید.
Output

Is this okay? [(y)es/(s)kip/(q)uit]: y
success: miscellaneous settings will be updated
Saving changes to: /etc/postgresql/12/main/postgresql.conf

در نتیجه ، یک فایل پیکربندی آماده را در /var/lib/pgsql/12/data/postgresql.conf دریافت خواهید کرد.
توجه: اگر نصب را از ابتدا انجام می دهید ، می توانید فرمان اولیه را نیز با فلگ های –quiet و –yes اجرا کنید ، که به طور خودکار تمام توصیه ها را اعمال می کند و تغییراتی در فایل پیکربندی postgresql.conf ایجاد می کند:
$ sudo timescaledb-tune –quiet –yes

برای اینکه تغییرات پیکربندی عملی شوند ، باید سرویس PostgreSQL را مجدداً راه اندازی کنید:
$ sudo systemctl restart postgresql.service

اکنون دیتابیس با پارامترهای بهینه در حال اجرا است و آماده همکاری با داده های سری زمانی میباشد. در مراحل بعدی ، کار با این داده ها را امتحان میکنید: ایجاد بانک اطلاعاتی جدید و هایپرجداول و انجام عملیات.
مرحله 3 – ایجاد یک بانک اطلاعاتی جدید و Hypertable
با بهینه سازی تنظیم TimescaleDB ، آماده کار با داده های سری زمانی هستید. TimescaleDB به عنوان پسوند PostgreSQL پیاده سازی می شود ، بنابراین عملیات با داده های سری زمانی تفاوت چندانی با عملیات داده های رابطه ای ندارند. در عین حال ، بانک اطلاعاتی به شما امکان می دهد تا در آینده داده های سری زمانی و جداول رابطه ای را آزادانه ترکیب کنید.
ابتدا یک پایگاه داده جدید ایجاد می کنید و پسوند TimescaleDB را برای آن فعال می کنید. به پایگاه داده PostgreSQL وارد شوید:
$ sudo -u postgres psql
اکنون یک دیتابیس جدید ایجاد کرده و به آن متصل شوید. این آموزش پایگاه داده را timeseries نامگذاری می کند:
Postgres=# CREATE DATABASE timeseries;
Postgres=# \c timeseries

می توانید اطلاعات دیگری در مورد کار با بانک اطلاعاتی PostgreSQL را در نحوه ایجاد ، حذف و مدیریت جداول در PostgreSQL در یک آموزش Cloud Server دریافت کنید.
در آخر ، پسوند TimescaleDB را فعال کنید:
Timeseries=# CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
خروجی زیر را مشاهده خواهید کرد:
Output
WARNING:
WELCOME TO
_____ _ _ ____________
|_ _(_) | | | _ \ ___ \
| | _ _ __ ___ ___ ___ ___ __ _| | ___| | | | |_/ /
| | | | _ ` _ \ / _ \/ __|/ __/ _` | |/ _ \ | | | ___ \
| | | | | | | | | __/\__ \ (_| (_| | | __/ |/ /| |_/ /
|_| |_|_| |_| |_|\___||___/\___\__,_|_|\___|___/ \____/
Running version 1.7.1
For more information on TimescaleDB, please visit the following links:

1. Getting started: https://docs.timescale.com/getting-started
2. API reference documentation: https://docs.timescale.com/api
3. How TimescaleDB is designed: https://docs.timescale.com/introduction/architecture

Note: TimescaleDB collects anonymous reports to better understand and assist our users.
For more information and how to disable, please see our docs https://docs.timescaledb.com/using-timescaledb/telemetry.

CREATE EXTENSION
نکته اولیه تعامل با داده های سری زمانی، hypertable ها هستند ، مفهوم انتزاعی بسیاری از جداول جداگانه که داده ها را نگه می دارند ، به نام chunks.
برای ایجاد یک hypertable ، با یک جدول SQL معمولی شروع کنید و سپس از طریق تابع create_hypertable آن را به hypertable تبدیل کنید.
یک جدول تهیه کنید که داده ها را برای ردیابی دما و رطوبت در کل دستگاه ها در طول زمان ذخیره کند:
Timeseries=# CREATE TABLE conditions (
Timeseries=# time TIMESTAMP WITH TIME ZONE NOT NULL,
Timeseries=# device_id TEXT,
Timeseries=# temperature NUMERIC,
Timeseries=# humidity NUMERIC
Timeseries=# );

این دستور یک جدول با نام conditions شامل چهار ستون ایجاد می کند. ستون اول timestamp را ذخیره می کند که شامل منطقه زمانی است و نمی تواند خالی باشد. در مرحله بعد ، از ستون زمان برای تبدیل جدول خود به یک Hypertable استفاده می کنید که در زمان تقسیم می شود:
Timeseries=# SELECT create_hypertable(‘conditions’, ‘time’);

این دستور تابع create_hypertable() را فرامیخواند، که یک هایپرجدول TimescaleDB را از جدول PostgreSQL ایجاد می کند ، و جایگزین دومی می نماید.
خروجی زیر را دریافت خواهید کرد:
Output
create_hypertable
————————-
(1,public,conditions,t)
(1 row)

در این مرحله ، یک Hypertable جدید برای ذخیره داده های سری زمانی ایجاد کرده اید. اکنون می توانید با نوشتن hypertable ، آن را با داده ها پر کنید و سپس فرایند حذف آن را اجرا کنید.
مرحله 4 – نوشتن و حذف داده ها
در این مرحله داده ها را با استفاده از دستورات استاندارد SQL وارد می کنید و مجموعه های زیادی از داده ها را از منابع خارجی وارد می کنید. این به شما جنبه های پایگاه داده رابطه ای TimescaleDB را نشان می دهد.
ابتدا دستورات ساده را امتحان کنید. با استفاده از دستور استاندارد INSERT SQL می توانید داده ها را به hypertable وارد کنید. برخی از داده های دما و رطوبت نمونه را برای دستگاه تئوری weather-pro-000000 با استفاده از دستور زیر وارد کنید:
Timeseries=# INSERT INTO conditions(time, device_id, temperature, humidity)
Timeseries=# VALUES (NOW(), ‘weather-pro-000000’, 84.1, 84.1);
خروجی زیر را دریافت خواهید کرد:
Output
INSERT 0 1

همچنین می توانید چندین ردیف داده به طور همزمان وارد کنید. موارد زیر را امتحان کنید:
Timeseries=# INSERT INTO conditions
Timeseries=# VALUES
Timeseries=# (NOW(), ‘weather-pro-000002’, 71.0, 51.0),
Timeseries=# (NOW(), ‘weather-pro-000003’, 70.5, 50.5),
Timeseries=# (NOW(), ‘weather-pro-000004’, 70.0, 50.2);
خروجی زیر را دریافت خواهید کرد:
Output
INSERT 0 3

همچنین می توانید مشخص کنید که دستور INSERT با استفاده از عبارت RETURNING برخی یا تمام داده های درج شده را باز گرداند:
Timeseries=# INSERT INTO conditions
Timeseries=# VALUES (NOW(), ‘weather-pro-000002’, 70.1, 50.1) RETURNING *;

خروجی زیر را مشاهده خواهید کرد:
Output
time | device_id | temperature | humidity
——————————-+——————–+————-+———-
2020-05-30 05:31:27.842009+00 | weather-pro-000002 | 70.1 | 50.1
(1 row)

اگر می خواهید داده ها را از hypertable حذف کنید ، از دستور استاندارد DELETE SQL استفاده کنید. موارد زیر را اجرا کنید تا هرکدام از داده ها که دارای دمای بالاتر از 80 یا رطوبت بالای 50 باشد ، حذف کنید:
Timeseries=# DELETE FROM conditions WHERE temperature > 80;
Timeseries=# DELETE FROM conditions WHERE humidity > 50;

پس از عمل حذف ، توصیه می شود از دستور VACUUM استفاده کنید ، تا فضایی که هنوز توسط داده هایی که حذف شده اند مورد استفاده قرار می گیرد آزاد شود.
Timeseries=# VACUUM conditions;

می توانید اطلاعات بیشتری در مورد دستور VACUUM در مستندات PostgreSQL بیابید.
این فرمان ها برای ورود داده ها در مقیاس کوچک مناسب هستند ، اما از آنجا که داده های سری زمانی اغلب داده های عظیمی را از چندین دستگاه به طور همزمان تولید می کنند ، دانستن چگونگی درج صدها یا هزاران سطر به طور همزمان ضروری است. اگر داده های منابع خارجی را به صورت ساختاری ، به عنوان مثال با فرمت csv تهیه کرده اید ، این کار را می توانید به سرعت انجام دهید.
برای آزمایش این مرحله ، از یک مجموعه داده نمونه استفاده می کنید که داده های دما و رطوبت را از مکان های مختلف نشان می دهد. این داده ها توسط توسعه دهندگان TimescaleDB ایجاد شده اند تا به شما امکان دهد پایگاه داده خود را امتحان کنید. در مستندات TimescaleDB می توانید اطلاعات بیشتری در مورد مجموعه داده های نمونه را بررسی کنید
سپس داده ها را از مجموعه داده نمونه weather_smallبه پایگاه داده خود وارد میکنید. اول ، از Postgresql خارج شوید:
Timeseries=# \q
سپس مجموعه داده را دانلود کرده و آن را اکسترکت کنید:
$ wget https://timescaledata.blob.core.windows.net/datasets/weather_small.tar.gz

$ tar -xvzf weather_small.tar.gz

سپس ، داده های دما و رطوبت را به پایگاه داده خود وارد کنید:
$ sudo -u postgres psql -d timeseries -c “\COPY conditions FROM weather_small_conditions.csv CSV”
این دیتابیس به بانک اطلاعاتی timeseries  متصل می شود و دستور \ COPY را اجرا میکند که داده ها را از فایل انتخاب شده به قسمت conditions در hypertable کپی کند. چند ثانیه طول میکشد تا اجرا شود.
پس از وارد کردن داده ها به جدول خود ، خروجی زیر را دریافت خواهید کرد:
Output
COPY 1000000

در این مرحله داده ها را به صورت دستی و در گروه هایی به hypertable اضافه می کنید. در مرحله بعدی ، به اجرای درخواست ها ادامه دهید.
مرحله 5 – جستجوی داده ها
اکنون که جدول شما حاوی داده است ، می توانید درخواست های مختلفی را برای تجزیه و تحلیل آن انجام دهید.
برای شروع ، وارد پایگاه داده شوید:
$ sudo -u postgres psql -d timeseries
همانطور که قبلاً ذکر شد ، برای کار با hypertables می توانید از دستورات استاندارد SQL استفاده کنید. به عنوان مثال ، برای نشان دادن 10 ورودی گذشته از بخش conditions ، دستور زیر را اجرا کنید:
Timeseries=# SELECT * FROM conditions LIMIT 10;
خروجی زیر را مشاهده خواهید کرد:
Output
time | device_id | temperature | humidity
————————+——————–+——————–+———-
2016-11-15 12:00:00+00 | weather-pro-000000 | 39.9 | 49.9
2016-11-15 12:00:00+00 | weather-pro-000001 | 32.4 | 49.8
2016-11-15 12:00:00+00 | weather-pro-000002 | 39.800000000000004 | 50.2
2016-11-15 12:00:00+00 | weather-pro-000003 | 36.800000000000004 | 49.8
2016-11-15 12:00:00+00 | weather-pro-000004 | 71.8 | 50.1
2016-11-15 12:00:00+00 | weather-pro-000005 | 71.8 | 49.9
2016-11-15 12:00:00+00 | weather-pro-000006 | 37 | 49.8
2016-11-15 12:00:00+00 | weather-pro-000007 | 72 | 50
2016-11-15 12:00:00+00 | weather-pro-000008 | 31.3 | 50
2016-11-15 12:00:00+00 | weather-pro-000009 | 84.4 | 87.8
(10 rows)

این دستور به شما امکان می دهد ببیند چه داده ای در پایگاه داده است. از آنجا که دیتابیس حاوی یک میلیون رکورد است ، شما از LIMIT 10 برای محدود کردن خروجی به 10 ورودی استفاده کردید.
برای دیدن جدیدترین ورودی ها ، آرایه داده ها را بر اساس زمانی و به صورت نزولی مرتب کنید:
Timeseries=# SELECT * FROM conditions ORDER BY time DESC LIMIT 20;
با این کار 20 ورودی اخیر به خروجی فرستاده می شود.
همچنین می توانید یک فیلتر اضافه کنید. به عنوان مثال ، برای دیدن ورودی های دستگاه Weather-Pro-000000 ، فرمان های زیر را اجرا کنید:
Timeseries=# SELECT * FROM conditions WHERE device_id = ‘weather-pro-000000’ ORDER BY time DESC LIMIT 10;

در این حالت ، 10 مورد از آخرین داده های دما و رطوبت ثبت شده توسط دستگاه weather-pro-000000 را مشاهده خواهید کرد.
علاوه بر دستورات استاندارد SQL ، TimescaleDB همچنین تعدادی کارکرد ویژه را ارائه می دهد که برای تجزیه و تحلیل داده های سری زمانی مفید هستند. به عنوان مثال ، برای یافتن میانه مقادیر درجه حرارت ، می توانید از query زیر با عملکرد percentile_cont استفاده کنید:
Timeseries=# SELECT percentile_cont(0.5)
Timeseries=# WITHIN GROUP (ORDER BY temperature)
Timeseries=# FROM conditions
Timeseries=# WHERE device_id = ‘weather-pro-000000’;

خروجی زیر را مشاهده خواهید کرد:
Output
percentile_cont
——————-
40.49999999999998
(1 row)

به این ترتیب ، دمای متوسط ​​را برای کل دوره مشاهده میکنید که در آن سنسور weather-pro-00000 قرار دارد.
برای نمایش آخرین مقادیر از هر یک از سنسورها ، می توانید از آخرین تابع استفاده کنید:
Timeseries=# select device_id, last(temperature, time)
Timeseries=# FROM conditions
Timeseries=# GROUP BY device_id;

در خروجی لیستی از تمام سنسورها و آخرین مقادیر مربوط را مشاهده خواهید کرد.
برای بدست آوردن مقادیر اولیه از تابع first استفاده کنید.
مثال زیر پیچیده تر است. میانگین دما ، حداقل و حداکثر دما برای سنسور انتخاب شده در 24 ساعت گذشته را نشان می دهد:
Timeseries=# SELECT time_bucket(‘1 hour’, time) “hour”,
Timeseries=# trunc(avg(temperature), 2) avg_temp,
Timeseries=# trunc(min(temperature), 2) min_temp,
Timeseries=# trunc(max(temperature), 2) max_temp
Timeseries=# FROM conditions
Timeseries=# WHERE device_id = ‘weather-pro-000000’
Timeseries=# GROUP BY “hour” ORDER BY “hour” DESC LIMIT 24;

در اینجا شما از تابع time_bucket استفاده کرده اید که به عنوان نسخه قدرتمند تابع PostgreSQL date_trunc عمل می کند. در نتیجه خواهید دید که در کدام دوره از روز دمای هوا افزایش یا کاهش می یابد:
Output
hour | avg_temp | min_temp | max_temp
————————+———-+———-+———-
2016-11-16 21:00:00+00 | 42.00 | 42.00 | 42.00
2016-11-16 20:00:00+00 | 41.92 | 41.69 | 42.00
2016-11-16 19:00:00+00 | 41.07 | 40.59 | 41.59
2016-11-16 18:00:00+00 | 40.11 | 39.79 | 40.59
2016-11-16 17:00:00+00 | 39.46 | 38.99 | 39.79
2016-11-16 16:00:00+00 | 38.54 | 38.19 | 38.99
2016-11-16 15:00:00+00 | 37.56 | 37.09 | 38.09
2016-11-16 14:00:00+00 | 36.62 | 36.39 | 37.09
2016-11-16 13:00:00+00 | 35.59 | 34.79 | 36.29
2016-11-16 12:00:00+00 | 34.59 | 34.19 | 34.79
2016-11-16 11:00:00+00 | 33.94 | 33.49 | 34.19
2016-11-16 10:00:00+00 | 33.27 | 32.79 | 33.39
2016-11-16 09:00:00+00 | 33.37 | 32.69 | 34.09
2016-11-16 08:00:00+00 | 34.94 | 34.19 | 35.49
2016-11-16 07:00:00+00 | 36.12 | 35.49 | 36.69
2016-11-16 06:00:00+00 | 37.02 | 36.69 | 37.49
2016-11-16 05:00:00+00 | 38.05 | 37.49 | 38.39
2016-11-16 04:00:00+00 | 38.71 | 38.39 | 39.19
2016-11-16 03:00:00+00 | 39.72 | 39.19 | 40.19
2016-11-16 02:00:00+00 | 40.67 | 40.29 | 40.99
2016-11-16 01:00:00+00 | 41.63 | 40.99 | 42.00
2016-11-16 00:00:00+00 | 42.00 | 42.00 | 42.00
2016-11-15 23:00:00+00 | 42.00 | 42.00 | 42.00
2016-11-15 22:00:00+00 | 42.00 | 42.00 | 42.00
(24 rows)

می توانید توابع مفیدی را در مستندات TimescaleDB بیابید.
اکنون می دانید که چگونه می توانید داده های خود را مدیریت کنید. در مرحله بعدی ، نحوه حذف داده های غیر ضروری و نحوه فشرده سازی داده ها را مرور خواهید کرد.
مرحله 6 – پیکربندی فشرده سازی و حذف داده ها
با تجمع داده ها ، فضای بیشتری در هارد دیسک شما جای می گیرد. برای صرفه جویی در فضا ، آخرین نسخه TimescaleDB یک ویژگی فشرده سازی داده را ارائه می دهد. این ویژگی به هیچ وجه نیازی به تنظیمات فایل سیستم نخواهد داشت و می توان از آن برای کارآمد ساختن سریعتر پایگاه داده استفاده کرد. برای اطلاعات بیشتر در مورد نحوه عملکرد این فشرده سازی ، به مقاله فشرده سازی از TimescaleDB نگاهی بیندازید.
ابتدا فشرده سازی hypertable خود را فعال کنید:
Timeseries=# ALTER TABLE conditions SET (
Timeseries=# timescaledb.compress,
Timeseries=# timescaledb.compress_segmentby = ‘device_id’
Timeseries=# );

خروجی زیر را دریافت خواهید کرد:
Output
NOTICE: adding index _compressed_hypertable_2_device_id__ts_meta_sequence_num_idx ON _timescaledb_internal._compressed_hypertable_2 USING BTREE(device_id, _ts_meta_sequence_num)
ALTER TABLE

توجه: همچنین می توانید TimescaleDB را برای فشرده سازی داده ها در مدت زمانی مشخص تنظیم کنید. به عنوان مثال ، می توانید دستور زیر را اجرا کنید:
Timeseries=# SELECT add_compress_chunks_policy(‘conditions’, INTERVAL ‘7 days’);
در این مثال ، داده ها بعد از یک هفته به طور خودکار فشرده می شوند.
می توانید آمار مربوط به داده های فشرده شده را با این دستور مشاهده کنید:
Timeseries=# SELECT * FROM timescaledb_information.compressed_chunk_stats;
سپس لیستی از chunk ها را با وضعیت آنها مشاهده خواهید کرد: وضعیت فشرده سازی و میزان فضای داده های فشرده نشده و فشرده شده در بایت ها.
اگر به مدت طولانی نیازی به ذخیره داده ندارید ، می توانید داده های قدیمی را حذف کنید تا حتی فضای بیشتری آزاد شود. برای این کار یک تابع ویژه drop_chunks وجود دارد. به شما امکان می دهد بخش هایی با داده های قدیمی تر از زمان مشخص شده را حذف کنید:
Timeseries=# SELECT drop_chunks(interval ’24 hours’, ‘conditions’);
این درخواست تمام قسمت ها را از بخش conditions در hypertable که فقط شامل داده های قدیمی تر از روز قبل است ، خالی می کند.
خروجی زیر را دریافت خواهید کرد:
Output
drop_chunks
—————————————-
_timescaledb_internal._hyper_1_2_chunk
(1 row)

برای حذف خودکار داده های قدیمی ، می توانید یک کار cron پیکربندی کنید. برای کسب اطلاعات بیشتر در مورد نحوه استفاده از cron برای اتوماسیون کارهای مختلف سیستم ، به آموزش ما در این مورد مراجعه کنید.
از پایگاه داده خارج شوید:
Timeseries=# /q
سپس ، crontab خود را با دستور زیر ویرایش کنید ، که باید از پوسته اجرا شود:
$ sudo crontab -e
اکنون خط زیر را به انتهای فایل اضافه کنید:
crontab

0 1 * * * /usr/bin/psql -h localhost -p 5432 -U postgres -d postgres -c “SELECT drop_chunks(interva

این کار داده های منسوخ را که قدیمی تر از یک روز هستند را ساعت 1 صبح هر روز حذف می کند.
نتیجه
اکنون TimescaleDB را روی سرور مجازی Ubuntu 20.04 خود تنظیم کرده اید. همچنین ایجاد Hypertables ، قرار دادن داده ها در آن ، جستجوی داده ها ، فشرده سازی و حذف سوابق غیر ضروری را امتحان کردید. با استفاده از این مثالها ، می توانید از مزایای کلیدی TimescaleDB نسبت به سیستم های معمول مدیریت پایگاه داده رابطه ای برای ذخیره داده های سری زمانی استفاده کنید ، از جمله:
• نرخ پذیرش بیشتر داده ها
• عملکرد سریعتر درخواست ها
• ویژگی های زمان گرا
اکنون که می دانید چگونه داده های سری زمانی را ذخیره کنید ، می توانید از داده ها برای ایجاد نمودار استفاده کنید. TimescaleDB با ابزارهای تجسم مناسب برای PostgreSQL مانند Grafana سازگار است. برای کسب اطلاعات بیشتر در مورد این ابزار محبوب تجسم سازی، می توانید از آموزش نحوه نصب و ایمن کردن Grafana در اوبونتو 20.04 استفاده کنید. اگر مایل به کسب اطلاعات بیشتر در مورد بانکهای اطلاعاتی هستید ، به صفحه مبحث بانک اطلاعات ما نگاهی بیندازید.

 

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

دسترسی از راه دور به برنامه GUI با Docker در اوبونتو 18.04

راه اندازی سایت توسعه Jekyll در اوبونتو 20.04

نحوه راه اندازی سایت توسعه Jekyll در اوبونتو 18.04

نحوه نصب و استفاده از Docker Compose در اوبونتو 20.04

نحوه اجرای چند نسخه PHP بر روی یک سرور با استفاده از Apache و PHP-FPM در CentOS 8

نحوه نصب و استفاده از TimescaleDB در Ubuntu 20.04

نحوه نصب و راه اندازی Laravel با Docker Compose در اوبونتو 20.04

 

 

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

Grafana یک ابزار منبع باز تجسم و نظارت بر داده ها است که با داده های پیچیده از منابعی مانند Prometheus ، InfluxDB ، Graphite و ElasticSearch ادغام می شود. Grafana به شما امکان می دهد تا هشدارها ، اعلان ها و فیلترهای موقت را برای داده های خود ایجاد کنید و در عین حال با هم تیمی های خود از طریق مشخصه های به اشتراک گذاری داخلی آسانتر همکاری کنید.
در این آموزش Grafana را نصب کرده و با یک گواهی SSL و یک پروکسی معکوس Nginx آن را ایمن خواهید کرد. پس از راه اندازی Grafana ، می توانید گزینه احراز هویت کاربر را از طریق GitHub پیکربندی کنید ، که به شما امکان می دهد مجوزهای تیم خود را بهتر سازماندهی کنید.
پیش نیازها
برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید:
⦁ یک سرور مجازی  Ubuntu 20.04 که با دنبال کردن راهنمای ستاپ اولیه سرور مجازی برای Ubuntu 20.04 نصب شده باشد، و شامل یک کاربر غیر ریشه با امتیازات sudo و فایروال تنظیم شده با ufw باشد.
⦁ نام دامنه کاملاً ثبت شده. در کل این آموزش از your_domain استفاده می شود. می توانید نام دامنه را در Namecheap خریداری کنید ، به صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید.
⦁ سوابق DNS زیر برای سرور مجازی شما تنظیم شده باشد. برای جزئیات بیشتر در مورد چگونگی افزودن آنها می توانید نحوه تنظیم نام میزبان با vpsgol را دنبال کنید.
⦁ یک رکورد A با your_domain که آدرس IP عمومی سرور مجازی شما نشان می دهد.
⦁ یک رکورد A با www.your_domain که به آدرس IP عمومی سرور مجازی شما اشاره کند.
⦁ Nginx که با پیروی از آموزش نحوه نصب Nginx در اوبونتو 20.04 نصب شده باشد، شامل بلوک سرور مجازی برای دامنه تان باشد.
⦁ بلوک سرور مجازی Nginx که با Let’S Encrypt پیکربندی شده باشد ، که می توانید با دنبال کردن چگونگی ایمن سازی Nginx با Let’s Encrypt در Ubuntu 20.04 تنظیم کنید.
⦁ به صورت اختیاری ، برای تنظیم تأیید هویت GitHub ، به یک حساب GitHub مرتبط با یک سازمان نیاز دارید.
مرحله 1 – نصب Grafana
در این مرحله اول ، Grafana را روی سرور مجازی Ubuntu 20.04 خود نصب خواهید کرد. شما می توانید Grafana را با دانلود مستقیم آن از وب سایت رسمی آن یا از طریق مخزن APT ، نصب کنید. از آنجا که یک مخزن APT نصب و مدیریت به روزرسانی های Grafana را آسان تر می کند ، از این روش در این آموزش استفاده خواهید کرد.
کلید Grafana GPG را با wget دانلود کنید ، سپس خروجی را به apt-key متصل کنید. با این کار کلید به لیست نصب کلیدهای قابل اعتماد APT شما اضافه خواهد شد که به شما امکان می دهد بسته Grafana امضا شده توسط GPG را دانلود و تأیید کنید.
⦁ $ wget -q -O – https://packages.grafana.com/gpg.key | sudo apt-key add –

در این دستور ، گزینه -q پیام به روزرسانی وضعیت را برای wget خاموش می کند ، و -O فایلی را که دانلود کرده اید به ترمینال خروجی می فرستد. این دو گزینه اطمینان حاصل می کنند که فقط محتویات فایل دانلود شده به کلید apt-key اتصال یافته است.
سپس ، مخزن Grafana را به منابع APT خود اضافه کنید:
⦁ $ sudo add-apt-repository “deb https://packages.grafana.com/oss/deb stable main”

حافظه نهان APT خود را برای به روزرسانی لیست های بسته بندی ریفرش کنید:
⦁ $ sudo apt update

اکنون میتوانید نصب را ادامه دهید
⦁ $ sudo apt install grafana

پس از نصب Grafana ، از systemctl برای راه اندازی سرور مجازی Grafana استفاده کنید:
⦁ $ sudo systemctl start grafana-server

سپس ، با بررسی وضعیت سرویس ، تأیید کنید که Grafana در حال اجرا است:
⦁ $ sudo systemctl status grafana-server

خروجی مشابه این دریافت خواهید کرد:
Output
● grafana-server.service – Grafana instance
Loaded: loaded (/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2020-05-21 08:08:10 UTC; 4s ago
Docs: http://docs.grafana.org
Main PID: 15982 (grafana-server)
Tasks: 7 (limit: 1137)

این خروجی شامل اطلاعاتی در مورد فرآیند Grafana ، از جمله وضعیت آن ، شناساگر اصلی فرآیند (PID) و موارد دیگر می باشد. active (running) نشان می دهد که روند صحیح در حال اجرا است.
در آخر ، سرویس را فعال کنید تا به طور خودکار Grafana را از بوت شروع کند:
⦁ $ sudo systemctl enable grafana-server

خروجی زیر را دریافت خواهید کرد:
Output
Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable grafana-server
Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.

این خروجی تأیید می کند که systemd  ، پیوندهای سمبولیک لازم را به autostart Grafana ایجاد کرده است.
Grafana هم اکنون نصب و آماده استفاده است. در مرحله بعد ، اتصال خود را با Grafana با یک پروکسی معکوس و گواهی SSL ایمن خواهید کرد.
مرحله 2 – تنظیم پروکسی معکوس
استفاده از گواهینامه SSL اطمینان حاصل می کند که داده های شما با رمزگذاری اتصال به و از Grafana ایمن هستند. اما برای استفاده از این ارتباط ، ابتدا لازم است Nginx را به عنوان یک پروکسی معکوس برای Grafana پیکربندی کنید.
پیکربندی Nginx که هنگام ستاپ بلوک سرور مجازی Nginx با Let’s Encrypt در پیش نیازها ایجاد کردید را باز کنید. می توانید از هر ویرایشگر متنی استفاده کنید ، اما برای این آموزش از nano استفاده خواهیم کرد:
⦁ $ sudo nano /etc/nginx/sites-available/your_domain

بلوک زیر را جای دهید:
/etc/nginx/sites-available/your_domain

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

از آنجا که قبلاً Nginx را تنظیم کرده اید تا از طریق SSL ارتباط برقرار کند و از آنجا که تمام ترافیک وب به سرور مجازی شما از طریق Nginx عبور می کند ، فقط باید به Nginx بگویید که کلیه درخواست ها را به Grafana ارسال کند ، که بصورت پیش فرض در پورت 3000 اجرا می شود.
خط try_files موجود را در این location block را حذف کرده و آن را با گزینه proxy_pass زیر جایگزین کنید.
/etc/nginx/sites-available/your_domain

location / {
proxy_pass http://localhost:3000;
}

با این کار پروکسی به پورت مناسب نگاشت می شود. پس از اتمام کار ، فایل را با فشار دادن CTRL + X ذخیره کرده و آن را ببندید ، اگر از nano استفاده می کنید ، Y و سپس enter را بزنید.
اکنون ، تنظیمات جدید را آزمایش کنید تا مطمئن شوید همه چیز به درستی پیکربندی شده است:
⦁ $ sudo nginx -t

خروجی زیر را دریافت خواهید کرد:
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

در آخر ، تغییرات را با لود مجدد Nginx فعال کنید:
⦁ $ sudo systemctl reload nginx

اکنون با نشان دادن مرورگر وب خود به https: // your_domain می توانید به صفحه پیش فرض ورود به سیستم Grafana دسترسی پیدا کنید. اگر نمی توانید به Grafana دسترسی پیدا کنید ، بررسی کنید که فایروال به گونه ای تنظیم شده باشد که در پورت 443 امکان عبور و مرور را فراهم کند و دستورالعمل های قبلی را دوباره ردیابی کنید.
با اتصال به Grafana رمزگذاری شده ، اکنون می توانید اقدامات امنیتی دیگری را با شروع تغییر اعتبارنامه ادمین پیش فرض Grafana ، انجام دهید.
مرحله 3 – به روزرسانی اعتبارات
از آنجا که هر نصب Grafana بصورت پیش فرض از یک مدل اعتبارات اجرایی استفاده می کند ، بهتر است هرچه سریعتر اطلاعات ورود به سیستم را تغییر دهید. در این مرحله ، اعتبارات را برای بهبود امنیت به روز می کنید.
با رفتن به https: // your_domain از مرورگر وب خود شروع کنید. این صفحه پیش فرض ورود به سیستم را ایجاد می کند که در آن لوگوی Grafana را مشاهده می کنید ، فرمی که از شما خواسته می شود یک ایمیل یا نام کاربری و رمز عبور وارد کنید، دکمه ورود به سیستم و لینک آیا رمز ورود خود را فراموش کنید؟ را نشان میدهد.

ادمین را در هر دو قسمت User و Password وارد کرده و بر روی دکمه Log in (ورود به سیستم) کلیک کنید.
در صفحه بعدی از شما خواسته می شود با تغییر رمز پیش فرض ، حساب خود را ایمن تر کنید:

گذرواژه‌ای را که مایل به استفاده از آن هستید ، در گذرواژه جدید وارد کرده و قسمتهای رمز عبور جدید را تأیید کنید.
از اینجا ، می توانید برای ذخیره اطلاعات جدید روی save کلیک کرده یا skip را فشار دهید تا از این مرحله رد شوید. در صورت skip (پرش)، دفعه بعدی که وارد میشوید از شما خواسته می شود گذرواژه را تغییر دهید.
برای افزایش امنیت راه اندازی Grafana ، روی save کلیک کنید. به صفحه  Home Dashboard باز خواهید گشت:

اکنون با تغییر اعتبارات پیش فرض ، حساب خود را ایمن کرده اید. در مرحله بعد ، تغییراتی در پیکربندی Grafana ایجاد خواهید کرد تا هیچ کس نتواند بدون اجازه شما یک حساب Grafana جدید ایجاد کند.
مرحله 4 – غیرفعال کردن ثبت نام های Grafana و دسترسی ناشناس
Grafana گزینه هایی را فراهم می کند که به بازدید کنندگان امکان می دهد برای خود حساب کاربری ایجاد کنند و داشبورد پیش نمایش را بدون ثبت نام مشاهده کنند. وقتی Grafana از طریق اینترنت قابل دسترسی نیست یا وقتی با داده های عمومی مانند وضعیت سرویس کار می کند ، ممکن است بخواهید این ویژگی ها را مجاز کنید. با این حال ، هنگام استفاده از Grafana آنلاین برای کار با داده های حساس ، دسترسی ناشناس می تواند یک مشکل امنیتی باشد. برای برطرف کردن این مشکل ، در پیکربندی Grafana خود تغییراتی ایجاد کنید.
با باز کردن فایل اصلی پیکربندی Grafana برای ویرایش شروع کنید:
⦁ $ sudo nano /etc/grafana/grafana.ini

دستورالعمل allow_sign_up را تحت عنوان [users] قرار دهید:
/etc/grafana/grafana.ini

[users]
# disable user signup / registration
;allow_sign_up = true

با فعال کردن این دستورالعمل ، یک دکمه sign up به صفحه ورود اضافه می شود و به کاربران امکان می دهد ثبت نام کنند و به Grafana دسترسی پیدا کنند.
غیرفعال کردن این ویژگی با false ، دکمه ثبت نام را حذف کرده و امنیت و حریم خصوصی Grafana را بیشتر می کند.
با حذف ; در ابتدای خط و سپس تنظیم گزینه روی false، این امکان را لغو کنید.
/etc/grafana/grafana.ini

[users]
# disable user signup / registration
allow_sign_up = false

در مرحله بعد ، دستورالعمل enabled  زیر را تحت عنوان [auth.annam] قرار دهید:
/etc/grafana/grafana.ini

[auth.anonymous]
# enable anonymous access
;enabled = false

تبدیل enabled به true به کاربران غیر ثبت شده دسترسی به داشبورد شما را می دهد. تنظیم این گزینه روی false دسترسی به داشبورد را فقط محدود به کاربران ثبت نام شده میکند.
با حذف ; در ابتدای خط و سپس تنظیم گزینه روی false، این امکان را لغو کنید.
/etc/grafana/grafana.ini

[auth.anonymous]
# enable anonymous access
enabled = false

فایل را ذخیره کنید و از ویرایشگر متن خود خارج شوید.
برای فعال سازی تغییرات ، Grafana را ریستارت کنید:
⦁ $ sudo systemctl restart grafana-server

با بررسی وضعیت سرویس Grafana تأیید کنید که همه چیز کار می کند:
⦁ $ sudo systemctl status grafana-server

مانند قبل ، خروجی گزارش خواهد داد که Grafana فعال (در حال اجرا( است.
اکنون ، در مرورگر وب خود https: // your_domain را وارد کنید. برای بازگشت به صفحه ورود به سیستم ، نشانگر خود را روی قسمت پایین سمت چپ صفحه نمایشگر در آواتار خود آورده و بر روی گزینه Sign out که ظاهر می شود کلیک کنید.
پس از ورود به سیستم ، مطمئن شوید که هیچ دکمه sign up وجود ندارد و بدون وارد کردن اعتبارات ورود نمی توانید وارد سیستم شوید.
در این مرحله ، Grafana کاملاً پیکربندی شده و آماده استفاده است. در مرحله بعد ، می توانید فرآیند ورود به سیستم خود را با تأیید اعتبار از طریق GitHub ساده کنید.
(اختیاری) مرحله 5 – تنظیم یک برنامه GitHub OAuth
به عنوان یک روش جایگزین برای ورود به سیستم ، می توانید Grafana را برای تأیید اعتبار از طریق GitHub پیکربندی کنید ، که دسترسی به تمام اعضای سازمان های مجاز GitHub را فراهم می کند. این مسئله می تواند به ویژه هنگامی مفید باشد که بخواهید به چندین توسعه دهنده اجازه دهید با متریک ها کار کنند و دسترسی داشته باشند بدون آنکه احتیاج به اعتبار ویژه Grafana داشته باشید.
با ورود به یک حساب GitHub مرتبط با سازمان خود شروع کنید و سپس به صفحه نمایه GitHub خود در https://github.com/settings/profile بروید.
محتوای تنظیمات را با کلیک بر روی نام در سمت چپ صفحه نمایش تغییر دهید، سپس سازمان خود را از منوی کشویی انتخاب کنید. این کار محتوا را از Personal settings به Organization settings تغییر میدهد.
در صفحه بعدی ، پروفایل سازمان خود را مشاهده خواهید کرد که می توانید تنظیماتی مانند نام صفحه نمایش سازمان ، ایمیل سازمان و URL سازمان خود را تغییر دهید.
از آنجا که Grafana از OAuth – برای تأیید اعتبار کاربران از طریق GitHub استفاده می کند (که یک استاندارد باز برای دسترسی به اشخاص ثالث از راه دور به منابع محلی است)، باید یک برنامه OAuth جدید در GitHub ایجاد کنید.
روی لینک OAuth Apps در زیر تنظیمات توسعه (Developer settings) در پایین سمت چپ صفحه نمایش کلیک کنید.
اگر از قبل هیچ برنامه OAuth مربوط به سازمان خود در GitHub ندارید ، با No Organization Owned Applications مواجه میشوید. در غیر این صورت لیستی از برنامه های OAuth را که قبلاً به حساب شما متصل شده اند ، خواهید دید.
برای ادامه بر روی دکمه New OAuth App
کلیک کنید.
در صفحه بعدی ، جزئیات زیر در مورد نصب Grafana خود را پر کنید:
⦁ Application name – به شما کمک می کند تا برنامه های مختلف OAuth خود را از یکدیگر متمایز کنید.
⦁ Homepage URL – به GitHub می گوید کجا می توانید Grafana را پیدا کنید.https: // your_domain را در این قسمت تایپ کنید و your_domain را جایگزین دامنه خود کنید.
⦁ Application Description – توضیحی را برای هدف برنامه OAuth شما ارائه می دهد.
⦁ Application callback URL – آدرسی است که پس از تأیید اعتبار با موفقیت برای کاربران ارسال می شود. برای Grafana ، این قسمت باید روی https://your_domain/login/github تنظیم شود.
به خاطر داشته باشید که کاربران Grafana که از طریق GitHub وارد سیستم می شوند مقادیری را که در سه قسمت قبلی وارد کرده اید ، مشاهده می کنند ، بنابراین حتماً چیزی معنی دار و مناسب را وارد کنید.
پس از اتمام کار ، فرم چیزی شبیه به این خواهد شد:

روی دکمه سبز ، ثبت نام برنامه کلیک کنید.
اکنون به صفحه ای حاوی Client ID و Client Secret مرتبط با برنامه جدید OAuth خود هدایت می شوید. هر دو مقدار را یادداشت کنید ، زیرا برای تکمیل تنظیمات باید آنها را به فایل اصلی پیکربندی Grafana اضافه کنید.
هشدار: مطمئن شوید که Client ID و Client Secret خود را در یک مکان امن و غیر عمومی نگه داری میکنید ، زیرا می توانند مورد حمله قرار گیرند.

با ایجاد برنامه GitHub OAuth خود ، اکنون آماده پیکربندی مجدد Grafana برای استفاده از GitHub جهت تأیید اعتبار هستید.
(اختیاری) مرحله 6 – پیکربندی Grafana به عنوان یک برنامه GitHub OAuth
برای تکمیل تأیید اعتبار GitHub برای تنظیم Grafana ، اکنون تغییراتی در فایل های پیکربندی Grafana خود اعمال خواهید کرد.
برای شروع ، فایل اصلی پیکربندی Grafana را باز کنید.
⦁ $ sudo nano /etc/grafana/grafana.ini

عنوان [auth.github] را بیابید و با حذف ; در ابتدای هر خط به جز ;allowed_domains = و ;team_ids= که در این آموزش تغییر نخواهد کرد ، این بخش را لغو کنید.
در مرحله بعدی ، این تغییرات را ایجاد کنید:
⦁ گزینه enabled و allow_sign_up را روی true تنظیم کنید. این امر تأیید هویت GitHub را انجام می دهد و به اعضای مجاز سازمان اجازه می دهد تا خودشان حساب ایجاد کنند. توجه داشته باشید که این تنظیمات با ویژگی allow_sign_up تحت [users] که در مرحله 4 تغییر کرده اید متفاوت است.
⦁ client_id و client_secret را روی مقادیری که هنگام ایجاد برنامه GitHub OAuth خود قرار داده اید تنظیم کنید.
⦁ allow _organizations را روی نام سازمان خود تنظیم کنید تا اطمینان حاصل شود که فقط اعضای سازمان شما می توانند عضو و وارد Grafana شوند.
پیکربندی کامل اینگونه خواهد بود:
/etc/grafana/grafana.ini

[auth.github]
enabled = true
allow_sign_up = true
client_id = your_client_id_from_github
client_secret = your_client_secret_from_github
scopes = user:email,read:org
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
api_url = https://api.github.com/user
;allowed_domains =
;team_ids =
allowed_organizations = your_organization_name

اکنون به Grafana که همه موارد لازم در مورد GitHub را گفته اید. برای تکمیل ستاپ ، باید تغییر مسیرها را در پشت پروکسی معکوس فعال کنید. این کار با تنظیم یک مقدار root_url تحت عنوان [server] انجام می شود.
/etc/grafana/grafana.ini

[server]
root_url = https://your_domain

پیکربندی خود را ذخیره کرده و فایل را ببندید.
سپس Grafana را مجدداً راه اندازی کنید تا تغییرات فعال شود:
⦁ $ sudo systemctl restart grafana-server

در آخر ، تأیید کنید که سرویس در حال اجرا است.
⦁ $ sudo systemctl status grafana-server

خروجی نشان می دهد که سرویس فعال (در حال اجرا) است.
اکنون با رفتن به https: // your_domain ، سیستم تأیید اعتبار جدید خود را آزمایش کنید. اگر قبلاً وارد Grafana شده اید ، موس خود را روی نماد آواتار در گوشه سمت چپ پایین صفحه حرکت دهید و روی منوی ثانویه که در کنار نام شما ظاهر می شود ، روی Sign Out کلیک کنید.
در صفحه ورود ، زیر دکمه اصلی ورود به سیستم یک بخش جدید مشاهده خواهید کرد که شامل دکمه ورود به سیستم با GitHub با آرم GitHub است.

بر روی دکمه ورود به سیستم با GitHub کلیک کنید تا به GitHub هدایت شوید ، در آنجا وارد حساب GitHub خود شوید و هدف خود را برای تأیید مجوز Grafana را تأیید کنید.
بر روی دکمه سبز ، Authorize your_github_organization کلیک کنید.
توجه: اطمینان حاصل کنید که حساب GitHub شما عضو سازمان تأیید شده شماست و آدرس ایمیل Grafana با آدرس ایمیل GitHub شما مطابقت دارد. اگر سعی کنید با یک حساب GitHub که عضو سازمان تأیید شده شما نیست ، تأیید اعتبار کنید ، یک پیام Login Failed دریافت خواهید کرد و به شما می گوید ، کاربر عضو یکی از سازمان های مورد نیاز نیست.
اکنون با حساب Grafana موجود خود وارد سیستم خواهید شد. اگر برای کاربری که با آن وارد سیستم شده اید قبلا حساب Grafana ایجاد نشده باشد ، Grafana یک حساب کاربری جدید با مجوز Viewer ایجاد می کند ، و اطمینان می دهد که کاربران جدید فقط می توانند از داشبوردهای موجود استفاده کنند.
برای تغییر مجوزهای پیش فرض برای کاربران جدید ، فایل اصلی پیکربندی Grafana را برای ویرایش باز کنید.
⦁ $ sudo nano /etc/grafana/grafana.ini

دستورالعمل auto_assign_org_role را تحت عنوان [users] بیابید و با حذف کردن ; در ابتدای خط آن را لغو کنید.
دستورالعمل را روی یکی از مقادیر زیر تنظیم کنید:
⦁ Viewer  – فقط می تواند از داشبوردهای موجود استفاده کند
⦁ Editor  – می تواند داشبوردها را استفاده کند، تغییر دهد و اضافه کند
⦁ Admin  – اجازه انجام همه کارها را دارد
این آموزش اختصاص خودکار به Viewer را انجام میدهد:
/etc/grafana/grafana.ini

[users]

auto_assign_org_role = Viewer

پس از ذخیره تغییرات ، فایل را ببندید و مجدداً Grafana را ریستارت کنید:
⦁ $ sudo systemctl restart grafana-server

وضعیت سرویس را بررسی کنید:
⦁ $ sudo systemctl status grafana-server

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

 

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

چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهید

نحوه ایجاد نماها (Views) برای توسعه وب Django

نصب Mount NFS در اوبونتو 20.04

نحوه توسعه برنامه ها در Kubernetes با Okteto

نصب و پیکربندی Laravel با Nginx در اوبونتو 20.04

نحوه تنظیم Jupyter Notebook با پایتون در Ubuntu 20.04

نصب Jitsi Meet در Debian 10

نصب و پیکربندی Nextcloud در اوبونتو 20.04

نصب و پیکربندی Ansible در اوبونتو 20.04

مقدمه ای بر مدیریت پیکربندی با Ansible

نحوه نصب R روی اوبونتو 20.04

ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04

نصب و پیکربندی Postfix در اوبونتو 20.04

ارائه برنامه های Flask با Gunicorn و Nginx اوبونتو 20

ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04

تنظیم پلتفرم Cloud IDE کد سرور در اوبونتو 20

کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04

نصب و ایمن سازی Grafana در اوبونتو 20.04

نحوه نصب Git در Ubuntu 20.04

 

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

Prosody یک سرور چت XMPP است که از چت روم های تکی و گروهی یک به یک رمزگذاری شده توسط TLS پشتیبانی می کند. XMPP (پروتکل حضور و پیام رسانی گسترده) یک پروتکل پیام رسانی باز است که به طور رسمی با عنوان Jabber شناخته می شود. این بدان معنی است که هر کلاینت چت XMPP قادر خواهد بود به یک سرور Prosody وصل شود و چت را شروع کند.
XMPP یک استاندارد کامل و آزاد است که توسط  Internet Engineering Task Force (IETF) نگهداری می شود. این برنامه در بسیاری از برنامه ها مانند Google Talk که توسط میلیون ها کاربر استفاده می شود ، بطور فعال نگهداری و به کار گرفته می شود. سرورهای XMPP ، مانند Prosody ، گزینه ای قابل انعطاف برای سرور چت هستند که بیش از دو دهه است که وجود دارند.
در این آموزش ، یک سرور Prosody را نصب و پیکربندی میکنید که از جلسات چت یک به یک و گروهی و امکان بارگذاری فایل ها در پنل چت برای اشتراک گذاری پشتیبانی می کند. تمام جلسات چت توسط گواهی رمزنگاری TLS محافظت می شود تا اطلاعات شخصی شما خصوصی بماند.
پیش نیازها
قبل از شروع این راهنما به موارد زیر نیاز خواهید داشت:
یک سرور Ubuntu 18.04 با حداقل 512 مگابایت رم که با دنبال کردن راهنمای ستاپ اولیه سرور برای اوبونتو 18.04 تنظیم شده باشد، شامل یک کاربر فعال با sudo ، غیر ریشه و یک فایروال.
• یک کلاینت چت XMPP که روی سیستم محلی شما نصب شده باشد. هر یک از برنامه های چت که در صفحه کلاینت XMPP ذکر شده است با سرور Prosody شما سازگار خواهد بود.
• دو نام هاست که به سرور شما اشاره کنند. شما به دو نام هاست نیاز دارید زیرا Prosody از یک هاست برای چت مستقیم و از دیگری برای اتاق های گفتگوی گروهی استفاده می کند. این راهنما از دو نام هاست مثال زیر استفاده خواهد کرد:
chat.your-domain : نام هاست چت یک به یک.
room.your-domain : نام هاست چت گروهی.
به عنوان کاربر فعال با sudo و غیر ریشه برای شروع این راهنما به سرور خود وارد شوید.
مرحله 1 – نصب Prosody
در این مرحله مخزن Prosody APT سفارشی را به سرور خود اضافه می کنید و سپس Prosody را از آن نصب می کنید. برای اطمینان از نصب جدیدترین بسته ها از مخزن Prosody استفاده می کنید.
ابتدا با ویرایشگر متن خود یک فایل مخزن جدید ایجاد و آن را باز کنید. این فایل اطلاعات مخزن Prosody را برای مدیر بسته APT در اختیار دارد:
⦁ $ sudo nano /etc/apt/sources.list.d/prosody.list

خط زیر را در فایل خود اضافه کنید:
/etc/apt/sources.list.d/prosody.list
deb https://packages.prosody.im/debian bionic main

حال باید کلید عمومی Prosody APT را دانلود و نصب کنید. سرور شما از این مسئله استفاده خواهد کرد تا تأیید کند بسته Prosody توسط تیم Prosody ساخته شده است و معتبر است.
دستور زیر از ابزار wget برای دانلود کلید در دیرکتوری فعلی شما استفاده می کند:
⦁ $ wget https://prosody.im/files/prosody-debian-packages.key

برای افزودن کلید Prosody به حلقه کلید APT از دستور apt-key add استفاده کنید:
⦁ $ sudo apt-key add prosody-debian-packages.key

اکنون می توانید کلید را حذف کنید زیرا دیگر نیازی به آن ندارید:
⦁ $ rm prosody-debian-packages.key

بانک اطلاعات بسته سرور خود را به روز کنید تا نسخه های جدیدتر بسته از مخزن Prosody را شامل شود:
⦁ $ sudo apt update

اکنون آماده نصب بسته سرور Prosody و برخی بسته های اختیاری دیگر هستید:
⦁ $ sudo apt install prosody prosody-modules lua-dbi-sqlite3 lua-event

بسته های نصب شده به شرح زیر است:
prosody: سرور prosody.
prosody-modules : ماژول های Prosody اضافی که عملکرد سرور Prosody را گسترش می دهد.
lua-dbi-sqlite3 : استفاده از یک پایگاه داده SQLite را برای Prosody ممکن میسازد.
lua-event: Prosodyرا قادر می سازد کلاینت های همزمان بیشتری را اداره کند.
اکنون نصب Prosody به پایان رسیده است. در مرحله بعد ، دو گواهینامه TLS دریافت خواهید کرد که Prosody برای رمزگذاری داده های خود از طریق اینترنت و از طریق سرور Prosody از آنها استفاده می کند.
مرحله 2 – اخذ گواهینامه های TLS
Prosody از گواهینامه های TLS برای رمزگذاری اتصالات بین سرور و کلاینت استفاده می کند. این گواهینامه ها همان مواردی هستند که هر زمان که از وب سایت با آدرس HTTPS بازدید می کنید ، از آن استفاده می نمایید. Let’s Encrypt یک سازمان بدون بهره وری است که گواهینامه های TLS رایگان ارائه می دهد. همچنین ابزار certbot را برای دریافت و مدیریت گواهینامه های خود ارائه می دهند. در این مرحله شما می توانید ابزار certbot را نصب کرده و از آن برای گرفتن یک جفت گواهی برای دو نام هاست مورد نظر خود به سرور خود استفاده کنید.
برای اطمینان از استفاده از جدیدترین بسته ها ، certbot  را از مخازن PPA اوبونتو Let’s Encrypt نصب خواهید کرد.
ابتدا دستور زیر را برای اضافه کردن مخزن سفارشی اجرا کنید:
⦁ $ sudo add-apt-repository ppa:certbot/certbot

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

در مرحله بعد ، اجازه ترافیک HTTP از طریق UFW را بدهید تا certbot بتواند به کارگیری گواهی شما را تأیید کند:
⦁ $ sudo ufw allow http

دستور certbot زیر را اجرا کنید ، که گواهی یکی از نام های هاست شما را دریافت می کند:
⦁ $ sudo certbot certonly –standalone –agree-tos –email your_email -d chat.your-domain

این گزینه ها عبارتند از:
– –certonly : گواهینامه را دریافت کنید و هیچ تغییر دیگری در سرور ایجاد نکنید.
–standalone : یک سرور وب موقت را برای تایید اعتبار گواهی راه اندازی کنید.
–agree-tos: بطور خودکار با شرایط سرویس Let’s Encrypt موافقت کنید.
–email your_email : آدرس ایمیلی که شما برای Let’s Encrypt ارسال می کنید تا از آنها استفاده کنند و در مورد مسائل امنیتی ، اعلام انقضای گواهی و سایر اطلاعات مهم به شما اطلاع دهند.
-d chat.your-domain: نام میزبانی که قصد استفاده از آن را برای سرور Prosody خود دارید.
هنگامی که این دستور را اجرا می کنید از شما سؤال می شود که آیا می خواهید آدرس ایمیل خود را با بنیاد الکترونیکی Frontier به اشتراک بگذارید ، که اختیاری است. سپس ثبت نام سرتیفیکیت با خروجی زیر ادامه خواهد یافت:
Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/chat.your-domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/chat.your-domain/privkey.pem
Your cert will expire on 2020-07-26. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
“certbot renew”
– If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

دوباره همین دستور را اجرا کنید تا یک گواهی برای نام هاست دوم خود دریافت کنید.
اکنون دو دایرکتوری دارید:
⦁ /etc/letsencrypt/live/room.your-domain
⦁ /etc/letsencrypt/live/chat.your-domain

این دایرکتوری ها حاوی گواهی و فایلهای کلیدی برای نامهای هاست شما هستند.
از آنجا که سرور Prosody به عنوان کاربر اصلی کار نمی کند ، مالکیت و مجوزهای دایرکتوری ها و فایل های کلیدی نیاز به تغییر دارد تا سرور Prosody بتواند آنها را بخواند و از آنها استفاده کند.
مجوز فایل ها و دایرکتوری ها در لینوکس این امکان را به شما می دهد که کاربران و پردازش ها بتوانند دایرکتوری ها و پوشه ها را بخوانند ، بنویسند و اجرا کنند. این کنترل از تغییر سیستم توسط یک کاربر غیر مجاز محافظت می کند و همچنین از خوانده شدن فایل های خصوصی مانند کلید خصوصی TLS توسط یک کاربر غیر مجاز محافظت می کند.
اگر با کاربران و مجوزهای لینوکس آشنا نیستید مقاله مقدمه ای بر مجوزهای لینوکس مطالبی عالی را ارائه می دهد.
اولین قدم برای تغییر گروه مالک کلیدهای خصوصی به گروه سرور Prosody با دستورات زیر است:
⦁ $ sudo chgrp prosody /etc/letsencrypt/live/room.your-domain/privkey.pem

⦁ $ sudo chgrp prosody /etc/letsencrypt/live/chat.your-domain/privkey.pem

ابزار chgrp مالکیت گروهی فایل ها و دیرکتوری ها را تغییر می دهد. در اینجا ، شما گروه را از root پیش فرض به prosody تغییر داده اید.
سپس ، مجوزهای دایرکتوری هایی که حاوی فایل های گواهی TLS هستند را به 0755 تغییر دهید. این دایرکتوری ها متعلق به کاربر root و گروه root هستند. دستور زیر مجوزهای موجود در این دیرکتوری ها را تغییر می دهد:
⦁ $ sudo chmod 0755 /etc/letsencrypt/archive

⦁ $ sudo chmod 0755 /etc/letsencrypt/live

مجوزهای جدید 0755 در این دیرکتوری ها بدان معنی است که کاربر اصلی ، مجوزهای خواندن ، نوشتن و اجرای مجوزها را دارد. اعضای گروه اصلی مجوزها را خوانده و اجرا می کنند. سایر کاربران و گروه های موجود در سیستم مجوزهای خواندن و اجرای آنها را دارند.
اکنون مجوزهای کلیدهای خصوصی TLS را تغییر دهید:
⦁ $ sudo chmod 0640 /etc/letsencrypt/live/room.your-domain/privkey.pem

⦁ $ sudo chmod 0640 /etc/letsencrypt/live/chat.your-domain/privkey.pem

مجوزهای 0640 در این فایل ها بدین معنی است که کاربر اصلی دارای مجوزهای خواندن و نوشتن روی فایل است. اعضای گروه Prosody مجوزهای مربوط به خواندن فایل را دارند. گروه Prosody یک عضو دارد ، کاربر Prosody . کاربری است که سرور Prosody با آن اجرا می شود و کاربری که با آن به فایل دسترسی خواهد داشت. همه کاربران دیگر در سیستم اجازه دسترسی به فایل را ندارند.
این دو دستور از ابزار chmod استفاده می کنند که کاربران و گروه هایی را که مجوزهای خواندن ، نوشتن و اجرا در فایل ها و دایرکتوری ها را دارند تعیین می کنند.
شما می توانید آزمایش کنید که Prosody می تواند کلیدهای خصوصی را با استفاده از sudo برای خواندن فایل های کلید خصوصی با cat به عنوان کاربر prosody بخواند:
⦁ $ sudo -u prosody cat /etc/letsencrypt/live/chat.your-domain/privkey.pem

اگر موفقیت آمیز بود ، می توانید محتویات فایل کلیدی نمایش داده شده روی صفحه خود را مشاهده کنید.
Prosody برای رمزگذاری اتصالات آپلود و دانلود فایل ، از یک فایل واحد حاوی گواهی و کلید خصوصی استفاده می کند. این فایل توسط certbot بطور خودکار ایجاد نمی شود بنابراین باید آن را بصورت دستی ایجاد کنید.
ابتدا وارد پوشه ای خواهید شد که حاوی فایل های کلید و گواهینامه است ، سپس از cat استفاده کنید تا محتوای آنها را در یک فایل جدید key-and-cert.pem ترکیب کنید:
⦁ $ cd /etc/letsencrypt/live/chat.your-domain/

⦁ $ sudo sh -c ‘cat privkey.pem fullchain.pem >key-and-cert.pem’

آغاز این دستور ، sudo sh-c ، یک زیر پوسته جدید را باز می کند که دارای مجوزهای کاربر اصلی است و می تواند فایل جدید را روی /etc/letsencrypt/live/chat.your-domain/ بنویسید.
اکنون گروه و مجوزهای این فایل جدید را تغییر دهید تا با گروه و مجوزهای تنظیم شده برای سایر کلیدهای خصوصی با دستور زیر مطابقت داشته باشد:
⦁ $ sudo chmod 0640 key-and-cert.pem

⦁ $ sudo chgrp prosody key-and-cert.pem

به دیرکتوری هوم کاربرتان بازگردید:
⦁ $ cd

سرانجام ، هر زمان که گواهی تجدید شود یا حاوی یک گواهی منقضی شده باشد ، باید این فایل دوباره ایجاد شود.
certbot با مکانیسمی به نام ” hook ” همراه است که اجازه می دهد قبل یا بعد از تمدید مجوز ، اسکریپت اجرا شود. شما می توانید از این مکانیزم برای اجرای یک اسکریپت استفاده کنید که پس از هر بار تجدید گواهی ، دستوری را که اجرا کردید ، دوباره ایجاد کند.
فایل اسکریپت جدید با نام /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh را با یک ویرایشگر متن باز کنید:
⦁ $ sudo nano /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh

سپس موارد زیر را به ویرایشگر اضافه کنید:
/etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh
#!/usr/bin/env bash
set -e

# combines the certificate and key into a single file with cat
cat /etc/letsencrypt/live/chat.your-domain/privkey.pem \
/etc/letsencrypt/live/chat.your-domain/fullchain.pem \
>/etc/letsencrypt/live/chat.your-domain/key-and-cert.pem

به این ترتیب فیلمنامه Bash شما تجزیه می شود:
⦁ #!/usr/bin/env bash : به سیستم می گوید از مترجم Bash برای اجرای اسکریپت استفاده کند.
⦁ set –e: در صورت عدم موفقیت ، باعث خروج اسکریپت میشود.
⦁ > : خروجی دستور cat را در فایل جدید سمت راست تغییر دهید.
اسکریپت را نمی توان اجرا کرد تا زمانی که به شما اجازه اجرای دستور زیر را بدهد:
⦁ $ sudo chmod +x /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh

+ x به اسکریپت مجوزهای اجرا را می دهد.
سپس ، آزمایش کنید که گواهینامه ها به درستی نصب شده باشند و اسکریپت hook بعد از تمدید با اجرای دستور certbot زیر کار می کند:
⦁ $ sudo certbot renew –dry-run

این دستور به certbot می گوید تا گواهینامه ها را تمدید کند اما با گزینه –dry-run که باعث می شود هر گونه تغییری در certbot متوقف شود. اگر همه چیز موفقیت آمیز باشد ، خروجی زیر را مشاهده خواهید کرد:
Output
Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/chat.your-domain/fullchain.pem (success)
/etc/letsencrypt/live/room.your-domain/fullchain.pem (success)
** DRY RUN: simulating ‘certbot renew’ close to cert expiry
** (The test certificates above have not been saved.)
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Running post-hook command: /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh

اکنون مجوزهای TLS را برای سرور Prosody خود را دریافت کرده اید. در مرحله بعد ، فایل پیکربندی اصلی Prosody را ویرایش می کنید.
مرحله 3 – پیکربندی Prosody
Prosody گزینه های پیکربندی زیادی دارد و این در اندازه بزرگ فایل پیکربندی اصلی /etc/prosody/prosody.cfg.lua منعکس می شود. برای مدیریت این بخش از ابتدای فایل به سمت پایین کار خواهید کرد و ویرایشهایی را در فایل انجام می دهید.
قبل از شروع ویرایش یک فایل پیکربندی بزرگ ، بهتر است که یک نسخه کپی تهیه کنید تا نسخه اصلی را برای بازگشت به آن یا بازیابی داشته باشید. یک کپی از پیکربندی را با دستور cp تهیه کنید:
⦁ $ sudo cp /etc/prosody/prosody.cfg.lua /etc/prosody/prosody.cfg.lua.original

اکنون یک نسخه از فایل اصلی در /etc/prosody/prosody.cfg.lua.original دارید.
سپس ، فایل پیکربندی را با یک ویرایشگر متن باز کنید:
⦁ $ sudo nano /etc/prosody/prosody.cfg.lua

در بخش های بعدی تغییرات پیکربندی به کارهای کوچکتر تقسیم می شوند.
ایجاد یک ادمین
ادمین های Prosody کاربرانی هستند که می توانند از طریق کلاینت چت خود ، روی سرور Prosody تغییراتی ایجاد کنند ، به همه کاربران پیام دهند و سایر اقدامات ویژه را انجام دهند.
ادمین های سرور Prosody با خط زیر تنظیم شده اند:
/etc/prosody/prosody.cfg.lua

admins = { }

در این خط مثال ، کاربر admin به مثال سرورchat.your-domain شما اضافه می شود:
/etc/prosody/prosody.cfg.lua

admins = { “admin@chat.your-domain” }

اگر می خواهید کاربر دیگری اضافه کنید ، باید کاما را بعد از اولی قرار دهید:
/etc/prosody/prosody.cfg.lua

admins = { “admin@chat.your-domain”, “sammy@chat.your-domain” }

فعال کردن ماژول های Prosody
توسعه دهندگان Prosody ویژگی های بسیاری را در ماژول هایی قرار داده اند که می توانند فعال یا غیرفعال شوند.
با حذف — یک ماژول که قبل از آن آمده است، فعال می شود. به عنوان مثال ، در اینجا ، ماژول tls غیرفعال است:
Module Disabled
–“tls”; — Add support for secure TLS on c2s/s2s connections

و در اینجا فعال است:
Module Enabled
“tls”; — Add support for secure TLS on c2s/s2s connections

در ادامه این پاراگراف بخش ماژول های ویرایش شده در فایل پیکربندی Prosody با خطوط ویرایش شده، هایلایت گردیده است:
/etc/prosody/prosody.cfg.lua

modules_enabled = {

— Generally required
“roster”; — Allow users to have a roster. Recommended 😉
“saslauth”; — Authentication for clients and servers. Recommended if you want to log in.
“tls”; — Add support for secure TLS on c2s/s2s connections
“dialback”; — s2s dialback support
“disco”; — Service discovery

— Not essential, but recommended
“carbons”; — Keep multiple clients in sync
“pep”; — Enables users to publish their avatar, mood, activity, playing music and more
“private”; — Private XML storage (for room bookmarks, etc.)
“blocklist”; — Allow users to block communications with other users
“vcard4”; — User profiles (stored in PEP)
“vcard_legacy”; — Conversion between legacy vCard and PEP Avatar, vcard

— Nice to have
“version”; — Replies to server version requests
“uptime”; — Report how long server has been running
“time”; — Let others know the time here on this server
“ping”; — Replies to XMPP pings with pongs
“register”; — Allow users to register on this server using a client and change passwords
“mam”; — Store messages in an archive and allow users to access it
“csi_simple”; — Simple Mobile optimizations

— Admin interfaces
“admin_adhoc”; — Allows administration via an XMPP client that supports ad-hoc commands
–“admin_telnet”; — Opens telnet console interface on localhost port 5582

— HTTP modules
–“bosh”; — Enable BOSH clients, aka “Jabber over HTTP”
–“websocket”; — XMPP over WebSockets
“http_files”; — Serve static files from a directory over HTTP
“http_upload”; — Enables file sharing between users

— Other specific functionality
–“limits”; — Enable bandwidth limiting for XMPP connections
“groups”; — Shared roster support
–“server_contact_info”; — Publish contact information for this service
“announce”; — Send announcement to all online users
–“welcome”; — Welcome users who register accounts
–“watchregistrations”; — Alert admins of registrations
–“motd”; — Send a message to users when they log in
–“legacyauth”; — Legacy authentication. Only used by some old clients and bots.
–“proxy65”; — Enables a file transfer proxy service which clients behind NAT can use
}

ماژول های فعال شده شما به شرح زیر است:
⦁ mam: پیامهای چت را روی سرور ذخیره می کند تا کاربران بتوانند آنها را بازیابی کنند.
⦁ csi_simple: بهینه سازی ها را برای کلاینت های تلفن همراه فعال می کند.
⦁ http_files: اشتراک گذاری فایل را فعال می کند.
⦁ http_uploads: اشتراک گذاری فایل را فعال می کند.
⦁ groups: دید کاربر را فعال می کند.
⦁ announce: مدیر را قادر می سازد اعلان ها را برای همه کاربران ارسال کند.
تنظیم ذخیره سازی بانک اطلاعاتی
بخش بعدی که باید ویرایش کنید، تعیین میکند که Prosody پیام کاربران و سایر داده ها را در کجا ذخیره کند. تنظیمات پیش فرض استفاده از فایل های متنی است ، اما پیکربندی مقیاس پذیرتر ذخیره پیام ها در یک پایگاه داده است.
Prosody سه گزینه برای پایگاه داده ها ارائه می دهد. MySQL ، PostgreSQL و. SQLite راه اندازی و نگهداری SQLite ساده تر است، از کمترین منابع استفاده می کند و برای استقرارهای کوچکتر مناسب است.
با برداشتن خط اصلی ، دو خط زیر را فعال کنید – به شرح زیر:
/etc/prosody/prosody.cfg.lua

storage = “sql” — Default is “internal”

sql = { driver = “SQLite3”, database = “prosody.sqlite” } — Default. ‘database’ is the filename.

بایگانی پیام
با ویرایش خط زیر می توانید تعیین کنید چه مدت سرور پیام های چت قدیمی را ذخیره کند:
/etc/prosody/prosody.cfg.lua

archive_expires_after = “1w” — Remove archived messages after 1 week

دوره پیش فرض یک هفته نشان داده میشود. از d برای روزها ، w برای هفته ها و y برای سالها استفاده کنید.
رمزگذاری آپلودها و دانلود های فایل
خط https_certificate به Prosody می گوید که کجا به دنبال گواهی ترکیبی و کلیدی که قبلاً ایجاد کرده اید برای استفاده در انتقال فایل بگردد.
آن را ویرایش کنید تا از مسیر فایل ترکیبی شما استفاده کند:
/etc/prosody/prosody.cfg.lua

https_certificate = “/etc/letsencrypt/live/chat.your-domain/key-and-cert.pem”

حذف localhost
در پیکربندی پیش فرض ، Prosody برای اتصالات چت به localhost یا 127.0.0.1 گوش می دهد. این مورد برای سرور راه دور نیاز نیست.
این رفتار با اضافه کردن — به خط غیرفعال کنید به طوری که بعد از ویرایش اینگونه به نظر برسد:
/etc/prosody/prosody.cfg.lua

–VirtualHost “localhost”

تغییر حداکثر اندازه بارگذاری فایل
سرور Prosody شما با ضمیمه کردن فایل های اشتراک گذاری کاربران به پنجره های چت، از آن ها پشتیبانی می کند. حداکثر اندازه پیش فرض فایل هایی که کاربران می توانند به اشتراک بگذارند یک مگابایت است.
با افزودن خط زیر به انتهای پیکربندی ، این حد را روی مقدار بالاتری تنظیم کنید:
/etc/prosody/prosody.cfg.lua

http_upload_file_size_limit = 10485760

عدد در انتهای خط حداکثر اندازه فایل در بایت است. اندازه نشان داده شده در اینجا 10485760 بایت یا 10 مگابایت است. وب سایت GbMb ابزاری مفید برای تبدیل مگابایت به بایت فراهم می کند.
اگر می خواهید دانلود فایل های بزرگتر از 10 مگابایت مجاز باشد ، باید خط دیگری را اضافه کنید که متغیر http_max_content_size را تنظیم کند. http_max_content_size باید بزرگتر از حداکثر اندازه آپلود فایل باشد.
در اینجا ، حداکثر اندازه فایل روی 20 مگابایت (20971520 بایت) و http_max_content_size روی 30 مگابایت تنظیم شده است:
/etc/prosody/prosody.cfg.lua

http_upload_file_size_limit = 20971520
http_max_content_size = 31457280

http_max_content_size 50 را 50% بزرگتر از حداکثر اندازه فایل تنظیم کنید.
پیکربندی فایل گروه ها
ماژول groups که در بخش ماژول ها فعال کرده اید به کلاینت های چت اجازه می دهد تا یکدیگر را ببینند.
ماژول groups فایلی را می خواند که اسامی گروه و اعضای آنها را در خود جای می دهد. با اضافه کردن خط زیر در پایین تنظیمات ، مکان و نام فایل را تنظیم کنید:
/etc/prosody/prosody.cfg.lua

groups_file = “/etc/prosody/sharedgroups.txt”

این خط Prosody را پیکربندی می کند تا فایلی را در /etc/prosody/sharedgroups.txt برای جمع آوری اطلاعات گروهی بخواند. این فایل را در مرحله 4 با کاربران و گروه ها پر می کنید.
این فایل را با دستور زیر در ترمینال متفاوت ایجاد کنید:
⦁ $ sudo touch /etc/prosody/sharedgroups.txt

ابزار touch وقتی از گزینه های اضافی استفاده نمی شود ، یک فایل خالی ایجاد می کند.
اضافه کردن پیکربندی سرور چت VirtualHost
Prosody برای راه اندازی سرور چت که از نام هاست شما استفاده می کند از یک بلوک پیکربندی که با VirtualHost شروع می شود استفاده می کند.
بلوک پیکربندی زیر را به انتهای پیکربندی اضافه کنید:
/etc/prosody/prosody.cfg.lua

VirtualHost “chat.your-domain”
ssl = {
key = “/etc/letsencrypt/live/chat.your-domain/privkey.pem”;
certificate = “/etc/letsencrypt/live/chat.your-domain/fullchain.pem”;
}

گزینه های پیکربندی:
VirtualHost: نام هاستی که Prosody برای سرور چت از آن استفاده می کند.
key: کلید خصوصی TLS که برای امنیت اتصالات چت استفاده می شود.
certificate: گواهینامه خصوصی TLS که از آن برای امنیت اتصالات چت استفاده می شود.
اضافه کردن سرور اتاق چت
این پیکربندی Prosody را قادر می سازد اتاق های چت چند کاربره را به کاربران خود ارائه دهد. در بخش جدید بلوک پیکربندی زیر را در پایین فایل پیکربندی اضافه کنید:
/etc/prosody/prosody.cfg.lua

Component “room.your-domain” “muc”
modules_enabled = { “mam_muc”; }
storage = { muc_log = “sql”; }
ssl = {
key = “/etc/letsencrypt/live/room.your-domain/privkey.pem”;
certificate = “/etc/letsencrypt/live/room.your-domain/fullchain.pem”;
}

گزینه های استفاده شده:
Component: muc (چت چند کاربره) را قادر می سازد تا از نام هاست room.your-domain استفاده کند.
modules_enabled = { “mam_muc”; } : بایگانی پیام گروه های گفتگو را فعال می کند.
:storage پیام های چت را روی پایگاه داده SQLite بایگانی میکند
key : کلید خصوصی TLS که برای امنیت اتصالات چت استفاده می شود.
Certificate: گواهینامه خصوصی TLS که از آن برای امنیت اتصالات چت استفاده می شود.
ویرایشگر را ذخیره کرده و از آن خارج شوید.
اکنون ، Prosody را ریستارت کنید تا پیکربندی جدید اعمال شود:
⦁ $ sudo systemctl restart prosody.service

اکنون ویرایش فایل پیکربندی اصلی Prosody را انجام داده اید. در مرحله بعد یک کاربر Prosody اضافه کرده و آنها را به گروه اضافه می کنید.
مرحله 4 – اضافه کردن کاربران و گروههای Prosody
قبل از ورود به سیستم ، باید کاربران Prosody را به سرور Prosody خود در خط فرمان اضافه کنید. برای کمک به مدیریت سرور Prosody از ابزار prosodyctl که با بسته prosody تهیه شده است ، استفاده خواهید کرد.
برای اضافه کردن کاربر جدید از دستور prosodyctl زیر استفاده کنید:
⦁ $ sudo prosodyctl register sammy chat.your-domain password

این کاربر هم اکنون می تواند به سرور Prosody شما متصل شود.
اگر برخی از گروهها را ایجاد کنید که به کابران اجازه دهند یکدیگر و وضعیت یکدیگر را ببینند ، کاربران از شما قدردانی می کنند. شما این کار را با ایجاد گروه ها و اضافه کردن کاربران به آنها با فایل گروهی که قبلاً تعریف کرده بودید انجام میدهید.
فایل گروه را باز کنید:
⦁ $ sudo nano /etc/prosody/sharedgroups.txt

گروه با قرار دادن نام آن بین براکت ها تنظیم می شود. اعضای گروه در زیر خط جدیدی با نام گروه قرار می گیرند. شما می توانید هر تعداد گروه که می خواهید ایجاد کنید و کاربران می توانند در بیش از یک گروه عضو باشند.
در اینجا ، گروهی به نام Everyone وجود دارد که دو عضو دارد: sammy  و admin .
/etc/prosody/sharedgroups.txt
[Everyone]
sammy@chat.your-domain
admin@chat.your-domain

همه اعضای یک گروه قادر خواهند بود اعضای دیگر را بصورت آنلاین یا غیر آنلاین ببینند.
هر زمان که کاربران جدید اضافه کنید یا اطلاعات گروه را تغییر دهید باید سرور Prosody را مجدداً راه اندازی کنید:
⦁ $ sudo systemctl restart prosody.service

تمام آنچه که برای پیکربندی سرور باقی مانده است این است که به Prosody اجازه دهید از طریق فایروال ارتباط برقرار کند ، که در بخش بعدی انجام خواهید داد.
مرحله 5 – مجاز کردن ترافیک Prosody از طریق فایروال
Prosody اتصالات کلاینت را روی پورت های TCP 5222 و 5322 گوش می دهد. برای باز کردن این پورت ها در UFW از دستور زیر استفاده کنید:
⦁ $ sudo ufw allow 5222,5322/tcp

سرور prosody اکنون کاملاً نصب و پیکربندی شده است.
اکنون می توانید با یک کلاینت چت به سرور Prosody خود متصل شوید. در مرحله بعد ، شما یک کلاینت XMPP را در سیستم محلی یا تلفن هوشمند خود پیکربندی می کنید تا به سرور Prosody خود متصل شوید.
مرحله 6 – پیکربندی یک کلاینت چت XMPP
در این مرحله ، کلاینت XMPP خود را روی سرور Prosody پیکربندی می کنید. برای اتصال باید نام کاربری ، نام هاست سرور و رمز عبور خود را وارد کنید.
سرور Prosody را برای استفاده از پورت های استاندارد XMPP پیکربندی کرده اید و از امنیت TLS به طور خودکار مراقبت خواهد شد ، بنابراین نیازی به تنظیم آنها برای اتصال به کلاینت خود نخواهید داشت.
کلاینت های مختلف چت ممکن است نام کاربری ، رمز عبور و نام هاست سرور را در قالب های مختلف بخواهند. نام کاربری و نام هاست سرور بعضی اوقات مانند یک آدرس ایمیل مانند sammy@chat.your-domain کنار هم قرار می گیرند. آدرس ایمیل می تواند Username  یا XMPP Address باشد.
این تصویر صفحه ورود را برای کلاینت PSI نشان می دهد که باید نام کاربری و نام میزبان سرور در فرم آدرس ایمیل وارد شود.

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

کلاینتان XMPP برای ورود به سیستم به جزئیات بیشتری از نام کاربری ، رمز عبور و نام میزبان سرور احتیاج ندارند. جایی که این توسط کلاینت شما پشتیبانی می شود.
نتیجه
در این مقاله شما سرور Prosody را با ویژگی های زیر تنظیم می کنید:
• رمزگذاری TLS
• اتاق های چت و گفتگوی گروهی یک به یک.
• به اشتراک گذاری فایل
همچنین یک کلاینت چت XMPP را تنظیم کرده اید تا از همه این ویژگی ها استفاده کند و با دوستان و همکاران خود چتی غنی از ویژگی ها به شما ارائه دهد.
اگر به دنبال گزینه های منبع باز دیگر برای ارتباط از راه دور هستید ، آموزش های نحوه نصب Jitsi Meet را بررسی کنید.

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

FreeBSD یک سیستم عامل ایمن و با کارایی بالا است که برای انواع نقش های سرور مناسب است. در این راهنما ، ما اطلاعات اصلی در مورد چگونگی شروع کار با یک سرور FreeBSD را پوشش خواهیم داد.
این راهنما برای این در نظر گرفته شده تا یک ستاپ کلی برای سرورهای FreeBSD ارائه دهد ، اما توجه داشته باشید که نسخه های مختلف FreeBSD ممکن است دارای ویژگی های مختلفی باشند. بسته به نوع نسخه FreeBSD سرور شما در حال اجرا است ، دستورالعمل های ارائه شده در اینجا ممکن است مطابق توضیحات کار نکند.
ورود به سیستم با SSH
اولین قدم برای شروع پیکربندی سرور FreeBSD این است که وارد شوید.
برای ورود به سرور FreeBSD خود ، از دستور ssh استفاده کنید. شما باید حساب کاربری freebsd را به همراه آدرس IP عمومی سرور خود مشخص کنید:
⦁ $ ssh freebsd@your_server_ip

باید به طور خودکار تأیید و وارد سیستم شوید. به یک رابط خط فرمان هدایت می شوید.
تغییر پوسته پیش فرض به tcsh (اختیاری)
اگر تازه کار با FreeBSD را شروع کرده اید ، اعلان فرمان نمایش داده شده ممکن است برای شما ناآشنا به نظر برسد. بیایید در مورد نوع محیطی که ما در آن کار می کنیم ، توضیحاتی بدست آوریم. دستور زیر را اجرا کنید تا ببینید پوسته پیش فرض برای کاربر freebsd  شما چیست:
⦁ $ echo $SHELL

Output
/bin/sh

در این خروجی ، می بینید که پوسته پیش فرض برای کاربر frebsd sh ، sh است (که به پوسته Bourne  نیز معروف است). در سیستم های لینوکس ، sh اغلب یک اسم مستعار برای bash است ، یک جایگزین نرم افزار رایگان برای پوسته Bourne  که شامل چند ویژگی اضافی است. با این حال ، در FreeBSD ، برنامه پوسته کلاسیک sh است ، نه یک نام مستعار.
پوسته خط فرمان پیش فرض برای FreeBSD ، tcsh است . اگر می خواهید tcsh را به عنوان پوسته پیش فرض کاربر FreeBSD خود تنظیم کنید ، دستور زیر را اجرا کنید:
⦁ $ sudo chsh -s /bin/tcsh freebsd

دفعه بعدی که به سرور خود وارد شوید ، اعلان tcsh را به جای اعلان sh مشاهده می کنید. با اجرای برنامه می توانید از پوسته tcsh برای جلسه فعلی استفاده کنید:
⦁ $ tcsh

اعلان شما باید به شرح زیر تغییر کند:
freebsd@hostname:~ %
اگر می خواهید به پوسته Bourne برگردید می توانید با دستور sh این کار را انجام دهید.
اگرچه tcsh به طور معمول پوسته پیش فرض برای سیستم های FreeBSD است ، اما دارای چندین تنظیمات پیش فرض است که کاربران تمایل دارند خودشان تغییر دهند ، مانند پیجر و ویرایشگر پیش فرض و همچنین رفتار برخی از کلیدهای خاص. برای نشان دادن نحوه تغییر برخی از این پیش فرض ها ، فایل پیکربندی پوسته را اصلاح می کنیم.
یک فایل پیکربندی نمونه در حال حاضر در سیستم فایل موجود است. آن را در دیرکتوری هوم خود کپی کنید تا بتوانید به صورت دلخواه آن را تغییر دهید:
⦁ freebsd@hostname:~ % cp /usr/share/skel/dot.cshrc ~/.cshrc

پس از کپی کردن فایل در دیرکتوری خانه ، می توانید آن را ویرایش کنید. ویرایشگر vi بصورت پیش فرض در سیستم گنجانده شده است ، اما اگر می خواهید ویرایشگر ساده تری داشته باشید ، می توانید به جای آن ویرایشگر ee را امتحان کنید:
⦁ freebsd@hostname:~ % ee ~/.cshrc

وقتی این فایل را مرور می کنید ، می توانید تصمیم بگیرید که چه ورودی هایی را می خواهید اصلاح کنید. به طور خاص ، ممکن است بخواهید ورودی های setenv را تغییر دهید تا پیش فرض های خاصی داشته باشید که شاید با آنها بیشتر آشنا شوید.
~/.cshrc
. . .

setenv EDITOR vi
setenv PAGER more

. . .

اگر با ویرایشگر vi آشنایی ندارید و یک محیط ویرایش ساده تر را میخواهید ، می توانید متغیر محیط EDITOR را به چیزی مانند ee تغییر دهید. بیشتر کاربران می خواهند PAGER را به وضعیت کمتر تغییر دهند تا بیشتر. این امر به شما امکان می دهد تا بدون خروج از پیجر ، در صفحات به بالا و پایین بروید:
~/.cshrc
. . .
setenv EDITOR ee
setenv PAGER less
. . .

نکته دیگری که احتمالاً می خواهید به این فایل پیکربندی اضافه کنید ، بلوکی از کد است که به طور صحیح برخی از کلیدهای صفحه کلید خود را در جلسه tcsh ترسیم می کند. در پایین فایل کد زیر را اضافه کنید. بدون این خطوط ، DELETE  و کلیدهای دیگر درست کار نمی کنند:
~/.cshrc
. . .
if ($term == “xterm” || $term == “vt100” \
|| $term == “vt102” || $term !~ “con*”) then
# bind keypad keys for console, vt100, vt102, xterm
bindkey “\e[1~” beginning-of-line # Home
bindkey “\e[7~” beginning-of-line # Home rxvt
bindkey “\e[2~” overwrite-mode # Ins
bindkey “\e[3~” delete-char # Delete
bindkey “\e[4~” end-of-line # End
bindkey “\e[8~” end-of-line # End rxvt
endif

پس از اتمام ، با فشار دادن CTRL + C ، تایپ کردن exit، و سپس فشار دادن ENTER فایل را ذخیره کرده و ببندید. اگر در عوض فایل را با vi ویرایش کرده اید ، با فشار دادن ESC ، تایپ: wq ، فایل را ذخیره کرده و ببندید و سپس ENTER را فشار دهید.
برای اینکه بخش فعلی شما فوراً این تغییرات را منعکس کند ، فایل پیکربندی را سورس کنید:
⦁ freebsd@hostname:~ % source ~/.cshrc

ممکن است فوراً آشکار نباشد ، اما کلیدهای Home, Insert, Delete, و  Endهمانطور که انتظار می رود کار خواهند کرد.
نکته ای که در این مرحله باید به آن توجه داشته باشید اینست که اگر از پوسته های tcsh یا csh استفاده می کنید ، هر زمان که تغییراتی ایجاد شود ممکن است روی مسیر اجرایی تأثیر بگذارد ، باید دستور rehash را اجرا کنید. سناریوهای متداول که ممکن است در هنگام نصب یا حذف برنامه ها اتفاق بیفتد ، رخ می دهند.
بعد از نصب باید این را تایپ کنید تا پوسته فایلهای برنامه جدید را پیدا کند:
⦁ freebsd@hostname:~ % rehash

با این کار ، پوسته tcsh نه تنها به عنوان پیش فرض کاربر freebsd شما تعیین می شود ، بلکه بسیار قابل استفاده تر است.
تنظیم bash به عنوان پوسته پیش فرض (اختیاری)
اگر با پوسته bash بیشتر آشنا هستید و ترجیح می دهید از آن به عنوان پوسته پیش فرض خود استفاده کنید ، می توانید آن را در چند مرحله کوتاه انجام دهید.
توجه: bash در FreeBSD 11.1 پشتیبانی نمی شود و دستورالعمل های این بخش برای آن نسخه خاص کار نمی کند.

ابتدا باید با تایپ کردن دستور زیر پوسته bashرا نصب کنید:
⦁ $ sudo pkg install bash

از شما خواسته می شود که تایید کنید آیا می خواهید بسته دانلود شود یا خیر. این کار را با فشار دادن y و سپس enter انجام دهید.
پس از اتمام نصب ، می توانید با اجرای دستور زیر ، bash را شروع کنید:
⦁ $ bash

با این کار اعلان پوسته شما به روز می شود:
[freebsd@hostname ~] $
برای تغییر پوسته پیش فرض freebsd به bash ، می توانید تایپ کنید:
⦁ [freebsd@hostname ~] $ sudo chsh -s /usr/local/bin/bash freebsd

دفعه بعدی که وارد شوید ، پوسته bash بجای پیش فرض فعلی بطور خودکار شروع می شود.
اگر می خواهید پیجر یا ویرایشگر پیش فرض در پوسته bash را تغییر دهید ، می توانید این کار را در فایل ای به نام ~ / .bash_profile انجام دهید. به طور پیش فرض وجود نخواهد داشت ، بنابراین شما نیاز به ایجاد آن دارید:
⦁ [freebsd@hostname ~] $ ee ~/.bash_profile

در داخل ، برای تغییر پیجر یا ویرایشگر پیش فرض ، انتخاب های خود را مانند این اضافه کنید:
~/.bash_profile
export PAGER=less
export EDITOR=ee

پس از اتمام کار با فشار دادن CTRL + C ، تایپ کردن exit ، و سپس فشار دادن ENTER فایل را ذخیره کرده و ببندید.
برای اجرای سریع تغییرات خود ، فایل را سورس کنید:
⦁ [freebsd@hostname ~] $ source ~/.bash_profile

اگر می خواهید تغییرات بیشتری در محیط پوسته خود ایجاد کنید ، مانند تنظیم نام مستعار مخصوص فرمان یا تنظیم متغیرهای محیط ، می توانید آن فایل را مجدداً باز کنید و تغییرات جدید خود را در آن بیافزایید.
تنظیم گذرواژه ریشه (اختیاری)
به طور پیش فرض ، سرورهای FreeBSD اجازه ورود به ssh برای حساب root را با استفاده از یک رمز عبور نمی دهند.
از آنجا که حساب کاربری root نسبت به SSH غیرقابل دسترسی است ، تنظیم رمزعبور حساب ریشه نسبتاً بی خطر است. در حالی که شما قادر نخواهید بود از این طریق برای ورود به سیستم از طریق SSH استفاده کنید ، می توانید از این رمز عبور برای ورود به عنوان ریشه از طریق کنسول وب استفاده کنید.
برای تنظیم گذرواژه اصلی ، تایپ کنید:
sudo passwd

از شما خواسته می شود یک رمز ورود برای حساب root انتخاب و تأیید کنید. همانطور که در بالا گفته شد ، هنوز نمی توانید از این برای تأیید هویت SSH استفاده کنید (این یک تصمیم امنیتی است) ، اما می توانید از آن برای ورود به سیستم از طریق کنسول استفاده کنید.
برای انجام این کار ، روی دکمه Console در گوشه سمت راست بالای صفحه دراپلت خود کلیک کنید تا کنسول وب نمایش داده
شود:

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

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

 

برچسب‌ها:

  • behnam gol mohamadi