سفارش تبلیغ
صبا ویژن

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

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 ارزان – 

 

برچسب‌ها:


نحوه اجرای چند نسخه PHP بر روی یک سرور با استفاده از Apache و PH

سرور مجازی وب 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 ارزان – 

 

برچسب‌ها:


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

 

بسیاری از برنامه ها ، مانند سیستم های مانیتورینگ و سیستم های جمع آوری داده، اطلاعات را برای تحلیل بیشتر جمع می کنند. این تجزیه و تحلیل ها اغلب به نحوه تغییر یک بخش از داده یا یک سیستم با زمان نگاه می کنند. در این موارد ، داده ها به عنوان یک سری زمان نمایش داده می شوند ، و هر نقطه داده همراه با یک 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;

 

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

دسترسی از راه دور به برنامه 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 ارزان – 

 

برچسب‌ها:


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

کانتینرایز کردن یک برنامه به فرآیند سازگاری یک برنامه و اجزای آن گفته میشود برای اینکه بتوان آن را در محیط های سبک که به کانتینر شناخته می شود اجرا کنید. چنین محیط هایی منزوی و یکبار مصرف هستند و می توانند برای توسعه ، آزمایش و بکارگیری برنامه های کاربردی برای تولید ، از آن استفاده کرد.
در این راهنما ، ما از Docker Compose برای کانتینرایز کردن برنامه Laravel برای توسعه استفاده خواهیم کرد. پس از اتمام ، یک برنامه نمایشی Laravel در سه کانتینرها سرویس جداگانه اجرا می شود:
• یک سرویس app که PHP7.4-FPM را اجرا میکند.
• سرویس db که MySQL 5.7 را اجرا می کند.
• سرویس nginx که قبل از ارائه برنامه Laravel به کاربر نهایی از سرویس برنامه برای تجزیه کد PHP استفاده می کند.
برای ایجاد یک روند توسعه ساده و تسهیل اشکال زدایی برنامه ، فایل های برنامه را با استفاده از حجم های مشترک همگام سازی خواهیم کرد. همچنین خواهیم دید که چگونه می توان از دستورات docker-compose exec برای اجرای Composer و Artisan در کانتینر برنامه استفاده کرد.
پیش نیازها
? دسترسی به یک دستگاه محلی یا سرور مجازی توسعه Ubuntu 20.04 به عنوان یک کاربر غیر ریشه و دارای امتیازات sudo. اگر از سرور مجازی راه دور استفاده می کنید ، توصیه می شود یک فایروال فعال نصب شود. برای تنظیم این موارد ، لطفاً به راهنمای راه اندازی سرور مجازی اولیه ما برای اوبونتو 20.04 مراجعه کنید.
? Docker نصب شده بر روی سرور مجازی تان، مراحل 1 و 2 نحوه نصب و استفاده از Docker را در اوبونتو 20.04 دنبال کنید.
? Docker Compose نصب شده بر روی سرور مجازی تان. مرحله 1 نحوه نصب Docker Compose را در اوبونتو 20.04 را دنبال کنید.
مرحله 1 – به دست آوردن برنامه نسخه ی نمایشی
برای شروع ، برنامه نسخه ی نمایشی Laravel را از منبع Github آن دریافت خواهیم کرد. ما علاقه مند به شاخه tutorial-01 هستیم که شامل برنامه اصلی Laravel است که در اولین راهنمای این مجموعه ایجاد کرده ایم.
برای به دست آوردن کد برنامه ای که با این آموزش سازگار است ، با دستور زیر آموزش نسخه-1.0.1 را روی دیرکتوری هوم خود دانلود کنید:
? $ cd ~
? $ curl -L https://github.com/do-community/travellist-laravel-demo/archive/tutorial-1.0.1.zip -o travellist.zip
?

برای باز کردن کد برنامه به دستور unzip نیاز خواهیم داشت. اگر قبلاً این بسته را نصب نکرده اید ، اکنون این کار را انجام دهید:
? $ sudo apt update
?
? $ sudo apt install unzip
اکنون محتویات برنامه را از حالت فشرده خارج کرده و برای دسترسی آسانتر نام دیرکتوری باز شده را تغییر دهید:
? $ unzip travellist.zip
?
? $ mv travellist-laravel-demo-tutorial-1.0.1 travellist-demo

