سرور مجازی

۷ مطلب با کلمه‌ی کلیدی «ایجاد سرور مجازی» ثبت شده است

  • ۰
  • ۰

نحوه ایجاد قوانین، جدول زمانی، و موارد از رویدادهای Suricata با استفاده از برنامه های SIEM Kibana

ورود به سایت

معرفی

آموزش های قبلی در این مجموعه شما را با نحوه نصب و پیکربندی Suricata راهنمایی کردند. آنها همچنین توضیح دادند که چگونه از Filebeat برای ارسال هشدار از سرور Suricata به سرور Elastic Stack استفاده کنید تا با عملکرد داخلی اطلاعات امنیتی و مدیریت رویداد (SIEM) از آن استفاده کنید.

در این آخرین آموزش در این سری، قوانین سفارشی Kibana را ایجاد می‌کنید و هشدارهایی را در داشبوردهای SIEM Kibana ایجاد می‌کنید. هنگامی که قوانینی را وضع کردید و فهمیدید که کجا و چگونه لاگ های Suricata را با استفاده از Kibana فیلتر کنید، نحوه ایجاد و مدیریت پرونده ها با استفاده از ابزارهای تجزیه و تحلیل جدول زمانی Kibana را بررسی خواهید کرد.

در پایان این آموزش شما یک سیستم SIEM خواهید داشت که می توانید از آن برای ردیابی و بررسی رویدادهای امنیتی در تمام سرورهای شبکه خود استفاده کنید.

پیش نیازها

اگر این مجموعه آموزشی را دنبال کرده اید، باید از قبل یک سرور با حداقل 4 گیگابایت رم و 2 CPU و یک کاربر غیر روت پیکربندی شده داشته باشید. برای اهداف این راهنما، بسته به سیستم عامل انتخابی خود، می‌توانید با پیروی از راهنماهای اولیه راه‌اندازی سرور ما برای Ubuntu 20.04، Debian 11 یا Rocky Linux 8، این را تنظیم کنید.

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

اوبونتو 20.04: نحوه نصب Suricata در اوبونتو 20.04
Debian 11: نحوه نصب Suricata در Debian 11
راکی لینوکس 8: نحوه نصب Suricata در راکی ​​لینوکس 8
همچنین به سروری نیاز دارید که Elastic Stack را اجرا کرده و پیکربندی شده باشد تا Filebeat بتواند گزارش‌ها را از سرور Suricata شما به Elasticsearch ارسال کند. اگر نیاز به ایجاد یک سرور Elastic Stack دارید، از یکی از آموزش های لیست زیر که با سیستم عامل شما مطابقت دارد استفاده کنید:

اوبونتو 20.04: نحوه ایجاد یک سیستم اطلاعات امنیتی و مدیریت رویداد (SIEM) با Suricata و Elastic Stack در اوبونتو 20.04
دبیان 11: نحوه ایجاد یک سیستم اطلاعات امنیتی و مدیریت رویداد (SIEM) با Suricata و Elastic Stack در Debian 11
Rocky Linux 8: نحوه ایجاد یک سیستم اطلاعات امنیتی و مدیریت رویداد (SIEM) با Suricata و Elastic Stack در Rocky Linux 8
اطمینان حاصل کنید که می توانید در سرور Elasticsearch خود به Kibana وارد شوید و رویدادهایی در داشبوردهای مختلف Suricata Alerts و Events وجود دارد.

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

مرحله 1 – فعال کردن کلیدهای API در Elasticsearch

قبل از ایجاد قوانین، هشدارها و جدول زمانی در Kibana، باید تنظیمات ماژول امنیتی xpack را فعال کنید.

فایل /etc/elasticsearch/elasticsearch.yml خود را با nano یا ویرایشگر دلخواه خود باز کنید.

sudo nano /etc/elasticsearch/elasticsearch.yml

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

/etc/elasticsearch/elasticsearch.yml

. . .
discovery.type: single-node
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true

پس از اتمام ویرایش فایل را ذخیره کرده و ببندید. اگر از نانو استفاده می‌کنید، می‌توانید این کار را با CTRL+X انجام دهید، سپس Y و ENTER را تأیید کنید.

اکنون Elasticsearch را مجددا راه اندازی کنید تا تنظیمات جدید اعمال شود.

sudo systemctl restart elasticsearch.service

اکنون آماده پیکربندی قوانین، بررسی هشدارها و ایجاد جدول زمانی و موارد در Kibana هستید.

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

برای استفاده از عملکرد SIEM Kibana با داده‌های رویداد Suricata، باید قوانینی ایجاد کنید که هشدارهایی درباره رویدادهای دریافتی ایجاد کند. برای ایجاد یا وارد کردن قوانین، از داشبورد قوانین در صفحه برنامه امنیتی Kibana دیدن کنید.

برای اهداف این آموزش، ما از امضاهای زیر برای شناسایی ترافیک هدایت شده به سرور در پورت های ناهمخوان (به ترتیب ترافیک SSH، HTTP و TLS) استفاده خواهیم کرد:

Example Suricata Signature

alert ssh any any -> 203.0.113.5 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000000;)
alert ssh any any -> 2001:DB8::1/32 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000001;)

alert http any any -> 203.0.113.5 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000002;)
alert http any any -> 2001:DB8::1/32 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000003;)

alert tls any any -> 203.0.113.5 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000004;)
alert tls any any -> 2001:DB8::1/32 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000005;)

اگر از امضاهای خود یا از یک مجموعه قوانین استفاده می‌کنید، مطمئن شوید که می‌توانید هشدار ایجاد کنید و می‌توانید به رویدادهای مربوطه در داشبوردهای پیش‌فرض Suricata در Kibana دسترسی داشته باشید.

اکنون به صفحه قوانین در برنامه امنیتی Kibana مراجعه کنید http://localhost:5601/app/security/rules/. روی دکمه ایجاد قانون جدید در سمت راست بالای صفحه کلیک کنید.

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

Kibana Query Language Input

rule.id: "1000000" or rule.id :"1000001"

مطمئن شوید که مقادیر rule.id شما با مقدار جانبی Suricata برای حمله یا حملاتی که می‌خواهید درباره آن هشدار دهید مطابقت داشته باشد.

پیش‌نمایش سریع Query را به Last Month تغییر دهید و سپس روی Preview Results کلیک کنید. با فرض اینکه رویدادهای منطبقی را در گزارش های Suricata خود داشته باشید، صفحه با نموداری که هشدارهای ماه گذشته را نشان می دهد در جای خود به روز می شود. صفحه شما باید شبیه تصویر زیر باشد:

روی Continue کلیک کنید تا به فیلد Rule Name که برای هر قانون اضافه می‌کنید، نامی اضافه کنید. یک نام به قسمت Rule Name اضافه کنید. در این مثال از توضیحات پیام از قانون Suricata SSH TRAFFIC در پورت غیر SSH استفاده می کنیم. یک توضیح برای قانون نیز اضافه کنید. ما در این مثال از بررسی تلاش برای اتصال SSH در پورت های غیر استاندارد استفاده خواهیم کرد.

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

پس از افزودن نام قانون، توضیحات و فیلدهای اضافی اختیاری، روی Continue کلیک کنید تا به مرحله 3 ایجاد قانون بروید.

تنظیمات بعدی قانون زمانبندی را با مقادیر پیش فرض خود رها کنید و روی Continue کلیک کنید.

در نهایت در مرحله Rule actions روی Create & activate rule کلیک کنید.

شما به صفحه جدیدی هدایت می شوید که جزئیات مربوط به قانون را نشان می دهد:

اگر قوانین دیگری از Suricata وجود دارد که می‌خواهید درباره آنها هشدار داده شود، مراحل بالا را تکرار کنید و sid امضا را در قسمت query custom.id Kibana جایگزین کنید.

هنگامی که یک قانون یا قوانین را در اختیار دارید، آماده هستید تا به مرحله بعدی بروید، جایی که هشدارها را بررسی می‌کنید و یک مورد یا مواردی برای مدیریت آنها ایجاد می‌کنید.

مرحله 3 – ایجاد یک جدول زمانی برای ردیابی هشدارهای مربوط به ترافیک SSH

اکنون که قانون یا قوانینی برای ایجاد هشدارها در برنامه SIEM کیبانا پیکربندی شده‌اید، به راهی برای گروه‌بندی و مدیریت بیشتر هشدارها نیاز دارید. برای شروع، از داشبورد هشدارهای Kibana دیدن کنید: http://127.0.0.1:5601/app/security/alerts.

مطمئن شوید که مقداری ترافیک نامعتبر ایجاد کرده اید که با امضای Suricata یا امضاهایی که استفاده می کنید مطابقت دارد. به عنوان مثال، می توانید با اجرای دستوری مانند زیر از دستگاه محلی خود، قانون sid:1000000 Suricata را فعال کنید:

ssh -p 80 your_server_ip

این دستور سعی می کند به جای پورت پیش فرض 22، با استفاده از SSH در پورت 80 به سرور شما متصل شود و باید یک هشدار را راه اندازی کند. ممکن است چند دقیقه طول بکشد تا هشدار در Kibana نشان داده شود، زیرا باید توسط Elasticsearch و قانونی که در Kibana ایجاد کرده‌اید پردازش شود.

در مرحله بعد، فیلد comnunity_id را به جدول هشدارهایی که در پایین صفحه نمایش داده می شود، اضافه می کنید. از اولین آموزش به یاد بیاورید که این فیلد توسط Suricata تولید می شود و نشان دهنده آدرس های IP منحصر به فرد و پورت های موجود در یک جریان شبکه است. روی دکمه فیلدها کلیک کنید و در کادر محاوره‌ای که ظاهر می‌شود، network.community_id را وارد کنید و سپس کادر کنار نام فیلد را علامت بزنید:

مدال را ببندید و فیلد به جدول هشدارها اضافه می شود. اکنون ماوس را روی هر یک از هشدارهایی که دارای همان مقدار community_id هستند نگه دارید و روی نماد بررسی جدول زمانی افزودن کلیک کنید. این اطمینان حاصل می کند که همه هشدارهایی که Community_id را به اشتراک می گذارند که Suricata به رویداد اضافه کرده است برای بررسی بیشتر به یک جدول زمانی اضافه می شود:

سپس روی پیوند Untitled Timeline در پایین سمت چپ مرورگر خود کلیک کنید. این پیوند شما را به صفحه ای می برد که فقط هشدارهایی را با قسمت Suricata community_id نشان می دهد که می خواهید بررسی کنید.

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

روی دکمه All data sources در سمت راست صفحه کلیک کنید و دکمه Detection Alerts را انتخاب کنید، سپس روی Save کلیک کنید. این گزینه جدول زمانی را محدود می کند تا فقط هشدارهایی را که Kibana تولید می کند نمایش دهد. بدون این گزینه، هشدارهای Suricata نیز در جدول زمانی گنجانده خواهد شد.

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

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

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

در مرحله بعدی، از نماهای جدول زمانی رویدادها برای پیوست کردن هشدارها به اپلیکیشن Kibana’s Cases در مجموعه ابزارهای SIEM استفاده خواهید کرد.

مرحله 4 – ایجاد و مدیریت موارد SIEM

در مرحله قبل، یک جدول زمانی ایجاد کردید تا هشدارها و بسته‌ها را با هم بر اساس فیلد Community_id Suricata گروه‌بندی کنید. در این بخش از آموزش شما یک Case برای ردیابی و مدیریت هشدارها در جدول زمانی خود ایجاد می کنید.

برای ایجاد یک مورد جدید از جدول زمانی خود، مطمئن شوید که در یک صفحه جدول زمانی در مرورگر خود هستید. روی دکمه Attach to case در سمت راست بالای صفحه تایم لاین و سپس دکمه Attach to new case را از لیست ظاهر شده کلیک کنید.

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

فیلدها را با یک نام توصیفی و تگ یا تگ های اختیاری پر کنید. در این مثال، نام مورد SSH TRAFFIC در پورت غیر SSH از 203.0.113.5 است، زیرا این نوع ترافیک و میزبان خاصی است که ما در حال بررسی آن هستیم. با بسیاری از رویدادها برای بررسی در سیستم SIEM شما، یک طرح نامگذاری مانند این به شما کمک می کند موارد، جدول زمانی و هشدارها را پیگیری کنید زیرا نام با هشدار Kibana و فیلد پیام امضای Suricata مطابقت دارد.

به پایین صفحه بروید و روی دکمه Create case کلیک کنید. مرورگر شما در صفحه ای قرار می گیرد که کیس ذخیره شده را نشان می دهد. شما می توانید نظرات را در قالب Markdown با اطلاعات اضافی اضافه کنید و همچنین مورد را از این صفحه ویرایش کنید.

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

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

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

