سرور مجازی

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

  • ۰
  • ۰

DDEV یک ابزار منبع باز است که از Docker برای ساختن محیط های توسعه محلی برای بسیاری از چارچوب های مختلف PHP استفاده می کند. با استفاده از قدرت کانتینر کردن ، DDEV می تواند نحوه کار روی چندین پروژه که از چندین پشته فناوری و چندین سرور مجازی ابری استفاده می کنند ، بسیار ساده نماید. DDEV شامل قالب هایی برای WordPress ، Laravel ، Magento ، TYPO3 ، Drupal و موارد دیگر است.
Drupal 9 در تاریخ 3 ژوئن 2020 برای Drupal CMS منتشر شد. Drupal که به دلیل سهولت در استفاده و کتابخانه گسترده ای از ماژول ها و تم ها شناخته شده است ، یک چارچوب محبوب PHP برای ساخت و نگهداری وب سایت ها و برنامه های مختلف در هر اندازه است.
در این آموزش شما با استفاده از DDEV اقدام به تهیه وب سایت Drupal 9 در دستگاه محلی خود خواهید کرد. این کار به شما امکان می دهد تا ابتدا وب سایت خود را بسازید و سپس وقتی آماده شدید ، پروژه خود را به یک سرور مجازی تولید مستقر کنید.

پیش نیازها
برای تکمیل این آموزش ، به موارد زیر نیاز دارید:
• یک دستگاه محلی که لینوکس یا macOS را اجرا می کند
⦁ برای macOS: مدیر بسته Homebrew ، که شما برای نصب DDEV استفاده خواهید کرد. برای نصب Homebrew در دستگاه محلی خود ، مرحله سوم – نصب و راه اندازی Homebrew را در این آموزش Ruby دنبال کنید.
⦁ Docker و Docker Compose روی دستگاه محلی شما نصب باشد.
o برای لینوکس: می توانید Docker و Docker Compose را با این دو آموزش نصب کنید: نحوه نصب و استفاده از Docker و نحوه نصب Docker Compose. توزیع لینوکس خود را از لیست انتخاب کرده و دستورالعمل های موجود را دنبال کنید.
o برای macOS: Docker Compose قبلاً به عنوان بخشی از جعبه ابزار Docker در دسترس بود ، اما جعبه ابزار Docker اکنون یک راه حل اساسی است. امروز ، Docker رسما توصیه می کند که Docker Desktop را نصب کنید ، که شامل Docker Compose ، Docker Engine و موارد دیگر می باشد. برای نصب Docker Desktop در macOS ، راهنمای رسمی Docker را دنبال کنید. برای اطلاعات بیشتر می توانید راهنمای رسمی شروع کار Docker Desktop را مطالعه کنید. اگر قبلاً از Docker Toolbox برای نصب ابزارهای مختلف Docker استفاده می کردید ، می توانید در مورد تفاوت های بین Docker Toolbox و Docker Desktop و چگونگی همزیستی آنها ، این مقاله رسمی را بخوانید.

توجه: توسعه Drupal 9 با استفاده از DDEV روی یک سرور مجازی از راه دور امکان پذیر است ، اما برای دسترسی به localhost در یک مرورگر وب ، به یک راه حل نیاز خواهید داشت. دستور DDEV ddev share با ngrok کار می کند ، که تونل ایمن را برای شما و سایر ذینفعان در سرور مجازی شما ایجاد می کند تا سایت توسعه خود را مشاهده کنید. برای استفاده شخصی ، همچنین می توانید یک رابط کاربری گرافیکی را بر روی سرور مجازی راه دور خود نصب کنید و از طریق یک مرورگر وب در داخل رابط به سایت توسعه خود دسترسی پیدا کنید برای این کار می توانید راهنمای ما در مورد نحوه نصب و پیکربندی VNC در اوبونتو 20.04 را دنبال کنید. برای یک راه حل GUI حتی سریعتر ، می توانید راهنمای ما در مورد راه اندازی دسک تاپ از راه دور با X2Go در اوبونتو 20.04 را دنبال کنید.

مرحله 1 – نصب DDEV
در این مرحله DDEV را روی دستگاه محلی خود نصب خواهید کرد. گزینه 1 شامل دستورالعمل هایی برای macOS است در حالی که گزینه 2 دستورالعمل هایی را برای لینوکس ارائه می دهد. این آموزش بر روی نسخه DDEV 1.15.0 تست شده است.

گزینه 1 – نصب DDEV روی macOS
DDEV توصیه می کند که کاربران macOS ابزار خود را با استفاده از مدیر بسته Homebrew نصب کنند. برای نصب جدیدترین نسخه پایدار از دستور brew زیر استفاده کنید:
⦁ $ brew tap drud/ddev && brew install drud/ddev/ddev

اگر جدیدترین نسخه مطلق را ترجیح می دهید ، می توانید از brew برای نصب ddev-edge استفاده کنید:
⦁ $ brew tap drud/ddev-edge && brew install drud/ddev-edge/ddev

اگر نسخه DDEV را قبلاً نصب کرده اید ، یا می خواهید نسخه خود را به روز کنید ، DDEV را خاموش کنید و برای بروزرسانی نصب خود از brew استفاده کنید:
⦁ $ ddev poweroff

$ $ brew upgrade ddev

پس از نصب یا به روزرسانی DDEV ، نسخه ddev را برای تأیید نرم افزار خود اجرا کنید:
⦁ $ ddev version