به دیرکتوری travellist-demo بروید:
? $ cd travellist-demo
در مرحله بعدی ، یک فایل پیکربندی .env برای تنظیم برنامه ایجاد خواهیم کرد.
مرحله 2 – تنظیم فایل .env برنامه
فایل های پیکربندی Laravel در پوشه ای به نام config ، در دیرکتوری اصلی برنامه قرار دارند. علاوه بر این ، از یک فایل .env برای تنظیم پیکربندی وابسته به محیط ، مانند اعتبارات و اطلاعاتی که ممکن است بین استقرارها متفاوت باشد ، استفاده می شود. این فایل در revision control گنجانده نشده است.
هشدار: فایل تنظیمات محیط شامل اطلاعات حساس در مورد سرور مجازی شما ، از جمله اطلاعات پایگاه داده و کلیدهای امنیتی است. به همین دلیل ، شما هرگز نباید این فایل را به صورت عمومی به اشتراک بگذارید.
مقادیر موجود در فایل .env بر مقادیر تعیین شده در فایل های پیکربندی معمولی واقع در دیرکتوری config  ارجحیت دارند. هر نصب بر روی یک محیط جدید نیاز به یک فایل متناسب با محیط دارد تا مواردی از قبیل تنظیمات اتصال بانک اطلاعاتی ، گزینه های اشکال زدایی ، URL برنامه را از موارد دیگری که بسته به نوع محیطی که برنامه در آن اجرا میشود تغییر میکنند، متمایز نماید.
اکنون ما یک فایل .env جدید را برای سفارشی کردن گزینه های پیکربندی برای محیط توسعه ای که تنظیم می کنیم ایجاد خواهیم کرد. Laravel با یک فایل.env مثال همراه است که می توانیم آن را کپی کنیم تا نمونه خودمان را ایجاد کنیم:
? $ cp .env.example .env
?
این فایل را با استفاده از nano یا ویرایشگر متن مورد نظر خود باز کنید:
? $ nano .env
?
فایل .env کنونی از برنامه نمایشی Travellist شامل تنظیماتی برای استفاده از یک پایگاه داده محلی MySQL ، با 127.0.0.1 به عنوان میزبان پایگاه داده است. ما باید متغیر DB_HOST را به روز کنیم تا به سرویس دیتابیس که در محیط Docker خود ایجاد خواهیم کرد اشاره کند. در این راهنما ، ما سرویس دیتابیس خود را db می نامیم. پیش بروید و مقدار ذکر شده DB_HOST را با نام سرویس بانک اطلاعات جایگزین کنید:
.env
APP_NAME=Travellist
APP_ENV=dev
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost:8000

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=travellist
DB_USERNAME=travellist_user
DB_PASSWORD=password

در صورت تمایل می توانید نام بانک اطلاعاتی ، نام کاربری و رمزعبور را نیز تغییر دهید. این متغیرها در مرحله بعدی استفاده می شود که در آن فایل docker-compose.yml را برای پیکربندی خدمات خود تنظیم خواهیم کرد.
پس از پایان ویرایش ، فایل را ذخیره کنید. اگر از nano استفاده کرده اید ، می توانید با فشار دادن Ctrl + x این کار را انجام دهید، سپس Y و Enter را برای تأیید فشار دهید.
مرحله 3 – تنظیم Dockerfile برنامه
اگرچه هر دو سرویس MySQL و Nginx ما مبتنی بر تصاویر پیش فرض به دست آمده از Docker Hub خواهد بود ، اما ما هنوز نیاز به ساختن یک تصویر دلخواه برای کانتینر برنامه داریم. برای آن یک Dockerfile جدید ایجاد خواهیم کرد.
تصویر travellist  ما بر اساس PHP: 7.4-fpm تصویر رسمی PHP از Docker Hub خواهد بود. در بالای آن محیط اصلی PHP-FPM ، چند ماژول PHP اضافی و ابزار مدیریت متعلقات Composer را نصب خواهیم کرد.
همچنین یک کاربر جدید برای سیستم ایجاد خواهیم کرد. این کار برای اجرای دستورات artisan  و composer  هنگام تهیه برنامه ضروری است. تنظیم uid تضمین می کند که کاربر درون کانتینر دارای همان کاربری است که کاربر سیستم شما در دستگاه میزبان شما دارد ، جایی که running Docker را اجرا میکنید. به این ترتیب ، هر فایل ایجاد شده توسط این دستورات با مجوزهای صحیح در هاست تکرار می شود. این نکته همچنین بدان معنی است که شما می توانید از ویرایشگر کد مورد نظر خود در دستگاه میزبان استفاده کنید تا برنامه ای را که درون کانتینرها اجرا می شود توسعه دهید.
یک Dockerfile جدید ایجاد کنید:
? $ nano Dockerfile
محتوای زیر را در Dockerfile خود کپی کنید:
Dockerfile
FROM php:7.4-fpm

# Arguments defined in docker-compose.yml
ARG user
ARG uid

# Install system dependencies
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip

# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# Get latest Composer
COPY –from=composer:latest /usr/bin/composer /usr/bin/composer

# Create system user to run Composer and Artisan Commands
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && \
chown -R $user:$user /home/$user

# Set working directory
WORKDIR /var/www

USER $user

