بلاگ ها

لیست تمامی بلاگ ها
تابع Python map()

تابع Python map()

تابع Python map()map()یک تابع داخلی در پایتون است که یک تابع را برای همه عناصر در یک تکرار معین اعمال می کند. این امکان را به شما می دهد تا بدون استفاده از حلقه ، کد ساده و تمیز بنویسید.تابع map() به شکل زیر می باشد:map(function, iterable, ...)این تابع دو استدلال اجباری را می پذیرد:function- عملکردی که برای هر عنصر از iterable فراخوانی می شود .iterable- یک یا چند مورد که از تکرار پشتیبانی می کند. بسیاری از اشیاء داخلی در پایتون ، مانند لیست ها ، دیکشنری ها و tuples، جز iterables هستند.در پایتون 3 ، map()یک شی نقشه با اندازه مساوی با موضوع تکرار شونده منتقل می شود. در پایتون 2 ، تابع یک لیست را برمی گرداند.برای مثال بهتر توضیح دهیم که تابع map()چگونه کار می کند. بگویید ما یک لیست داریم و ما میخواهیم هر عنصر موجود در لیست را به حروف بزرگ تبدیل کنیم.یک راه برای انجام این کار استفاده از حلقه forاست:directions = ["north", "east", "south", "west"]directions_upper = []for direction in directions: d = direction.upper() directions_upper.append(d)print(directions_upper)خروجی:['NORTH', 'EAST', 'SOUTH', 'WEST']با تابعmap() ، کد بسیار ساده تر و انعطاف پذیر تر خواهد بود.def to_upper_case(s): return s.upper()directions = ["north", "east", "south", "west"]directions_upper = map(to_upper_case, directions)print(list(directions_upper))از تابع list() برای تبدیل شی map به list استفاده می کنیم :خروجی:['NORTH', 'EAST', 'SOUTH', 'WEST']اگر تابع برگشتی ساده باشد ، روش دیگر Pythonic استفاده از یک تابع lambda است:directions = ["north", "east", "south", "west"]directions_upper = map(lambda s: s.upper(), directions)print(list(directions_upper))در اینجا مثال دیگری وجود دارد که نشان می دهد چگونه می توانید لیستی از اعداد مربع را از 1 تا 10 ایجاد کنید:squares = map(lambda n: n*n , range(1, 11))print(list(squares))خروجی:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]range()دنباله ای از اعداد صحیح را ایجاد می کند.استفاده از map() با چند Iterablesشما میتوانید با تابعmap()تعداد زیادی iterables منتقل کنید. تعداد آرگومانهای ورودی موردنیاز که تابع iterables را می پذیرد باید برابر با تعداد تکرارها باشد.مثال زیر نحوه انجام ضرب عناصر خرد را در دو لیست نشان می دهد:def multiply(x, y): return x * ya = [1, 4, 6]b = [2, 3, 5]result = map(multiply, a, b)print(list(result))خروجی:[2, 12, 30]همان کد ، اما با استفاده از تابع lambda به این شکل است:a = [1, 4, 6]b = [2, 3, 5]result = map(lambda x, y: x*y, a, b)print(list(result))با ارائه چندین iterables ، اندازه خروجی برگشتی برابر با کوتاهترین iterables است.بیایید مثالی را مشاهده کنیم وقتی که iterables با طول یکسان نیستند:a = [1, 4, 6]b = [2, 3, 5, 7, 8]result = map(lambda x, y: x*y, a, b)print(list(result))عناصر اضافی (7 و 8) نادیده گرفته می شوند:خروجی:[2, 12, 30]نتیجه گیریتابع پایتونmap()به همراه یک تابع یک شی iterable را می گیرد و آن تابع را برای هر عنصر در iterable اعمال می کند.

ادامه مطلب
چگونه سرعت سایت وردپرس را افزایش دهیم؟

چگونه سرعت سایت وردپرس را افزایش دهیم؟

چگونه سرعت سایت وردپرس را افزایش دهیم؟آیا سایت وردپرس شما کند است؟ رتبه بندی گوگل سایت شما بد است؟ سرعت صفحه وب سایت هنگام رتبه بندی نتایج موتور جستجوی Google یک عامل مهم است. ما در این آموزش نحوه افزایش سرعت سایت ورد پرس را به شما آموزش خواهیم داد.نحوه تست سرعت سایت وردپرسابزارهای زیادی وجود دارند که سرعت وب سایت شما را آزمایش می کنند. ما از GTMetrix برای بررسی سرعت صفحه استفاده می کنیم .در GTMetrix می توانیم نوع مرورگر (Firefox یا Chrome) را انتخاب کنیم ، از 7 مکان مختلف تست کنیم و عملکرد سایت را در انواع مختلف اتصال (پهن باند ، کابل یا موبایل) بررسی کنیم.همچنین می توانید از سایت های Pingdom و Google PageSpeed Insights استفاده کنید.افزونه WordPress Caching را نصب کنیدW3 Total Cache در حال حاضر بهترین افزونه وردپرس برای بهینه سازی عملکرد مبتنی بر کش است. W3 Total Cache با ذخیره چندین عنصر در صفحات خود ، سرعت کلی سایت شما را بهبود می بخشد که باعث افزایش پاسخگویی کلی وب سرور شما می شود.این ابزار همچنین به شما در به حداقل رساندن سایز و مصرف پهنای باند HTML ، JavaScript و CSS کمک می کند.بهینه سازی پایگاه دادهافزونه WP-Optimize را نصب و پیکربندی کنید و تمام داده های غیر ضروری را پاک کنید ، جداول خود را تمیز کرده و حتی فضای از دست رفته در تقسیم بندی داده ها را بازیابی کنید.فشرده سازی GZIPبا استفاده از این روش می توانید پرونده های سایت خود را با کوچکتر کردن آنها فشرده سازی کنید. با این کار پهنای باند سایت شما کاهش می یابد و پرونده های مربوطه را سریعتر به مرورگر منتقل می کنید.W3 Total Cache دارای ویژگی فشرده سازی GZIP است که می توانید پس از نصب آن را فعال کنید. همچنین می توانیم با تغییر پرونده .htaccess فشرده سازی GZIP را به سایت وردپرس خود اضافه کنیم. می توانید از ابزار تست Gzip  برای نتایج دقیق استفاده کنید یا می توانید از ابزار تست فشرده سازی Google Gzip استفاده کنید.تصاویر خود را فشرده و بهینه کنیدWP Smush یک افزونه وردپرس است که به ما امکان می دهد تصاویر را بدون از دست دادن کیفیت بهینه کنیم. استفاده از آن بسیار آسان است و می توانید هنگام بارگذاری تصاویر در سایت وردپرس تصاویر خود را بهینه کنید.یکی دیگر از موارد عالی در مورد این افزونه این است که می تواند تمام تصاویر موجود را در سایت شما بهینه کند بدون اینکه مجبور به بارگذاری مجدد آنها شوید.نتیجهبهبود سرعت سایت وردپرس شما باید اولویت شماره یک شما باشد. ما در این آموزش چند ابزار کاربردی برای افزایش سرعت سایت های وردپرسی به شما معرفی کردیم.

ادامه مطلب
آموزش نصب Let's Encrypt در اوبونتو 20.04 Ubuntu

آموزش نصب Let's Encrypt در اوبونتو 20.04 Ubuntu

آموزش نصب Let's Encrypt در اوبونتو 20.04 UbuntuLet's Encrypt یک گواهی نامه است که توسط گروه تحقیقاتی امنیت اینترنت (ISRG) ایجاد شده است. این گروه گواهینامه های SSL رایگان را از طریق یک فرآیند کاملاً خودکار طراحی شده و برای از بین بردن ایجاد گواهی دستی ، اعتبار سنجی ، نصب و تمدید مجوز ارائه می دهند. گواهینامه های صادر شده توسط Let Encrypt به مدت 90 روز از تاریخ انتشار معتبر هستند و مورد اعتماد همه مرورگرهای اصلی امروز هستند. در این آموزش نصب Let's Encrypt در اوبونتو 20.04 Ubuntu با اجرای Apache به عنوان وب سرور توضیح داده شده است. ما همچنین نحوه پیکربندی Apache برای استفاده از گواهی SSL و فعال کردن HTTP / 2 را نشان خواهیم داد.پیش نیازهاقبل از ادامه از پیش نیازهای زیر اطمینان حاصل کنید:به عنوان root یا کاربر دارای امتیازات sudo وارد شده اید .دامنه ای که می خواهید مجوز SSL را روی آن نصب کنید به IP سرور شما متصل شده باشد.آپاچی را نصب شد .نصب Certbotبرای به دست آوردن گواهینامه از certbot استفاده خواهیم کرد. این یک ابزار خط فرمان است که وظایف مربوط به اخذ و تمدید گواهینامه های رمزگذاری SSL را خودکار انجام میدهد.بسته certbot در مخازن پیش فرض اوبونتو گنجانده شده است. لیست بسته ها را به روز کنید و با استفاده از دستورات زیر ، certbot را نصب کنید:sudo apt updatesudo apt install certbotتولید گروه Strong Dhتبادل کلید Diffie-Hellman (DH) روشی برای تبادل ایمن کلیدهای رمزنگاری بر روی کانال ارتباطی ناامن است. برای تقویت امنیت مجموعه جدیدی از پارامترهای DH 2048 bit را ایجاد کنید:sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048می توانید آن را تا 4096 بیت تغییر دهید اما بسته به سیستم شما ممکن است تولید بیش از 30 دقیقه طول بکشد.اخذ گواهی نامه Let’s Encrypt SSLبرای به دست آوردن گواهینامه SSL برای دامنه ، ما می خواهیم از افزونه Webroot استفاده کنیم که با ایجاد یک پرونده موقت برای تأیید اعتبار دامنه درخواستی در دایرکتوری ${webroot-path}/.well-known/acme-challenge کار می کند. دستور های زیر را برای ایجاد دایرکتوری و نوشتن آن برای سرور آپاچی اجرا کنید.sudo mkdir -p /var/lib/letsencrypt/.well-knownsudo chgrp www-data /var/lib/letsencryptsudo chmod g+s /var/lib/letsencryptبرای جلوگیری از کپی کردن کد و حفظ بیشتر تنظیمات ، تنظیمات زیر را ایجاد کنید:nano /etc/apache2/conf-available/letsencrypt.confAlias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"<Directory "/var/lib/letsencrypt/"> AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS</Directory>nano /etc/apache2/conf-available/ssl-params.confSSLProtocol all -SSLv3 -TLSv1 -TLSv1.1SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384SSLHonorCipherOrder offSSLSessionTickets offSSLUseStapling OnSSLStaplingCache "shmcb:logs/ssl_stapling(32768)"SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem" Header always set Strict-Transport-Security "max-age=63072000"قطعه فوق با استفاده از تراشه های توصیه شده توسط موزیلا ، OCSP Stapling ، HTTP Strict Transport Security (HSTS) را فعال میکند و چند هدر HTTP با محوریت امنیتی را اعمال می کند.قبل از فعال کردن فایل های پیکربندی، مطمئن شوید که هر دو mod_sslو mod_headersرا فعال کنید:sudo a2enmod sslsudo a2enmod headersبعد ، با اجرای دستورات زیر پرونده های پیکربندی SSL را فعال کنید:sudo a2enconf letsencryptsudo a2enconf ssl-paramsماژول HTTP / 2 را فعال کنید ، که باعث می شود سایتهای شما سریعتر و قوی تر شوند:sudo a2enmod http2بارگیری پیکربندی Apache برای اعمال تغییرات:sudo systemctl reload apache2اکنون می توانیم ابزار Certbot را با افزونه webroot اجرا کنیم و پرونده های گواهی SSL را بدست آوریم:sudo certbot certonly --agree-tos --email admin@example.com --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.comاگر گواهی SSL با موفقیت به دست بیاید ، certbot پیام زیر را چاپ می کند:IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2020-10-06. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-leاکنون که پرونده های گواهی نامه را دارید ، پیکربندی میزبان مجازی دامنه خود را به شرح زیر ویرایش کنید:nano /etc/apache2/sites-available/example.com.conf<VirtualHost *:80> ServerName mail.digital.mk Redirect permanent / https://mail.digital.mk/</VirtualHost><VirtualHost *:443> ServerName mail.digital.mk Protocols h2 http:/1.1 <If "%{HTTP_HOST} == 'www.mail.digital.mk'"> Redirect permanent / https://mail.digital.mk/ </If> DocumentRoot /var/www/mail.digital.mk/public_html ErrorLog ${APACHE_LOG_DIR}/mail.digital.mk-error.log CustomLog ${APACHE_LOG_DIR}/mail.digital.mk-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/mail.digital.mk/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/mail.digital.mk/privkey.pem # Other Apache Configuration</VirtualHost>با پیکربندی بالا ، ما HTTPS را از www به نسخه غیر www هدایت می کنیم . برای اعمال تغییرات ، سرویس Apache را بارگیری مجدد کنید:sudo systemctl reload apache2اکنون می توانید وب سایت خود را با استفاده از https:// باز کنید و به نماد قفل سبز را خواهید دید.اگر دامنه خود را با استفاده از SSL Labs Server Test آزمایش کنید ، مطابق شکل زیر درجه A + دریافت خواهید کرد:تمدید خودکار گواهی Let’s Encrypt SSLگواهینامه های رمزگذاری شده برای مدت 90 روز معتبر هستند. برای تجدید خودکار گواهینامه ها قبل از انقضا ، بسته certbot یک cronjob ایجاد می کند که دو بار در روز اجرا می شود و 30 روز قبل از انقضا به طور خودکار هر گواهینامه را تمدید می کند.پس از تمدید گواهینامه ، مجبوریم سرویس آپاچی را بارگیری کنیم. --renew-hook "systemctl reload apache2"را به فایل /etc/cron.d/certbot اضافه کنید :nano /etc/cron.d/certbot0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload apache2"برای آزمایش فرایند تمدید، می توانید از سوئیچ --dry-run certbot استفاده کنید :sudo certbot renew --dry-runاگر خطایی وجود نداشته باشد ، به این معنی است که روند تمدید موفقیت آمیز بوده است.نتیجه گیریدر این آموزش ، ما در مورد آموزش نصب Let's Encrypt در اوبونتو 20.04 Ubuntu صحبت کردیم تا بتوانید گواهینامه های SSL را برای دامنه های خود بدست آورید. ما همچنین به شما نشان داده ایم كه چگونه Apache را برای استفاده از گواهینامه ها پیكربندی كنید و برای تمدید خودکار گواهینامه اقدام به تنظیم كاربردی كنید.برای کسب اطلاعات بیشتر در مورد اسکریپت Certbot ، به مستندات Certbot مراجعه کنید

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