خروجی مانند این را مشاهده خواهید کرد:
Output
DDEV-Local version v1.15.0
commit v1.15.0
db drud/ddev-dbserver-mariadb-10.2:v1.15.0
dba phpmyadmin/phpmyadmin:5
ddev-ssh-agent drud/ddev-ssh-agent:v1.15.0
docker 19.03.8
docker-compose 1.25.5
os darwin
router drud/ddev-router:v1.15.0
web drud/ddev-webserver:v1.15.0

DDEV شامل یک رابط قدرتمند CLI یا خط فرمان است. ddev را اجرا کنید تا در مورد برخی دستورات معمول مطلع شوید:
⦁ $ ddev

خروجی زیر را مشاهده خواهید کرد:
Output
Create and maintain a local web development environment.
Docs: https://ddev.readthedocs.io
Support: https://ddev.readthedocs.io/en/stable/#support

Usage:
ddev [command]

Available Commands:
auth A collection of authentication commands
composer Executes a composer command within the web container
config Create or modify a ddev project configuration in the current directory
debug A collection of debugging commands
delete Remove all project information (including database) for an existing project
describe Get a detailed description of a running ddev project.
exec Execute a shell command in the container for a service. Uses the web service by default.
export-db Dump a database to a file or to stdout
help Help about any command
hostname Manage your hostfile entries.
import-db Import a sql file into the project.
import-files Pull the uploaded files directory of an existing project to the default public upload directory of your project.
list List projects
logs Get the logs from your running services.
pause uses ‘docker stop’ to pause/stop the containers belonging to a project.
poweroff Completely stop all projects and containers
pull Pull files and database using a configured provider plugin.
restart Restart a project or several projects.
restore-snapshot Restore a project’s database to the provided snapshot version.
sequelpro This command is not available since sequel pro.app is not installed
share Share project on the internet via ngrok.
snapshot Create a database snapshot for one or more projects.
ssh Starts a shell session in the container for a service. Uses web service by default.
start Start a ddev project.
stop Stop and remove the containers of a project. Does not lose or harm anything unless you add –remove-data.
version print ddev version and component versions

Flags:
-h, –help help for ddev
-j, –json-output If true, user-oriented output will be in JSON format.
-v, –version version for ddev

Use “ddev [command] –help” for more information about a command.

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

گزینه 2 – نصب DDEV در لینوکس
در سیستم عامل لینوکس می توانید DDEV را با استفاده از Homebrew برای لینوکس یا با استفاده از اسکریپت نصب رسمی نصب کنید. در اوبونتو ، با به روزرسانی لیست بسته های خود در مدیر بسته apt شروع کنید (شما می توانید از Debian استفاده کنید ، در غیر این صورت از مدیر بسته معادل مرتبط با توزیع لینوکس خود استفاده نمایید):
⦁ $ sudo apt update

اکنون برخی از بسته های پیش شرط را از مخزن رسمی اوبونتو نصب کنید:
⦁ $ sudo apt install build-essential apt-transport-https ca-certificates software-properties-common curl

این بسته ها به شما امکان می دهند اسکریپت نصب DDEV را از مخزن رسمی GitHub آنها دانلود کنید.
اکنون اسکریپت را دانلود کنید:
⦁ $ curl -O https://raw.githubusercontent.com/drud/ddev/master/scripts/install_ddev.sh

قبل از اجرای اسکریپت ، آن را در nano یا ویرایشگر متن مورد نظر خود باز کرده و محتویات آن را بررسی کنید:
nano install_ddev.sh

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

⦁ $ chmod +x install_ddev.sh

اکنون اسکریپت را اجرا کنید:
⦁ $ ./install_ddev.sh

فرآیند نصب ممکن است از شما بخواهد که برخی از تنظیمات را تأیید کنید یا رمز عبور sudo خود را وارد کنید. پس از اتمام نصب ، DDEV را در سیستم عامل لینوکس خود در دسترس خواهید داشت.
نسخه ddev را برای تأیید نرم افزار خود اجرا کنید:
⦁ $ ddev version

خروجی مانند این را مشاهده خواهید کرد:
Output
DDEV-Local version v1.15.0
commit v1.15.0
db drud/ddev-dbserver-mariadb-10.2:v1.15.0
dba phpmyadmin/phpmyadmin:5
ddev-ssh-agent drud/ddev-ssh-agent:v1.15.0
docker 19.03.8
docker-compose 1.25.5
os linux
router drud/ddev-router:v1.15.0
web drud/ddev-webserver:v1.15.0

DDEV یک CLI قدرتمند یا رابط خط فرمان است. ddev را بدون هیچ چیز دیگری اجرا کنید تا در مورد برخی دستورات متداول کسب اطلاعات کنید:
⦁ $ ddev

خروجی زیر را مشاهده خواهید کرد:
Output
Create and maintain a local web development environment.
Docs: https://ddev.readthedocs.io
Support: https://ddev.readthedocs.io/en/stable/#support

Usage:
ddev [command]

Available Commands:
auth A collection of authentication commands
composer Executes a composer command within the web container
config Create or modify a ddev project configuration in the current directory
debug A collection of debugging commands
delete Remove all project information (including database) for an existing project
describe Get a detailed description of a running ddev project.
exec Execute a shell command in the container for a service. Uses the web service by default.
export-db Dump a database to a file or to stdout
help Help about any command
hostname Manage your hostfile entries.
import-db Import a sql file into the project.
import-files Pull the uploaded files directory of an existing project to the default public upload directory of your project.
list List projects
logs Get the logs from your running services.
pause uses ‘docker stop’ to pause/stop the containers belonging to a project.
poweroff Completely stop all projects and containers
pull Pull files and database using a configured provider plugin.
restart Restart a project or several projects.
restore-snapshot Restore a project’s database to the provided snapshot version.
sequelpro This command is not available since sequel pro.app is not installed
share Share project on the internet via ngrok.
snapshot Create a database snapshot for one or more projects.
ssh Starts a shell session in the container for a service. Uses web service by default.
start Start a ddev project.
stop Stop and remove the containers of a project. Does not lose or harm anything unless you add –remove-data.
version print ddev version and component versions

