با استفاده از Chef-solo برای پیکربندی یک برنامه Django در اوبونتو

روشهای زیادی برای خودکارسازی روند تنظیم و پیکربندی یک جعبه وجود دارد. به هر دلیلی ، اگر کل سیستم ما در این مرحله فقط از یک جعبه واحد تشکیل شده باشد ، راه اندازی یک زیرساخت کامل SCM (نرم افزار مدیریت پیکربندی نرم افزار) کارآیی کامل دارد. اسکریپت های پوسته یکی از گزینه ها هستند ، اما ما همچنین می توانیم از نسخه SCP-down از SCM استفاده کنیم که در چند ابزار موجود در آن موجود است. سرآشپز یکی از گزینه های محبوب است و "آشپز سولو" حالت پیکربندی مستقل آشپز است که در آن ما به یک گره اضافی احتیاج نداریم تا به عنوان "سرور سرآشپز" عمل کند. تمام آنچه نیاز است یک URL یا مسیری برای یک بسته تاربال است که شامل کتابهای آشپزی آشپز است. در مقایسه با اسکریپت های پوسته ، این نوع رویکرد از نظر کادر اعلامی تر و کارآمد تر است و همچنین مقدمه خوبی برای شروع کار با SCM ها یا IaC (زیرساخت ها به عنوان کد) است.

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

  • ترکیب بندی: از کتابهای آشپزی جامعه از سوپر مارکت سرآشپز یا سایر مکانها استفاده کنید.
  • منبع آزاد و آزاد؛ تحت مجوز Apache 2.0 مجوز مجاز است.
  • دسترسی به بقیه اکوسیستم Chef (InSpec ، ChefSpec ، Cookstyle ، Foodcritic ، سرآشپز و غیره)
  • بعداً کتابهای آشپزی و دستور العمل ها با حالت مشتری / سرور تطبیق می شوند.

و برخی از جنبه های جانبی:

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

دستور العمل های داخل کتاب آشپزی آشپز دارای یک DSL یاقوت است که "منابع" را توصیف می کند تا در یک حالت خاص در یک گره قرار داشته باشد. بیایید با یک پیمایش همراه شوید تا با چند مفهوم آشپز که برای سرآشپز سولو نیز کاربرد دارد آشنا شویم. هدف ما راه اندازی گره اوبونتو است که با استفاده از Gunicorn و NGINX یک برنامه وب Python / Django را اجرا می کند.

توجه: ما لزوماً نیازی نیست که ChefDK روی "ایستگاه کاری Chef" (دستگاه ما) نصب شود ، اگرچه با استفاده از آن ، می توانیم از دستورات 'chef generate' برای شروع کار با ساختار دایرکتوری برای ایجاد کتابهای آشپزی ، دستور العمل ها و موارد دیگر استفاده کنیم. در این مقاله فرض خواهیم کرد که ChefDK در ایستگاه کاری ما نصب شده است. دستورات با استفاده از نسخه 4.7.26-1 ChefDK اجرا شدند.


(همه چیز از این نقطه به بعد ، مگر اینکه مشخص شده باشد ، روی دستگاه ما اجرا می شود ، که به آن "ایستگاه کاری آشپز" نیز گفته می شود).

ایجاد کتاب آشپزی

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

پوشه ای بنام "my-chef-project" ایجاد کنید و پوشه ای را درون آن ایجاد کنید که "cookbooks" نام دارد. از ./my-chef-project/cookbooks/، اجرا کنید:

$ chef generate cookbook my-cookbook

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

.
└── my-chef-project
└── cookbooks
└── my-cookbook
├── CHANGELOG.md
├── LICENSE
├── Policyfile.rb
├── README.md
├── chefignore
├── kitchen.yml
├── metadata.rb
├── recipes
│ └── default.rb
├── spec
│ ├── spec_helper.rb
│ └── unit
│ └── recipes
│ └── default_spec.rb
└── test
└── integration
└── default
└── default_test.rb

اضافه کردن بسته ها

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

apt_update
package 'python3'
package 'python3-pip'
package 'nginx'
package 'pkg-config'
package 'libcairo2-dev'
package 'libjpeg-dev'
package 'libgif-dev'
package 'libgirepository1.0-dev'

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