دستور Sysctl در لینوکس

دستور Sysctl در لینوکسدر این مقاله نحوه استفاده از دستور sysctlدر لینوکس برای مشاهده و اصلاح پارامترهای هسته در زمان اجرا توضیح داده شده است.استفاده ازsysctlبرای مشاهده پارامترهای هستهبرای مشاهده کلیه پارامترهای هسته فعلی، گزینه sysctl، را با استفاده از -a فراخوانی کنید:sysctl -aخروجی یک لیست بزرگ است که چیزی شبیه به شکل زیر خواهد بود که در آن هر خط نام پارامتر و مقدار آن را نشان می دهد:abi.vsyscall32 = 1debug.exception-trace = 1debug.kprobes-optimization = 1...همه کاربران می توانند پارامترهای هسته فعلی را مشاهده کنند. فقط کاربر root می تواند مقادیر خود را تغییر دهد.می توانید با وارد کردن نام آن به عنوان آرگومان در sysctl ، مقدار یک پارامتر واحد را بررسی کنید . به عنوان مثال ، برای بررسی مقدار swappiness فعلی ، تایپ می کنید:sysctl vm.swappinessخروجی:vm.swappiness = 60Swappiness یک ویژگی هسته لینوکس است که مشخص می کند چند بار سیستم از فضای swap استفاده خواهد کرد .در این دستور sysctl اطلاعات از دایرکتوری /proc/sysخوانده می شود. دایرکتوری/proc/sys مجازی است که شامل اشیاء پرونده ای است که می تواند برای مشاهده و تنظیم پارامترهای هسته فعلی استفاده شود.همچنین می توانید با نمایش محتوای پرونده مناسب ، مقدار پارامتر را مشاهده کنید. تنها تفاوت در نحوه ارائه پرونده است. به عنوان مثال ، هر دو sysctl vm.swappinessو cat /proc/sys/vm/swappinessهمان خروجی را دارند. هنگام استفاده از دایرکتوری sysctl، اسلایدها با نقاط جایگزین می شوند و قسمت proc.sys فرض می شود.استفاده از sysctlبرای تغییر پارامترهای کرنلبرای تنظیم یک پارامتر کرنل در زمان اجرا ،دستور sysctl را به همراه نام و مقدار پارامتر در قالب زیر اجرا کنید:sysctl -w parameter=valueاگر مقدار شامل فضای خالی یا کاراکترهای ویژه است ، مقدار آن را بین "" قرار دهید. همچنین می توانید چندین parameter=valueزوج را در همان فرمان منتقل کنید.به عنوان مثال ، برای فعال کردن ارسال بسته IPv4 ، اجرا کنید:sysctl -w net.ipv4.ip_forward=1این تغییر بلافاصله اعمال می شود ، اما پایدار نیست. پس از راه اندازی مجدد سیستم ، مقدار پیش فرض بارگیری می شود.برای تنظیم یک پارامتر به طور دائم ، باید تنظیمات را در پرونده /etc/sysctl.confیا /etc/sysctl.dبنویسید :sysctl -w net.ipv4.ip_forward=1 >> /etc/sysctl.confروش دیگر برای تغییر پارامترها استفاده از دستورechoبرای نوشتن تنظیمات در پرونده های موجود در فهرست/proc/sysاست. به عنوان مثال ، به جای اجرای دستور فوق ، می توانید از موارد زیر استفاده کنید:echo 1 > /proc/sys/net/ipv4/ip_forwardاین گزینه -p به شما امکان می دهد تنظیمات را از یک فایل پیکربندی بارگیری کنید:sysctl -p /etc/sysctl.d/file_name.confوقتی فایلی داده نشد ، sysctlپرونده /etc/sysctl.confرا میخواند.نتیجه گیریدستورsysctl به شما امکان می دهد پارامترهای هسته لینوکس را مشاهده و تغییر دهید.

ادامه مطلب
آموزش نصب OpenCV در اوبونتو 20.04 Ubuntu

آموزش نصب OpenCV در اوبونتو 20.04 Ubuntu

آموزش نصب OpenCV در اوبونتو 20.04 UbuntuOpenCV (Open Source Computer Vision Library) یک کتابخانه منبع باز است که دارای اتصالات C ++ ، Python و Java است و از کلیه سیستم عامل های اصلی پشتیبانی می کند. این می تواند از پردازش چند هسته ای بهره ببرد و از ویژگی های شتاب GPU برای عملکرد در زمان واقعی برخوردار باشد. در این آموزش نصب OpenCV در اوبونتو 20.04 Ubuntu توضیح داده شده است.نصب OpenCV از مخزن اوبونتوOpenCV از مخازن پیش فرض اوبونتو 20.04 برای نصب در دسترس است. برای نصب آن دستور زیر اجرا شود:sudo apt updatesudo apt install libopencv-dev python3-opencvدستور فوق کلیه بسته های لازم برای اجرای OpenCV را نصب می کند.با وارد کردن ماژول cv2 و چاپ نسخه OpenCV ، نصب را تأیید کنید :python3 -c "import cv2; print(cv2.__version__)"در زمان نوشتن نسخه در مخازن 4.2 است:4.2.0نصب OpenCV از سورس اصلیساختن کتابخانه OpenCV از سورس اصلی به شما امکان می دهد آخرین نسخه موجود را داشته باشید. این سیستم برای سیستم خاص شما بهینه خواهد شد و کنترل کامل بر گزینه های ساخت را خواهید داشت. این روش پیشنهادی برای نصب OpenCV است.برای نصب جدیدترین نسخه OpenCV از منبع ، مراحل زیر را انجام دهید:ابزار و وابستگی های را نصب کنید :sudo apt install build-essential cmake git pkg-config libgtk-3-dev \ libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \ libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \ gfortran openexr libatlas-base-dev python3-dev python3-numpy \ libtbb2 libtbb-dev libdc1394-22-dev libopenexr-dev \ libgstreamer-plugins-base1.0-dev libgstreamer1.0-devمخازن OpenCV و OpenCV را کلون کنید:mkdir ~/opencv_build && cd ~/opencv_buildgit clone https://github.com/opencv/opencv.gitgit clone https://github.com/opencv/opencv_contrib.gitدر زمان نوشتن ، نسخه پیش فرض موجود در مخازن github نسخه 4.3.0 است. اگر می خواهید نسخه قدیمی OpenCV را نصب کنید ، سی دی را برای هر دو opencvو opencv_contribدر دایرکتوری ها نصب کرده و اجرا کنیدgit checkout <opencv-version>پس از اتمام دانلود است، دستورات زیر را بزنید:cd ~/opencv_build/opencvmkdir -p build && cd buildساخت OpenCV را با CMake تنظیم کنید:cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \ -D BUILD_EXAMPLES=ON ..خروجی چیزی شبیه به زیر خواهد بود:-- Configuring done-- Generating done-- Build files have been written to: /home/vagrant/opencv_build/opencv/buildفرآیند گردآوری را شروع کنید:make -j8-j flag را مطابق با پردازنده خود اصلاح کنید. اگر تعداد پردازنده های خود را نمی دانید ، می توانید با تایپ کردن دستور nproc تعداد آن را پیدا کنید .بسته به پیکربندی سیستم شما ، ممکن است چندین دقیقه یا بیشتر طول بکشد.OpenCV را با دستور زیر نصب کنید:sudo make installبرای تأیید نصب ، دستورات زیر را تایپ کنید و باید نسخه OpenCV را ببینید.C++:pkg-config --modversion opencv4خروجی:4.3.0پایتون:python3 -c "import cv2; print(cv2.__version__)"خروجی:4.3.0-devنتیجه گیریما دو روش مختلف برای نصب OpenCV در دستگاه اوبونتو 20.04 را به شما نشان داده ایم. روشی که انتخاب می کنید به نیازها و ترجیحات شما بستگی دارد. اگرچه نصب از مخزن اوبونتو آسانتر است ، اما ساخت OpenCV از منبع ، انعطاف پذیری بیشتری به شما می دهد و این باید اولین گزینه برای نصب OpenCV باشد.

ادامه مطلب
آموزش نصب Kvm در اوبونتو 20.04 Ubuntu

آموزش نصب Kvm در اوبونتو 20.04 Ubuntu