اکنون با استفاده از منوی پیمایش در سمت چپ صفحه، دوباره از برنامه Cases در Kibana] (http://localhost:5601/app/security/cases) دیدن کنید. روی پرونده خود کلیک کنید و توجه داشته باشید که چگونه هشدارهایی که اضافه کرده اید در جزئیات پرونده فهرست شده اند:

از اینجا می‌توانید به پایین کیس پیمایش کنید و اطلاعات بیشتری را که می‌خواهید اضافه کنید. به عنوان مثال، هر اقدامی که برای بررسی یک هشدار یا هشدارها انجام داده اید، تغییرات پیکربندی به Suricata مانند یک قانون جدید یا ویرایش شده، افزایش به یکی دیگر از اعضای تیم یا هر چیز دیگری که مربوط به مورد است.

هنگامی که با ایجاد مواردی برای انواع مختلف هشدارهایی که می‌خواهید پیگیری کنید راحت هستید، اکنون می‌توانید از ابزارهای SIEM Kibana برای سازماندهی و هماهنگ کردن بررسی هر هشدار در یک مکان مرکزی استفاده کنید.

نتیجه

در این آموزش شما سیستم Suricata و Elastic Stack SIEM موجود خود را با افزودن قوانینی به Kibana که هشدارهایی را در مورد ترافیک خاص مورد علاقه ایجاد می کند، ساخته اید. شما همچنین یک جدول زمانی یا جدول زمانی ایجاد کردید تا مجموعه ای از هشدارها را بر اساس Community_id گروه بندی کنید. در نهایت، یک مورد ایجاد کردید و جدول زمانی خود را به همراه هشدارهای فردی مورد علاقه به آن مرتبط کردید.

با وجود این سیستم SIEM، اکنون می توانید رویدادهای امنیتی را در سراسر سیستم های خود تقریباً در هر مقیاسی ردیابی کنید. همانطور که با Suricata بیشتر آشنا می شوید و هشدارهایی را که در Kibana SIEM شما ایجاد می کند ردیابی می کنید، می توانید هشدارهای Suricata و اقدامات پیش فرضی را که مطابق با شبکه خاص شما انجام می دهد سفارشی کنید.

برای داشتن یک رابط کاربری سبک تر SIEM، ممکن است به EveBox نیز علاقه مند باشید، که تمام داده های رویداد Suricata و عملکرد SIEM را در یک صفحه ارائه می دهد.

 

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

 

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

 

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

 

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

 

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

 

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

 

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

برچسب‌ها:Rocky Linux 8اتصال به سرور مجازیاوبونتو 20.04ایجاد سرور مجازیخرید سرورخرید سرور مجازی آمریکاسیستم SIEMمدیریت موارد SIEMنصب و پیکربندی Suricata

  • behnam gol mohamadi
  • ۰
  • ۰

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

ورود به سایت

معرفی

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

Ansible یک معماری ساده ارائه می دهد که نیازی به نرم افزار خاصی برای نصب روی گره ها ندارد. همچنین مجموعه ای قوی از ویژگی ها و ماژول های داخلی را ارائه می دهد که نوشتن اسکریپت های اتوماسیون را تسهیل می کند.

این راهنما نحوه استفاده از Ansible را برای خودکارسازی مراحل موجود در راهنمای ما در مورد نحوه نصب و استفاده از Docker در اوبونتو 20.04 توضیح می دهد. Docker برنامه‌ای است که فرآیند مدیریت کانتینرها، فرآیندهای جدا شده از منابع را که به روشی مشابه ماشین‌های مجازی عمل می‌کنند، اما قابل حمل‌تر، منابع دوست‌تر و بیشتر به سیستم عامل میزبان وابسته هستند، ساده می‌کند.

پیش نیازها

برای اجرای تنظیمات خودکار ارائه شده توسط playbook در این راهنما، به موارد زیر نیاز دارید:

  • یک گره کنترلی Ansible: یک ماشین اوبونتو 20.04 با Ansible نصب و پیکربندی شده است تا با استفاده از کلیدهای SSH به میزبان Ansible شما متصل شود. اطمینان حاصل کنید که گره کنترل دارای یک کاربر معمولی با مجوزهای sudo و فایروال فعال است، همانطور که در راهنمای راه اندازی سرور اولیه ما توضیح داده شده است.
  • یک یا چند میزبان Ansible: یک یا چند سرور اوبونتو 20.04 راه دور که قبلاً طبق راهنمای نحوه استفاده از Ansible برای خودکارسازی تنظیمات اولیه سرور در اوبونتو 20.04 تنظیم شده است.

این کتاب بازی چه کاری انجام می دهد؟

این کتاب بازی Ansible جایگزینی برای اجرای دستی روشی است که در راهنمای ما در مورد نحوه نصب و استفاده از Docker در اوبونتو 20.04 بیان شده است. Playbook خود را یک بار تنظیم کنید و بعد از هر نصب از آن استفاده کنید.

اجرای این کتاب بازی، اقدامات زیر را روی میزبان های Ansible شما انجام می دهد:

  • aptitude را نصب کنید که توسط Ansible به عنوان جایگزینی برای مدیر بسته apt ترجیح داده می شود.
  • بسته های سیستمی مورد نیاز را نصب کنید.
  • کلید Docker GPG APT را نصب کنید.
  • مخزن رسمی Docker را به منابع apt اضافه کنید.
  • Docker را نصب کنید.
  • ماژول Python Docker را از طریق پیپ نصب کنید.
  • تصویر پیش‌فرض مشخص‌شده توسط default_container_image را از Docker Hub بکشید.
  • تعداد کانتینرهای تعریف شده توسط متغیر container_count را ایجاد کنید، هر کدام با استفاده از تصویر تعریف شده توسط default_container_image، و دستور تعریف شده در default_container_command را در هر کانتینر جدید اجرا کنید.

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

برای شروع، وارد یک کاربر دارای sudo در سرور گره کنترل Ansible خود شوید.

مرحله 1 – آماده کردن Playbook خود

فایل playbook.yml جایی است که تمام وظایف شما در آن تعریف می شود. یک کار کوچکترین واحد عملی است که می توانید با استفاده از کتاب بازی Ansible به طور خودکار انجام دهید. اما ابتدا، فایل playbook خود را با استفاده از ویرایشگر متن دلخواه خود ایجاد کنید:

nano playbook.yml

با این کار یک فایل YAML خالی باز می شود. قبل از اضافه کردن وظایف به کتاب بازی خود، با افزودن موارد زیر شروع کنید:

playbook.yml

---
- hosts: all
  become: true
  vars:
    container_count: 4
    default_container_name: docker
    default_container_image: ubuntu
    default_container_command: sleep 1

تقریباً هر کتاب بازی که با آن روبرو می شوید با اعلان هایی مشابه این شروع می شود. hosts اعلام می کند که گره کنترل Ansible کدام سرورها را با این کتاب بازی هدف قرار می دهد. تبدیل وضعیت می کند که آیا همه دستورات با امتیازات ریشه افزایش یافته انجام می شوند یا خیر.

vars به شما امکان می دهد داده ها را در متغیرها ذخیره کنید. اگر تصمیم به تغییر این موارد در آینده دارید، فقط باید این خطوط را در فایل خود ویرایش کنید. در اینجا توضیح مختصری در مورد هر متغیر آورده شده است:

  • container_count: تعداد کانتینرهایی که باید ایجاد شوند.
  • default_container_name: نام کانتینر پیش‌فرض.
  • default_container_image: تصویر پیش‌فرض Docker برای استفاده در هنگام ایجاد کانتینرها.
  • default_container_command: دستور پیش فرض برای اجرا در کانتینرهای جدید.

مرحله 2 – افزودن وظایف نصب بسته ها به Playbook خود

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

همه وظایف موجود در این کتاب بازی می توانند به تنهایی بایستند و مجدداً در سایر کتاب های بازی شما مورد استفاده قرار گیرند.

اولین وظایف خود یعنی نصب aptitude، ابزاری برای ارتباط با مدیر بسته لینوکس و نصب بسته های سیستم مورد نیاز را اضافه کنید. Ansible اطمینان حاصل می کند که این بسته ها همیشه بر روی سرور شما نصب می شوند:

playbook.yml

  tasks:
    - name: Install aptitude
      apt:
        name: aptitude
        state: latest
        update_cache: true

    - name: Install required system packages
      apt:
        pkg:
          - apt-transport-https
          - ca-certificates
          - curl
          - software-properties-common
          - python3-pip
          - virtualenv
          - python3-setuptools
        state: latest
        update_cache: true

در اینجا، شما از ماژول داخلی apt Ansible برای هدایت Ansible برای نصب بسته های خود استفاده می کنید. ماژول ها در Ansible میانبرهایی برای اجرای عملیاتی هستند که در غیر این صورت باید به عنوان دستورات bash خام اجرا می شدند. اگر aptitude در دسترس نباشد، Ansible با خیال راحت به apt برای نصب بسته ها باز می گردد، اما Ansible از لحاظ تاریخی استعداد را ترجیح داده است.

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

مرحله 3 – افزودن وظایف نصب Docker به Playbook خود

وظیفه شما آخرین نسخه Docker را از مخزن رسمی نصب می کند. کلید Docker GPG برای تأیید دانلود اضافه می شود، مخزن رسمی به عنوان منبع بسته جدید اضافه می شود و Docker نصب می شود. علاوه بر این، ماژول داکر برای پایتون نیز نصب خواهد شد:

playbook.yml

    - name: Add Docker GPG apt Key
      apt_key:
        url: https://download.docker.com/linux/ubuntu/gpg
        state: present

    - name: Add Docker Repository
      apt_repository:
        repo: deb https://download.docker.com/linux/ubuntu focal stable
        state: present

    - name: Update apt and install docker-ce
      apt:
        name: docker-ce
        state: latest
        update_cache: true

    - name: Install Docker Module for Python
      pip:
        name: docker

خواهید دید که ماژول‌های Ansible داخلی apt_key و apt_repository ابتدا به آدرس‌های اینترنتی صحیح اشاره می‌کنند، سپس وظیفه دارند از وجود آنها اطمینان حاصل کنند. این امکان نصب آخرین نسخه Docker را به همراه استفاده از پیپ برای نصب ماژول برای پایتون فراهم می کند.

مرحله 4 – افزودن Docker Image و وظایف Container به Playbook خود

ایجاد واقعی کانتینرهای Docker شما از اینجا با کشیدن تصویر Docker مورد نظر شما شروع می شود. به طور پیش فرض، این تصاویر از داکر هاب رسمی می آیند. با استفاده از این تصویر، کانتینرها مطابق با مشخصات تعیین شده توسط متغیرهای اعلام شده در بالای کتاب بازی شما ایجاد می شوند:

playbook.yml

    - name: Pull default Docker image
      community.docker.docker_image:
        name: "{{ default_container_image }}"
        source: pull

    - name: Create default containers
      community.docker.docker_container:
        name: "{{ default_container_name }}{{ item }}"
        image: "{{ default_container_image }}"
        command: "{{ default_container_command }}"
        state: present
      with_sequence: count={{ container_count }}

از docker_image برای کشیدن تصویر Docker که می‌خواهید به عنوان پایه کانتینرهای خود استفاده کنید استفاده می‌شود. docker_container به شما اجازه می دهد تا مشخصات کانتینرهایی را که ایجاد می کنید، به همراه دستوری که می خواهید آنها را ارسال کنید، مشخص کنید.

with_sequence روش Ansible برای ایجاد یک حلقه است و در این حالت ایجاد کانتینرهای شما را با توجه به تعداد تعیین شده شما حلقه می کند. این یک حلقه شمارش اولیه است، بنابراین متغیر آیتم در اینجا عددی را ارائه می دهد که تکرار حلقه فعلی را نشان می دهد. این شماره در اینجا برای نامگذاری ظروف شما استفاده می شود.

مرحله 5 – کتاب راهنمای کامل خود را مرور کنید

کتاب بازی شما باید تقریباً شبیه شکل زیر باشد، با تفاوت های جزئی بسته به سفارشی سازی های شما:

playbook.yml

---
- hosts: all
  become: true
  vars:
    container_count: 4
    default_container_name: docker
    default_container_image: ubuntu
    default_container_command: sleep 1d

  tasks:
    - name: Install aptitude
      apt:
        name: aptitude
        state: latest
        update_cache: true

    - name: Install required system packages
      apt:
        pkg:
          - apt-transport-https
          - ca-certificates
          - curl
          - software-properties-common
          - python3-pip
          - virtualenv
          - python3-setuptools
        state: latest
        update_cache: true

    - name: Add Docker GPG apt Key
      apt_key:
        url: https://download.docker.com/linux/ubuntu/gpg
        state: present

    - name: Add Docker Repository
      apt_repository:
        repo: deb https://download.docker.com/linux/ubuntu focal stable
        state: present

    - name: Update apt and install docker-ce
      apt:
        name: docker-ce
        state: latest
        update_cache: true

    - name: Install Docker Module for Python
      pip:
        name: docker

    - name: Pull default Docker image
      community.docker.docker_image:
        name: "{{ default_container_image }}"
        source: pull

    - name: Create default containers
      community.docker.docker_container:
        name: "{{ default_container_name }}{{ item }}"
        image: "{{ default_container_image }}"
        command: "{{ default_container_command }}"
        state: present
      with_sequence: count={{ container_count }}

با خیال راحت این کتاب راهنما را طوری تغییر دهید که مطابق با نیازهای فردی شما در جریان کار خود باشد. برای مثال، می‌توانید از ماژول docker_image برای فشار دادن تصاویر به Docker Hub یا ماژول docker_container برای راه‌اندازی شبکه‌های کانتینری استفاده کنید.

مرحله 6 – اجرای Playbook خود

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

برای اجرای playbook فقط در server1 که به صورت sammy متصل می شود، می توانید از دستور زیر استفاده کنید:

ansible-playbook playbook.yml -l server1 -u sammy

پرچم -l سرور شما را مشخص می‌کند و پرچم -u مشخص می‌کند که کدام کاربر در سرور راه دور وارد شود. خروجی مشابه این دریافت خواهید کرد:

این نشان می دهد که راه اندازی سرور شما کامل شده است! خروجی شما نباید دقیقاً یکسان باشد، اما مهم این است که هیچ شکستی نداشته باشید.

پس از اتمام اجرا، از طریق SSH به سروری که توسط Ansible ارائه شده است وارد شوید تا بررسی کنید که آیا کانتینرها با موفقیت ایجاد شده اند یا خیر.

وارد سرور راه دور با:

ssh sammy@your_remote_server_ip

و ظروف Docker خود را در سرور راه دور فهرست کنید:

sudo docker ps -a

شما باید خروجی مشابه این را ببینید:

 

Output

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a3fe9bfb89cf        ubuntu              "sleep 1d"          5 minutes ago       Created                                 docker4
8799c16cde1e        ubuntu              "sleep 1d"          5 minutes ago       Created                                 docker3
ad0c2123b183        ubuntu              "sleep 1d"          5 minutes ago       Created                                 docker2
b9350916ffd8        ubuntu              "sleep 1d"          5 minutes ago       Created                                 docker1

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

نتیجه

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

در این راهنما، نحوه استفاده از Ansible برای خودکار کردن فرآیند نصب و راه‌اندازی Docker در یک سرور راه دور را نشان دادید. از آنجایی که هر فرد معمولاً هنگام کار با کانتینر نیازهای متفاوتی دارد، توصیه می کنیم برای اطلاعات بیشتر و موارد استفاده از ماژول docker_container Ansible، اسناد رسمی Ansible را بررسی کنید.

 

 

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

 

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

 

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

 

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

 

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

 

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

 

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

برچسب‌ها:VPS یا سرور مجازیآماده کردن Playbookافزودن Docker Imageانواع سرور مجازیاوبونتو 20.04ایجاد سرور مجازیبه روز رسانی سرورخرید سرور مجازیکتاب بازی Ansible

  • behnam gol mohamadi
  • ۰
  • ۰

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

ورود به سایت

معرفی

Nextcloud، یک فورک از ownCloud، یک سرور به اشتراک گذاری فایل است که به شما امکان می دهد محتوای شخصی خود، مانند اسناد و تصاویر، را در یک مکان متمرکز مانند Dropbox ذخیره کنید. تفاوت با Nextcloud این است که همه ویژگی های آن منبع باز هستند. همچنین کنترل و امنیت داده های حساس شما را به شما باز می گرداند، بنابراین استفاده از سرویس میزبانی ابری شخص ثالث را حذف می کند.

در این آموزش، ما یک نمونه Nextcloud را روی سرور اوبونتو 20.04 نصب و پیکربندی می کنیم.

پیش نیازها

 

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

کاربر و فایروال غیر ریشه‌دار sudo که روی سرور شما پیکربندی شده است: می‌توانید یک کاربر با امتیازات sudo ایجاد کنید و با دنبال کردن تنظیمات اولیه سرور با اوبونتو 20.04، یک فایروال اساسی راه‌اندازی کنید.
(اختیاری) نام دامنه ای که به سرور شما اشاره می کند: ما اتصالات را به نصب Nextcloud با TLS/SSL ایمن می کنیم. اگر سرور شما نام دامنه داشته باشد، Nextcloud می تواند یک گواهی SSL رایگان و قابل اعتماد از Let’s Encrypt را تنظیم و مدیریت کند. در غیر این صورت، Nextcloud می تواند یک گواهی SSL با امضای خود تنظیم کند که می تواند اتصالات را رمزگذاری کند، اما به طور پیش فرض در مرورگرهای وب قابل اعتماد نخواهد بود.
پس از انجام مراحل بالا، برای یادگیری نحوه راه اندازی Nextcloud بر روی سرور خود، ادامه دهید.

مرحله 1 – نصب Nextcloud

ما Nextcloud را با استفاده از سیستم بسته بندی Snap نصب خواهیم کرد. این سیستم بسته‌بندی که به‌طور پیش‌فرض در اوبونتو 20.04 موجود است، به سازمان‌ها اجازه می‌دهد تا نرم‌افزار را به همراه تمام وابستگی‌ها و پیکربندی‌های مرتبط، در یک واحد مستقل با به‌روزرسانی‌های خودکار ارسال کنند. این بدان معناست که به جای نصب و پیکربندی یک سرور وب و پایگاه داده و سپس پیکربندی برنامه Nextcloud برای اجرا بر روی آن، می‌توانیم بسته snap را نصب کنیم که سیستم‌های زیربنایی را به طور خودکار مدیریت می‌کند.

برای دانلود بسته Nextcloud snap و نصب آن بر روی سیستم، تایپ کنید:

sudo snap install nextcloud

بسته Nextcloud دانلود و بر روی سرور شما نصب خواهد شد. با فهرست کردن تغییرات مرتبط با snap می‌توانید تأیید کنید که فرآیند نصب با موفقیت انجام شده است:

snap changes nextcloud

 

Output

ID   Status  Spawn               Ready               Summary
4    Done    today at 16:12 UTC  today at 16:12 UTC  Install "nextcloud" snap

وضعیت و خلاصه نشان می دهد که نصب بدون هیچ مشکلی انجام شده است.

دریافت اطلاعات اضافی درباره Nextcloud Snap

اگر اطلاعات بیشتری در مورد Nextcloud snap می‌خواهید، چند دستور وجود دارد که می‌تواند مفید باشد.

دستور snap info می تواند توضیحات، دستورات مدیریت Nextcloud موجود، و همچنین نسخه نصب شده و کانال snap را که ردیابی می شود به شما نشان دهد:

snap info nextcloud

اسنپ‌ها می‌توانند اتصالاتی را که پشتیبانی می‌کنند تعریف کنند، که شامل یک شکاف و دوشاخه است که وقتی به هم متصل می‌شود، دسترسی فوری به قابلیت‌ها یا سطوح دسترسی خاص را می‌دهد. به عنوان مثال، اسنپ هایی که باید به عنوان مشتری شبکه عمل کنند، باید اتصال شبکه را داشته باشند. برای اینکه ببینید این snap چه اتصالاتی را تعریف می کند، تایپ کنید:

snap connections nextcloud

 

Output

Interface        Plug                       Slot           Notes
network          nextcloud:network          :network       -
network-bind     nextcloud:network-bind     :network-bind  -
removable-media  nextcloud:removable-media  -              -

برای اطلاع از همه خدمات و برنامه‌های خاصی که این اسنپ ارائه می‌کند، می‌توانید با تایپ کردن، نگاهی به فایل تعریف snap بیندازید:

cat /snap/nextcloud/current/meta/snap.yaml

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

مرحله 2 – پیکربندی یک حساب اداری

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

برای پیکربندی Nextcloud ب

ا یک حساب کاربری جدید، از دستور nextcloud.manual-install استفاده کنید. شما باید یک نام کاربری و یک رمز عبور را به عنوان آرگومان وارد کنید:

sudo nextcloud.manual-install sammy password

پیام زیر نشان می دهد که Nextcloud به درستی پیکربندی شده است:

 

Output

Nextcloud was successfully installed

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

مرحله 3 – تنظیم دامنه های مورد اعتماد

هنگام نصب از خط فرمان، Nextcloud نام میزبان هایی را که نمونه به آنها پاسخ می دهد محدود می کند. به‌طور پیش‌فرض، این سرویس تنها به درخواست‌های ارسال شده به نام میزبان «localhost» پاسخ می‌دهد. ما از طریق نام دامنه یا آدرس IP سرور به Nextcloud دسترسی خواهیم داشت، بنابراین باید این تنظیم را برای پذیرش این نوع درخواست‌ها تنظیم کنیم.

با پرس و جو کردن مقدار آرایه trusted_domains می توانید تنظیمات فعلی را مشاهده کنید:

sudo nextcloud.occ config:system:get trusted_domains

 

Output

localhost

در حال حاضر، فقط localhost به عنوان اولین مقدار در آرایه وجود دارد. می‌توانیم یک ورودی برای نام دامنه یا آدرس IP سرور خود با تایپ کردن اضافه کنیم:

sudo nextcloud.occ config:system:set trusted_domains 1 –value=example.com

 

Output

System config value trusted_domains => 1 set to string example.com

اگر دوباره دامنه های مورد اعتماد را پرس و جو کنیم، خواهیم دید که اکنون دو ورودی داریم:

sudo nextcloud.occ config:system:get trusted_domains

 

Output

localhost
example.com

اگر نیاز به افزودن راه دیگری برای دسترسی به نمونه Nextcloud دارید، می‌توانید با اجرای مجدد دستور config:system:set با یک عدد فهرست افزایش‌یافته («1» در دستور اول) و تنظیم مقدار — دامنه‌ها یا آدرس‌های اضافی اضافه کنید. .

مرحله 4 – ایمن سازی رابط وب Nextcloud با SSL

قبل از شروع استفاده از Nextcloud، باید رابط وب را ایمن کنیم.

اگر یک نام دامنه مرتبط با سرور Nextcloud خود دارید، snap Nextcloud می تواند به شما کمک کند یک گواهی SSL قابل اعتماد را از Let’s Encrypt دریافت و پیکربندی کنید. اگر سرور Nextcloud شما نام دامنه ندارد، Nextcloud می تواند یک گواهی امضا شده را پیکربندی کند که ترافیک وب شما را رمزگذاری می کند اما به طور خودکار توسط مرورگر وب شما قابل اعتماد نخواهد بود.

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

گزینه 1: راه اندازی SSL با Let’s Encrypt

اگر یک نام دامنه مرتبط با سرور Nextcloud خود دارید، بهترین گزینه برای ایمن سازی رابط وب خود دریافت گواهی Let’s Encrypt SSL است.

با باز کردن پورت‌هایی در فایروال که Let’s Encrypt برای تأیید مالکیت دامنه استفاده می‌کند، شروع کنید. با این کار صفحه ورود Nextcloud شما به صورت عمومی قابل دسترسی خواهد بود، اما از آنجایی که ما قبلاً یک حساب سرپرست پیکربندی شده‌ایم، هیچ‌کس نمی‌تواند نصب را هک کند:

sudo ufw allow 80,443/tcp

سپس، با تایپ کردن، یک گواهی Let’s Encrypt درخواست کنید:

sudo nextcloud.enable-https lets-encrypt

ابتدا از شما سوال می شود که آیا سرور شما شرایط لازم برای درخواست گواهی از سرویس Let’s Encrypt را دارد یا خیر:

 

Output

In order for Let's Encrypt to verify that you actually own the
domain(s) for which you're requesting a certificate, there are a
number of requirements of which you need to be aware:

1. In order to register with the Let's Encrypt ACME server, you must
   agree to the currently-in-effect Subscriber Agreement located
   here:

       https://letsencrypt.org/repository/

   By continuing to use this tool you agree to these terms. Please
   cancel now if otherwise.

2. You must have the domain name(s) for which you want certificates
   pointing at the external IP address of this machine.

3. Both ports 80 and 443 on the external IP address of this machine
   must point to this machine (e.g. port forwarding might need to be
   setup on your router).

Have you met these requirements? (y/n)

برای ادامه y را تایپ کنید.

در مرحله بعد، از شما خواسته می شود یک آدرس ایمیل برای استفاده برای عملیات بازیابی ارائه دهید:

 

Output

Please enter an email address (for urgent notices or key recovery):

ایمیل خود را وارد کنید و برای ادامه Enter را فشار دهید.

در نهایت، نام دامنه مرتبط با سرور Nextcloud خود را وارد کنید:

 

Output

Please enter your domain name(s) (space-separated): example.com

گواهی Let’s Encrypt شما درخواست می شود و به شرطی که همه چیز به خوبی پیش برود، نمونه داخلی آپاچی مجدداً راه اندازی می شود تا بلافاصله SSL پیاده سازی شود:

 

Output

Attempting to obtain certificates... done
Restarting apache... done

اکنون می توانید به مرحله بعدی بروید تا برای اولین بار وارد Nextcloud شوید.

گزینه 2: راه اندازی SSL با گواهی خود امضا شده

اگر سرور Nextcloud شما نام دامنه ندارد، همچنان می‌توانید با ایجاد یک گواهی SSL خودامضا، رابط وب را ایمن کنید. این گواهی اجازه دسترسی به رابط وب را از طریق یک اتصال رمزگذاری شده می دهد، اما نمی تواند هویت سرور شما را تأیید کند، بنابراین مرورگر شما احتمالاً هشداری را نمایش می دهد.

برای ایجاد یک گواهی خودامضا و پیکربندی Nextcloud برای استفاده از آن، تایپ کنید:

sudo nextcloud.enable-https self-signed

 

Output

Generating key and self-signed certificate... done
Restarting apache... done

خروجی بالا نشان می دهد که Nextcloud یک گواهی امضا شده را تولید و فعال کرده است.

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

sudo ufw allow 80,443/tcp

اکنون برای اولین بار آماده ورود به Nextcloud هستید.

مرحله 5 – وارد شدن به رابط وب Nextcloud

اکنون که Nextcloud پیکربندی شده است، از نام دامنه یا آدرس IP سرور خود در مرورگر وب خود بازدید کنید:

https://example.com

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

برای ورود به رابط وب Nextcloud روی دکمه ورود به سیستم کلیک کنید.

اولین باری که وارد می شوید، پنجره ای با چند متن مقدماتی و پیوندهایی به کلاینت های مختلف Nextcloud نمایش داده می شود که می توان از آنها برای دسترسی به نمونه Nextcloud خود استفاده کرد:

 

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

نصب شما اکنون کامل و ایمن شده است. برای آشنایی بیشتر با ویژگی ها و عملکرد سیستم جدید خود، می توانید رابط کاربری را بررسی کنید.

نتیجه

Nextcloud می‌تواند قابلیت‌های سرویس‌های ذخیره‌سازی ابری شخص ثالث را تکرار کند. محتوا را می توان بین کاربران یا به صورت خارجی با URL های عمومی به اشتراک گذاشت. مزیت Nextcloud این است که اطلاعات به صورت امن در مکانی که شما کنترل می کنید ذخیره می شود.

 

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

 

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

 

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

 

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

 

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

 

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

 

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

برچسب‌ها:ایجاد سرور مجازیبپیکربندی Nextcloud snapتنظیمات اولیه سرور مجازیخرید سرور مجازی نامحدودراه اندازی SSLسرور اوبونتو 20.04سیستم بسته بندی Snapفروش سرور مجازینصب و پیکربندی Nextcloud

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه راه اندازی پلتفرم Eclipse Theia Cloud IDE در vpsgol Kubernetes

ورود به سایت

معرفی

با حرکت ابزارهای توسعه‌دهنده به سمت ابر، ایجاد و پذیرش پلت‌فرم‌های Cloud IDE (محیط توسعه یکپارچه) در حال رشد است. Cloud IDE ها از هر نوع دستگاه مدرن از طریق مرورگرهای وب قابل دسترسی هستند و مزایای متعددی را برای سناریوهای همکاری بلادرنگ ارائه می دهند. کار در یک IDE ابری یک محیط توسعه و آزمایش یکپارچه را برای شما و تیمتان فراهم می کند، در حالی که ناسازگاری های پلت فرم را به حداقل می رساند. از آنجایی که آنها به طور بومی مبتنی بر فناوری‌های ابری هستند، می‌توانند از خوشه برای دستیابی به وظایفی استفاده کنند که می‌تواند تا حد زیادی از قدرت و قابلیت اطمینان یک کامپیوتر توسعه‌دهنده فراتر رود.

Eclipse Theia یک IDE ابری توسعه پذیر است که روی یک سرور راه دور اجرا می شود و از یک مرورگر وب قابل دسترسی است. از نظر بصری، به گونه‌ای طراحی شده است که شبیه به Microsoft Visual Studio Code به نظر برسد و رفتاری مشابه داشته باشد، به این معنی که از بسیاری از زبان‌های برنامه‌نویسی پشتیبانی می‌کند، طرح‌بندی انعطاف‌پذیری دارد و ترمینال یکپارچه دارد. آنچه Eclipse Theia را از سایر نرم افزارهای Cloud IDE جدا می کند، توسعه پذیری آن است. می توان آن را با استفاده از پسوندهای سفارشی تغییر داد، که به شما امکان می دهد یک IDE ابری متناسب با نیازهای خود ایجاد کنید.

در این آموزش، شما نسخه پیش‌فرض پلت‌فرم Eclipse Theia ابری IDE را در خوشه vpsgol Kubernetes خود راه‌اندازی می‌کنید و آن را در دامنه خود، با گواهی‌های Let’s Encrypt ایمن می‌کنید و از بازدیدکننده برای احراز هویت می‌خواهد. در پایان، Eclipse Theia را خواهید داشت که روی خوشه Kubernetes شما از طریق HTTPS در دسترس است و بازدیدکننده را ملزم به ورود به سیستم می‌کند.

پیش نیازها

  • یک خوشه vpsgol Kubernetes با اتصال شما به عنوان پیش فرض kubectl پیکربندی شده است. دستورالعمل های مربوط به نحوه پیکربندی kubectl در مرحله اتصال به خوشه خود هنگام ایجاد خوشه نشان داده می شود.
  • مدیریت بسته Helm 3 بر روی دستگاه محلی شما نصب شده است.
  • Nginx Ingress Controller با استفاده از Helm برای استفاده از ExternalDNS با منابع Ingress بر روی خوشه شما نصب شده است.
  • یک نام دامنه کاملاً ثبت شده این آموزش از theia.your_domain در سرتاسر استفاده خواهد کرد. می توانید یک نام دامنه را در Namecheap خریداری کنید، یک نام دامنه را به صورت رایگان در Freenom دریافت کنید، یا از ثبت کننده دامنه انتخابی خود استفاده کنید.

مرحله 1 – نصب و نمایش Eclipse Theia

برای شروع، Eclipse Theia را در خوشه vpsgol Kubernetes خود نصب خواهید کرد. سپس با استفاده از Nginx Ingress آن را در دامنه مورد نظر خود در معرض دید قرار خواهید داد.

از آنجایی که شما دو نمونه استقرار و یک منبع را به عنوان بخشی از پیش نیازها ایجاد کردید، می توانید آزادانه آنها را با اجرای دستورات زیر حذف کنید:

kubectl delete -f hello-kubernetes-ingress.yaml

kubectl delete -f hello-kubernetes-first.yaml

kubectl delete -f hello-kubernetes-second.yaml

برای این آموزش، پیکربندی استقرار را در دستگاه محلی خود در فایلی به نام eclipse-theia.yaml ذخیره خواهید کرد. با استفاده از دستور زیر آن را ایجاد کنید:

nano eclipse-theia.yaml

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

eclipse-theia.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: theia
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: theia-next
  namespace: theia
spec:
  ingressClassName: nginx
  rules:
  - host: theia.your_domain
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: theia-next
            port:
              number: 80
---
apiVersion: v1
kind: Service
metadata:
 name: theia-next
 namespace: theia
spec:
 ports:
 - port: 80
   targetPort: 3000
 selector:
   app: theia-next
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: theia-next
  name: theia-next
  namespace: theia
spec:
  selector:
    matchLabels:
      app: theia-next
  replicas: 1
  template:
    metadata:
      labels:
        app: theia-next
    spec:
      containers:
      - image: francoisvans/theia-docker-test
        imagePullPolicy: Always
        name: theia-next
        ports:
        - containerPort: 3000

این پیکربندی یک فضای نام، یک استقرار، یک سرویس و یک ورودی را تعریف می کند. فضای نام تیا نامیده می شود و شامل تمام اشیای Kubernetes مربوط به Eclipse Theia است که از بقیه خوشه جدا شده اند. استقرار شامل یک نمونه از تصویر Theia Docker است که پورت 3000 روی کانتینر قرار دارد. این سرویس به دنبال Deployment می‌گردد و پورت کانتینر را به پورت HTTP معمولی 80 تغییر می‌دهد و به Eclipse Theia اجازه دسترسی درون خوشه‌ای را می‌دهد.

Ingress حاوی قانونی برای ارائه سرویس در پورت 80 به صورت خارجی در دامنه مورد نظر شما است. در حاشیه نویسی آن، شما مشخص می کنید که Nginx Ingress Controller باید برای پردازش درخواست استفاده شود. به یاد داشته باشید که دامنه مورد نظر خود را که به Load Balancer کلاستر خود اشاره کرده اید جایگزین theia.your_domain کنید، سپس فایل را ذخیره کرده و ببندید.

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

سپس با اجرای دستور زیر پیکربندی را در Kubernetes ایجاد کنید:

kubectl apply -f eclipse-theia.yaml

خروجی شبیه به این خواهد بود:

 

Output

namespace/theia created
ingress.networking.k8s.io/theia-next created
service/theia-next created
deployment.apps/theia-next created

می‌توانید با اجرای زیر، ایجاد غلاف Eclipse Theia را تماشا کنید:

kubectl get pods -w -n theia

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

 

Output

NAME                          READY   STATUS    RESTARTS   AGE
theia-next-6f6b98dd4f-qknhb   1/1     Running   0          2m30s

پس از مدتی، وضعیت به RUNNING تبدیل می‌شود، به این معنی که Eclipse Theia را با موفقیت در کلاستر خود نصب کرده‌اید.

در مرورگر خود به دامنه خود بروید. رابط کاربری گرافیکی ویرایشگر Eclipse Theia پیش‌فرض را خواهید دید:

 

شما Eclipse Theia را در خوشه vpsgol Kubernetes خود مستقر کرده اید و با یک Ingress آن را در دامنه مورد نظر خود قرار داده اید. در مرحله بعد، با فعال کردن احراز هویت ورود، دسترسی به استقرار Eclipse Theia خود را ایمن خواهید کرد.

مرحله 2 – فعال کردن احراز هویت ورود به سیستم برای دامنه شما

در این مرحله، احراز هویت نام کاربری و رمز عبور را برای استقرار Eclipse Theia خود فعال می‌کنید. ابتدا با تنظیم لیستی از ترکیبات ورود معتبر با استفاده از ابزار htpasswd به این مهم دست خواهید یافت. سپس، یک راز Kubernetes حاوی آن لیست ایجاد می‌کنید و Ingress را برای احراز هویت بازدیدکنندگان بر اساس آن پیکربندی می‌کنید. در پایان، دامنه شما تنها زمانی قابل دسترسی خواهد بود که بازدیدکننده یک ترکیب نام کاربری و رمز عبور معتبر وارد کند. این امر از دسترسی مهمانان و سایر بازدیدکنندگان ناخواسته به Eclipse Theia جلوگیری می کند.

ابزار htpasswd از وب سرور آپاچی می آید و برای ایجاد فایل هایی استفاده می شود که لیست هایی از ترکیبات ورود را ذخیره می کنند. فرمت فایل‌های htpasswd یک نام کاربری: ترکیب hashed_password در هر خط است، که فرمتی است که Nginx Ingress Controller انتظار دارد لیست با آن مطابقت داشته باشد.

ابتدا حافظه پنهان بسته منیجر را به روز کنید:

sudo apt update

سپس htpasswd را با اجرای دستور زیر بر روی سیستم خود نصب کنید:

sudo apt install apache2-utils -y

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

touch auth

این فایل باید auth نامیده شود زیرا کنترلر ورودی Nginx انتظار دارد که رمز حاوی کلیدی به نام data.auth باشد. اگر از دست رفته باشد، کنترل‌کننده وضعیت HTTP 503 Service Unavailable را برمی‌گرداند.

با اجرای دستور زیر یک ترکیب نام کاربری و رمز عبور به aut اضافه کنید:

htpasswd auth username

به یاد داشته باشید که نام کاربری مورد نظر خود را جایگزین نام کاربری کنید. از شما یک رمز عبور درخواست می شود و این ترکیب به فایل auth اضافه می شود. می توانید این دستور را برای هر تعداد کاربر که می خواهید اضافه کنید تکرار کنید.

پس از اتمام کار، با اجرای دستور زیر یک راز جدید در Kubernetes با محتویات فایل ایجاد کنید:

kubectl create secret generic theia-basic-auth –from-file=auth -n theia

شما می توانید راز را با:

kubectl get secret theia-basic-auth -o yaml -n theia

خروجی به صورت زیر خواهد بود:

 

Output

apiVersion: v1
data:
  auth: ...
kind: Secret
metadata:
  creationTimestamp: "2021-12-31T17:16:29Z"
  name: theia-basic-auth
  namespace: theia
  resourceVersion: "32437"
  uid: 47461e23-e281-411b-acfd-cea82fcde41b
type: Opaque

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

nano eclipse-theia.yaml

خطوط هایلایت شده را به فایل خود اضافه کنید:

eclipse-theia.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: theia
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: theia-next
  namespace: theia
  annotations:
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: theia-basic-auth
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - Eclipse Theia'
spec:
  ingressClassName: nginx
  rules:
  - host: theia.your_domain
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: theia-next
            port:
              number: 80
...

ابتدا در حاشیه نویسی auth-type مشخص می کنید که نوع احراز هویت اولیه است. این بدان معنی است که Nginx از کاربر می خواهد که نام کاربری و رمز عبور را وارد کند. سپس، در auth-secret، مشخص می‌کنید که راز حاوی لیست ترکیبات معتبر theia-basic-auth است که به تازگی ایجاد کرده‌اید. حاشیه نویسی قلمرو اعتبار باقی مانده پیامی را مشخص می کند که به عنوان توضیحی در مورد اینکه چرا احراز هویت لازم است به کاربر نشان داده می شود. می توانید پیام موجود در این قسمت را به دلخواه تغییر دهید.

ذخیره کنید و فایل را ببندید.

برای انتشار تغییرات در کلاستر خود، دستور زیر را اجرا کنید:

kubectl apply -f eclipse-theia.yaml

خروجی را خواهید دید:

 

Output

namespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged

در مرورگر خود به دامنه خود بروید، جایی که اکنون از شما خواسته می شود وارد شوید.

شما احراز هویت اولیه ورود به سیستم را در Ingress خود با پیکربندی آن برای استفاده از رمز حاوی ترکیب نام کاربری و رمز عبور هش شده فعال کرده اید. در مرحله بعدی، با افزودن گواهی‌های TLS، دسترسی بیشتری را ایمن می‌کنید تا ترافیک بین شما و استقرار Eclipse Theia رمزگذاری شده باقی بماند.

مرحله 3 – اعمال مجوزهای HTTPS Let’s Encrypt

در مرحله بعد، نصب Eclipse Theia خود را با اعمال گواهینامه های Let’s Encrypt در Ingress خود، که Cert-Manager به طور خودکار ارائه می کند، ایمن می کنید. پس از تکمیل این مرحله، نصب Eclipse Theia شما از طریق HTTPS قابل دسترسی خواهد بود.

برای ویرایش eclipse-theia.yaml را باز کنید:

nano eclipse-theia.yaml

خطوط هایلایت شده را به فایل خود اضافه کنید، مطمئن شوید که دامنه جای جای خود را جایگزین کنید:

eclipse-theia.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: theia
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: theia-next
  namespace: theia
  annotations:
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: theia-basic-auth
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - Eclipse Theia'
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  tls:
  - hosts:
    - theia.your_domain
    secretName: theia-prod
  ingressClassName: nginx
  rules:
  - host: theia.your_domain
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: theia-next
            port:
              number: 80
...

ابتدا، letsencrypt-prod ClusterIssuer را که ایجاد کرده اید به عنوان بخشی از پیش نیازها به عنوان صادرکننده مشخص می کنید که برای ارائه گواهینامه برای این ورود استفاده می شود. سپس، در بخش tls، دامنه دقیقی را که باید ایمن شود، و همچنین نامی برای رازی که این گواهینامه ها را نگه می دارد، مشخص می کنید.

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

با اجرای دستور زیر تغییرات را در کلاستر خود اعمال کنید:

kubectl apply -f eclipse-theia.yaml

خروجی به صورت زیر خواهد بود:

 

Output

namespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged

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

kubectl describe certificate theia-prod -n theia

وقتی تمام شد، انتهای خروجی شبیه به این خواهد بود:

 

Output

...
Events:
  Type    Reason        Age   From          Message
  ----    ------        ----  ----          -------
  Normal  GeneratedKey  42m   cert-manager  Generated a new private key
  Normal  Requested     42m   cert-manager  Created new CertificateRequest resource "theia-prod-3785736528"
  Normal  Issued        42m   cert-manager  Certificate issued successfully

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

شما Ingress را برای استفاده از گواهی‌های Let’s Encrypt پیکربندی کرده‌اید، بنابراین استقرار Eclipse Theia را ایمن‌تر می‌کنید. اکنون می توانید رابط کاربری پیش فرض Eclipse Theia را بررسی کنید.

مرحله 4 – استفاده از رابط Eclipse Theia

در این بخش، برخی از ویژگی های رابط Eclipse Theia را بررسی خواهید کرد.

در سمت چپ IDE، یک ردیف عمودی از چهار دکمه وجود دارد که متداول‌ترین ویژگی‌های مورد استفاده را در یک پانل کناری باز می‌کند.

این نوار قابل تنظیم است، بنابراین می توانید این نماها را به ترتیب دیگری منتقل کنید یا آنها را از نوار حذف کنید. به طور پیش فرض، اولین نمای پانل Explorer را باز می کند که ناوبری درخت مانند ساختار پروژه را ارائه می دهد. می‌توانید پوشه‌ها و فایل‌های خود را در اینجا مدیریت کنید—در صورت لزوم آنها را ایجاد، حذف، جابجا کنید و نام آنها را تغییر دهید.

پس از ایجاد یک فایل جدید از طریق منوی File، یک فایل خالی را خواهید دید که در یک تب جدید باز می شود. پس از ذخیره، می توانید نام فایل را در پانل کناری Explorer مشاهده کنید. برای ایجاد پوشه، روی نوار کناری Explorer راست کلیک کرده و روی New Folder کلیک کنید. می‌توانید یک پوشه را با کلیک کردن روی نام آن و همچنین کشیدن و رها کردن فایل‌ها و پوشه‌ها به قسمت‌های بالای سلسله مراتب گسترش دهید تا آنها را به مکان جدیدی منتقل کنید.

گزینه بعدی دسترسی به قابلیت جستجو و جایگزینی را فراهم می کند. به دنبال آن، مورد بعدی نمایی از سیستم های کنترل منبعی را که ممکن است از آنها استفاده می کنید، مانند Git ارائه می دهد.

نمای بعدی گزینه debugger است که تمام اقدامات رایج برای رفع اشکال در پنل را ارائه می دهد. می توانید پیکربندی های اشکال زدایی را در فایل launch.json ذخیره کنید.

گزینه نهایی به شما امکان می دهد برنامه های افزودنی را مشاهده و نصب کنید:

بخش مرکزی رابط کاربری گرافیکی ویرایشگر شما است که می توانید آن را با برگه هایی برای ویرایش کد خود جدا کنید. می توانید نمای ویرایش خود را به یک سیستم شبکه ای یا به فایل های کنار هم تغییر دهید. مانند همه IDE های مدرن، Eclipse Theia از برجسته سازی نحو برای کد شما پشتیبانی می کند.

بخش مرکزی رابط کاربری گرافیکی ویرایشگر شما است که می توانید آن را با برگه هایی برای ویرایش کد خود جدا کنید. می توانید نمای ویرایش خود را به یک سیستم شبکه ای یا به فایل های کنار هم تغییر دهید. مانند همه IDE های مدرن، Eclipse Theia از برجسته سازی نحو برای کد شما پشتیبانی می کند.

اگر می خواهید استقرار Eclipse Theia را در کلاستر خود از بین ببرید، دستور زیر را اجرا کنید:

kubectl delete -f eclipse-theia.yaml

شما یک نمای کلی سطح بالا از رابط Eclipse Theia را بررسی کرده اید و برخی از متداول ترین ویژگی های مورد استفاده را مرور کرده اید.

نتیجه

اکنون Eclipse Theia، یک IDE ابری همه کاره، را روی خوشه vpsgol Kubernetes خود نصب کرده اید. شما آن را با یک گواهی رایگان Let’s Encrypt TLS ایمن کرده اید و نمونه ای را برای نیاز به ورود از بازدیدکننده تنظیم کرده اید. می توانید روی کد منبع و اسناد خود به صورت جداگانه کار کنید یا با تیم خود همکاری کنید.

 

 

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

 

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

 

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

 

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

 

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

 

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

 

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

برچسب‌ها:ایجاد سرور مجازیخرید سرور مجازیخرید سرور مجازی فرانسهراه اندازی سرور مجازیسرور مجازینحوه راه اندازی پلتفرم Eclipse Theia Cloud IDEنصب Eclipse Theia

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه استایل دادن به عناصر HTML با حاشیه ها، سایه ها و خطوط در CSS

ورود به سایت

معرفی

کار با سایه‌ها، حاشیه‌ها و خطوط کلی یکی از اجزای کلیدی توسعه وب است و می‌تواند تعریف بصری پیرامون عناصر HTML و آیتم‌های متنی ارائه دهد. ظاهر حاشیه ها و سایه ها را می توان از طریق پنج ویژگی اصلی CSS دستکاری کرد: border، border-radius، box-shadow، text-shadow و outline. سایه ها عمق را فراهم می کنند و به عناصر کمک می کنند تا برجسته شوند، در حالی که ویژگی های حاشیه می توانند عملکردهای بصری مختلفی را انجام دهند، از ایجاد یک تقسیم کننده خطی بین محتوا تا تعریف فضای یک شبکه. ویژگی border-radius گوشه های گردی را روی جعبه ها ایجاد می کند و حتی می تواند یک شکل دایره ای ایجاد کند. در نهایت، outline یک ویژگی است که اغلب نادیده گرفته می شود که بسیاری از عملکردهای مشابه ویژگی مرزی را بدون ایجاد اختلال در جریان محتوا ارائه می دهد.

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

پیش نیازها

  • درک درستی از ویژگی‌های آبشار و ویژگی‌های CSS، که می‌توانید با خواندن نحوه اعمال سبک‌های CSS در HTML با Cascade و Specificity به آن دست پیدا کنید.
  • آشنایی با انتخابگرهای نوع، انتخابگرهای ترکیب‌کننده و گروه‌های انتخابگر، که می‌توانید در نحوه انتخاب عناصر HTML به سبک با CSS بیابید.
  • آشنایی با خواص رنگ در CSS برای اطلاعات بیشتر، نحوه استفاده از مقادیر رنگ با CSS را ببینید.
    آشنایی با گرادیان های CSS با ویژگی های پس زمینه. نحوه اعمال سبک‌های پس‌زمینه به عناصر HTML با CSS را بررسی کنید تا تجربه ایجاد پس‌زمینه گرادیان را به دست آورید.
  • یک فایل HTML خالی که در دستگاه محلی شما به عنوان index.html ذخیره شده است که می توانید از ویرایشگر متن و مرورگر وب انتخابی خود به آن دسترسی داشته باشید. برای شروع، آموزش نحوه تنظیم پروژه HTML خود را بررسی کنید و نحوه استفاده و درک عناصر HTML را برای دستورالعمل‌هایی در مورد نحوه مشاهده HTML خود در مرورگر خود دنبال کنید. اگر در HTML تازه کار هستید، کل نحوه ساخت یک وب سایت در سری HTML را امتحان کنید.

راه اندازی پایه HTML و CSS

در این بخش، پایه HTML را برای تمام سبک های بصری که در طول آموزش می نویسید، تنظیم می کنید. شما همچنین فایل styles.css خود را ایجاد کرده و سبک هایی را اضافه می کنید که طرح بندی محتوا را تنظیم می کند.

با باز کردن index.html در ویرایشگر متن خود شروع کنید. سپس HTML زیر را به فایل اضافه کنید:

index.html

<!doctype html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>Travel Disclosure - Destination: Moon</title>
    <link href="styles.css" rel="stylesheet" />
  </head>
  <body>
  </body>
</html>

تنظیمات صفحه زیادی در عنصر <head> تعریف شده است. اولین عنصر <meta> مجموعه کاراکتری را برای استفاده از متن تعریف می کند. به این ترتیب اکثر کاراکترهای خاص، مانند علائم تاکیدی، بدون کدهای HTML خاص ارائه می شوند. عنصر دوم <meta> به مرورگرها و به ویژه مرورگرهای تلفن همراه می گوید که چگونه با عرض محتوا رفتار کنند. در غیر این صورت، مرورگر عرض دسکتاپ 960 پیکسلی را شبیه سازی می کند. عنصر <title> عنوان صفحه را در اختیار مرورگر قرار می دهد. عنصر <link> فایل CSS را بارگیری می کند که در آن استایل های خود را در طول این آموزش می نویسید.

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

در ویرایشگر متن خود به index.html برگردید و HTML برجسته شده را از بلوک کد زیر اضافه کنید:

index.html

<!doctype html>
<html>
  ...
  <body>
    <section class="disclosure-alert">
      <header class="disclosure-header">
        <h2  class="disclosure-title"><em>Destination: Moon</em> Travel Disclosure</h2>
      </header>
      <div class="disclosure-content">
        <p>Although space travel is routine practice, there are many unknown possibilities that any traveller must be aware of before traveling with <em>Destination: Moon</em>. Agreeing to this disclosure of knowns is required prior to purchase of tickets with <em>Destination: Moon</em>. PLEASE, READ AND AGREE TO THE FOLLOWING DISCLOSURE OF TRAVEL UNKNOWNS BEFORE PROCEEDING TO PURCHASE.</p>
        <div class="legal-contents">
          <p>Effect of Termination. Upon termination, You agree not to use it under the terms of Sections 4(a) through 4(e) for that Covered Code, or any third party. Description of Modifications.<p>
          <p>You must make sure that you know you can do these things. To make sure the requirements of this Agreement. REQUIREMENTS A Contributor may participate in any way. Notwithstanding the foregoing, if applicable law or agreed to in writing, the Copyright Holder, but only to the terms applicable to Covered Code. Inability to Comply Due to Statute or Regulation.</p>
          <p>If it is impossible for You to the Recipient retains any such Additional Terms. Versions of This License. If you are re-using, b) a hyperlink (where possible) or URL to the terms of Sections 4(a) through 4(e) for that Work shall terminate if it fails to comply with the exception of content that is granting the License. License Terms 1.</p>
          <p>Grant of Patent Infringement. If you have knowledge of patent infringement litigation, then the only applicable Base Interpreter is a "commercial item" as defined in 48 C.F.R. Consistent with 48 C.F.R.</p>
          <p>U.S. Government End Users acquire Covered Code (Original Code and/or as part of a Larger Work; and b) allow the Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Distributor in writing of such Contributor, if any, to grant more extensive warranty protection to some or all of these conditions: (a) You must make it clear that any Modifications made by such Respondent, or (ii) withdraw Your litigation claim is resolved (such as Wikimedia-internal copying), it is Recipient's responsibility to secure any other exploitation. Program, and in any of the provisions set forth in Section 4(b), you shall terminate if it fails to comply with.</p>
          <p>Please note that these licenses do allow commercial uses of your company or organization, to others outside of this License Agreement), provided that You meet the following terms which differ from this License) and (b) You must duplicate the notice in Exhibit A in each changed file stating how and when you changed the files and the definitions are repeated for your past or future use of the Original Code; or 3) for infringements caused by: i) third party against the drafter will not be used as a handle): 1895.22/1011. This Agreement shall be held by the terms of this agreement. If any provision of this license which gives you legal permission to modify NetHack, or otherwise using this software in source and binary forms, with or without modification in printed materials or in related documentation, stating that you provide a service, including but not limited to the terms under which you distribute, wherever you describe the origin or ownership of such termination, the Recipient a non-exclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 1.6b1 or any part of Derivative Works. If You initiate litigation by asserting a patent infringement against You in that instance.</p>
          <p>Effect of New York and the like. While this license document the following disclaimer in the Work contain all the conditions listed in Clause 6 above, concerning changes from the Work. If you created a Modification, you may at your option offer warranty protection to some or all of the Licensed Program as a product of your Modifications available to others outside of this License.</p>
          <p>Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted to Licensor for inclusion in the documentation and/or other rights consistent with this program; if not, write to the modified files to carry prominent notices stating that You distribute, all copyright, patent, trademark, and attribution notices from the Public Domain or from the Original Code; 2) separate from the Public Domain or from the Work, you may distribute a Compiled Work on their system exactly as it is being maintained, then ask the Current Maintainer to update their communication data within one month. If the program is free software; you can change the License will not have to defend and indemnify every other Contributor to control, and cooperate with the Source Code version of the Licensed Program, or any Contributor.</p>
        </div>
        <div class="button-group">
          <a href="#" class="button button-primary">
            Agree
          </a>
          <a href="#" class="button button-secondary">
            Disagree
          </a>
        </div>
      </div>
    </section>
  </body>