توجه: بسته های زیر "nginx" برای تهیه برخی از وابستگی های پایتون از طریق پیپ مورد نیاز است. اینها ممکن است براساس وابستگی های پروژه پایتون / django شما که در آن مشخص شده است ، متفاوت باشند requirements.txt. برای تعیین این بسته هایی که باید در کتاب آشپزی خود داشته باشید می توانید از یک روش آزمایشی و خطا استفاده کنید. برای انجام این کار ، یک دفترچه راهنما sudo pip install -r requirements.txt(توجه داشته باشید: این سیستم بسته های گسترده را نصب می کند!) را بر روی یک دستگاه اوبونتو تازه فوراً نصب کنید تا ببینید که آیا این کار با موفقیت انجام شده است یا خیر. اگر اینگونه نباشد ، stderr باید نکات مربوط به بسته های موجود را به شما یاد دهد.

ایجاد کاربران لینوکس

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

user 'bob' do
  uid 1212
  gid 'users'
  home '/home/bob'
  shell '/bin/bash'
  password '$1$alilbito$C83FsODuq0A1pUMeFPeR10'
end

توجه داشته باشید که رمز عبور یک فرمت هش سایه است که در لینوکس استفاده می شود. می توان با استفاده از OpenSSL مشتق شد:

$ openssl passwd -1 -salt alilbitof mypassword

از جمله منبع برنامه

اکنون بیایید کد منبع برنامه Django را به کتاب آشپزی خود اضافه کنیم. محل کد منبع در داخل ./my-chef-project/cookbooks/my-cookbook/files/default/myapp/ ایجاد ./my-chef-project/cookbooks/my-cookbook/files/defaultدایرکتوری اگر آن وجود ندارد.

دستورالعمل کپی کردن این پرونده ها در یک مکان از راه دور در گره ما با استفاده از منبع remote_directory شرح داده شده است:

remote_directory '/home/bob/myapp' do
  source 'myapp' # This is the name of the folder containing our source code that we kept in ./my-cookbook/files/default/
  owner 'bob'
  group 'users'
  mode '0755'
  action :create
end

کشیدن در وابستگی های پایتون

برای نصب بسته های python در requirements.txt، ما می توانیم با استفاده از اجرای منابع برای اجرای یک فرمان های دلخواه. در این حالت ، باید دستور نصب pip را روی آن اجرا کنیم:

execute 'install python dependencies' do
  command 'pip3 install -r requirements.txt'
  cwd '/home/bob/myapp'
end

توجه: در نظر داشته باشید که این کاربر به عنوان کاربر اصلی اجرا می شود و کتابخانه های پایتون به صورت گسترده در سیستم نصب می شوند. اگر گره ما به طور انحصاری این یک برنامه پایتون را اجرا کند ، مشخص شده است ، بنابراین مشکلی نیست. با وجود این ، گزینه ای بهتر برای تمیز نگه داشتن چیزها پیدا کردن و استفاده از کتاب آشپزی جامعه ای که مدیریت نصب پایتون یا "virtualenvs" را مدیریت می کند. (یا حداقل ، یک سری بلوک های اجرای را برای تکرار این مطلب بنویسید ). استفاده از virtualenvs در پایتون تضمین می کند که هیچ گونه ابزار سیستم مبتنی بر پایتون یا سایر پروژه های پایتون تحت تأثیر قرار نمی گیرد.

تنظیم Gunicorn & NGINX

اکنون زمان آن رسیده است که Gunicorn WSGI HTTP Server را با NGINX به عنوان پراکسی معکوس خود آماده کنیم. Nginx همچنین برای مدیریت تمام دارایی های استاتیک از جنگو استفاده می شود.

برای بستن Gunicorn به عنوان سرویس Ubuntu ، می توان از Systemd استفاده کرد. systemd_unit منابع در آشپز پس از نسخه 12.11 گنجانده شده است.

systemd_unit 'gunicorn.service' do
  content({
  Unit: {
    Description: 'Django on Gunicorn',
    After: 'network.target',
  },
  Service: {
    ExecStart: '/usr/local/bin/gunicorn --workers 3 --bind localhost:8080 myapp.wsgi:application',
    User: 'bob',
    Group: 'www-data',
    WorkingDirectory: '/home/bob/myapp'
    Restart: 'always',
  },
  Install: {
    WantedBy: 'multi-user.target',
  }
  })
  action [:create, :enable, :start]
end

حال باید یک پیکربندی استاندارد پروکسی NGINX را به این سرور Gunicorn ارائه دهیم ، همانطور که در زیر مشاهده می شود. این قطعه می تواند وارد شود ./my-cookbook/templates/nginx.conf.erb. اگر وجود ندارد ، فهرست راهنماها را ایجاد کنید.

