Tumgik
vpsgol69-blog · 4 years
Text
نصب و ایمن سازی Grafana در اوبونتو 20.04
Grafana یک ابزار منبع باز تجسم و نظارت بر داده ها است که با داده های پیچیده از منابعی مانند Prometheus ، InfluxDB ، Graphite و ElasticSearch ادغام می شود. Grafana به شما امکان می دهد تا هشدارها ، اعلان ها و فیلترهای موقت را برای داده های خود ایجاد کنید و در عین حال با هم تیمی های خود از طریق مشخصه های به اشتراک گذاری داخلی آسانتر همکاری کنید. در این آموزش Grafana را نصب کرده و با یک گواهی SSL و یک پروکسی معکوس Nginx آن را ایمن خواهید کرد. پس از راه اندازی Grafana ، می توانید گزینه احراز هویت کاربر را از طریق GitHub پیکربندی کنید ، که به شما امکان می دهد مجوزهای تیم خود را بهتر سازماندهی کنید. پیش نیازها برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید: ⦁ یک سرور مجازی  Ubuntu 20.04 که با دنبال کردن راهنمای ستاپ اولیه سرور مجازی برای Ubuntu 20.04 نصب شده باشد، و شامل یک کاربر غیر ریشه با امتیازات sudo و فایروال تنظیم شده با ufw باشد. ⦁ نام دامنه کاملاً ثبت شده. در کل این آموزش از your_domain استفاده می شود. می توانید نام دامنه را در Namecheap خریداری کنید ، به صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید. ⦁ سوابق DNS زیر برای سرور مجازی شما تنظیم شده باشد. برای جزئیات بیشتر در مورد چگونگی افزودن آنها می توانید نحوه تنظیم نام میزبان با vpsgol را دنبال کنید. ⦁ یک رکورد A با your_domain که آدرس IP عمومی سرور مجازی شما نشان می دهد. ⦁ یک رکورد A با www.your_domain که به آدرس IP عمومی سرور مجازی شما اشاره کند. ⦁ Nginx که با پیروی از آموزش نحوه نصب Nginx در اوبونتو 20.04 نصب شده باشد، شامل بلوک سرور مجازی برای دامنه تان باشد. ⦁ بلوک سرور مجازی Nginx که با Let’S Encrypt پیکربندی شده باشد ، که می توانید با دنبال کردن چگونگی ایمن سازی Nginx با Let’s Encrypt در Ubuntu 20.04 تنظیم کنید. ⦁ به صورت اختیاری ، برای تنظیم تأیید هویت GitHub ، به یک حساب GitHub مرتبط با یک سازمان نیاز دارید. مرحله 1 – نصب Grafana در این مرحله اول ، Grafana را روی سرور مجازی Ubuntu 20.04 خود نصب خواهید کرد. شما می توانید Grafana را با دانلود مستقیم آن از وب سایت رسمی آن یا از طریق مخزن APT ، نصب کنید. از آنجا که یک مخزن APT نصب و مدیریت به روزرسانی های Grafana را آسان تر می کند ، از این روش در این آموزش استفاده خواهید کرد. کلید Grafana GPG را با wget دانلود کنید ، سپس خروجی را به apt-key متصل کنید. با این کار کلید به لیست نصب کلیدهای قابل اعتماد APT شما اضافه خواهد شد که به شما امکان می دهد بسته Grafana امضا شده توسط GPG را دانلود و تأیید کنید. ⦁ $ wget -q -O – https://packages.grafana.com/gpg.key | sudo apt-key add – ⦁ در این دستور ، گزینه -q پیام به روزرسانی وضعیت را برای wget خاموش می کند ، و -O فایلی را که دانلود کرده اید به ترمینال خروجی می فرستد. این دو گزینه اطمینان حاصل می کنند که فقط محتویات فایل دانلود شده به کلید apt-key اتصال یافته است. سپس ، مخزن Grafana را به منابع APT خود اضافه کنید: ⦁ $ sudo add-apt-repository “deb https://packages.grafana.com/oss/deb stable main” ⦁ حافظه نهان APT خود را برای به روزرسانی لیست های بسته بندی ریفرش کنید: ⦁ $ sudo apt update ⦁ اکنون میتوانید نصب را ادامه دهید ⦁ $ sudo apt install grafana ⦁ پس از نصب Grafana ، از systemctl برای راه اندازی سرور مجازی Grafana استفاده کنید: ⦁ $ sudo systemctl start grafana-server ⦁
سپس ، با بررسی وضعیت سرویس ، تأیید کنید که Grafana در حال اجرا است: ⦁ $ sudo systemctl status grafana-server ⦁ خروجی مشابه این دریافت خواهید کرد: Output ● grafana-server.service – Grafana instance Loaded: loaded (/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2020-05-21 08:08:10 UTC; 4s ago Docs: http://docs.grafana.org Main PID: 15982 (grafana-server) Tasks: 7 (limit: 1137) …
این خروجی شامل اطلاعاتی در مورد فرآیند Grafana ، از جمله وضعیت آن ، شناساگر اصلی فرآیند (PID) و موارد دیگر می باشد. active (running) نشان می دهد که روند صحیح در حال اجرا است. در آخر ، سرویس را فعال کنید تا به طور خودکار Grafana را از بوت شروع کند: ⦁ $ sudo systemctl enable grafana-server ⦁ خروجی زیر را دریافت خواهید کرد: Output Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable grafana-server Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.
این خروجی تأیید می كند كه systemd  ، پیوندهای سمبولیك لازم را به autostart Grafana ایجاد كرده است. Grafana هم اکنون نصب و آماده استفاده است. در مرحله بعد ، اتصال خود را با Grafana با یک پروکسی معکوس و گواهی SSL ایمن خواهید کرد. مرحله 2 – تنظیم پروکسی معکوس استفاده از گواهینامه SSL اطمینان حاصل می کند که داده های شما با رمزگذاری اتصال به و از Grafana ایمن هستند. اما برای استفاده از این ارتباط ، ابتدا لازم است Nginx را به عنوان یک پروکسی معکوس برای Grafana پیکربندی کنید. پیکربندی Nginx که هنگام ستاپ بلوک سرور مجازی Nginx با Let’s Encrypt در پیش نیازها ایجاد کردید را باز کنید. می توانید از هر ویرایشگر متنی استفاده کنید ، اما برای این آموزش از nano استفاده خواهیم کرد: ⦁ $ sudo nano /etc/nginx/sites-available/your_domain ⦁ بلوک زیر را جای دهید: /etc/nginx/sites-available/your_domain … location / { try_files $uri $uri/ =404; } …
از آنجا که قبلاً Nginx را تنظیم کرده اید تا از طریق SSL ارتباط برقرار کند و از آنجا که تمام ترافیک وب به سرور مجازی شما از طریق Nginx عبور می کند ، فقط باید به Nginx بگویید که کلیه درخواست ها را به Grafana ارسال کند ، که بصورت پیش فرض در پورت 3000 اجرا می شود. خط try_files موجود را در این location block را حذف کرده و آن را با گزینه proxy_pass زیر جایگزین کنید. /etc/nginx/sites-available/your_domain … location / { proxy_pass http://localhost:3000; } …
با این کار پروکسی به پورت مناسب نگاشت می شود. پس از اتمام کار ، فایل را با فشار دادن CTRL + X ذخیره کرده و آن را ببندید ، اگر از nano استفاده می کنید ، Y و سپس enter را بزنید. اکنون ، تنظیمات جدید را آزمایش کنید تا مطمئن شوید همه چیز به درستی پیکربندی شده است: ⦁ $ sudo nginx -t ⦁ خروجی زیر را دریافت خواهید کرد: Output nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
در آخر ، تغییرات را با لود مجدد Nginx فعال کنید: ⦁ $ sudo systemctl reload nginx ⦁ اکنون با نشان دادن مرورگر وب خود به https: // your_domain می توانید به صفحه پیش فرض ورود به سیستم Grafana دسترسی پیدا کنید. اگر نمی توانید به Grafana دسترسی پیدا کنید ، بررسی کنید که فایروال به گونه ای تنظیم شده باشد که در پورت 443 امکان عبور و مرور را فراهم کند و دستورالعمل های قبلی را دوباره ردیابی کنید. با اتصال به Grafana رمزگذاری شده ، اکنون می توانید اقدامات امنیتی دیگری را با شروع تغییر اعتبارنامه ادمین پیش فرض Grafana ، انجام دهید. مرحله 3 – به روزرسانی اعتبارات از آنجا که هر نصب Grafana بصورت پیش فرض از یک مدل اعتبارات اجرایی استفاده می کند ، بهتر است هرچه سریعتر اطلاعات ورود به سیستم را تغییر دهید. در این مرحله ، اعتبارات را برای بهبود امنیت به روز می کنید. با رفتن به https: // your_domain از مرورگر وب خود شروع کنید. این صفحه پیش فرض ورود به سیستم را ایجاد می کند که در آن لوگوی Grafana را مشاهده می کنید ، فرمی که از شما خواسته می شود یک ایمیل یا نام کاربری و رمز عبور وارد کنید، دکمه ورود به سیستم و لینک آیا رمز ورود خود را فراموش کنید؟ را نشان میدهد.
ادمین را در هر دو قسمت User و Password وارد کرده و بر روی دکمه Log in (ورود به سیستم) کلیک کنید. در صفحه بعدی از شما خواسته می شود با تغییر رمز پیش فرض ، حساب خود را ایمن تر کنید:
گذرواژه‌ای را که مایل به ��ستفاده از آن هستید ، در گذرواژه جدید وارد کرده و قسمتهای رمز عبور جدید را تأیید کنید. از اینجا ، می توانید برای ذخیره اطلاعات جدید روی save کلیک کرده یا skip را فشار دهید تا از این مرحله رد شوید. در صورت skip (پرش)، دفعه بعدی که وارد میشوید از شما خواسته می شود گذرواژه را تغییر دهید. برای افزایش امنیت راه اندازی Grafana ، روی save کلیک کنید. به صفحه  Home Dashboard باز خواهید گشت:
اکنون با تغییر اعتبارات پیش فرض ، حساب خود را ایمن کرده اید. در مرحله بعد ، تغییراتی در پیکربندی Grafana ایجاد خواهید کرد تا هیچ کس نتواند بدون اجازه شما یک حساب Grafana جدید ایجاد کند. مرحله 4 – غیرفعال کردن ثبت نام های Grafana و دسترسی ناشناس Grafana گزینه هایی را فراهم می کند که به بازدید کنندگان امکان می دهد برای خود حساب کاربری ایجاد کنند و داشبورد پیش نمایش را بدون ثبت نام مشاهده کنند. وقتی Grafana از طریق اینترنت قابل دسترسی نیست یا وقتی با داده های عمومی مانند وضعیت سرویس کار می کند ، ممکن است بخواهید این ویژگی ها را مجاز کنید. با این حال ، هنگام استفاده از Grafana آنلاین برای کار با داده های حساس ، دسترسی ناشناس می تواند یک مشکل امنیتی باشد. برای برطرف کردن این مشکل ، در پیکربندی Grafana خود تغییراتی ایجاد کنید. با باز کردن فایل اصلی پیکربندی Grafana برای ویرایش شروع کنید: ⦁ $ sudo nano /etc/grafana/grafana.ini ⦁ دستورالعمل allow_sign_up را تحت عنوان [users] قرار دهید: /etc/grafana/grafana.ini … [users] # disable user signup / registration ;allow_sign_up = true …
با فعال کردن این دستورالعمل ، یک دکمه sign up به صفحه ورود اضافه می شود و به کاربران امکان می دهد ثبت نام کنند و به Grafana دسترسی پیدا کنند. غیرفعال کردن این ویژگی با false ، دکمه ثبت نام را حذف کرده و امنیت و حریم خصوصی Grafana را بیشتر می کند. با حذف ; در ابتدای خط و سپس تنظیم گزینه روی false، این امکان را لغو کنید. /etc/grafana/grafana.ini … [users] # disable user signup / registration allow_sign_up = false …
در مرحله بعد ، دستورالعمل enabled  زیر را تحت عنوان [auth.annam] قرار دهید: /etc/grafana/grafana.ini … [auth.anonymous] # enable anonymous access ;enabled = false …
تبدیل enabled به true به کاربران غیر ثبت شده دسترسی به داشبورد شما را می دهد. تنظیم این گزینه روی false دسترسی به داشبورد را فقط محدود به کاربران ثبت نام شده میکند. با حذف ; در ابتدای خط و سپس تنظیم گزینه روی false، این امکان را لغو کنید. /etc/grafana/grafana.ini … [auth.anonymous] # enable anonymous access enabled = false …
فایل را ذخیره کنید و از ویرایشگر متن خود خارج شوید. برای فعال سازی تغییرات ، Grafana را ریستارت کنید: ⦁ $ sudo systemctl restart grafana-server ⦁ با بررسی وضعیت سرویس Grafana تأیید کنید که همه چیز کار می کند: ⦁ $ sudo systemctl status grafana-server ⦁
مانند قبل ، خروجی گزارش خواهد داد که Grafana فعال (در حال اجرا( است. اکنون ، در مرورگر وب خود https: // your_domain را وارد کنید. برای بازگشت به صفحه ورود به سیستم ، نشانگر خود را روی قسمت پایین سمت چپ صفحه نمایشگر در آواتار خود آورده و بر روی گزینه Sign out که ظاهر می شود کلیک کنید. پس از ورود به سیستم ، مطمئن شوید که هیچ دکمه sign up وجود ندارد و بدون وارد کردن اعتبارات ورود نمی توانید وارد سیستم شوید. در این مرحله ، Grafana کاملاً پیکربندی شده و آماده استفاده است. در مرحله بعد ، می توانید فرآیند ورود به سیستم خود را با تأیید اعتبار از طریق GitHub ساده کنید. (اختیاری) مرحله 5 – تنظیم یک برنامه GitHub OAuth به عنوان یک روش جایگزین برای ورود به سیستم ، می توانید Grafana را برای تأیید اعتبار از طریق GitHub پیکربندی کنید ، که دسترسی به تمام اعضای سازمان های مجاز GitHub را فراهم می کند. این مسئله می تواند به ویژه هنگامی مفید باشد که بخواهید به چندین توسعه دهنده اجازه دهید با متریک ها کار کنند و دسترسی داشته باشند بدون آنکه احتیاج به اعتبار ویژه Grafana داشته باشید. با ورود به یک حساب GitHub مرتبط با سازمان خود شروع کنید و سپس به صفحه نمایه GitHub خود در https://github.com/settings/profile بروید. محتوای تنظیمات را با کلیک بر روی نام در سمت چپ صفحه نمایش تغییر دهید، سپس سازمان خود را از منوی کشویی انتخاب کنید. این کار محتوا را از Personal settings به Organization settings تغییر میدهد. در صفحه بعدی ، پروفایل سازمان خود را مشاهده خواهید کرد که می توانید تنظیماتی مانند نام صفحه نمایش سازمان ، ایمیل سازمان و URL سازمان خود را تغییر دهید. از آنجا که Grafana از OAuth – برای تأیید اعتبار کاربران از طریق GitHub استفاده می کند (که یک استاندارد باز برای دسترسی به اشخاص ثالث از راه دور به منابع محلی است)، باید یک برنامه OAuth جدید در GitHub ایجاد کنید. روی لینک OAuth Apps در زیر تنظیمات توسعه (Developer settings) در پایین سمت چپ صفحه نمایش کلیک کنید. اگر از قبل هیچ برنامه OAuth مربوط به سازمان خود در GitHub ندارید ، با No Organization Owned Applications مواجه میشوید. در غیر این صورت لیستی از برنامه های OAuth را که قبلاً به حساب شما متصل شده اند ، خواهید دید. برای ادامه بر روی دکمه New OAuth App کلیک کنید. در صفحه بعدی ، جزئیات زیر در مورد نصب Grafana خود را پر کنید: ⦁ Application name – به شما کمک می کند تا برنامه های مختلف OAuth خود را از یکدیگر متمایز کنید. ⦁ Homepage URL – به GitHub می گوید کجا می توانید Grafana را پیدا کنید.https: // your_domain را در این قسمت تایپ کنید و your_domain را جایگزین دامنه خود کنید. ⦁ Application Description – توضیحی را برای هدف برنامه OAuth شما ارائه می دهد. ⦁ Application callback URL – آدرسی است که پس از تأیید اعتبار با موفقیت برای کاربران ارسال می شود. برای Grafana ، این قسمت باید روی https://your_domain/login/github تنظیم شود. به خاطر داشته باشید که کاربران Grafana که از طریق GitHub وارد سیستم می شوند مقادیری را که در سه قسمت قبلی وارد کرده اید ، مشاهده می کنند ، بنابراین حتماً چیزی معنی دار و مناسب را وارد کنید. پس از اتمام کار ، فرم چیزی شبیه به این خواهد شد:
روی دکمه سبز ، ثبت نام برنامه کلیک کنید. اکنون به صفحه ای حاوی Client ID و Client Secret مرتبط با برنامه جدید OAuth خود هدایت می شوید. هر دو مقدار را یادداشت کنید ، زیرا برای تکمیل تنظیمات باید آنها را به فایل اصلی پیکربندی Grafana اضافه کنید. هشدار: مطمئن شوید که Client ID و Client Secret خود را در یک مکان امن و غیر عمومی نگه داری میکنید ، زیرا می توانند مورد حمله قرار گیرند.
با ایجاد برنامه GitHub OAuth خود ، اکنون آماده پیکربندی مجدد Grafana برای استفاده از GitHub جهت تأیید اعتبار هستید. (اختیاری) مرحله 6 – پیکربندی Grafana به عنوان یک برنامه GitHub OAuth برای تکمیل تأیید اعتبار GitHub برای تنظیم Grafana ، اکنون تغییراتی در فایل های پیکربندی Grafana خود اعمال خواهید کرد. برای شروع ، فایل اصلی پیکربندی Grafana را باز کنید. ⦁ $ sudo nano /etc/grafana/grafana.ini ⦁ عنوان [auth.github] را بیابید و با حذف ; در ابتدای هر خط به جز ;allowed_domains = و ;team_ids= که در این آموزش تغییر نخواهد کرد ، این بخش را لغو کنید. در مرحله بعدی ، این تغییرات را ایجاد کنید: ⦁ گزینه enabled و allow_sign_up را روی true تنظیم کنید. این امر تأیید هویت GitHub را انجام می دهد و به اعضای مجاز سازمان اجازه می دهد تا خودشان حساب ایجاد کنند. توجه داشته باشید که این تنظیمات با ویژگی allow_sign_up تحت [users] که در مرحله 4 تغییر کرده اید متفاوت است. ⦁ client_id و client_secret را روی مقادیری که هنگام ایجاد برنامه GitHub OAuth خود قرار داده اید تنظیم کنید. ⦁ allow _organizations را روی نام سازمان خود تنظیم کنید تا اطمینان حاصل شود که فقط اعضای سازمان شما می توانند عضو و وارد Grafana شوند. پیکربندی کامل اینگونه خواهد بود: /etc/grafana/grafana.ini … [auth.github] enabled = true allow_sign_up = true client_id = your_client_id_from_github client_secret = your_client_secret_from_github scopes = user:email,read:org auth_url = https://github.com/login/oauth/authorize token_url = https://github.com/login/oauth/access_token api_url = https://api.github.com/user ;allowed_domains = ;team_ids = allowed_organizations = your_organization_name …
اکنون به Grafana که همه موارد لازم در مورد GitHub را گفته اید. برای تکمیل ستاپ ، باید تغییر مسیرها را در پشت پروکسی معکوس فعال کنید. این کار با تنظیم یک مقدار root_url تحت عنوان [server] انجام می شود. /etc/grafana/grafana.ini … [server] root_url = https://your_domain …
پیکربندی خود را ذخیره کرده و فایل را ببندید. سپس Grafana را مجدداً راه اندازی کنید تا تغییرات فعال شود: ⦁ $ sudo systemctl restart grafana-server ⦁ در آخر ، تأیید کنید که سرویس در حال اجرا است. ⦁ $ sudo systemctl status grafana-server ⦁ خروجی نشان می دهد که سرویس فعال (در حال اجرا) است. اکنون با رفتن به https: // your_domain ، سیستم تأیید اعتبار جدید خود را ��زمایش کنید. اگر قبلاً وارد Grafana شده اید ، موس خود را روی نماد آواتار در گوشه سمت چپ پایین صفحه حرکت دهید و روی منوی ثانویه که در کنار نام شما ظاهر می شود ، روی Sign Out کلیک کنید. در صفحه ورود ، زیر دکمه اصلی ورود به سیستم یک بخش جدید مشاهده خواهید کرد که شامل دکمه ورود به سیستم با GitHub با آرم GitHub است.
بر روی دکمه ورود به سیستم با GitHub کلیک کنید تا به GitHub هدایت شوید ، در آنجا وارد حساب GitHub خود شوید و هدف خود را برای تأیید مجوز Grafana را تأیید کنید. بر روی دکمه سبز ، Authorize your_github_organization کلیک کنید. توجه: اطمینان حاصل کنید که حساب GitHub شما عضو سازمان تأیید شده شماست و آدرس ایمیل Grafana با آدرس ایمیل GitHub شما مطابقت دارد. اگر سعی کنید با یک حساب GitHub که عضو سازمان تأیید شده شما نیست ، تأیید اعتبار کنید ، یک پیام Login Failed دریافت خواهید کرد و به شما می گوید ، کاربر عضو یکی از سازمان های مورد نیاز نیست. اکنون با حساب Grafana موجود خود وارد سیستم خواهید شد. اگر برای کاربری که با آن وارد سیستم شده اید قبلا حساب Grafana ایجاد نشده باشد ، Grafana یک حساب کاربری جدید با مجوز Viewer ایجاد می کند ، و اطمینان می دهد که کاربران جدید فقط می توانند از داشبوردهای موجود استفاده کنند. برای تغییر مجوزهای پیش فرض برای کاربران جدید ، فایل اصلی پیکربندی Grafana را برای ویرایش باز کنید. ⦁ $ sudo nano /etc/grafana/grafana.ini ⦁ دستورالعمل auto_assign_org_role را تحت عنوان [users] بیابید و با حذف کردن ; در ابتدای خط آن را لغو کنید. دستورالعمل را روی یکی از مقادیر زیر تنظیم کنید: ⦁ Viewer  – فقط می تواند از داشبوردهای موجود استفاده کند ⦁ Editor  – می تواند داشبوردها را استفاده کند، تغییر دهد و اضافه کند ⦁ Admin  – اجازه انجام همه کارها را دارد این آموزش اختصاص خودکار به Viewer را انجام میدهد: /etc/grafana/grafana.ini … [users] … auto_assign_org_role = Viewer …
پس از ذخیره تغییرات ، فایل را ببندید و مجدداً Grafana را ریستارت کنید: ⦁ $ sudo systemctl restart grafana-server ⦁ وضعیت سرویس را بررسی کنید: ⦁ $ sudo systemctl status grafana-server ⦁ مانند قبل ، وضعیت فعال (در حال اجرا) خواهد بود. در این مرحله ، شما Grafana را کاملاً پیکربندی کرده اید تا به اعضای سازمان GitHub خود اجازه دهید ثبت نام و استفاده از نصب Grafana را انجام دهند. نتیجه در این آموزش Grafana را نصب ، پیکربندی و ایمن کرده اید و همچنین آموخته اید که چگونه به اعضای سازمان خود اجازه دهید تا ا�� طریق GitHub احراز هویت کنند. برای بسط نصب فعلی Grafana ، به لیست داشبوردها و افزونه های رسمی و ساخته شده توسط انجمن مراجعه کنید. برای کسب اطلاعات بیشتر در مورد استفاده از Grafana به طور کلی ، به مطالب رسمی Grafana مراجعه کنید ، یا سایر آموزش های مانیتورینگ ما را مطالعه نمایید.
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهید
نحوه ایجاد نماها (Views) برای توسعه وب Django
نصب Mount NFS در اوبونتو 20.04
نحوه توسعه برنامه ها در Kubernetes با Okteto
نصب و پیکربندی Laravel با Nginx در اوبونتو 20.04
نحوه تنظیم Jupyter Notebook با پایتون در Ubuntu 20.04
نصب Jitsi Meet در Debian 10
نصب و پیکربندی Nextcloud در اوبونتو 20.04
نصب و پیکربندی Ansible در اوبونتو 20.04
مقدمه ای بر مدیریت پیکربندی با Ansible
نحوه نصب R روی اوبونتو 20.04
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
نصب و پیکربندی Postfix در اوبونتو 20.04
ارائه برنامه های Flask با Gunicorn و Nginx اوبونتو 20
ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04
تنظیم پلتفرم Cloud IDE کد سرور در اوبونتو 20
کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04
نصب و ایمن سازی Grafana در اوبونتو 20.04
نحوه نصب Git در Ubuntu 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
برچسب‌ها:
Elasticsearch
,
Grafana
,
Graphite
,
InfluxDB
,
Nginx
,
Prometheus
0 notes
vpsgol69-blog · 4 years
Text
نحوه نصب Git در Ubuntu 20.04
سیستم های کنترل نسخه بخشی ضروری از توسعه نرم افزاری مدرن هستند. نسخه سازی به شما امکان می دهد تا نرم افزار خود را در سطح منبع دنبال کنید. می توانید تغییرات را ردیابی کنید ، به مراحل قبلی برگردید و انشعاب ایجاد کنید تا نسخه های متفاوتی از فایل ها و دیرکتوری ها ایجاد کنید. بسیاری از فایل های پروژه ها در یک مخزن Git نگهداری می شوند و پلتفرم هایی مانند GitHub ، GitLab و Bitbucket به تسهیل اشتراک و همکاری پروژه توسعه نرم افزار کمک می کنند. در این راهنما نحوه نصب و پیکربندی Git روی سرور مجازی Ubuntu 20.04 را بررسی خواهیم کرد. نحوه نصب نرم افزار را به دو روش مختلف پوشش خواهیم داد: از طریق مدیر بسته داخلی و از طریق منبع. هر یک از این رویکردها بسته به نیازهای خاص شما مزایای خاص خود را دارد.
پیش نیازها به یک سرور مجازی Ubuntu 20.04 با یک حساب فوق کاربری غیر ریشه نیاز خواهید داشت. برای انجام این کار، می توانید راهنمای ستاپ اولیه سرور مجازی برای Ubuntu 20.04 را دنبال کنید. با راه اندازی سرور مجازی و کاربر ، آماده شروع کار هستید.
نصب Git با بسته های پیش فرض گزینه نصب با بسته های پیش فرض برای کسانی که می خواهند به سرعت با Git پیش بروند، یا کسانی که نسخه پایدار و پر کاربرد را ترجیح می دهند ، یا کسانی که به دنبال جدیدترین گزینه های موجود نیستند، بهترین انتخاب است. اگر به دنبال جدیدترین نسخه منتشر شده هستید ، باید به سراغ بخش نصب آن از منبع بروید. Git احتمالا روی سرور مجازی اوبونتو شما نصب است. میتوانید این موضوع را با دستور زیر تایید کنید:
$ git –version
اگر خروجی شبیه به زیر دریافت کردید، یعنی Git قبلا نصب شده است: Output git version 2.25.1
اگر این گونه است ، می توانید به سراغ تنظیم Git بروید ، یا در صورت نیاز به نسخه به روزتر ، می توانید بخش بعدی نحوه نصب از منبع را بخوانید. با این حال ، اگر شماره نسخه Git را در خروجی دریافت نکردید ، می توانید آن را با مدیر بسته پیش فرض اوبونتو APT نصب کنید. ابتدا ، از ابزارهای مدیریت بسته apt برای به روزرسانی ایندکس بسته محلی خود استفاده کنید. $ sudo apt update
با اتمام به روزرسانی ، می توانید Git را نصب کنید: $ sudo apt install git
می توانید با اجرای دستور زیر و بررسی اینکه خروجی مربوطه را دریافت کرده اید ، تایید کنید که Git را به درستی نصب کرده اید: $ git –version
Output git version 2.25.1
با نصب موفقیت آمیز Git ، اکنون می توانید برای تکمیل تنظیم خود به بخش Setting Up Git بروید.
نصب Git از Source یک روش انعطاف پذیرتر برای نصب Git ، کامپایل نرم افزار از منبع است. این کار زمان بیشتری طول می کشد و از طریق مدیر بسته شما نگه داری نمی شود ، اما به شما امکان می دهد آخرین نسخه را دانلود کنید و در صورت تمایل به شخصی سازی ، کنترل برخی گزینه ها را در اختیار شما قرار می دهد. نسخه Git که در حال حاضر روی سرور مجازی شما نصب شده است را تایید کنید: $ git –version
اگر Git نصب شده است، خروجی شبیه به این دریافت خواهید کرد: Output git version 2.25.1
قبل از شروع ، باید نرم افزاری را نصب کنید که Git به آن بستگی دارد. این همه ی چیزی است که در مخازن پیش فرض موجود است ، بنابراین می توانیم ایندکس بسته محلی خود را بروزرسانی کنیم و سپس بسته ها را نصب کنیم. $ sudo apt update
$ sudo apt install libz-dev libssl-dev libcurl4-gnutls-dev libexpat1-dev gettext cmake gcc
بعد از اینکه متعلقات لازم را نصب کردید ، یک دیرکتوری موقت ایجاد کنید و به داخل آن بروید. اینجاست که تاربال Git خود را دانلود خواهیم کرد. $ mkdir tmp
$ cd /tmp
از وب سایت پروژه Git ، می توانیم به لیست تاربل در https://mirrors.edge.kernel.org/pub/software/scm/git/ برویم و نسخه مورد نظر خود را دانلود کنیم. در زمان نوشتن این مقاله ، جدیدترین نسخه 2.26.2 است ، بنابراین ما آن را برای اهداف نمایشی دانلود خواهیم کرد. از curl استفاده می کنیم و فایلی را که دانلود می کنیم به git.tar.gz. میفرستیم:
$ curl -o git.tar.gz https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.26.2.tar.gz
فایل تاربال فشرده را باز کنید:
$ tar -zxf git.tar.gz سپس، وارد دیرکتوری جدید Git شوید:
$ cd git-*
اکنون می توانید بسته را ایجاد کرده و با تایپ این دو دستور آن را نصب کنید: $ make prefix=/usr/local all
$ sudo make prefix=/usr/local install
اکنون فرآیند پوسته را به گونه ای جایگزین کنید که نسخه Git که اکنون نصب کرده ایم استفاده شود: $ exec bash
پس از تکمیل این کار ، می توانید با بررسی نسخه مطمئن شوید که نصب شما موفقیت آمیز بوده است. $ git –version
Output git version 2.26.0 با نصب موفقیت آمیز Git ، اکنون می توانید ستاپ خود را تکمیل کنید.
راه اندازی Git
بعد از اینکه از نسخه Git خود راضی شدید ، باید Git را پیکربندی کنید تا پیام های تعهد تولید شده حاوی اطلاعات صحیح شما باشند و در هنگام ساخت پروژه نرم افزاری از شما پشتیبانی کنند. پیکربندی را می توان با استفاده از دستور پیکربندی git انجام داد. به طور خاص ، باید نام و آدرس ایمیل خود را ارائه کنیم زیرا Git این اطلاعات را در هر تعهدی که انجام می دهیم وارد می کند. می توانیم با تایپ دستور زیر، پیش برویم و این اطلاعات را اضافه کنیم: $ git config –global user.name “Your Name”
$ git config –global user.email “[email protected]
ما می توانیم تمام موارد پیکربندی تنظیم شده را با تایپ دستور زیر نمایش دهیم: $ git config –list
Output user.name=Your Name [email protected]
اطلاعاتی که وارد می کنید در پرونده پیکربندی Git شما ذخیره می شود ، که می توانید به صورت اختیاری با ویرایشگر متن مورد نظر خود مانند این ویرایش کنید (ما از nano استفاده خواهیم کرد): $ nano ~/.gitconfig
~/.gitconfig contents [user] name = Your Name email = [email protected]
CTRL و X ، سپس Y و ENTER را فشار دهید تا از ویرایشگر متن خارج شوید. گزینه های دیگر بسیاری وجود دارد که می توانید تنظیم کنید ، اما این دو مورد ضروری هستند. اگر این مرحله را رد کنید ، احتمالاً هنگام تعهد به Git هشدارهایی مشاهده خواهید کرد. این باعث می شود کار بیشتری برای شما ایجاد شود زیرا مجبور خواهید بود تعهداتی را که انجام داده اید با اطلاعات اصلاح شده جایگزین کنید.
نتیجه اکنون باید Git را نصب کرده و آماده استفاده در سیستم خود باشید. برای کسب اطلاعات بیشتر در مورد نحوه استفاده از Git ، این مقاله ها و مجموعه ها را بررسی کنید: • چگونه می توان از Git به طور موثر استفاده کرد • نحوه استفاده از انشعابات Git • مقدمه ای بر منبع باز
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهید
نحوه ایجاد نماها (Views) برای توسعه وب Django
نصب Mount NFS در اوبونتو 20.04
نحوه توسعه برنامه ها در Kubernetes با Okteto
نصب و پیکربندی Laravel با Nginx در اوبونتو 20.04
نحوه تنظیم Jupyter Notebook با پایتون در Ubuntu 20.04
نصب Jitsi Meet در Debian 10
نصب و پیکربندی Nextcloud در اوبونتو 20.04
نصب و پیکربندی Ansible در اوبونتو 20.04
مقدمه ای بر مدیریت پیکربندی با Ansible
نحوه نصب R روی اوبونتو 20.04
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
نصب و پیکربندی Postfix در اوبونتو 20.04
ارائه برنامه های Flask با Gunicorn و Nginx اوبونتو 20
ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04
تنظیم پلتفرم Cloud IDE کد سرور در اوبونتو 20
کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04
نصب و ایمن سازی Grafana در اوبونتو 20.04
نحوه نصب Git در Ubuntu 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
برچسب‌ها:
Git
,
GitLab
0 notes
vpsgol69-blog · 4 years
Text
دسترسی از راه دور به برنامه GUI با Docker در اوبونتو 18.04
حتی با محبوبیت روزافزون خدمات ابری ، نیاز به اجرای برنامه های بومی هنوز وجود دارد. با استفاده از noVNC و TigerVNC ، می توانید برنامه های بومی را درون یک کانتینر Docker اجرا کنید و از راه دور با استفاده از یک مرورگر وب به آنها دسترسی پیدا کنید. علاوه بر این ، می توانید برنامه خود را بر روی سرور مجازی با منابع سیستم بیشتر از آنچه به صورت محلی موجود دارید اجرا کنید ، که می تواند در هنگام اجرای برنامه های بزرگ ، انعطاف پذیری بیشتری را ارائه دهد. در این آموزش ، Mozilla Thunderbird ، کلاینت ایمیل را با استفاده از Docker کانتینرایز می کنید. پس از آن ، آن را ایمن کرده و با استفاده از سرور مجازی وب Caddy امکان دسترسی از راه دور را فراهم خواهید کرد. پس از اتمام کار ، فقط با یک مرورگر وب می توانید از هر وسیله ای به Thunderbird دسترسی پیدا کنید. همچنین به صورت اختیاری می توانید با استفاده از WebDAV به طور محلی به فایل های موجود در آن دسترسی پیدا کنید. همچنین یک تصویر کاملاً خود شمول از Docker خواهید داشت که می توانید در هر مکانی اجرا کنید. پیش نیازها قبل از شروع این راهنما ، به موارد زیر نیاز خواهید داشت: ⦁ یک سرور مجازی اوبونتو 18.04 با حداقل 2 گیگابایت رم و فضای دیسک 4 گیگابایتی. ⦁ یک کاربر غیر ریشه با امتیازات sudo. ⦁ Docker که روی سرور مجازی شما تنظیم شده باشد. می توانید نحوه نصب و استفاده از Docker در Ubuntu 18.04 را در این لینک دنبال کنید. مرحله 1 – ایجاد پیکربندی supervisord اکنون که سرور مجازی شما در حال اجرا است و Docker نصب شده است ، آماده هستید تا پیکربندی کانتینر برنامه خود را شروع کنید. از آنجا که کانتینر شما از چندین مؤلفه تشکیل شده است ، برای راه اندازی و نظارت بر آنها باید از یک مدیر فرآیند استفاده کنید. در اینجا ، از supervisord استفاده خواهید کرد. supervisord یک مدیر فرآیند است که در پایتون نوشته شده و اغلب برای موزون کردن کانتینرهای پیچیده استفاده می شود. ابتدا دایرکتوری به نام thunderbird برای کانتینر خود ایجاد کنید و وارد شوید: ⦁ $ mkdir ~/thunderbird ⦁ ⦁ $ cd ~/thunderbird
اکنون با استفاده از nano یا ویرایشگر مورد نظر خود ، فایلی به نام supervisord.conf ایجاد و باز کنید: ⦁ $ nano supervisord.conf ⦁ اکنون این اولین بلوک کد را به supraord.conf اضافه کنید ، که گزینه های جهانی برای supervisord را تعریف می کند: ~/thunderbird/supervisord.conf [supervisord] nodaemon=true pidfile=/tmp/supervisord.pid logfile=/dev/fd/1 logfile_maxbytes=0 در این بخش ، شما خود supervisord را پیکربندی می کنید. باید nodaemon را روی true تنظیم کنید زیرا درون یک کانتینر Docker به عنوان ورودی وارد می شود. بنابراین ، می خواهید که در پیش زمینه اجرا شود. همچنین pidfile را روی مسیری که توسط یک کاربر غیر ریشه قابل دسترسی است و logfile را روی stdout تنظیم میکنید تا بتوانید ورودها را مشاهده کنید. در مرحله بعد ، یک بلوک کد کوچک دیگر را به supervisord.conf اضافه کنید. این بلوک TigerVNC را که یک سرور مجازی ترکیبی VNC / X11 است شروع می کند: ~/thunderbird/supervisord.conf … [program:x11] priority=0 command=/usr/bin/Xtigervnc -desktop “Thunderbird” -localhost -rfbport 5900 -SecurityTypes None -AlwaysShared -AcceptKeyEvents -AcceptPointerEvents -AcceptSetDesktopSize -SendCutText -AcceptCutText :0 autorestart=true stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 redirect_stderr=true
در این بلوک ، سرور مجازی X11 را تنظیم می کنید. X11 یک پروتکل سرور مجازی نمایشگر است ، همان چیزی است که به برنامه های GUI اجازه اجرا می دهد. توجه داشته باشید که در آینده باWayland جایگزین خواهد شد ، اما دسترسی از راه دور هنوز در دست توسعه است. برای این کانتینر ، شما از TigerVNC و سرور مجازی داخلی VNC استفاده می کنید. که دارای چندین مزیت نسبت به استفاده از یک سرور مجازی جداگانه X11 و VNC است: • زمان پاسخ سریعتر ، زیرا کشیدن GUI مستقیماً روی سرور مجازی VNC انجام می شود به جای اینکه روی یک بافر چارچوب واسطه (حافظه ای که محتویات صفحه را ذخیره می کند) انجام شود. • تغییر اندازه خودکار صفحه ، که به برنامه ریموت اجازه می دهد تا به طور خودکار تغییر اندازه دهد تا با کلاینت (در این حالت ، پنجره مرورگر وب شما) متناسب باشد. در صورت تمایل ، می توانید آرگومان را برای گزینه -desktop از Thunderbird به چیز دیگری که انتخاب کرده اید تغییر دهید. سرور مجازی انتخاب شما را به عنوان تیتر صفحه وب مورد استفاده برای دسترسی به برنامه شما نمایش می دهد. اکنون ، بیایید یک بلوک سوم از کد را به supervisord.conf اضافه کنیم تا easy-novnc را شروع کنیم: ~/thunderbird/supervisord.conf … [program:easy-novnc] priority=0 command=/usr/local/bin/easy-novnc –addr :8080 –host localhost –port 5900 –no-url-password –novnc-params “resize=remote” autorestart=true stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 redirect_stderr=true
در این بلوک ، یک easy-novnc را راه اندازی می کنید ، یک سرور مجازی مستقل که یک پوشش حول noVNC فراهم می کند. این سرور مجازی دو نقش را انجام می دهد. ابتدا یک صفحه اتصال ساده فراهم می کند که به شما امکان می دهد گزینه های اتصال را پیکربندی کنید و به شما امکان می دهد موارد پیش فرض را تنظیم کنید. دوم ، VNC را روی WebSocket پروکسی میکند ، که به آن امکان دسترسی از طریق یک مرورگر وب معمولی را می دهد. معمولاً تغییر اندازه در سمت کلاینت انجام می شود (یعنی مقیاس بندی تصویر) ، اما شما از گزینه resize=remote استفاده می کنید تا از تنظیمات وضوح تصویری از راه دور TigerVNC استفاده کامل کنید. این گزینه همچنین تأخیر کمتری را در دستگاه های کندتر مانند Chromebooks رده پایین ایجاد می کند: توجه: در این آموزش از easy-novnc استفاده شده است. در صورت تمایل می توانید به جای آن از websockify و یک وب سرور مجازی جداگانه استفاده کنید. مزیت easy-novnc این است که میزان حافظه و زمان راه اندازی آن به میزان قابل توجهی پایین است و خود شمول به حساب می آید. easy-novnc همچنین یک صفحه اتصال تمیزتر نسبت به noVNC پیش فرض ارائه می دهد و تنظیم گزینه های پیش فرض مفید برای این ستاپ (مانند resize=remote) را ممکن می سازد.
برای شروع OpenBox ، یعنی مدیر پنجره ، بلوک زیر را به پیکربندی خود اضافه کنید: ~/thunderbird/supervisord.conf … [program:openbox] priority=1 command=/usr/bin/openbox environment=DISPLAY=:0 autorestart=true stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 redirect_stderr=true
در این بلوک ، شما در حال راه اندازی OpenBox ، مدیر پنجره سبک X11 هستید. می توانید از این مرحله بگذرید ، اما بدون آن ، نمودارهای میله ای عنوان را ندارید یا نمی توانید اندازه ویندوز را تغییر دهید. در آخر ، بیایید آخرین بلوک را به supervisord.conf اضافه کنیم ، که برنامه اصلی را شروع می کند: ~/thunderbird/supervisord.conf … [program:app] priority=1 environment=DISPLAY=:0 command=/usr/bin/thunderbird autorestart=true stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 redirect_stderr=true
در این بلوک آخر ، برای اطمینان از اجرای Thunderbird بعد از TigerVNC ، اولویت را روی 1 تنظیم کنید در غیر این صورت با یک شرایط مسابقه روبرو می شوید و به طور تصادفی در شروع کار ناکام خواهید ماند. بنابراین autorestart = true قرار دهید تا اگر برنامه به اشتباه بسته شد ، برنامه را مجدداً باز کنید. متغیر محیط DISPLAY به برنامه می گوید تا روی سرور مجازی VNC که قبلاً تنظیم کرده اید نمایش داده شود. در اینجا ظاهر نهایی supervisord.conf شما نمایش داده شده است: ~/thunderbird/supervisord.conf [supervisord] nodaemon=true pidfile=/tmp/supervisord.pid logfile=/dev/fd/1 logfile_maxbytes=0
[program:x11] priority=0 command=/usr/bin/Xtigervnc -desktop “Thunderbird” -localhost -rfbport 5900 -SecurityTypes None -AlwaysShared -AcceptKeyEvents -AcceptPointerEvents -AcceptSetDesktopSize -SendCutText -AcceptCutText :0 autorestart=true stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 redirect_stderr=true
[program:easy-novnc] priority=0 command=/usr/local/bin/easy-novnc –addr :8080 –host localhost –port 5900 –no-url-password –novnc-params “resize=remote” autorestart=true stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 redirect_stderr=true
[program:openbox] priority=1 command=/usr/bin/openbox environment=DISPLAY=:0 autorestart=true stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 redirect_stderr=true
[program:app] priority=1 environment=DISPLAY=:0 command=/usr/bin/thunderbird autorestart=true stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 redirect_stderr=true
اگر می خواهید برنامه دیگری را کانتینرایز کنید ، /usr/bin/thunderbird را با مسیر قابل اجرای برنامه خود جایگزین کنید. در غیر این صورت ، اکنون آماده پیکربندی منوی اصلی GUI خود هستید. مرحله 2 – تنظیم منوی OpenBox اکنون که مدیر پروسه شما پیکربندی شده است ، بیایید منوی OpenBox را تنظیم کنیم. این منو به ما امکان می دهد تا برنامه ها را درون کانتینر راه اندازی کنیم. همچنین یک ترمینال و مانیتور پردازش برای اشکال زدایی در صورت لزوم را در اختیار خواهیم داشت. در داخل دیرکتوری برنامه خود ، از nano یا ویرایشگر متن مورد علاقه خود استفاده کنید تا فایل جدیدی به نام menu.xml ایجاد و باز کنید: ⦁ $ nano ~/thunderbird/menu.xml ⦁ اکنون کد زیر را به menu.xml اضافه کنید: ~/thunderbird/menu.xml <?xml version=”1.0″ encoding=”utf-8″?> <openbox_menu xmlns=”http://openbox.org/” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://openbox.org/ file:///usr/share/openbox/menu.xsd”> <menu id=”root-menu” label=”Openbox 3″> <item label=”Thunderbird”> <action name=”Execute”> <execute>/usr/bin/thunderbird</execute> </action> </item> <item label=”Terminal”> <action name=”Execute”> <execute>/usr/bin/x-terminal-emulator</execute> </action> </item> <item label=”Htop”> <action name=”Execute”> <execute>/usr/bin/x-terminal-emulator -e htop</execute> </action> </item> </menu> </openbox_menu>
این فایل XML شامل آیتم های منو است که با کلیک راست بر روی دسکتاپ ظاهر می شود. هر مورد از یک لیبل و یک عمل تشکیل شده است. اگر می خواهید برنامه دیگری را کانتینرایز کنید ، / usr / bin / thunderbird را با مسیر اجرایی برنامه خود جایگزین کنید و لیبل مورد را تغییر دهید. مرحله 3 – ایجاد Dockerfile اکنون که OpenBox پیکربندی شده است ، Dockerfile را ایجاد خواهید کرد ، که همه چیز را به هم پیوند می دهد. یک Dockerfile در دیرکتوری کانتینر خود ایجاد کنید: ⦁ $nano ~/thunderbird/Dockerfile ⦁ برای شروع ، بیایید برای ساختن easy-novnc کد دیگری اضافه کنیم: ~/thunderbird/Dockerfile FROM golang:1.14-buster AS easy-novnc-build WORKDIR /src RUN go mod init build && \ go get github.com/geek1011/[email protected] && \ go build -o /bin/easy-novnc github.com/geek1011/easy-novnc
در مرحله اول ، شما در حال ساختن easy-novnc هستید. برای سادگی و صرفه جویی در فضا این کار در یک مرحله جداگانه انجام می شود – به زنجیره ابزار کلیGo در تصویر نهایی خود نیازی ندارید. به@ v1.1.0 در دستور build توجه داشته باشید. این تضمین می کند که نتیجه تعیین کننده است ، و از آن جهت مهم است که Docker نتیجه هر مرحله را ذخیره می کند. اگر نسخه صریح را مشخص نکرده اید ، Docker در زمان ساخت اولین تصویر، آخرین نسخه های easy-novnc را ارجاع می دهد. علاوه بر این ، بهتر است اطمینان حاصل کنید که یک نسخه خاص از easy-novnc را دانلود می کنید تا در صورت ایجاد تغییرات در رابط CLI آن را داشته باشید. حالا بیایید مرحله دوم را ایجاد کنیم که به تصویر نهایی تبدیل می شود. در اینجا از Debian 10 (Buster) به عنوان تصویر پایه استفاده خواهید کرد. توجه داشته باشید که از آنجا که این کار در یک کانتینر در حال اجرا است ، صرف نظر از توزیع شما در سرور خود ، کار خواهد کرد. سپس ، بلوک زیر را به Dockerfile خود اضافه کنید: ~/thunderbird/Dockerfile … FROM debian:buster RUN apt-get update -y && \ apt-get install -y –no-install-recommends openbox tigervnc-standalone-server supervisor gosu && \ rm -rf /var/lib/apt/lists && \ mkdir -p /usr/share/desktop-directories
در این دستورالعمل ، شما Debian 10 را به عنوان تصویر پایه خود نصب می کنید و سپس حداقل مورد نیاز برای اجرای برنامه های GUI را در کانتینر خود نصب می کنید. توجه داشته باشید که apt-get update را به عنوان بخشی از همان دستورالعمل ها برای جلوگیری از مشکلات ذخیره سازی در Docker ، اجرا کنید. برای صرفه جویی در فضا ، همچنین لیست های بسته را که بعد از آن دانلود شده است حذف می کنید (بسته های ذخیره شده به صورت پیش فرض حذف می شوند). همچنین /usr/share/desktop-directories را ایجاد می کنید زیرا برخی برنامه ها به دایرکتوری موجود بستگی دارند. بیایید یک بلوک کد کوچک دیگر اضافه کنیم: ~/thunderbird/Dockerfile … RUN apt-get update -y && \ apt-get install -y –no-install-recommends lxterminal nano wget openssh-client rsync ca-certificates xdg-utils htop tar xzip gzip bzip2 zip unzip && \ rm -rf /var/lib/apt/lists
در این دستورالعمل ، شما در حال نصب برخی از نرم افزارها و بسته های عمومی مفید هستید. موارد قابل توجه در اینجا xd-utils (که دستورات پایه مورد استفاده برنامه های دسکتاپ را در لینوکس فراهم می کند) و ca-certificates (که گواهی های ریشه را نصب می کند تا به ما امکان دسترسی به سایت های HTTPS را بدهد) هستند. اکنون می توانیم دستورالعمل برنامه اصلی را اضافه کنیم: ~/thunderbird/Dockerfile … RUN apt-get update -y && \ apt-get install -y –no-install-recommends thunderbird && \ rm -rf /var/lib/apt/lists
مانند گذشته ، در اینجا ما در حال نصب برنامه هستیم. اگر برنامه کاربردی دیگری را کانتینرایز میکنید ، می توانید این دستورات را با دستورالعمل های لازم برای نصب برنامه خاص خود جایگزین کنید. برخی از برنامه ها برای اجرای داخل Docker به کار کمی بیشتر نیاز دارند. به عنوان مثال ، اگر برنامه ای را نصب می کنید که از Chrome ،Chromium یا QtWebEngine استفاده می کند ، باید از آرگومان خط فرمان –no-sandbox استفاده کنید ، زیرا در Docker پشتیبانی نمی شود. در مرحله بعد ، بیایید دستورالعمل هایی را اضافه کنیم تا چند فایل آخر به کانتینر اضافه شود: ~/thunderbird/Dockerfile … COPY –from=easy-novnc-build /bin/easy-novnc /usr/local/bin/ COPY menu.xml /etc/xdg/openbox/ COPY supervisord.conf /etc/ EXPOSE 8080
در اینجا شما می توانید فایل های پیکربندی را که قبلاً ایجاد کرده اید به تصویر اضافه کرده و از مرحله اول کپی کردن باینری easy-novnc را انجام دهید. این بلوک کد بعدی دایرکتوری داده را ایجاد می کند و کاربر اختصاصی را برای برنامه شما اضافه می کند. از آن جهت مهم است که برخی برنامه ها از اجرا به عنوان ریشه خودداری می کنند. همچنین بهتر است که حتی در یک کانتینر ، برنامه ها را به صورت ریشه اجرا نکنید. ~/thunderbird/Dockerfile … RUN groupadd –gid 1000 app && \ useradd –home-dir /data –shell /bin/bash –uid 1000 –gid 1000 app && \ mkdir -p /data VOLUME /data
برای اطمینان از یک UID / GID سازگار برای فایل ها ، صریحاً هر دو را روی 1000 تنظیم می کنید. همچنین می توانید یک حجم را در دایرکتوری داده قرار دهید تا اطمینان حاصل شود که بین راه ریستارت ها همچنان ادامه دارد. در آخر ، دستورالعمل هایی را برای راه اندازی همه موارد اضافه می کنیم: ~/thunderbird/Dockerfile … CMD [“sh”, “-c”, “chown app:app /data /dev/stdout && exec gosu app supervisord”]
با تنظیم دستور پیش فرض روی supervisord ، مدیر فرآیندهای مورد نیاز برای اجرای برنامه شما را راه اندازی می کند. در این حالت ، به جای ENTRYPOINT از CMD استفاده می کنید. در بیشتر موارد ، تفاوتی ایجاد نمی کند ، اما استفاده از CMD برای این منظور به چند دلیل مناسب تر است. اولا ، supervisord هیچ آرگومانی مربوط به ما را دریافت نمیکند ، و اگر آرگومان هایی را به کانتینر ارائه می دهید ، آنها CMD را جایگزین می كنند و به ENTRYPOINT اضافه می شوند. دوما ، استفاده از CMD به ما امکان می دهد هنگام ارسال آرگومان ها به داخل کانتینر ، یک دستور کاملاً متفاوت (که توسط / bin / sh -c اجرا خواهد شد) ارائه دهیم ، که اشکال زدایی را آسان تر می کند. و در آخر ، لازم است قبل از شروع supervisord ، chown را به عنوان ریشه اجرا کنید تا از مشکلات مجوز در حجم داده جلوگیری کنید و به فرآیند کودک (child) اجازه دهید stdout را باز کند. این همچنین بدان معنی است که شما باید به جای دستورالعمل USER برای تعویض کاربر از gosu استفاده کنید. در اینجا ظاهر Dockerfile تکمیل شده شما به شرح زیر است: ~/thunderbird/Dockerfile FROM golang:1.14-buster AS easy-novnc-build WORKDIR /src RUN go mod init build && \ go get github.com/geek1011/[email protected] && \ go build -o /bin/easy-novnc github.com/geek1011/easy-novnc
FROM debian:buster
RUN apt-get update -y && \ apt-get install -y –no-install-recommends openbox tigervnc-standalone-server supervisor gosu && \ rm -rf /var/lib/apt/lists && \ mkdir -p /usr/share/desktop-directories
RUN apt-get update -y && \ apt-get install -y –no-install-recommends lxterminal nano wget openssh-client rsync ca-certificates xdg-utils htop tar xzip gzip bzip2 zip unzip && \ rm -rf /var/lib/apt/lists
RUN apt-get update -y && \ apt-get install -y –no-install-recommends thunderbird && \ rm -rf /var/lib/apt/lists
COPY –from=easy-novnc-build /bin/easy-novnc /usr/local/bin/ COPY menu.xml /etc/xdg/openbox/ COPY supervisord.conf /etc/ EXPOSE 8080
RUN groupadd –gid 1000 app && \ useradd –home-dir /data –shell /bin/bash –uid 1000 –gid 1000 app && \ mkdir -p /data VOLUME /data
CMD [“sh”, “-c”, “chown app:app /data /dev/stdout && exec gosu app supervisord”]
Dockerfile خود را ذخیره کرده و ببندید. اکنون آماده ساخت و اجرای کانتینر خود هستیم و سپس به Thunderbird – که یک برنامه GUI است، دسترسی پیدا خواهیم کرد. مرحله 4 – ساخت و اجرای کانتینر مرحله بعدی ساخت کانتینر شما و تنظیم آن در زمان راه اندازی است. همچنین می توانید یک حجم برای حفظ داده های برنامه بین ریستارت ها و به روز رسانی تنظیم کنید. ابتدا کانتینر خود را بسازید. حتماً این دستورات را در دیرکتوری ~ / thunderbird اجرا کنید: ⦁ $ docker build -t thunderbird . ⦁ اکنون یک شبکه جدید ایجاد کنید که بین کانتینرهای برنامه به اشتراک گذاشته شود: ⦁ $ docker network create thunderbird-net ⦁ سپس یک حجم برای ذخیره داده های برنامه ایجاد کنید: ⦁ $ docker volume create thunderbird-data ⦁ در آخر ، آن را اجرا کرده و آن را روی ریستارت خودکار تنظیم کنید: ⦁ $ docker run –detach –restart=always –volume=thunderbird-data:/data –net=thunderbird-net –name=thunderbird-app thunderbird ⦁ توجه داشته باشید که در صورت تمایل ، می توانید برنامه thunderbird را بعد از گزینه –name با نام دیگری جایگزین کنید. هرچه انتخاب کردید ، اکنون برنامه شما کانتینرایز شده و در حال اجرا است. اکنون بیایید از سرور وب Caddy برای امنیت آن استفاده کنیم و از راه دور به آن متصل شویم. مرحله 5 – راه اندازی Caddy در این مرحله ، وب سرور Caddy را تنظیم می کنید تا تأیید هویت انجام شود و به صورت اختیاری ، دسترسی از راه دور فایل از طریق WebDAV را انجام دهد. برای سادگی و اینکه به شما امکان استفاده از پروکسی معکوس موجود خود را بدهد ، آن را در یک کانتینر دیگر اجرا کنید. یک دیرکتوری جدید ایجاد کنید و سپس به داخل آن بروید: ⦁ $ mkdir ~/caddy ⦁ ⦁ $ cd ~/caddy
اکنون با استفاده از nano یا ویرایشگر مورد نظر خود ، یک Dockerfile جدید ایجاد کنید: ⦁ $ nano ~/caddy/Dockerfile ⦁ سپس بخش های زیر را اضافه کنید: ~/caddy/Dockerfile FROM golang:1.14-buster AS caddy-build WORKDIR /src RUN echo ‘module caddy’ > go.mod && \ echo ‘require github.com/caddyserver/caddy/v2 v2.0.0’ >> go.mod && \ echo ‘require github.com/mholt/caddy-webdav v0.0.0-20200523051447-bc5d19941ac3’ >> go.mod RUN echo ‘package main’ > caddy.go && \ echo ‘import caddycmd “github.com/caddyserver/caddy/v2/cmd”‘ >> caddy.go && \ echo ‘import _ “github.com/caddyserver/caddy/v2/modules/standard”‘ >> caddy.go && \ echo ‘import _ “github.com/mholt/caddy-webdav”‘ >> caddy.go && \ echo ‘func main() { caddycmd.Main() }’ >> caddy.go RUN go build -o /bin/caddy .
FROM debian:buster
RUN apt-get update -y && \ apt-get install -y –no-install-recommends gosu && \ rm -rf /var/lib/apt/lists
COPY –from=caddy-build /bin/caddy /usr/local/bin/ COPY Caddyfile /etc/ EXPOSE 8080
RUN groupadd –gid 1000 app && \ useradd –home-dir /data –shell /bin/bash –uid 1000 –gid 1000 app && \ mkdir -p /data VOLUME /data
WORKDIR /data CMD [“sh”, “-c”, “chown app:app /data && exec gosu app /usr/local/bin/caddy run -adapter caddyfile -config /etc/Caddyfile”]
این Dockerfile با فعال کردن افزونه WebDAV ، Caddy را ایجاد می کند ، و سپس آن را در پورت 8080 با Caddyfile در / etc / Caddyfile راه اندازی می کند. فایل را ذخیره کنید و ببندید. سپس سرور وب Caddy را پیکربندی می کنید. فایلی به نام Caddyfile را در دایرکتوری که تازه ایجاد کرده اید ایجاد کنید: ⦁ $ nano ~/caddy/Caddyfile
اکنون بلوک کد زیر را به Caddyfile خود اضافه کنید: ~/caddy/Caddyfile { order webdav last } :8080 { log root * /data reverse_proxy thunderbird-app:8080
handle /files/* { uri strip_prefix /files file_server browse } redir /files /files/
handle /webdav/* { uri strip_prefix /webdav webdav } redir /webdav /webdav/
basicauth /* { {env.APP_USERNAME} {env.APP_PASSWORD_HASH} } }
این Caddyfile دیرکتوری اصلی را به کانتینر thunderbird-app که در مرحله 4 ایجاد کرده اید پروکسی میکند ( Docker آن را در IP صحیح تجزیه می کند). همچنین یک مرورگر فایل مبتنی بر وب فقط قابل خواندن در /files ارائه می کند و یک سرور WebDAV را روی / webdav اجرا می کند که می توانید برای دسترسی به فایل های خود به صورت محلی قرار دهید. نام کاربری و رمز عبور از متغیرهای محیط APP_USERNAME و APP_PASSWORD_HASH خوانده می شود. اکنون کانتینر را بسازید: ⦁ $ docker build -t thunderbird-caddy . ⦁ Caddy v.2 شما را مجبور به رمزگذاری رمز عبور مورد نظر خود می کند. دستور زیر را اجرا کنید و به یاد داشته باشید که mypass را با یک رمز عبور قوی به انتخاب خود جایگزین کنید: ⦁ $ docker run –rm -it thunderbird-caddy caddy hash-password -plaintext ‘mypass’ ⦁ این دستور یک رشته کاراکتر را تولید می کند. این کار را برای تهیه دستور بعدی در کلیپ بورد خود کپی کنید. اکنون آماده اجرای کانتینر هستید. اطمینان حاصل کنید که myuser را با نام کاربری مورد نظر خود جایگزین کنید و mypass-hash را با همان دستوری که در مرحله قبل اجرا کردید جایگزین نمایید. همچنین می توانید پورت (8080 در اینجا) را برای دسترسی به سرور خود در پورت دیگری تغییر دهید: ⦁ $ docker run –detach –restart=always –volume=thunderbird-data:/data –net=thunderbird-net –name=thunderbird-web –env=APP_USERNAME=”myuser” –env=APP_PASSWORD_HASH=”mypass-hash” –publish=8080:8080 thunderbird-caddy ⦁
اکنون آماده دسترسی و آزمایش برنامه خود هستیم. مرحله 6 – تست و مدیریت برنامه بیایید به برنامه دسترسی پیدا کنیم و از عملکرد آن اطمینان حاصل نماییم. ابتدا http: // your_server_ip: 8080 را در یک مرورگر وب باز کنید ، با اعتباراتی که قبلاً انتخاب کرده اید وارد شوید و روی connect کلیک کنید.
اکنون می توانید با برنامه تعامل برقرار کنید ، و برای تنظیم مناسب پنجره مرورگر ، باید به طور خودکار تغییر اندازه دهد.
اگر بر روی دسکتاپ سیاه رنگ کلیک راست کنید، باید منویی را مشاهده کنید که به شما امکان دسترسی به یک ترمینال را می دهد. اگر کلیک وسط کنید ​​، باید لیستی از پنجره ها را ببینید.
اکنون http://your_server_ip:8080/files/ را در یک مرورگر وب باز کنید. باید بتوانید به فایل های خود دسترسی پیدا کنید.
به صورت اختیاری ، می توانید http: // your_server_ip: 8080 / webdav / خود را در یک کلاینت WebDAV نصب کنید. باید بتوانید مستقیماً به فایل های خود دسترسی پیدا کرده و آن ها را تغییر دهید. اگر از گزینه Map network drive در ویندوز اکسپلورر استفاده می کنید ، باید برای اضافه کردنHTTPS از یک پروکسی معکوس استفاده کنید یا HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel را روی DWORD:2 تنظیم کنید. در هر صورت ، برنامه GUI بومی شما اکنون برای استفاده از راه دور آماده است. نتیجه اکنون با موفقیت یک کانتینر Docker را برای Thunderbird تنظیم کرده اید و سپس با استفاده از Caddy ، دسترسی به آن را از طریق یک مرورگر وب پیکربندی کرده اید. در صورت نیاز به بروزرسانی برنامه خود ، کانتینرها را متوقف کنید ، docker rm thunderbird-app thunderbird-web را اجرای کنید، تصاویر را مجدد بسازید و سپس دستورات docker را از مراحل قبلی بالا مجدداً اجرا کنید. از آنجا که در یک حجم ذخیره می شود ، داده های شما همچنان حفظ می شوند. اگر می خواهید در مورد دستورات اساسی Docker اطلاعات بیشتری کسب کنید ، می توانید این لینک آموزش یا این صفحه را بخوانید. برای استفاده طولانی مدت تر ، میتوانید HTTPS را برای امنیت بیشتر فعال کنید (برای این کار به دامنه ای نیاز دارید). علاوه بر این ، اگر بیش از یک برنامه نصب کرده اید ، می توانید به جای شروع هر کانتینر به صورت دستی ، از Docker Compose یا Kubernetes استفاده کنید. و به یاد داشته باشید ، این آموزش می تواند به عنوان پایه ای برای اجرای سایر برنامه های لینوکس روی سرور شما استفاده شود ، از جمله: ⦁ Wine ، یک لایه سازگاری برای اجرای برنامه های ویندوز در لینوکس. ⦁ GIMP ، ویرایشگر تصویر منبع باز. ⦁ Cutter ، پلتفرم مهندسی معکوس منبع باز. این گزینه آخر پتانسیل بسیار مهمی را برای کانتینرایزینگ و دسترسی از راه دور به برنامه های GUI ارائه می دهد. با استفاده از این ستاپ ، اکنون می توانید از سروری با توان محاسباتی بسیار بیشتر از آنچه به صورت محلی در دسترس دارید برای اجرای ابزارهای منبع فشرده مانند Cutter استفاده کنید.
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
دسترسی از راه دور به برنامه GUI با Docker در اوبونتو 18.04
راه اندازی سایت توسعه Jekyll در اوبونتو 20.04
نحوه راه اندازی سایت توسعه Jekyll در اوبونتو 18.04
نحوه نصب و استفاده از Docker Compose در اوبونتو 20.04
نحوه اجرای چند نسخه PHP بر روی یک سرور با استفاده از Apache و PHP-FPM در CentOS 8
نحوه نصب و استفاده از TimescaleDB در Ubuntu 20.04
نحوه نصب و راه اندازی Laravel با Docker Compose در اوبونتو 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
برچسب‌ها:
Docker
,
nodaemon
,
supervisord
,
TigerVNC
0 notes
vpsgol69-blog · 4 years
Text
راه اندازی سایت توسعه Jekyll در اوبونتو 20.04
اگر به دنبال ایجاد یک وب سایت یا وبلاگ استاتیک (پایا) هستید ، Jekyll می تواند یک راه حل عالی باشد. Jekyll یک مولد سایت استاتیک منبع باز است که به زبان Ruby نوشته شده و امکان اجرای سریع دستوراتی را می دهد که به شما در مدیریت سایت شما از ابتدا تا استقرار تولید ، همه از خط فرمان کمک می کند. Jekyll از وبلاگ آگاه است و به دسته بندی ها ، پست ها و صفحه بندی هایی با طیف وسیعی از واردکنندگان در دسترس برای وارد کردن مطالب قبلی وبلاگ ، اولویت می دهد. اگر نیاز دارید که اغلب به صورت آفلاین کار کنید ، و ترجیح می دهید از ویرایشگرهای سبک برای فرم های وب جهت نگهداری محتوا استفاده کنید ، یا مایل به استفاده از کنترل نسخه برای ردیابی تغییرات در وب سایت خود هستید ، Jekyll می تواند آنچه را که برای تحقق اهداف خود نیاز دارید ، در اختیار شما قرار دهد. در این آموزش ، ما یک سایت توسعه Jekyll را در Ubuntu 20.04 با محتوای تولید شده به صورت خودکار نصب خواهیم کرد. با نصب Jekyll ، می توانید یک سایت یا وبلاگ شخصی ایجاد کنید که در درجه اول با استفاده از فایل های علامت گذاری به عنوان و چند دستور Jekyll انجام می شود. پیش نیازها برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید: • سرور مجازی Ubuntu 20.04 با یک کاربر غیر ریشه و دارای امتیازات sudo: می توانید در مورد نحوه تنظیم کاربر با این امتیازات در راهنمای ستاپ اولیه سرور مجازی برای اوبونتو 20.04 اطلاعات بیشتری کسب کنید. پس از تکمیل این پیش نیاز ، آماده نصب Jekyll و متعلقات آن هستید. مرحله 1 – نصب Jekyll کار را با به روز کردن لیست بسته های خود شروع خواهیم کرد تا مطمئن شویم که جدیدترین اطلاعات را در مورد جدیدترین نسخه های بسته ها و متعلقات آنها داریم: ⦁ $ sudo apt update ⦁
در مرحله بعد ، بیایید make  و build-essential را نصب کنیم تا کتابخانه های Jekyll کامپایل شود ، و برای Ruby و کتابخانه های توسعه آن استفاده شود. ما در اینجا پرچم y را در نظر میگیریم که yes را تایید کنیم ، یعنی می خواهیم بسته ها را نصب کنیم و از تأیید اعلان خودداری کنیم. ⦁ $ sudo apt -y install make build-essential ruby ruby-dev ⦁
پس از اتمام این کار ، اجازه دهید دو خط به فایل .bashrc خود اضافه کنیم تا به مدیر بسته Ruby’s gem بگوییم که gems را در پوشه هوم کاربر ما قرار دهد. این کار از بروز مشکلات ناشی از نصب در سراسر سیستم جلوگیری می کند و در عین حال دستور jekyll  محلی را نیز به PATH کاربر اضافه می کند. .bashrc را با یک ویرایشگر مورد نظر خود مانند nano باز کنید: ⦁ $ nano .bashrc ⦁ در انتهای فایل خطوط زیر را اضافه کنید: .bashrc # Ruby exports
export GEM_HOME=$HOME/gems export PATH=$HOME/gems/bin:$PATH
فایل را ذخیره کنید و ببندید. برای فعال کردن خروجی ها ، دستور زیر را اجرا کنید: ⦁ $ source ~/.bashrc ⦁ پس از اتمام این کار ، از gem  برای نصب Jekyll خود و همچنین Bundler استفاده می کنیم که متعلقات gem  را مدیریت می کند. توجه داشته باشید که این کار ممکن است مدتی طول بکشد. ⦁ $ gem install jekyll bundler ⦁ در مرحله بعد ، مطمئن خواهیم شد که تنظیمات فایروال ما امکان ترافیک از طریق سرور مجازی وب توسعه Jekyll را فراهم می کند. مرحله 2 – باز کردن فایروال بیایید بررسی کنیم که آیا فایروال فعال است یا خیر. اگر چنین است ، اطمینان حاصل خواهیم کرد که ترافیک به سایت ما مجاز است ، بنابراین می توانیم سایت توسعه خود را در یک مرورگر وب مشاهده کنیم. ⦁ $ sudo ufw status ⦁ اگر با وضعیت غیرفعال مواجه شدید ، دستورات زیر را اجرا کنید. ufw allow OpenSSH sudo ufw enable
این کار باعث می شود فایروال شما در هنگام راه اندازی سیستم اجرا شود. ممکن است پیام های زیر را دریافت کنید (برای ادامه با ‘y ‘ تأیید کنید): Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
در مثال ما ، فقط SSH مجاز است: Output Status: active To Action From — —— —- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
بسته به نحوه تنظیم فایروال تان ممکن است قوانین دیگری نیز در این زمینه داشته باشید یا اصلاً هیچ قانون فایروالی وجود نداشته باشد. از آنجا که فقط ترافیک SSH در این مورد مجاز است ، باید پورت 4000، پورت پیش فرض سرور مجازی توسعه Jekyll را باز کنیم: ⦁ $ sudo ufw allow 4000 ⦁ اکنون قوانین فایروال ما باید موارد زیر را شامل شود: Output To Action From — —— —- OpenSSH ALLOW Anywhere 4000 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 4000 (v6) ALLOW Anywhere (v6)
اکنون با نصب نرم افزار و باز کردن پورت لازم ، آماده ایجاد سایت توسعه هستیم. مرحله 3 – ایجاد یک سایت توسعه جدید از دیرکتوری اصلی خود، از دستور Jekyll’s new برای ایجاد داربست برای سایتی در زیر مجموعه ای به نام www استفاده می کنیم: ⦁ $ cd ~ ⦁ ⦁ $ jekyll new www دستور jekyll new برای نصب متعلقات لازم ، bundle install را شروع می کند ، سپس به صورت خودکار موضوعی با نام Minima را نصب می کند. پس از نصب موفق ، باید خروجی مانند زیر را دریافت کنید: Output New jekyll site installed in /home/sammy/www.
دستور جدید Jekyll دیرکتوری ها و فایل های زیر را ایجاد می کند: … ├── 404.html ├── about.markdown ├── _config.yml ├── Gemfile ├── Gemfile.lock ├── index.markdown ├── _posts │ └── 2020-05-29-welcome-to-jekyll.markdown └── _site
این فایل های وب سایت واقعی نیستند. بلکه فایلهای منبعی هستند که Jekyll برای ایجاد سایت استاتیک از آنها استفاده خواهد کرد. Jekyll به نامهای خاص ، الگوهای نامگذاری و ساختارهای دیرکتوری متکی است تا منابع مختلف محتوا را تجزیه کند و آنها را در یک سایت استاتیک جمع کند. استفاده از ساختار موجود و پیگیری کنوانسیون های نامگذاری Jekyll در هنگام افزودن پست ها و صفحات جدید بسیار مهم است. نکته: tree یک دستور مفید برای بازرسی ساختار فایل ها و دیرکتوری ها از خط فرمان است. می توانید آن را با دستور زیر نصب کنید: ⦁ $ sudo apt install tree ⦁ برای استفاده از آن ، cd را در دیرکتوری مورد نظر خود قرار دهید و tree را تایپ کنید و یا مسیر رسیدن به نقطه شروع را با tree /home/sammy/www ارائه کنید. مرحله 4 – راه اندازی وب سرور مجازی Jekyll سرور مجازی وب سبک Jekyll به منظور پشتیبانی از توسعه سایت با نظارت بر فایل ها در دیرکتوری و بازگرداندن خودکار سایت استاتیک هر زمان که تغییر ایجاد شود ، طراحی شده است. از آنجا که ما در حال کار بر روی یک سرور مجازی از راه دور هستیم ، برای جستجوی سایت از دستگاه محلی خود ، آدرس هاست را مشخص خواهیم کرد. اگر در حال کار روی یک دستگاه محلی هستید ، می توانید jekyll service را بدون تنظیمات هاست اجرا کنید و با http: // localhost: 4000 وصل شوید. ⦁ $ cd ~/www ⦁ ⦁ $ jekyll serve –host=203.0.113.0 ⦁ Output of jekyll server Configuration file: /home/sammy/www/_config.yml Source: /home/sammy/www Destination: /home/sammy/www/_site Incremental build: disabled. Enable with –incremental Generating… done in 0.645 seconds. Auto-regeneration: enabled for ‘/home/sammy/www’ Server address: http://203.0.113.0:4000/ Server running… press ctrl-c to stop.
هنگامی که jekyll serve را وادار به شروع کردیم ، Jekyll پیکربندی و فایل های محتوا را در یک دیرکتوری جدید ، _site تجزیه و شروع به ارائه محتوای موجود در آن پوشه _siteمیکند. : … ├── 404.html ├── about.markdown ├── _config.yml ├── Gemfile ├── Gemfile.lock ├── index.markdown ├── _posts │ └── 2020-05-29-welcome-to-jekyll.markdown └── _site ├── 404.html ├── about │ └── index.html ├── assets │ ├── main.css │ │ ├── main.css.map │ └── minima-social-icons.svg ├── feed.xml ├── index.html └── jekyll └── update └── 2020 └── 05 └── 29 └── welcome-to-jekyll.html
همچنین شروع به مشاهده تغییرات دیرکتوری فعلی ، www ، میکند. به محض ذخیره تغییر در یک پست یا صفحه ، سایت استاتیک به طور خودکار بازسازی می شود ، بنابراین مهم نیست که مستقیماً روی فایل های پوشه _site تغییری ایجاد نکنید. اگر هنگام کار در سایت خود و در حین اجرای سرور مجازی توسعه در پیش زمینه ، این ترمینال را باز کنیم ، با اضافه کردن صفحات و پست ها و تغییر محتوا ، بازخورد فوری دریافت خواهیم کرد. توجه: اگر در حال کار با یک سایت بزرگ هستید ، فعال کردن –incremental می تواند هر بار که تغییری به واسطه بازتولید فایل های تغییر یافته انجام میدهید، بازسازی را سرعت ببخشد اما ما برای این سایت کوچک به آن احتیاج نداریم. می توانید اطلاعات بیشتری در مورد این ویژگی آزمایشی در وب سایت Jekyll بدست آورید. اکنون سایت در دسترس است. در یک مرورگر وب ، می توانیم از آن در آدرس سرور مجازی و پورت نمایش داده شده در خروجی حاصل از jekyll serve دیدن کنیم:
نتیجه در این آموزش Jekyll را نصب کردیم و یک سایت توسعه با برخی از مطالب تولید شده به صورت خودکار ایجاد کردیم. می توانید با خواندن آموزش های دیگر ما در مورد این موضوع ، درباره Jekyll بیشتر بدانید: • بررسی محتوای پیش فرض Jekyll • نحوه کنترل URL ها و پیوندها در Jekyll
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
دسترسی از راه دور به برنامه GUI با Docker در اوبونتو 18.04
راه اندازی سایت توسعه Jekyll در اوبونتو 20.04
نحوه راه اندازی سایت توسعه Jekyll در اوبونتو 18.04
نحوه نصب و استفاده از Docker Compose در اوبونتو 20.04
نحوه اجرای چند نسخه PHP بر روی یک سرور با استفاده از Apache و PHP-FPM در CentOS 8
نحوه نصب و استفاده از TimescaleDB در Ubuntu 20.04
نحوه نصب و راه اندازی Laravel با Docker Compose در اوبونتو 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
0 notes
vpsgol69-blog · 4 years
Text
نحوه راه اندازی سایت توسعه Jekyll در اوبونتو 18.04
اگر به دنبال ایجاد یک وب سایت یا وبلاگ استاتیک (پایا) هستید ، Jekyll می تواند یک راه حل عالی باشد. Jekyll یک مولد سایت استاتیک منبع باز است که به زبان Ruby نوشته شده و امکان اجرای سریع دستوراتی را می دهد که به شما در مدیریت سایت شما از ابتدا تا استقرار تولید ، همه از خط فرمان کمک می کند. Jekyll از وبلاگ آگاه است و به دسته بندی ها ، پست ها و صفحه بندی هایی با طیف وسیعی از واردکنندگان در دسترس برای وارد کردن مطالب قبلی وبلاگ ، اولویت می دهد. اگر نیاز دارید که اغلب به صورت آفلاین کار کنید ، و ترجیح می دهید از ویرایشگرهای سبک برای فرم های وب جهت نگهداری محتوا استفاده کنید ، یا مایل به استفاده از کنترل نسخه برای ردیابی تغییرات در وب سایت خود هستید ، Jekyll می تواند آنچه را که برای تحقق اهداف خود نیاز دارید ، در اختیار شما قرار دهد. در این آموزش ، ما یک سایت توسعه Jekyll را در Ubuntu 18.04 با محتوای تولید شده به صورت خودکار نصب خواهیم کرد. با نصب Jekyll ، می توانید یک سایت یا وبلاگ شخصی ایجاد کنید که در درجه اول با استفاده از فایل های علامت گذاری به عنوان و چند دستور Jekyll انجام می شود. پیش نیازها برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید: • سرور مجازی Ubuntu 18.04 با یک کاربر غیر ریشه و دارای امتیازات sudo: می توانید در مورد نحوه تنظیم کاربر با این امتیازات در راهنمای ستاپ اولیه سرور مجازی برای اوبونتو 18.04 اطلاعات بیشتری کسب کنید. پس از تکمیل این پیش نیاز ، آماده نصب Jekyll و متعلقات آن هستید. مرحله 1 – نصب Jekyll کار را با به روز کردن لیست بسته های خود شروع خواهیم کرد تا مطمئن شویم که جدیدترین اطلاعات را در مورد جدیدترین نسخه های بسته ها و متعلقات آنها داریم: ⦁ $ sudo apt update ⦁
در مرحله بعد ، بیایید make  و build-essential را نصب کنیم تا کتابخانه های Jekyll کامپایل شود ، و برای Ruby و کتابخانه های توسعه آن استفاده شود. ما در اینجا پرچم y را در نظر میگیریم که yes را تایید کنیم ، یعنی می خواهیم بسته ها را نصب کنیم و از تأیید اعلان خودداری کنیم. ⦁ $ sudo apt -y install make build-essential ruby ruby-dev ⦁
پس از اتمام این کار ، اجازه دهید دو خط به فایل .bashrc خود اضافه کنیم تا به مدیر بسته Ruby’s gem بگوییم که gems را در پوشه هوم کاربر ما قرار دهد. این کار از بروز مشکلات ناشی از نصب در سراسر سیستم جلوگیری می کند و در عین حال دستور jekyll  محلی را نیز به PATH کاربر اضافه می کند. .bashrc را با یک ویرایشگر مورد نظر خود مانند nano باز کنید: ⦁ $ nano .bashrc ⦁ در انتهای فایل خطوط زیر را اضافه کنید: .bashrc # Ruby exports
export GEM_HOME=$HOME/gems export PATH=$HOME/gems/bin:$PATH
فایل را ذخیره کنید و ببندید. برای فعال کردن خروجی ها ، دستور زیر را اجرا کنید: ⦁ $ source ~/.bashrc ⦁ پس از اتمام این کار ، از gem  برای نصب Jekyll خود و همچنین Bundler استفاده می کنیم که متعلقات gem  را مدیریت می کند. توجه داشته باشید که این کار ممکن است مدتی طول بکشد. ⦁ $ gem install jekyll bundler ⦁ در مرحله بعد ، مطمئن خواهیم شد که تنظیمات فایروال ما امکان ترافیک از طریق سرور مجازی وب توسعه Jekyll را فراهم می کند. مرحله 2 – باز کردن فایروال بیایید بررسی کنیم که آیا فایروال فعال است یا خیر. اگر فعال است ، اطمینان حاصل خواهیم کرد که ترافیک به سایت ما مجاز است ، بنابراین می توانیم سایت توسعه خود را در یک مرورگر وب مشاهده کنیم. ⦁ $ sudo ufw status ⦁ اگر با وضعیت غیرفعال مواجه شدید ، دستورات زیر را اجرا کنید. ufw allow OpenSSH sudo ufw enable
این کار باعث می شود فایروال شما در هنگام راه اندازی سیستم اجرا شود. ممکن است پیام های زیر را دریافت کنید (برای ادامه با ‘y ‘ تأیید کنید): Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
در مثال ما ، فقط SSH مجاز است: Output Status: active To Action From — —— —- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
بسته به نحوه تنظیم فایروال تان ممکن است قوانین دیگری نیز در این زمینه داشته باشید یا اصلاً هیچ قانون فایروالی وجود نداشته باشد. از آنجا که فقط ترافیک SSH در این مورد مجاز است ، باید پورت 4000، پورت پیش فرض سرور مجازی توسعه Jekyll را باز کنیم: ⦁ $ sudo ufw allow 4000 ⦁ اکنون قوانین فایروال ما باید موارد زیر را شامل شود: Output To Action From — —— —- OpenSSH ALLOW Anywhere 4000 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 4000 (v6) ALLOW Anywhere (v6)
اکنون با نصب نرم افزار و باز کردن پورت لازم ، آماده ایجاد سایت توسعه هستیم. مرحله 3 – ایجاد یک سایت توسعه جدید از دیرکتوری اصلی خود، از دستور Jekyll’s new برای ایجاد داربست برای سایتی در زیر مجموعه ای به نام www استفاده می کنیم: ⦁ $ cd ~ ⦁ ⦁ $ jekyll new www دستور jekyll new برای نصب متعلقات لازم ، bundle install را شروع می کند ، سپس به صورت خودکار یک تم با نام Minima را نصب می کند. پس از نصب موفق ، باید خروجی مانند زیر را دریافت کنید: Output New jekyll site installed in /home/sammy/www.
دستور new  در Jekyll دیرکتوری ها و فایل های زیر را ای��اد می کند: … ├── 404.html ├── about.markdown ├── _config.yml ├── Gemfile ├── Gemfile.lock ├── index.markdown ├── _posts │ └── 2020-05-29-welcome-to-jekyll.markdown └── _site
این فایل های وب سایت واقعی نیستند. بلکه فایلهای منبعی هستند که Jekyll برای ایجاد سایت استاتیک از آنها استفاده خواهد کرد. Jekyll به نامهای خاص ، الگوهای نامگذاری و ساختارهای دیرکتوری متکی است تا منابع مختلف محتوا را تجزیه کند و آنها را در یک سایت استاتیک جمع کند. استفاده از ساختار موجود و پیگیری کنوانسیون های نامگذاری Jekyll در هنگام افزودن پست ها و صفحات جدید بسیار مهم است. نکته: tree یک دستور مفید برای بازرسی ساختار فایل ها و دیرکتوری ها از خط فرمان است. می توانید آن را با دستور زیر نصب کنید: ⦁ $ sudo apt install tree ⦁ برای استفاده از آن ، cd را در دیرکتوری مورد نظر خود قرار دهید و tree را تایپ کنید و یا مسیر رسیدن به نقطه شروع را با tree /home/sammy/www ارائه کنید. مرحله 4 – راه اندازی وب سرور مجازی Jekyll سرور مجازی وب سبک Jekyll به منظور پشتیبانی از توسعه سایت با نظارت بر فایل ها در دیرکتوری و بازگرداندن خودکار سایت استاتیک هر زمان که تغییر ایجاد شود ، طراحی شده است. از آنجا که ما در حال کار بر روی یک سرور مجازی از راه دور هستیم ، برای جستجوی سایت از دستگاه محلی خود ، آدرس هاست را مشخص خواهیم کرد. اگر در حال کار روی یک دستگاه محلی هستید ، می توانید jekyll service را بدون تنظیمات هاست اجرا کنید و با http: // localhost: 4000 وصل شوید. ⦁ $ cd ~/www ⦁ ⦁ $ jekyll serve –host=203.0.113.0 ⦁ Output of jekyll server Configuration file: /home/sammy/www/_config.yml Source: /home/sammy/www Destination: /home/sammy/www/_site Incremental build: disabled. Enable with –incremental Generating… done in 0.645 seconds. Auto-regeneration: enabled for ‘/home/sammy/www’ Server address: http://203.0.113.0:4000/ Server running… press ctrl-c to stop. ⦁ هنگامی که jekyll serve را وادار به شروع کردیم ، Jekyll پیکربندی و فایل های محتوا را در یک دیرکتوری جدید ، _site تجزیه و شروع به ارائه محتوای موجود در آن پوشه _siteمیکند. … ├── 404.html ├── about.markdown ├── _config.yml ├── Gemfile ├── Gemfile.lock ├── index.markdown ├── _posts │ └── 2020-05-29-welcome-to-jekyll.markdown └── _site ├── 404.html ├── about │ └── index.html ├── assets │ ├── main.css │ │ ├── main.css.map │ └── minima-social-icons.svg ├── feed.xml ├── index.html └── jekyll └── update └── 2020 └── 05 └── 29 └── welcome-to-jekyll.html
همچنین شروع به مشاهده تغییرات دیرکتوری فعلی ، www ، میکند. به محض ذخیره تغییر در یک پست یا صفحه ، سایت استاتیک به طور خودکار بازسازی می شود ، بنابراین مهم نیست که مستقیماً روی فایل های پوشه _site تغییری ایجاد نکنید. اگر هنگام کار در سایت خود و در حین اجرای سرور مجازی توسعه در پیش زمینه ، این ترمینال را باز کنیم ، با اضافه کردن صفحات و پست ها و تغییر محتوا ، بازخورد فوری دریافت خواهیم کرد. توجه: اگر در حال کار با یک سایت بزرگ هستید ، فعال کردن –incremental می تواند هر بار که تغییری به واسطه بازتولید فایل های تغییر یافته انجام میدهید، بازسازی را سرعت ببخشد اما ما برای این سایت کوچک به آن احتیاج نداریم. می توانید اطلاعات بیشتری در مورد این ویژگی آزمایشی در وب سایت Jekyll بدست آورید. اکنون سایت در دسترس است. در یک مرورگر وب ، می توانیم از آن در آدرس سرور مجازی و پورت نمایش داده شده در خروجی حاصل از jekyll serve دیدن کنیم:
نتیجه در این آموزش Jekyll را نصب کردیم و یک سایت توسعه با برخی از مطالب تولید شده به صورت خودکار ایجاد کردیم. می توانید با خواندن آموزش های دیگر ما در مورد این موضوع ، درباره Jekyll بیشتر بدانید: • بررسی محتوای پیش فرض Jekyll • نحوه کنترل URL ها و پیوندها در Jekyll
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
دسترسی از راه دور به برنامه GUI با Docker در اوبونتو 18.04
راه اندازی سایت توسعه Jekyll در اوبونتو 20.04
نحوه راه اندازی سایت توسعه Jekyll در اوبونتو 18.04
نحوه نصب و استفاده از Docker Compose در اوبونتو 20.04
نحوه اجرای چند نسخه PHP بر روی یک سرور با استفاده از Apache و PHP-FPM در CentOS 8
نحوه نصب و استفاده از TimescaleDB در Ubuntu 20.04
نحوه نصب و راه اندازی Laravel با Docker Compose در اوبونتو 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
برچسب‌ها:
Jekyll
,
Ruby
,
Ruby’s gem
0 notes
vpsgol69-blog · 4 years
Text
نحوه نصب و استفاده از 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 ارزان –
برچسب‌ها:
Docker Compose
,
Github
,
Nginx
0 notes
vpsgol69-blog · 4 years
Text
نحوه اجرای چند نسخه PHP بر روی یک سرور با استفاده از Apache و PHP-FPM در CentOS 8
سرور مجازی وب 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 [email protected]_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 [email protected]_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 ارزان –
برچسب‌ها:
Apache
,
LAMP
,
PHP
0 notes
vpsgol69-blog · 4 years
Text
نحوه نصب و راه اندازی 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 ⦁ این دستور ممکن است چند دقیقه طول بکشد تا تکمیل شود. خروجی مشابه این را مشاهده خواهید کرد: Output Building app Step 1/11 : FROM php:7.4-fpm —> fa37bd6db22a Step 2/11 : ARG user —> Running in f71eb33b7459 Removing intermediate container f71eb33b7459 —> 533c30216f34 Step 3/11 : ARG uid —> Running in 60d2d2a84cda Removing intermediate container 60d2d2a84cda —> 497fbf904605 Step 4/11 : RUN apt-get update && apt-get install -y git curl libpng-dev libonig-dev … Step 7/11 : COPY –from=composer:latest /usr/bin/composer /usr/bin/composer —> e499f74896e3 Step 8/11 : RUN useradd -G www-data,root -u $uid -d /home/$user $user —> Running in 232ef9c7dbd1 Removing intermediate container 232ef9c7dbd1 —> 870fa3220ffa Step 9/11 : RUN mkdir -p /home/$user/.composer && chown -R $user:$user /home/$user —> Running in 7ca8c0cb7f09 Removing intermediate container 7ca8c0cb7f09 —> 3d2ef9519a8e Step 10/11 : WORKDIR /var/www —> Running in 4a964f91edfa Removing intermediate container 4a964f91edfa —> 00ada639da21 Step 11/11 : USER $user —> Running in 9f8e874fede9 Removing intermediate container 9f8e874fede9 —> fe176ff4702b
Successfully built fe176ff4702b Successfully tagged travellist:latest
پس از اتمام ساخت ، می توانید محیط را در حالت پس زمینه اجرا کنید: ⦁ $ docker-compose up -d ⦁ Output ⦁ Creating travellist-db … done ⦁ Creating travellist-app … done ⦁ Creating travellist-nginx … done ⦁ این کار کانتینرهای شما را در پس زمینه اجرا می کند. برای نشان دادن اطلاعات در مورد وضعیت خدمات فعال خود ، این دستور را اجرا کنید: ⦁ $ docker-compose ps خروجی مانند این را خواهید دید: Output Name Command State Ports ——————————————————————————– travellist-app docker-php-entrypoint php-fpm Up 9000/tcp travellist-db docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp travellist-nginx /docker-entrypoint.sh ngin … Up 0.0.0.0:8000->80/tcp
اکنون محیط شما در حال اجرا است ، اما ما هنوز باید چند دستور را اجرا کنیم تا تنظیمات برنامه به پایان برسد. برای اجرای دستورات موجود در کانتینرهای سرویس مانند ls-l می توانید از دستور docker-compose برای نمایش اطلاعات در مورد فایل ها در دیرکتوری برنامه استفاده کنید: ⦁ $ docker-compose exec app ls -l ⦁ Output total 260 -rw-rw-r– 1 sammy sammy 737 Jun 9 11:19 Dockerfile -rw-rw-r– 1 sammy sammy 101 Jan 7 08:05 README.md drwxrwxr-x 6 sammy sammy 4096 Jan 7 08:05 app -rwxr-xr-x 1 sammy sammy 1686 Jan 7 08:05 artisan drwxrwxr-x 3 sammy sammy 4096 Jan 7 08:05 bootstrap -rw-rw-r– 1 sammy sammy 1501 Jan 7 08:05 composer.json -rw-rw-r– 1 sammy sammy 179071 Jan 7 08:05 composer.lock drwxrwxr-x 2 sammy sammy 4096 Jan 7 08:05 config drwxrwxr-x 5 sammy sammy 4096 Jan 7 08:05 database drwxrwxr-x 4 sammy sammy 4096 Jun 9 11:19 docker-compose -rw-rw-r– 1 sammy sammy 965 Jun 9 11:27 docker-compose.yml -rw-rw-r– 1 sammy sammy 1013 Jan 7 08:05 package.json -rw-rw-r– 1 sammy sammy 1405 Jan 7 08:05 phpunit.xml drwxrwxr-x 2 sammy sammy 4096 Jan 7 08:05 public -rw-rw-r– 1 sammy sammy 273 Jan 7 08:05 readme.md drwxrwxr-x 6 sammy sammy 4096 Jan 7 08:05 resources drwxrwxr-x 2 sammy sammy 4096 Jan 7 08:05 routes -rw-rw-r– 1 sammy sammy 563 Jan 7 08:05 server.php drwxrwxr-x 5 sammy sammy 4096 Jan 7 08:05 storage drwxrwxr-x 4 sammy sammy 4096 Jan 7 08:05 tests drwxrwxr-x 41 sammy sammy 4096 Jun 9 11:32 vendor -rw-rw-r– 1 sammy sammy 538 Jan 7 08:05 webpack.mix.js
اکنون composer install را برای نصب متعلقات برنامه اجرا میکنیم: ⦁ $ docker-compose exec app composer install ⦁ خروجی مانند این را خواهید دید: Output Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Package operations: 85 installs, 0 updates, 0 removals – Installing doctrine/inflector (1.3.1): Downloading (100%) – Installing doctrine/lexer (1.2.0): Downloading (100%) – Installing dragonmantank/cron-expression (v2.3.0): Downloading (100%) – Installing erusev/parsedown (1.7.4): Downloading (100%) – Installing symfony/polyfill-ctype (v1.13.1): Downloading (100%) – Installing phpoption/phpoption (1.7.2): Downloading (100%) – Installing vlucas/phpdotenv (v3.6.0): Downloading (100%) – Installing symfony/css-selector (v5.0.2): Downloading (100%) … Generating optimized autoload files > Illuminate\Foundation\ComposerScripts::postAutoloadDump > @php artisan package:discover –ansi Discovered Package: facade/ignition Discovered Package: fideloper/proxy Discovered Package: laravel/tinker Discovered Package: nesbot/carbon Discovered Package: nunomaduro/collision Package manifest generated successfully.
آخرین کاری که قبل از تست برنامه باید انجام دهیم تولید یک کلید برنامه منحصر به فرد با ابزار خط فرمان artisan Laravel است. این کلید برای رمزگذاری بخش های کاربر و سایر داده های حساس استفاده می شود: ⦁ $ docker-compose exec app php artisan key:generate ⦁ Output Application key set successfully.
اکنون به مرورگر خود بروید و به نام دامنه یا آدرس IP سرور مجازی خود در پورت 8000 دسترسی پیدا کنید: http://server_domain_or_IP:8000
توجه:در این حالت این دمو را در دستکاه محلی خود اجرا میکنید، از http://localhost:8000 برای دسترسی به برنامه از مرورگر خود استفاده کنید. صفحه ای را به این شکل مشاهده خواهید کرد:
می توانید از دستور logs برای بررسی ورود های ایجاد شده توسط سرویس های خود استفاده کنید: ⦁ $ docker-compose logs nginx ⦁ Attaching to travellist-nginx … travellist-nginx | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh travellist-nginx | /docker-entrypoint.sh: Configuration complete; ready for start up travellist-nginx | 192.168.0.1 – – [09/Jun/2020:11:46:34 +0000] “GET / HTTP/1.1” 200 627 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36” travellist-nginx | 192.168.0.1 – – [09/Jun/2020:11:46:35 +0000] “GET / HTTP/1.1” 200 627 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36”
اگر می خواهید در هنگام حفظ وضعیت کلیه سرویس های آن ، محیط Docker Compose را متوقف کنید ، این دستور را اجرا کنید:
⦁ $ docker-compose pause Output Pausing travellist-db … done Pausing travellist-nginx … done Pausing travellist-app … done برای ادامه دوباره برنامه: ⦁ $ docker-compose unpause Output Unpausing travellist-app … done Unpausing travellist-nginx … done Unpausing travellist-db … done
برای خاموش کردن محیط Docker Compose و حذف همه کانتینرها ، شبکه ها و والیوم های آن ، این دستور را اجرا کنید: ⦁ $ docker-compose down Output Stopping travellist-nginx … done Stopping travellist-db … done Stopping travellist-app … done Removing travellist-nginx … done Removing travellist-db … done Removing travellist-app … done Removing network travellist-laravel-demo_travellist
برای مشاهده کلیه دستورات Docker Compose ، لطفاً مرجع خط فرمان Docker Compose را بررسی کنید. نتیجه در این راهنما ، ما یک محیط 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 ارزان –
برچسب‌ها:
Laravel
,
MySQL
,
travellist
0 notes
vpsgol69-blog · 4 years
Text
کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04
اکثر گواهی های 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 ارزان –
برچسب‌ها:
DNS
,
HTTP
,
wildcard
1 note · View note