سرور مجازی

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

  • ۰
  • ۰

نحوه استفاده از 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
  • ۰
  • ۰

نحوه راه اندازی یک سرور پخش ویدئو با استفاده از Nginx-RTMP در اوبونتو 20.04

ورود به سایت

معرفی

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

در این آموزش، نحوه پیکربندی وب سرور Nginx را برای میزبانی یک جریان ویدیوی RTMP مستقل که می‌تواند در برنامه‌های مختلف لینک و مشاهده شود، پیکربندی کنید. RTMP، پروتکل پیام‌رسانی بلادرنگ، اصول اکثر جریان‌های ویدئویی اینترنتی را تعریف می‌کند. همچنین یاد خواهید گرفت که چگونه جریان های HLS و DASH را میزبانی کنید که از پلتفرم های مدرن تری با استفاده از همین فناوری پشتیبانی می کنند.

پیش نیازها

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

  • یک سرور اوبونتو 20.04 و یک کاربر غیر ریشه با امتیازات sudo.
  • Nginx نصب شده است، به دنبال نحوه نصب Nginx در اوبونتو 20.04.

این آموزش از نام دامنه نگهدارنده your_domain برای URL ها و نام هاست استفاده می کند. در حین کار با آموزش، نام دامنه یا آدرس IP خود را جایگزین کنید.

مرحله 1 – نصب و پیکربندی Nginx-RTMP

اکثر ابزارهای مدرن جریان از پروتکل RTMP پشتیبانی می کنند، که پارامترهای اساسی یک جریان ویدئوی اینترنتی را تعریف می کند. وب سرور Nginx شامل ماژولی است که به شما امکان می دهد یک جریان RTMP با حداقل پیکربندی از یک URL اختصاصی ارائه دهید، درست مانند دسترسی HTTP به صفحات وب به طور پیش فرض. ماژول Nginx RTMP به طور خودکار در Nginx گنجانده نشده است، اما در Ubuntu 20.04 و اکثر توزیع‌های لینوکس دیگر می‌توانید آن را به عنوان یک بسته اضافی نصب کنید.

با اجرای دستورات زیر به عنوان یک کاربر غیر ریشه برای به روز رسانی لیست بسته های خود و نصب ماژول Nginx شروع کنید:

sudo apt update
sudo apt install libnginx-mod-rtmp

نصب ماژول به طور خودکار شروع به ارائه یک جریان نمی کند. شما باید یک بلوک پیکربندی را به فایل پیکربندی Nginx خود اضافه کنید که مکان و نحوه در دسترس بودن جریان را مشخص کند.

با استفاده از nano یا ویرایشگر متن مورد علاقه خود، فایل پیکربندی اصلی Nginx، /etc/nginx/nginx.conf را باز کنید و این بلوک پیکربندی را به انتهای فایل اضافه کنید:

sudo nano /etc/nginx/nginx.conf

/etc/nginx/nginx.conf

. . .
rtmp {
        server {
                listen 1935;
                chunk_size 4096;
                allow publish 127.0.0.1;
                deny publish all;

                application live {
                        live on;
                        record off;
                }
        }
}
  • listen 1935 به این معنی است که RTMP برای اتصالات در پورت 1935 که استاندارد است گوش می دهد.
  • chunk_size 4096 به این معنی است که RTMP داده ها را در بلوک های 4 کیلوبایتی ارسال می کند که این نیز استاندارد است.
  • اجازه انتشار 127.0.0.1 و انکار انتشار همه به این معنی است که سرور فقط اجازه می دهد ویدیو از همان سرور منتشر شود تا دیگر کاربران جریان های خود را تحت فشار قرار ندهند.
  • application live یک بلوک برنامه را تعریف می کند که در مسیر /live URL در دسترس خواهد بود.
  • live on حالت زنده را فعال می‌کند تا چندین کاربر بتوانند به طور همزمان به جریان شما متصل شوند، یک فرض اولیه پخش ویدیو.
  • ضبط کردن عملکرد ضبط Nginx-RTMP را غیرفعال می کند، به طوری که تمام جریان ها به طور پیش فرض به طور جداگانه در دیسک ذخیره نمی شوند.

ذخیره کنید و فایل را ببندید. اگر از nano استفاده می کنید، Ctrl+X را فشار دهید، سپس وقتی از شما خواسته شد، Y و Enter را فشار دهید.

این شروع پیکربندی RTMP شما را فراهم می کند. به طور پیش فرض، به پورت 1935 گوش می دهد، به این معنی که باید آن پورت را در فایروال خود باز کنید. اگر ufw را به عنوان بخشی از تنظیمات اولیه سرور خود پیکربندی کرده اید، دستور زیر را اجرا کنید.

sudo ufw allow 1935/tcp

اکنون می توانید Nginx را با تغییرات خود بارگیری مجدد کنید:

sudo systemctl reload nginx.service

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

مرحله 2 – ارسال ویدیو به سرور RTMP شما

راه های مختلفی برای ارسال ویدیو به سرور RTMP وجود دارد. یکی از گزینه‌ها استفاده از ffmpeg، یک ابزار محبوب صوتی و تصویری خط فرمان، برای پخش مستقیم یک فایل ویدیویی بر روی سرور است. اگر قبلاً یک فایل ویدیویی روی سرور ندارید، می‌توانید با استفاده از youtube-dl، یک ابزار خط فرمان برای ضبط ویدیو از پلتفرم‌های پخش جریانی مانند YouTube، آن را دانلود کنید. برای استفاده از youtube-dl، به نصب پایتون به روز روی سرور خود نیز نیاز دارید.

ابتدا پایتون و مدیریت بسته آن یعنی pip را نصب کنید:

sudo apt install python3-pip

در مرحله بعد، از pip برای نصب youtube-dl استفاده کنید:

pip install youtube-dl

اکنون می توانید از youtube-dl برای دانلود یک ویدیو از یوتیوب استفاده کنید. اگر موردی را در ذهن ندارید، این ویدیو را با معرفی پلتفرم اپلیکیشن DigitalOcean امتحان کنید:

youtube-dl https://www.youtube.com/watch?v=iom_nhYQIYk

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

 

Output

[youtube] iom_nhYQIYk: Downloading webpage
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Destination: Introducing App Platform by DigitalOcean-iom_nhYQIYk.f137.mp4
[download] 100% of 32.82MiB in 08:40
[download] Destination: Introducing App Platform by DigitalOcean-iom_nhYQIYk.f251.webm
[download] 100% of 1.94MiB in 00:38
[ffmpeg] Merging formats into "Introducing App Platform by DigitalOcean-iom_nhYQIYk.mkv"
Deleting original file Introducing App Platform by DigitalOcean-iom_nhYQIYk.f137.mp4 (pass -k to keep)
Deleting original file Introducing App Platform by DigitalOcean-iom_nhYQIYk.f251.webm (pass -k to keep)

اکنون باید یک فایل ویدیویی در فهرست فعلی خود با عنوانی مانند معرفی پلتفرم برنامه توسط DigitalOcean-iom_nhYQIYk.mkv داشته باشید. برای استریم کردن آن، باید ffmpeg را نصب کنید:

sudo apt install ffmpeg

و از ffmpeg برای ارسال آن به سرور RTMP خود استفاده کنید:

ffmpeg -re -i “Introducing App Platform by DigitalOcean-iom_nhYQIYk.mkv” -c:v copy -c:a aac -ar 44100 -ac 1 -f flv rtmp://localhost/live/stream

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

  • -re مشخص می کند که ورودی با نرخ فریم اصلی خود خوانده می شود.
  • -i “Introducing App Platform by DigitalOcean-iom_nhYQIYk.mkv” مسیر فایل ورودی ما را مشخص می کند.
  • -c:v روی کپی تنظیم شده است، به این معنی که شما در حال کپی کردن فرمت ویدیویی هستید که از YouTube به صورت بومی دریافت کرده اید.
  • -c:a پارامترهای دیگری دارد، یعنی aac -ar 44100 -ac 1، زیرا باید صدا را به یک فرمت مناسب RTMP نمونه برداری کنید. aac یک کدک صوتی با پشتیبانی گسترده است، 44100 هرتز یک فرکانس رایج است، و -ac 1 اولین نسخه از مشخصات AAC را برای اهداف سازگاری مشخص می کند.
  • -f flv برای حداکثر سازگاری با RTMP، ویدیو را در یک ظرف با فرمت flv می پیچد.

این ویدیو به rtmp://localhost/live/stream ارسال می‌شود، زیرا شما بلوک پیکربندی زنده را در مرحله 1 تعریف کرده‌اید، و پخش یک URL دلخواه برای این ویدیو است.

در حالی که ffmpeg در حال پخش ویدیو است، کدهای زمانی را چاپ می کند:

 

Output

frame=  127 fps= 25 q=-1.0 size=     405kB time=00:00:05.00 bitrate= 662.2kbits/s speed=frame=  140 fps= 25 q=-1.0 size=     628kB time=00:00:05.52 bitrate= 931.0kbits/s speed=frame=  153 fps= 25 q=-1.0 size=     866kB time=00:00:06.04 bitrate=1173.1kbits/s speed=

این خروجی استاندارد ffmpeg است. اگر ویدیو را به فرمت دیگری تبدیل می‌کردید، اینها ممکن است برای درک میزان کارآمدی نمونه‌گیری مجدد ویدیو مفید باشند، اما در این مورد، فقط می‌خواهید ببینید که به طور مداوم پخش می‌شود. با استفاده از این ویدئوی نمونه، باید fps دقیق = 25 افزایش دریافت کنید.