توجه: الگوهای سرآشپز از پرونده های یاقوت داخلی تعبیه شده پشتیبانی می کنند که می توانند شامل متغیرها ، عبارات یاقوت های روبی باشند. اگرچه این پرونده دارای پسوند 'erb' است ، اما ما از هیچ یک از عبارات یا بیان یاقوت استفاده نکردیم. همچنین ، به خاطر سادگی ، ما فقط پیکربندی غیر HTTPS nginx را در اینجا داریم (یادآوری ملایم ؛ لطفا این کار را در تولید انجام ندهید!)

server {
  listen 80;
  server_name http://example.com/;

  location = /favicon.ico { access_log off; log_not_found off; }
  location /static/ {
    root /home/bob/myapp/myapp/static;
  }

  location / {
  include proxy_params;
    proxy_pass http://localhost:8080/;
  }
}

توجه: گزینه جایگزین و پیکربندی بهتری نیز وجود دارد ، به عنوان مثال ، سرور Gunicorn به جای اتصال loopback TCP به یک سوکت دامنه یونیکس وصل می شود. ارزش آن را به دلایل عملکرد دارد.

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

template '/etc/nginx/sites-available/example.com.conf' do
  source 'nginx.conf.erb'
  owner 'root'
  group 'root'
  mode '0744'
end

فعال سازی پیکربندی ها در nginx به طور معمول با ایجاد یک Symlink با اشاره به پیکربندی sites-availableموجود در sites-enabledپوشه nginx انجام می شود . Symlinks را می توان در کتابهای آشپزی سرآشپز با منبع لینک به شرح زیر نشان داد:

link '/etc/nginx/sites-enabled/example.com.conf' do
  to '/etc/nginx/sites-available/example.com.conf'
end

و حذف Symlink پیکربندی پیش فرض:

link '/etc/nginx/sites-enabled/default' do
  action :delete
end

NGINX را شروع کنید

و سرانجام ، برای خاموش کردن سرویس nginx:

service 'nginx' do
  action :enable
  action :start
end

لیست های لیست

لیست های اجرا شده در آشپز لیستی از نقش ها یا دستور العمل های موجود در کتاب آشپزی است که به ترتیب در گره اجرا می شود. ما یک کتاب آشپزی "کتاب آشپزی من" و دستور "پیش فرض" در داخل آن داریم که باید آن را در جعبه اوبونتو اجرا کنیم ، بنابراین runlist.json در فهرست پروژه ما ( ./my-chef-project/runlist.json) باید به این شکل باشد:

{
  "run_list": [
    "recipe[my-cookbook::default]"
  ]
}

مراحل آخر

کتاب آشپزی ما برای تکنواز سرآشپز آماده ارائه خدمت است. زمان آن رسیده که یک دستگاه اوبونتو 18.04 تهیه کرده و ChefDK را روی آن نصب کنید:

$ ssh [email protected] 'apt-get update && yes | apt-get install curl && curl https://packages.chef.io/files/current/chefdk/4.7.45/ubuntu/18.04/chefdk_4.7.45-1_amd64.deb -o chefdk.deb && yes | dpkg -i chefdk.deb && rm chefdk.deb'

با بازگشت به ایستگاه کاری Chef ، تمام کاری که ما باید انجام دهیم اینست که پوشه cookbooks را درون یک تاربال قرار دهید ، آن تاربال را به همراه runlist.jsonگره از راه دور که در بالا تهیه کردیم انتقال دهید و دستور chef-solo را اجرا کنید:

(دستور زیر قرار است در داخل گره یا "مشتری سرآشپز" اجرا شود و نه ایستگاه کاری Chef).

$ chef-solo --recipe-url $(pwd)/chef-solo.tar.gz -j $(pwd)/runlist.json --chef-license=accept

یا اینجا یک لاینر (برای اجرا از ./my-chef-project/CWD در ایستگاه کاری سرآشپز) وجود دارد:

tar zvcf chef-solo.tar.gz ./cookbooks &&\
scp chef-solo.tar.gz runlist.json [email protected]:~/ &&\
ssh [email protected] 'chef-solo --recipe-url $(pwd)/chef-solo.tar.gz -j $(pwd)/runlist.json --chef-license=accept'

خودشه! تماشای خروجی استاندارد را با فعالیت Chef در تلاش کنید گره خود را به آنچه که در کتابهای آشپزی مشخص کرده اید ، همگرا کنید. سرآشپز - تمام سنگهای مورد نیاز برای همه کتابهای آشپزی را نصب خواهد کرد. اگر فرمان chef-solo موفقیت آمیز باشد ، ما یک برنامه کاربردی Django داریم که در پشت جعبه Ubuntu در پشت nginx اجرا می شود. برای آزمایش آن به دامنه / IP بروید.