آموزش نصب Kvm در اوبونتو 20.04 UbuntuKVM یک فناوری مجازی سازی منبع باز است که در هسته لینوکس ساخته شده است. KVM برای اجرای چندین ماشین مجازی مجازی لینوکس یا ویندوز است. هر ماشین کاملاً از دیگر ماشین ها جدا شده و سیستم عامل خاص خود و سخت افزار مجازی اختصاصی مانند CPU (ها) ، حافظه ، رابط های شبکه و ذخیره سازی را دارد. این راهنما آموزش نصب و پیکربندی KVM را روی دسک تاپ اوبونتو 20.04 Ubuntu ارائه می دهد. ما همچنین به شما می آموزیم که چگونه ماشینهای مجازی ایجاد کنید.پیش نیازهابرای اجرای ماشین های میهمان با بیش از 2 گیگابایت رم ، باید سیستم میزبان 64 بیتی داشته باشید.قبل از ادامه نصب ، مطمئن شوید که دستگاه میزبان اوبونتو از مجازی سازی KVM پشتیبانی می کند. این سیستم باید دارای پردازنده Intel با VT-x (vmx) یا پردازنده AMD با پشتیبانی از فناوری AMD-V (svm) باشد.برای تأیید اینکه پردازنده شما از مجازی سازی سخت افزار پشتیبانی می کند ، دستور زیر را اجرا کنید:grep -Eoc '(vmx|svm)' /proc/cpuinfoاگر CPU از مجازی سازی سخت افزار پشتیبانی کند ، فرمان عددی بزرگتر از صفر را صادر می کند ، که تعداد هسته های CPU است. در غیر این صورت ، اگر خروجی0باشد ، به این معنی است که CPU از مجازی سازی سخت افزار پشتیبانی نمی کند.در برخی از دستگاه ها ، پسوندهای فناوری مجازی ممکن است توسط سازندگان در BIOS غیرفعال شود.برای بررسی اینکه VT در BIOS فعال شده است ، از ابزار kvm-okاستفاده کنید. برای نصب بسته cpu-checkerkvm-ok، دستورات زیر را به عنوان root یا کاربر با امتیازات sudo وارد کنید :sudo apt updatesudo apt install cpu-checkerپس از نصب ، بررسی کنید که آیا سیستم شما می تواند ماشینهای مجازی KVM را اجرا کند:kvm-okاگر قابلیت مجازی سازی پردازنده در BIOS غیرفعال نباشد ، خروجی چیزی شبیه به این خواهد بود:INFO: /dev/kvm existsKVM acceleration can be usedدر غیر این صورت ، دستور چاپ خواهد شد و یک پیام خرابی و به صورت اختیاری یک پیام کوتاه درباره نحوه فعال کردن . روند فعال سازی فناوری AMD-V یا VT به نوع مادربرد و پردازنده شما بستگی دارد.نصب KVM در اوبونتو 20.04 Ubuntuدستور زیر را برای نصب KVM و بسته های مدیریت مجازی اضافی اجرا کنید:sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-managerپس از نصب بسته ها ، libvirt daemon به صورت خودکار شروع می شود. می توانید با تایپ کردن آن تأیید کنید:sudo systemctl is-active libvirtdactiveبرای ایجاد و مدیریت ماشینهای مجازی ، باید کاربر خود را به گروههای "libvirt" و "kvm" اضافه کنید. برای انجام این کار ، وارد کنید:sudo usermod -aG libvirt $USERsudo usermod -aG kvm $USER$USER متغیر محیطی است که نام کاربر وارد شده در حال حاضر را در خود جای داده است.از سیستم خارج شوید و وارد سیستم شوید تا عضویت گروه رفرش شود.تنظیم شبکهدر طی مراحل نصب ، bridge به نام "virbr0" ایجاد می شود. این دستگاه از NAT برای اتصال دستگاه های میهمانان به خارج استفاده می کند.می توانید از ابزارbrctlبرای لیست bridge های فعلی و واسط هایی که به آنها متصل هستند استفاده کنید:brctl showbridge namebridge id STP enabledinterfacesvirbr0 8000.52540089db3fyes virbr0-nic"virbr0" هیچ اینترفیس فیزیکی اضافه نمیکند. "virbr0-nic" یک شبکه مجازی است که هیچ ترافیکی از طریق آن عبور نمی کند. تنها هدف این دستگاه اجتناب از تغییر آدرس MAC در"virbr0" است.این راه اندازی شبکه برای اکثر کاربران اوبونتو مناسب است اما دارای محدودیت هایی است. اگر می خواهید از خارج از شبکه محلی به ماشین های مجازی دسترسی پیدا کنید ، باید یک bridge جدید ایجاد کرده و آن را پیکربندی کنید تا ماشینهای مهمان بتوانند از طریق رابط فیزیکی میزبان به اینترنت وصل شوند.ایجاد ماشین های مجازیاکنون که KVM روی اوبونتو نصب شده است ، می توانید اولین VM را ایجاد کنید. این کار می تواند از طریق خط فرمان یا با استفاده از برنامهvirt-manager انجام شود.ISO سیستم عامل مورد نظر خود را دانلود کنید و مراحل زیر را برای ایجاد ماشین مجازی خود دنبال کنید:در نوار جستجوی فعالیتها “Virtual Machine Manager” را تایپ کرده و بر روی آیکون کلیک کنید تا برنامه راه اندازی شود.پس از شروع برنامه ، از منوی بالا بر روی “File” -> “New Virtual Machine” کلیک کنید:3. یک پنجره جدید ظاهر خواهد شد. “Local install media” را انتخاب کرده و روی دکمه "Forward" کلیک کنید.4. مسیر ISO خود را تهیه کرده و بر روی دکمه Forward کلیک کنید.5. در صفحه بعدی ، تنظیمات حافظه و CPU VM را انتخاب کنید. روی Forward کلیک کنید.6. سپس گزینه “Create a disk image for the virtual machine” را انتخاب کنید و اندازه فضای دیسک VM را انتخاب کنید. روی Forward کلیک کنید.7. نامی را برای نام ماشین مجازی خود وارد کنید و روی "پایان" کلیک کنید.8. VM شروع به کار خواهد کرد و یک پنجره جدید باز خواهد شد:از اینجا ، می توانید دستورالعمل های روی صفحه را دنبال کنید تا نصب سیستم عامل تکمیل شود.پس از نصب سیستم عامل ، می توانید از طریق برنامه virt-manager با SSH یا با استفاده از رابط Serial Console به دستگاه مجازی دسترسی داشته باشید .نتیجه گیریما به شما نحوه نصب KVM را در سیستم های اوبونتو 20.04 نشان داده ایم. اکنون می توانید ماشینهای مهمان Windows یا Linux خود را ایجاد کنید. برای کسب اطلاعات بیشتر در مورد KVM ، به صفحه اسناد KVM مراجعه کنید.

ادامه مطلب
آموزش نصب TensorFlow در اوبونتو 20.04 Ubuntu

آموزش نصب TensorFlow در اوبونتو 20.04 Ubuntu

آموزش نصب TensorFlow در اوبونتو 20.04 UbuntuTensorFlow یک بستر آزاد و منبع باز برای machine learning است که توسط گوگل ساخته شده است که توسط تعدادی از سازمان ها از جمله توییتر ، پی پال ، اینتل ، لنوو و ایرباس استفاده می شود. در این آموزش نحوه نصب TensorFlow در یک محیط مجازی Python در اوبونتو 20.04 Ubuntu توضیح داده شده است.TensorFlow را می توان در یک سیستم گسترده ، در یک محیط مجازی Python ، به عنوان یک ظرف Docker یا با آناکوندا نصب کرد.یک محیط مجازی به شما امکان می دهد چندین محیط مختلف جدا شده Python را بر روی یک کامپیوتر واحد داشته باشید و یک نسخه خاص از یک ماژول را بر اساس هر پروژه نصب کنید ، بدون اینکه نگرانی از تأثیر آن بر سایر پروژه های شما داشته باشد.نصب TensorFlow در اوبونتو 20.04 Ubuntuاوبونتو 20.04 بصورت پیش فرض از پایتون 3.8 استفاده میکند. با تایپ کردن دستور زیر می توانید تأیید کنید که Python 3 روی سیستم شما نصب شده است:python3 -Vخروجی باید به این شکل باشد:Python 3.8.2روش پیشنهادی برای ایجاد یک محیط مجازی، استفاده از ماژول venv است که در بستهpython3-venv گنجانده شده است.برای نصب بسته python3-venv دستور زیر را اجرا کنید:sudo apt install python3-venv python3-devپس از نصب ماژول ، شما آماده ایجاد یک محیط مجازی برای پروژه TensorFlow هستید.به دایرکتوری مورد نظر بروید و محیط مجازی Python 3 خود را ذخیره کنید. این می تواند دایرکتوری خانه شما یا هر دایرکتوری دیگری باشد که کاربر شما مجوزهای خواندن و نوشتن آنها را دارد.یک دایرکتوری جدید برای پروژه TensorFlow ایجاد کنید و به آن بروید:mkdir my_tensorflowcd my_tensorflowدر داخل دایرکتوری، دستور زیر را برای ایجاد محیط مجازی اجرا کنید:python3 -m venv venvvenvدوم نام محیط مجازی است. می توانید از هر نامی که می خواهید برای محیط مجازی استفاده کنید.دستور فوق یک دایرکتوری به نام venv ایجاد می کند که شامل یک نسخه از باینری پایتون ، مدیر بسته Pip ، کتابخانه استاندارد Python و سایر فایلهای پشتیبانی می باشد.در ادامه ...برای شروع استفاده از محیط مجازی ، با اجرای activateاسکریپت آن را فعال کنید :source venv/bin/activateپس از فعال سازی ، در ابتدای متغیر سیستم $PATH، دایرکتوری محیط مجازی bin اضافه می شود . همچنین ، اعلان پوسته تغییر می کند و نام محیط مجازی را که در حال حاضر در آن قرار دارید نشان می دهد. در این مثال ، یعنی(venv).برای نصب TensorFlow به pipنسخه 19 یا بالاتر نیاز دارد . برای ارتقاء pipبه آخرین نسخه ، دستور زیر را وارد کنید :pip install --upgrade pipاکنون که محیط مجازی فعال شده است ، وقت آن است که بسته TensorFlow را نصب کنید.pip install --upgrade tensorflowاگر یک پردازنده گرافیکی اختصاصی NVIDIA دارید و می خواهید از قدرت پردازش آن استفاده کنید ، به جای tensorflow از بستهtensorflow-gpuاستفاده کنید ، که شامل پشتیبانی از GPU است.در محیط مجازی می توانید از دستور pipبه جای pip3و pythonبه جای آن استفاده کنید python3.شما TensorFlow با موفقیت نصب کرده اید ، و می توانید شروع به استفاده از آن کنید.برای تأیید نصب ، دستور زیر را اجرا کنید ، که نسخه TensorFlow را چاپ می کند:python -c 'import tensorflow as tf; print(tf.__version__)'در زمان نوشتن این مقاله ، آخرین نسخه پایدار TensorFlow 2.2.0 است:2.2.0نسخه TensorFlow شما ممکن است با نسخه نشان داده شده در اینجا متفاوت باشد.اگر تازه با TensorFlow آشنا شده اید، از صفحه شروع کار با TensorFlow بازدید کنید و نحوه ساخت اولین برنامه ML خود را بیاموزید. شما همچنین می توانید TensorFlow Models یا TensorFlow-Examples از مخازن گیتهاب کلون کنید.پس از اتمام کار خود ، محیط را با تایپ کردن deactivate غیرفعال کنید و به پوسته معمولی خود باز خواهید گشت.deactivateنتیجه گیریما به شما نشان داده ایم كه چگونه TensorFlow را در یك محیط مجازی در Ubuntu 20.04 نصب كنید.

ادامه مطلب
آموزش نصب و استفاده از Curl در اوبونتو 20.04 Ubuntu

آموزش نصب و استفاده از Curl در اوبونتو 20.04 Ubuntu

آموزش نصب و استفاده از Curl در اوبونتو 20.04 Ubuntucurlیک ابزار خط فرمان برای انتقال داده ها است. با استفاده از curlیکی از پروتکل های پشتیبانی شده از جمله HTTP ، HTTPS ، SCP ، SFTP و FTP می توانید داده ها را بارگیری یا بارگذاری کنید . در این مقاله آموزش نصب و استفاده از Curl در اوبونتو 20.04 Ubuntu توضیح داده شده است.نصب Curl در اوبونتو 20.04 Ubuntuاگر هنگام بارگیری فایل با curl پیغام خطای curl command not found مواجه شدید ، بدان معنی است که بستهcurlروی دستگاه اوبونتو نصب نشده است.curlدر مخازن پیش فرض اوبونتو 20.04 گنجانده شده است. نصب بسیار ساده است:sudo apt updatesudo apt install curlپس از اتمام نصب ، آن را با تایپ کردن curlتأیید کنید:curlخروجی چیزی شبیه به این خواهد بود:curl: try 'curl --help' or 'curl --manual' for more informationشما با موفقیت curlروی دستگاه اوبونتو نصب کرده اید و می توانید شروع به استفاده از آن کنید.استفاده از curlبه عنوان مثال ، دستور زیر منبع صفحه اصلی gnu.org را در پنجره ترمینال شما چاپ می کند:curl https://gnu.orgبرای دانلود یک فایل با curl، از هر دو گزینه -oیا -O میتوانید استفاده کنید.-oکوچک به شما امکان می دهد نام پرونده ذخیره شده را مشخص کنید:curl -o linux.tar.xz https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.5.tar.xzهنگامی که با حروف-O بزرگ فراخوانی شود ، curlپرونده را با نام اصلی خود ذخیره می کند:curl -O https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.5.tar.xzبا curlشما همچنین می توانید تنها هدر HTTP از URL مشخص را دانلود کنید:curl -I https://www.gnu.org/HTTP/1.1 200 OKDate: Mon, 29 Jun 2020 07:10:35 GMTServer: Apache/2.4.7Content-Location: home.htmlVary: negotiate,accept-language,Accept-EncodingTCN: choiceStrict-Transport-Security: max-age=63072000Access-Control-Allow-Origin: (null)Accept-Ranges: bytesCache-Control: max-age=0Expires: Mon, 29 Jun 2020 07:10:35 GMTContent-Type: text/htmlContent-Language: enمورد دیگر استفاده رایج curlبارگیری فایل ها از سرورهای FTP محافظت شده با رمز عبور است:curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gzنتیجه گیریCurl ابزاری همه کاره است که به شما امکان ارسال و دریافت داده از طریق شبکه را می دهد. نصب Curl روی اوبونتو یک کار بسیار ساده است.برای کسب اطلاعات بیشتر در مورد نحوه استفاده از این ابزار ، به مثالهای فرمان Curl مراجعه کنید .

ادامه مطلب
آموزش باز کردن فایل های Gz

آموزش باز کردن فایل های Gz

آموزش باز کردن فایل های GzGzip یک الگوریتم فشرده سازی محبوب است که در ضمن نگه داشتن حالت اصلی فایل و مالکیت ، اندازه یک پرونده را کاهش می دهد. این الگوریتم اغلب برای فشرده سازی عناصر وب برای بارگذاری سریعتر صفحه استفاده می شود. در این مقاله آموزش باز کردن فایل های Gz توضیح داده شده است.طبق قرارداد ، پرونده ای که با gzip فشرده شده است با .gz یا .z به پایان می رسد .باز کردن (آنزیپ کردن) فایل gzدر لینوکس و macOS می توانید فایل های .gzرا با استفاده از ابزار gzip باز کنید. . نحو به شرح زیر است:gzip -d file.gzدستور فایل فشرده شده را به حالت اولیه خود باز میگرداند و پرونده .gz را حذف می کند .برای نگه داشتن فایل فشرده ، -kگزینه را به فرمان منتقل کنید:gzip -dk file.gzدستور دیگری که می توانید برای بازکردن یک فایل .gzاز آن استفاده کنید دستور gunzip است که در واقع نام مستعار برای تشکیل پرونده است gzip -d.برای باز کردن پرونده .gz با gunzip به صورت زیر است:gunzip file.gzاگر در محیط دسک تاپ هستید و خط فرمان ندارید ، می توانید از File manager خود استفاده کنید. برای باز کردن .gz، بر روی فایلی که می خواهید باز کنید کلیک راست کرده و "Extract" را انتخاب کنید.کاربران ویندوز برای باز کردن فایلها نیاز به نصب نرم افزارهای اضافی مانند 7zip دارند .اکسترکت کردن فایل tar.gzالگوریتم Gzip برای فشرده سازی تنها یک فایل واحد طراحی شده است. پرونده هایی که به .tar.gz ختم می شوند، از بایگانی .tar هستند که با gzip فشرده شده اند.برای استخراج پرونده tar.gz ، از tarدستورات با -xfگزینه های زیر نام بایگانی فشرده شده استفاده کنید:tar -xf archive.tar.gzنتیجه گیریبرای فشرده سازی پرونده .gz، از فرمان gunzip و نام پرونده استفاده کنید.

ادامه مطلب
آموزش تنظیم هاست مجازی Apache در اوبونتو 20.04 Ubuntu

آموزش تنظیم هاست مجازی Apache در اوبونتو 20.04 Ubuntu

آموزش تنظیم هاست مجازی Apache در اوبونتو 20.04 Ubuntuهاست مجازی یک دستورالعمل پیکربندی Apache است که به شما امکان می دهد بیش از یک وب سایت را روی یک سرور اجرا کنید. با هاست های مجازی ، می توانید فایل روت سایت (دایرکتوری حاوی پرونده های وب سایت) را مشخص کنید ، یک سیاست امنیتی جداگانه برای هر سایت ایجاد کنید ، از گواهی های SSL مختلف و موارد دیگر استفاده کنید. در این مقاله نحوه تنظیم هاست مجازی Apache در اوبونتو 20.04 Ubuntu توضیح داده شده است.پیش نیازهااطمینان حاصل کنید که قبل از ادامه راهنما شرایط زیر را رعایت کرده اید:یک یا چند نام دامنه که به IP سرور شما متصل شده است.آپاچی روی سیستم اوبونتو نصب شده است.شما به عنوان root یا کاربر دارای امتیازات sudo وارد شده اید .ایجاد ساختار دایرکتوریداکیومنت root دایرکتوری است که فایلهای وب سایت برای نام دامنه در پاسخ به درخواست ها در آن ذخیره شوند. می توانید داکیومنت روت را در هر مکانی که می خواهید تنظیم کنید ، در این مثال از ساختار فهرست زیر استفاده خواهیم کرد:/var/www/├── domain1.com│   └── public_html├── domain2.com│   └── public_htmlهر دامنه ای که روی سرور میزبان باشد ، باید داکیومنت روت خود را در مسیر /var/www/<domain_name>/public_html تنظیم کرده باشد.با ایجاد دایرکتوری روت برای دامنه شروع کنید:sudo mkdir -p /var/www/domain1.com/public_htmlما همچنین فایل index.html را در دایرکتوری دامنه ایجاد خواهیم کرد که هنگام بازدید از دامنه در مرورگر شما نشان داده می شود:<!DOCTYPE html><html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Welcome to domain1.com</title> </head> <body> <h1>Success! domain1.com home page!</h1> </body></html>از آنجا که دستورات فوق به عنوان کاربر sudo اجرا می شوند ، پرونده ها و دایرکتوری های تازه ایجاد شده متعلق به root هستند. برای جلوگیری از هرگونه مجوز ، مالکیت دایرکتوری روت دامنه و کلیه پرونده های موجود در دایرکتوری را به کاربر apache تغییر دهید ( www-data):sudo chown -R www-data: /var/www/domain1.comایجاد هاست مجازیدر سیستم های اوبونتو ، فایلهای پیکربندی میزبان های مجازی Apache در /etc/apache2/sites-availableقرار دارند. آنها را می توان با ایجاد پیوندهای symbolic به دایرکتوری/etc/apache2/sites-enabled فعال کرد ، که آپاچی هنگام راه اندازی خوانده است.ویرایشگر متن مورد نظر خود را باز کنید و فایل پیکربندی اولیه میزبان مجازی زیر را ایجاد کنید:nano /etc/apache2/sites-available/domain1.com.conf<VirtualHost *:80> ServerName domain1.com ServerAlias www.domain1.com ServerAdmin webmaster@domain1.com DocumentRoot /var/www/domain1.com/public_html <Directory /var/www/domain1.com/public_html> Options -Indexes +FollowSymLinks AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/domain1.com-error.log CustomLog ${APACHE_LOG_DIR}/domain1.com-access.log combined</VirtualHost>ServerName: دامنه ای که باید برای این پیکربندی میزبان مجازی مطابقت داشته باشد. این باید نام دامنه شما باشد.ServerAlias: کلیه حوزه ها یا زیر دامنه های دیگر که باید برای این میزبان مجازی مانند wwwsubdomain مطابقت داشته باشند .DocumentRoot: دایرکتوری که Apache از آن به پرونده های دامنه سرویس می دهد.Options: این بخشنامه کنترل می کند که کدام ویژگی های سرور در یک دایرکتوری خاص موجود است.-Indexes: از لیست فهرست ها جلوگیری می کند.FollowSymLinks: وقتی این گزینه فعال شود ، Apache پیوندهای symbolic را دنبال می کند.AllowOverride: مشخص می کند کدام بخشنامه اعلام شده در پرونده .htaccessمی تواند دستورالعمل های پیکربندی را نادیده بگیرد.ErrorLog، CustomLog: موقعیت مکانی برای پرونده های log را مشخص می کند.می توانید پرونده پیکربندی را مطابق دلخواه خود نامگذاری کنید ، اما بهترین روش استفاده از نام دامنه به عنوان نام فایل پیکربندی میزبان مجازی است.برای فعال کردن پرونده میزبان مجازی جدید ، از اسکریپت کمک کنندهa2ensite استفاده کنید که یک پیوند symbolic از پرونده میزبان مجازی به دایرکتوریsites-enabledایجاد می کند:sudo a2ensite domain1.comگزینه دیگر این است که بطور دستی یک symlink به شکل زیر ایجاد کنید:sudo ln -s /etc/apache2/sites-available/domain1.com.conf /etc/apache2/sites-enabled/پس از اتمام ، پیکربندی را برای هرگونه خطا با دستور زیر تست کنید:sudo apachectl configtestدر صورت عدم خطا ، خروجی زیر را مشاهده خواهید کرد:Syntax OKبرای اعمال تغییرات ، سرویس Apache را مجدداً راه اندازی کنید:sudo systemctl restart apache2در آخر برای تأیید اینکه همه چیز مطابق آنچه انتظار می رود کار میکند، http://domain1.comرا در مرورگر خود باز کنید و محتوای صفحهindex.html را مشاهده خواهید کرد.نتیجه گیریشما آموخته اید که چگونه یک میزبان مجازی مجازی apache ایجاد کنید تا میزبان چندین دامنه بر روی یک سرور Ubuntu باشد.مراحلی را که در بالا بیان شد را برای دامنه ها و هاست ای جدید میتوانید استفاده کنید.

ادامه مطلب
آموزش نصب Apache Maven در اوبونتو 20.04 Ubuntu

آموزش نصب Apache Maven در اوبونتو 20.04 Ubuntu

آموزش نصب Apache Maven در اوبونتو 20.04 UbuntuApache Maven ابزاری برای مدیریت پروژه است که در درجه اول برای پروژه های جاوا استفاده می شود. Maven از یک مدل Object Project (POM) استفاده می کند ، که در اصل یک فایل XML حاوی اطلاعات مربوط به پروژه ، جزئیات پیکربندی ، وابستگی پروژه و موارد دیگر است. در این مقاله آموزش نصب Apache Maven در اوبونتو 20.04 Ubuntu به شما نشان خواهیم داد.مخازن رسمی اوبونتو شامل بسته های Maven است که با مدیر بستهaptقابل نصب است. این ساده ترین روش برای نصب Maven روی اوبونتو است. با این حال ، نسخه موجود در مخازن ممکن است جدید نباشد.برای نصب آخرین نسخه Maven ، دستورالعمل های ارائه شده در قسمت دوم این مقاله را دنبال کنید که نحوه دانلود بایگانی توزیع باینری را از وب سایت رسمی آنها نشان می دهد.پیش نیازهافرض میکنیم که شما به عنوان root یا کاربر دارای امتیازات sudo وارد شده اید .نصب Apache Maven در اوبونتو 20.04 با aptنصب Maven روی اوبونتو با استفاده از aptساده و سر راست است.فهرست بسته را به روز کنید و با وارد کردن دستورات زیر ، Maven را نصب کنید:sudo apt updatesudo apt install mavenبرای تأیید نصب ، اجرا کنید:mvn -versionخروجی باید چیزی شبیه به این باشد:Apache Maven 3.6.3Maven home: /usr/share/mavenJava version: 11.0.7, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64Default locale: en_US, platform encoding: UTF-8OS name: "linux", version: "5.4.0-26-generic", arch: "amd64", family: "unix"خودشه. اکنون Maven روی سیستم شما نصب شده است و می توانید شروع به استفاده از آن کنید.نصب آخرین نسخه از Apache Mavenدر این بخش ، ما دستورالعمل های گام به گام در مورد چگونگی بارگیری و نصب آخرین نسخه Apache Maven را در اوبونتو 20.04 ارائه خواهیم کرد.1. OpenJDK را نصب کنیدبرای Maven 3.3+ باید JDK 1.7 یا بالاتر نصب شود.OpenJDK 11 را با تایپ کردن نصب کنید:sudo apt updatesudo apt install default-jdkبا اجرای دستور زیر، نصب را تأیید کنید:java -versionخروجی باید چیزی شبیه به این باشد:openjdk version "11.0.7" 2020-04-14OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)2. دانلود Apache Mavenدر زمان نوشتن این مقاله ، آخرین نسخه Apache Maven است 3.6.3. قبل از ادامه مرحله بعدی ، از صفحه دانلود Maven دیدن کنید.Apache Maven را در /tmpدایرکتوری دانلود کنید :wget https://www-us.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz -P /tmpپس از اتمام بارگیری ، فایل را در /opt قرار دهید:sudo tar xf /tmp/apache-maven-*.tar.gz -C /optبرای کنترل بیشتر بر روی نسخه ها و به روز رسانی های Maven ، یک symbolic link تولید خواهیم کرد که به فهرست نصب Maven اشاره خواهد کرد:sudo ln -s /opt/apache-maven-3.6.3 /opt/maven3. تنظیم متغیرهای محیطدر مرحله بعد ، باید متغیرهای محیط را تنظیم کنیم. برای انجام این کار ، ویرایشگر متن خود را باز کرده و یک پرونده جدید به نام mavenenv.shدر /etc/profile.d/ایجاد کنید.sudo nano /etc/profile.d/maven.shکد زیر را جایگذاری کنیدexport JAVA_HOME=/usr/lib/jvm/default-javaexport M2_HOME=/opt/mavenexport MAVEN_HOME=/opt/mavenexport PATH=${M2_HOME}/bin:${PATH}ذخیره کنید و فایل را ببندید. این اسکریپت در هنگام راه اندازی پوسته تهیه خواهد شد.اسکریپت را با chmodاجرایی کنید:sudo chmod +x /etc/profile.d/maven.shدر آخر ، متغیرهای محیط را با استفاده از دستورsourceبارگیری کنید :source /etc/profile.d/maven.sh4- تأیید نصببرای تأیید نصب Maven ، از دستور mvn -version استفاده کنید که نسخه Maven را چاپ می کند:mvn -versionشما باید چیزی شبیه به موارد زیر را ببینید:Maven home: /opt/mavenJava version: 11.0.7, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64Default locale: en_US, platform encoding: UTF-8OS name: "linux", version: "5.4.0-26-generic", arch: "amd64", family: "unix"خودشه. آخرین نسخه Maven اکنون روی سیستم اوبونتو نصب شده است.نتیجه گیریما به شما نشان داده ایم كه چگونه Apache Maven را در Ubuntu 20.04 نصب كنید. اکنون باید به صفحه رسمی Documentation Apache Maven مراجعه کرده و نحوه شروع کار با Maven را یاد بگیرید.

ادامه مطلب
آموزش تغییر Hostname در اوبونتو 20.04 Ubuntu

آموزش تغییر Hostname در اوبونتو 20.04 Ubuntu

آموزش تغییر Hostname در اوبونتو 20.04 UbuntuHostname در حین نصب سیستم عامل تنظیم می شود یا هنگام ایجاد سیستم به صورت پویا به ماشین مجازی اختصاص می یابد. در این راهنما آموزش تغییر Hostname در اوبونتو 20.04 Ubuntu بدون نیاز به راه اندازی مجدد سیستم توضیح داده شده است.درک هاست نیم هاهاست نیم یک برچسب است که دستگاهی را در یک شبکه مشخص می کند. شما نباید در یک شبکه، دو یا چند دستگاه با نام میزبان یکسان داشته باشید.در اوبونتو ، می توانید نام میزبان سیستم و تنظیمات مرتبط را با استفاده از دستور hostnamectlویرایش کنید. این ابزار سه کلاس مختلف از نام میزبان را تشخیص می دهد:static- نام میزبان سنتی. در /etc/hostnameپرونده ذخیره می شود و می تواند توسط کاربر تنظیم شود.pretty- نام میزبان UTF8 توصیفی رایگان که برای ارائه به کاربر استفاده می شود. به عنوان مثال، one3erver's laptop.transient- یک نام میزبان پویا که توسط هسته حفظ می شود. سرورهای DHCP یا mDNS می توانند نام میزبان گذرا را در زمان اجرا تغییر دهند. به طور پیش فرض ، آن شبیه staticاست.توصیه می شود از یک نام دامنه کاملاً واجد شرایط (FQDN) مانند host.example.comبرای هر دو staticو transient استفاده کنید.فقط root یا کاربران دارای امتیازات sudo می توانند نام میزبان سیستم را تغییر دهند.نمایش Hostname فعلیبرای مشاهده نام میزبان فعلی ، دستورhostnamectlرا فراخوانی کنید :hostnamectlدر این مثال ، نام میزبان فعلی ubuntu2004.localdomain تنظیم شده است.تغییر Hostname سیستمتغییر نام میزبان سیستم یک فرایند ساده است. روش به شرح زیر است:sudo hostnamectl set-hostname host.example.comsudo hostnamectl set-hostname "Your Pretty HostName" --prettysudo hostnamectl set-hostname host.example.com --staticsudo hostnamectl set-hostname host.example.com --transientبه عنوان مثال ، برای تغییر نام میزبان استاتیک سیستم به neptune.one3erver.com، از دستور زیر استفاده می کنید:sudo hostnamectl set-hostname neptune.one3erver.comبه صورت اختیاری می توانید نام میزبان pretty را نیز تنظیم کنید:sudo hostnamectl set-hostname "one3erver's laptop" --prettyhostnamectlخروجی تولید نمی کند. در صورت درست بودن، 0 بازگردانده می شود ، در غیر این صورت کد خرابی، غیر از صفر نشان داده میشود.نام میزبان استاتیک در /etc/hostnameذخیره می شود، و نام میزبان pretty در /etc/machine-infoذخیره می شود .شما نباید از دو نام مشابه در سیستم های مختلف در یک شبکه استفاده کنید.در بیشتر سیستم ها، نام میزبان در /etc/hostsبه 127.0.0.1 متصل شده است. پرونده را باز کنید و نام میزبان قدیمی را به عنوان جدید تغییر دهید.nano /etc/hosts127.0.0.1 localhost127.0.0.1 neptune.one3erver.com# The following lines are desirable for IPv6 capable hosts::1 localhost ip6-localhost ip6-loopbackff02::1 ip6-allnodesff02::2 ip6-allroutersاگر اوبونتو را به صورت ابری اجرا می کنید و بستهcloud-init نصب شده است ، باید فایل /etc/cloud/cloud.cfg را ویرایش کنید. این بسته معمولاً به طور پیش فرض در ایمیج های ارائه شده توسط ارائه دهندگان cloud نصب می شود و از آن برای رسیدگی به مراحل اولیه موارد cloud استفاده می شود.اگر پرونده در سیستم شما وجود دارد ، آن را باز کنید:sudo nano /etc/cloud/cloud.cfgpreserve_hostnameرا جستجو کنید، و مقدار را از falseبه true تغییر دهید:nano /etc/cloud/cloud.cfg# This will cause the set+update hostname module to not operate (if true)preserve_hostname: trueپرونده را ذخیره کرده و ویرایشگر خود را ببندید.تغییر را تأیید کنیدبرای تأیید اینکه نام میزبان کاملاً تغییر کرده است ، دستور hostnamectl را وارد کنید :hostnamectlنام میزبان جدید شما در ترمینال چاپ می شود: Static hostname: neptune.one3erver.com Pretty hostname: one3erver's desktop Icon name: computer-vm Chassis: vm Machine ID: a04e3543f3da460294926b7c41e87a0d Boot ID: aa31b274703440dfb622ef2bd84c52cb Virtualization: oracle Operating System: Ubuntu 20.04 LTS Kernel: Linux 5.4.0-26-generic Architecture: x86-64نتیجه گیریما به شما نشان داده ایم که چگونه می توانید به راحتی هاست نیم را در اوبونتو 20.04 بدون نصب مجدد دستگاه تغییر دهید.دلایل مختلفی وجود دارد که ممکن است شما نیاز به تغییر Hostname داشته باشید. رایج ترین زمانی است که Hostname به طور خودکار بر روی دستگاه تنظیم می شود.

ادامه مطلب
آموزش نصب PHP Composer در اوبونتو 20.04 Ubuntu

آموزش نصب PHP Composer در اوبونتو 20.04 Ubuntu

آموزش نصب PHP Composer در اوبونتو 20.04 Ubuntuکامپوزر یک مدیر dependency برای PHP است (همانطور که npm برای Node.js یا pip برای Python است). Composer تمام بسته های PHP مورد نیاز خود را که پروژه شما به آن بستگی دارد جمع می کند و آنها را برای شما مدیریت می کند. در همه چارچوب ها و سیستم عامل های مدرن PHP مانند Laravel ، Symfony ، Drupal و Magento 2 استفاده می شود. در این مقاله آموزش نصب PHP Composer در اوبونتو 20.04 Ubuntu را عنوان کرده ایم.نصب PHP Composer در اوبونتو 20.04 Ubuntuقبل از نصب Composer ، اطمینان حاصل کنید که تمام پیش نیازهای لازم را روی سیستم خود نصب کرده اید:sudo apt updatesudo apt install wget php-cli php-zip unzipComposer نصب کننده ای را که به زبان PHP نوشته شده ارائه می دهد که ما برای نصب Composer از آن استفاده خواهیم کرد. از wgetبرای دانلود استفاده میکنیم:wget -O composer-setup.php https://getcomposer.org/installerدستور بالا فایل را به عنوان composer-setup.phpدر دایرکتوری فعلی ذخیره میکند.Composer یک برنامه CLI با پرونده واحد است و می تواند به صورت جهانی یا به عنوان بخشی از پروژه نصب شود. نصب جهانی نیاز به امتیازات سودو دارد .برای نصب Composer در سطح جهان به عنوان یک دستورالعمل سیستم که در دسترس همه کاربران خواهد بود ، به سادگی پرونده را در دایرکتوری موجود در سیستم PATHقرار دهید . دستور زیر را برای نصب Composer در /usr/local/binفهرست استفاده کنید:sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composerخروجی:All settings correct for using ComposerDownloading...Composer (version 1.10.7) successfully installed to: /usr/local/bin/composerUse it: php /usr/local/bin/composerاکنون می توانید با اجرای composerدر ترمینال خود از Composer استفاده کنیدبرای نصب Composer به صورت محلی وارد کنید:sudo php composer-setup.php --install-dir=/path/to/projectبا این کار پرونده ای به نام composer.pharدر دایرکتوری root پروژه شما بارگیری می شود . برای استفاده از Composer به فهرست پروژه بروید و php composer.phar اجرا کنید.هنگامی که نسخه جدید Composer موجود شد، می توانید نصب خود را با استفاده از دستور زیر به روز کنید:sudo composer self-updateشروع با Composerاکنون که Composer روی سیستم اوبونتو شما نصب شده است ، بیایید ببینیم چگونه می توان یک پروژه PHP را با Composer ایجاد کرد.اولین قدم ایجاد دایرکتوری root پروژه و انتقال به آن است :mkdir ~/my-first-composer-projectcd ~/my-first-composer-projectدر این مثال ، از یک بسته PHP به نام carbon برای ایجاد یک برنامه نمونه ای استفاده می کنیم که زمان فعلی را چاپ می کند.دستورالعمل زیر را برای شروع یک پروژه جدید Composer و نصب بسته کربن اجرا کنید:composer require nesbot/carbonخروجی:Using version ^2.35 for nesbot/carbon./composer.json has been createdLoading composer repositories with package informationUpdating dependencies (including require-dev)Package operations: 5 installs, 0 updates, 0 removals - Installing symfony/translation-contracts (v2.1.2): Downloading (100%) - Installing symfony/polyfill-php80 (v1.17.0): Downloading (100%) - Installing symfony/polyfill-mbstring (v1.17.0): Downloading (100%) - Installing symfony/translation (v5.1.2): Downloading (100%) - Installing nesbot/carbon (2.35.0): Downloading (100%) Writing lock fileGenerating autoload files5 packages you are using are looking for funding.Use the `composer fund` command to find out more!همانطور که در خروجی نشان داده شده است ، Composer فایل composer.json را ایجاد کرده و کربن و تمام وابستگی های آن را بارگیری و نصب می کند.اگر شما فهرست دایرکتوری پروژه خود را لیست کنید، خواهید دید که آن را حاوی دو فایل composer.jsonو composer.lock، و یک دایرکتوریvendor است.ls -l-rw-rw-r--. 1 vagrant vagrant 60 Mar 27 18:05 composer.json-rw-rw-r--. 1 vagrant vagrant 11135 Mar 27 18:06 composer.lockdrwxrwxr-x. 6 vagrant vagrant 82 Mar 27 18:06 vendorvendor دایرکتوری است که در آن وابستگی پروژه ذخیره می شود.composer.lock پرونده ای است که اطلاعات مربوط به کلیه بسته های نصب شده و نسخه های آنها را نگه می دارد و پروژه را به نسخه های خاص قفل می کند.composer.json پرونده ای است که پروژه PHP شما ، از جمله وابستگی های PHP و ابرداده دیگر را توصیف می کند.Composer دارای قابلیت autoload است که به ما امکان استفاده از کلاس های PHP را بدون نیاز به فایل requireیا includeمی دهد.یک پرونده با نام testing.php ایجاد کرده و کد زیر را اضافه کنید:<?phprequire __DIR__ . '/vendor/autoload.php';use Carbon\Carbon;printf("Now: %s", Carbon::now());اسکریپت را با تایپ کردن دستور زیر اجرا کنید:php testing.phpخروجی باید چیزی شبیه به این باشد:Now: 2020-06-17 20:41:04بعداً ، اگر نیاز به به روزرسانی بسته های پروژه دارید ، وارد کنید:composer updateدستور بالا نسخه های جدیدتر بسته های نصب شده را بررسی می کند و اگر نسخه جدیدتری پیدا شود و محدودیت نسخه با نسخه مشخص شده در آن مطابقت داشته باشد بسته composer.json، Composer را به روز می کند.نتیجه گیریما به شما نشان داده ایم كه چگونه Composer را در Ubuntu 20.04 نصب كنید و نحوه استفاده از آن برای ایجاد یك پروژه PHP را نشان دادیم.برای کسب اطلاعات بیشتر در مورد Composer ، به صفحه اسناد رسمی مراجعه کنید.

ادامه مطلب
آموزش نصب Mono در اوبونتو 20.04 Ubuntu

آموزش نصب Mono در اوبونتو 20.04 Ubuntu

آموزش نصب Mono در اوبونتو 20.04 UbuntuMono یک بستر برای توسعه و اجرای برنامه های متقابل مبتنی بر استانداردهای ECMA / ISO است. مونو یک پیاده سازی منبع باز از چارچوب .NET مایکروسافت است. در این آموزش نصب Mono در اوبونتو 20.04 Ubuntu را توضیح خواهیم داد.پیش نیازها شما باید به عنوان root یا کاربر دارای امتیازات sudo وارد شده باشید .نصب Mono در اوبونتومونو در مخازن استاندارد اوبونتو 20.04 موجود نیست. بسته های Mono را از مخزن های رسمی Mono نصب خواهیم کرد:وابستگی های لازم برای اضافه کردن یک مخزن جدید از طریق HTTPS را نصب کنید:sudo apt updatesudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-commonکلید GPG مخزن را وارد کنید:sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EFخروجی باید چیزی شبیه به این باشد:gpg: key A6A19B38D3D831EF: public key "Xamarin Public Jenkins (auto-signing) <releng@xamarin.com>" importedgpg: Total number processed: 1gpg: imported: 1مخزن Mono را به لیست منابع سیستم خود اضافه کنید:sudo apt-add-repository 'deb https://download.mono-project.com/repo/ubuntu stable-bionic main'نصب مونو:sudo apt install mono-complete mono-complete بسته ای است که زمان اجرای مونو ، ابزارهای توسعه و کلیه کتابخانه ها را نصب می کند.نصب ممکن است چند دقیقه طول بکشد. پس از اتمام ، با تایپ دستور زیر که نسخه Mono را چاپ می کند ، آن را تأیید کنید:mono --versionدر زمان نوشتن این مقاله ، آخرین نسخه پایدار Mono برابر 6.8.0.123 است.Mono JIT compiler version 6.8.0.123 (tarball Tue May 12 15:11:57 UTC 2020)Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com TLS: __thread SIGSEGV: altstack Notifications: epoll Architecture: amd64 Disabled: none Misc: softdebug Interpreter: yes LLVM: yes(610) Suspend: hybrid GC: sgen (concurrent by default)به این ترتیب ، مونو روی دستگاه اوبونتو نصب شده است و می توانید شروع به استفاده از آن کنید.شروع کار با Monoبرای اطمینان از تنظیم بودن همه چیز ، ما می خواهیم برنامه hello world را بسازیم که پیام کلاسیک "hello world" را چاپ کند.ویرایشگر متن خود را باز کرده و پرونده ای با نام hello.cs ایجاد کنید:nano hello.csusing System;public class HelloWorld{ public static void Main(string[] args) { Console.WriteLine ("Hello World!"); }}برای ساخت برنامه از cscکامپایلر استفاده کنید :csc hello.csدستور فوق یک عامل اجرایی به نامhello.exe ایجاد می کند .فایل را اجرا کنید:mono hello.exeخروجی باید چیزی شبیه به این باشد:Hello, Worldبرای اجرای برنامه فقط با تایپ نام آن ، یک پرچم قابل اجرا را تنظیم کنید :chmod +x hello.exeاکنون می توانید پروندهhello.exe را با تایپ کردن اجرا کنید:./hello.exeنتیجه گیرینصب مونو در اوبونتو 20.04 یک فرایند نسبتاً ساده است و تنها چند دقیقه طول خواهد کشید.

ادامه مطلب
آموزش نصب PHP در اوبونتو 20.04 Ubuntu

آموزش نصب PHP در اوبونتو 20.04 Ubuntu