</html>

تغییرات خود را در index.html ذخیره کنید و سپس مرورگر وب خود را باز کنید. آیتم منوی File را انتخاب کنید و سپس گزینه Open را انتخاب کنید و فایل index.html خود را در مرورگر بارگذاری کنید. تصویر زیر نحوه نمایش این HTML در مرورگر را نشان می دهد:

یک فایل جدید به نام styles.css در همان دایرکتوری index.html ایجاد کنید، سپس آن را در ویرایشگر متن خود باز کنید. این فایل شامل تمام سبک های استفاده شده در طول آموزش است. اولین مجموعه از سبک ها یک زیبایی شناسی کلی را اعمال می کند که شما از آن خواهید ساخت. CSS را از بلوک کد زیر در فایل styles.css خود اعمال کنید:

styles.css

html, body {
  height: 100%;
}

body {
  display: flex;
  margin: 0;
  font: 100% / 1.5 sans-serif;
  background: url("images/moon-bg.jpg") no-repeat fixed center / cover black;
}
.disclosure-alert {
  background-color: hsl(0, 0%, 95%);
  width: 85%;
  max-width: 48rem;
  margin: auto;
  color: hsl(0, 0%, 20%);
}
.disclosure-header {
  background: linear-gradient(hsl(300, 50%, 20%), hsl(300, 50%, 10%));
  padding: 2rem 0.5rem;
  text-align: center;
  color: hsl(300, 50%, 95%);
}
.disclosure-title {
  margin: 0;
  font-size: 2rem;
  line-height: 1.25;
}
.disclosure-content {
  margin: 1.5rem;
}
.legal-contents {
  margin-top: 1.5rem;
  background-color: white;
  padding: 0.75rem;
  font-family: "Times New Roman", serif;
}
.button-group {
  margin-top: 1.5rem;
  display: flex;
  justify-content: center;
}
.button {
  display: inline-block;
  text-align: center;
  padding: 0.5rem 1rem;
  background: black;
  text-decoration: none;
  color: white;
  width: 50%;
  max-width: 8rem;
}
.button + .button {
  margin-left: 1.5rem;
}
.button-primary {
  background: linear-gradient(to bottom, hsl(200, 100%, 30%), hsl(200, 100%, 20%));
}
.button-primary:hover {
  background: linear-gradient(to bottom, hsl(200, 100%, 25%), hsl(200, 100%, 15%));
}
.button-secondary {
  background: linear-gradient(to bottom, hsl(200, 10%, 30%), hsl(200, 10%, 20%));
}
.button-secondary:hover {
  background: linear-gradient(to bottom, hsl(200, 10%, 25%), hsl(200, 10%, 15%));
}