Flags:
-h, –help help for ddev
-j, –json-output If true, user-oriented output will be in JSON format.
-v, –version version for ddev

Use “ddev [command] –help” for more information about a command.

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

مرحله 2 – استقرار یک سایت جدید Drupal 9 با استفاده از DDEV
با اجرای DDEV ، اکنون از آن برای ایجاد یک سیستم فایل اختصاصی Drupal ، نصب Drupal 9 استفاده کرده و سپس یک پروژه وب سایت استاندارد را آغاز می کنید.
ابتدا یک دایرکتوری root Project ایجاد می کنید و سپس به آن میروید. تمام دستورات باقی مانده را از این مکان اجرا خواهید کرد. در این آموزش از d9test استفاده می شود ، اما آزاد هستید که دیرکتوری خود را هر چیز دیگری بنامید. با این حال توجه داشته باشید ، که DDEV به خوبی با اسم های خط فاصله دار کار نمی کند. بهتر است از اسامی دیرکتوری مانند my-project یا drupal-site-1 اجتناب شود.
دایرکتوری اصلی پروژه خود را ایجاد کرده و به داخل آن بروید:
⦁ $ mkdir d9test

⦁ $ cd d9test

DDEV در ایجاد شاخه های دیرکتوری که مطابق با سیستم عاملهای خاص CMS هستند ، سرآمد است. برای ایجاد یک ساختار دایرکتوری خاص برای Drupal 9 از دستور پیکربندی ddev استفاده کنید:
⦁ $ ddev config –project-type=drupal9 –docroot=web –create-docroot

خروجی مانند این را مشاهده خواهید کرد:
Output
Creating a new ddev project config in the current directory (/Users/sammy/d9test)
Once completed, your configuration will be written to /Users/sammy/d9test/.ddev/config.yaml

Created docroot at /Users/sammy/d9test/web
You have specified a project type of drupal9 but no project of that type is found in /Users/sammy/d9test/web
Ensuring write permissions for d9new
No settings.php file exists, creating one
Existing settings.php file includes settings.ddev.php
Configuration complete. You may now run ‘ddev start’.

از آنجا که شما –project-type = drupal9 را به دستور ddev config خود منتقل کردید ، DDEV چندین زیرشاخه و فایل ایجاد کرده است که نمایانگر سازمان پیش فرض برای وب سایت Drupal است. درخت دایرکتوری پروژه شما اکنون به صورت زیر خواهد بود:

A Drupal 9 directory tree
.
├── .ddev
│   ├── .gitignore
│   ├── config.yaml
│   ├── db-build
│   │   └── Dockerfile.example
│   └── web-build
│   └── Dockerfile.example
└── web
└── sites
└── default
├── .gitignore
├── settings.ddev.php
└── settings.php

6 directories, 7 files

.ddev / پوشه اصلی تنظیمات ddev خواهد بود. web/ معیار پروژه جدید شما خواهد بود که شامل فایل های settings.خاصی است. در حال حاضر داربست اولیه برای پروژه جدید Drupal خود را دارید.
قدم بعدی شما تنظیم اولیه سیستم عامل است که باعث می شود کانتینرهای لازم و تنظیمات شبکه ایجاد شود. DDEV به پورت های 80 و 443 متصل می شود ، بنابراین اگر سرور مجازی وبی مانند Apache و یا هر چیز دیگری که از آن پورت ها استفاده می کند روی دستگاه خود دارید ، قبل از ادامه کار آن سرویس ها را متوقف کنید.
برای تنظیم اولیه سیستم عامل خود از دستور start ddev استفاده کنید:
⦁ $ ddev start

این کار باعث می شود تمام کانتینرهای مستقر در Docker برای پروژه شما ساخته شود ، که شامل یک کانتینر وب ، یک کانتینر دیتابیس و phpmyadmin است. پس از تکمیل اولیه ، خروجی مانند این را مشاهده خواهید کرد (ممکن است شماره پورت شما متفاوت باشد):
Output

Successfully started d9test
Project can be reached at http://d9test.ddev.site http://127.0.0.1:32773

توجه: به یاد داشته باشید که DDEV در اینجا کانتینرهای Docker را در پشت صحنه شروع می کند. اگر می خواهید آن کانتینرها را مشاهده کنید یا تأیید کنید که در حال اجرا هستند ، می توانید همیشه از دستور docker ps استفاده کنید:
⦁ $ docker ps

در کنار هر کانتینر دیگری که هم اکنون در حال کار هستید ، چهار کانتینر جدید پیدا خواهید کرد که هر یک تصویر متفاوتی دارند:
php-myadmin, ddev-webserver, ddev-router, و  ddev-dbserver-mariadb.