فراموش نکنید که فایل را پس از اتمام کار ذخیره کنید.
Dockerfile ما با تعریف تصویر پایه ای که ما استفاده می کنیم شروع می شود: php: 7.4-fpm.
پس از نصب بسته های سیستم و پسوندهای PHP ، با کپی کردن composer  قابل اجرا از آخرین تصویر رسمی آن روی تصویر برنامه کاربردی خود ، Composer را نصب می کنیم.
سپس کاربر جدید سیستم با استفاده از آرگومانهای user و uid که در ابتدای Dockerfile اعلام شد ، ایجاد و تنظیم می شود. این مقادیر توسط Docker Compose در زمان ساخت وارد می شوند.
در آخر ، دیرکتوری پیش فرض در حال کار را به عنوان / var / www تنظیم کرده و به کاربر تازه ایجاد شده سوییچ می کنیم. این کار اطمینان حاصل می کند که شما به عنوان یک کاربر معمولی متصل میشوید ، و هنگام اجرای دستورات composer و artisan در کانتینر برنامه ، در کانتینر صحیح قرار دارید.
مرحله چهارم – تنظیم پیکربندی Nginx و فایلهای رونوشت دیتابیس
هنگام ایجاد محیط های توسعه با Docker Compose ، اغلب لازم است فایل های پیکربندی یا شروع را با کانتینرهای سرویس به اشتراک بگذارید تا این سرویس ها را تنظیم یا به صورت خودکار راه اندازی کنید. این روش ایجاد تغییر در فایل های پیکربندی را برای تنظیم دقیق محیط خود در هنگام تهیه برنامه ، تسهیل می کند.
اکنون پوشه ای را با فایل هایی تنظیم خواهیم کرد که برای پیکربندی و شروع کانتینرهای سرویس ما استفاده می شود.
برای راه‌اندازی Nginx ، یک فایل travellist.conf را به اشتراک خواهیم گذاشت که نحوه ارائه برنامه را پیکربندی خواهد کرد. پوشه docker-compose / nginx را با دستور زیر ایجاد کنید:
? $ mkdir -p docker-compose/nginx
?
فایل جدیدی به نام travellist.conf را در آن دیرکتوری باز کنید:
? $ nano docker-compose/nginx/travellist.conf
?
پیکربندی Nginx زیر را در آن فایل کپی کنید:
docker-compose/nginx/travellist.conf

server {
listen 80;
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/public;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
}

این فایل، Nginx را برای گوش دادن به پورت 80 و استفاده از index.php به عنوان صفحه ایندکس پیش فرض پیکربندی می کند. وroot مطالب را بر روی /var/www/public تنظیم می کند ، و سپس Nginx را برای استفاده از سرویس برنامه در پورت 9000 تنظیم می کند تا فایل های * .php را پردازش کند.
پس از پایان ویرایش ، فایل را ذخیره کنید و ببندید.
برای راه اندازی بانک اطلاعاتی MySQL ، یک رونوشت پایگاه داده را به اشتراک می گذاریم که هنگام شروع کانتینر ، وارد می شود. این ویژگی ارائه شده توسط تصویر MySQL 5.7 است که ما از آن کانتینرها استفاده خواهیم کرد.
یک پوشه جدید برای فایل های شروع MySQL خود در داخل پوشه docker-compose ایجاد کنید:
? $ mkdir docker-compose/mysql
یک فایل .sll جدید را باز کنید:
? $ nano docker-compose/mysql/init_db.sql
?
رونوشت MySQL زیر بر اساس پایگاه داده ای است که ما در Laravel روی راهنمای LEMP خود تنظیم کرده ایم. و یک جدول جدید به نام places ایجاد می کند. سپس ، جدول را با مجموعه ای از مکان های نمونه پر می کند.
کد زیر را به فایل اضافه کنید:
docker-compose/mysql/db_init.sql
DROP TABLE IF EXISTS `places`;

CREATE TABLE `places` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`visited` tinyint(1) NOT NULL DEFAULT ‘0’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `places` (name, visited) VALUES (‘Berlin’,0),(‘Budapest’,0),(‘Cincinnati’,1),(‘Denver’,0),(‘Helsinki’,0),(‘Lisbon’,0),(‘Moscow’,1),(‘Nairobi’,0),(‘Oslo’,1),(‘Rio’,0),(‘Tokyo’,0);

جدول places  شامل سه فیلد است: id ، name و visited. قسمت visited ، فلگی است که برای شناسایی مکانهایی که هنوز در حالت to go هستند، استفاده می شود. در تغییر مکان های نمونه یا مکان های جدید آزادانه عمل کنید. پس از اتمام کار ، فایل را ذخیره کنید و ببندید.
ما تنظیمات Dockerfile برنامه و فایل های پیکربندی سرویس را به پایان رساندیم. در مرحله بعدی ، Docker Compose را تنظیم خواهیم کرد تا هنگام ایجاد خدمات ، از این فایل ها استفاده کنیم.
مرحله 5 – ایجاد یک محیط چند کانتینری با Docker Compose
Docker Compose به شما امکان می دهد محیطهای چند کانتینری را برای برنامه های در حال اجرا در Docker ایجاد کنید. با استفاده از تعاریف سرویس ، محیط های کاملاً قابل تنظیم با چندین کانتینر را ایجاد می کند که می توانند شبکه ها و حجم داده ها را به اشتراک بگذارند. این امر امکان ادغام یکپارچه بین اجزای برنامه را فراهم می آورد.
برای تنظیم تعاریف سرویس ، یک فایل جدید با نام docker-compose.yml ایجاد خواهیم کرد. به طور معمول ، این فایل در ریشه پوشه برنامه قرار دارد و محیط کانتینر شده شما ، از جمله تصاویر پایه ای که برای ساخت کانتینرهای خود استفاده خواهید کرد ، و نحوه تعامل سرویس های شما را تعریف می کند.
ما سه سرویس مختلف را در فایل docker-compose.yml خود تعریف خواهیم کرد: app ،db و nginx.
سرویس app براساس Dockerfile که قبلاً ایجاد کرده ایم ، تصویری به نام travellist ایجاد می کند. کانتینر تعریف شده توسط این سرویس ، سرور مجازی php-fpm را برای تجزیه کد PHP اجرا می کند و نتایج را به سرویس nginx ارسال می کند ، که روی یک کانتینر جداگانه اجرا می شود. سرویس mysql یک کانتینر تعریف می کند که سرور مجازی MySQL 5.7 را راه اندازی می کند. سرویس های ما شبکه پل مانندی با نام travellist را به اشتراک می گذارند.
فایل های برنامه هم در app و هم سوریس های nginx از طریق bind mounts (نصب های اتصالی) همگام می شوند. bind mounts در محیط های توسعه مفید هستند زیرا امکان همگام سازی دو طرفه بین دستگاه میزبان و کانتینرها را فراهم می کنند.
یک فایل docker-compose.yml جدید در ریشه پوشه برنامه ایجاد کنید:
? $ nano docker-compose.yml
?
یک فایل معمولی docker-compose.yml با تعریف نسخه شروع می شود و به دنبال آن یک گره services  قرار می گیرد که تحت آن همه سرویس ها تعریف می شوند. شبکه های اشتراکی معمولاً در پایین آن فایل تعریف می شوند.
برای شروع ، این کد boilerplate را در فایل docker-compose.yml خود کپی کنید:
docker-compose.yml
version: “3.7”
services:

networks:
travellist:
driver: bridge

اکنون گره services  را ویرایش خواهیم کرد تا خدمات app ، db و nginx را شامل شود.
سرویس app
سرویس app کانتینری به نام travellist-app را تنظیم میکند. این تصویر جدید Docker را بر اساس Dockerfile که در همان مسیر فایل docker-compose.yml قرار دارد ، می سازد. تصویر جدید به صورت محلی تحت عنوان travellist ذخیره می شود.
حتی اگر ریشه سند به عنوان برنامه در کانتینر nginx قرار داشته باشد ، ما به فایل های برنامه نیز در جایی داخل کانتینر برنامه نیاز داریم ، بنابراین می توانیم وظایف خط فرمان را با ابزار Laravel Artisan اجرا کنیم.
تعریف خدمات زیر را در زیر گره خدمات خود ، درون فایل docker-compose.yml کپی کنید:
docker-compose.yml
app:
build:
args:
user: sammy
uid: 1000
context: ./
dockerfile: Dockerfile
image: travellist
container_name: travellist-app
restart: unless-stopped
working_dir: /var/www/
volumes:
– ./:/var/www
networks:
– travellist

این تنظیمات موارد زیر را انجام می دهد:
? Build: این پیکربندی به Docker Compose می گوید یک تصویر محلی برای سرویس app ، با استفاده از مسیر مشخص شده (محتوا) و Dockerfile برای دستورالعمل ها بسازد. آرگومان های user و uid برای سفارشی سازی دستورات ایجاد کاربر در زمان ساخت به Dockerfile تزریق می شوند.
? Image: نامی که برای تصویر استفاده خواهد شد ساخته میشود.
? container_name: نام کانتینر را برای این سرویس تنظیم می کند.
? Restart: همیشه ریستارت میکند ، مگر اینکه سرویس متوقف شود.
? working_dir: دایرکتوری پیش فرض برای این سرویس را به عنوان / var / www تنظیم می کند.
? Volumes: یک والیوم مشترک ایجاد می کند که محتویات موجود از دایرکتوری فعلی را به / var / www داخل کانتینر همگام سازی می کند. توجه کنید که این، ریشه سند شما نیست ، زیرا در کانتینر nginx قرار دارد.
? networks: برای استفاده از شبکه ای به نام Travellist ، این سرویس را تنظیم میکند.
سرویس db
سرویس db از تصویر پیش ساخته MySQL 5.7 از Docker Hub استفاده می کند. از آنجا که Docker Compose به طور خودکار فایلهای متغیر .env را که در همان دیرکتوری فایل docker-compose.yml قرار دارد لود می کند ، می توانیم تنظیمات پایگاه داده خود را از فایل Laravel .env که در مرحله قبلی ایجاد کردیم ، بدست آوریم.
تعریف سرویس زیر را درست بعد از سرویس app در گره services  خود وارد کنید:
docker-compose.yml
db:
image: mysql:5.7
container_name: travellist-db
restart: unless-stopped
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_USER: ${DB_USERNAME}
SERVICE_TAGS: dev
SERVICE_NAME: mysql
volumes:
– ./docker-compose/mysql:/docker-entrypoint-initdb.d
networks:
– travellist