استایل موجود در این فایل، طرح‌بندی اولیه صفحه را با افشای قانونی متمرکز، دکمه‌هایی با فاصله و رندر با گرادیان خطی، و تصویری از ماه به‌عنوان پس‌زمینه تنظیم می‌کند. قبل از ادامه، حتما فایل styles.css را ذخیره کنید.

برای نمایش تصویر پیوند شده در ویژگی پس‌زمینه مجموعه قوانین بدن، به تصویر پس‌زمینه ماه نیاز دارید. ابتدا یک پوشه images در همان پوشه فایل index.html خود بسازید:

mkdir images

از مرورگر خود برای دانلود این فایل در فهرست تصاویر جدید خود استفاده کنید یا از دستور curl زیر برای دانلود آن از طریق خط فرمان استفاده کنید:

curl -sL https://assets.digitalocean.com/articles/68102/moon-bg.jpg -o images/moon-bg.jpg

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

طول محتوا باعث ایجاد یک صفحه بسیار طولانی می شود. از آنجایی که این به عنوان کپی قانونی در نظر گرفته شده است، محتوای .legal-contents می تواند به فضایی قابل پیمایش تبدیل شود. این کار از طریق ترکیبی از ویژگی های ارتفاع، حداکثر ارتفاع و سرریز انجام می شود.

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

styles.css

...
.legal-contents {
  height: 50vh;
  max-height: 20rem;
  overflow: auto;
  margin-top: 1.5rem;
  background-color: white;
  padding: 0.75rem;
  font-family: "Times New Roman", serif;
}
...

در این کد، یک ویژگی height را در بلوک انتخابگر محتوای قانونی ایجاد کردید، سپس مقدار آن را روی 50vh تنظیم کردید، یعنی 50 درصد از ارتفاع پنجره viewport. شما همچنین یک ویژگی max-height ایجاد کردید که مقدار آن روی 20rem تنظیم شده است. در نهایت، یک ویژگی سرریز با مقدار خودکار اضافه کردید، که در صورت سرریز شدن محتوا از ظرف، نوار اسکرول ایجاد می‌کند.

این موارد اضافه شده را در فایل styles.css خود ذخیره کنید، سپس به مرورگر خود بازگردید و index.html را بازخوانی کنید. ارتفاع کامل صفحه و ظرف اصلی متراکم شده است. اکنون، همانطور که در انیمیشن زیر نشان داده شده است، کپی Legal Ipsum را می توان در داخل ظرف تعیین شده خود پیمایش کرد:

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

با استفاده از مرز Property

ویژگی border یکی از روش های اصلی اعمال سبک ها در لبه های عناصر است. یک خط به هر رنگی در محیط بیرونی ظرف اعمال می کند. ارزش ملک از سه جزء تشکیل شده است: ضخامت، سبک و رنگ. ویژگی border این مقادیر را برای هر چهار طرف یک عنصر اعمال می کند. می‌توانید تک تک طرف‌ها را با تغییرات جهت حاشیه مشخص کنید، مانند ویژگی border-top، که فقط برای بالای یک عنصر اعمال می‌شود.

برای شروع کار با ویژگی border، styles.css را در ویرایشگر متن خود باز کنید و به انتخابگر کلاس .disclosure-alert بروید. در بلوک انتخابگر، همانطور که در بلوک کد زیر مشخص شده است، یک ویژگی مرزی با مقدار 1px solid hsl (0، 0٪، 0%) اضافه کنید:

styles.css

...
.disclosure-alert {
  background-color: hsl(0, 0%, 95%);
  width: 85%;
  max-width: 48rem;
  margin: auto;
  color: hsl(0, 0%, 20%);
  border: 1px solid hsl(0, 0%, 0%);
}
...

این ویژگی مرزی یک ویژگی مختصر است، یعنی مقدار آن ترکیبی از مقادیر دیگر است. در این مورد، ضخامت 1px مقدار خاصیت عرض حاشیه را نشان می دهد. این مقدار می تواند هر مقدار عددی با یک واحد همراه با چند مقدار نامگذاری شده باشد: نازک، متوسط و ضخیم. در مرحله بعد، solid مقدار به سبک مرزی است که نحوه ظاهر شدن خط اطراف عنصر را مشخص می کند، در این مورد به عنوان یک خط پیوسته و پیوسته. سایر مقادیر برای سبک حاشیه عبارتند از: نقطه چین، چین، دوتایی و هیچ. مقدار نهایی خاصیت border-color را مشخص می کند که می تواند هر مقدار رنگ معتبری باشد.

تغییرات خود را در styles.css ذخیره کنید، سپس index.html را در یک مرورگر وب باز کنید. محفظه محتوای اصلی اکنون دارای یک حاشیه سیاه نازک در اطراف خود خواهد بود، که بیشتر مشهود است زیرا تصویر پس‌زمینه ماه را پوشانده است. تصویر زیر نحوه نمایان شدن حاشیه در قسمت محتوای اصلی را نشان می دهد:

 

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

در ویرایشگر متن خود به styles.css برگردید، سپس به بلوک انتخابگر کلاس .disclosure-header بروید. خطی-gradient() در ویژگی پس زمینه یک گرادیان بنفش تیره را تعریف می کند که به یک سایه کمی تیره تر تبدیل می شود. برای ایجاد عمق بیشتر از گرادیان به تنهایی، حاشیه را با کد زیر تنظیم کنید:

 

styles.css

 
...
.disclosure-header {
  background: linear-gradient(hsl(300, 50%, 20%), hsl(300, 50%, 10%));
  padding: 2rem 0.5rem;
  text-align: center;
  color: hsl(300, 50%, 95%);
  border-top: 1px solid hsl(300, 50%, 35%);
  border-bottom: 1px solid hsl(300, 50%, 5%);
}
...
 

شما یک ویژگی border-top با مقدار 1px solid hsl (300، 50٪، 35%) اضافه کردید، که کمی سبکتر از مقدار گرادیان شروع است. سپس، یک ویژگی حاشیه-پایین را با مقدار 1px solid hsl (300، 50٪، 5%) ایجاد کردید، که کمی تیره تر از انتهای گرادیان است.

تغییرات خود را در styles.css ذخیره کنید، سپس به مرورگر بازگردید و index.html را بازخوانی کنید. پس‌زمینه هدر بنفش اکنون کمی برجسته از رنگ بنفش در بالای سرصفحه و سایه‌ای جزئی در امتداد پایین دارد. تصویر زیر نشان می دهد که چگونه در مرورگر ظاهر می شود:

از آنجایی که border یک ویژگی مختصر است، می توانید ویژگی های longhand اضافی اضافه کنید. یک حاشیه می تواند اعمال شود که عرض و سبک دو کلاس دکمه را مشخص می کند، در حالی که یک رنگ حاشیه می تواند روی کلاس های جداگانه اعمال شود.

برای شروع کار با border-color، styles.css را در ویرایشگر متن خود باز کنید. در بلوک انتخاب کننده برای دکمه، یک ویژگی حاشیه با مقدار 1px جامد اضافه کنید، سپس یک ویژگی border-color برای .button-primary و .button-secondary اضافه کنید:

styles.css

...
.button {
  ...
  border: 1px solid;
}
...
.button-primary {
  background: linear-gradient(to bottom, hsl(200, 100%, 30%), hsl(200, 100%, 20%));
  border-color: hsl(200, 100%, 15%);
}
.button-primary:hover {
  background: linear-gradient(to bottom, hsl(200, 100%, 25%), hsl(200, 100%, 15%));
  border-color: hsl(200, 100%, 10%);
}
.button-secondary {
  background: linear-gradient(to bottom, hsl(200, 10%, 30%), hsl(200, 10%, 20%));
  border-color: hsl(200, 10%, 15%);
}
.button-secondary:hover {
  background: linear-gradient(to bottom, hsl(200, 10%, 25%), hsl(200, 10%, 15%));
  border-color: hsl(200, 10%, 10%);
}