ddev start با موفقیت کانتینرهای شما را ساخته و خروجی با دو URL به شما داده است. در حالی که این خروجی می گوید که پروژه شما “می تواند در http://d9test.ddev.site و http://127.0.0.1:32773” حاصل شود ، بازدید از این URL ها در حال حاضر خطایی را به همراه خواهد داشت. با شروع Drupal 8 ، هسته Drupal و ماژول های مربوطه مانند متعلقات کار می کنند. بنابراین ، ابتدا باید نصب Drupal را با استفاده از Composer ، مدیر بسته برای پروژه های PHP ، قبل از هر چیزی در مرورگر وب خود نصب کنید.
یکی از مفیدترین و ظریف ترین ویژگی های DDEV این است که می توانید دستورات Composer را از طریق DDEV CLI به محیط کانتینرایز خود منتقل کنید. این بدان معنی است که می توانید تنظیمات خاص دستگاه خود را از محیط توسعه جدا کنید. دیگر نیازی به مدیریت مسیرهای مختلف فایل ، متعلقات و نسخه های مربوط به آن که عموماً با توسعه PHP محلی همراه است ، ندارید. علاوه بر این ، می توانید به سرعت بین پروژه های مختلف با استفاده از چارچوب های مختلف و پشته های فناوری با حداقل تلاش ، جابه جا شوید.
برای دانلود drupal/recommended-project از دستور ddev composer استفاده کنید. این دستور هسته Drupal ، کتابخانه های آن و سایر منابع مرتبط را دانلود می کند و سپس یک پروژه پیش فرض ایجاد می کند:
⦁ $ ddev composer create “drupal/recommended-project”

اکنون یک جزء نهایی به نام Drush یا Drupal Shell را دانلود کنید. در این آموزش فقط از یک دستور drush استفاده خواهد شد و این آموزش جایگزینی را ارائه می دهد ، اما drush یک CLI قدرتمند برای توسعه Drupal است که می تواند کارایی شما را بهبود بخشد.
برای نصب drush از ddev composer استفاده کنید:
⦁ $ ddev composer require “drush/drush”

اکنون یک پروژه پیش فرض Drupal 9 ساخته اید و drush را نصب کرده اید. پروژه خود را در یک مرورگر مشاهده خواهید کرد و تنظیمات وب سایت خود را پیکربندی می کنید.

مرحله 3 – پیکربندی پروژه Drupal 9 شما
اکنون که Drupal 9 را نصب کردید می توانید از پروژه جدید خود در مرورگرتان بازدید کنید. برای انجام این کار ، می توانید ddev را دوباره راه اندازی کرده و یکی از دو URL را که از آن خارج شده است کپی کنید ، یا می توانید از دستور زیر استفاده کنید ، که به طور خودکار سایت شما را در یک پنجره مرورگر جدید راه اندازی می کند:
⦁ $ ddev launch

با Drupal installation wizard استاندارد روبرو می شوید.

در اینجا شما دو گزینه دارید. می توانید از این رابط کاربر استفاده کنید و wizard را از طریق نصب دنبال کنید ، یا می توانید به ترمینال خود برگردید و یک دستور drush را از ddev عبور دهید. گزینه دوم فرایند نصب را خودکار می کند و مدیر را به عنوان نام کاربری و رمز عبور خود تنظیم می کند.
گزینه 1 – استفاده از Wizard
در مرورگر خود به wizard برگردید. در قسمت انتخاب زبان ، زبانی را از منوی کشویی انتخاب کنید و روی  Save and continue کلیک کنید. اکنون نمایه نصب را انتخاب کنید. می توانید بین Standard ، Minimal و Demo انتخاب کنید. انتخاب خود را انجام داده و سپس بر روی  Save and continue کلیک کنید. Drupal به طور خودکار نیازهای شما را تأیید می کند ، یک بانک اطلاعاتی را راه اندازی می کند و سایت شما را نصب می کند. آخرین مرحله شما این است که چند تنظیات انجام دهید. یک نام سایت و یک آدرس ایمیل سایت که به دامنه شما ختم می شود اضافه کنید. سپس نام کاربری و رمز عبور را انتخاب کنید. یک رمز عبور قوی انتخاب کنید و اعتبارات خود را در جایی ایمن نگه دارید. در آخر ، یک آدرس ایمیل خصوصی را که مرتباً بررسی می کنید ، اضافه کنید ، تنظیمات منطقه ای را اضافه کرده و Save and continue را بزنید.
سایت جدید شما با یک پیام خوش آمدید لود می شود.

گزینه 2 – استفاده از خط فرمان
از دیرکتوری اصلی پروژه خود ، این دستور ddev exec را اجرا کنید تا یک سایت پیش فرض Drupal را با استفاده از drush نصب کنید:
⦁ $ ddev exec drush site:install –account-name=admin –account-pass=admin

این کار سایت شما را درست مانند wizard فقط با برخی تنظیمات boilerplate ایجاد می کند. نام کاربری و رمز عبور شما admin خواهند بود.
اکنون سایت را راه اندازی کنید تا در مرورگر خود مشاهده کنید:
⦁ $ ddev launch

اکنون آماده ساخت وب سایت خود هستید ، اما بهتر است بررسی صحت مجوزهای مربوط به دیرکتوری /sites/web/default را در نظر بگیرید. وقتی به صورت محلی کار می کنید ، نگرانی مهمی نیست ، اما اگر این مجوزها را به یک سرور مجازی تولید منتقل کنید ، خطرات امنیتی ایجاد می کنند.

مرحله 4 – بررسی مجوزهای خود
در حین نصب wizard یا وقتی صفحه استقبال شما لود می شود ، ممکن است هشداری در مورد تنظیمات مجوزها در دیرکتوری /sites/web/default و یک فایل در آن دیرکتوری مشاهده کنید: settings.php.
پس از اجرای اسکریپت نصب ، Drupal سعی خواهد کرد مجوزهای دیرکتوری web/sites/default را برای همه گروهها مطالعه و اجرا کند: این تنظیمات مجوز 555 است. همچنین سعی خواهد کرد مجوزهای default/settings.php را روی read-only یا 444 تنظیم کنید. اگر با این اخطار مواجه شدید ، این دو دستور chmod را از دیرکتوری اصلی پروژه خود اجرا کنید. عدم انجام این کار خطر امنیتی را به همراه دارد:
⦁ $ chmod 555 web/sites/default

⦁ $ chmod 444 web/sites/default/settings.php

برای تأیید اینکه مجوزهای درستی دارید ، این دستور ls را با کلیدهای a ، l ، h و d اجرا کنید:
⦁ $ ls -alhd web/sites/default web/sites/default/settings.php

بررسی کنید که مجوزهای شما با خروجی زیر مطابقت دارد:
Output
dr-xr-xr-x 8 sammy staff 256 Jul 21 12:56 web/sites/default
-r–r–r– 1 sammy staff 249 Jul 21 12:12 web/sites/default/settings.php

اکنون آماده ساخت وب سایت Drupal 9 در دستگاه محلی خود هستید.

مرحله 5 – ایجاد اولین پست در Drupal
برای آزمایش برخی از قابلیت های Drupal ، اکنون با استفاده از UI وب ، پستی ایجاد خواهید کرد.
از صفحه اولیه سایت خود ، روی دکمه محتوا در لبه سمت چپ بالای دیرکتوری کلیک کنید. اکنون روی دکمه آبی رنگ add content کلیک کنید. یک صفحه جدید ظاهر می شود روی Article کلیک کنید و صفحه دیگری ظاهر می شود.

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

 

 

 

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

مرحله 6 – مدیریت کانتینر DDEV
هنگامی که پروژه خود را به پایان رسانید ، یا وقتی می خواهید استراحت کنید ، می توانید بدون نگرانی در مورد از دست رفتن داده ، کانتینر DDEV خود را متوقف کنید. DDEV می تواند تعویض سریع متن را در بین بسیاری از پروژه ها مدیریت کند. این یکی از مفیدترین ویژگی های آن است. کد و داده های شما همیشه در دیرکتوری پروژه شما نگه داشته می شود ، حتی پس از متوقف کردن یا حذف کانتینر DDEV.
برای آزادسازی منابع ، می توانید DDEV را در هر زمان متوقف کنید. از دیرکتوری اصلی پروژه خود ، دستور زیر را اجرا کنید:
⦁ $
⦁ $ ddev stop

DDEV در سطح جهانی در دسترس است ، بنابراین می توانید دستورات ddev را از هرجایی اجرا کنید ، تا زمانی که پروژه DDEV را مشخص کنید:
⦁ $ ddev stop d9test

همچنین می توانید همه پروژه های خود را به طور هم زمان با استفاده از لیست ddev مشاهده کنید:
⦁ $ ddev list

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

نتیجه
در این آموزش شما از Docker و قدرت کانتینرایز برای ایجاد یک سایت Drupal به صورت محلی و به کمک DDEV استفاده کرده اید. DDEV همچنین با IDE های زیادی ادغام خوبی دارد و اشکال زدایی داخلی PHP را برای Atom ، PHPStorm و کد ویژوال استودیو (vscode) فراهم می کند. از اینجا ، می توانید در مورد ایجاد محیط های توسعه برای Drupal با DDEV یا ساخت سایر فریم ورک های PHP مانند وردپرس اطلاعات بیشتری کسب کنید.

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

  • behnam gol mohamadi
  • ۰
  • ۰

نمونه Redis مدیریت شده می تواند مزایایی مانند دسترسی بالا و به روزرسانی های خودکار را ارائه دهد. با این حال ، هر زمان که با یک سرور مجازی پایگاه داده از راه دور ارتباط برقرار کنید ، خطر حمله گران برای جاسوسی اطلاعات حساس ارسال شده به آن را به همراه دارد.
redis-cli ، رابط خط فرمان Redis ، به طور مستقیم از TLS ، یعنی پروتکل رمزنگاری که امکان برقراری ارتباط امن از طریق شبکه را فراهم می کند، پشتیبانی نمی کند. این بدان معنی است که بدون پیکربندی بیشتر ، redis-cli راهی مطمئن برای اتصال به یک سرور مجازی Redis از راه دور نیست. یکی از راه های برقراری ارتباط امن با نمونه Redis ایجاد شده ، ایجاد تونلی است که از پروتکل TLS استفاده می کند.
Stunnel یک پروکسی منبع باز است که برای ایجاد تونل های ایمن استفاده می شود و به شما امکان می دهد تا با ماشین های دیگر از طریق TLS ارتباط برقرار کنید. در این راهنما ، ما نصب و پیکربندی Stunnel را نشان میدهیم تا بتوانید با redis-cli به نمونه Redisمدیریت شده با Redis متصل شوید.
پیش نیازها
برای تکمیل این راهنما ، به موارد زیر نیاز دارید:
• دسترسی به سرور مجازی اوبونتو 18.04. این سرور مجازی باید دارای کاربر غیر ریشه و امتیازات ادمین و فایروال تنظیم شده با ufw باشد. برای انجام این کار ، راهنمای راه اندازی سرور مجازی اولیه ما برای اوبونتو 18.04 را دنبال کنید.
• یک نمونه پایگاه داده Redis مدیریت شده: مراحل ذکر شده در این آموزش به طور کلی برای بانکهای اطلاعاتی مدیریت شده از هر ارائه دهنده ابری کار میکنند.
مرحله 1 – نصب Stunnel و redis-cli
هنگامی که سرور مجازی Redis را نصب می کنید ، معمولاً با redis-cli همراه است. با این وجود ، می توانید با نصب بسته redis-tools از مخازن پیش فرض اوبونتو ، redis-cli را بدون سرور مجازی Redis نصب کنید. همچنین می توانید با دانلود بسته stunnel4 ، stunnel را از مخازن پیش فرض اوبونتو نصب کنید.
اگر اخیراً این کار را نکرده اید ، دیرکتوری بسته سرور مجازی خود را به روز کنید:
$ sudo apt update