توجه: به یاد داشته باشید که در django شاید لازم باشد این دامنه / ip را در ALLOWED_HOSTSلیست تنظیم کنید settings.py.

در پاسخ به تغییرات

هر زمان که تغییر در محتوای دایرکتوری پروژه خود (دستور العمل ها ، قالب ها یا کد منبع برنامه و غیره) ایجاد کنیم ، به سادگی تک لاینر را از فهرست پروژه اجرا کنید.

نکته: اگر کتاب آشپزی دارای نسخه کنترل شده با git است (همانطور که باید) ، یکی از توصیه های خوب تنظیم قلاب git برای اجرای این تک لاینر است.

میزبانی از تاربال (اختیاری)

اگر به آخرین فرمان آشپز-انفرادی دقت می کنید ، توجه کنید که --recipe-urlمنظور از گرفتن URL است. این بدان معنی است که شما می توانید یک گردش کار داشته باشید که یک CI تاربال آشپز سولوی آشپز شما را بسازد ، آن را در جایی آپلود کرده و گره خود را پیکربندی کند تا به طور دوره ای از آن بیرون بیاید.

نکته: برای کشیدن تاربال تغییر یافته به صورت دورانی به عنوان کاردستی از حلقه استفاده کنید. curl -z $fileبه If-Modified-Sinceهدرها احترام خواهد گذاشت و فقط در صورت بارگیری پرونده از راه دور از زمان محلی در محلی موجود ، توپ تار را بارگیری می کند $file.



شروع کار با SaltStack در اوبونتو 17.04

شروع کار با SaltStack در اوبونتو 17.04

SaltStack یک برنامه مدیریت پیکربندی مبتنی بر پایتون است که برای اتوماسیون پرونده های پیکربندی ، استقرار و هر چیز دیگری بهینه سازی شده است.

نحوه نصب جنکینز در CentOS 7

نحوه نصب جنکینز در CentOS 7

جنکینز یک ابزار محبوب منبع باز CI (ادغام مداوم) است که به طور گسترده ای برای توسعه پروژه ، استقرار و اتوماسیون پروژه مورد استفاده قرار می گیرد. این مقاله

نحوه نصب و پیکربندی Concord CI در اوبونتو 16.04

نحوه نصب و پیکربندی Concord CI در اوبونتو 16.04

با استفاده از یک سیستم متفاوت؟ مقدمه ادغام مداوم یک شیوه توسعه نرم افزار DevOps است که توسعه دهندگان را قادر می سازد به طور مکرر ادغام شوند

نحوه نصب Drone CI در اوبونتو 18.04

نحوه نصب Drone CI در اوبونتو 18.04

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

نحوه نصب Foreman در اوبونتو 16.04 LTS

نحوه نصب Foreman در اوبونتو 16.04 LTS

با استفاده از یک سیستم متفاوت؟ Foreman ابزاری رایگان و منبع باز است که به شما در پیکربندی و مدیریت سرورهای فیزیکی و مجازی کمک می کند. فورما

Balancers Vultr Load Balancers

Balancers Vultr Load Balancers

Balancers Load Balancer چیست در مقابل برنامه شما قرار می گیرد و ترافیک ورودی را در چندین نمونه برنامه شما توزیع می کند. فو

نحوه نصب و پیکربندی Ansible در CentOS 7 برای استفاده با ویندوز سرور

نحوه نصب و پیکربندی Ansible در CentOS 7 برای استفاده با ویندوز سرور

با استفاده از یک سیستم متفاوت؟ Ansible یک ابزار منبع باز برای اتوماسیون وظایف است. این پیکربندی سرورهای لینوکس و ویندوز شما را مدیریت می کند. اون کار میکنه

نحوه نصب CD Strider در اوبونتو 18.04

نحوه نصب CD Strider در اوبونتو 18.04

مقدمه Strider CD یک بستر استقرار مداوم با منبع باز است. برنامه در Node.js نوشته شده است و از MongoDB به عنوان پس زمینه ذخیره سازی استفاده می کند. گام های بلند برداشتن

نحوه نصب SaltStack در CentOS 7

نحوه نصب SaltStack در CentOS 7

SaltStack یا Salt یک راه حل مدیریت پیکربندی منبع باز است که می تواند برای اجرای اجرای راه دور ، مدیریت پیکربندی ، کد

استفاده از SaltStack With Pillars on Ubuntu 17.04

استفاده از SaltStack With Pillars on Ubuntu 17.04