آموزش نصب PHP در اوبونتو 20.04 UbuntuPHP یکی از پرکاربردترین زبانهای برنامه نویسی سمت سرور است. بسیاری از CMS ها و فریم ورک های معروف مانند WordPress ، Magento و Laravel با PHP نوشته شده اند. در این آموزش نصب PHP در اوبونتو 20.04 Ubuntu و ادغام آن با Nginx و Apache بیان شده است.در زمان نوشتن ، مخازن پیش فرض اوبونتو 20.04 شامل نسخه PHP 7.4 می باشد. ما همچنین نحوه نصب نسخه های قبلی PHP را به شما نشان خواهیم داد. قبل از انتخاب کدام نسخه از PHP برای نصب ، مطمئن شوید که برنامه های شما از آن پشتیبانی می کنند.نصب PHP 7.4 با Apacheاگر از Apache به عنوان سرور وب استفاده می کنید ، دستورات زیر را برای نصب ماژول PHP و Apache PHP اجرا کنید:sudo apt updatesudo apt install php libapache2-mod-phpپس از نصب بسته ها ، Apache را برای بارگیری ماژول PHP مجدداً راه اندازی کنید:sudo systemctl restart apache2نصب PHP 7.4 با Nginxبر خلاف آپاچی ، Nginx برای پردازش پرونده های PHP پشتیبانی داخلی ندارد. ما از PHP-FPM ("fastCGI process manager") برای رسیدگی به پرونده های PHP استفاده خواهیم کرد.دستورات زیر را برای نصب بسته های PHP و PHP FPM اجرا کنید:sudo apt updatesudo apt install php-fpmپس از اتمام نصب ، سرویس FPM بطور خودکار شروع می شود. برای بررسی وضعیت سرویس ، اجرا کنیدsystemctl status php7.4-fpm● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-06-09 19:07:05 UTC; 37s agoاکنون می توانید بلوک سرور Nginx را ویرایش کرده و خطوط زیر را اضافه کنید تا Nginx بتواند فایلهای PHP را پردازش کند:server { # . . . other code location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:q; }}فراموش نکنید که سرویس Nginx را مجدداً راه اندازی کنید تا پیکربندی جدید به مرحله اجرا درآید :sudo systemctl restart nginxنصب افزونه های PHPپسوند PHP کتابخانه هایی است که عملکرد اصلی PHP را گسترش می دهد. برنامه های افزودنی به صورت بسته ها در دسترس هستند و به راحتی با aptنصب میشوند:sudo apt install php-[extname]به عنوان مثال ، برای نصب پسوندهای MySQL و GD ، دستور زیر را اجرا می کنید:sudo apt install php-mysql php-gdپس از نصب یک پسوند جدید PHP ، بسته به تنظیمات خود ، راه اندازی مجدد سرویس Apache یا PHP FPM را فراموش نکنید.تست پردازش PHPبرای آزمایش اینکه آیا وب سرور به طور صحیح برای پردازش PHP پیکربندی شده است ، یک پرونده جدید به نام info.phpدرون دایرکتوری/var/www/html با کد زیر ایجاد کنید:nano /var/www/html/info.php<?phpphpinfo();فایل را ذخیره کنید ، مرورگر خود را باز کنید و از http://your_server_ip/info.phpبازدید کنید.اطلاعات مربوط به پیکربندی PHP خود را مطابق تصویر زیر مشاهده می کنید:نصب نسخه های قبلی PHPOndřej Surý ، یک توسعه دهنده Debian ، مخزنی را نگهداری می کند که شامل چندین نسخه PHP است. برای فعال کردن مخزن ، اجرا کنید:sudo apt install software-properties-commonsudo add-apt-repository ppa:ondrej/phpاکنون می توانید با افزودن شماره نسخه به نام بسته ، نسخه ant PHP مورد نیاز خود را نصب کنید:sudo apt install php[version]به عنوان مثال ، برای نصب PHP 7.1 و چند ماژول مشترک PHP ، شما اجرا می کنید:sudo apt install php7.1 php7.1-common php7.1-opcache php7.1-mcrypt php7.1-cli php7.1-gd php7.1-curl php7.1-mysqlنتیجه گیریما در این مقاله آموزش نصب PHP در اوبونتو 20.04 Ubuntu به شما آموختیم. تمام کاری که شما باید انجام دهید این است که بستهapt را با آن نصب کنید .

ادامه مطلب
آموزش چک کردن نسخه لینوکس

آموزش چک کردن نسخه لینوکس

آموزش چک کردن نسخه لینوکستوزیع لینوکس یک سیستم عامل است که از هسته لینوکس ، ابزارها و کتابخانه های GNU و مجموعه نرم افزار ساخته شده است. معمولاً توزیع های لینوکس شامل محیطهای دسکتاپ، سیستم مدیریت بسته و مجموعه ای از برنامه های از پیش نصب شده است.برخی از محبوب ترین توزیع های لینوکس عبارتند از دبیان ، Red Hat ، اوبونتو ، Arch Linux ، Fedora ، CentOS ، Kali Linux ، OpenSUSE ، Linux Mint و موارد دیگر.هنگامی که برای اولین بار به سیستم لینوکس وارد می شوید ، قبل از انجام هر کار ، همیشه ایده خوبی است که بررسی کنید چه نسخه ای از لینوکس روی دستگاه اجرا می شود. به عنوان مثال ، تعیین توزیع لینوکس می تواند به شما کمک کند متوجه شوید که از چه مدیر بسته برای نصب بسته های جدید باید استفاده کنید.در این آموزش ، ما به شما نشان خواهیم داد که چگونه با استفاده از خط فرمان ، توزیع و نسخه لینوکس را روی سیستم خود چک کنید.چک کردن نسخه لینوکسچندین دستور مختلف وجود دارد که به شما کمک می کند تا توزیع Linux و نسخه در حال اجرا را در سیستم پیدا کنید.با استفاده از دستورlsb_releaseابزارlsb_releaseاطلاعات LSB (Linux Standard Base) را درباره توزیع لینوکس نمایش می دهد. این دستور باید روی کلیه توزیع های لینوکس که بسته lsb-release را نصب کرده اند کار کند:lsb_release -aNo LSB modules are available.Distributor ID:DebianDescription:Debian GNU/Linux 9.5 (stretch)Release:9.5Codename:stretchتوزیع و نسخه لینوکس در خط توضیحات نشان داده شده است. همانطور که از خروجی بالا می بینید ، من Debian GNU / Linux 9.5 (کشش) را روی سیستم خود نصب کرده ام.به جای چاپ تمام اطلاعات فوق می توانید خط توضیحات را نشان دهید.lsb_release -dخروجی باید شبیه به زیر باشد:Description:Debian GNU/Linux 9.5 (stretch)اگر فرمان “command not found: lsb_release” را مشاهده کردید ، می توانید با استفاده از برخی از روشهای زیر ، نسخه لینوکس را شناسایی کنید.استفاده از پرونده /etc/os-releaseپرونده/etc/os-release شامل اطلاعات شناسایی سیستم عامل ، از جمله اطلاعات مربوط به توزیع است. این پرونده بخشی از بسته سیستمی است و تمام سیستمهای در حال اجرا سیستم لینوکس باید این فایل را داشته باشند.برای مشاهده محتویات فایلos-release، میتوانید از هر دو catو یا lessاستفاده کنید:cat /etc/os-releaseخروجی باید چیزی شبیه به زیر باشد:PRETTY_NAME="Debian GNU/Linux 9 (stretch)"NAME="Debian GNU/Linux"VERSION_ID="9"VERSION="9 (stretch)"ID=debianHOME_URL="https://www.debian.org/"SUPPORT_URL="https://www.debian.org/support"BUG_REPORT_URL="https://bugs.debian.org/"استفاده از پرونده/etc/issueپرونده/etc/issue حاوی یک متن شناسایی سیستم است که قبل از اعلان ورود به سیستم چاپ می شود. معمولاً این پرونده شامل اطلاعاتی درباره نسخه لینوکس است:cat /etc/issueخروجی چیزی شبیه به این خواهد بود:Debian GNU/Linux 9 \n \lبا استفاده از دستورhostnamectlhostnamectlابزار بخشی از systemd است و برای تغییر نام میزبان سیستم استفاده می شود. این دستور همچنین نسخه توزیع و کرنل لینوکس را نشان می دهد .hostnamectl Static hostname: debian9.localdomain Icon name: computer-vm Chassis: vm Machine ID: a92099e30f704d559adb18ebc12ddac4 Boot ID: 7607cbe605d44f638d6542d4c7b3878e Virtualization: qemu Operating System: Debian GNU/Linux 9 (stretch) Kernel: Linux 4.9.0-8-amd64 Architecture: x86-64استفاده از پرونده/etc/*releaseاگر هیچ یک از دستورهای فوق برای شما کار نکند ، به احتمال زیاد شما توزیع لینوکس بسیار قدیمی و منسوخ را اجرا می کنید. در این حالت ، شما می توانید یکی از دستورات زیر استفاده کنید که باید محتوای نسخه توزیع یا پرونده نسخه را چاپ کند:cat /etc/*releasecat /etc/*versionبا استفاده از دستورunameفرمانuname چندین اطلاعات سیستم از جمله معماری هسته لینوکس ، نام ، نسخه را نشان می دهد.برای اطلاع از اینکه کدام نسخه هسته لینوکس روی سیستم شما اجرا شده است ، دستور زیر را تایپ کنید:uname -srmLinux 4.9.0-8-amd64 x86_64نتیجه فوق به ما می گوید هسته هسته لینوکس 64 بیتی است و نسخه آن "4.9.0-8-amd64" است.نتیجه گیریدر این راهنما ، ما به شما نشان داده ایم كه چگونه می توانید نسخه لینوكس را كه با استفاده از خط فرمان روی سیستم شما اجرا می شود ، پیدا کنید.اگر توزیع لینوکس با محیط دسک تاپ دارید ، می توانید توزیع و نسخه آن را نیز از درون رابط گرافیکی بررسی کنید.

ادامه مطلب
آموزش نصب Redis در اوبونتو 20.04 Ubuntu

آموزش نصب Redis در اوبونتو 20.04 Ubuntu

آموزش نصب Redis در اوبونتو 20.04 UbuntuRedis یکی از انواع پایگاه داده NoSQL است که در زیر مجموعه Key/Value قرار میگیرد. البته در وب سایت Redis و در برخی از منابع، Redis به عنوان یک سرور ساختار داده ای (data structure server) نامیده می شود. به این ترتیب که تمامی اطلاعات در این پایگاه داده به صورت کلید و مقدار ذخیره می شوند و از ساختارهای مختلف داده مانند Strings ، هش ، لیست ، مجموعه و موارد دیگر پشتیبانی می کند. در این آموزش نصب و کانفیگ Redis در اوبونتو 20.04 Ubuntu توضیح داده شده است.نصب Redis در اوبونتو 20.04 Ubuntuنسخه Redis 5.0.x در مخازن پیش فرض اوبونتو 20.04 گنجانده شده است. برای نصب آن ، دستورات زیر را به عنوان root یا کاربر دارای امتیازات sudo اجرا کنید :sudo apt updatesudo apt install redis-serverپس از اتمام نصب ، سرویس Redis بطور خودکار شروع می شود. برای بررسی وضعیت سرویس ، دستور زیر را وارد کنید:sudo systemctl status redis-serverشما باید چیزی شبیه به این را ببینید:● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-06-06 20:03:08 UTC; 10s ago...شما Redis روی سرور Ubuntu 20.04 خود نصب و راه اندازی کرده اید.کانفیگ دسترسی ریموت Redisبه طور پیش فرض ، سرور Redis اتصالات ریموت را نمی پذیرد. شما می توانید فقط از 127.0.0.1(localhost) به دستگاه Redis متصل شوید.اگر از یک راه اندازی سرور منفرد استفاده می کنید ، جایی که مشتری متصل به پایگاه داده نیز در همان میزبان در حال اجرا است ، نباید دسترسی از راه دور را فعال کنید.برای پیکربندی Redis برای پذیرش اتصالات از راه دور ، پرونده پیکربندی Redis را با ویرایشگر متن خود باز کنید:sudo nano /etc/redis/redis.confخطی را که با bind 127.0.0.1 ::1 شروع می شود پیدا کنید و به صورت زیر تغییر دهید:# bind 0.0.0.0 ::1پرونده را ذخیره کنید و سرویس Redis را برای ایجاد تغییرات ری استارت کنید:sudo systemctl restart redis-serverبرای تأیید این که redis در تمام رابط های موجود ، از پورت 6379استفاده می کند از دستور زیر استفاده کنید :ss -an | grep 6379شما باید چیزی مانند زیر را ببینید. 0.0.0.0یعنی تمام آدرس های IPv4 موجود در دستگاه.tcp LISTEN 0 511 0.0.0.0:6379 0.0.0.0:*tcp LISTEN 0 511 [::]:6379 [::]:* در مرحله بعدی ، برای فعال کردن ترافیک از درگاه TCP 6379 ، باید فایروال خود را پیکربندی کنید .به طور معمول می خواهید فقط از یک آدرس خاص IP یا رنج IP به سرور Redis دسترسی داشته باشید. به عنوان مثال ، برای اجازه اتصال فقط از 192.168.121.0/24 ، دستور زیر را اجرا می کنید:sudo ufw allow proto tcp from 192.168.121.0/24 to any port 6379اطمینان حاصل کنید که فایروال شما پیکربندی شده است تا اتصالات را فقط از محدوده IP معتبر بپذیرد.در این مرحله ، شما باید از مکانهای راه دور به Redis درگاه TCP 6379 وصل شوید.برای تأیید صحت تنظیم همه چیز ، می توانید با استفاده از ابزار redis-cl، سرور Redis را از دستگاه راه دور خود پینگ کنید :redis-cli -h <REDIS_IP_ADDRESS> pingدستور باید پاسخی از این قبیل پاسخ دهد PONG:PONGنتیجه گیریما به شما نشان داده ایم که چگونه Redis را در Ubuntu 20.04 نصب کنید. برای کسب اطلاعات بیشتر در مورد نحوه مدیریت نصب Redis خود ، به صفحه اسناد Redis مراجعه کنید.

ادامه مطلب
آموزش نصب Vagrant در اوبونتو 20.04 Ubuntu

آموزش نصب Vagrant در اوبونتو 20.04 Ubuntu

آموزش نصب Vagrant در اوبونتو 20.04 UbuntuVagrant یک ابزار خط فرمان برای ساخت و مدیریت ماشین های مجازی است. به طور پیش فرض ، Vagrant می تواند VirtualBox ، Hyper-V و Docker را تأمین کند. سایر ارائه دهندگان مانند Libvirt (KVM) ، VMware و AWS می توانند از طریق سیستم افزونه Vagrant نصب شوند. در این مقاله آموزش نصب Vagrant در اوبونتو 20.04 Ubuntu توضیح داده شده است.نصب Vagrant در اوبونتو 20.04 Ubuntuما ماشینهای مجازی را با VirtualBox میسازیم.اگر VirtualBox روی سیستم شما نصب نشده است می توانید آن را با اجرای آن نصب کنید:sudo apt updatesudo apt install virtualboxبسته Vagrant که در مخازن اوبونتو موجود است به طور مرتب به روز نمی شود. ما آخرین نسخه Vagrant را از سایت رسمی Vagrant بارگیری و نصب خواهیم کرد.در زمان نوشتن این مقاله ، آخرین نسخه پایدار Vagrant نسخه 2.2.9 است. با بازدید از صفحه دانلود ببینید که آیا یک نسخه جدید از Vagrant در دسترس وجود دارد.دانلود بسته Vagrant را با wget:curl -O https://releases.hashicorp.com/vagrant/2.2.9/vagrant_2.2.9_x86_64.debپس از بارگیری پرونده ، آن را با دستور زیر نصب کنید:sudo apt install ./vagrant_2.2.9_x86_64.debبرای تأیید موفقیت آمیز بودن نصب ، دستور زیر را اجرا کنید که نسخه Vagrant را چاپ می کند:vagrant --versionخروجی باید چیزی شبیه به این باشد:Vagrant 2.2.9شروع کار با Vagrantایجاد یک پروژه Vagrant ساده است به عنوان راه اندازی دایرکتوری ریشه پروژه و تعریف Vagrantfile.دستورالعمل های زیر را برای ایجاد دایرکتوری و cd درون آن اجرا کنید:mkdir ~/my-vagrant-projectcd ~/my-vagrant-projectبعد ، با استفاده از دستورvagrant init و سپس پکیج مورد نظر خود ، یک Vagrantfile جدید را بسازید.در این مثال از باکس centos/8استفاده خواهیم کرد :vagrant init centos/8A `Vagrantfile` has been placed in this directory. You are nowready to `vagrant up` your first virtual environment! Please readthe comments in the Vagrantfile as well as documentation on`vagrantup.com` for more information on using Vagrant.Vagrantfile یک پرونده Ruby است که نحوه پیکربندی و تهیه دستگاه مجازی را شرح می دهد. می توانید Vagrantfile را باز کنید ، نظرات را بخوانید و مطابق نیاز خود تنظیم کنید.اجرای دستور vagrant upبرای ایجاد و پیکربندی ماشین مجازی در Vagrantfile مشخص شده:vagrant up==> default: Configuring and enabling network interfaces... default: SSH address: 192.168.121.74:22 default: SSH username: vagrant default: SSH auth method: private key==> default: Rsyncing folder: /home/linuxize/Vagrant/my-vagrant-project/ => /vagrantVagrant دایرکتوری پروژه را در /vagrant دستگاه مجازی مونت می کند. این به شما امکان می دهد تا روی پرونده های پروژه خود در دستگاه میزبان خود کار کنید.برای وارد کردن به ماشین مجازی ، اجرا کنید:vagrant sshمی توانید با دستور زیر دستگاه مجازی را متوقف کنید:vagrant haltبرای از بین بردن تمام منابع ایجاد شده در هنگام ایجاد دستگاه ، دستور زیز را وارد کنید:vagrant destroyنتیجه گیریما به شما نشان داده ایم که چگونه Vagrant را در Ubuntu 20.04 نصب کنید و یک پروژه اساسی Vagrant ایجاد کنید.برای کسب اطلاعات بیشتر در مورد Vagrant ، صفحه اسناد رسمی Vagrant را بررسی کنید.

ادامه مطلب
آموزش نصب VirtualBox در اوبونتو 20.04 Ubuntu

آموزش نصب VirtualBox در اوبونتو 20.04 Ubuntu

آموزش نصب VirtualBox در اوبونتو 20.04 UbuntuVirtualBox نرم افزار مجازی سازی با سیستم عامل اوپن سورس است که به شما امکان می دهد چندین سیستم عامل مهمان (ماشین های مجازی) را همزمان اجرا کنید. به طور کلی ، Virtualbox توسط کاربران دسک تاپ به عنوان یک محیط آزمایش و توسعه استفاده می شود. در این مقاله، آموزش نصب VirtualBox در اوبونتو 20.04 Ubuntu را از دو روش به شما نشان خواهیم داد:از مخازن استاندارد اوبونتو.از مخازن Oracle.بسته VirtualBox که در مخزن چند منظوره اوبونتو موجود است ممکن است جدیدترین نسخه نباشد. مخازن Oracle همیشه حاوی آخرین نسخه منتشر شده است.نصب VirtualBox از مخازن اوبونتونصب VirtualBox از مخازن اوبونتو یک پروسه ساده است. دستورالعمل های زیر را به عنوان root یا کاربر با امتیازات sudo انجام دهید تا پکیج ها را به روز کنید و VirtualBox و Extension Pack را نصب کنید:sudo apt updatesudo apt install virtualbox virtualbox-ext-packشما VirtualBox را با موفقیت در دستگاه اوبونتو نصب کرده اید و می توانید شروع به استفاده از آن کنید.نصب VirtualBox از مخازن Oracleدر زمان نوشتن این مقاله ، آخرین نسخه VirtualBox نسخه 6.1.x است.برای نصب VirtualBox از مخازن Oracle ، این مراحل را دنبال کنید:کلیدهای عمومی Oracle را با استفاده از دستورات زیر وارد کنید:wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -هر دو دستور باید خروجیOKداشته باشند ، به این معنی که کلیدها با موفقیت وارد می شوند و بسته های این مخزن قابل اعتماد در نظر گرفته می شوند.مخزن VirtualBox APT را به سیستم خود اضافه کنید:echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" | \ sudo tee -a /etc/apt/sources.list.d/virtualbox.listبه طور مثال، در صورت داشتن نسخه 20.04 اوبونتو ، focal چاپ خواهد شد .لیست بسته ها را به روز کنید و آخرین نسخه VirtualBox را نصب کنید:sudo apt updatesudo apt install virtualbox-6.1نصب پکیج افزودنی VirtualBoxبسته های افزودنی VirtualBox چندین ویژگی مفید برای دستگاه های میهمان مانند پشتیبانی دستگاه های مجازی از USB 2.0 و 3.0 ، پشتیبانی از RDP ، رمزگذاری تصاویر و موارد دیگر فراهم می کند.فایل بسته ها را با تایپ کردن دستور زیر دانلود کنید:wget https://download.virtualbox.org/virtualbox/6.1.8/Oracle_VM_VirtualBox_Extension_Pack-6.1.8.vbox-extpackاطمینان حاصل کنید که نسخه Extension Pack با نسخه VirtualBox مطابقت دارد.پس از اتمام بارگیری ، بسته را با استفاده از دستور زیر نصب کنید:sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.1.8.vbox-extpackبه شما مجوز اوراکل ارائه می شود و از شما خواسته می شود شرایط و ضوابط آنها را بپذیرید.Do you agree to these license terms and conditions (y/n)? y وارد کنید و Enterبزنید. پس از اتمام نصب ، خروجی زیر را مشاهده خواهید کرد:0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%Successfully installed "Oracle VM VirtualBox Extension Pack".شروع VirtualBoxVirtualBox را می توان با تایپ کردن virtualboxیا کلیک کردن بر روی آیکون VirtualBox ( Activities -> VirtualBox) از خط فرمان راه اندازی کرد .وقتی برای اولین بار برنامه را استارت می کنید ، پنجره ای مانند زیر ظاهر می شود:نتیجه گیریما به شما نشان داده ایم که چگونه VirtualBox را در Ubuntu 20.04 نصب کنید. اکنون می توانید اولین ماشین مجازی Windows یا Linux خود را ایجاد کنید.برای کسب اطلاعات بیشتر در مورد VirtualBox ، به صفحه رسمی اسناد VirtualBox مراجعه کنید.اگر می خواهید ماشین های مجازی خود را از خط فرمان مدیریت کنید ، مقاله ما در مورد نحوه نصب Vagrant را بررسی کنید .

ادامه مطلب
آموزش نصب Docker Compose در اوبونتو 20.04 Ubuntu

آموزش نصب Docker Compose در اوبونتو 20.04 Ubuntu

آموزش نصب Docker Compose در اوبونتو 20.04 UbuntuDocker Compose ابزاری برای خط فرمان است که به شما امکان می دهد برنامه های Docker چند کانتینری را تعریف کنید. این ابزار از یک فایل YAML برای پیکربندی سرویس ها ، شبکه ها و حجم برنامه استفاده می کند. در این مقاله آموزش نصب Docker Compose در اوبونتو 20.04 Ubuntu توضیح داده شده است.با Compose می توانید یک محیط برنامه پرتابل را تعریف کنید که بتوانید روی هر سیستم اجرا کنید. محیط های Compose از یکدیگر جدا شده و به شما امکان می دهند چندین نسخه از همان محیط را روی یک میزبان اجرا کنید.Compose به طور معمول برای توسعه محلی ، استقرار برنامه های میزبان و آزمایش خودکار استفاده می شود.پیش نیازهاما فرض می کنیم که Docker را روی دستگاه اوبونتو نصب کرده اید.نصب Docker Compose در اوبونتو 20.04 UbuntuDocker Compose یک فایل باینری است. ما پرونده را در دایرکتوری موجود در سیستم PATH بارگیری می کنیم و آن را اجرایی می کنیم. بسته Docker Compose در مخازن رسمی اوبونتو 20.04 موجود است ، اما ممکن است آخرین نسخه نباشد. در زمان نوشتن این مقاله ، آخرین نسخه پایدار Docker Compose ورژن1.25.5 است. قبل از دانلود Compose باینری ، به صفحه انتشار مخزن Compose در GitHub مراجعه کرده و بررسی کنید نسخه جدیدی برای بارگیری وجود دارد یا خیر.از curlبرای دانلود فایل Compose در دایرکتوری/usr/local/binاستفاده کنید:sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composeپس از اتمام دانلود، مجوزهای اجرایی را روی پرونده اعمال کنید:sudo chmod +x /usr/local/bin/docker-composeبرای تأیید موفقیت آمیز نصب ، دستور زیر را اجرا کنید که نسخه Compose را چاپ می کند:docker-compose --versionخروجی چیزی شبیه به این خواهد بود:docker-compose version 1.25.5, build b02f1306Docker Compose روی دستگاه اوبونتو نصب شده است و می توانید شروع به استفاده از آن کنید.شروع کار با Docker Composeدر این بخش از Docker Compose برای ساختن یک برنامه کاربردی وردپرس چند کانتینری استفاده خواهیم کرداولین قدم ایجاد دایرکتوری پروژه است:mkdir my_appcd my_appویرایشگر متن خود را باز کنید و فایلی بنام docker-compose.ymlداخل فهرست پروژه ایجاد کنید :nano docker-compose.ymlمحتوای زیر را وارد کنید:version: '3'services: db: image: mysql:5.7 restart: always volumes: - db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: wordpress wordpress: image: wordpress restart: always volumes: - ./wp_data:/var/www/html ports: - "8080:80" environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_NAME: wordpress WORDPRESS_DB_USER: root WORDPRESS_DB_PASSWORD: password depends_on: - dbvolumes: db_data: wp_data:بیایید ساختار پروندهdocker-compose.ymlرا تجزیه و تحلیل کنیم .خط اول پرونده نسخه فایل Compose را مشخص می کند . چندین نسخه مختلف از فرمت فایل Compose با پشتیبانی از نسخه های Docker خاص وجود دارد.بعد از آن شما سرویس ها، حجم ها و شبکه ها را تعریف می کنید.در این مثال ، ما سرویس هایdb، و wordpressرا داریم. هر سرویس یک ایمیج را اجرا می کند و در هنگام اجرای docker-compose یک کانتینر جداگانه ایجاد می کند.سرویس ها می توانند از ایمیج هایی که در DockerHub موجود است یا ایمیج ساخته شده از Dockerfile استفاده کنند. از فهرست پروژه ، با اجرای دستور زیر ، برنامه WordPress را راه اندازی کنید:docker-compose upکانتینر ها را راه اندازی کنید و دایرکتوری wp_data را ایجاد کنید .آدرسhttp://0.0.0.0:8080/را در مرورگر خود وارد کنید. صفحه نصب وردپرس را مشاهده خواهید کرد. در این مرحله ، برنامه وردپرس به روز شده است و می توانید شروع به کار بر روی موضوع یا افزونه خود کنید.برای متوقف کردن Composeکلیدهای CTRL+C را بزنید.همچنین می توانید با گزینه -d، میتوانید Compose را در حالت جداگانه شروع کنید:docker-compose up -dبرای بررسی سرویسهای در حال اجرا از گزینهps استفاده کنید:docker-compose ps Name Command State Ports ----------------------------------------------------------------------------------my_app_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp my_app_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcpهنگامی که Compose در حالت جداگانه اجرا می شود ، برای متوقف کردن آن اجرا کنید:docker-compose stopبرای متوقف کردن و حذف کانتینر ها و برنامه های برنامه ، از گزینهdown استفاده کنید:docker-compose downحذف Docker Composeبرای حذف تنظیمات Docker ، به طور ساده باینری را با تایپ کردن دستور زیر حذف کنید:sudo rm /usr/local/bin/docker-composeنتیجه گیریما به شما نشان داده ایم که چگونه Docker Compose را در Ubuntu 20.04 نصب کنید. استفاده از Docker Compose می تواند گردش کار و بهره وری شما را به میزان قابل توجهی بهبود بخشد. می توانید محیط توسعه خود را با Docker Compose تعریف کرده و آن را با همکاران پروژه به اشتراک بگذارید.

ادامه مطلب