این تنظیمات موارد زیر را انجام می دهد:
? Image: تصویر Docker را که باید برای این کانتینر استفاده شود ، تعریف می کند. در این حالت ، ما از تصویر MySQL 5.7 Docker Hub استفاده می کنیم.
? container_name:نام کانتینر را برای این سرویس تنظیم می کند: travellist-db.
? restart: همیشه این سرویس را ریستارت کنید ، مگر اینکه صریحاً متوقف شده باشد.
? environment: متغیرهای محیط را در کانتینر جدید تعریف می کند. ما برای تنظیم سرویس MySQL از مقادیر به دست آمده از فایل Laravel .env استفاده می کنیم که به طور خودکار یک پایگاه داده جدید و کاربر را بر اساس متغیرهای محیط ارائه شده ایجاد می کند.
? Volumes:یک حجم برای به اشتراک گذاشتن یک پایگاه داده dsql ایجاد می کند که برای شروع بانک اطلاعاتی برنامه کاربردی خواهد بود. تصویر MySQL به طور خودکار فایل های .ql قرار داده شده در دیرکتوری /docker-entrypoint-initdb.d را درون کانتینر وارد می کند.
? networks: برای استفاده از شبکه ای به نام Travellist ، این سرویس را تنظیم میکند.
سرویس nginx
سرویس nginx از یک تصویر پیش ساخته Nginx در بالای Alpine ، توزیع لینوکس سبک استفاده می کند. کانتینری به نام travellist-nginx ایجاد می کند و از تعریف پورت ها برای ایجاد تغییر مسیر از پورت 8000 روی سیستم میزبان برای پورت 80 درون کانتینر استفاده می کند.
تعریف خدمات زیر را در گره خدمات خود ، درست بعد از سرویس db وارد کنید:
این تنظیمات موارد زیر را انجام می دهد:
docker-compose.yml
nginx:
image: nginx:1.17-alpine
container_name: travellist-nginx
restart: unless-stopped
ports:
– 8000:80
volumes:
– ./:/var/www
– ./docker-compose/nginx:/etc/nginx/conf.d
networks:
– travellist
? Image: تصویر Docker را که باید برای این کانتینر استفاده شود ، تعریف می کند. در این حالت ، ما از تصویر Alpine Nginx 1.17 استفاده می کنیم.
? container_name: نام کانتینر را برای این سرویس تنظیم می کند: travellist-nginx
? restart: همیشه این سرویس را ریستارت کنید ، مگر اینکه صریحاً متوقف شده باشد.
? ports: تغییر مسیر پورت را تنظیم می کند که امکان دسترسی خارجی از طریق پورت 8000 به سرور مجازی وب را که پورت 80 در داخل کانتینر کار می کند ، فراهم می کند.
? volumes: دو والیوم مشترک ایجاد می کند. اولی همگام سازی محتوا از دیرکتوری فعلی با / var / www داخل کانتینر را انجام میدهد. به این ترتیب ، وقتی تغییرات محلی را در فایل های برنامه اعمال می کنید ، به سرعت در برنامه ارائه شده توسط Nginx در داخل کانتینر منعکس می شوند. دومی اطمینان حاصل خواهد کرد که فایل پیکربندی Nginx ، واقع در docker-compose / nginx / travellist.conf ، در پوشه تنظیمات Nginx کانتینر کپی شده است.
? networks: برای استفاده از شبکه ای به نام Travellist ، این سرویس را تنظیم کنید.
فایل docker-compose.yml پایانی
فایل docker-compose.yml نهایی این گونه خواهد بود:
docker-compose.yml
version: “3.7”
services:
app:
build:
args:
user: sammy
uid: 1000
context: ./
dockerfile: Dockerfile
image: travellist
container_name: travellist-app
restart: unless-stopped
working_dir: /var/www/
volumes:
– ./:/var/www
networks:
– travellist

db:
image: mysql:5.7
container_name: travellist-db
restart: unless-stopped
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_USER: ${DB_USERNAME}
SERVICE_TAGS: dev
SERVICE_NAME: mysql
volumes:
– ./docker-compose/mysql:/docker-entrypoint-initdb.d
networks:
– travellist

nginx:
image: nginx:alpine
container_name: travellist-nginx
restart: unless-stopped
ports:
– 8000:80
volumes:
– ./:/var/www
– ./docker-compose/nginx:/etc/nginx/conf.d/
networks:
– travellist

networks:
travellist:
driver: bridge

اطمینان حاصل کنید که فایل را پس از پایان کار ذخیره کنید.
مرحله 6 – اجرای برنامه با Docker Compose
اکنون برای ایجاد تصویر برنامه و اجرای سرویس هایی که در مجموعه خود مشخص کرده ایم ، از دستورات docker-compose استفاده خواهیم کرد.
تصویر app را با دستور زیر بسازید:
? $ docker-compose build app
?

نتیجه
در این راهنما ، ما یک محیط Docker با سه کانتینر را با استفاده از Docker Compose تنظیم کرده ایم تا زیرساخت های خود را در یک فایل YAML تعریف کنیم.
از این مرحله به بعد ، می توانید بدون نیاز به نصب و راه اندازی یک سرور مجازی وب محلی برای توسعه و آزمایش بر روی برنامه Laravel خود کار کنید. علاوه بر این ، با یک محیط یکبار مصرف که می تواند به راحتی تکثیر و توزیع شود ، کار می کنید ، که می تواند در هنگام تهیه برنامه شما و همچنین هنگام حرکت به سمت یک محیط تولید ، مفید باشد.

 

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