در حالی که ffmpeg در حال اجرا است، می توانید از پخش کننده ویدیو به جریان RTMP خود متصل شوید. اگر VLC، mpv، یا پخش کننده رسانه دیگری را به صورت محلی نصب کرده اید، باید بتوانید جریان خود را با باز کردن URL rtmp://your_domain/live/stream در پخش کننده رسانه خود مشاهده کنید. پس از اتمام پخش ویدیو توسط ffmpeg، پخش جریانی شما پایان می یابد. اگر می‌خواهید به طور نامحدود به چرخش ادامه دهد، می‌توانید -stream_loop -1 را به ابتدای دستور ffmpeg خود اضافه کنید.

اکنون که یاد گرفتید منابع ویدئویی استاتیک را از خط فرمان استریم کنید، نحوه پخش ویدئو از منابع پویا را با استفاده از OBS روی دسکتاپ یاد خواهید گرفت.

مرحله 3 – پخش ویدیو به سرور خود از طریق OBS (اختیاری)

پخش جریانی از طریق ffmpeg زمانی راحت است که یک ویدیو آماده دارید که می‌خواهید پخش کنید، اما پخش زنده می‌تواند بسیار پویاتر باشد. محبوب ترین نرم افزار برای پخش زنده OBS یا Open Broadcaster Software است – این نرم افزار رایگان، منبع باز و بسیار قدرتمند است.

OBS یک برنامه دسکتاپ است و از رایانه محلی شما به سرور شما متصل می شود.

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

Streaming Service: Custom
Server: rtmp://your_domain/live
Play Path/Stream Key: obs_stream

obs_stream مسیری است که خودسرانه انتخاب شده است – در این مورد، ویدیوی شما در rtmp://your_domain/live/obs_stream در دسترس خواهد بود. شما نیازی به فعال کردن احراز هویت ندارید، اما باید یک ورودی اضافی به لیست سفید IP که در مرحله 1 پیکربندی کرده اید اضافه کنید.

بر روی سرور، فایل پیکربندی اصلی Nginx، /etc/nginx/nginx.conf را باز کنید و یک ورودی اجازه انتشار اضافی برای آدرس IP محلی خود اضافه کنید. اگر آدرس IP محلی خود را نمی دانید، بهتر است فقط به سایتی مانند What’s my IP بروید که می تواند به شما بگوید از کجا به آن دسترسی داشته اید:

sudo nano /etc/nginx/nginx.conf

/etc/nginx/nginx.conf

. . .
                allow publish 127.0.0.1;
                allow publish your_local_ip_address;
                deny publish all;
. . .

فایل را ذخیره کرده و ببندید، سپس Nginx را دوباره بارگیری کنید:

sudo systemctl reload nginx.service

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

مرحله 4 – افزودن مانیتورینگ به پیکربندی (اختیاری)

اکنون که Nginx را برای پخش جریانی ویدیو با استفاده از ماژول Nginx-RTMP پیکربندی کرده اید، گام بعدی رایج این است که صفحه آمار RTMP را فعال کنید. به جای افزودن جزئیات بیشتر و بیشتر پیکربندی به فایل اصلی nginx.conf، Nginx به شما امکان می دهد پیکربندی های هر سایت را به فایل های جداگانه در یک زیر شاخه به نام sites-available/ اضافه کنید. در این مورد، یکی به نام rtmp ایجاد خواهید کرد:

sudo nano /etc/nginx/sites-available/rtmp

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

/etc/nginx/sites-available/rtmp

server {
    listen 8080;
    server_name  localhost;

    # rtmp stat
    location /stat {
        rtmp_stat all;
        rtmp_stat_stylesheet stat.xsl;
    }
    location /stat.xsl {
        root /var/www/html/rtmp;
    }

    # rtmp control
    location /control {
        rtmp_control all;
    }
}

ذخیره کنید و فایل را ببندید. فایل stat.xsl از این بلوک پیکربندی برای استایل دادن و نمایش یک صفحه آمار RTMP در مرورگر شما استفاده می شود. توسط کتابخانه libnginx-mod-rtmp که قبلا نصب کرده اید ارائه می شود، اما به طور پیش فرض فشرده می شود، بنابراین باید آن را از حالت فشرده خارج کنید و در پوشه /var/www/html/rtmp قرار دهید تا با پیکربندی بالا مطابقت داشته باشد. . توجه داشته باشید که می توانید اطلاعات اضافی درباره هر یک از این گزینه ها را در اسناد Nginx-RTMP بیابید.

پوشه /var/www/html/rtmp را ایجاد کنید و سپس فایل stat.xsl.gz را با دستورات زیر از حالت فشرده خارج کنید:

sudo mkdir /var/www/html/rtmp
sudo gunzip -c /usr/share/doc/libnginx-mod-rtmp/examples/stat.xsl.gz > /var/www/html/rtmp/stat.xsl`

در نهایت، برای دسترسی به صفحه آماری که اضافه کردید، باید پورت دیگری را در فایروال خود باز کنید. به طور خاص، دستورالعمل listen با پورت 8080 پیکربندی شده است، بنابراین باید یک قانون برای دسترسی به Nginx در آن پورت اضافه کنید. با این حال، احتمالاً نمی‌خواهید دیگران بتوانند به صفحه آمار شما دسترسی داشته باشند، بنابراین بهتر است فقط به آدرس IP خود اجازه دهید. دستور زیر را اجرا کنید:

sudo ufw allow from your_ip_address to any port http-alt

در مرحله بعد، باید این پیکربندی جدید را فعال کنید. قرارداد Nginx ایجاد پیوندهای نمادین (مانند میانبرها) از فایل‌های موجود در سایت‌های موجود/به پوشه دیگری به نام sites-enabled/هنگامی که تصمیم به فعال یا غیرفعال کردن آن‌ها دارید، است. با استفاده از مسیرهای کامل برای وضوح، این پیوند را ایجاد کنید:

sudo ln -s /etc/nginx/sites-available/rtmp /etc/nginx/sites-enabled/rtmp

اکنون می توانید دوباره Nginx را برای پردازش تغییرات خود بارگیری مجدد کنید:

sudo systemctl reload nginx.service

اکنون باید بتوانید در مرورگر به http://your_domain:8080/stat بروید تا صفحه آمار RTMP را ببینید. در حین پخش ویدیو از صفحه بازدید کرده و آن را بازخوانی کنید و مشاهده کنید که آمار جریان تغییر می کند.

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

مرحله 5 – ایجاد جریان های مدرن برای مرورگرها (اختیاری)

به عنوان آخرین مرحله، ممکن است بخواهید از پروتکل های جریان جدیدتر پشتیبانی اضافه کنید تا کاربران بتوانند مستقیماً با استفاده از یک مرورگر وب، ویدیو را از سرور شما پخش کنند. دو پروتکل وجود دارد که می توانید برای ایجاد جریان های ویدئویی مبتنی بر HTTP از آنها استفاده کنید: HLS اپل و MPEG DASH. هر دو مزایا و معایبی دارند، بنابراین احتمالاً می خواهید از هر دو پشتیبانی کنید.

ماژول Nginx-RTMP از هر دو استاندارد پشتیبانی می کند. برای افزودن پشتیبانی HLS و DASH به سرور خود، باید بلوک rtmp را در فایل nginx.conf خود تغییر دهید. /etc/nginx/nginx.conf را با استفاده از nano یا ویرایشگر دلخواه خود باز کنید، سپس دستورالعمل های هایلایت شده زیر را اضافه کنید:

sudo nano /etc/nginx/nginx.conf

/etc/nginx/nginx.conf

. . .
rtmp {
        server {
. . .
                application live {
                        live on;
                        record off;
                        hls on;
                        hls_path /var/www/html/stream/hls;
                        hls_fragment 3;
                        hls_playlist_length 60;

                        dash on;
                        dash_path /var/www/html/stream/dash;
                }
        }
}
. . .

ذخیره کنید و فایل را ببندید. بعد، این را به پایین سایت های خود اضافه کنید-available/rtmp:

sudo nano /etc/nginx/sites-available/rtmp

/etc/nginx/sites-available/rtmp

. . .
server {
    listen 8088;

    location / {
        add_header Access-Control-Allow-Origin *;
        root /var/www/html/stream;
    }
}

types {
    application/dash+xml mpd;
}

ذخیره کنید و فایل را ببندید. توجه داشته باشید که در اینجا از پورت 8088 استفاده کنید، که یکی دیگر از انتخاب‌های دلخواه برای این آموزش برای جلوگیری از تضاد با سرویس‌هایی است که ممکن است در پورت 80 یا 443 اجرا شود.

sudo ufw allow 8088/tcp

در نهایت، یک دایرکتوری جریان در ریشه وب خود ایجاد کنید تا با بلوک پیکربندی مطابقت داشته باشد تا Nginx بتواند فایل های لازم برای HLS و DASH را ایجاد کند:

sudo mkdir /var/www/html/stream

بارگیری مجدد Nginx:

sudo systemctl reload nginx

اکنون باید یک جریان HLS در http://your_domain:8088/hls/stream.m3u8 و یک جریان DASH در http://your_domain:8088/dash/stream.mpd موجود باشد. این نقاط پایانی هر ابرداده لازم را در بالای فید ویدیوی RTMP شما به منظور پشتیبانی از APIهای مدرن تولید می کنند.

نتیجه

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

تقریباً تمام پخش ویدیوی اینترنتی در بالای RTMP، HLS و DASH پیاده‌سازی می‌شود و با استفاده از رویکردی که در این آموزش بررسی کرده‌اید، می‌توانید جریان خود را از طریق سایر سرویس‌های پخش ارائه کنید یا به هر طریق دیگری که می‌خواهید آن را در معرض دید قرار دهید. در مرحله بعد، می توانید به پیکربندی Nginx به عنوان یک پروکسی معکوس توجه کنید تا برخی از این نقاط پایانی مختلف ویدیو را به عنوان زیر دامنه در دسترس قرار دهید.

 

 

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/

 

برچسب‌ها:Nginx-RTMPVPS یا سرور مجازیاتصال به سرور مجازی لینوکسانواع سرور مجازیخرید سرور مجازیراه اندازی سرورراه اندازی یک سرور پخش ویدئوسرور RTMPسرور مجازی آمریکانصب و پیکربندی Nginx-RTMPوب سرور Nginx

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه ایجاد یک سرور Minecraft در اوبونتو 18.04

  ورود به سایت

معرفی

Minecraft یک بازی ویدیویی محبوب sandbox است. این برنامه که در ابتدا در سال 2009 منتشر شد، به بازیکنان اجازه می‌دهد در دنیایی سه بعدی بسازند، بسازند، بسازند و زنده بمانند. از اوایل سال 2022، این بازی پرفروش ترین بازی ویدیویی تمام دوران بود. در این آموزش شما سرور Minecraft خود را ایجاد می کنید تا شما و دوستانتان با هم بازی کنید. به طور خاص، شما بسته های نرم افزاری لازم را برای اجرای Minecraft نصب می کنید، سرور را برای اجرا پیکربندی می کنید و سپس بازی را اجرا می کنید.

همچنین، می‌توانید سرور DigitalOcean’s One-Click Minecraft: Java Edition را به‌عنوان مسیر نصب دیگری کاوش کنید.

پیش نیازها

برای پیروی از این راهنما، شما نیاز دارید:

  • یک سرور با نصب جدید اوبونتو 18.04، یک کاربر غیر ریشه با امتیازات sudo و SSH فعال.
  • یک کپی از Minecraft Java Edition که بر روی یک ماشین محلی Mac، Windows یا Linux نصب شده است.

مرحله 1 – بسته های نرم افزاری لازم را نصب کرده و فایروال را پیکربندی کنید

با شروع اولیه سرور، اولین قدم شما نصب جاوا است. برای اجرای Minecraft به آن نیاز دارید. به‌طور پیش‌فرض، اوبونتو 18.04 نسخه جدید جاوا را برای اجرای جدیدترین نسخه‌های Minecraft ارائه نمی‌کند. خوشبختانه، نگهبانان شخص ثالثی وجود دارند که به ساخت بسته‌های جاوای جدیدتر برای نسخه‌های قدیمی‌تر اوبونتو ادامه می‌دهند و می‌توانید با افزودن PPA یا آرشیو بسته‌های شخصی آن‌ها به فهرست منابع بسته خود، آن‌ها را نصب کنید. با دستور زیر می توانید این کار را انجام دهید:

sudo add-apt-repository ppa:openjdk-r/ppa

سپس، منابع بسته خود را به‌روزرسانی کنید تا این افزوده را منعکس کند:

sudo apt update

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

sudo apt install openjdk-17-jre-headless

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

sudo apt install screen

اکنون که بسته‌ها را نصب کرده‌اید، باید فایروال را فعال کنیم تا ترافیک به سرور Minecraft ما وارد شود. در راه اندازی اولیه سرور که انجام دادید، فقط به ترافیک ssh اجازه دادید. اکنون باید اجازه دهید که ترافیک از طریق پورت 25565 وارد شود، که پورت پیش فرضی است که Minecraft برای اجازه دادن به اتصالات استفاده می کند. در برخی موارد ufw از قوانین ترافیکی نام‌گذاری شده استفاده می‌کند، مانند ssh، که همیشه به طور پیش‌فرض از پورت 22 استفاده می‌کند، اما در موارد کمتر رایج مانند این، شماره پورت را به صورت دستی مشخص می‌کنیم. با اجرای دستور زیر قانون فایروال لازم را اضافه کنید:

sudo ufw allow 25565

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

مرحله 2 – دانلود آخرین نسخه Minecraft

اکنون باید نسخه فعلی سرور Minecraft را دانلود کنید. می‌توانید این کار را با رفتن به وب‌سایت Minecraft و کپی کردن پیوندی که می‌گوید دانلود minecraft_server.X.X.X.jar انجام دهید، جایی که Xها آخرین نسخه سرور هستند.

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

wget https://launcher.mojang.com/v1/objects/125e5adf40c659fd3bce3e66e67a16bb49ecc1b9/server.jar

برنامه سرور به عنوان server.jar دانلود می شود. اگر نیاز به مدیریت نسخه‌های Minecraft دارید، یا اگر می‌خواهید سرور Minecraft خود را ارتقا دهید، ممکن است مفید باشد که server.jar دانلود شده را به minecraft_server_1.18.1.jar تغییر نام دهید و اعداد نسخه برجسته شده را با نسخه‌ای که تازه دانلود کرده‌اید مطابقت دهید:

mv server.jar minecraft_server_1.18.1.jar

اگر می‌خواهید نسخه قدیمی‌تر Minecraft را دانلود کنید، می‌توانید آن‌ها را در mcversions.net بایگانی کنید. اما این آموزش بر آخرین نسخه فعلی تمرکز خواهد کرد. اکنون که دانلود خود را دارید، بیایید پیکربندی سرور Minecraft خود را شروع کنیم.

مرحله 3 – پیکربندی و اجرای سرور Minecraft

اکنون که jar Minecraft را دانلود کرده اید، آماده اجرای آن هستید.

ابتدا یک جلسه صفحه نمایش را با اجرای دستور screen شروع کنید:

screen

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

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

java -Xms1024M -Xmx1024M -jar minecraft_server_1.18.1.jar nogui

قبل از بررسی خروجی این دستور، بیایید نگاهی دقیق‌تر به همه این آرگومان‌های خط فرمان که سرور شما را تنظیم می‌کنند بیاندازیم:

  • Xms1024M – این سرور را به گونه ای پیکربندی می کند که با 1024 مگابایت یا 1 گیگابایت رم در حال اجرا باشد. اگر می خواهید سرور شما با رم بیشتری شروع به کار کند، می توانید این محدودیت را افزایش دهید. هر دو M برای مگابایت و G برای گیگابایت گزینه های پشتیبانی می شوند. به عنوان مثال: Xms2G سرور را با 2 گیگابایت رم راه اندازی می کند.
  • Xmx1024M – این سرور را برای استفاده حداکثر از 1024M رم پیکربندی می کند. اگر می‌خواهید سرورتان در اندازه بزرگ‌تری اجرا شود، بازیکنان بیشتری را مجاز کنید، یا اگر احساس می‌کنید که سرورتان کند کار می‌کند، می‌توانید این محدودیت را افزایش دهید. برنامه های جاوا از این جهت منحصر به فرد هستند که همیشه از شما می خواهند حداکثر مقدار حافظه ای که می توانند استفاده کنند را مشخص کنید.
  • jar – این پرچم مشخص می کند که کدام فایل jar سرور اجرا شود.
  • nogui – این به سرور می گوید که رابط کاربری گرافیکی را راه اندازی نکند زیرا این یک سرور است و شما یک رابط کاربری گرافیکی ندارید.

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

 

Output

[22:05:31] [22:05:31] [main/ERROR]: Failed to load properties from file: server.properties
[22:05:31] [main/WARN]: Failed to load eula.txt
[22:05:31] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

این خطاها به این دلیل ایجاد شده‌اند که سرور نمی‌تواند دو فایل لازم برای اجرا را پیدا کند: EULA (توافقنامه مجوز کاربر نهایی) که در eula.txt یافت می‌شود و فایل پیکربندی server.properties. از آنجایی که سرور قادر به یافتن این فایل ها نبود، آنها را در فهرست کاری فعلی شما ایجاد کرد. Minecraft این کار را عمدا انجام می دهد تا مطمئن شود که EULA آن را خوانده اید و با آن موافقت کرده اید.

eula.txt را در nano یا ویرایشگر متن مورد علاقه خود باز کنید:

nano eula.txt

در داخل این فایل، پیوندی به EULA Minecraft مشاهده خواهید کرد. URL را کپی کنید:

~/eula.txt

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Tue Mar 24 22:05:31 UTC 2020
eula=false

URL را در مرورگر وب خود باز کنید و توافق نامه را بخوانید. سپس به ویرایشگر متن خود برگردید و آخرین خط را در eula.txt پیدا کنید. در اینجا eula=false را به eula=true تغییر دهید. سپس فایل را ذخیره کرده و ببندید. در نانو، این به این معنی است که Ctrl+X را برای خروج فشار دهید، سپس وقتی از شما خواسته شد ذخیره کنید، Y و سپس Enter کنید.

اکنون که EULA را پذیرفته اید، می توانید سرور را مطابق با مشخصات خود پیکربندی کنید.

در دایرکتوری فعلی خود، فایل server.properties ایجاد شده جدید را نیز خواهید یافت. این فایل شامل تمامی گزینه های پیکربندی سرور Minecraft شما می باشد. می‌توانید فهرست دقیقی از تمام ویژگی‌های سرور را در ویکی رسمی Minecraft پیدا کنید. قبل از راه اندازی سرور باید این فایل را با تنظیمات دلخواه خود تغییر دهید. این آموزش برخی از تنظیمات اساسی را پوشش می دهد:

nano server.properties

فایل شما به شکل زیر ظاهر می شود:

~/server.properties

#Minecraft server properties
#Thu Apr 30 23:42:29 UTC 2020
spawn-protection=16
max-tick-time=60000
query.port=25565
generator-settings=
force-gamemode=false
allow-nether=true
enforce-whitelist=false
gamemode=survival
broadcast-console-to-ops=true
enable-query=false
player-idle-timeout=0
difficulty=easy
spawn-monsters=true
broadcast-rcon-to-ops=true
op-permission-level=4
pvp=true
snooper-enabled=true
level-type=default
hardcore=false
enable-command-block=false
max-players=20
network-compression-threshold=256
resource-pack-sha1=
max-world-size=29999984
function-permission-level=2
rcon.port=25575
server-port=25565
server-ip=
spawn-npcs=true
allow-flight=false
level-name=world
view-distance=10
resource-pack=
spawn-animals=true
white-list=false
rcon.password=
generate-structures=true
online-mode=true
max-build-height=256
level-seed=
prevent-proxy-connections=false
use-native-transport=true
motd=A Minecraft Server
enable-rcon=false

بیایید نگاهی دقیق تر به برخی از مهم ترین ویژگی های این لیست بیندازیم:

دشواری (پیش‌فرض آسان) – این میزان سختی بازی را تعیین می‌کند، مانند میزان آسیب وارد شده و چگونگی تأثیر عناصر بر بازیکن شما. گزینه ها صلح آمیز، آسان، عادی و سخت هستند.
حالت بازی (بقای پیش فرض) – این حالت گیم پلی را تنظیم می کند. گزینه ها بقا، خلاقیت، ماجراجویی و تماشاگر هستند.
level-name (دنیای پیش فرض) – این نام سرور شما را تعیین می کند که در مشتری ظاهر می شود. ممکن است لازم باشد قبل از کاراکترهای خاص مانند آپوستروف، علامت معکوس وجود داشته باشد. شناخته شده است که این کاراکترهای فرار است، و زمانی که کاراکترهای خاص ممکن است به درستی در زمینه تجزیه و تحلیل نشوند، معمول است.
motd (سرور پیش فرض یک Minecraft) – پیامی که در لیست سرور مشتری Minecraft نمایش داده می شود.
pvp (پیش‌فرض درست) – نبرد بازیکن در مقابل بازیکن را فعال می‌کند. اگر روی true تنظیم شود، بازیکنان می‌توانند وارد جنگ شوند و به یکدیگر آسیب برسانند.
پس از تنظیم گزینه های مورد نظر، فایل را ذخیره کرده و ببندید.

اکنون می توانید سرور خود را با موفقیت راه اندازی کنید.

مانند دفعه قبل، بیایید سرور خود را با 1024M RAM راه اندازی کنیم. این بار، همچنین باید به Minecraft این امکان را بدهید که در صورت لزوم تا 4G از رم استفاده کند. به یاد داشته باشید که می توانید این شماره را متناسب با محدودیت های سرور یا نیازهای کاربر خود تنظیم کنید:

java -Xms1024M -Xmx4G -jar minecraft_server_1.18.1.jar nogui

چند لحظه به مقدار دهی اولیه بدهید. به زودی سرور Minecraft جدید شما شروع به تولید خروجی مشابه این خواهد کرد:

 

Output

[21:08:14] [Server thread/INFO]: Starting minecraft server version 1.15.2
[21:08:14] [Server thread/INFO]: Loading properties
[21:08:14] [Server thread/INFO]: Default game type: SURVIVAL
[21:08:14] [Server thread/INFO]: Generating keypair
[21:08:15] [Server thread/INFO]: Starting minecraft server on *:25565

پس از راه اندازی سرور، خروجی زیر را مشاهده خواهید کرد:

 

Output

[21:15:37] [Server thread/INFO]: Done (30.762s)! For help, type "help"

سرور شما اکنون در حال اجرا است و کنترل پنل مدیر سرور به شما نمایش داده شده است. راهنمای تایپ کردن را امتحان کنید:

help

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

 

Output

[21:15:37] [Server thread/INFO]: /advancement (grant|revoke)
[21:15:37] [Server thread/INFO]: /ban <targets> [<reason>]
[21:15:37] [Server thread/INFO]: /ban-ip <target> [<reason>]
[21:15:37] [Server thread/INFO]: /banlist [ips|players]
...

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

مرحله 4 – نگه داشتن سرور در حال اجرا

اکنون که سرور خود را روشن کرده اید، می خواهید حتی پس از قطع اتصال از جلسه SSH، همچنان در حال اجرا باشد. از آنجایی که قبلاً از صفحه استفاده کرده اید، می توانید با فشار دادن Ctrl + A + D از این جلسه جدا شوید. باید ببینید که به پوسته اصلی خود برگشته اید:

 

Output

​​ubuntu@minecraft-1804:~$ screen
[detached from 3626.pts-0.minecraft-1804]
$

این دستور را اجرا کنید تا تمام جلسات صفحه نمایش خود را ببینید:

screen -list

خروجی با شناسه جلسه خود دریافت خواهید کرد که برای از سرگیری آن جلسه باید آن را از سر بگیرید:

 

Output

There is a screen on:
        3626.pts-0.minecraft-1804 (11/16/21 22:56:33) (Detached)
1 Socket in /run/screen/S-root.

برای از سرگیری جلسه خود، پرچم -r را به فرمان صفحه ارسال کنید و سپس شناسه جلسه خود را وارد کنید:

screen -r 3626

وقتی دوباره آماده خروج از ترمینال شدید، حتما با Ctrl + A + D از جلسه جدا شده و سپس از سیستم خارج شوید.

مرحله 5 – اتصال به سرور خود از مشتری Minecraft

اکنون که سرور شما راه‌اندازی شده است، بیایید از طریق مشتری Minecraft به آن متصل شویم. سپس می توانید بازی کنید!

نسخه Minecraft Java Edition خود را اجرا کنید و Multiplayer را در منو انتخاب کنید.

 

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

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

 

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

از این پس سرور شما همیشه در این لیست ظاهر می شود. آن را انتخاب کرده و روی Join Server کلیک کنید.

شما در سرور خود هستید و آماده بازی هستید!

نتیجه

شما اکنون یک سرور Minecraft دارید که روی اوبونتو 18.04 اجرا می شود تا شما و همه دوستانتان با آن بازی کنید! از کاوش، کاردستی و زنده ماندن در یک دنیای خام سه بعدی لذت ببرید.

 

 

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/

 

برچسب‌ها:Jenkinsاتصال به سرور مجازیاتصال به سرور مجازی لینوکسانواع سرور مجازیپیکربندی Webhooksخرید سرور مجازیدسترسی Jenkins به GitHubسرور اتوماسیون متن بازسرور اوبونتو 20.04

  • behnam gol mohamadi
  • ۰
  • ۰

 

نحوه راه اندازی خطوط لوله یکپارچه سازی مداوم در Jenkins در اوبونتو 20.04

 

ورود به سرور

 

 

 

معرفی

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

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

برای این آموزش، ما Jenkins را با GitHub ادغام خواهیم کرد تا زمانی که کد جدید به مخزن فرستاده می شود، جنکینز مطلع شود. وقتی جنکینز مطلع شد، کد را بررسی می‌کند و سپس آن را در کانتینرهای Docker آزمایش می‌کند تا محیط آزمایشی را از دستگاه میزبان جنکینز جدا کند. ما از یک نمونه برنامه Node.js برای نشان دادن نحوه تعریف فرآیند CI/CD برای یک پروژه استفاده خواهیم کرد.

پیش نیازها

برای پیروی از این راهنما، به یک سرور اوبونتو 20.04 با حداقل 1G RAM که با نصب ایمن جنکینز پیکربندی شده باشد، نیاز دارید. برای ایمن سازی مناسب رابط وب، باید یک نام دامنه به سرور جنکینز اختصاص دهید. برای یادگیری نحوه تنظیم Jenkins در قالب مورد انتظار، این راهنماها را دنبال کنید:

  • نحوه نصب جنکینز در اوبونتو 20.04
  • نحوه نصب Nginx در اوبونتو 20.04
  • چگونه Nginx را با Let’s Encrypt در اوبونتو 20.04 ایمن کنیم
  • نحوه پیکربندی جنکینز با SSL با استفاده از پروکسی معکوس Nginx

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

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

هنگامی که راهنماهای فوق را کامل کردید، می توانید با این مقاله ادامه دهید.

 

کاربر Jenkins را به گروه Docker اضافه کنید

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

برای رفع این مشکل، باید کاربر jenkins را با استفاده از دستور usermod به گروه docker اضافه کنیم:

sudo usermod -aG docker jenkins

می‌توانید اعضای گروه docker را فهرست کنید تا تأیید کنید که کاربر jenkins با موفقیت اضافه شده است:

grep docker /etc/group

 

Output

docker:x:999:sammy,jenkins

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

sudo systemctl restart jenkins

اگر جنکینز را با افزونه‌های پیش‌فرض نصب کرده‌اید، ممکن است لازم باشد بررسی کنید که افزونه‌های docker و docker-pipeline نیز فعال هستند. برای انجام این کار، روی Manage Jenkins از نوار کناری و سپس Manage Plugins از منوی بعدی کلیک کنید. برای جستجوی افزونه های جدید، روی تب Available از منوی افزونه کلیک کنید و docker را در نوار جستجو تایپ کنید. اگر هر دو افزونه Docker Pipeline و Docker به عنوان گزینه برگردانده شدند، و انتخاب نشدند، هر دو را انتخاب کنید، و هنگامی که از شما خواسته شد، به Jenkins اجازه راه اندازی مجدد با فعال بودن افزونه های جدید را بدهید.

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

یک رمز دسترسی شخصی در GitHub ایجاد کنید

برای اینکه جنکینز پروژه های GitHub شما را تماشا کند، باید یک رمز دسترسی شخصی در حساب GitHub ما ایجاد کنید.

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

در صفحه زیر، بخش تنظیمات برنامه‌نویس را در منوی سمت چپ پیدا کرده و روی گزینه‌های دسترسی شخصی کلیک کنید:

در صفحه بعد روی دکمه Generate new token کلیک کنید:

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

در کادر توضیحات Token، توضیحی اضافه کنید که به شما امکان می دهد بعداً آن را تشخیص دهید:

در بخش Select scopes، کادرهای repo:status، repo:public_repo و admin:org_hook را بررسی کنید. اینها به جنکینز اجازه می‌دهد تا وضعیت‌های commit را به‌روزرسانی کند و برای پروژه وب هوک ایجاد کند. اگر از یک مخزن خصوصی استفاده می کنید، باید مجوز عمومی مخزن را به جای موارد فرعی مخزن انتخاب کنید:

 

وقتی کارتان تمام شد، روی Generate token در پایین کلیک کنید.

شما به صفحه فهرست نشانه های دسترسی شخصی هدایت می شوید و رمز جدید شما نمایش داده می شود:

 

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

اکنون که یک نشانه دسترسی شخصی برای حساب GitHub خود دارید، می‌توانیم جنکینز را برای تماشای مخزن پروژه شما پیکربندی کنیم.

رمز دسترسی شخصی GitHub را به جنکینز اضافه کنید

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

روی نام کاربری خود در گوشه سمت راست بالا کلیک کنید تا به تنظیمات کاربری خود دسترسی پیدا کنید و از آنجا روی Credentials در منوی سمت چپ کلیک کنید. :

در صفحه بعد، روی فلش کنار (جهانی) در محدوده جنکینز کلیک کنید. در کادری که ظاهر می‌شود، روی Add credentials کلیک کنید:

برای افزودن اعتبارنامه جدید به فرمی هدایت خواهید شد.

در زیر منوی کشویی Kind، Secret text را انتخاب کنید. در قسمت Secret، رمز دسترسی شخصی GitHub خود را جایگذاری کنید. قسمت توضیحات را پر کنید تا بتوانید بعداً این ورودی را شناسایی کنید. می توانید Scope را به صورت Global و قسمت ID را خالی بگذارید:

وقتی کارتان تمام شد روی دکمه OK کلیک کنید.

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

دسترسی Jenkins به GitHub را تنظیم کنید

در داشبورد اصلی جنکینز، روی Manage Jenkins در منوی سمت چپ کلیک کنید:

در لیست پیوندها در صفحه زیر، روی Configure System کلیک کنید:

در میان گزینه های صفحه بعد حرکت کنید تا قسمت GitHub را پیدا کنید. روی دکمه Add GitHub Server کلیک کنید و سپس GitHub Server را انتخاب کنید:

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

روی دکمه اتصال تست کلیک کنید. جنکینز یک تماس آزمایشی API با حساب شما برقرار می کند و اتصال را تأیید می کند:

پس از اتمام کار، روی دکمه ذخیره کلیک کنید تا تغییرات خود را اعمال کنید.

برنامه نمایش را در حساب GitHub خود تنظیم کنید

برای نشان دادن نحوه استفاده از جنکینز برای آزمایش یک برنامه، از یک برنامه “Hello world” ایجاد شده با Hapi.js استفاده خواهیم کرد. از آنجایی که ما Jenkins را برای واکنش به فشارهای مخزن تنظیم می کنیم، باید کپی خود را از کد نمایشی داشته باشید.

از مخزن پروژه دیدن کنید و روی دکمه Fork در گوشه سمت راست بالا کلیک کنید تا یک کپی از مخزن در حساب خود ایجاد کنید:

یک کپی از مخزن به حساب شما اضافه می شود.

مخزن حاوی یک فایل package.json است که وابستگی های زمان اجرا و توسعه و همچنین نحوه اجرای مجموعه آزمایشی ارائه شده را تعریف می کند. وابستگی ها را می توان با اجرای npm install نصب کرد و تست ها را می توان با استفاده از تست npm اجرا کرد.

ما یک Jenkinsfile را نیز به مخزن اضافه کرده ایم. جنکینز این فایل را می‌خواند تا اقداماتی را که باید در مقابل مخزن برای ساخت، آزمایش یا استقرار اجرا شود، تعیین کند. با استفاده از نسخه اعلانی Jenkins Pipeline DSL نوشته شده است.

Jenkinsfile موجود در مخزن hello-hapi به شکل زیر است:

Jenkinsfile

#!/usr/bin/env groovy

pipeline {

    agent {
        docker {
            image 'node'
            args '-u root'
        }
    }

    stages {
        stage('Build') {
            steps {
                echo 'Building...'
                sh 'npm install'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...'
                sh 'npm test'
            }
        }
    }
}

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

از آنجایی که Hapi.js یک چارچوب برای Node.js است، از تصویر گره Docker به عنوان پایه خود استفاده خواهیم کرد. کاربر ریشه را در ظرف مشخص می‌کنیم تا کاربر بتواند هم‌زمان در جلد ضمیمه شده حاوی کد بررسی‌شده و هم در حجمی که اسکریپت خروجی خود را روی آن می‌نویسد بنویسد.

در مرحله بعد، فایل دو مرحله، یعنی تقسیمات منطقی کار را تعریف می کند. ما نام اولی را «ساخت» و دومی را «تست» گذاشته‌ایم. مرحله ساخت یک پیام تشخیصی را چاپ می کند و سپس npm install را برای به دست آوردن وابستگی های مورد نیاز اجرا می کند. مرحله تست پیام دیگری را چاپ می کند و سپس تست ها را همانطور که در فایل package.json تعریف شده است اجرا می کند.

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

یک خط لوله جدید در جنکینز ایجاد کنید

در مرحله بعد، می‌توانیم جنکینز را برای استفاده از نشانه دسترسی شخصی GitHub برای تماشای مخزن خود تنظیم کنیم.

در داشبورد اصلی جنکینز، روی آیتم جدید در منوی سمت چپ کلیک کنید:

در قسمت Enter an item name نامی را برای خط لوله جدید خود وارد کنید. پس از آن، Pipeline را به عنوان نوع مورد انتخاب کنید:

برای ادامه روی دکمه OK در پایین کلیک کنید.

در صفحه بعدی، کادر پروژه GitHub را علامت بزنید. در قسمت Project url که ظاهر می شود، URL مخزن GitHub پروژه خود را وارد کنید.

سپس، در بخش Build Triggers، محرک قلاب GitHub را برای کادر نظرسنجی GITScm بررسی کنید:

در قسمت Pipeline، باید به Jenkins بگوییم که خط لوله تعریف شده در Jenkinsfile را در مخزن ما اجرا کند. نوع Definition را از SCM به Pipeline script تغییر دهید.

در بخش جدیدی که ظاهر می شود، Git را در منوی SCM انتخاب کنید. در فیلد URL مخزن که ظاهر می‌شود، دوباره URL را به فورک مخزن وارد کنید:

وقتی کارتان تمام شد، روی دکمه ذخیره در پایین صفحه کلیک کنید.

انجام ساخت اولیه و پیکربندی Webhooks

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

در صفحه اصلی خط لوله خود، روی Build Now در منوی سمت چپ کلیک کنید:

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

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

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

اکنون که یک بار پروژه را ساخته‌ایم، می‌توانیم از جنکینز بخواهیم که وب هوک‌ها را برای پروژه ما ایجاد کند. روی Configure در منوی سمت چپ خط لوله کلیک کنید:

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

می‌توانید با رفتن به مخزن GitHub خود و کلیک کردن روی دکمه تنظیمات، این موضوع را تأیید کنید. در صفحه بعد از منوی کناری روی Webhooks کلیک کنید. شما باید وب هوک سرور جنکینز خود را در رابط اصلی ببینید:

 

اگر به هر دلیلی Jenkins نتوانست قلاب را ثبت کند (مثلاً به دلیل تغییرات API بالادست یا قطعی بین Jenkins و Github)، می‌توانید به سرعت خودتان یکی را با کلیک کردن روی Add webhook و اطمینان از اینکه URL Payload روی https:// تنظیم شده است اضافه کنید. my-jenkins-server:8080/github-webhook و نوع محتوا روی application/json تنظیم شده است، سپس دوباره روی Add webhook در پایین دستور کلیک کنید.

 

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

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

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

وقتی کارتان تمام شد، روی دکمه Commit new file در پایین کلیک کنید.

اگر به رابط Jenkins خود بازگردید، خواهید دید که یک ساخت جدید به طور خودکار شروع شده است:

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

نتیجه

در این راهنما، ما جنکینز را برای تماشای یک پروژه GitHub پیکربندی کرده ایم و به طور خودکار هر تغییر جدیدی را که انجام می شود آزمایش می کنیم. جنکینز کد را از مخزن می کشد و سپس مراحل ساخت و آزمایش را از داخل کانتینرهای Docker ایزوله اجرا می کند. کد به دست آمده را می توان با افزودن دستورالعمل های اضافی به همان Jenkinsfile مستقر یا ذخیره کرد.

 

 

 

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/

 

Jenkinsاتصال به سرور مجازیاتصال به سرور مجازی لینوکسانواع سرور مجازیپیکربندی Webhooksخرید سرور مجازیدسترسی Jenkins به GitHubسرور اتوماسیون متن بازسرور اوبونتو 20.04

  • 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
  • ۰
  • ۰

نحوه راه اندازی یک شمارنده بازدید وب سایت با Redis و PHP در اوبونتو 20.04

ورود به سایت

معرفی

شمارنده ضربه برنامه‌ای است که تعداد بازدیدهایی را که صفحه وب شما دریافت کرده است را ثبت و نشان می‌دهد. شمارنده از 1 شروع می شود و هر بار که از یک صفحه وب بازدید می شود یک بار افزایش می یابد.

برای پیگیری بازدیدها، برنامه آمارگیری ضربه به شکلی از پایگاه داده نیاز دارد. در حالی که سیستم های مدیریت پایگاه داده مبتنی بر دیسک مانند MySQL می توانند کار کنند، یک پایگاه داده در حافظه از نظر سرعت، عملکرد، مقیاس پذیری، سادگی و سهولت استفاده بهتر است. اینجاست که سرور Redis وارد عمل می شود. Redis داده ها را به جای ضربه زدن به دیسک هر بار که یک عملیات ورودی/خروجی انجام می دهید، در رم کامپیوتر شما ذخیره می کند. این باعث افزایش قابل توجهی می شود.

برای ردیابی بازدیدهای سایت خود، به یک نقشه هش Redis نیاز دارید. این یک ساختار داده است که یک جفت کلید-مقدار را پیاده سازی می کند. نقشه هش یک جدول هش ارائه می دهد که کلیدها را به مقادیر نگاشت می کند. هنگامی که کاربر از صفحه وب شما بازدید می کند، کلیدی را بر اساس آدرس IP عمومی یا نام کاربری (برای کاربران تأیید شده) ایجاد می کنید و سپس تعداد بازدیدهای او را به مقدار 1 مقداردهی می کنید. سپس، هر بار که کاربر مجدداً از صفحه وب شما بازدید می کند. کل بازدیدهای آنها را از نقشه هش Redis بر اساس آدرس IP/نام کاربری آنها بررسی می کنید و مقدار را افزایش می دهید.

 

پیش نیازها

برای دنبال کردن این راهنما، مطمئن شوید که موارد زیر را دارید:

  • یک سرور اوبونتو 20.04 که با استفاده از راه اندازی اولیه سرور با راهنمای اوبونتو 20.04 پیکربندی شده است.
  • یک کاربر غیر ریشه با امتیازات sudo..
  • آپاچی و پی اچ پی.
  • سرور Redis

مرحله 1 – نصب برنامه افزودنی PHP Redis

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

قبل از نصب برنامه افزودنی Redis، فهرست اطلاعات بسته Ubuntu خود را بازخوانی کنید:

sudo apt update

سپس دستور زیر را برای نصب php-redis اجرا کنید. برنامه افزودنی یک API برای برقراری ارتباط با ذخیره‌سازی کلید ارزش سرور Redis ارائه می‌کند:

sudo apt install -y php-redis

برای بارگیری افزونه جدید، آپاچی را مجددا راه اندازی کنید:

sudo systemctl restart apache2

اکنون یک پسوند PHP نصب کرده اید که با سرور Redis شما صحبت می کند. در مرحله بعد، یک صفحه وب test.php در زیر فهرست اصلی وب سرور آپاچی ایجاد خواهید کرد. این فقط یک فایل نمونه است که بازدیدکنندگان هنگام بازدید از وب سایت شما با مرورگر درخواست می کنند. در زیر سرپوش، فایل صفحه test.php یک اسکریپت hit_counter.php را بارگیری می کند که بعداً برای پیگیری بازدید از صفحه با استفاده از سرور Redis ایجاد خواهید کرد.

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

در پنجره ترمینال خود، از nano برای ایجاد یک فایل test.php جدید در زیر پوشه اصلی وب سرور خود /var/www/html/ استفاده کنید:

sudo nano /var/www/html/test.php

سپس اطلاعات زیر را در فایل test.php وارد کنید:

/var/www/html/test.php

<?php
  require_once 'hit_counter.php';
?>

<!DOCTYPE html>
<html>

  <head>
    <title>Sample Test Page</title>
  </head>

  <body>
    <h1>Sample test page</h1>
    <p>This is a sample test page.</p>
  </body>

</html>

پس از اتمام ویرایش فایل را ذخیره کرده و ببندید. در این مرحله، یک صفحه وب ساده HTML ایجاد کرده‌اید که هنگام بازدید، فایل hit_counter.php را بارگیری می‌کند. در مرحله بعد، فایل hit_counter.php را برای ردیابی بازدیدهای صفحه آزمایشی کدنویسی می کنید.

مرحله 2 – ایجاد یک اسکریپت شمارنده ضربه Redis

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

شما در این راهنما همان استراتژی را اعمال خواهید کرد. شما یک فایل hit_counter.php ایجاد خواهید کرد که می توانید آن را در هر صفحه وب که نیاز به ردیابی بازدیدکنندگان دارد قرار دهید.

در این فایل، از کتابخانه php-redis برای اتصال به سرور Redis از PHP استفاده خواهید کرد. سپس، یک نقشه هش Redis برای ذخیره تعداد بازدیدهایی که یک بازدیدکننده از وب سایت شما داشته است ایجاد می کنید. شما از آدرس های IP منحصر به فرد بازدیدکنندگان به عنوان کلیدهای Redis برای تشخیص تعداد بازدید بازدیدکنندگان در سرور Redis استفاده خواهید کرد.

در پنجره ترمینال خود، یک فایل hit_counter.php جدید را با استفاده از nano برای اهداف ویرایش باز کنید:

sudo nano /var/www/html/hit_counter.php

با ایجاد فایل hit_counter.php، یک تگ جدید PHP <?php را باز کنید. سپس، در داخل یک بلوک try { کد زیر را برای اتصال به سرور Redis محلی خود در پورت 6379 وارد کنید. EXAMPLE_PASSWORD را با رمز احراز هویت سرور Redis جایگزین کنید:

/var/www/html/hit_counter.php

<?php

    try {

        $redis = new Redis();
        $redis->connect('127.0.0.1', 6379);
        $redis->auth('EXAMPLE_PASSWORD');

سپس، به نقشه هش Redis ($siteVisitsMap) یک نام دلخواه بدهید. این راهنما از siteStats برای اهداف نمایشی استفاده می کند:

/var/www/html/hit_counter.php

$siteVisitsMap = 'siteStats';

پس از تعریف نقشه هش Redis، اکنون یک کلید خالی Redis ($visitorHashKey) را مقداردهی اولیه می کنید. سپس، آن را با آدرس های IP بازدیدکنندگان پر می کنید. شما از مقدار متغیر $visitorHashKey برای شناسایی منحصر به فرد هر بازدید کننده ای که صفحه وب شما را درخواست می کند استفاده می کنید:

/var/www/html/hit_counter.php

$visitorHashKey = '';

if (!empty($_SERVER['HTTP_CLIENT_IP'])) {

    $visitorHashKey = $_SERVER['HTTP_CLIENT_IP'];

} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {

    $visitorHashKey = $_SERVER['HTTP_X_FORWARDED_FOR'];

} else {

    $visitorHashKey = $_SERVER['REMOTE_ADDR'];
}

در این کد، شما از دستور PHP if برای تعیین آدرس IP بازدیدکننده با بررسی اینکه آیا متغیرهای $_SERVER[‘HTTP_CLIENT_IP’]، $_SERVER[‘HTTP_X_FORWARDED_FOR’]، یا $_SERVER[‘REMOTE_ADDR’] پر شده اند، استفاده می کنید.

پس از این، یک متغیر $totalVisits را مقداردهی اولیه کنید تا کل بازدیدها برای هر آدرس IP ذخیره شود و مقدار 0 به آن اختصاص دهید. سپس از PHP if (…) {…} else {…} و $redis استفاده کنید. ->hExists($siteVisitsMap، $visitorHashKey) برای بررسی اینکه آیا آدرس IP ورودی هایی در سرور Redis دارد یا خیر.

شما از عبارت if ($redis->hExists($siteVisitsMap، $visitorHashKey)) {…} برای بررسی اینکه آیا $visitorHashKey در نقشه ای به نام $siteVisitsMap وجود دارد استفاده خواهید کرد.

در صورتی که نقشه و کلید با آدرس IP نامگذاری شده در سرور Redis وجود دارد، آن را با عبارت $visitorData = $redis->hMget($siteVisitsMap, array($visitorHashKey)) بازیابی کنید. و از $totalVisits = $visitorData[$visitorHashKey] + 1 استفاده کنید. برای افزایش متغیر $totalVisits. شما از دستور $redis->hMget برای دریافت داده های تعداد ضربه مرتبط با یک آدرس IP استفاده می کنید. تابع hMget نام نقشه شما ($siteVisitsMap) و آرایه ای از کلیدهایی را که می خواهید از سرور Redis بازیابی کنید، می پذیرد. در این مورد، شما فقط یک کلید دارید ($visitorHashKey)، اما باید آن را با استفاده از دستور array ($visitorHashKey) به یک آرایه تبدیل کنید.

در صورتی که اسکریپت شما برای اولین بار با آدرس IP مواجه شد، متغیر $totalVisits را روی 1 قرار دهید. در نهایت، از $redis->hSet($siteVisitsMap, $visitorHashKey, $totalVisits) استفاده کنید. برای تنظیم مقدار $visitorHashKey مطابق نتایج عبارت if (…) {…} else {…} قبلی. دستور $redis->hSet($siteVisitsMap، $visitorHashKey، $totalVisits) یک نقشه هش $siteVisitsMap در سرور Redis با کلیدی به نام $visitorHashKey با مقدار $totalVisits ایجاد می‌کند.

سپس با تکرار کل بازدیدها به بازدیدکننده خوش آمد گویید و بلوک } catch (…) {…} را ببندید:

/var/www/html/hit_counter.php

$totalVisits = 0;

    if ($redis->hExists($siteVisitsMap, $visitorHashKey)) {

        $visitorData = $redis->hMget($siteVisitsMap, array($visitorHashKey));
        $totalVisits = $visitorData[$visitorHashKey] + 1;

    } else {

        $totalVisits = 1;

    }

    $redis->hSet($siteVisitsMap, $visitorHashKey, $totalVisits);

    echo "Welcome, you've visited this page " .  $totalVisits . " times\n";

} catch (Exception $e) {
    echo $e->getMessage();
}

پس از تکمیل، فایل /var/www/html/hit_counter.php شما باید شبیه کد زیر باشد:

/var/www/html/hit_counter.php

<?php

    try {

        $redis = new Redis();
        $redis->connect('127.0.0.1', 6379);
        $redis->auth('EXAMPLE_PASSWORD');

        $siteVisitsMap  = 'siteStats';
        $visitorHashKey = '';

        if (!empty($_SERVER['HTTP_CLIENT_IP'])) {

           $visitorHashKey = $_SERVER['HTTP_CLIENT_IP'];

        } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {

           $visitorHashKey = $_SERVER['HTTP_X_FORWARDED_FOR'];

        } else {

           $visitorHashKey = $_SERVER['REMOTE_ADDR'];
        }

        $totalVisits = 0;

        if ($redis->hExists($siteVisitsMap, $visitorHashKey)) {

            $visitorData = $redis->hMget($siteVisitsMap,  array($visitorHashKey));
            $totalVisits = $visitorData[$visitorHashKey] + 1;

        } else {

            $totalVisits = 1;

        }

        $redis->hSet($siteVisitsMap, $visitorHashKey, $totalVisits);

        echo "Welcome, you've visited this page " .  $totalVisits . " times\n";

    } catch (Exception $e) {
        echo $e->getMessage();
    }

پس از اتمام ویرایش فایل را ذخیره کرده و ببندید. شما اکنون یک اسکریپت hit_counter.php را کدگذاری کرده اید. در مرحله بعد، یک اسکریپت PHP دیگر ایجاد خواهید کرد که گزارشی از داده های جمع آوری شده در نقشه هش Redis ایجاد می کند.

مرحله 3 – ایجاد یک اسکریپت گزارش آمار سایت

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

برای ایجاد اسکریپت گزارش گزارش، nano را در پنجره ترمینال خود اجرا کنید و یک فایل /var/www/html/log_report.php جدید ایجاد کنید:

sudo nano /var/www/html/log_report.php

سپس اطلاعات زیر را در فایل وارد کنید. رمز عبور صحیح سرور Redis را جایگزین EXAMPLE_PASSWORD کنید:

/var/www/html/log.php

<!DOCTYPE html>
<html>

  <head>
    <title>Site Visits Report</title>
  </head>

  <body>

      <h1>Site Visits Report</h1>

      <table border = '1'>
        <tr>
          <th>No.</th>
          <th>Visitor</th>
          <th>Total Visits</th>
        </tr>

        <?php

            try {

                $redis = new Redis();
                $redis->connect('127.0.0.1', 6379);
                $redis->auth('EXAMPLE_PASSWORD');

                $siteVisitsMap = 'siteStats';

                $siteStats = $redis->HGETALL($siteVisitsMap);

                $i = 1;

                foreach ($siteStats as $visitor => $totalVisits) {

                    echo "<tr>";
                      echo "<td align = 'left'>"   . $i . "."     . "</td>";
                      echo "<td align = 'left'>"   . $visitor     . "</td>";
                      echo "<td align = 'right'>"  . $totalVisits . "</td>";
                    echo "</tr>";

                    $i++;
                }

            } catch (Exception $e) {
                echo $e->getMessage();
            }

        ?>

      </table>
  </body>

</html>

پس از اتمام ویرایش فایل را ذخیره کرده و ببندید. در اسکریپت بالا، شما در حال اتصال به سرور Redis هستید و از عبارت $redis->HGETALL($siteVisitsMap) استفاده می کنید. برای بازیابی نقشه هش بازدیدهای صفحه وب شما. سپس، شما از دستور PHP foreach ($siteStats به عنوان $visitor => $totalVisits) { برای حلقه و نمایش آدرس IP بازدیدکنندگان و تعداد بازدیدهایی که از سایت شما داشته اند استفاده می کنید. شما از دستور Redis HGETALL برای بازیابی تمام فیلدها (آدرس IP) و مقادیر (کل بازدیدها به ازای هر آدرس IP) از نقشه siteVisitsMap استفاده می کنید.

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

مرحله 4 – تست شمارشگر ضربه Redis

در این مرحله، کل منطق را برای شمارنده ضربه خود آزمایش خواهید کرد. به آدرس زیر در مرورگر وب خود بروید. IP-server-IP خود را با آدرس IP عمومی یا نام دامنه سرور خود جایگزین کنید.

http://your-server-IP/test.php

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

سپس، از URL زیر دیدن کنید تا گزارش بازدید از سایت خود را در جدول HTML نمایش دهید

http://your-server-IP/log_report.php

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

شمارنده ضربه شما اکنون همانطور که انتظار می رود کار می کند.

نتیجه

در این راهنما، شما یک وب سایت با Redis و PHP روی سرور اوبونتو 20.04 خود راه اندازی کرده اید.

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

 

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/

برچسب‌ها:MySQLRedisاسکریپت شمارنده ضربه Redisانواع سرور مجازیاوبونتو 20.04خرید سرورمجازیخریدvpsراه اندازی اولیه سرورراه اندازی سرور مجازیسرور مجازیشمارنده بازدید وب سایت

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه نصب Node.js در اوبونتو 18.04

ورود به سایت

معرفی

Node.js یک پلت فرم جاوا اسکریپت برای برنامه نویسی همه منظوره است که به کاربران اجازه می دهد تا برنامه های شبکه را به سرعت بسازند. Node.js با استفاده از جاوا اسکریپت در قسمت جلویی و پشتیبان، توسعه را سازگارتر و یکپارچه تر می کند.

پیش نیازها

این راهنما فرض می کند که از اوبونتو 18.04 استفاده می کنید. قبل از شروع، باید یک حساب کاربری غیر ریشه با امتیازات sudo روی سیستم خود تنظیم کنید.

نصب Node.js از مخازن پیش فرض با Apt

اوبونتو 18.04 حاوی نسخه‌ای از Node.js در مخازن پیش‌فرض خود است که می‌توان از آن برای ارائه یک تجربه ثابت در چندین سیستم استفاده کرد. در زمان نگارش، نسخه موجود در مخازن 8.10.0 است. این آخرین نسخه نخواهد بود، اما باید پایدار و برای آزمایش سریع زبان کافی باشد.

برای دریافت این نسخه می توانید از apt package manager استفاده کنید. فهرست بسته محلی خود را تازه کنید:

sudo apt update

حالا Node.js را نصب کنید:

sudo apt install nodejs

تأیید کنید که Node.js را با موفقیت نصب کرده‌اید، با جستجو در node برای شماره نسخه آن:

node -v

 

Output

v8.10.0

اگر بسته موجود در مخازن با نیازهای شما مطابقت دارد، این تنها کاری است که برای راه اندازی Node.js باید انجام دهید. در بیشتر موارد، شما همچنین می خواهید npm، مدیر بسته Node.js را نیز نصب کنید. می توانید بسته npm را با apt نصب کنید:

sudo apt install npm

این به شما امکان می دهد ماژول ها و بسته هایی را برای استفاده با Node.js نصب کنید.

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

نصب Node.js با Apt با استفاده از NodeSource PPA

برای نصب نسخه جدیدتر Node.js می توانید PPA (بایگانی بسته شخصی) را که توسط NodeSource نگهداری می شود اضافه کنید. این نسخه‌های به‌روز Node.js را نسبت به مخازن رسمی اوبونتو خواهد داشت و به شما امکان می‌دهد بین چندین نسخه موجود پلتفرم یکی را انتخاب کنید.

ابتدا PPA را نصب کنید تا به محتویات آن دسترسی داشته باشید. از فهرست اصلی خود، از curl برای بازیابی اسکریپت نصب نسخه دلخواه خود استفاده کنید، مطمئن شوید که 17.x را با رشته نسخه ترجیحی خود جایگزین کنید (در صورت متفاوت بودن):

cd ~
curl -sL https://deb.nodesource.com/setup_17.x -o nodesource_setup.sh

برای اطلاعات بیشتر در مورد نسخه های موجود می توانید به مستندات NodeSource مراجعه کنید.

در صورت تمایل، می توانید محتوای این اسکریپت را با nano (یا ویرایشگر متن دلخواه خود) بررسی کنید:

nano nodesource_setup.sh

هنگامی که از اجرای امن اسکریپت راضی شدید، از ویرایشگر متن خارج شوید. اگر از nano استفاده می‌کنید، می‌توانید با فشار دادن CTRL + X خارج شوید. سپس اسکریپت را با sudo اجرا کنید:

sudo bash nodesource_setup.sh

PPA به پیکربندی شما اضافه می شود و کش بسته محلی شما به طور خودکار به روز می شود. اکنون می توانید بسته Node.js را مانند قسمت قبل نصب کنید:

sudo apt install nodejs

با اجرای گره با پرچم -v، تأیید کنید که نسخه جدید را نصب کرده اید:

node -v

 

Output

v17.3.0

برخلاف آنچه در مخازن بسته پیش‌فرض اوبونتو وجود دارد، این بسته nodejs دارای هر دو نود و npm است، بنابراین نیازی به نصب جداگانه npm ندارید.

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

npm -v

 

Output

8.3.0

برای اینکه برخی از بسته های npm کار کنند (مثلاً آنهایی که نیاز به کامپایل کد از منبع دارند)، باید بسته build-essential را نصب کنید:

sudo apt install build-essential

اکنون ابزارهای لازم برای کار با بسته های npm را دارید که نیاز به کامپایل کد از منبع دارند.

در این بخش، Node.js و npm را با استفاده از apt و NodeSource PPA با موفقیت نصب کردید. در مرحله بعد، از Node Version Manager برای نصب و مدیریت چندین نسخه Node.js استفاده خواهید کرد.

نصب Node با استفاده از Node Version Manager

یک جایگزین برای نصب Node.js استفاده از ابزاری به نام nvm، Node Version Manager (NVM) است. nvm به جای کار در سطح سیستم عامل، در سطح دایرکتوری مستقل در فهرست اصلی شما کار می کند. این بدان معناست که می‌توانید چندین نسخه مستقل Node.js را بدون تأثیر بر کل سیستم نصب کنید.

کنترل محیط خود با nvm به شما امکان می دهد به جدیدترین نسخه های Node.js دسترسی داشته باشید و نسخه های قبلی را حفظ و مدیریت کنید. با این حال، این یک ابزار متفاوت از apt است، و نسخه‌هایی از Node.js که با آن مدیریت می‌کنید با نسخه‌هایی که با apt مدیریت می‌کنید متمایز هستند.

برای نصب NVM در دستگاه اوبونتو 18.04، از صفحه GitHub پروژه بازدید کنید. دستور curl را از فایل README که در صفحه اصلی نمایش داده می شود کپی کنید تا آخرین نسخه اسکریپت نصب را دریافت کنید.

قبل از انتقال فرمان به bash، همیشه ایده خوبی است که اسکریپت را بررسی کنید تا مطمئن شوید که کاری را انجام نمی دهد که با آن موافق نیستید. با حذف | می توانید این کار را انجام دهید بخش bash در انتهای دستور curl:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh

خروجی را مرور کنید و مطمئن شوید که با تغییراتی که ایجاد می کند راحت هستید. پس از رضایت، همان دستور را با | اجرا کنید bash در انتها اضافه شده است. URL مورد استفاده شما بسته به آخرین نسخه NVM تغییر می کند، اما از هم اکنون، اسکریپت را می توان با اجرای موارد زیر دانلود و اجرا کرد:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

این اسکریپت nvm را در حساب کاربری شما نصب می کند. برای استفاده از آن، ابتدا فایل .bashrc را سورس کنید:

source ~/.bashrc

با نصب nvm، می توانید نسخه های ایزوله Node.js را نصب کنید. ابتدا از nvm بپرسید که چه نسخه هایی از Node موجود است:

nvm ls-remote

 

Output

...
        v14.18.2   (Latest LTS: Fermium)
        v15.0.0
        v15.0.1
        v15.1.0
        v15.2.0
        v15.2.1
        v15.3.0
        v15.4.0
        v15.5.0
        v15.5.1
        v15.6.0
        v15.7.0
        v15.8.0
        v15.9.0
       v15.10.0
       v15.11.0
       v15.12.0
       v15.13.0
       v15.14.0
        v16.0.0
        v16.1.0
        v16.2.0
        v16.3.0
        v16.4.0
        v16.4.1
        v16.4.2
        v16.5.0
        v16.6.0
        v16.6.1
        v16.6.2
        v16.7.0
        v16.8.0
        v16.9.0
        v16.9.1
       v16.10.0
       v16.11.0
       v16.11.1
       v16.12.0
       v16.13.0   (LTS: Gallium)
       v16.13.1   (Latest LTS: Gallium)
        v17.0.0
        v17.0.1
        v17.1.0
        v17.2.0
        v17.3.0

این یک لیست بسیار طولانی است، اما می توانید با وارد کردن هر یک از نسخه های منتشر شده لیست، نسخه ای از Node را نصب کنید. به عنوان مثال، برای دریافت نسخه v16.13.1، موارد زیر را اجرا کنید:

nvm install v16.13.1

Output
Now using node v16.13.1 (npm v8.1.2)

گاهی اوقات nvm به استفاده از آخرین نسخه نصب شده تغییر می کند. اما می‌توانید به nvm بگویید از نسخه‌ای که دانلود کرده‌اید استفاده کند (اگر متفاوت است):

nvm use v16.13.1

 

Output

Now using node v16.13.1 (npm v8.1.2)

گاهی اوقات nvm به استفاده از آخرین نسخه نصب شده تغییر می کند. اما می‌توانید به nvm بگویید از نسخه‌ای که دانلود کرده‌اید استفاده کند (اگر متفاوت است):

nvm use v16.13.1

نسخه ای که در حال حاضر استفاده می شود را با اجرای موارد زیر بررسی کنید:

node -v

 

Output

v16.13.1

اگر چندین نسخه Node را نصب کرده‌اید، می‌توانید ls را اجرا کنید تا لیستی از آنها را دریافت کنید:

nvm ls

 

Output

->     v16.13.1
         system
default -> v16.13.1
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v16.13.1) (default)
stable -> 16.13 (-> v16.13.1) (default)
lts/* -> lts/gallium (-> v16.13.1)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.8 (-> N/A)
lts/fermium -> v14.18.2 (-> N/A)
lts/gallium -> v16.13.1

همچنین می توانید به صورت پیش فرض یکی از نسخه ها را انتخاب کنید:

nvm alias default 16.13.1

 

Output

default -> 16.13.1 (-> v16.13.1)

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

nvm use default

 

Output

Now using node v16.13.1 (npm v8.1.2)

هر نسخه از Node بسته های خود را پیگیری می کند و npm برای مدیریت آنها در دسترس است.

همچنین می توانید بسته های نصب npm را در دایرکتوری ./node_modules پروژه Node.js داشته باشید. برای نصب ماژول اکسپرس از دستور زیر استفاده کنید:

npm install express

 

Output

added 50 packages, and audited 51 packages in 4s

2 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
npm notice
npm notice New minor version of npm available! 8.1.2 -> 8.3.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v8.3.0
npm notice Run npm install -g npm@8.3.0 to update!
npm notice

اگر می‌خواهید ماژول را به صورت سراسری نصب کنید و آن را با استفاده از نسخه مشابه Node.js برای پروژه‌های دیگر در دسترس قرار دهید، می‌توانید پرچم -g را اضافه کنید:

npm install -g express

 

Output

added 50 packages, and audited 51 packages in 1s

2 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

با این کار بسته در زیر نصب می شود:

~/.nvm/versions/node/16.13.1/lib/node_modules/express

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

npm link express

با اجرای موارد زیر می‌توانید درباره گزینه‌های موجود با nvm اطلاعات بیشتری کسب کنید:

nvm help

شما با استفاده از Node Version Manager، nvm، Node را با موفقیت نصب کرده اید تا نسخه های مختلف Node را نصب و مدیریت کنید.

حذف Node.js

بسته به نسخه ای که می خواهید هدف بگیرید، می توانید Node.js را با استفاده از apt یا nvm حذف نصب کنید. برای حذف نسخه پیش فرض مخزن، از apt در سطح سیستم استفاده خواهید کرد. این دستور بسته را حذف می کند و فایل های پیکربندی را حفظ می کند. اگر قصد دارید در آینده بسته را دوباره نصب کنید، این کار مفید است:

sudo apt remove nodejs

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

sudo apt purge nodejs

به عنوان آخرین مرحله، می‌توانید بسته‌های استفاده‌نشده را که به‌طور خودکار با بسته حذف شده نصب شده‌اند حذف کنید:

sudo apt autoremove

برای حذف نصب نسخه‌ای از Node.js که با استفاده از nvm فعال کرده‌اید، ابتدا مشخص کنید نسخه‌ای که می‌خواهید حذف کنید، نسخه فعال فعلی است یا خیر:

nvm current

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

nvm uninstall node_version

 

Output

Uninstalled node node_version

این دستور نسخه انتخاب شده Node.js را حذف نصب می کند.

اگر نسخه ای که می خواهید حذف کنید نسخه فعال فعلی است، ابتدا باید nvm را غیرفعال کنید تا تغییرات خود را فعال کنید:

nvm deactivate

اکنون می توانید نسخه فعلی را با استفاده از دستور uninstall که قبلاً استفاده شده است، حذف نصب کنید. با این کار همه فایل‌های مرتبط با نسخه هدفمند Node.js به جز فایل‌های کش که می‌توانند برای نصب مجدد استفاده شوند، حذف می‌شوند.

نتیجه

راه‌های زیادی برای راه‌اندازی و اجرای Node.js در سرور اوبونتو 18.04 وجود دارد. شرایط شما تعیین می کند که کدام یک از روش ها برای نیازهای شما بهترین است. در حالی که استفاده از نسخه بسته بندی شده در مخزن اوبونتو یک روش است، استفاده از nvm یا NodeSource PPA انعطاف پذیری بیشتری را ارائه می دهد.

 

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/

 

برچسب‌ها:UbuntuUbuntu 18.04اتصال به سرور مجازیانواع سرور مجازیاوبونتو 18.04پلت فرم جاوا اسکریپتجاوا اسکریپتخرید سرور مجازینصب Node.js

  • behnam gol mohamadi