این یک حاشیه به سبک جامد با عرض 1 پیکسل برای هر دو دکمه تعریف می کند. سپس، یک ویژگی حاشیه رنگ برای سفارشی کردن رنگ‌ها برای انتخابگرهای حالت .button-primary، .button-secondary و مرتبط با آنها اضافه کردید.

این تغییرات را در styles.css ذخیره کنید، سپس صفحه را در مرورگر وب خود بازخوانی کنید. همانطور که در تصویر زیر نشان داده شده است، دکمه‌ها اکنون با یک حاشیه رنگ تیره‌تر منطبق، تعریف کمی دارند:

در نهایت، هر جهت مرزی نیز مختصری است. این به این معنی است که -width، -style و -color هر کدام می‌توانند برای یک ویژگی جهت اعمال شوند. برای مثال، ویژگی longhand border-right-color فقط یک رنگ را در حاشیه سمت راست اعمال می کند.

برای کار با این ویژگی های حاشیه longhand جهت دار، در ویرایشگر متن خود به styles.css بازگردید. به بلوک انتخابگر .legal-contents بروید و عرض و سبک را برای هر چهار طرف حاشیه تنظیم کنید، سپس رنگ‌های هر طرف را سفارشی کنید:

styles.css

...
.legal-contents {
  height: 50vh;
  max-height: 20rem;
  margin-top: 1.5rem;
  overflow: auto;
  background-color: white;
  border: 1px solid;
  border-top-color: hsl(0, 0%, 65%);
  border-bottom-color: hsl(0, 0%, 100%);
  border-right-color: hsl(0, 0%, 80%);
  border-left-color: hsl(0, 0%, 80%);
  padding: 0.75rem;
  font-family: "Times New Roman", serif;
}
...

در این کد، حاشیه: 1px جامد را به انتهای فایل اضافه کردید. پس از آن، ویژگی های حاشیه-بالا-رنگ، رنگ حاشیه-پایین، رنگ حاشیه-راست-رنگ و رنگ حاشیه-چپ را نیز ایجاد کردید. برای مقادیر، از مقادیر مختلف hsl() برای خاکستری استفاده کردید.

تغییرات خود را در styles.css ذخیره کنید، سپس صفحه را دوباره در مرورگر بارگیری کنید. ظرف محتوی قابل پیمایش اکنون دارای یک حاشیه خاکستری تیره در امتداد بالا، خاکستری کمی روشن تر در طرفین و یک حاشیه سفید در پایین است. این برای این است که این تصور را ایجاد کنیم که محتوا در پشت پس‌زمینه خاکستری روشن قرار می‌گیرد و باعث ایجاد یک اثر می‌شود که برجسته‌سازی در لبه پایینی است، همانطور که در تصویر زیر نشان داده شده است:

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

اعمال یکborder-radius

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

برای شروع کار با ویژگی border-radius، styles.css را در ویرایشگر متن خود باز کنید. به بلوک انتخابگر .disclosure-alert و ویژگی border-radius بروید. سپس، مقدار را روی 1.5rem قرار دهید، که این مقدار را در هر چهار گوشه ویژگی اعمال می کند. CSS هایلایت شده در بلوک کد زیر نشان می دهد که چگونه این نوشته شده است:

styles.css

...
.disclosure-alert {
  ...
  border: 1px solid hsl(0, 0%, 0%);
  border-radius: 1.5rem;
}
...

این افزونه را در styles.css ذخیره کنید و سپس index.html را در یک مرورگر وب باز کنید یا به‌روزرسانی کنید. فقط دو گوشه پایینی گرد به نظر می رسد، در حالی که دو گوشه بالایی لبه های نوک تیز باقی می مانند. تصویر زیر نشان می دهد که چگونه این در مرورگر رندر می شود:

 

دلیل اینکه فقط دو گوشه گرد قابل مشاهده است به دلیل نحوه تعامل عناصر نزولی با یکدیگر در وب است. مرورگر در نمایان نگه داشتن محتوا اشتباه می کند. .disclosure-alert دارای چهار گوشه گرد است، اما از آنجایی که .disclosure-header داخل عنصر است و گوشه‌های گرد ندارد، بر گوشه‌های گرد همپوشانی دارد. یک راه حل سریع اضافه کردن سرریز: مخفی به .disclosure-alert است که باعث می‌شود کانتینر هر ظروف و محتوای نزولی را حذف کند. با این حال، این رویکرد می تواند منجر به ناخوانا یا نامرئی شدن محتوای ضروری شود. یک تمرین بهتر این است که یک شعاع مرزی برای کلاس .disclosure-header اعمال کنید تا با منحنی گوشه اجداد خود مطابقت داشته باشد.

برای تنظیم گوشه های همپوشانی، به styles.css در ویرایشگر متن خود بازگردید. به بلوک انتخابگر .disclosure-header بروید و ویژگی border-radius را اضافه کنید. از آنجایی که فقط دو گوشه بالا نیاز به تنظیم دارند، مقدار 1.5rem 1.5rem 0 0 خواهد بود:

styles.css

...
.disclosure-header {
  ...
  border-top: 1px solid hsl(300, 50%, 35%);
  border-bottom: 1px solid hsl(300, 50%, 5%);
  border-radius: 1.5rem 1.5rem 0 0;
}
...

فرمت توسعه‌یافته این مقدار یک منحنی 1.5 میلی‌متری را در گوشه‌های بالا-چپ و بالا-راست اعمال می‌کند.

تغییرات خود را در styles.css ذخیره کنید و index.html را در مرورگر بازخوانی کنید. هدر بنفش اکنون گوشه ای گرد دارد و ظرف اصلی را نمی پوشاند. یک مشکل جدید ظاهر شده است، همانطور که در تصویر بزرگنمایی شده زیر نشان داده شده است، زیرا یک برش سفید از ظرف اصلی از پشت سرصفحه بنفش به اوج می رسد:

گوشه های هر دو .disclosure-alert و .disclosure-header به اندازه 1.5rem هستند، اما عرض آنها تفاوت اندازه دارند. این تفاوت اندازه ناشی از حاشیه سمت چپ و راست عنصر .disclosure-alert است. از آنجایی که عرض حاشیه در هر دو طرف 1px است، تفاوت اندازه آن 2px یا 0.125rem است. برای مطابقت دادن منحنی ها، شعاع مرزی برای .disclosure-header باید 0.125 rem کوچکتر از آنچه در حال حاضر است باشد. همانطور که در بلوک کد زیر مشخص شده است، مقادیر حاشیه 1.5rem را به 1.375rem تغییر دهید:

styles.css

...
.disclosure-header {
  background: linear-gradient(hsl(300, 50%, 20%), hsl(300, 50%, 10%));
  padding: 2rem 0.5rem;
  text-align: center;
  color: hsl(300, 50%, 95%);
  border-top: 1px solid hsl(300, 50%, 35%);
  border-bottom: 1px solid hsl(300, 50%, 5%);
  border-radius: 1.375rem 1.375rem 0 0;
}
...

این تغییر را در styles.css ذخیره کنید و سپس صفحه را در مرورگر وب بازخوانی کنید. برش سفید اکنون از بین رفته است و منحنی های دو عنصر در مکان مناسب به هم می رسند. تصویر بزرگنمایی شده زیر نشان می‌دهد که این منحنی‌ها چگونه کنار هم قرار می‌گیرند:

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

برای ایجاد دکمه ای به شکل قرص، styles.css را در ویرایشگر متن خود باز کنید. در بلوک انتخابگر دکمه، ویژگی border-radius را اضافه کنید و سپس مقدار را روی 2rem قرار دهید. این عدد می‌تواند یک عدد دلخواه باشد تا زمانی که بزرگتر از ارتفاع محاسبه‌شده، ترکیبی از اندازه قلم، ارتفاع خط، لایه‌بندی و عرض حاشیه باشد که می‌تواند بر ارتفاع کلی یک عنصر تاثیر بگذارد. CSS هایلایت شده در بلوک کد زیر نشان می دهد که کجا باید این ویژگی را اضافه کرد:

styles.css

...
.button {
  ...
  border: 1px solid;
  border-radius: 2rem;
}
...

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

تغییرات خود را در styles.css ذخیره کنید، سپس به مرورگر بازگردید و index.html را بازخوانی کنید. این صفحه اکنون دو دکمه مستطیلی به شکل قرص را نمایش می دهد، همانطور که در تصویر زیر نشان داده شده است:

در سرتاسر این بخش، شما از ویژگی border-radius برای اعمال گوشه های گرد به چندین عنصر استفاده کردید، و متوجه شدید که یک border-radius مانع از خروج عناصر نزولی از فضای منحنی نمی شود. شما همچنین مقدار شعاع حاشیه را طوری تنظیم کردید که با عرض یک عنصر مطابقت داشته باشد، زمانی که چندین عنصر گرد روی هم قرار می گیرند. در بخش بعدی، از ویژگی text-shadow برای اعمال سایه های در حال پخش بر روی محتوای متن استفاده می کنید.

با استفاده از ویژگی text-shadow

اعمال سایه روی متن کاربردهای زیادی در توسعه روزمره وب دارد. سایه‌ها می‌توانند عمق، جلوه درخشش ایجاد کنند، یا در مکان‌هایی که ممکن است نادیده گرفته شوند، به برجسته‌تر شدن متن کمک کنند. در سرتاسر این بخش، text-shadow را به چندین عنصر برای ایجاد جلوه های بصری مختلف اعمال می کنید.

ویژگی text-shadow حداکثر از چهار مقدار تشکیل شده است: offset محور x، offset محور y، blur radius و color. به عنوان مثال، مقادیر می توانند به این شکل باشند: 2px 4px 10px قرمز. از این چهار مقدار، فقط مقادیر افست مورد نیاز است. رنگ سایه به طور پیش فرض رنگ متن است.

برای شروع کار با text-shadow، با ایجاد یک افکت درخشش در هدر شروع می‌کنید. styles.css را در ویرایشگر متن خود باز کنید و به انتخابگر کلاس .disclosure-header بروید. در بلوک انتخابگر، ویژگی text-shadow زیر را اضافه کنید:

styles.css

...
.disclosure-header {
  ...
  border-radius: 1.375rem 1.375rem 0 0;
  text-shadow: 0 0 0.375rem hsl(300, 50%, 50%);
}
...

جلوه درخشش به این معنی است که رنگ از هر لبه متن بیرون می‌آید، بنابراین مقادیر افست محور x و y در اینجا روی 0 تنظیم می‌شوند. شما تاری برای درخشش را روی 0.375 rem (معادل 6 پیکسل) تنظیم می‌کنید تا کمی ظریف باشد. هاله رنگ به متن در نهایت، مقدار رنگ کمی تیره تر از ویژگی رنگ تنظیم شد: hsl (300، 50٪، 50%).

این افزودنی را در فایل styles.css خود ذخیره کنید. بعد، index.html را در یک مرورگر وب باز کنید. متن عنوان پررنگ در پس‌زمینه گرادیان بنفش اکنون درخششی از بنفش میانی در اطراف خود دارد. تصویر زیر نحوه نمایش این افکت در مرورگر را نشان می دهد:

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

برای ایجاد یک جلوه برجسته، به styles.css در ویرایشگر متن خود بازگردید. افکت به دکمه های پایین ظرف اضافه می شود. برای انتخابگرهای .button-primary، .button-primary:hover، .button-secondary و .button-secondary:hover یک ویژگی text-shadow اضافه کنید. CSS هایلایت شده را در بلوک کد زیر برای مقادیر بررسی کنید:

styles.css

...
.button-primary {
  border: 1px solid hsl(200, 100%, 5%);
  background: linear-gradient(to bottom, hsl(200, 100%, 30%), hsl(200, 100%, 20%));
  text-shadow: 0 1px hsl(200, 100%, 50%),
               0 -1px hsl(200, 100%, 5%);
}
.button-primary:hover {
  border: 1px solid hsl(200, 100%, 0%);
  background: linear-gradient(to bottom, hsl(200, 100%, 25%), hsl(200, 100%, 15%));
  text-shadow: 0 1px hsl(200, 100%, 45%),
               0 -1px hsl(200, 100%, 0%);
}
.button-secondary {
  border: 1px solid hsl(200, 10%, 5%);
  background: linear-gradient(to bottom, hsl(200, 10%, 30%), hsl(200, 10%, 20%));
  text-shadow: 0 1px hsl(200, 10%, 50%),
               0 -1px hsl(200, 10%, 5%);
}
.button-secondary:hover {
  border: 1px solid hsl(200, 10%, 0%);
  background: linear-gradient(to bottom, hsl(200, 10%, 25%), hsl(200, 10%, 15%));
  text-shadow: 0 1px hsl(200, 10%, 45%),
               0 -1px hsl(200, 10%, 0%);
}

سایه اول یک برجسته روشن تر از پایین است. این کار با آفست 0 1px و سپس نسخه روشن‌تر رنگ‌های گرادیان پس‌زمینه انجام می‌شود. در مرحله بعد، سایه بالای متن را با آفست 0 -1 پیکسل ایجاد کردید، که سایه را 1 پیکسل به بالا می کشد و از تنوع تیره تری از رنگ های پس زمینه استفاده می کند.

این تغییرات را در styles.css ذخیره کنید، سپس صفحه را در مرورگر وب خود بازخوانی کنید. اکنون متن داخل دکمه‌ها دارای یک برجسته‌سازی جزئی در زیر متن و یک سایه کمی در بالای متن است. ترکیب این مقادیر متن-سایه افکت برجسته را همانطور که در تصویر زیر ارائه می شود ایجاد می کند:

در این بخش، ویژگی text-shadow را روی چند عنصر اعمال کردید. شما یک افکت درخشش روی هدر و یک جلوه برجسته با سایه های متعدد روی دکمه ها ایجاد کردید. در بخش بعدی، سایه هایی را با ویژگی box-shadow به عناصر HTML اعمال می کنید.

افزودن box-shadow به عناصر

همانطور که ویژگی text-shadow به محتوای متن اجازه می دهد سایه داشته باشد، ویژگی box-shadow نیز به عناصر و کانتینرها اجازه می دهد سایه داشته باشند. box-shadow دارای دو ویژگی اضافی است که در این بخش بررسی خواهید کرد، از جمله توانایی کنترل گسترش تاری و تنظیم سایه در داخل عنصر.

برای شروع کار با ویژگی box-shadow، styles.css را در ویرایشگر متن خود باز کنید. در بلوک انتخابگر .disclosure-alert، ویژگی box-shadow را اضافه کنید. درست مانند text-shadow، مقادیر افست محور x و y مورد نیاز است و اگر رنگی ارائه نشده باشد، از مقدار ویژگی رنگ استفاده می شود. برای اولین کادر سایه، offset ها را روی 0، blur را روی 0.5rem، و رنگ را روی یک hsl تیره (300، 40٪، 5%) تنظیم کنید، همانطور که در بلوک کد زیر مشخص شده است:

styles.css

...
.disclosure-alert {
  ...
  border-radius: 1.5rem;
  text-shadow: 0 0 0.375rem hsl(300, 50%, 50%);
  box-shadow: 0 0 0.5rem hsl(300, 40%, 5%);
}
...

تغییرات را در styles.css ذخیره کنید و صفحه را در مرورگر وب خود بازخوانی کنید. اکنون یک سایه سیاه تقریباً از ظرف پخش شده است. همچنین توجه داشته باشید که سایه به منحنی هایی که با ویژگی border-radius ایجاد کرده اید احترام گذاشته و از آنها پیروی می کند. تصویر زیر نشان می دهد که چگونه این در مرورگر ارائه می شود:

در مرحله بعد، به styles.css بازگردید و با افزودن دو افکت درخشش بزرگ اضافی به box-shadow شروع به ایجاد یک افکت پیچیده تر کنید. بین هر سایه جدید یک کاما اضافه کنید، و هر کدام را به گونه‌ای تنظیم کنید که آفست محور y 0.5rem باشد. سپس تاری های بزرگ را تنظیم کنید و از تغییرات کم رنگ آبی و بنفش از پالت رنگ استفاده کنید، همانطور که در بلوک کد زیر مشخص شده است:

styles.css

...
.disclosure-alert {
  ...
  box-shadow: 0 0 0.5rem hsl(300, 40%, 5%),
              0 0.5rem 6rem hsl(200, 40%, 30%),
              0 0.5rem 10rem hsl(300, 40%, 30%);
}
...

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

تغییرات خود را در styles.css ذخیره کنید و صفحه را در مرورگر خود بازخوانی کنید. همانطور که در تصویر زیر نشان داده شده است، ترکیب سایه های متعدد جلوه ای منحصر به فرد را ارائه می دهد:

ویژگی گسترش تاری ویژگی box-shadow را می توان برای ایجاد احساس عمق استفاده کرد. ارزش اسپرد هر دو ارزش مثبت و منفی را می پذیرد. گسترش ارزش منفی همراه با یک افست قوی و تاری سایه ای ایجاد می کند که دور و دور از ظرف منبع ایجاد می کند.

برای شروع، به styles.css در ویرایشگر متن خود بازگردید. بین سایه کوچک تیره و سایه آبی بزرگتر در انتخابگر .disclosure-alert، CSS هایلایت شده زیر را از بلوک کد اضافه کنید:

styles.css

...
.disclosure-alert {
  ...
  box-shadow: 0 0 0.5rem hsl(300, 40%, 5%),
              0 6rem 4rem -2rem hsl(300, 40%, 5%),
              0 0.5rem 6rem hsl(200, 40%, 30%),
              0 0.5rem 10rem hsl(300, 40%, 30%);
}
...

این اضافه شدن به مجموعه سایه، افست محور x را روی 0 نگه می دارد، اما محور y را به طور قابل توجهی به 6rem می رساند. بعد، تاری به اندازه درخشش بزرگ نیست، اما در اندازه مناسب 4 rem است. سپس به مقدار گسترش blur می رسد که در این حالت روی -2rem تنظیم می شود. مقدار پیش فرض اسپرد 0 است که برابر با ظرف است. در -2rem، گسترش از ظرف به سمت داخل متراکم می شود تا جلوه بصری عمق ایجاد کند.

تغییرات خود را در styles.css ذخیره کنید، سپس index.html را در مرورگر بازخوانی کنید. سایه یک رنگ بنفش تیره است که این حس را ایجاد می کند که جعبه محتوای اصلی به خوبی بالای سطح ماه شناور است، همانطور که در تصویر زیر نشان داده شده است:

یکی دیگر از موارد استفاده از box-shadow ایجاد یک هایلایت و افکت مخروطی سایه است، همانطور که قبلاً با ویژگی border در هدر انجام دادید. مزیت استفاده از box-shadow به جای حاشیه این است که بر مدل جعبه تأثیر نمی گذارد، که باعث تغییر در جریان محتوا می شود. همچنین می توان از آن در ارتباط با حاشیه استفاده کرد. هنگام استفاده از این افکت با حاشیه، مقدار inset باید به box-shadow اضافه شود تا سایه در داخل ظرف باشد.

برای شروع استفاده از مقدار inset در box-shadow، styles.css را در ویرایشگر متن خود باز کنید. این افکت به دکمه‌ها اضافه می‌شود، بنابراین شما این استایل‌ها را در .button-primary، .button-primary:hover، .button-secondary و .button-secondary:hover اعمال خواهید کرد. مانند text-shadow، این شامل یک ترکیب افست 0 1px و 0 -1px خواهد بود. تفاوت این است که کلمه inset را می توان به ابتدا یا انتهای مقدار اضافه کرد، همانطور که در بلوک کد زیر مشخص شده است:

styles.css