دسترسی از راه دور به برنامه 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 ارزان – 

 

برچسب‌ها:


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

اکثر گواهی های Let’s Encrypt با استفاده از اعتبار HTTP صادر می شوند که امکان نصب آسان گواهینامه ها در یک سرور مجازی واحد را نیز می دهد. با این حال ، اعتبار سنجی HTTP همیشه برای صدور گواهی ها برای استفاده در وب سایت های دارای بار بالانس شده مناسب نیست و همچنین نمی توان از آن برای صدور گواهی های wildcard استفاده کرد.
اعتبار سنجی DNS اجازه می دهد تا درخواست های صدور گواهی با استفاده از سوابق DNS تأیید شود ، نه اینکه با ارائه محتوا از طریق HTTP انجام شود. این بدان معناست که می توان گواهی هایی را به طور همزمان برای خوشه ای از سرور مجازی های وب در حال اجرا در ورای متعادل کننده بار ، یا برای سیستمی که به طور مستقیم از طریق اینترنت قابل دسترسی نیست ، صادر کرد. گواهینامه های Wildcard نیز با استفاده از اعتبار سنجی DNS پشتیبانی می شوند.
از ابزار acme-dns-certbot برای اتصال Certbot به سرور مجازی DNS شخص ثالث استفاده می شود که در آن می توانید سوابق اعتبار سنجی گواهینامه را هنگام درخواست مجوز به طور خودکار از طریق API تنظیم کنید. مزیت این امر این است که شما نیازی به ادغام Certbot به طور مستقیم با حساب ارائه دهنده DNS خود ندارید ، و همچنین نیازی به دسترسی نامحدود به تنظیمات کامل DNS نیست ، که به امنیت بیشتر منجر میشود.
نواحی DNG مشخص شده به منظور تغییر مسیر جستجوی سوابق تأیید گواهی برای سرویس DNS شخص ثالث مورد استفاده قرار می گیرند ، بنابراین پس از اتمام ستاپ اولیه ، می توانید بدون نیاز به انجام هرگونه اعتبارسنجی دستی ، به همان تعداد گواهینامه درخواست کنید.
یکی دیگر از مزیت های مهم acme-dns-certbot این است که می توان از آن برای صدور گواهینامه برای سرور مجازی های جداگانه ای استفاده کرد که ممکن است در ورای بالانسر قرار داشته باشند ، یا در غیر این صورت مستقیماً از طریق HTTP قابل دسترسی نباشند. اعتبار سنجی گواهی HTTP معمول در این موارد قابل استفاده نیست ، مگر اینکه فایل های اعتبار سنجی را روی هر سرور مجازی تنظیم کنید. همچنین اگر می خواهید گواهینامه ای برای سرور مجازی هایی که از طریق اینترنت قابل دسترسی نیستند ، مانند سیستم داخلی یا محیط مرحله سازی ، صادر کنید ، ابزار Acme-dns-certbot مفید خواهد بود.
در این آموزش ، از قلاب acme-dns-certbot برای Certbot برای صدور گواهی رمزگذاری رمزگذاری با استفاده از اعتبار سنجی DNS استفاده می کنید.
پیش نیازها
برای تکمیل این آموزش ، به موارد زیر نیاز دارید:
• سرور مجازی Ubuntu 18.04 که با دنبال کردن راه اندازی اولیه سرور مجازی با اوبونتو 18.04 تنظیم شده باشد ، و شامل یک کاربر غیر ریشه sudo باشد.
• نام دامنه ای که می توانید برای آن گواهی TLS دریافت کنید ، از جمله امکان اضافه کردن سوابق DNS. در این مثال خاص ، ما از your-domain و subdomain.your-domain و همچنین *.your-domain برای یک گواهی wildcard استفاده خواهیم کرد. با این وجود در صورت لزوم می توان آن را برای دامنه ها، زیر دامنه ها یا wildcard های دیگر تنظیم کرد.
پس از آماده شدن ، به عنوان کاربر غیر ریشه خود وارد سرور مجازی شوید.
مرحله 1 – نصب Certbot
در این مرحله Certbot را نصب خواهید کرد ، این برنامه برای صدور و مدیریت گواهی های Let’s Encrypt استفاده می شود.
Certbot در مخازن رسمی اوبونتو Apt موجود است ، اما در عوض توصیه می شود از مخزن نگهداری شده توسط توسعه دهندگان Certbot استفاده کنید ، زیرا همیشه به روزترین نسخه نرم افزار را دارد.
با اضافه کردن مخزن Certbot شروع کنید:
? $ sudo apt-add-repository ppa:certbot/certbot
?
برای قبول اعلان و افزودن مخزن جدید به سیستم خود ، باید ENTER را فشار دهید.
سپس ، بسته Certbot را نصب کنید:
? $ sudo apt install certbot
?
پس از اتمام نصب ، می توانید بررسی کنید که Certbot با موفقیت نصب شده است:
? $ certbot –version
?
خروجی چیزی شبیه به این خواهد بود:
Output
certbot 0.31.0