سپس بسته های redis-tools و stunnel4 را با APT نصب کنید:
$ sudo apt install redis-tools stunnel4

هنگامی که از شما درخواست شد ، تأیید کنید که می خواهید بسته ها را نصب کنید.
با اجرای دستور زیر می توانید بررسی کنید که آیا stunnel به صورت صحیح نصب شده است یا خیر:
$ sudo systemctl status stunnel4

Output
● stunnel4.service – LSB: Start or stop stunnel 4.x (TLS tunnel for network daemons)
Loaded: loaded (/etc/init.d/stunnel4; generated)
Active: active (exited) since Thu 2019-09-12 14:34:05 UTC; 8s ago
Docs: man:systemd-sysv-generator(8)
Tasks: 0 (limit: 2362)
CGroup: /system.slice/stunnel4.service

Sep 12 14:34:05 stunnel systemd[1]: Starting LSB: Start or stop stunnel 4.x (TLS tunnel for network daemons)…
Sep 12 14:34:05 stunnel stunnel4[2034]: TLS tunnels disabled, see /etc/default/stunnel4
Sep 12 14:34:05 stunnel systemd[1]: Started LSB: Start or stop stunnel 4.x (TLS tunn

در اینجا ، می بینید که سرویس stunnel فعال است ، اگرچه این روند بلافاصله خارج می شود. این به ما می گوید که stunnel در حال اجراست ، اما از آنجایی که ما هنوز پیکربندی نکرده ایم ، قادر به انجام عملی نیستیم.
مرحله 2 – پیکربندی Stunnel
سیستم های مدرن لینوکس برای تنظیم اولیه و مدیریت خدمات و دیمن ها به سیستم متکی هستند. با این حال ، stunnel برای راه اندازی از اسکریپت مبتنی بر سبک SysV که مبتنی بر سیستم قدیمی UNIX System V init است ، استفاده می کند. برای فعال کردن این اسکریپت اولیه باید فایل / etc / default / stunnel4 را تغییر دهید.
این فایل را با ویرایشگر متن مورد نظر خود باز کنید. در اینجا ، ما از nano استفاده خواهیم کرد:
$ sudo nano /etc/default/stunnel4

گزینه ENABLED را در بالای فایل پیدا کنید. به طور پیش فرض روی 0 تنظیم می شود ، اما ان را به 1 تغییر می دهد تا بتواند در بوت شروع به کار کند:
/etc/default/stunnel4
# /etc/default/stunnel
# Julien LEMOINE <speedblue@debian.org>
# September 2003

# Change to one to enable stunnel automatic startup
ENABLED=1
. . .

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

محتوای زیر را به این فایل اضافه کنید:
/etc/stunnel/stunnel.conf
fips = no
setuid = nobody
setgid = nogroup
pid = /home/sammy/pids/stunnel.pid
debug = 7
delay = yes
[redis-cli]
client = yes
accept = 127.0.0.1:8000
connect = managed_redis_hostname_or_ip:managed_redis_port

پنج خط اول در فایل گزینه های جهانی هستند ، به این معنی که آنها برای هر سرویسی که در این فایل گنجانده اید اعمال خواهد شد:
fips: حالت FIPS 140-2 را برای stunnel فعال یا غیرفعال می کند. در این حالت ، stunnel تأیید می کند که اتصال مطابق با استاندارد پردازش اطلاعات فدرال است. تنظیم آن روی no این ویژگی را غیرفعال می کند. توجه داشته باشید که غیرفعال کردن این امر امنیت کمتری ندارد ، اما فعال کردن آن (به صورت پیش فرض) به پیکربندی بیشتری نیاز دارد.
setuid: شناسه کاربر یونیکس را که تحت آن stunnel اجرا می شود تعریف میکند. به طور پیش فرض ، روند stunnel متعلق به کاربر root است. با این حال ، مستندات stunnel توصیه می کنند که پس از شروع stunnel ، امتیازات ادمین را رها کنید ، زیرا عدم انجام این کار خطر امنیتی را ایجاد می کند. تنظیم پارامتر setuid  بر روی nobody  باعث می شود که هیچ کاربر غیرمجازی پس از شروع به کار stunnel ، روند آن را به تصرف خود نیاورد.
setgid: شناسه گروه یونیکس را تعریف می کند که stunnel تحت آن اجرا می شود. مانند تنظیمات setuid ، این پیکربندی گروهی را بدون هیچ گونه امتیاز ویژه – nogroup  – مشخص می کند تا از مشکلات امنیتی احتمالی جلوگیری کند.
pid: موقعیت فایل را تعریف می کند که در آن stunnel یک فایل .pid ایجاد کند ، نوعی فایل که حاوی PID فرآیند است. فایلهای pid معمولاً توسط برنامه های دیگر برای یافتن PID یک فرایند در حال اجرا استفاده می شوند. به طور پیش فرض ، stunnel یک فایل .pid را در دیرکتوری / var / run / stunnel4 / ایجاد می کند ، اما به دلیل اینکه هیچ کاربری اجازه دسترسی به آن دیرکتوری را ندارد ، از شروع صحیح stunnel جلوگیری می کند. در عوض ، این خط فایلی به نام stunnel.pid را که در پوشه ای به نام pids در دیرکتوری هوم کاربر Ubuntu نگهداری می شود ، مشخص می کند. ما در ادامه این دیرکتوری و فایل stunnel.pid را ایجاد خواهیم کرد. همینطور که این خط را اضافه می کنید ، حتماً sammy را به نام کاربر سیستم Ubuntu خود تغییر دهید.
debug: سطح اشکال زدایی stunnel را تنظیم می کند ، که می تواند از 0 تا 7 باشد. در این مثال ما آن را به 7 ، بالاترین سطح در دسترس قرار می دهیم ، زیرا در صورت بروز هرگونه مشکل ، دقیق ترین اطلاعات را ارائه می دهد. می توانید آن را در هر سطحی که دوست دارید تنظیم کنید ، اما توجه داشته باشید که تنظیم پیش فرض 5 است.
delay: هنگامی که روی بله تنظیم میشود ، این گزینه باعث می شود تا stunnel جستجوی DNS برای آدرس ذکر شده در گزینه اتصال را به تأخیر بیندازد. همچنین از عدم دسترسی آدرس IP جلوگیری می کند. این کار باعث می شود که حتی اگر نمونه Redis آفلاین باشد، همانطور که می تواند هنگام افزایش اندازه خوشه شما اتفاق بیفتد، تونل را باز نگه دارد.
خطوط باقیمانده گزینه هایی در سطح سرویس ها هستند و فقط برای تونلی که ما برای redis-cli ایجاد خواهیم کرد اعمال می شود:
[redis-cli] : یک نام سرویس است و مشخص می کند که خطوط زیر یک پیکربندی سرویس فردی برای یک برنامه کلاینت را نشان می دهد. شما می توانید بیش از یک سرویس را در یک فایل پیکربندی stunnel داشته باشید ، هر چند که باید با یک برنامه کلاینت موجود همراه باشد و نمی توانید دو سرویس برای یک برنامه مشابه داشته باشید.
Client: تنظیم این گزینه روی بله به stunnel می گوید که در حالت کلاینت اجرا شود ، به این معنی که stunnel به جای اینکه به عنوان یک سرور مجازی TLS عمل کند ، به یک سرور مجازی TLS (نمونه Redis مدیریت شده) وصل می شود.
accept: میزبان و پورت را که تونل در آن از کلاینت پشتیبانی می کند ، تعریف می کند. در اینجا ، ما آدرس IP 127.0.0.1 را مشخص می کنیم ، که یک آدرس IPv4 loopback است که برای نمایش localhost و پورت 8000 استفاده می شود. این بدان معناست که stunnel اتصالات منشاء گرفته از سرور مجازی اوبونتو را در پورت 8000 گوش می دهد و آنها را رمزگذاری می کند. توجه داشته باشید که می توانید پورت را روی هر شماره پورتی که که از قبل استفاده نشده تنظیم کنید.
connect: آدرس و پورت راه دور را که stunnel به آن متصل میشود را تعیین می کند. حتماً این پارامتر را تغییر دهید تا با پورت و نام میزبان یا آدرس IP پایگاه داده مدیریت شده مطابقت داشته باشید.
توجه: نام میزبان یا آدرس IP و پورتی که باید در بخشنامه اتصال مشخص کنید مربوط به بانک اطلاعاتی Redis شما می باشد. این موارد معمولاً در رابط کاربری مدیریت پایگاه داده ارائه دهنده ابری شما وجود دارد که نمونه Redis خود را تهیه کرده اید.
این پیکربندی نسبتاً جزیی است که بسیاری از تنظیمات پیش فرض stunnel را کنار می گذارد. این برنامه برای ایجاد تونل هایی متناسب با نیازهای خاص شما گزینه های بسیاری در اختیار شما قرار داده است. برای اطلاعات بیشتر به اسناد رسمی مراجعه کنید.
پس از افزودن این محتوا ، فایل را ذخیره کنید و ببندید.
سپس ، مطمئن شوید که شما در دیرکتوری اصلی کاربر اوبونتو هستید:
$ cd

در مرحله بعد پوشه pids را که فایل stunnel.pid را نگه می دارد ایجاد کنید:
$ mkdir pids

فرآیند stunnel فایل stunnel.pid را بطور خودکار ایجاد می کند ، بنابراین نیازی نیست خودتان این فایل را ایجاد کنید. با این حال ، نیاز به تغییر مالکیت دایرکتوری pids در گروه کاربر و گروه های جدید دارید:
$ sudo chown -R nobody:nogroup pids/

سپس سرویس stunnel4 را مجدداً راه اندازی کنید تا stunnel فایل پیکربندی جدید را بخواند:
$ sudo systemctl restart stunnel4

پس از آن ، می توانید آزمایش کنید که آیا stunnel با استفاده از netstat ، ابزار خط فرمان که برای نمایش اتصالات شبکه استفاده می شود ، با موفقیت یک تونل ایجاد کرده است. دستور زیر را اجرا کنید ، که خروجی netstat را به یک دستور grep پایپ می کند ، که به نوبه خود آن را برای هر نمونه از stunnel جستجو می کند:
$ sudo netstat -plunt | grep stunnel

Output
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 17868/
این خروجی نشان می دهد که stunnel در حال گوش دادن به اتصالات در پورت محلی 8000 است.
همچنین می توانید تأیید کنید که هیچ کس مالکیت فرآیند stunnel را با ps ، یعنی برنامه ای که تمام فرآیندهای در حال اجرا را نشان می دهد، در دست نگرفته است:
$ ps aux | grep stunnel

Output
nobody 15674 0.0 0.1 121912 3180 ? Ssl 19:28 0:00 /usr/bin/stunnel4 /etc/stunnel/stunnel.conf
. . .

در اینجا ، می بینید که هیچ کس واقعاً روند stunnel را به دست نگرفته است.
اکنون Stunnel کاملاً پیکربندی شده است و روی سیستم شما کار می کند. اکنون آماده اتصال به نمونه Redis مدیریت شده و تست کارکرد تونل هستید.
مرحله 3 – اتصال به بانک اطلاعاتی مدیریت شده از طریق TLS
اکنون که redis-cli را بر روی سرور مجازی خود نصب و stunnel را پیکربندی کرده اید، آماده هستید تا از طریق TLS به بانک اطلاعاتی مدیریت شده خود وصل شوید.
بر اساس تنظیمات تعریف شده در فایل پیکربندی ایجاد شده در مرحله 2 ، با دستور زیر به پایگاه داده مدیریت شده خود وصل می شوید:
$ redis-cli -h localhost -p 8000

این دستور شامل پرچم -h است که به redis-cli می گوید که آرگومان بعدی میزبان اتصال به آن خواهد بود. در این حالت ، از آنجا که ما به یک تونلی که به صورت محلی روی سرور مجازی ایجاد شده است متصل میشویم، localhost  خواهد بود. پس از آن پرچم -p است که بر پورت تونل محلی که به آن متصل می شویم ، پیشی میگیرد که در این حالت پورت 8000 است.
پس از اجرای آن فرمان ، به سرور مجازی مدیریت شده Redis خود متصل خواهید شد. اعلان شما تغییر خواهد کرد تا منعکس کننده اتصال و در حالت تعاملی redis-cli شما باشد:
Localhost:8000>
توجه: اغلب اوقات ، پایگاه داده های مدیریت شده پیکربندی می شوند تا کاربران را هنگام اتصال با رمز عبوری که وارد میکنند احراز هویت کنند. اگر نمونه Redis مدیریت شده شما نیاز به رمزعبور دارد ، می توانید پرچم -a را در فرمان redis-cli خود وارد کنید ، و پس از آن رمز عبور خود را دنبال کنید:
$ redis-cli -h localhost -p 8000 -a password

از طرف دیگر ، می توانید با اجرای دستور auth و پسورد خود پس از برقراری اتصال ، تأیید اعتبار کنید:
Localhost:8000> auth password

با اجرای دستور ping از حالت تعاملی Redis می توانید آزمایش کنید که آیا تونل کار می کند:
Localhost:8000> ping

اگر اتصال زنده باشد ، PONG را برمی گرداند:
Output
PONG

اگر با این حال ، stunnel به درستی ترافیک را از سرور مجازی شما به نمونه Redis شما تونل نکند ، ممکن است قبل از جدا شدن از Redis ، پیغام خطایی مانند این را مشاهده کنید:
Output
Error: Server closed the connection

اگر این یا یک خطای مشابه را دریافت کرده اید ، دوباره بررسی کنید که نام میزبان و پورت Redis را به درستی در فایل stunnel.conf خود وارد کرده اید. به همین ترتیب ، مطمئن باشید که شماره فرمان صحیح را در دستور redis-cli خود وارد کرده اید.
همچنین می توانید هنگامی که نمونه Redis مدیریت شده اتصالات باز خود را بازنشانی می کند ، این خطا را دریافت کنید ، همانطور که می تواند هنگام پیکربندی تنظیمات خوشه اتفاق بیفتد. در چنین مواردی ، ممکن است از Redis جدا نشوید ، اگرچه لازم است مجدداً تأیید اعتبار کنید.
پس از تأیید کار تونل ، پیش بروید و از نمونه Redis خود جدا شوید:
Localhost:8000> exit

اگر پیکربندی stunnel را تغییر دهید ، باید سرویس stunnel4 را بار دیگر بارگذاری یا ریستارت کنید ، تا stunnel متوجه تغییرات شود:
$ sudo systemctl reload stunnel4

اگر در هر زمانی در آینده می خواهید تونل TLS را ببندید ، می توانید با systemctl نیز این کار را انجام دهید:
$ sudo systemctl stop stunnel4

بعد از اینکه بنز تونل بسته شد ، می توانید با شروع دوباره سرویس ، تونل را مجدداً باز کنید:
$ sudo systemctl start stunnel4

اکنون که پیکربندی خود را با موفقیت انجام داده اید ، شروع به اضافه کردن داده ها به نمونه Redis مدیریت شده با Redis-cli میکنید.
نتیجه
Stunnel ابزاری مفید برای ایجاد تونل های TLS و برقراری اتصالات ایمن به سرور مجازی های از راه دور است. این امر به ویژه در مواردی که انتقال ایمن اطلاعات بین ماشین ها بسیار مهم است ، مانند پایگاه داده از راه دور، بسیار مفید خواهد بود.
از اینجا ، می توانید کاوش در Redis و ادغام آن با برنامه بعدی خود را شروع کنید. اگر به تازگی کار با Redis را شروع کرده اید ، ممکن است مجموعه مقالات ما را در مورد چگونگی مدیریت یک بانک اطلاعاتی Redis برایتان مفید باشد.

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

  • behnam gol mohamadi