...
.button-primary {
  ...
  text-shadow: 0 1px hsl(200, 100%, 50%),
               0 -1px hsl(200, 100%, 5%);
  box-shadow: inset 0 1px hsl(200, 100%, 50%),
              inset 0 -1px hsl(200, 100%, 15%);
}
.button-primary:hover {
  ...
  text-shadow: 0 1px hsl(200, 100%, 45%),
               0 -1px hsl(200, 100%, 0%);
  box-shadow: inset 0 1px hsl(200, 100%, 45%),
              inset 0 -1px hsl(200, 100%, 10%);
}
.button-secondary {
  ...
  text-shadow: 0 1px hsl(200, 10%, 50%),
               0 -1px hsl(200, 10%, 5%);
  box-shadow: inset 0 1px hsl(200, 10%, 50%),
              inset 0 -1px hsl(200, 10%, 15%);
}
.button-secondary:hover {
  ...
  text-shadow: 0 1px hsl(200, 10%, 45%),
               0 -1px hsl(200, 10%, 0%);
  box-shadow: inset 0 1px hsl(200, 10%, 45%),
              inset 0 -1px hsl(200, 10%, 10%);
}

این تغییرات را در styles.css ذخیره کنید و سپس index.html را در مرورگر خود refresh کنید. اکنون دکمه ها دارای یک برجسته و یک سایه هستند، شبیه به متن. این ترکیب با پس‌زمینه گرادیان، جلوه‌ای ساده و در عین حال متمایز برای دکمه‌ها ایجاد می‌کند. تصویر زیر نشان می دهد که چگونه این در مرورگر ارائه می شود:

 

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

برای شروع ایجاد این افکت، styles.css را در ویرایشگر متن خود باز کنید. به انتخابگر کلاس .legal-contents بروید و یک ویژگی box-shadow اضافه کنید. این سایه از سه سایه تشکیل خواهد شد. اولی یک سایه کوتاه در اطراف داخل کل ظرف ایجاد می کند و دو مورد بعدی یک سایه روشن دراز در بالا و پایین عنصر ایجاد می کند. CSS هایلایت شده در بلوک کد زیر نحوه تنظیم این را نشان می دهد:

styles.css

...
.legal-contents {
  ...
  font-family: "Times New Roman", serif;
  box-shadow: 0 0 0.25rem hsl(0, 0%, 80%) inset,
              0 4rem 2rem -4rem hsl(0, 0%, 85%) inset,
              0 -4rem 2rem -4rem hsl(0, 0%, 85%) inset;
}
...

تغییرات خود را در styles.css ذخیره کنید، سپس صفحه را در مرورگر بازخوانی کنید. اکنون سایه‌ها جلوه‌ای ایجاد می‌کنند که باعث می‌شود متن قانونی مانند پنجره‌ای به داخل ظرف ظاهر شود. سایه ها همچنین به تقویت رنگ های حاشیه ای که روی این عنصر اعمال شده اند کمک می کند. تصویر زیر نشان می دهد که چگونه این در مرورگر رندر می شود:

در این قسمت ویژگی box-shadow را عملی می کنید. شما همچنین از ویژگی‌های پخش تاری و درج کردن جعبه سایه استفاده کردید تا گزینه‌های یک ظاهر طراحی بیشتری داشته باشید. در بخش آخر، ویژگی outline را پیاده سازی می کنید، سپس از box-shadow برای ایجاد یک طرح کلی همه کاره تر استفاده می کنید.

با استفاده از ویژگی طرح کلی

آخرین ویژگی که بر لبه های عناصر تأثیر می گذارد، ویژگی outline است. در تمام مرورگرها، حالت :focus عناصر با استفاده از ویژگی outline ساخته می‌شود. با این حال، اجرای سبک :focus پیش فرض هر مرورگر به طور قابل توجهی متفاوت است. ویژگی outline شبیه به ویژگی border است، به جز دو تفاوت کلیدی: تغییرات خاصیت جهت دار را ندارد و مدل جعبه را تحت تأثیر قرار نمی دهد. آخرین مورد از این دو تفاوت، آن را برای سبک‌های فوکوس ایده‌آل می‌کند، زیرا نشانگر بصری عنصر فعال را بدون ایجاد اختلال در جریان محتوا ارائه می‌کند.

برای مشاهده پیش فرض مرورگر حالت :focus، index.html را در مرورگر خود باز کنید. از کلید TAB برای پیمایش در صفحه استفاده کنید تا زمانی که یکی از دکمه های پایین فوکوس شود. بسته به اینکه از چه مرورگری استفاده می کنید، ممکن است نتوانید سبک های پیش فرض :focus را ببینید. به عنوان مثال، فایرفاکس یک طرح کلی با نقطه سفید را نشان می دهد، اما در پس زمینه خاکستری روشن قابل درک نیست. تصویر زیر از چپ به راست نشان می دهد که چگونه سبک فوکوس پیش فرض در فایرفاکس، سافاری و کروم ظاهر می شود:

برای شروع سفارشی کردن حالت :focus خود با ویژگی outline، styles.css را در ویرایشگر متن خود باز کنید. به انتخابگر کلاس .button بروید و ویژگی outline را اضافه کنید:

styles.css

...
.button {
  ...
}
.button:focus {
  outline: 0.25rem solid hsl(200, 100%, 50%);
}
...

همانند ویژگی border، مقدار طرح کلی شامل یک مقدار عرض، سبک و رنگ است. از آنجایی که هدف یک حالت فوکوس جلب توجه به یک عنصر است، عرض به 0.25rem افزایش می یابد که معادل 4px است. در مرحله بعد، استایل را روی حالت جامد قرار می دهید تا حالت فوکوس بیشتر شبیه سافاری و کروم باشد. در نهایت، رنگ را با hsl (200، 100، 50%) روی آبی تیره قرار می دهید.

تغییرات خود را در styles.css ذخیره کنید، سپس به مرورگر خود بازگردید و صفحه را بازخوانی کنید. یک بار دیگر، مرورگر نحوه نمایش طرح کلی را تعیین می کند. تصویر زیر نشان می دهد که این سبک ها در فایرفاکس، سافاری و کروم از چپ به راست چگونه هستند:

در هر سه مرورگر، ویژگی outline کاملاً متفاوت نمایش داده می شود. فایرفاکس دور کل شکل گرد دکمه را محکم نگه می دارد. سافاری یک کادر با زاویه راست ایجاد می کند، اما لبه های دکمه را لمس می کند. کروم شبیه سافاری است، اما فضای اضافی بین دکمه و طرح کلی اضافه می کند.

برای ایجاد سبکی که در همه مرورگرها شبیه به فایرفاکس باشد، به جای طرح کلی، باید از box-shadow استفاده کنید.

برای شروع ایجاد حالت :focus سفارشی تر، به فایل styles.css خود در ویرایشگر متن خود بازگردید. اولین کاری که باید انجام دهید این است که سبک طرح کلی پیش فرض مرورگر را با تغییر مقدار .button:focus نمایه انتخابگر به none غیرفعال کنید، همانطور که در بلوک کد زیر مشخص شده است:

styles.css

...
.button {
  ...
}
.button:focus {
  outline: none;
}
...

سپس، به انتخابگرهای button-primary:hover و button-secondary:hover بروید و یک کاما به دنبال آن یک تغییر حالت :focus اضافه کنید، همانطور که در بلوک کد زیر مشخص شده است:

styles.css

...

.button-primary {
  ...
}
.button-primary:hover,
.button-primary:focus {
  ...
}
.button-secondary {
  ...
}
.button-secondary:hover,
.button-secondary:focus {
  ...
}

در نهایت، دو انتخابگر جدید برای هر دکمه ایجاد کنید: فوکوس، .button-primary: focus، و .button-secondary:focus. در داخل بلوک‌های انتخابگر جدید، یک ویژگی box-shadow جدید با همان سایه‌های داخلی از همتای :hover، :focus آن‌ها اضافه کنید. سپس، سایه دیگری را با offset ها به مجموعه اضافه کنید و همه را روی 0 تار کنید. پس از آن، یک اسپرد 0.25rem اضافه کنید، که یک خط ثابت و غیر تار در اطراف عنصر ایجاد می کند. در نهایت رنگ یکسان را به هر دو نمونه اضافه کنید. CSS هایلایت شده در بلوک کد زیر نشان می دهد که چگونه این نوشته شده است:

styles.css

...

.button-primary {
  ...
}
.button-primary:hover,
.button-primary:focus {
  ...
}
.button-primary:focus {
  box-shadow: inset 0 1px hsl(200, 100%, 45%),
              inset 0 -1px hsl(200, 100%, 10%),
              0 0 0 0.25rem hsl(200, 100%, 50%);
}
.button-secondary {
  ...
}
.button-secondary:hover,
.button-secondary:focus<^> {
  ...
}
.button-secondary:focus {
  box-shadow: inset 0 1px hsl(200, 10%, 45%),
              inset 0 -1px hsl(200, 10%, 10%),
              0 0 0 0.25rem hsl(200, 100%, 50%);
}

این تغییرات را در styles.css ذخیره کنید و برای بازخوانی index.html به مرورگر خود بازگردید. اکنون، همانطور که از کلید TAB برای پیمایش در صفحه استفاده می کنید. صرف نظر از مرورگر، سبک :focus روی دکمه ها اکنون یکسان به نظر می رسد. تصویر زیر نشان می دهد که چگونه نسخه box-shadow یک طرح کلی به همراه کل صفحه در مرورگر ظاهر می شود:

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

نتیجه

سبک دادن به لبه های عناصر به طراحی یک وب سایت اجازه می دهد تا تنوع و توجه را به خود جلب کند. ویژگی border می تواند به ارائه تعریف و تفکیک بین محتوا کمک کند. ویژگی حاشیه-شعاع زیبایی شناسی را نرم می کند و به تعریف نگرش طرح کمک می کند. سایه های روی متن و جعبه ها عمق می بخشد و به جلب توجه به محتوا کمک می کند. در نهایت، ویژگی outline راه‌های در دسترس را برای جلب توجه به عناصر با فوکوس صفحه کلید فراهم می‌کند. در این آموزش، شما از تمام این ویژگی ها برای ایجاد یک صفحه وب از نظر بصری جالب و قابل استفاده استفاده کردید. درک هر یک از این ویژگی ها و نحوه و زمان استفاده از آنها به حل انواع مشکلات رابط فرانت اند و ایجاد تجربیات جدید کمک می کند.

 

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

برچسب‌ها:CSSVPS یا سرور مجازیآشنایی با خواص رنگ در CSSایجاد سرور مجازیایجاد یکborder-radiusخرید سرور مجازیراه اندازی پایه HTMLراه اندازی پایه HTML و CSSسرورمجازیسرورمجازی آمریکا

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه استفاده از Opacity و Transparency برای ایجاد یک Modal در CSS

ورود به سایت

معرفی

هنگام استایل‌سازی HTML با CSS، راه‌های متعددی برای تنظیم شفافیت عناصر و دلایل متعددی برای استفاده از این افکت در طراحی وجود دارد. کدورت می‌تواند به نرم کردن سایه، کاهش تاکید بر محتوای غیر ضروری در طول یک کار خاص، یا محو کردن محتوا در داخل یا خارج از دید کمک کند. شما می‌توانید این افکت‌ها را با ویژگی opacity، نام رنگ شفاف یا کانال‌های آلفا، که بسط مقادیر رنگ با یک بخش اضافی برای کنترل کدورت هستند، انجام دهید.

در طول این آموزش، شما از روش‌های مختلفی برای اعمال کدورت و خواص اضافی برای انجام مؤثر جلوه‌های خاص استفاده خواهید کرد. شما یک مودال ایجاد خواهید کرد که با رویکرد بدون جاوا اسکریپت با استفاده از کلاس شبه :target و ویژگی های opacity، pointer-events و transition ظاهر می شود. سپس از هر یک از مقادیر رنگ کانال آلفا برای ایجاد همپوشانی سایه، حاشیه و محتوا استفاده خواهید کرد. شما همچنین از مقدار رنگ شفاف برای کمک به ایجاد شیب متحرک رنگ ها در یک رویداد :hover استفاده خواهید کرد.

پیش نیازها

  • درک درستی از ویژگی‌های آبشار و ویژگی‌های CSS، که می‌توانید با خواندن نحوه اعمال سبک‌های CSS در HTML با Cascade و Specificity به آن دست پیدا کنید.
  • آشنایی با انتخابگرهای نوع، انتخابگرهای ترکیب‌کننده و گروه‌های انتخابگر، که می‌توانید در نحوه انتخاب عناصر HTML به سبک با CSS بیابید.
  • درک خواص رنگ .
  • آشنایی با گرادیان های CSS با ویژگی های پس زمینه. نحوه اعمال سبک‌های پس‌زمینه به عناصر HTML با CSS را بررسی کنید تا تجربه ایجاد پس‌زمینه گرادیان را به دست آورید.
  • ویژگی box-shadow را تجربه کنید،
  • یک فایل HTML خالی که در دستگاه محلی شما به عنوان index.html ذخیره شده است که می توانید از ویرایشگر متن و مرورگر وب انتخابی خود به آن دسترسی داشته باشید. برای شروع، آموزش نحوه تنظیم پروژه HTML خود را بررسی کنید و نحوه استفاده و درک عناصر HTML را برای دستورالعمل‌هایی در مورد نحوه مشاهده HTML خود در مرورگر خود دنبال کنید. اگر در HTML تازه کار هستید، کل نحوه ساخت یک وب سایت در سری HTML را امتحان کنید.

راه اندازی پایه HTML و CSS

در این بخش اول، HTML را برای سبک های بصری که در طول آموزش خواهید نوشت، تنظیم خواهید کرد. شما همچنین فایل styles.css خود را ایجاد کرده و سبک هایی را اضافه می کنید که طرح بندی محتوا را تنظیم می کند.

برای شروع، فایل index.html را در ویرایشگر متن خود باز کنید. سپس HTML زیر را به فایل اضافه کنید:

index.html

<!doctype html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Destination: Moon</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=MuseoModerno:wght@400;700&display=swap" rel="stylesheet">
    <link href="styles.css" rel="stylesheet" />
  </head>
  <body>
  </body>
</html>

چندین تنظیمات صفحه در عنصر <head> HTML تعریف شده است. عنصر <meta> مجموعه کاراکتری را برای استفاده از متن تعریف می‌کند، که به مرورگر می‌گوید چگونه کاراکترهای خاص را بدون استفاده از کدهای کاراکتر HTML تفسیر کند. عنصر <title> عنوان صفحه را در اختیار مرورگر قرار می دهد. عناصر <link> در سبک های صفحه بارگیری می شوند. سه مورد اول در فونت، Museo Moderno، از فونت‌های Google بارگیری می‌شوند، و آخرین مورد، سبک‌هایی را که به styles.css اضافه می‌کنید، بارگیری می‌کند.

در مرحله بعد، صفحه برای استایل دادن به محتوا نیاز دارد. شما از محتوای نمونه از Sagan Ipsum به عنوان کپی پرکننده برای استفاده با سبک ها استفاده خواهید کرد. شما همچنین HTML را برای سرصفحه سایت، حاوی نام سایت و یک نوار ناوبری کوچک اعمال خواهید کرد. در ویرایشگر متن خود به index.html برگردید و HTML برجسته شده را از بلوک کد زیر اضافه کنید:

index.html

<!doctype html>
<html>
  <head>
    ...
  </head>
  <body>
    <header class="site-header">
      <h1 class="site-name">Destination: <strong>Moon</strong></h1>
      <nav>
        <ul class="nav-list">
          <li><a href="#" class="nav-link">Base Station</a></li>
          <li><a href="#" class="nav-link">Travel Packages</a></li>
          <li><a href="#" class="nav-link">Accommodations</a></li>
          <li><a href="#" class="nav-link">Plan Your Trip</a></li>
      </ul>
      </nav>
    </header>
    <main>
      <section>
        <h2>Schedule Your Trip</h2>
        <p>Sea of Tranquility great turbulent clouds with pretty stories for which there's little good evidence extraordinary claims require extraordinary evidence. Citizens of distant epochs rings of Uranus intelligent beings birth take root and flourish across the centuries. Corpus callosum invent the universe as a patch of light the only home we've ever known a mote of dust suspended in a sunbeam made in the interiors of collapsing stars. Kindling the energy hidden in matter Orion's sword.</p>
        <p>Vastness is bearable only through love emerged into consciousness not a sunrise but a galaxyrise emerged into consciousness courage of our questions across the centuries and billions upon billions upon billions upon billions upon billions upon billions upon billions.</p>
          <a href="#" class="button">Read the Disclaimer!</a>
      </section>
    </main>
  </body>
</html>

حتما فایل index.html خود را ذخیره کنید و آن را در ویرایشگر متن خود باز بگذارید. سپس یک فایل جدید به نام styles.css ایجاد کنید و آن را در ویرایشگر متن باز کنید. این فایلی است که در عنصر <head> index.html ارجاع داده شده است. در فایل styles.css کد زیر را اضافه کنید:

styles.css

body {
  margin: 0;
  font: 100%/1.5 sans-serif;
}

main {
  margin: 6rem auto;
  width: 75ch;
  font-size: 1.125rem;
}

h2 {
  font: 400 1.875rem/1.25 MuseoModerno, sans-serif;
  color: #6b2d6b;
}

.site-header {
  font: 1.125rem / 1.25 MuseoModerno, sans-serif;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 2rem;
  color: white;
  background: linear-gradient(135deg, #8e3d8e, #230f23);
}

.site-name {
  margin: 0;
  font-size: 1.75rem;
  font-weight: 400;
}

.nav-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  align-items: stretch;
}

.nav-link {
  color: inherit;
  display: block;
  text-decoration: none;
  padding: 1.25rem 1.5rem;
}

.nav-link:hover,
.nav-link:focus {
  color: #230f23;
  background-color: white;
}

.button {
  text-decoration: none;
  display: inline-block;
  padding: 0.5rem 1.25rem;
  color: white;
  background: #4c90b2;
  border: 1px solid #2d566b;
  border-radius: 0.5rem;
}

.button:hover,
.button:focus {
  background-color: #2d566b;
}

این سبک‌ها زیبایی‌شناسی و چیدمان کلی صفحه را با سبک‌های اعمال شده روی بدنه و عناصر اصلی تنظیم می‌کنند. انتخابگرهای .site-header، site-name، .nav-list و .nav-link همگی سبک ها را در سرصفحه صفحه تعریف می کنند. قوانین .button و .button:hover یک عنصر <a> را تغییر می دهند تا مانند یک دکمه بزرگ و قابل کلیک ظاهر شود.

تغییرات خود را در styles.css ذخیره کنید، سپس یک مرورگر وب باز کنید. آیتم منوی File را انتخاب کرده و سپس گزینه Open را انتخاب کنید. سپس به پوشه پروژه خود بروید و فایل index.html خود را در مرورگر بارگذاری کنید. تصویر زیر نحوه نمایش صفحه در مرورگر را نشان می دهد:

CSS که تا به حال نوشته اید یک هدر بنفش در بالای صفحه با عنوان سایت و پیمایش در متن سفید ایجاد می کند. در زیر، محتوا از یک عنوان بنفش و دو پاراگراف متن تشکیل شده است. عرض محتوا به 75 کاراکتر با مقدار ویژگی max-width: 76ch در انتخابگر عنصر اصلی محدود شده است. در نهایت، دکمه آبی با متن Read the Disclaimer! یک عنصر بزرگ و تعاملی در زیر محتوا است.

در سراسر این بخش شما HTML خود را در فایل index.html تنظیم کرده و سبک های پایه را در فایل styles.css ایجاد می کنید. در بخش بعدی، از ویژگی opacity برای ناپدید شدن یک عنصر جدید و ظاهر شدن مجدد با کلاس :target شبه استفاده خواهید کرد.

ایجاد :target State با opacity برای نمایش و پنهان کردن عناصر

یکی از کاربردهای مفید ویژگی opacity این است که باعث محو شدن و محو شدن محتوا در صفحه می شود. یکی از نمونه‌های چنین جلوه‌ای زمانی است که یک مودال، یک عنصر رابط کاربری (که به عنوان جعبه نور نیز شناخته می‌شود) که در جلوی بقیه محتوای صفحه شما ظاهر می‌شود، به نمایش تبدیل می‌شود. می توانید این افکت را با ترکیبی از ویژگی های opacity و pointer-events و شبه کلاس :target ایجاد کنید.

با باز کردن index.html برای ایجاد محتویات مدال شروع کنید. HTML برجسته شده را از بلوک کد زیر بین تگ های بسته </section> و </main> اضافه کنید:

index.html

<!doctype html>
<html>
  <head>
    ...
  </head>
  <body>
    ...
    <main>
      <section>
        ...
      </section>
      <div class="modal-container">
        <section class="modal">
          <header class="modal-header">
            <h2 class="modal-title">Destination: Moon Disclaimer</h2>
            <a href="#" class="modal-close">Close</a>
          </header>
          <div class="modal-content">
            <p><strong>Disclaimer:</strong> Vastness is bearable only through love emerged into consciousness not a sunrise but a galaxyrise emerged into consciousness courage of our questions across the centuries and billions upon billions upon billions upon billions upon billions upon billions upon billions.</p>
          </div>
        </section>
      </div>
    </main>
  </body>
</html>

تغییرات خود را در index.html ذخیره کنید، سپس به styles.css در ویرایشگر متن خود بازگردید و CSS هایلایت شده را در بلوک کد زیر به فایل خود اضافه کنید:

styles.css

...

.button:hover {
  background-color: #2d566b;
}

.modal-container {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1000;
  background-color: black;
  display: flex;
}

.modal {
  margin: auto;
  width: 90%;
  max-width: 40rem;
  background-color: white;
  border-radius: 1.5rem;
}

.modal-header,
.modal-content {
  padding: 1.5rem;
}

کلاس .modal-container ناحیه ای را تعریف می کند که فضای کامل قابل مشاهده را با یک عنصر ثابت پوشش می دهد. سپس صفحه نمایش: خم شدن در کانتینر .modal همراه با حاشیه: خودکار در انتخابگر .modal، محتوا را به صورت عمودی و افقی روی صفحه متمرکز می کند.

تغییرات خود را در styles.css ذخیره کنید و برای بازخوانی index.html به مرورگر خود بازگردید. همانطور که در تصویر زیر نشان داده شده است، محتوای صفحه دیگر قابل مشاهده نیست زیرا یک پوشش سیاه روی صفحه با یک ظرف سفید پوشانده شده است:

اکنون که مدال در جای خود قرار دارد و محتویات صفحه را پوشش می‌دهد، باید تا زمانی که نمونه‌سازی شود، پنهان شود. ویژگی opacity یک ویژگی قدیمی است که اجازه می دهد تا شفافیت روی یک عنصر و محتویات آن قرار گیرد. مقدار ویژگی opacity می تواند از 0 تا 1 با هر نقطه اعشاری بین آن متغیر باشد.

برای شروع استفاده از ویژگی opacity، به styles.css در ویرایشگر متن خود بازگردید. در انتخابگر کلاس .modal، یک ویژگی opacity با مقدار 0 اضافه کنید، همانطور که در بلوک کد زیر مشخص شده است:

styles.css

...
.modal-container {
   position: fixed;
   top: 0;
   right: 0;
   bottom: 0;
   left: 0;
   z-index: 1000;
   background-color: black;
   display: flex;
  opacity: 0;
}
...

این باعث می شود که کل نمای مودال به صورت بصری روی صفحه پنهان شود. مودال فقط باید زمانی قابل مشاهده باشد که لازم باشد. برای دستیابی به این ظاهر شرطی، می توانید از شبه کلاس :target استفاده کنید.

بعد از انتخابگر .modal-container، یک انتخابگر جدید برای .modal-container:target اضافه کنید. در داخل بلوک انتخابگر، یکی دیگر از ویژگی های opacity را به مقدار 1 تنظیم کنید. CSS برجسته شده در بلوک کد زیر، نحوه قالب بندی آن را نشان می دهد:

styles.css

...
.modal-container {
  ...
  opacity: 0;
}

.modal-container:target {
  opacity: 1;
}
...

این تغییرات را در styles.css ذخیره کنید.