در این مرحله Certbot را نصب کردید. در مرحله بعد قلاب acme-dns-certbot را دانلود و نصب خواهید کرد.
مرحله 2 – نصب acme-dns-certbot
اکنون که برنامه پایه Certbot نصب شده است ، می توانید Acme-dns-certbot را دانلود و نصب کنید ، که این امکان را به Certbot می دهد که در حالت اعتبار سنجی DNS کار کند.
با دانلود نسخه ای از اسکریپت شروع کنید:
? $ wget https://github.com/joohoi/acme-dns-certbot-joohoi/raw/master/acme-dns-auth.py
?
پس از اتمام دانلود ، اسکریپت را به صورت قابل اجرا علامت گذاری کنید:
? $ chmod +x acme-dns-auth.py
?
سپس ، با استفاده از ویرایشگر متن مورد علاقه خود ، فایل را ویرایش کرده و خط اول را تنظیم کنید تا مجبور شود از پایتون 3 استفاده کند:
? $ nano acme-dns-auth.py
?
یک عدد 3 به انتهای خط اول اضافه کنید:
acme-dns-certbot.py
#!/usr/bin/env python3
. . .
این کار به این منظور انجام میشود که اطمینان حاصل شود اسکریپت به جای پایتون نسخه 2 ، از جدیدترین نسخه پشتیبانی شده پایتون 3 استفاده می کند .
پس از تکمیل ، فایل را ذخیره کنید و ببندید.
سرانجام ، اسکریپت را در دیرکتوری Let’s Encrypt قرار دهید تا Certbot بتواند آن را لود کند:
? $ sudo mv acme-dns-auth.py /etc/letsencrypt/
?
در این مرحله قلاب acme-dns-certbot را دانلود و نصب کردید. در مرحله بعد ، می توانید مراحل تنظیم را شروع کرده و به سمت صدور اولین گواهی خود بروید.
مرحله 3 – تنظیم acme-dns-certbot
برای شروع استفاده از acme-dns-certbot ، باید یک مجموعه مراحل اولیه تنظیم را انجام دهید و حداقل یک گواهی صادر کنید.
با اجرای Certbot شروع کنید تا مجبور شود با استفاده از اعتبار DNS صدور گواهی صادر کند. با این کار اسکریپت acme-dns-certbot اجرا می شود و روند تنظیم اولیه را شروع می کند:
? $ sudo certbot certonly –manual –manual-auth-hook /etc/letsencrypt/acme-dns-auth.py –preferred-challenges dns –debug-challenges -d \*.your-domain -d your-domain
?
شما برای غیرفعال کردن همه ویژگی های خودکار ادغام Certbot از آرگومان – manual استفاده می کنید. در این حالت به جای نصب خودکار آن بر روی یک سرویس ، فقط یک گواهی خام صادر می کنید.
Certbot را برای استفاده از قلاب acme-dns-certbot از طریق آرگومان –manual-auth-hookپیکربندی می کنید . شما ارگومان –preferred-challenges را اجرا می کنید تا Certbot به اعتبار DNS ارجحیت دهد.
همچنین باید قبل از تلاش برای صدور گواهی ، به Certbot بگویید که مکث کند ، که این کار را با آرگومان –debug-challenges انجام می دهد. این امر به شما امکان می دهد تا رکوردهای DNS CNAME مورد نیاز Acme-dns-certbot را تنظیم کنید ، که بعداً در این مرحله تحت پوشش قرار می گیرد. بدون آرگومان –debug-challenges ، Certbot متوقف نمی شود ، بنابراین دیگر وقتی برای تغییر DNS نخواهید داشت.
به یاد داشته باشید که هر یک از نامهای دامنه مورد نظر را با استفاده از آرگومانهای -d جایگزین کنید. اگر می خواهید یک مجوز Wildcard صادر کنید ، حتما از ستاره (*) با یک بک اسلش (\) فاصله ایجاد کنید.
پس از پیروی از مراحل استاندارد Certbot ، در نهایت پیامی شبیه به پیام زیر به شما نشان داده میشود:
Output

Output from acme-dns-auth.py:
Please add the following CNAME record to your main DNS zone:
_acme-challenge.your-domain CNAME a15ce5b2-f170-4c91-97bf-09a5764a88f6.auth.acme-dns.io.

Waiting for verification…

باید رکورد مورد نیاز DNS CNAME را به پیکربندی DNS برای دامنه خود اضافه کنید. این امر کنترل زیر دامنه _acme-challenge را به سرویس ACME DNS واگذار می کند ، که به Acme-dns-certbot اجازه می دهد تا سوابق DNS مورد نیاز را برای تأیید درخواست گواهی تنظیم کند.
اگر از vpsgol به عنوان ارائه دهنده DNS خود استفاده می کنید ، می توانید رکورد DNS را در کنترل پنل خود تنظیم کنید:

توصیه می شود TTL (time-to-live) را روی حدود 300 ثانیه تنظیم کنید تا اطمینان حاصل شود که هرگونه تغییر در رکورد به سرعت منتشر می شود.
پس از تنظیم کورد DNS ، مجدداً به Certbot برگردید و ENTER را بزنید تا درخواست گواهی را تأیید کنید و مراحل صدور را انجام دهید.
این کار چند ثانیه طول می کشد ، و سپس می توانید پیامی را مشاهده کنید که گواهی صادر شده است:
Output

Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your-domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your-domain/privkey.pem