در حالی که SaltStack ابزاری عالی برای اجرای همزمان در بسیاری از سرورهاست ، از پیش تنظیمات تنظیم شده تعریف شده برای هر میزبان نیز که در

نحوه نصب و پیکربندی Ansible در Debian 9 برای استفاده با ویندوز سرور

نحوه نصب و پیکربندی Ansible در Debian 9 برای استفاده با ویندوز سرور

با استفاده از یک سیستم متفاوت؟ Ansible یک ابزار منبع باز برای اتوماسیون وظایف است. این پیکربندی سرورهای لینوکس و ویندوز شما را مدیریت می کند. اون کار میکنه

ایجاد عکس های فوری با Packer

ایجاد عکس های فوری با Packer

Packer چیست؟ Packer ابزاری برای تصویربرداری سرور است که توسط HashiCorp ساخته شده است. تصویربرداری سرور؛ یا در عوض ، زیرساخت های تغییر ناپذیر. یک جایگزین محبوب است

استفاده از مدیر بسته بندی Chocolatey در ویندوز

استفاده از مدیر بسته بندی Chocolatey در ویندوز

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

نحوه نصب Foreman در CentOS 7

نحوه نصب Foreman در CentOS 7

با استفاده از یک سیستم متفاوت؟ Foreman ابزاری رایگان و منبع باز است که به شما در پیکربندی و مدیریت سرورهای فیزیکی و مجازی کمک می کند. فورما

نحوه نصب و پیکربندی Concord CI در CentOS 7

نحوه نصب و پیکربندی Concord CI در CentOS 7

با استفاده از یک سیستم متفاوت؟ مقدمه ادغام مداوم یک شیوه توسعه نرم افزار DevOps است که توسعه دهندگان را قادر می سازد به طور مکرر ادغام شوند

نحوه نصب و پیکربندی GoCD در CentOS 7

نحوه نصب و پیکربندی GoCD در CentOS 7

با استفاده از یک سیستم متفاوت؟ GoCD یک سیستم تحویل مداوم و اتوماسیون مداوم با منبع باز است. این امکان را به شما می دهد تا با استفاده از موازی آن ، جریان های کاری پیچیده را مدل کنید

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

LiteCart یک بستر سبد خرید آزاد و منبع باز است که به زبان های PHP ، jQuery و HTML 5 نوشته شده است. این نرم افزار ساده ، سبک و با کاربرد آسان است.

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.

اشتراک NFS را در Debian تنظیم کنید

اشتراک NFS را در Debian تنظیم کنید

NFS یک سیستم فایل مبتنی بر شبکه است که به رایانه ها اجازه می دهد تا از طریق شبکه رایانه ای به فایلها دسترسی پیدا کنند. این راهنما توضیح می دهد که چگونه می توانید پوشه ها را روی NF قرار دهید

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

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

نحوه نصب Matomo Analytics در Fedora 28

نحوه نصب Matomo Analytics در Fedora 28

با استفاده از یک سیستم متفاوت؟ Matomo (سابقا پیویک) یک بستر تحلیلی منبع باز است ، یک جایگزین باز برای Google Analytics. منبع Matomo میزبان o

یک سرور TeamTalk را در لینوکس تنظیم کنید

یک سرور TeamTalk را در لینوکس تنظیم کنید

TeamTalk یک سیستم کنفرانس است که به کاربران امکان می دهد مکالمات صوتی / تصویری با کیفیت بالا ، چت متنی ، انتقال فایل ها و صفحه های به اشتراک بگذارند. من

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

Vultr یک ویژگی را فراهم می کند که به شما امکان می دهد با ایجاد یک نمونه جدید ، کلیدهای SSH را از قبل نصب کنید. این اجازه می دهد تا به کاربر root دسترسی داشته باشید ، با این حال ، th

نحوه نصب انجمن NodeBB در FreeBSD 12

نحوه نصب انجمن NodeBB در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ NodeBB یک نرم افزار انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. NodeB

نصب و راه اندازی ZNC در اوبونتو

نصب و راه اندازی ZNC در اوبونتو

ZNC یک پیشرانه پیشرفته شبکه IRC است که تمام وقت بهم متصل می شود تا مشتری IRC بتواند بدون از دست دادن جلسه گپ قطع یا وصل شود.

نحوه نصب Ranger Terminal File Manager در لینوکس

نحوه نصب Ranger Terminal File Manager در لینوکس

رنجر یک مدیر فایل مبتنی بر خط فرمان است که دارای کلیدهای اتصال VI است. این برنامه یک رابط لعنتی مینیمالیستی و زیبا با نمای سلسله مراتب فهرست ارائه می دهد