:target زمانی که یک عنصر دارای تمرکز URL باشد، نمونه سازی می شود. در مرورگرهای وب، ویژگی id در یک عنصر HTML را می توان در URL همانطور که با نماد پوند یا هش (#) نشان می دهد ارجاع داد. برای اینکه .modal-container:target فعال شود، همان عنصر به یک عنصر id نیاز دارد و صفحه به راهی برای فعال کردن آن URL نیاز دارد.

در ویرایشگر متن خود به index.html برگردید. در عنصر <div class=”modal-container”>، یک مجموعه ویژگی id را به سلب مسئولیت مقدار اضافه کنید. سپس، در عنصر <a href=”#” class=”button”>، مقدار href را از # به #سلب مسئولیت تغییر دهید. برای نحوه نوشتن به HTML برجسته شده در بلوک کد زیر مراجعه کنید:

index.html

<!doctype html>
<html>
  <head>
    ...
  </head>
  <body>
    ...
    <main>
      <section>
         ...
         <a href="#disclaimer" class="button">Read the Disclaimer!</a>
       </section>
       <div id="disclaimer" class="modal-container">
         ...
       </div>
    </main>
  </body>
</html>

تغییر در مقدار href به مرورگر می‌گوید که به عنصری با مقدار شناسه سلب مسئولیت صفحه فعلی برود. هنگامی که #سلب مسئولیت به URL اضافه شد، سپس :target در CSS فعال می شود.

این تغییرات را در index.html ذخیره کنید، سپس به styles.css بازگردید.

همانطور که صفحه اکنون ساختار یافته است، مودال تمام رویدادهای کلیک و لمسی را که از تعامل ماوس یا صفحه لمسی حاصل می شود، ضبط می کند. این به این دلیل است که اگرچه کاملاً شفاف است، اما عنصر مدال هنوز کل صفحه را پوشش می دهد. برای حذف تعامل از عنصر، یک ویژگی pointer-events با مقدار هیچ به انتخابگر .modal-container اضافه می‌کنید. سپس، هنگامی که مدال قابل مشاهده است، باید بتواند دوباره رویدادهای تعامل را دریافت کند. در شبه کلاس :target، اشاره گر رویدادها را به همه اضافه کنید، همانطور که در بلوک کد زیر مشخص شده است:

styles.css

...
.modal-container {
  ...
  opacity: 0;
  pointer-events: none;
}

.modal-container:target {
  opacity: 1;
  pointer-events: all;
}
...

ویژگی pointer-events نحوه تعامل یک عنصر با ماوس یا دستگاه ورودی مبتنی بر لمس را تغییر می دهد. با تنظیم مقدار روی هیچ، این عنصر نه تنها برای کاربران بینا، بلکه برای دستگاه های ورودی مبتنی بر اشاره گر نیز نامرئی می شود. سپس، مقدار all تعامل را دوباره برقرار می‌کند، اما تنها زمانی که .modal-container در URL فعال و قابل مشاهده باشد.

در نهایت، برای اینکه مدال در داخل و خارج از دید محو شود، یک ویژگی انتقال برای متحرک سازی بین 0 و 1 مقادیر برای کدورت اضافه می‌کنید.

به styles.css برگردید و یک ویژگی انتقال به انتخابگر .modal-container اضافه کنید، همانطور که در بلوک کد زیر مشخص شده است:

styles.css

...
.modal-container {
  ...
  opacity: 0;
  pointer-events: none;
  transition: opacity 250ms ease;
}

.modal-container:target {
  opacity: 1;
  pointer-events: all;
}
...

ویژگی transition مختصر یک سری از خواص است. کدورت به مرورگر می گوید که این ویژگی برای انتقال بین است. 250 میلی‌ثانیه زمانی است که انتقال باید تکمیل شود و واحد برای میلی‌ثانیه ایستاده است. در نهایت، سهولت توضیح می دهد که چگونه انتقال رخ خواهد داد. در این مورد، ease به این معنی است که آهسته شروع می‌شود، سرعت می‌گیرد و سپس در نزدیکی پایان انتقال دوباره کاهش می‌یابد.

انتقال زمانی کار خواهد کرد که مودال ظاهر شود و با فشار دادن پیوند بستن در داخل مدال ناپدید شود. این پیوند بستن دارای یک مقدار href است که روی # تنظیم شده است، که URL را از #سلب مسئولیت به # تغییر می‌دهد و حالت :target را حذف می‌کند.

تغییرات خود را در styles.css ذخیره کنید و index.html را در مرورگر refresh کنید. انیمیشن زیر نحوه ظاهر و ناپدید شدن مودال را نشان می دهد

این بخش شما را با خاصیت opacity آشنا کرد که از آن برای پنهان کردن بصری یک ظرف مدال استفاده کردید. شما همچنین از ویژگی شبه کلاس :target، ویژگی pointer-events و ویژگی transition برای ایجاد یک افکت fade-in و fade-out استفاده کردید. در بخش بعدی، از رنگ‌هایی با کانال‌های آلفا برای شفاف‌تر کردن مودال استفاده خواهید کرد.

استفاده از کانال های آلفا برای ایجاد مقادیر رنگ شفاف

یک کانال آلفا مانند ویژگی opacity است، اما در عوض یک بخش اضافی برای یک مقدار رنگ است که از طریق rgb()، hsl() یا هگزادسیمال تعریف شده است. در جایی که ویژگی opacity کل عنصر و فرزندان آن را تنظیم می کند، کانال آلفا فقط کدورت رنگ را در یک ویژگی مشخص تنظیم می کند. در طول این بخش، شما از هر یک از مقادیر رنگ کانال آلفا استفاده کرده و آنها را عملی خواهید کرد.

برای شروع کار با مقادیر رنگ کانال آلفا، stlyes.css را در ویرایشگر متن خود باز کنید. سپس به انتخابگر کلاس .modal-container بروید. همانطور که در بلوک کد زیر مشخص شده است، مقدار ویژگی پس زمینه رنگ را از #000 به rgba (0، 0، 0، 0.75) تغییر دهید:

styles.css

...
.modal-container {
  ...
  background-color: rgba(0,0,0,0.75);
  ...
}
...

مقدار رنگ rgba () مانند rgb () عمل می کند که شامل سه عدد جدا شده با کاما است که سطح نور قرمز، سبز و آبی را نشان می دهد. وقتی یکی از مقادیر رنگ روی 0 تنظیم شود، کاملاً خاموش است (سیاه) و 255 به این معنی است که در روشنایی کامل (سفید) است. بین این سه کانال رنگی می توان میلیون ها رنگ تولید کرد. عدد چهارم کانال آلفا است که مانند خاصیت opacity کار می کند و یک مقدار اعشاری از 0 تا 1 است. تنظیم کانال آلفا باعث شفاف شدن رنگ می شود و به محتوای پشت آن اجازه می دهد از طریق رنگ قابل مشاهده باشد.

تغییرات خود را در styles.css ذخیره کنید و index.html را در یک مرورگر وب باز کنید. خواندن سلب مسئولیت را فشار دهید! را فشار دهید تا مودال فعال شود. پس‌زمینه پوشش سیاه همچنان سیاه است، اما اکنون نیز شفاف است و صفحه پشت آن را آشکار می‌کند:

اکنون که روکش شفاف است، به مدال بچرخید و با تغییر پس‌زمینه به یک گرادیان بنفش با متن سفید، استایل بصری بیشتری به آن بدهید. در ویرایشگر متن خود به styles.css برگردید و CSS هایلایت شده زیر را از بلوک کد بعدی اضافه کنید:

styles.css

...
.modal {
  margin: auto;
  width: 90%;
  max-width: 40rem;
  background: linear-gradient(135deg, hsl(300, 40%, 20%),hsl(300, 40%, 5%));
  border-radius: 1.5rem;
}

.modal-header,
.modal-content {
  padding: 1.5rem;
}

.modal-header {
  display: flex;
  justify-content: space-between;
}

.modal-title {
  margin: 0;
  color: white;
}

.modal-close {
  color: white;
}

.modal-content {
  color: white;
}

این به روز رسانی را در styles.css ذخیره کنید، سپس index.html را در مرورگر خود بازخوانی کنید. سبک مودال همانطور که در تصویر زیر نشان داده شده است به روز می شود و ارائه می شود:

اکنون در ویرایشگر متن خود به styles.css بازگردید. اکنون از مقدار رنگ ()hsla برای روشن کردن رنگ هدر modal استفاده خواهید کرد. همچنین باید گوشه های بالایی را طوری تنظیم کنید که یک مقدار شعاع مرزی مطابق با مدال داشته باشد، بنابراین هدر خارج از ناحیه مدال ظاهر نشود. CSS هایلایت شده در بلوک کد زیر نحوه تنظیم این را نشان می دهد:

styles.css

...
.modal-header {
  display: flex;
  justify-content: space-between;
  background-color: hsla(300, 80%, 90%, 0.2);
  border-radius: 1.5rem 1.5rem 0 0;
}
...

مقدار پس زمینه رنگ از فرمت hsla() استفاده می کند و مانند مقدار rgba()، فرمت hsl() است اما با کانال آلفا. hsl() از سه بخش تشکیل شده است: یک مقدار درجه از چرخه رنگ، یک مقدار درصد اشباع، و یک مقدار درصد روشنایی، که رنگ نهایی را ایجاد می کند. 300 مقدار رنگ را بین آبی و قرمز در چرخه رنگ قرار می دهد، 80٪ اشباع سنگین به معنای رنگ بیشتر و خاکستری کمتر است، و 90٪ رنگ نهایی را روشن می کند. در نهایت، کانال آلفا مانند خاصیت opacity کار می کند و 0.2 مقدار را نزدیک به کاملا شفاف می کند. این یک پوشش روشن در بالای گرادیان ایجاد می کند و تعریفی را برای هدر ارائه می دهد.

این تغییرات را در styles.css ذخیره کنید و برای بازخوانی index.html به مرورگر بازگردید. سرصفحه مدال اکنون دارای یک برجسته صورتی تر در ناحیه است که آن را از محتوای مدال متمایز می کند. تصویر زیر نشان می دهد که چگونه هدر مدال اکنون در مرورگر رندر می شود:

راه دیگر برای ایجاد مقادیر رنگ شفاف، استفاده از مقادیر هگزادسیمال است. مقادیر رنگ هگزادسیمال از سه جفت ترکیبی از 0 تا 9 یا a تا f تشکیل شده و معادل عددی از 0 تا 255 است. سه رقم اول یک مقدار قرمز، سبز و آبی هستند که به صورت #RRGGBB فرمت شده اند. برای ایجاد یک کانال آلفا، مجموعه چهارم اضافه می شود و الگوی #RRGGBBAA را می سازد.

برای شروع کار با کانال های آلفای هگزادسیمال، به styles.css در ویرایشگر متن خود بازگردید. اکنون یک حاشیه به قسمت سرصفحه و محتوای مدال اضافه می‌کنید تا تعریف بیشتری به آن بدهید. این مرزها از مقدار هگزادسیمال یکسانی استفاده می کنند، اما مقادیر متفاوتی برای کانال آلفا به آنها داده می شود. CSS هایلایت شده از بلوک کد زیر نحوه نوشتن این سبک ها را نشان می دهد:

styles.css

...
.modal-header {
  display: flex;
  justify-content: space-between;
  background-color: hsla(300, 80%, 90%, 0.2);
  border-radius: 1.5rem 1.5rem 0 0;
  border: 4px solid #f7baf72f;
  border-bottom: none;
}
...
.modal-content {
  color: white;
  border-radius: 0 0 1.5rem 1.5rem;
  border: 4px solid #f7baf744;
  border-top: none;
}
...

هدر و محتوا هر کدام یک رنگ هگزادسیمال با #f7baf7 دارند، اما مقادیر کانال آلفای متفاوتی دارند. رنگ حاشیه انتخابگر هدر مدال دارای یک کانال آلفا تنظیم شده روی 2f است که شفاف تر است، زیرا 00 یک مقدار کانال آلفا کاملاً شفاف است. کانال آلفای .modal-content روی 44 تنظیم شده است که باعث شفاف‌تر شدن آن می‌شود.

تغییرات خود را در styles.css ذخیره کنید و index.html را در مرورگر وب بازخوانی کنید. تصویر زیر نحوه نمایش این حاشیه ها در مرورگر را نشان می دهد:

در نهایت، یک رنگ شش رقمی هگزا دسیمال را می توان به صورت خلاصه سه رقمی نوشت، که در آن #33ccee همان #3ce است. به همین ترتیب، یک مقدار هگزادسیمال با یک کانال آلفا را می توان به صورت خلاصه چهار رقمی نوشت به طوری که #33ccee99 را بتوان به #3ce9 کوتاه کرد و یک رنگ باشد.

برای شروع کار با یک هگزادسیمال کوتاه با کانال آلفا، به stlyes.css در ویرایشگر متن خود بازگردید. سپس، به انتخابگر کلاس .modal بروید و یک ویژگی box-shadow اضافه کنید. در اینجا یک سایه بزرگ روی مدال ایجاد می کنید که سیاه است اما توسط یک کانال آلفا نرم می شود. CSS هایلایت شده را در بلوک کد زیر به بلوک انتخابگر .modal خود اضافه کنید:

styles.css

...
.modal {
  margin: auto;
  width: 90%;
  max-width: 40rem;
  background: linear-gradient(135deg, hsl(300, 40%, 20%),hsl(300, 40%, 5%));
  border-radius: 1.5rem;
  box-shadow: 0 1rem 2rem #000a;
}
...

این سایه محور x را 1 rem پایین می آورد و تاری 2 rem را پخش می کند. در مرحله بعد، مقدار #000a با خاموش کردن هر سه مقدار رنگ، یک رنگ سیاه کامل را مشخص می کند. a که معادل aa است و دارای مقدار عددی 170 است، کانال آلفا را با شفافیت تقریباً 66٪ ارائه می کند. این کار سایه را کمی کم می کند، اما آن را به اندازه کافی قابل توجه نگه می دارد تا عمق زیر مودال را فراهم کند.

حتما این افزودنی را در styles.css ذخیره کنید، سپس index.html را در مرورگر refresh کنید. مدال اکنون تعریف و عمق بیشتری دارد. تصویر زیر رندر مودال را با مقادیر رنگ های مختلف ارائه می دهد:

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

افزودن مقدار رنگ شفاف به گرادیان خطی

مقادیر مختلف رنگی که از کانال های آلفا پشتیبانی می کنند برای زمانی که یک رنگ هنوز نیاز به شناسایی دارد مفید است. با این حال، زمانی که هیچ رنگی مورد نیاز نیست، رنگ شفاف به نام مفید می شود. در این بخش، دکمه Close را در حالت مخفی می‌کنید و یک شکل X با یک خطی-gradient() ایجاد می‌کنید که همه اینها با استفاده از مقدار شفاف است.

برای شروع استفاده از مقدار شفاف، styles.css را در ویرایشگر متن خود باز کنید. سپس، به انتخابگر کلاس .modal-close که قبلا اضافه کردید بروید. در داخل انتخابگر، همانطور که در بلوک کد زیر مشخص شده است، مقدار ویژگی رنگ را از سفید به شفاف تغییر دهید:

styles.css

...
.modal-close {
  color: transparent;
}
...

این تغییر متن را از فضای خالی حذف نمی کند. فقط آن را از رندر بصری در صفحه حذف می کند.

بعد، یک مربع از پیوند نزدیک ایجاد می کنید تا جایی برای ایجاد شکل X وجود داشته باشد. با افزودن یک ویژگی نمایشگر به بلاک شروع کنید، که به <a> امکان پیکربندی بصری بیشتری را می دهد. در مرحله بعد، یک ویژگی height و width ایجاد کنید و هر کدام را روی 1.5rem قرار دهید که شکل مربع را ایجاد می کند. در نهایت، یک ویژگی overflow را به hidden اضافه کنید، که از خروج متن به خارج از ظرف و افزودن فضای تعاملی جلوگیری می کند. CSS هایلایت شده از بلوک کد زیر نحوه تنظیم مربع را نشان می دهد:

styles.css

...
.modal-close {
  color: transparent;
  display: block;
  height: 1.5rem;
  width: 1.5rem;
  overflow: hidden;
}
...

بخش آخر ایجاد شکل X با یک نمونه پس زمینه چندگانه متشکل از دو مقدار خطی-gradient() است. برای تنظیم این، کد برجسته شده را از بلوک کد زیر اضافه کنید:

styles.css

...
.modal-close {
  color: transparent;
  display: block;
  height: 1.5rem;
  width: 1.5rem;
  overflow: hidden;
  background-image:
    linear-gradient(
      to top right,
      transparent 48%,
      white 48%,
      white 52%,
      transparent 52%
    ),
    linear-gradient(
      to top left,
      transparent 48%,
      white 48%,
      white 52%,
      transparent 52%
    );
}
...

اولین چیزی که در مورد این کد باید به آن توجه کرد این است که بخش های مختلف خطی-gradient() در خطوط جداگانه قرار دارند، که برای کمک به درک و خوانایی بیشتر پس زمینه پیچیده انجام می شود. این CSS هنوز معتبر است و نیازی نیست که مقادیر در یک خط با ویژگی باشند. سپس، مقادیر تکراری درصد برای شفاف و سفید به این معنی است که درجه بندی وجود نخواهد داشت. در عوض رنگ بلافاصله از شفاف به سفید تغییر می کند. در نهایت، سمت راست و بالا دو شیب در زوایای 45 درجه ایجاد می کند که همپوشانی دارند.

این تغییر را در styles.css ذخیره کنید و index.html را در یک مرورگر وب باز کنید. خواندن سلب مسئولیت را انتخاب کنید! دکمه و مدال اکنون به جای پیوند نزدیک، یک شکل X بزرگ و نازک خواهد داشت، همانطور که در تصویر زیر ارائه شده است:

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

برای ایجاد یک حالت تعاملی برای X، به styles.css در ویرایشگر متن خود بازگردید. به دنبال انتخابگر کلاس .modal-close، یک انتخابگر گروه جدید متشکل از .modal-close:hover و .modal-close:focus ایجاد کنید. سپس، ویژگی و مقدار background-image را از .modal-close در انتخابگر جدید کپی کنید. در نهایت، بخش های 48 درصدی را به 46 درصد کاهش دهید و 52 درصد را به 54 درصد افزایش دهید.

style.css

...
.modal-close {
  ...
}

.modal-close:hover,
.modal-close:focus {
  background-image:
    linear-gradient(
      to top right,
      transparent 46%,
      white 46%,
      white 54%,
      transparent 54%
    ),
    linear-gradient(
      to top left,
      transparent 46%,
      white 46%,
      white 54%,
      transparent 54%
    );
}
...

این تغییرات را در styles.css ذخیره کنید و صفحه را در مرورگر خود بازخوانی کنید. اکنون، زمانی که X روی ماوس قرار می‌گیرد یا فوکوس صفحه‌کلید به آن داده می‌شود، اندازه شیب‌هایی که شکل را ایجاد می‌کنند افزایش می‌یابد و جلوه‌ای می‌دهد که گویی X پررنگ است. انیمیشن زیر نشان می دهد که چگونه این افکت در یک مرورگر در طول یک رویداد شناور ارائه می شود:

این بخش شما را با ویژگی transparent آشنا می کند و شما از آن برای مخفی کردن محتوا و ایجاد نماد X با استفاده از مقادیر ()linear-gradient استفاده می کنید. در بخش آخر، از مقدار شفاف بر روی یک گرادیان برای کمک به ارائه افکت انیمیشن بر روی یک عنصر استایل دکمه ای استفاده خواهید کرد.

با استفاده از حالت :hover برای انتقال بین مقادیر رنگ شفاف

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

برای ایجاد یک گرادیان متحرک، styles.css را در ویرایشگر متن خود باز کنید. سپس به انتخابگر کلاس .button بروید. کلاس .button از قبل تغییری در رنگ پس زمینه بین انتخابگر خود و دکمه .:hover دارد. ویژگی و مقدار انتقال برجسته شده را از بلوک کد زیر به فایل styles.css خود اضافه کنید:

styles.css

...
.button {
  text-decoration: none;
  display: inline-block;
  padding: 0.5rem 1.25rem;
  color: white;
  background: #4c90b2;
  border: 1px solid #2d566b;
  border-radius: 0.5rem;
  transition: background-color 250ms ease;
}

.button:hover,
.button:focus {
  background-color: #2d566b;
}
...

تغییرات خود را در styles.css ذخیره کنید و index.html را در مرورگر وب خود باز کنید. نگه داشتن دکمه با مکان نما اکنون باعث می شود که رنگ پس زمینه بین آبی روشن و آبی تیره متحرک شود. انیمیشن زیر نشان می دهد که چگونه این در مرورگر ارائه می شود:

اکنون، برای افزودن گرادیان، به styles.css در ویرایشگر متن خود برگردید. به انتخابگر دکمه .برگردید و یک ویژگی پس زمینه تصویر با یک خطی-gradient() اضافه کنید. جهت گرادیان به سمت پایین خواهد بود و با یک کانال آلفا آبی روشن شروع می شود و سپس به سمت شفاف می رود. انیمیشن با کانال آلفا آبی تیره به پایان می رسد. CSS هایلایت شده در بلوک کد زیر نحوه نوشتن این گرادیان را نشان می دهد:

styles.css

...
.button {
  text-decoration: none;
  display: inline-block;
  padding: 0.5rem 1.25rem;
  color: white;
  background: #4c90b2;
  border: 1px solid #2d566b;
  border-radius: 0.5rem;
  background-image:
    linear-gradient(
      to bottom,
      hsla(200, 40%, 80%, 0.4),
      transparent,
      hsla(200, 40%, 20%, 0.6)
    );
  transition: background-color 250ms ease;
}
...

این گرادیان رنگ پس‌زمینه را پوشش می‌دهد و به این شکل ظاهر می‌شود که گرادیان از آبی روشن به آبی میانی و سپس آبی تیره می‌گذرد. هنگامی که دکمه با یک رویداد تعاملی روبرو می شود، رنگ پس زمینه به آبی تیره تر تغییر می کند و این توهم ایجاد می کند که شیب کلی تیره شده است.

این به روز رسانی ها را در styles.css ذخیره کنید و سپس به فایل index.html خود در مرورگر بازگردید و صفحه را بازخوانی کنید. همانطور که در انیمیشن زیر نشان داده شده است، هنگامی که مکان نما روی دکمه حرکت می کند، به نظر می رسد گرادیان از یک گرادیان آبی روشن به یک گرادیان آبی تیره متحرک می شود:

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

نتیجه

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

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

برچسب‌ها:CSSاستایل‌سازی HTML با CSSانواع سرور مجازیایجاد سرور مجازیایجاد یک Modal در CSSخرید سرور لینوکسراه اندازی پایه HTML و CSSسرور مجازی

 

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

 

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

 

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

 

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

 

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

 

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

 

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

  • behnam gol mohamadi
  • ۰
  • ۰

 نحوه استقرار یک برنامه React در پلتفرم اپلیکیشن vpsgol

ورود به سایت

 

معرفی

پلتفرم برنامه vpsgol یک محصول پلتفرم به عنوان سرویس (PaaS) است که به شما امکان می دهد برنامه ها را از یک مخزن منبع پیکربندی و استقرار دهید. پس از پیکربندی برنامه شما، vpsgol برنامه را با هر تغییری ایجاد و مستقر می کند و به شما از مزایای یک وب سرور کامل و خط لوله استقرار با حداقل پیکربندی می دهد. این می تواند یک راه سریع و کارآمد برای استقرار برنامه های React شما باشد، و اگر از React برای ساختن سایتی بدون باطن استفاده می کنید، می توانید از لایه رایگان App Platform استفاده کنید.

در این آموزش، یک برنامه React را با استفاده از لایه Starter رایگان در پلتفرم برنامه vpsgol اجرا می‌کنید. با Create React App یک برنامه می‌سازید، کد را به یک مخزن GitHub فشار می‌دهید، سپس برنامه را به عنوان یک برنامه vpsgol پیکربندی می‌کنید. شما برنامه را به کد منبع خود متصل می کنید و پروژه را به عنوان مجموعه ای از فایل های ثابت اجرا می کنید.

در پایان این آموزش، می‌توانید یک برنامه React را به گونه‌ای پیکربندی کنید که در هر فشار به شاخه اصلی یک مخزن GitHub به طور خودکار مستقر شود.

پیش نیازها

  • در ماشین محلی خود، به یک محیط توسعه نیاز دارید که Node.js را اجرا کند. این آموزش بر روی Node.js نسخه 10.22.0 و npm نسخه 6.14.6 تست شده است.
  • Git روی دستگاه محلی شما نصب شده است.
  • یک حساب vpsgol.
  • یک حساب کاربری در GitHub که می توانید با رفتن به صفحه Create your Account ایجاد کنید.

مرحله 1 – ایجاد یک پروژه React

در این مرحله، یک برنامه React با استفاده از Create React App ایجاد می‌کنید و یک نسخه قابل استقرار از آن می‌سازید.

برای شروع، یک برنامه جدید با استفاده از Create React App در دستگاه محلی خود ایجاد کنید. در ترمینال، دستور ساخت اپلیکیشنی به نام vpsgol-app را اجرا کنید:

npx create-react-app vpsgol-app

دستور npx یک بسته Node را بدون بارگیری در دستگاه شما اجرا می کند. اسکریپت create-react-app همه وابستگی ها را نصب می کند و یک پروژه پایه را در فهرست راهنمای دیجیتال-اقیانوس-برنامه می سازد. برای اطلاعات بیشتر در مورد Create React App، آموزش نحوه راه اندازی یک پروژه React با ایجاد برنامه React را بررسی کنید.

کد وابستگی ها را دانلود می کند و یک پروژه پایه ایجاد می کند. ممکن است چند دقیقه طول بکشد تا تمام شود. پس از تکمیل، یک پیام موفقیت آمیز دریافت خواهید کرد. اگر به جای npm از نخ استفاده کنید، نسخه شما ممکن است کمی متفاوت باشد:

 

Output

Success! Created vpsgol-app at your_file_path/vpsgol-app
Inside that directory, you can run several commands:

  npm start
    Starts the development server.

  npm build
    Bundles the app into static files for production.

  npm test
    Starts the test runner.

  npm eject
    Removes this tool and copies build dependencies, configuration files
    and scripts into the app directory. If you do this, you can’t go back!

We suggest that you begin by typing:

  cd vpsgol-app
  npm start

Happy hacking!

اکنون که یک پروژه پایه دارید، آن را به صورت محلی اجرا کنید تا بتوانید نحوه نمایش پروژه در سرور را آزمایش کنید. ابتدا به دایرکتوری تغییر دهید:

cd vpsgol-app

پروژه را با استفاده از اسکریپت شروع npm اجرا کنید:

npm start

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

 

Output

Compiled successfully!

You can now view vpsgol-app in the browser.

  Local:            http://localhost:3000
  On Your Network:  http://192.168.1.110:3000

Note that the development build is not optimized.
To create a production build, use npm build.

یک مرورگر به http://localhost:3000 باز کنید و پروژه خود را پیدا خواهید کرد:

پروژه را با تایپ کردن CTRL+C یا ⌘+C در ترمینال متوقف کنید.

اکنون که یک برنامه React در حال کار دارید، می توانید کد را به یک مخزن GitHub فشار دهید.

مرحله 2 – فشار دادن کد به GitHub

برای استقرار برنامه شما، App Platform کد منبع شما را از یک مخزن کد میزبانی شده بازیابی می کند. در این مرحله، کد برنامه React خود را به یک مخزن GitHub فشار می‌دهید تا App Platform بتواند بعداً به آن دسترسی داشته باشد.

به حساب GitHub خود وارد شوید. پس از ورود به سیستم، یک مخزن جدید به نام vpsgol-app ایجاد کنید. می توانید مخزن را خصوصی یا عمومی کنید:

Create React App به طور خودکار پروژه شما را با git مقداردهی اولیه می کند، بنابراین می توانید تنظیم کنید تا کد را مستقیماً به GitHub فشار دهید. ابتدا مخزن مورد نظر خود را با دستور زیر اضافه کنید:

git remote add origin https://github.com/your_name/vpsgol-app.git

 

در مرحله بعد، اعلام کنید که می‌خواهید با موارد زیر به شاخه اصلی بروید:

git branch -M main

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

git push -u origin main

هنگامی که از شما خواسته شد کد خود را فشار دهید، اعتبار GitHub خود را وارد کنید.

هنگامی که کد را فشار می دهید یک پیام موفقیت آمیز دریافت خواهید کرد. پیام شما کمی متفاوت خواهد بود:

 

Output

Counting objects: 22, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (22/22), done.
Writing objects: 100% (22/22), 187.50 KiB | 6.94 MiB/s, done.
Total 22 (delta 0), reused 0 (delta 0)
To github.com:your_name/vpsgol-app.git
   4011c66..647d2e1  main -> main

اکنون کد خود را در مخزن GitHub کپی کرده اید.

در این مرحله، پروژه خود را به GitHub هل دادید تا بتوانید با استفاده از vpsgol Apps به آن دسترسی داشته باشید. در مرحله بعد، با استفاده از پروژه خود یک برنامه vpsgol جدید ایجاد می کنید و استقرار خودکار را تنظیم می کنید.

مرحله 3 – استقرار در پلتفرم برنامه vpsgol

در این مرحله، یک برنامه React را در پلتفرم اپلیکیشن vpsgol مستقر خواهید کرد. شما مخزن GitHub خود را به vpsgol متصل می کنید، پروژه را برای ساخت پیکربندی می کنید و پروژه اولیه خود را می سازید. پس از اجرای پروژه، هر تغییر باعث ایجاد یک ساخت و به روز رسانی جدید می شود.

در پایان این مرحله، می‌توانید برنامه‌ای را با تحویل مداوم درvpsgol اجرا کنید.

برای شروع، وارد حساب vpsgol خود شوید و دکمه Create را فشار دهید، سپس Apps را انتخاب کنید:

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

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

پس از انتخاب مخزن، دوباره به رابط vpsgol متصل خواهید شد. vpsgol-app را از لیست مخازن انتخاب کنید، سپس Next را فشار دهید. این برنامه شما را مستقیماً به مخزن GitHub متصل می کند:

اکنون که مخزن خود را انتخاب کرده اید، باید اپلیکیشن vpsgol را پیکربندی کنید. در این مثال، سرور با انتخاب نیویورک در قسمت Region، در آمریکای شمالی مستقر خواهد شد و شاخه استقرار اصلی خواهد بود. برای برنامه خود، منطقه ای را انتخاب کنید که به موقعیت مکانی فیزیکی شما نزدیک است:.

برای این آموزش، تغییرات کد Autodeploy را بررسی می کنید. هر بار که کد را به‌روزرسانی می‌کنید، این به طور خودکار برنامه شما را بازسازی می‌کند.

Next را فشار دهید تا به صفحه پیکربندی برنامه خود بروید.

در مرحله بعد، نوع برنامه ای را که اجرا می کنید انتخاب کنید. از آنجایی که React دارایی های استاتیک را می سازد، Static Site را از منوی کشویی در قسمت Type انتخاب کنید.

توجه: Create React App یک تولیدکننده سایت ایستا مانند گتسبی نیست، اما شما از دارایی های ثابت استفاده می کنید، زیرا سرور نیازی به اجرای کدهای سمت سرور مانند Ruby یا PHP ندارد. برنامه از Node برای اجرای مراحل نصب و ساخت استفاده می کند، اما کد برنامه را در لایه آزاد اجرا نمی کند.

شما همچنین می توانید از یک اسکریپت ساخت سفارشی استفاده کنید. اما در این حالت، می‌توانید از دستور پیش‌فرض npm run build استفاده کنید. اگر اسکریپت ساخت متفاوتی برای تضمین کیفیت (QA) یا یک محیط تولید دارید، ممکن است بخواهید یک اسکریپت ساخت سفارشی ایجاد کنید:

Next را فشار دهید تا به صفحه نهایی و راه اندازی بروید.

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

دکمه Launch Starter App را فشار دهید و vpsgol شروع به ساخت برنامه شما می کند.

این برنامه اسکریپت های ساخت npm ci و npm را در مخزن شما اجرا می کند. این همه وابستگی ها را دانلود می کند و فهرست ساخت را با یک نسخه کامپایل شده و کوچک شده از همه جاوا اسکریپت، فایل های HTML و سایر دارایی های شما ایجاد می کند. همچنین می توانید یک اسکریپت سفارشی در package.json خود ایجاد کنید و دستورات را در تب Components برنامه خود در App Platform به روز کنید.

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

برای دسترسی به پروژه خود در مرورگر، Live App را فشار دهید. این پروژه مانند پروژه ای است که به صورت محلی آزمایش کرده اید، اما با یک URL ایمن در وب به صورت زنده نمایش داده می شود:

 

اکنون که پروژه شما پیکربندی شده است، هر زمان که تغییری در مخزن پیوند داده شده ایجاد کنید، یک بیلد جدید اجرا خواهید کرد. در این حالت، اگر تغییری را به شاخه اصلی فشار دهید، vpsgol به طور خودکار یک استقرار جدید را اجرا می کند. نیازی به ورود نیست؛ به محض اینکه تغییر را فشار دهید اجرا می شود:

در این مرحله، یک برنامه vpsgol جدید در پلتفرم App ایجاد کردید. شما حساب GitHub خود را متصل کردید و برنامه را برای ساخت شعبه اصلی پیکربندی کردید. پس از پیکربندی برنامه، متوجه شدید که برنامه پس از هر تغییر، یک بیلد جدید را مستقر می کند.

نتیجه

پلتفرم برنامه vpsgol ابزاری سریع برای استقرار برنامه ها در اختیار شما قرار می دهد. با یک تنظیم اولیه کوچک، برنامه شما به طور خودکار پس از هر تغییر مستقر می شود. این می‌تواند همراه با React برای راه‌اندازی سریع برنامه وب شما استفاده شود.

برچسب‌ها:App PlatformNode.jsاتصال به سرور مجازی لینوکسایجاد سرور مجازیبرنامه Reactخرید سرور مجازیسرور مجازیسرویس (PaaS)

 

 

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

 

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

 

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

 

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

 

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

 

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

 

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

  • behnam gol mohamadi