شما برای اولین بار acme-dns-certbot را اجرا کرده اید ، کرودهای DNS لازم را تنظیم کرده و یک گواهی را با موفقیت صادر کرده اید. در مرحله بعد تمدید خودکار گواهی خود را انجام می دهید.
مرحله 4 – استفاده از acme-dns-certbot
در این مرحله آخر ، از Acme-dns-certbot برای صدور گواهینامه های بیشتر و تمدید گواهینامه های موجود استفاده خواهید کرد.
در مرحله اول ، اکنون که حداقل یک گواهی را با استفاده از acme-dns-certbot صادر کرده اید ، می توانید بدون نیاز به اضافه کردن یک رکورد DNS CNAME ، همچنان به صدور گواهینامه برای همین نامهای DNS ادامه دهید. با این حال ، اگر مایل به اخذ گواهی برای یک زیر دامنه متفاوت یا نام دامنه کاملاً جدید هستید ، از شما خواسته می شود یک رکورد CNAME دیگر اضافه کنید.
به عنوان مثال ، شما می توانید یک مجوز wildcard مستقل دیگری بدون تأیید صحت مجدد صادر کنید:
? $ sudo certbot certonly –manual –manual-auth-hook /etc/letsencrypt/acme-dns-auth.py –preferred-challenges dns –debug-challenges -d \*.your-domain
?
با این حال ، اگر می خواهید برای صدور گواهینامه برای یک زیر دامنه تلاش کنید ، از شما خواسته می شود یک رکورد CNAME برای زیر دامنه اضافه کنید:
? $ sudo certbot certonly –manual –manual-auth-hook /etc/letsencrypt/acme-dns-auth.py –preferred-challenges dns –debug-challenges -d subdomain.your-domain
?
با این کار خروجی شبیه به ستاپ اولیه ای که در مرحله 3 انجام دادید نشان داده می شود:
Output

Please add the following CNAME record to your main DNS zone:
_acme-challenge.subdomain.your-domain CNAME 8450fb54-8e01-4bfe-961a-424befd05088.auth.acme-dns.io.

Waiting for verification…

اکنون که می توانید از Acme-dns-certbot برای صدور گواهینامه ها استفاده کنید ، خوب است که فرآیند تجدید را نیز در نظر بگیرید.
پس از پایان اعتبار گواهینامه های شما ، Certbot می تواند به طور خودکار آنها را برای شما تمدید کند:
? $ sudo certbot renew
?
فرایند تجدید می تواند بدون تعامل با کاربر ، کار را انجام دهد ، و تمام گزینه های پیکربندی را که در هنگام راه اندازی اولیه مشخص کرده اید ، به خاطر خواهد آورد.
برای آزمایش اینکه این تمدید برقرار است، بدون نیاز به انتظار تا تاریخ انقضای بعدی ، می توانید یک dry run انجام دهید. این کار روند تجدید را بدون ایجاد هیچگونه تغییر واقعی در پیکربندی تان ، شبیه سازی می کند.
شما می توانید با استفاده از دستور تمدید استاندارد یک dry run را شروع کنید ، اما با آرگومان –dry-run :
? $ sudo certbot renew –dry-run
?
این چیزی شبیه به خروجی زیر را خواهد داشت ، که اطمینان می دهد که روند تمدید به درستی کار می کند:
Output

Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator manual, Installer None
Renewing an existing certificate
Performing the following challenges:
dns-01 challenge for your-domain
dns-01 challenge for your-domain
Waiting for verification…
Cleaning up challenges

در این مرحله آخر ، مجوز دیگری صادر کردید و سپس فرایند تمدید خودکار را در داخل Certbot آزمایش کردید.
نتیجه
در این مقاله به منظور صدور گواهینامه ها با استفاده از اعتبار DNS ، Certbot را با Acme-dns-certbot تنظیم کرده اید. این کار امکان استفاده از گواهینامه های wildcard و همچنین مدیریت دارایی های زیادی از سرور مجازی های وب مجزا را که ممکن است در ورای یک بالانسر بار قرار داشته باشند ، ممکن می کند.
برای بروزرسانی های اسکریپت ، مراقب مخزن acme-dns-certbot باشید ، زیرا همیشه اجرای آخرین نسخه پشتیبانی شده توصیه می شود.
اگر علاقه مند به کسب اطلاعات بیشتر در مورد acme-dns-certbot هستید ، میتوانید مستندات مربوط به پروژه acme-dns را که عنصر سمت سرور مجازی Acme-dns-certbot است ، مرور کنید:
acme-dns on GitHub
نرم افزار acme-dns همچنین می تواند هاست خود باشد که اگر در محیط های با امنیت بالا یا پیچیده کار می کنید ، می تواند مفید واقع شود.
از طرف دیگر ، می توانید با بررسی بخش مربوط به مطالب رسمی RFC که شامل نحوه کار روند می باشد ، جزئیات فنی اعتبارسنجی ACME DNS را جستجو کنید.

 

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

چگونه به 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 ارزان – 

 

برچسب‌ها: