سفارش تبلیغ
صبا ویژن

نحوه میزبانی وب سایت با استفاده از Cloudflare و Nginx در اوبونتو

Cloudflare سرویسی است که بین بازدید کننده و سرور مجازی مالک وب سایت قرار دارد و به عنوان یک پروکسی معکوس برای وب سایت ها عمل می کند. Cloudflare یک شبکه انتقال محتوا (CDN) ، و همچنین خدمات سرور مجازی کاهش نام دامنه توزیع شده DDoS را فراهم می کند.
Nginx یک سرور مجازی وب مشهور است که مسئول میزبانی برخی از بزرگترین و پر ترافیک ترین سایتهای اینترنت است. معمولا سازمانها وب سایتها را با Nginx ارائه کرده و از Cloudflare به عنوان ارائه دهنده CDN و DNS استفاده می کنند.
در این آموزش ، وب سایت خود را که توسط Nginx با گواهی Origin CA از Cloudflare ارائه میشود ایمن میکنید و سپس Nginx را برای استفاده از درخواستهای معتبر پیکربندی میکنید. مزایای استفاده از این ستاپ این است که شما از CDN Cloudflare و وضوح سریع DNS بهره می برید و در عین حال اطمینان حاصل می کنید که همه اتصالات از Cloudflare عبور می کنند. این مانع از رسیدن هرگونه درخواست مخرب به سرور مجازی شما می شود.
پیش نیازها
برای تکمیل این آموزش به موارد زیر نیاز دارید:
? یک سرور مجازی Ubuntu 18.04 با پیروی از راهنمای ستاپ اولیه سرور مجازی Ubuntu 18.04 ، از جمله یک کاربر sudo غیر ریشه و فایروال راه اندازی شده.
? Nginx بر روی سرور مجازی شما نصب شده باشد. می توانید راهنمای ما در مورد نحوه نصب Nginx را در اوبنتو 18.04 دنبال کنید.
? یک حساب Cloudflare
? یک دامنه ثبت شده به حساب Cloudflare شما اضافه شده باشد که به سرور مجازی Nginx شما اشاره کند. راهنمای ما در مورد چگونگی کاهش حملات DDoS علیه وب سایت خود با Cloudflare می تواند در انجام این کار به شما کمک کند. مقدمه ما در مورد اصطلاحات DNS ، مؤلفه ها و مفاهیم نیز می تواند مفید باشد.
سرور مجازی Nginx Block برای دامنه شما پیکربندی شده باشد ، که می توانید با دنبال کردن مرحله 5 نحوه نصب Nginx در اوبونتو 18.04 ، آن را انجام دهید.
مرحله 1 – تولید گواهی Origin CA TLS
Cloudflare Origin CA به شما امکان می دهد تا یک گواهی TLS رایگان امضا شده توسط Cloudflare برای نصب بر روی سرور مجازی Nginx خود تولید کنید. با استفاده از گواهی TLS تولید شده Cloudflare می توانید ارتباط بین سرور مجازی های Cloudflare و سرور مجازی Nginx خود را تضمین کنید.
برای تولید گواهی نامه با Origin CA ، در یک مرورگر وب به حساب Cloudflare خود وارد شوید. دامنه مورد نظر برای تأمین امنیت را انتخاب کرده و به بخش SSL / TLS داشبورد Cloudflare خود بروید. از آنجا به تب Origin Server بروید و بر روی دکمه Create Certificate کلیک کنید:

گزینه پیش فرض Let Cloudflare generate a private key and a CSR را انتخاب کنید.

بر روی Next کلیک کنید و گفتگویی با Origin Certificate و Private key را مشاهده خواهید کرد. شما باید گواهی مبدا و کلید خصوصی را از Cloudflare به سرور مجازی خود منتقل کنید. به دلایل امنیتی ، اطلاعات Private Key مجدداً نمایش داده نمی شود ، بنابراین قبل از کلیک بر روی Ok ، کلید سرور مجازی خود را کپی کنید.

شما از دیرکتوری / etc / ssl در سرور مجازی برای نگه داشتن گواهی مبدا و فایل های کلید خصوصی استفاده خواهید کرد. این پوشه در حال حاضر در سرور مجازی وجود دارد.
ابتدا محتویات Certificate Origin نمایش داده شده در کادر گفتگو در مرورگر خود را کپی کنید.
سپس ، در سرور مجازی خود ، /etc/ssl/cert.pem را در ویرایشگر متن مورد نظر خود باز کنید:
? $ sudo nano /etc/ssl/cert.pem
?
محتوای گواهی را در فایل اضافه کنید. سپس ذخیره کنید و از ویرایشگر خارج شوید.
سپس به مرورگر خود بازگردید و محتویات کلید خصوصی را کپی کنید. فایل /etc/ssl/key.pem را برای ویرایش باز کنید:
? $ sudo nano /etc/ssl/key.pem
?
کلید خصوصی را درون فایل قرار دهید ، فایل را ذخیره کنید و از ویرایشگر خارج شوید.
توجه: گاهی اوقات ، هنگامی که گواهی و کلید را از داشبورد Cloudflare کپی می کنید و آن را در فایل های مربوطه روی سرور مجازی پیست میکنید ، خطوط خالی درج می شود. Nginx چنین گواهینامه ها و کلیدها را نامعتبر میداند ، بنابراین اطمینان حاصل کنید که هیچ خط خالی در فایل های شما وجود نداشته باشد.

هشدار: گواهی Origin CA Cloudflare فقط به Cloudflare اعتماد میکند و بنابراین فقط باید توسط سرور مجازیهای مبدأ استفاده شود که به طور فعال به Cloudflare متصل هستند. اگر در هر لحظه Cloudflare را متوقف یا غیرفعال کنید ، گواهی Origin CA شما خطای گواهی نامعتبر را به همراه خواهد داشت.

اکنون که فایلهای کلید و مجوز را در سرور مجازی خود کپی کرده اید ، برای استفاده از آنها باید پیکربندی Nginx را به روز کنید.
مرحله 2 – نصب گواهی Origin CA در Nginx
در بخش قبلی ، با استفاده از داشبورد Cloudflare یک گواهی مبدأ و کلید خصوصی ایجاد کرده و فایل ها را در سرور مجازی خود ذخیره کردید. اکنون پیکربندی Nginx را برای استفاده از گواهی مبدا و کلید خصوصی برای اطمینان از اتصال بین سرور مجازیهای Cloudflare و سرور مجازی خود ، پیکربندی Nginx را به روز خواهید کرد.
ابتدا مطمئن شوید UFW ترافیک HTTPS را امکان پذیر می کند. Nginx Full را فعال کنید ، که پورت 80 (HTTP) و پورت 443 (HTTPS) را باز می کند:
? $ sudo ufw allow ‘Nginx Full’
?
اکنون UFW را مجدد لود کنید:
? $ sudo ufw reload
?
در آخر ، بررسی کنید که قوانین جدید شما مجاز باشند یا UFW فعال باشد:
? $ sudo ufw status
?
خروجی مانند این را مشاهده خواهید کرد:
Output
Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)

اکنون آماده تنظیم بلوک سرور مجازی Nginx خود هستید. Nginx در حین نصب بلوک سرور مجازی پیش فرض ایجاد می کند. اگر هنوز وجود دارد ، آن را حذف کنید ، زیرا قبلاً یک بلوک سرور مجازی اختصاصی برای دامنه خود پیکربندی کرده اید:
? $ sudo rm /etc/nginx/sites-enabled/default
?
سپس ، فایل پیکربندی Nginx را برای دامنه خود باز کنید:
? $ sudo nano /etc/nginx/sites-available/your_domain
?
فایل باید به صورت زیر باشد:
/etc/nginx/sites-available/your_domain
server {
listen 80;
listen [::]:80;

root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;

server_name your_domain www.your_domain;

location / {
try_files $uri $uri/ =404;
}
}

برای تنظیم موارد زیر فایل پیکربندی Nginx را اصلاح می کنید:
• به پورت 80 گوش دهید و کلیه درخواست ها را برای استفاده از https تغییر دهید.
• به پورت443 گوش داده و از گواهی مبدا و کلید خصوصی اضافه شده در قسمت قبلی استفاده کنید.
فایل را تغییر دهید تا به شکل زیر باشد:
/etc/nginx/sites-available/your_domain
server {
listen 80;
listen [::]:80;
server_name your_domain www.your_domain;
return 302 https://$server_name$request_uri;
}

server {

# SSL configuration

listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/key.pem;

server_name your_domain www.your_domain;

root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;

location / {
try_files $uri $uri/ =404;
}
}

فایل را ذخیره کرده و از ویرایشگر خارج شوید.
در مرحله بعد ، اطمینان حاصل کنید که هیچ خطای نحوی در هیچ یک از فایل های تنظیمات Nginx شما وجود ندارد:
? $sudo nginx -t
?
اگر مشکلی پیدا نکردید ، Nginx را دوباره فعال کنید تا تغییرات خود را فعال کنید:
? $ sudo systemctl restart nginx
?
حال به بخش SSL / TLS داشبورد Cloudflare بروید ، به تب Overview بروید و حالت رمزگذاری SSL / TLS را به حالت کامل (دقیق) تغییر دهید. این به Cloudflare اطلاع می دهد تا همیشه ارتباط بین Cloudflare و سرور مجازی Nginx منشاء شما را رمزگذاری کند.

اکنون به وب سایت خود در https: // your_domain مراجعه کنید تا صحت تنظیم آن را تأیید کنید. صفحه اصلی خود را مشاهده خواهید کرد و مرورگر گزارش می دهد که سایت امن است.
در قسمت بعد ، شما Authenticated Origin Pulls را تأیید می کنید که سرور مجازی مبدا شما در واقع با Cloudflare ارتباط برقرار می کند و نه برخی دیگر از سرور مجازی ها. با این کار ، Nginx پیکربندی می شود که تنها درخواست هایی را که از گواهی کلاینت معتبر از Cloudflare استفاده می کنند ، بپذیرد. کلیه درخواستهایی که از Cloudflare عبور نکرده اند رد می شوند.
مرحله 3 – تنظیم Authenticated Origin Pulls
گواهی Origin CA به Cloudflare کمک می کند تا تایید کند که در حال گفتگو با سرور مجازی درست است. در این مرحله از تأیید هویت کلاینت TLS برای تأیید صحت سرور مجازی Nginx که با Cloudflare در حال گفتگو است ، استفاده می کند.
در یک ارتباط TLS تأیید شده توسط کلاینت ، هر دو طرف یک گواهی برای تأیید ارائه می دهند. سرور مجازی مبدا پیکربندی شده است که فقط درخواستهایی را قبول کند که از گواهی کلاینت معتبر از Cloudflare استفاده می کنند. درخواست هایی که از Cloudflare عبور نکرده اند رد می شوند زیرا گواهی Cloudflare را ندارند. این بدان معنی است که حمله گران مخرب نمی توانند اقدامات امنیتی Cloudflare را دور بزنند و مستقیماً به سرور مجازی Nginx شما متصل شوند.
Cloudflare گواهینامه های امضا شده توسط CA با گواهی زیر را ارائه می دهد:
—–BEGIN CERTIFICATE—–
MIIGCjCCA/KgAwIBAgIIV5G6lVbCLmEwDQYJKoZIhvcNAQENBQAwgZAxCzAJBgNV
BAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMRQwEgYDVQQLEwtPcmln
aW4gUHVsbDEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZv
cm5pYTEjMCEGA1UEAxMab3JpZ2luLXB1bGwuY2xvdWRmbGFyZS5uZXQwHhcNMTkx
MDEwMTg0NTAwWhcNMjkxMTAxMTcwMDAwWjCBkDELMAkGA1UEBhMCVVMxGTAXBgNV
BAoTEENsb3VkRmxhcmUsIEluYy4xFDASBgNVBAsTC09yaWdpbiBQdWxsMRYwFAYD
VQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMSMwIQYDVQQD
ExpvcmlnaW4tcHVsbC5jbG91ZGZsYXJlLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBAN2y2zojYfl0bKfhp0AJBFeV+jQqbCw3sHmvEPwLmqDLqynI
42tZXR5y914ZB9ZrwbL/K5O46exd/LujJnV2b3dzcx5rtiQzso0xzljqbnbQT20e
ihx/WrF4OkZKydZzsdaJsWAPuplDH5P7J82q3re88jQdgE5hqjqFZ3clCG7lxoBw
hLaazm3NJJlUfzdk97ouRvnFGAuXd5cQVx8jYOOeU60sWqmMe4QHdOvpqB91bJoY
QSKVFjUgHeTpN8tNpKJfb9LIn3pun3bC9NKNHtRKMNX3Kl/sAPq7q/AlndvA2Kw3
Dkum2mHQUGdzVHqcOgea9BGjLK2h7SuX93zTWL02u799dr6Xkrad/WShHchfjjRn
aL35niJUDr02YJtPgxWObsrfOU63B8juLUphW/4BOjjJyAG5l9j1//aUGEi/sEe5
lqVv0P78QrxoxR+MMXiJwQab5FB8TG/ac6mRHgF9CmkX90uaRh+OC07XjTdfSKGR
PpM9hB2ZhLol/nf8qmoLdoD5HvODZuKu2+muKeVHXgw2/A6wM7OwrinxZiyBk5Hh
CvaADH7PZpU6z/zv5NU5HSvXiKtCzFuDu4/Zfi34RfHXeCUfHAb4KfNRXJwMsxUa
+4ZpSAX2G6RnGU5meuXpU5/V+DQJp/e69XyyY6RXDoMywaEFlIlXBqjRRA2pAgMB
AAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgECMB0GA1Ud
DgQWBBRDWUsraYuA4REzalfNVzjann3F6zAfBgNVHSMEGDAWgBRDWUsraYuA4REz
alfNVzjann3F6zANBgkqhkiG9w0BAQ0FAAOCAgEAkQ+T9nqcSlAuW/90DeYmQOW1
QhqOor5psBEGvxbNGV2hdLJY8h6QUq48BCevcMChg/L1CkznBNI40i3/6heDn3IS
zVEwXKf34pPFCACWVMZxbQjkNRTiH8iRur9EsaNQ5oXCPJkhwg2+IFyoPAAYURoX
VcI9SCDUa45clmYHJ/XYwV1icGVI8/9b2JUqklnOTa5tugwIUi5sTfipNcJXHhgz
6BKYDl0/UP0lLKbsUETXeTGDiDpxZYIgbcFrRDDkHC6BSvdWVEiH5b9mH2BON60z
0O0j8EEKTwi9jnafVtZQXP/D8yoVowdFDjXcKkOPF/1gIh9qrFR6GdoPVgB3SkLc
5ulBqZaCHm563jsvWb/kXJnlFxW+1bsO9BDD6DweBcGdNurgmH625wBXksSdD7y/
fakk8DagjbjKShYlPEFOAqEcliwjF45eabL0t27MJV61O/jHzHL3dknXeE4BDa2j
bA+JbyJeUMtU7KMsxvx82RmhqBEJJDBCJ3scVptvhDMRrtqDBW5JShxoAOcpFQGm
iYWicn46nPDjgTU0bX1ZPpTpryXbvciVL5RkVBuyX2ntcOLDPlZWgxZCBp96x07F
AnOzKgZk4RzZPNAxCXERVxajn/FLcOhglVAKo5H0ac+AitlQ0ip55D2/mf8o72tM
fVQ6VpyjEXdiIXWUq/o=
—–END CERTIFICATE—–

همچنین می توانید گواهی را مستقیماً از Cloudflare در این لینک دانلود کنید.
این گواهی را کپی کنید.
سپس فایل /etc/ssl/cloudflare.crt را برای نگه داشتن گواهی Cloudflare ایجاد کنید:
? $ sudo nano /etc/ssl/cloudflare.crt
?
گواهی را به فایل اضافه کنید. سپس فایل را ذخیره کرده و از ویرایشگر خارج شوید.
اکنون پیکربندی Nginx خود را به روز کنید تا از TLS Authenticated Origin Pulls استفاده کنید. فایل پیکربندی را برای دامنه خود باز کنید:
? $ sudo nano /etc/nginx/sites-available/your_domain
?

دستورالعملهای ssl_client_certificate و ssl_verify_client را همانطور که در مثال زیر نشان داده شده است اضافه کنید:
/etc/nginx/sites-available/your_domain
. . .

server {

# SSL configuration

listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/key.pem;
ssl_client_certificate /etc/ssl/cloudflare.crt;
ssl_verify_client on;

. . .

فایل را ذخیره کرده و از ویرایشگر خارج شوید.
سپس ، Nginx را آزمایش کنید تا مطمئن شوید که هیچ خطای نحوی در پیکربندی Nginx شما وجود ندارد:
? $ sudo nginx -t
?
اگر مشکلی پیدا نشد ، Nginx را ریستارت کنید تا تغییرات خود را اعمال کنید:
? $ sudo systemctl restart nginx
?
در آخر ، برای فعال کردن Authenticated Pulls ، بخش SSL / TLS را در داشبورد Cloudflare باز کنید ، به تب Origin Server بروید و گزینه Authenticated Origin Pulls را تغییر دهید.

اکنون به وب سایت خود در https: // your_domain مراجعه کنید تا صحت تنظیم آن را تأیید کنید. مانند قبل ، صفحه اصلی خود را نمایش داده خواهید کرد.
برای تأیید اینکه سرور مجازی شما فقط درخواستهای امضا شده توسط CA Cloudflare را قبول خواهد کرد ، گزینه Authenticated Origin Pulls را انتخاب کنید تا غیرفعال شود و سپس وب سایت خود را دوباره لود کنید. باید پیام خطای زیر را دریافت کنید:

اگر CA Cloudflare درخواستی را امضا نکند ، سرور مجازی مبدا شما خطایی را ایجاد می کند.
توجه: بیشتر مرورگرها درخواستها را ذخیره می کنند ، بنابراین برای دیدن تغییر فوق می توانید از حالت جستجوی Incognito/Private در مرورگر خود استفاده کنید. برای جلوگیری از عدم دسترسی به درخواست Cloudflare در هنگام تنظیم وب سایت ، به مرور کلی در داشبورد Cloudflare بروید و حالت توسعه را تغییر دهید.

اکنون که می دانید درست کار می کند به بخش SSL / TLS در داشبورد Cloudflare برگردید ، به تب Origin Server بروید و گزینه Authenticated Origin Pulls را دوباره بزنید تا فعال شود.
نتیجه
در این آموزش وب سایت خود Nginx را با رمزگذاری ترافیک بین Cloudflare و سرور مجازی Nginx با استفاده از گواهینامه Origin CA از Cloudflare ، ایمن کردید. سپس Authenticated Origin Pulls را روی سرور مجازی Nginx تنظیم میکنید تا اطمینان حاصل شود که تنها درخواستهای سرور مجازی های Cloudflare را می پذیرد و از اتصال مستقیم دیگران به سرور مجازی Nginx جلوگیری می کند.

 

نحوه استفاده از Traefik به عنوان پروکسی معکوس برای کانتینرهای Docker در اوبونتو 20.04

نحوه دانلود فایل ها با cURL

نحوه نصب و ایمن سازی Redis در Centos7

چگونه می توان محیط JupyterLab را در اوبونتو 18.04 تنظیم کرد

نحوه نصب Webmin در Ubuntu 20.04

نحوه بازنویسی آدرس های اینترنتی با mod_rewrite برای Apache در اوبونتو 20.04

نحوه مدیریت چندین سرور با دستورات Ad Hoc Ansible

چگونه می توان REST API را با Prisma و PostgreSQL ساخت

نحوه میزبانی وب سایت با استفاده از Cloudflare و Nginx در اوبونتو 18.04

نحوه استفاده از Traefik به عنوان پروکسی معکوس برای کانتینرهای Docker در Ubuntu 18.04

 

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان – 

 

 


چگونه می توان REST API را با Prisma و PostgreSQL ساخت

Prisma ، یک ابزار پایگاه داده منبع باز است. از سه ابزار اصلی تشکیل شده است:
Prisma Client: سازنده جستار خودکار و از نوع مطمئن برای Node.js و TypeScript.
Prisma Migrate: یک سیستم توصیفی انتقال و مدل سازی داده ها.
Prisma Studio: رابط کاربری گرافیکی برای مشاهده و ویرایش داده ها در پایگاه داده خود.
این ابزارها با هدف افزایش بهره وری یک برنامه نویس در گردش کار در پایگاه داده خود ارائه می شود. یکی از مهمترین مزایای Prisma میزان انتزاع ارائه شده است: به جای فهمیدن جستارهای پیچیده SQL یا انتقال شماتیک ها ، توسعه دهندگان برنامه می توانند هنگام استفاده از Prisma برای کار با پایگاه داده خود ، اطلاعات خود را به روشی بصری تر استدلال کنند.
در این آموزش ، شما یک API REST برای یک برنامه بلاگ نویسی کوچک در TypeScript با استفاده از Prisma و یک پایگاه داده PostgreSQL ایجاد خواهید کرد. پایگاه داده PostgreSQL را بصورت محلی با Docker تنظیم می کنید و مسیرهای REST API را با استفاده از Express پیاده سازی می کنید. در پایان آموزش ، یک وب سرور دارید که بصورت محلی روی دستگاه شما کار می کند که می تواند به درخواست های مختلف HTTP پاسخ دهد و داده ها را در دیتابیس بخواند و بنویسد.
پیش نیازها
این آموزش موارد زیر را فرض می کند:
Node.js v10 یا بالاتر روی دستگاه شما نصب شده باشد. برای تنظیم این گزینه می توانید از یکی از روش های نصب Node.js و ایجاد محیط توسعه محلی برای سیستم عامل خود استفاده کنید.
Docker نصب شده بر روی دستگاه تان (برای اجرای پایگاه داده PostgreSQL) . می توانید از طریق وب سایت Docker آن را روی macOS و Windows نصب کنید ، یا نحوه نصب و استفاده از Docker را برای توزیع های لینوکس دنبال کنید.
آشنایی اولیه با TypeScript و API های REST مفید است اما برای این آموزش لازم نیست.
مرحله 1 – ایجاد پروژه TypeScript
در این مرحله با استفاده از npm یک پروژه ساده TypeScript تنظیم می کنید. این پروژه پایه و اساس API REST است که می خواهید در طول دوره این آموزش بسازید.
ابتدا یک دایرکتوری جدید برای پروژه خود ایجاد کنید:
$ mkdir my-blog

در مرحله بعد ، به دیرکتوری بروید و یک پروژه npm خالی را آغاز کنید. توجه داشته باشید که گزینه -y در اینجا بدان معنی است که شما از گزینه های تعاملی فرمان عبور میکنید. برای اجرای دستورها ، -y را از دستور حذف کنید:
$ cd my-blog

$ npm init -y

برای اطلاعات بیشتر در مورد این پیام ها ، می توانید مرحله 1 نحوه استفاده از ماژول های Node.js را با npm و pack.json دنبال کنید.
با پاسخهای پیش فرض موجود ، خروجی مشابه موارد زیر را دریافت خواهید کرد:
Output
Wrote to /…/my-blog/package.json:

{
“name”: “my-blog”,
“version”: “1.0.0”,
“description”: “”,
“main”: “index.js”,
“scripts”: {
“test”: “echo \”Error: no test specified\” && exit 1″
},
“keywords”: [],
“author”: “”,
“license”: “ISC”
}

این دستور یک فایل pack.json حداقلی ایجاد می کند که شما به عنوان فایل پیکربندی پروژه npm خود استفاده می کنید. اکنون آماده تنظیم پیکربندی TypeScript در پروژه خود هستید.
دستور زیر را برای ستاپ ساده TypeScript اجرا کنید:
npm install typescript ts-node @types/node –save-dev

این دستور، سه بسته به عنوان متعلقات توسعه در پروژه شما نصب می کند:
Typescript: زنجیره ابزار TypeScript.
ts-node: بسته ای برای اجرای برنامه های TypeScript بدون کامپایل قبلی با JavaScript
@ types / node: تعاریف نوع TypeScript برای Node.js.
آخرین کاری که باید انجام دهید اضافه کردن فایل tsconfig.json است تا اطمینان حاصل شود که TypeScript به درستی برای برنامه ای که می خواهید بسازید پیکربندی شده است.
ابتدا ، دستور زیر را برای ایجاد فایل اجرا کنید:
$ nano tsconfig.json

کد JSON زیر را در فایل اضافه کنید:
my-blog/tsconfig.json
{
“compilerOptions”: {
“sourceMap”: true,
“outDir”: “dist”,
“strict”: true,
“lib”: [“esnext”],
“esModuleInterop”: true
}
}

فایل را ذخیره و از آن خارج شوید.
این یک پیکربندی استاندارد و حداقل برای یک پروژه TypeScript است. اگر می خواهید در مورد خصوصیات فردی فایل پیکربندی بیاموزید ، می توانید آنها را در مستندات TypeScript جستجو کنید.
شما پروژه ساده TypeScript خود را با استفاده از npm تنظیم کرده اید. سپس پایگاه داده PostgreSQL خود را با Docker تنظیم می کنید و Prisma را به آن وصل می کنید.
مرحله 2 – تنظیم Prisma با PostgreSQL
در این مرحله Prisma CLI را نصب می کنید ، فایل شماتیک اولیه Prisma خود را ایجاد کرده و PostgreSQL را با Docker تنظیم می کنید و Prisma را به آن وصل می کنید. شماتیک Prism فایل پیکربندی اصلی برای تنظیم Prisma شما است و شامل شماتیک پایگاه داده شما میباشد.
با نصب دستور Prisma CLI با دستور زیر شروع کنید:
$ npm install @prisma/cli –save-dev

به عنوان بهترین روش ، توصیه می شود که Prisma CLI را بصورت محلی در پروژه خود نصب کنید (برخلاف نصب جهانی). این امر به شما کمک می کند تا در صورت داشتن بیش از یک پروژه Prisma در دستگاه خود ، از تداخل نسخه ها جلوگیری کنید.
در مرحله بعد ، پایگاه داده PostgreSQL خود را با استفاده از Docker تنظیم می کنید. با دستور زیر یک فایل جدید Docker Compose ایجاد کنید:
$ nano docker-compose.yml

اکنون کد زیر را به فایل جدید ایجاد شده اضافه کنید:
my-blog/docker-compose.yml
version: ‘3.8’
services:
postgres:
image: postgres:10.3
restart: always
environment:
– POSTGRES_USER=sammy
– POSTGRES_PASSWORD=your_password
volumes:
– postgres:/var/lib/postgresql/data
ports:
– ‘5432:5432’
volumes:
postgres:

این فایل Docker Compose یک پایگاه داده PostgreSQL را تنظیم می کند که از طریق پورت 5432 کانتینر Docker قابل دسترسی است. همچنین توجه داشته باشید که اعتبارنامه دیتابیس در حال حاضر به عنوان sammy (کاربر) و your_password (رمز عبور) تعیین شده است. در تنظیم این اعتبارها با کاربر و رمز عبور دلخواه خود اختیارعمل کامل دارید. فایل را ذخیره کنید و از آن خارج شوید.
با استفاده از این ستاپ، سرور پایگاه داده PostgreSQL را با دستور زیر راه اندازی کنید:
$ docker-compose up -d

خروجی این دستور مشابه این است:
Output
Pulling postgres (postgres:10.3)…
10.3: Pulling from library/postgres
f2aa67a397c4: Pull complete
6de83ca23e55: Pull complete
. . .
Status: Downloaded newer image for postgres:10.3
Creating my-blog_postgres_1 … done

با دستور زیر می توانید تأیید کنید که سرور پایگاه داده در حال اجرا است:
$ docker ps

این چیزی شبیه به این نتیجه خواهد داد:
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8547f8e007ba postgres:10.3 “docker-entrypoint.s…” 3 seconds ago Up 2 seconds 0.0.0.0:5432->5432/tcp my-blog_postgres_1

با اجرای سرور پایگاه داده ، اکنون می توانید ستاپ Prisma خود را ایجاد کنید. دستور زیر را از Prisma CLI اجرا کنید:
با این کار خروجی زیر چاپ می شود:
$ npx prisma init

خروجی زیر را پرینت میکند:
Output
? Your Prisma schema was created at prisma/schema.prisma.
You can now open it in your favorite editor.

توجه داشته باشید که به عنوان بهترین کار ، باید تمام فراخوانی های Prisma CLI را با npxپیشونددار کنید. این کار اطمینان حاصل می کند نصب محلی شما در حال استفاده است.
پس از اجرای فرمان ، Prisma CLI یک پوشه جدید به نام prisma را در پروژه شما ایجاد کرد. این شامل دو فایل زیر است:
schema.prisma: فایل اصلی پیکربندی پروژه Prisma شما (شامل مدل داده شما خواهد بود(.
.env: یک فایل dotenv برای مشخص کردن URL اتصال به پایگاه داده خود.
برای اطمینان از اینکه Prisma از مکان پایگاه داده شما اطلاع دارد ، فایل .env را باز کنید و متغیر محیط DATABASE_URL را تنظیم کنید.
ابتدا فایل .env را باز کنید:
$ nano prisma/.env

اکنون می توانید متغیر محیط را به شرح زیر تنظیم کنید:
my-blog/prisma/.env
DATABASE_URL=”postgresql://sammy:your_password@localhost:5432/my-blog?schema=public”

اطمینان حاصل کنید که اعتبار دیتابیس را به مواردی که در فایل Docker Compose معرفی کرده اید تغییر دهید. برای کسب اطلاعات بیشتر در مورد قالب URL اتصال ، به اسناد Prisma مراجعه کنید.
پس از اتمام کار ، فایل را ذخیره کنید و خارج شوید.
در این مرحله ، پایگاه داده PostgreSQL خود را با Docker تنظیم کرده ، Prisma CLI را نصب کرده و Prisma را از طریق یک متغیر محیط به پایگاه داده وصل می کنید. در بخش بعدی ، مدل داده خود را تعیین کرده و جداول بانک اطلاعاتی خود را ایجاد خواهید کرد.
مرحله 3 – تعریف مدل داده خود و ایجاد جداول بانک اطلاعاتی
در این مرحله مدل داده خود را در فایل شماتیک Prisma تعریف خواهید کرد. سپس این مدل داده با Prisma Migrate به پایگاه داده نگاشت می شود که عبارت SQL را برای ایجاد جداول متناسب با مدل داده شما تولید و ارسال می کند. از آنجا که شما در حال ایجاد یک برنامه وبلاگ نویسی هستید ، ماهیت های اصلی برنامه، کاربران و پستها خواهند بود.
Prisma از زبان مدل سازی داده خود استفاده می کند تا شکل داده های برنامه شما را تعریف کند.
ابتدا فایل schema.prisma خود را با دستور زیر باز کنید:
$ nano prisma/schema.prisma

حالا تعاریف مدل زیر را به آن اضافه کنید. شما می توانید مدل ها را در پایین فایل ، درست پس از بلوک generator clientقرار دهید:
my-blog/prisma/schema.prisma
. . .
model User {
id Int @default(autoincrement()) @id
email String @unique
name String?
posts Post[]
}

model Post {
id Int @default(autoincrement()) @id
title String
content String?
published Boolean @default(false)
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}

فایل را ذخیره کنید و از آن خارج شوید.
شما در حال تعریف دو مدل به نام های کاربر و پست هستید. هر یک از این موارد دارای تعدادی فیلد است که نشان دهنده ویژگی های مدل است. مدل ها در جداول بانک اطلاعاتی نگاشت می شوند. فیلد ها ستون های فردی را نشان می دهند.
همچنین توجه داشته باشید که بین این دو مدل رابطه یک به یک وجود دارد ، که توسط فیلدهای رابطه ای posts  و author  در User  و Post مشخص شده است. این بدان معنی است که یک کاربر می تواند با بسیاری از پست ها در ارتباط باشد.
با استفاده از این مدل ها ، اکنون می توانید جداول مربوطه را با استفاده از Prisma Migrate در دیتابیس ایجاد کنید. در ترمینال خود دستور زیر را اجرا کنید:
$ npx prisma migrate save –experimental –create-db –name “init”

این دستور یک تغییر جدید در سیستم فایل شما ایجاد می کند. در اینجا یک مرور اجمالی از سه گزینه ارائه شده به این دستور آمده است:
–experimental: الزامی است زیرا Prisma Migrateدر حال حاضر در حالت آزمایشی قرار دارد.
–create-db: Prisma Migrate را قادر می سازد تا پایگاه داده ای را با نام وبلاگ من ایجاد کند که در URL اتصال مشخص شده است.
–name “init”: انتقال را مشخص می کند (برای نامگذاری پوشه جا به جایی ایجاد شده در سیستم فایل شما استفاده خواهد شد).
خروجی این دستور مشابه این است:
Output
New datamodel:

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

datasource db {
provider = “postgresql”
url = env(“DATABASE_URL”)
}

generator client {
provider = “prisma-client-js”
}

model User {
id Int @default(autoincrement()) @id
email String @unique
name String?
posts Post[]
}

model Post {
id Int @default(autoincrement()) @id
title String
content String?
published Boolean @default(false)
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}

Prisma Migrate just created your migration 20200811140708-init in

migrations/
?? 20200811140708-init/
?? steps.json
?? schema.prisma
?? README.md

در جتجوی فایل های migration که در دیرکتوری prisma/migrations ایجاد شده اند ، آزادانه عمل کنید.
برای اجرای جابه جایی در برابر پایگاه داده خود و ایجاد جداول برای مدل های Prisma ، دستور زیر را در ترمینال خود اجرا کنید:
$ npx prisma migrate up –experimental

خروجی زیر را دریافت خواهید کرد:
Output
. . .
Checking the datasource for potential data loss…

Database Changes:

Migration Database actions Status

20200811140708-init 2 CreateTable statements. Done ??

You can get the detailed db changes with prisma migrate up –experimental –verbose
Or read about them here:
./migrations/20200811140708-init/README.md

?? Done with 1 migration in 206ms.

اکنون Prisma Migrate عبارات SQL را که برای جابه جایی لازم است تولید می کند و آنها را به پایگاه داده می فرستد. موارد زیر عبارات SQL است که جدول ها را ایجاد کرده است:
CREATE TABLE “public”.”User” (
“id” SERIAL,
“email” text NOT NULL ,
“name” text ,
PRIMARY KEY (“id”)
)

CREATE TABLE “public”.”Post” (
“id” SERIAL,
“title” text NOT NULL ,
“content” text ,
“published” boolean NOT NULL DEFAULT false,
“authorId” integer ,
PRIMARY KEY (“id”)
)

CREATE UNIQUE INDEX “User.email” ON “public”.”User”(“email”)

ALTER TABLE “public”.”Post” ADD FOREIGN KEY (“authorId”)REFERENCES “public”.”User”(“id”) ON DELETE SET NULL ON UPDATE CASCADE

در این مرحله شما مدل داده خود را در شمای Prisma خود تعریف کرده و جداول پایگاه داده های مربوطه را با Prisma Migrate ایجاد کرده اید. در مرحله بعد ، Prisma Client را در پروژه خود نصب خواهید کرد تا بتوانید از پایگاه داده پرس و جو کنید.
مرحله چهارم – کاوش در مورد جستارهای کلاینت Prisma در یک اسکریپت ساده
Prisma Client یک سازنده جستار خودکار ایجاد شده و از نوع مطمئن است که می توانید با استفاده از برنامه های Node.js یا TypeScript ، داده ها را در یک پایگاه داده بخوانید و بنویسید. شما می توانید از آن برای دسترسی به بانک اطلاعاتی در مسیرهای REST API خود ، جایگزین کردن ORM های معمول ، جستارهای ساده SQL ، لایه های دسترسی به داده های سفارشی یا هر روش دیگری برای صحبت با یک پایگاه داده استفاده کنید.
در این مرحله Prisma Client را نصب می کنید و با جستارهایی که می توانید با آن ارسال کنید آشنا می شوید. قبل از اجرای مسیرهای API REST در مراحل بعدی ، ابتدا برخی از جستارهای Prisma را با یک 

برای دسترسی به مسیر /users می توانید مرورگر خود را به آدرس http: // localhost: 3000 / کاربر یا هر کلاینت HTTP دیگری هدایت کنید.
در این آموزش ، تمام مسیرهای REST API را با استفاده از Curl ، یک کلاینت HTTP مبتنی بر ترمینال ، تست خواهید کرد.
توجه: اگر ترجیح می دهید از یک سرویس دهنده HTTP مبتنی بر GUI استفاده کنید ، می توانید از گزینه های دیگری مانند Postwoman یا Advanced REST Client استفاده کنید.
برای آزمایش مسیر خود ، یک پنجره یا تب ترمینال جدید باز کنید (به این ترتیب که وب سرور محلی شما قادر به اجرای آن باشد) و دستور زیر را اجرا کنید:
$ curl http://localhost:3000/users

داده های کاربری را که در مرحله قبل ایجاد کرده اید دریافت خواهید کرد:
Output
[{“id”:1,”email”:”alice@prisma.io”,”name”:”Alice”}]

توجه داشته باشید که این بار آرایه posts  گنجانده نشده است. این امر به این دلیل است که شما در اجرای مسیر /users گزینه include را به تماس findMany منتقل نمی کنید.
شما اولین مسیر REST API خود را در /usersپیاده سازی کرده اید. در مرحله بعدی مسیرهای باقیمانده API را برای اضافه کردن قابلیت های بیشتر به API خود پیاده سازی خواهید کرد.
مرحله 6 – اجرای مسیرهای باقیمانده REST API
در این مرحله مسیرهای باقیمانده API را برای برنامه وبلاگ نویسی خود پیاده سازی خواهید کرد. در پایان ، سرور وب شما درخواست های مختلف GET ، POST ، PUT و DELETE را ارائه می دهد.
در اینجا مروری بر مسیرهای مختلفی که اجرا خواهید کرد:
HTTP Method مسیر توصیف
GET /feed تمام پست های منتشر شده را میگیرد
GET /post/:id پست خاصی را با IDمیگیرد
POST /user کاربر جدید ایجاد میکند
POST /post پست جدید ایجاد میکند (به عنوان پیش نویس)
PUT /post/publish/:id فیلد published  را روی true قرار میدهد
DELETE post/:id پستی را بر جسب ID حذف میکند

پیش بروید و ابتدا مسیرهای GET باقیمانده را پیاده سازی کنید.
index.ts را با دستور زیر باز کنید:
$ nano src/index.ts

سپس ، بعد از اجرای مسیر /users، کد زیر را اضافه کنید:
my-blog/src/index.ts
. . .

app.get(‘/feed’, async (req, res) => {
const posts = await prisma.post.findMany({
where: { published: true },
include: { author: true }
})
res.json(posts)
})

app.get(`/post/:id`, async (req, res) => {
const { id } = req.params
const post = await prisma.post.findOne({
where: { id: Number(id) },
})
res.json(post)
})

app.listen(3000, () =>
console.log(‘REST API server ready at: http://localhost:3000’),
)

فایل خود را ذخیره کنید و از آن خارج شوید.
این کد مسیرهای API را برای دو درخواست GET پیاده سازی می کند:
/ feed: لیستی از پستهای منتشر شده را برمی گرداند.
/ post /: id: یک پست خاص را با شناسه خود برمی گرداند.
Prisma Client در هر دو پیاده سازی استفاده می شود. در اجرای مسیر /feed، جستار شما که با فیلترهای Prisma Client برای همه سوابق پست می کنید و در آن ستون published  شامل مقدار واقعی است. علاوه بر این ، جستارهای مربوط به Prisma Client شامل اطلاعات author مربوطه برای هر پست برگشتی نیز می باشد. در اجرای مسیر / post /: id ، می توانید شناسه ای را که از مسیر URL بازیابی می شود برای خواندن یک رکورد ارسال خاص از پایگاه داده در حال عبور هستید.
می توانید CTRL + C را در صفحه کیبورد خود بزنید و سرور را متوقف کنید. سپس ، سرور را با استفاده از دستور زیر ریستارت کنید:
$ npx ts-node src/index.ts

برای تست مسیر /feed، می توانید از دستور curl زیر استفاده کنید:
$ curl http://localhost:3000/feed

از آنجا که هنوز هیچ پستی منتشر نشده است ، این پاسخ ارایه خالی به همراه دارد:
Output
[]
برای بررسی مسیر /post/:id میتوانید از دستور زیر استفاده کنید:
$ curl http://localhost:3000/post/1

پستی که ابتدا ایجاد کرده اید را برمیگرداند:
Output
{“id”:1,”title”:”Hello World”,”content”:null,”published”:false,”authorId”:1}

سپس دو مسیر post را اجرا کنید. کد زیر را به index.ts پس از پیاده سازی مسیر GET اضافه کنید
my-blog/src/index.ts
. . .

app.post(`/user`, async (req, res) => {
const result = await prisma.user.create({
data: { …req.body },
})
res.json(result)
})

app.post(`/post`, async (req, res) => {
const { title, content, authorEmail } = req.body
const result = await prisma.post.create({
data: {
title,
content,
published: false,
author: { connect: { email: authorEmail } },
},
})
res.json(result)
})

app.listen(3000, () =>
console.log(‘REST API server ready at: http://localhost:3000’),
)
پس از اتمام کار ، پرونده خود را ذخیره کنید و خارج شوید.
این کد مسیرهای API را برای دو درخواست POST پیاده سازی می کند:
/ user: کاربر جدیدی را در دیتابیس ایجاد می کند.
/ post: یک پست جدید در بانک اطلاعاتی ایجاد می کند.
مانند قبل ، Prisma Client در هر دو پیاده سازی استفاده می شود. در اجرای مسیر /user، مقادیر را از بدنه درخواست HTTP به جستار create  در Prisma Client منتقل می کنید.
مسیر /post کمی بیشتر درگیر است: در اینجا نمی توانید مقادیر را مستقیماً از بدنه درخواست HTTP عبور دهید. در عوض ، ابتدا باید آنها را به صورت دستی استخراج کنید تا آنها را به جستار Prisma Client منتقل کنید. دلیل این امر این است که ساختار JSON در بدنه درخواست با ساختار مورد انتظار Prisma Client مطابقت ندارد ، بنابراین باید ساختار مورد نظر را بصورت دستی ایجاد کنید.
با متوقف کردن سرور با CTRL + C می توانید مسیرهای جدید را آزمایش کنید. سپس ، سرور را با استفاده از دستور زیر ریستارت کنید:
$ npx ts-node src/index.ts

برای ایجاد یک کاربر جدید از طریق مسیر /user، می توانید درخواست POST زیر را با استفاده از curlارسال کنید:
$ curl -X POST -H “Content-Type: application/json” -d ‘{“name”:”Bob”, “email”:”bob@prisma.io”}’ http://localhost:3000/user

با این کار کاربر جدیدی در دیتابیس ایجاد می شود و خروجی زیر را چاپ می کند:
Output
{“id”:2,”email”:”bob@prisma.io”,”name”:”Bob”}

برای ایجاد یک پست جدید از طریق مسیر /post، می توانید درخواست POST  زیر را با curl ارسال کنید:
$ curl -X POST -H “Content-Type: application/json” -d ‘{“title”:”I am Bob”, “authorEmail”:”bob@prisma.io”}’ http://localhost:3000/post

با این کار پست جدیدی در دیتابیس ایجاد شده و با ایمیل bob@prisma.io به کاربر وصل می شود. خروجی زیر را چاپ می کند:
Output
{“id”:2,”title”:”I am Bob”,”content”:null,”published”:false,”authorId”:2}

سرانجام می توانید مسیرهای PUT و DELETE را پیاده سازی کنید.
index.ts را با دستور زیر باز کنید:
$ nano src/index.ts

در مرحله بعد ، پس از اجرای دو مسیر POST ، کد هایلایت شده را اضافه کنید:
my-blog/src/index.ts
. . .

app.put(‘/post/publish/:id’, async (req, res) => {
const { id } = req.params
const post = await prisma.post.update({
where: { id: Number(id) },
data: { published: true },
})
res.json(post)
})

app.delete(`/post/:id`, async (req, res) => {
const { id } = req.params
const post = await prisma.post.delete({
where: { id: Number(id) },
})
res.json(post)
})

app.listen(3000, () =>
console.log(‘REST API server ready at: http://localhost:3000’),
)

فایل خود را ذخیره کنید و از آن خارج شوید.
این کد مسیرهای API را برای یک PUT و یک درخواست DELETE پیاده سازی می کند:
/post/publish/:id (PUT): پستی را با شناسه اش منتشر می کند.
/post/:id (DELETE): پستی را با شناسه آن حذف می کند.
باز هم ، Prisma Client در هر دو پیاده سازی استفاده می شود. در اجرای /post/publish/:id ، شناسه پستی که باید منتشر شود از URL برداشته می شود و به جستار به روزرسانی Prisma Client منتقل می شود. اجرای مسیر / post /: id برای پاک کردن یک پست در دیتابیس نیز شناسه پست را از URL باز می گیرد و آن را به درخواست حذف Prisma Client منتقل می کند.
دوباره ، سرور را با CTRL + C در صفحه کلید خود متوقف کنید. سپس ، سرور را با استفاده از دستور زیر ریستارت کنید:
$ npx ts-node src/index.ts

می توانید مسیر PUT را با دستور curl زیر آزمایش کنید:
$ curl -X PUT http://localhost:3000/post/publish/2

این دستور پست را با شناسه برابر با 2 منتشر میکند. در صورت ارسال درخواست /feed، این پست در پاسخ گنجانده می شود.
در آخر ، می توانید مسیر DELETE را با دستور curl زیر آزمایش کنید:
$ curl -X DELETE http://localhost:3000/post/1

این دستور پست با شناسه ID 1 را حذف میکند. برای تأیید اینکه پست با این شناسه حذف شده است ، می توانید یک درخواست GET را به مسیر / post / 1 ارسال کنید.
در این مرحله ، شما مسیرهای باقی مانده REST API را برای برنامه وبلاگ نویسی خود پیاده سازی کرده اید. API اکنون به درخواستهای مختلف GET ، POST ، PUT و DELETE پاسخ می دهد و عملکردی را برای خواندن و نوشتن داده ها در بانک اطلاعاتی پیاده سازی می کند.
نتیجه
در این مقاله ، شما یک سرور API REST ایجاد کرده اید که دارای چندین مسیر مختلف برای ایجاد ، خواندن ، به روزرسانی و حذف داده های کاربر و ارسال یک برنامه وبلاگ نویسی نمونه است. در داخل مسیرهای API ، شما در حال استفاده از Prisma Client برای ارسال جستارهای مربوطه به پایگاه داده خود هستید.
به عنوان مرحله بعدی ، می توانید مسیرهای API اضافی را پیاده سازی کنید یا طرح پایگاه داده خود را با استفاده از Prisma Migrate گسترش دهید. برای اطلاع از جوانب مختلف Prisma ، به اسناد Prisma مراجعه کرده و برخی از پروژه های نمونه آماده را برای استفاده در مخزن نمونه های Prisma – با استفاده از ابزارهایی مانند GraphQL یا APP های grPC جستجو کنید.

 

نحوه استفاده از Traefik به عنوان پروکسی معکوس برای کانتینرهای Docker در اوبونتو 20.04

نحوه دانلود فایل ها با cURL

نحوه نصب و ایمن سازی Redis در Centos7

چگونه می توان محیط JupyterLab را در اوبونتو 18.04 تنظیم کرد

نحوه نصب Webmin در Ubuntu 20.04

نحوه بازنویسی آدرس های اینترنتی با mod_rewrite برای Apache در اوبونتو 20.04

نحوه مدیریت چندین سرور با دستورات Ad Hoc Ansible

چگونه می توان REST API را با Prisma و PostgreSQL ساخت

نحوه میزبانی وب سایت با استفاده از Cloudflare و Nginx در اوبونتو 18.04

نحوه استفاده از Traefik به عنوان پروکسی معکوس برای کانتینرهای Docker در Ubuntu 18.04

 

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان – 

 

 


نحوه مدیریت چندین سرور با دستورات Ad Hoc Ansible

 

Ansible ابزاری مدرن برای مدیریت پیکربندی است که کار تنظیم و نگهداری سرور محازی های از راه دور را تسهیل می کند. با یک طراحی مینیمالیستی که قصد دارد کاربران را به روز کرده و به آنها سرعت ببخشد ، به شما این امکان را می دهد تا یک یا صدها سیستم را از یک مکان مرکزی با playbook یا دستورات ad hoc کنترل کنید.
بر خلاف playbook- که شامل مجموعه کارهایی است که می توان از آنها استفاده مجدد کرد – دستورات ad hoc کارهایی هستند که شما مرتباً آنها را انجام نمی دهید ، مانند راه اندازی مجدد یک سرویس یا بازیابی اطلاعات در مورد سیستمهای از راه دور که قابل اعتماد نیستند.

در این راهنما، یاد می گیرید که چگونه از دستورات ad hoc برای انجام کارهای متداول مانند نصب بسته ها ، کپی کردن فایل ها ، و راه اندازی مجدد سرویس ها بر روی یک یا چند سرور محازی از راه دور ، از یک گره کنترل Ansible استفاده کنید.

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

آزمایش اتصال به هاست های Ansible
دستور زیر اتصال بین گره کنترل Ansible و تمام میزبان های Ansible شما را آزمایش می کند. این دستور از کاربر سیستم فعلی و کلید SSH مربوطه آن به عنوان ورود از راه دور استفاده می کند و گزینه -m را نیز شامل می شود ، که به Ansible می گوید ماژول ping را اجرا کنید. همچنین دارای پرچم -i است که به Ansible میگوید میزبان های موجود در فایل inventory مشخص شده را ping کند.
$ ansible all -i inventory -m ping

اگر اولین بار است که از طریق SSH به این سرور محازی ها وصل می شوید ، از شما خواسته می شود که صحت میزبان هایی را که از طریق Ansible به آنها وصل می شوید ، تأیید کنید. وقتی از شما خواسته شد ، yes را تایپ کنید و سپس برای تأیید ENTER را بزنید.
باید خروجی مشابه این دریافت کنید:
Output
server1 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
server2 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}

هنگامی که یک پاسخ “pong” را از هاست دریافت کردید ، بدان معنی است که ارتباط زنده است و شما آماده اجرای دستورات Ansible در آن سرور محازی هستید.

تنظیم گزینه های اتصال
به طور پیش فرض ، Ansible سعی دارد با استفاده از صفحه کلید SSH مربوطه ، به عنوان کاربر از راه دور با همان نام کاربری سیستم فعلی شما ، به گره ها متصل شود.
برای اتصال به عنوان یک کاربر از راه دور متفاوت ، فرمان را با پرچم -u و نام کاربر در نظر گرفته شده اضافه کنید:
$ ansible all -i inventory -m ping -u sammy

اگر از یک کلید SSH سفارشی برای اتصال به سرور محازی های از راه دور استفاده می کنید ، می توانید آن را در زمان اجرا با گزینه –private-key ارائه دهید:
$ ansible all -i inventory -m ping –private-key=~/.ssh/custom_id

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

هنگامی که می توانید با استفاده از گزینه های مناسب اتصال برقرار کنید ، می توانید فایل inventory خود را تنظیم کنید تا به صورت خودکار کاربر از راه دور و کلید خصوصی خود را تنظیم کنید ، تا تفاوتی با مقادیر پیش فرض تعیین شده توسط Ansible نباشد. سپس ، لازم نیست آن پارامترها را در خط فرمان ارائه دهید.
مثال فایل inventory زیر متغیر ansible_user را فقط برای سرور محازی server1 تنظیم می کند:
~/ansible/inventory
server1 ansible_host=203.0.113.111 ansible_user=sammy
server2 ansible_host=203.0.113.112

Ansible اکنون هنگام اتصال به سرور محازی server1 از summy به عنوان کاربر پیش فرض از راه دور استفاده می کند.
برای تنظیم کلید SSH سفارشی ، متغیر ansible_ssh_private_key_file را به شرح زیر وارد کنید:
~/ansible/inventory
server1 ansible_host=203.0.113.111 ansible_ssh_private_key_file=/home/sammy/.ssh/custom_id
server2 ansible_host=203.0.113.112

در هر دو مورد ، ما مقادیر سفارشی را فقط برای server1 تنظیم کرده ایم. اگر می خواهید از همان تنظیمات برای چندین سرور محازی استفاده کنید ، می توانید برای آن گروه child استفاده کنید:
~/ansible/inventory
[group_a]
203.0.113.111
203.0.113.112

[group_b]
203.0.113.113

[group_a:vars]
ansible_user=sammy
ansible_ssh_private_key_file=/home/sammy/.ssh/custom_id

این پیکربندی مثال فقط یک کاربر سفارشی و کلید SSH را برای اتصال به سرور محازی های ذکر شده در group_a اختصاص می دهد.

تعیین اهدافی برای اجرای فرمان
هنگام اجرای دستورات ad hoc با Ansible ، می توانید میزبان های فردی و همچنین هر ترکیبی از گروه ها ، هاست ها و زیر گروه ها را هدف قرار دهید. به عنوان مثال ، به ترتیب زیر می توانید اتصال را برای هر میزبان در یک گروه به نام سرور محازی ها بررسی کنید:
$ ansible servers -i inventory -m ping

همچنین می توانید میزبان ها و گروه های مختلفی را با جدا کردن آنها با ستون هایی مشخص کنید:
$ ansible server1:server2:dbservers -i inventory -m ping

برای درج یک استثناء در یک الگو ، از علامت تعجب ، پیشوند با کاراکتر \ ، به شرح زیر استفاده کنید. این دستور بر روی همه سرور محازی های گروه 1 اجرا می شود ، به جز server2:
$ ansible group1:\!server2 -i inventory -m ping

در صورت تمایل به اجرای یک دستور فقط بر روی سرور محازی هایی که جزئی از گروه 1 و گروه 2 هستند ،
به عنوان مثال ، باید از & استفاده کنید. فراموش نکنید که پیشوند آن را یک کاراکتر \ قرار دهید:
$ ansible group1:\&group2 -i inventory -m ping

برای کسب اطلاعات بیشتر در مورد چگونگی استفاده از الگوها هنگام تعیین اهداف برای اجرای فرمان ، لطفاً به مرحله 5 راهنمای ما در مورد نحوه تنظیم موجودی های Ansible مراجعه کنید.

اجرای ماژول های Ansible
ماژول های Ansible قطعاتی از کد هستند که می توانند از playbooks و همچنین از خط فرمان دریافت شوند تا مراحل اجرا روی گره های از راه دور را تسهیل کنند. مثالها شامل ماژول apt  ، برای مدیریت بسته های سیستم در اوبونتو و ماژول user  است که برای مدیریت کاربران سیستم استفاده می شود. دستور ping  مورد استفاده در سراسر این راهنما نیز یک ماژول است که به طور معمول برای تست اتصال از گره کنترل به هاست استفاده می شود.
Ansible با مجموعه گسترده ای از ماژول های داخلی همراه است که برخی از آنها به منظور فراهم آوردن قابلیت های کامل ، نیاز به نصب نرم افزار اضافی دارند. همچنین می توانید ماژول های دلخواه خود را با استفاده از زبان مورد نظر خود ایجاد کنید.
برای اجرای یک ماژول با آرگومان ها ، پرچم -a را به همراه گزینه های مناسب در نقل قول اضافه کنید ، مانند این:
$ ansible target -i inventory -m module -a “module options”

به عنوان نمونه ، از ماژول apt برای نصب بسته tree  روی server1 استفاده می کند:
$ ansible server1 -i inventory -m apt -a “name=tree”

اجرای دستورات Bash

هنگامی که یک ماژول از طریق گزینه -m ارائه نمی شود ، از ماژول فرمان به طور پیش فرض برای اجرای دستور مشخص شده روی سرور محازی (های) راه دور استفاده می شود.
این امر به شما امکان می دهد تا بتوانید تقریبا هر فرمانی را اجرا کنید که بطور معمول از طریق یک ترمینال SSH اجرا میشود، مادامی که کاربر در حال اتصال مجوزهای کافی داشته باشد و هیچ گونه اعلان تعاملی وجود نداشته باشد.
این مثال فرمان uptime را در کلیه سرور محازی ها از موجودی مشخص شده اجرا می کند:
$ ansible all -i inventory -a “uptime”

Output
server1 | CHANGED | rc=0 >>
14:12:18 up 55 days, 2:15, 1 user, load average: 0.03, 0.01, 0.00
server2 | CHANGED | rc=0 >>
14:12:19 up 10 days, 6:38, 1 user, load average: 0.01, 0.02, 0.00

استفاده از افزایش امتیازات برای اجرای دستورات با sudo
اگر دستور یا ماژول مورد نظر برای اجرا روی هاستهای از راه دور نیاز به امتیازات گسترده سیستم یا کاربر سیستم دیگری دارد ، لازم است که از ماژول افزایش امتیاز Ansible استفاده کنید ، که ماژولی انتزاعی برای sudo و همچنین سایر نرم افزارهای افزایش امتیاز است که توسط Ansible در سیستم عامل های مختلف پشتیبانی می شود.
به عنوان مثال ، اگر می خواهید یک فرمان tail  را برای خروجی آخرین پیام های ورود به سیستم از خطای Nginx روی سرور محازی به نام server1 از inventory ، اجرا کنید ، باید گزینه –become را به شرح زیر وارد کنید:
ansible server1 -i inventory -a “tail /var/log/nginx/error.log” –become

این می تواند معادل اجرای فرمان sudo tail /var/log/nginx/error.log بر روی میزبان از راه دور ، با استفاده از کاربر سیستم فعلی محلی یا کاربر از راه دور تنظیم شده در فایل inventory شما باشد.
سیستم های افزایش امتیاز مانند sudo اغلب با درخواست رمز ورود کاربر، از شما میخواهند که تأیید اعتبار کنید. این باعث می شود که Ansible در اجرای یک دستور یا اجرای playbook شکست بخورد. سپس می توانید از گزینه –ask-become-pass یا -K استفاده کنید تا Ansible اعلان رمز عبور sudo را درخواست کند:

$ ansible server1 -i inventory -a “tail /var/log/nginx/error.log” –become -K

نصب و حذف بسته ها
مثال زیر از ماژول apt برای نصب بسته nginx در تمام گره ها از فایل inventory استفاده می کند:
$ ansible all -i inventory -m apt -a “name=nginx” –become -K

برای حذف بسته ، آرگومان state را درج کنید و آن را روی absent تنظیم کنید:.
$ ansible all -i inventory -m apt -a “name=nginx state=absent” –become -K

 

کپی کردن فایل ها
با ماژول file ، می توانید فایلها را بین گره کنترل و گره های مدیریت شده ، از هر جهت کپی کنید. دستور زیر یک فایل متنی محلی را برای همه میزبانهای از راه دور در فایل inventory مشخص شده کپی می کند:
$ ansible all -i inventory -m copy -a “src=./file.txt dest=~/myfile.txt”

برای کپی کردن فایل از سرور محازی از راه دور در گره کنترل خود ، گزینه Remote_src را نیز اضافه کنید:
$ ansible all -i inventory -m copy -a “src=~/myfile.txt remote_src=yes dest=./file.txt”

تغییر مجوزهای فایل
برای تغییر مجوزها در فایل ها و دایرکتوری ها روی گره های از راه دور خود ، می توانید از ماژول file استفاده کنید.
دستور زیر مجوزها را روی فایلی به نام file.txt که در / var / www در میزبان از راه دور قرار دارد تنظیم می کند. این قسمت کادر اجرایی فایل را روی 600 تنظیم می کند ، که مجوزهای خواندن و نوشتن را فقط برای مالک فعلی فایل فعال می کند. علاوه بر این ، مالکیت آن فایل را برای کاربر و گروهی به نام sammy تعیین می کند:
$ ansible all -i inventory -m file -a “dest=/var/www/file.txt mode=600 owner=sammy group=sammy” –become -K

از آنجا که این فایل در یک دیرکتوری قرار دارد که معمولاً متعلق به root است ، برای تغییر ویژگی های آن ممکن است به مجوزهای sudo نیاز داشته باشیم. به همین دلیل گزینه های –become و -K را شامل می شود. اینها برای اجرای دستور دارای امتیازات گسترده از سیستم تشدید امتیاز Ansible استفاده می کنند ، و این امر باعث می شود که رمز عبور sudo را برای کاربر از راه دور تهیه کنید.

ریستارت سرویس ها
شما می توانید از ماژول service برای مدیریت سرویس های در حال اجرا روی گره های از راه دور که توسط Ansible استفاده می شود ، استفاده کنید. این امر به امتیازات گسترده سیستم نیاز دارد ، بنابراین اطمینان حاصل کنید که کاربر از راه دور شما دارای مجوزهای sudo است و شما از گزینه –become برای استفاده از سیستم افزایش امتیاز Ansible استفاده می کنید. استفاده از -K باعث می شود که رمز عبور sudo را برای کاربر متصل کننده فراهم کنید.
برای ریستارت سرویس nginx در تمام میزبانهای گروهی به نام webservers ، دستور زیر را اجرا کنید:
$ ansible webservers -i inventory -m service -a “name=nginx state=restarted” –become -K

ریستارت سرور محازی ها
اگرچه Ansible یک ماژول اختصاصی برای راه اندازی مجدد سرور محازی ها ندارد ، می توانید یک دستور bash صادر کنید که فرمان /sbin/reboot را روی میزبان از راه دور فراخوانی می کند.
راه اندازی مجدد سرور محازی به امتیازات گسترده سیستم نیاز دارد ، بنابراین اطمینان حاصل کنید که کاربر از راه دور شما دارای مجوزهای sudo است و شما از گزینه –become برای استفاده از سیستم افزایش امتیاز Ansible استفاده می کنید. استفاده از -K باعث می شود رمز عبور sudo را برای کاربر متصل کننده فراهم کنید.
هشدار: دستور زیر سرور محازی (های) هدف Ansible را ریستارت می کند. این امر ممکن است باعث ایجاد اختلال موقتی در هر برنامه ای که به آن سرور محازی ها متکی است، گردد.

برای ریستارت همه سرور محازی ها در یک گروه webservers  دستور زیر را اجرا کنید :
$ ansible webservers -i inventory -a “/sbin/reboot” –become -K

جمع آوری اطلاعات در مورد گره های از راه دور
ماژول setup  اطلاعات دقیق در مورد سیستمهای از راه دور مدیریت شده توسط Ansible ، که به system facts نیز شناخته میشود را نشان می دهد.
برای به دست آوردن system facts برای server1 ، دستور زیر را اجرا کنید:
$ ansible server1 -i inventory -m setup

این دستور مقدار زیادی از داده های JSON را چاپ می کند که حاوی جزئیاتی درباره محیط سرور محازی از راه دور است. برای اینکه فقط مرتبط ترین اطلاعات چاپ شود، عبارت “gather_subset=min” را به شرح زیر وارد کنید:
$ ansible server1 -i inventory -m setup -a “gather_subset=min”

برای چاپ فقط موارد خاص JSON ، می توانید از آرگومان filter استفاده کنید. که یک الگوی wildcard را میپذیرد که برای مطابقت رشته ها ، مشابه fnmatch ، استفاده میشود. به عنوان مثال ، برای به دست آوردن اطلاعات در مورد هر دو رابط شبکه ipv4 و ipv6 ، می توانید از * ipv * به عنوان فیلتر استفاده کنید:
ansible server1 -i inventory -m setup -a “filter=*ipv*”

Output
server1 | SUCCESS => {
“ansible_facts”: {
“ansible_all_ipv4_addresses”: [
“203.0.113.111”,
“10.0.0.1”
],
“ansible_all_ipv6_addresses”: [
“fe80::a4f5:16ff:fe75:e758”
],
“ansible_default_ipv4”: {
“address”: “203.0.113.111”,
“alias”: “eth0”,
“broadcast”: “203.0.113.111”,
“gateway”: “203.0.113.1”,
“interface”: “eth0”,
“macaddress”: “a6:f5:16:75:e7:58”,
“mtu”: 1500,
“netmask”: “255.255.240.0”,
“network”: “203.0.113.0”,
“type”: “ether”
},
“ansible_default_ipv6”: {}
},
“changed”: false
}

اگر می خواهید میزان استفاده از دیسک را بررسی کنید ، می توانید یک دستور Bash را با استفاده از ابزار df اجرا کنید ، به شرح زیر:
$ ansible all -i inventory -a “df -h”

Output

server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 798M 624K 798M 1% /run
/dev/vda1 155G 2.3G 153G 2% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 798M 0 798M 0% /run/user/0

server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 395M 608K 394M 1% /run
/dev/vda1 78G 2.2G 76G 3% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 395M 0 395M 0% /run/user/0

نتیجه
در این راهنما ، ما نحوه استفاده از دستورات adible ad hoc را برای مدیریت سرور محازی های از راه دور ، از جمله نحوه اجرای کارهای متداول شامل ریستارت یک سرویس یا کپی کردن یک فایل از گره کنترل به سرور محازی های از راه دور که توسط آن قابل کنترل است ، نشان دادیم. همچنین نحوه جمع آوری اطلاعات از گره های از راه دور با استفاده از پارامترهای محدود کننده و فیلتر را مشاهده کردیم.
به عنوان یک منبع اضافی ، می توانید مستندات رسمی Ansible را در مورد دستورات ad hoc بررسی کنید.

 

نحوه استفاده از Traefik به عنوان پروکسی معکوس برای کانتینرهای Docker در اوبونتو 20.04

نحوه دانلود فایل ها با cURL

نحوه نصب و ایمن سازی Redis در Centos7

چگونه می توان محیط JupyterLab را در اوبونتو 18.04 تنظیم کرد

نحوه نصب Webmin در Ubuntu 20.04

نحوه بازنویسی آدرس های اینترنتی با mod_rewrite برای Apache در اوبونتو 20.04

نحوه مدیریت چندین سرور با دستورات Ad Hoc Ansible

چگونه می توان REST API را با Prisma و PostgreSQL ساخت

نحوه میزبانی وب سایت با استفاده از Cloudflare و Nginx در اوبونتو 18.04

نحوه استفاده از Traefik به عنوان پروکسی معکوس برای کانتینرهای Docker در Ubuntu 18.04

 

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان – 

 

 


نحوه بازنویسی آدرس های اینترنتی با mod_rewrite برای Apache در او

ماژول mod_rewrite Apache به شما امکان می دهد URL ها را با تمیزتر بازنویسی کنید ، مسیرهای قابل خواندن توسط انسان را به رشته های پرس و جوی متناسب با کد تبدیل کنید. همچنین به شما امکان می دهد URL ها را بر اساس شرایط بازنویسی کنید.

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

در این آموزش ، mod_rewrite  را فعال کرده و از فایلهای .htaccess برای ایجاد یک تغییر مسیر URL اصلی استفاده می کنید ، و سپس چند مورد استفاده پیشرفته را پیدا می کنید.

پیش نیازها

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

  • یک سرور مجازی Ubuntu 20.04 که با دنبال کردن راهنمای تنظیم اولیه سرور مجازی Ubuntu 20.04 راه اندازی و شامل یک کاربر sudo غیر ریشه و فایروال تنظیم شده باشد.
  • Apache که با دنبال کردن مرحله 1 نحوه نصب پشته Linux ، Apache ، MySQL ، PHP (LAMP)  در اوبونتو 20.04 نصب شده باشد.

مرحله 1 – فعال کردن  mod_rewrite

برای اینکه Apache بتواند قوانین بازنویسی را درک کند ، ابتدا باید mod_rewrite را فعال کنیم. قبلاً نصب شده است ، اما در نصب پیش فرض Apache غیرفعال است. برای فعال کردن ماژول از دستور a2enmod استفاده کنید:

·         $ sudo a2enmod rewrite·

با این کار ماژول فعال می شود یا به شما هشدار می دهد که ماژول از قبل فعال شده است. برای اجرای این تغییرات ، Apache  را مجدداً راه اندازی کنید.

·         $ sudo systemctl restart apache2·

اکنون mod_rewrite کاملاً فعال است. در مرحله بعدی، یک فایل .htaccess را برای تعریف قوانین بازنویسی برای تغییر مسیرها تنظیم خواهیم کرد.

مرحله 2 – تنظیم  .htaccess

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

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

با این حال ، در این مثال ساده ، افزایش عملکرد ناچیز خواهد بود. علاوه بر این ، تنظیم قوانین در .htaccess مناسب است ، به خصوص با چندین وب سایت در همان سرور مجازی. برای اجرای تغییرات نیازی به راه اندازی مجدد سرور مجازی نیست و نیازی به امتیازات اصلی برای ویرایش آن قوانین ، ساده سازی تعمیر و نگهداری و ایجاد تغییرات با یک حساب غیر شخصی نیست. برخی از نرم افزارهای منبع باز منبع آزاد ، مانند WordPress و Joomla ، اغلب برای تغییر و ایجاد قوانین اضافی در صورت تقاضا به یک فایل .htaccess متکی هستند.

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

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

·         $ sudo nano /etc/apache2/sites-available/000-default.conf·

در داخل آن فایل ، بلوک <VirtualHost *: 80> را که از خط اول شروع می شود ، پیدا خواهید کرد. در داخل آن بلوک ، بلوک جدید زیر را اضافه کنید تا فایل پیکربندی شما مانند زیر باشد. اطمینان حاصل کنید که همه بلوک ها به درستی قرار گرفته اند.

/etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>

<Directory /var/www/html>

Options Indexes FollowSymLinks

AllowOverride All

Require all granted

</Directory>

 

. . .

</VirtualHost>

 

فایل را ذخیره کنید و ببندید. برای اجرای این تغییرات ، Apache را مجدداً راه اندازی کنید.

·         $ sudo systemctl restart apache2·

اکنون ، یک فایل .htaccess را در webroot ایجاد کنید.

·         $ sudo nano /var/www/html/.htaccess·

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

/var/www/html/.htaccess

RewriteEngine on

 

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

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

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

در اینجا ، یک بازنویسی URL اصلی را تنظیم می کنیم که URL های زیبا را به مسیرهای واقعی به صفحات تبدیل می کند. به طور خاص ، به کاربران این امکان را می دهیم که به http: // your_server_ip / about دسترسی پیدا کنند ، اما صفحه ای به نام about.html را نمایش می دهند.

با ایجاد فایلی به نام about.html در webroot شروع کنید.

·         $ sudo nano /var/www/html/about.html·

کد HTML زیر را در فایل کپی کنید ، سپس آن را ذخیره کرده و ببندید.

/var/www/html/about.html

<html>

<head>

<title>About Us</title>

</head>

<body>

<h1>About Us</h1>

</body>

</html>

 

می توانید به این صفحه به آدرس http: //your_server_ip/about.html دسترسی پیدا کنید ، اما توجه داشته باشید که اگر سعی کنید به http: // your_server_ip / About خود دسترسی پیدا کنید ، خطای 404 Not Found  را مشاهده خواهید کرد. برای دسترسی به صفحه با استفاده از /about ، یک قانون بازنویسی ایجاد خواهیم کرد.

همه RewriteRules از این قالب پیروی می کنند:

General RewriteRule structure

RewriteRule pattern substitution [flags]

 

  • RewriteRule بخشنامه را مشخص می کند.
  • pattern یک عبارت معمولی است که رشته مورد نظر را از URL مطابقت می دهد ، همان چیزی است که بیننده در مرورگر تایپ می کند.
  • substitution مسیر رسیدن به URL واقعی ، یعنی مسیر سرورهای فایل Apache است.
  • flags پارامترهای اختیاری هستند که می توانند نحوه عملکرد قانون را تغییر دهند.

بیایید قانون بازنویسی URL ما را ایجاد کنیم. فایل .htaccess را باز کنید.

·         $ sudo nano /var/www/html/.htaccess·

بعد از اولین خط ، RewriteRule هایلایت شده را اضافه کرده و فایل را ذخیره کنید.

در این حالت ، ^about$ الگو است ، About.html ، substitution است ، و [NC] پرچم است. مثال ما از چند کاراکتر با معنی خاص استفاده می کند:

  • ^ نشان دهنده شروع URL پس از your_server_ip/ است.
  • $ نشانگر پایان URL است.
  • about با رشته “about” جفت میشود
  • html فایل واقعی است که کاربر به آن دسترسی پیدا می کند.
  • [NC] پرچمی است که قضیه را بی حس می کند.

اکنون می توانید به مرورگر خود به http: // your_server_ip / about دسترسی پیدا کنید. در واقع ، با این قانون که در بالا نشان داده شده است ، آدرس های اینترنتی زیر به about.html اشاره می کنند:

  • http: // your_server_ip / about ، به دلیل تعریف قانون.
  • http: // your_server_ip / About ، زیرا این قانون به حروف حساس نیست.
  • http: //your_server_ip/about.html ، زیرا نام فایل مناسب اصلی همیشه کار خواهد کرد.

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

http: // your_server_ip / about / ، زیرا این قانون به صراحت بیان می کند که ممکن است بعد از آن چیزی وجود نداشته باشد ، زیرا کاراکتر $ بعد از about ظاهر می شود.

http: // your_server_ip / contact ، زیرا با رشته about  در قانون مطابقت نمی دهد.

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

مثال 1 – ساده سازی رشته های جستار با  RewriteRule

برنامه های وب اغلب از رشته های جستار استفاده می کنند ، که با استفاده از علامت سؤال (؟) بعد از آدرس به URL اضافه می شوند. پارامترهای جداگانه با استفاده از چ (&) محدود می شوند. رشته های جستار ممکن است برای انتقال داده های اضافی بین صفحات برنامه فردی استفاده شود.

به عنوان مثال ، یک صفحه نتیجه جستجو که به زبان PHP نوشته شده است ممکن است از URL مانند http://example.com/results.php؟item=shirt&season=summer استفاده کند. در این مثال ، دو پارامتر اضافی به اسکریپت برنامه result.php موهومی منتقل می شود: item ، با متغیر shirt ، و مقدار summer. برنامه ممکن است از اطلاعات رشته پرس و جو برای ایجاد صفحه مناسب برای بازدید کننده استفاده کند.

قوانین بازنویسی Apache اغلب برای ساده کردن پیوندهای طولانی و ناخوشایند مانند موارد فوق در URL های دوستانه که تایپ و تفسیر بصری آسان تر است ، به کار می روند. در این مثال ، ما می خواهیم لینک بالا را ساده کنید تا به http://example.com/shirt/summer تبدیل شوید. پارامتر shirt  و summer  هنوز در آدرس هستند اما بدون نام رشته و نام اسکریپت.

در اینجا یک قانون برای اجرای این وجود دارد:

Simple substitution

RewriteRule ^shirt/summer$ results.php?item=shirt&season=summer [QSA]

 

shirt/summer به طور واضح در آدرس درخواستی مطابقت دارد و به Apache گفته می شود که به جای آن ، results.php?item=shirt&season=summer را ارائه دهد.

پرچم های [QSA] معمولاً در قوانین بازنویسی استفاده می شوند. آنها به Apache می گویند هر رشته درخواست اضافی را در URL ارائه شده اضافه کند ، بنابراین اگر بازدید کننده http://example.com/shirt/summer?page=2  را تایپ کند، سرور مجازی

با results.php?item=shirt&season=summer&page=2 پاسخ خواهد داد. بدون آن ، رشته پرس و جو اضافی حذف می شود.

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

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

Simple substitution

RewriteRule ^([A-Za-z0-9]+)/(summer|winter|fall|spring) results.php?item=$1&season=$2 [QSA]

 

اولین گروه عبارت معمول در پرانتز با رشته ای حاوی کاراکترهای الفبا و اعداد مانند shirt  یا pants  مطابقت دارد و قطعه را به عنوان متغیر $ 1 ذخیره می کند. دومین گروه عبارت معمول در پرانتز دقیقاً با summer, winter, fall, یا  spring مطابقت دارد و به همین ترتیب قطعه را به عنوان $2 ذخیره می کند.

قطعات همسان پس از آن به جای shirt  و summer  که قبلاً از آنها استفاده می کردیم در URL نتیجه در متغیرهای item  و season  استفاده می شوند.

موارد فوق ، به عنوان مثال ، http://example.com/pants/summer را به http://example.com/results.php؟item=pants&season=summer تبدیل می کند. این مثال همچنین اثبات آینده است ، و به چندین item  و season  اجازه می دهد تا با استفاده از یک قانون واحد به طور صحیح بازنویسی شوند.

مثال 2 – اضافه کردن شرایط با منطق با استفاده از RewriteConds

بازنویسی قوانین الزاماً همیشه یک به یک و بدون محدودیت ارزیابی نمی شوند. دستورالعمل RewriteCond به ما امکان می دهد تا شرایط را برای بازنویسی خود اضافه کنیم تا هنگام پردازش قوانین ، کنترل کنیم. کلیه RewriteConds با فرمت زیر عمل می کند:

General RewriteCond structure

RewriteCond TestString Condition [Flags]

 

  • RewriteCond بخشنامه RewriteCond را مشخص می کند.
  • TestString رشته ای است که باید در برابر آن آزمایش کنید.
  • Condition الگو یا شرط مطابقت است.
  • Flags پارامترهای اختیاری هستند که ممکن است شرایط و قوانین ارزیابی را تغییر دهند.

اگر RewriteCond درست ارزیابی شود ، RewriteRule  بلافاصله در نظر گرفته می شود. در صورت عدم موفقیت ، این قانون منتفی می شود. RewriteCond  چندگانه ممکن است یکی پس از دیگری مورد استفاده قرار گیرد و با رفتار پیش فرض ، همه باید درست ارزیابی کنند تا قاعده زیر در نظر گرفته شود.

به عنوان نمونه ، فرض می کنیم شما می خواهیئ به جای نشان دادن صفحه خطای استاندارد 404 Not Found ، همه درخواست ها را به فایل ها یا دیرکتوریهای غیر موجود در سایت خود به صفحه اصلی برگردانید. این امر می تواند با قوانین زیر انجام شود:

Redirect all requests to non-existent files and directories to home page

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . / [R=301]

 

به این شرح:

%{REQUEST_FILENAME} رشته ای برای بررسی است. در این حالت ، نام فایل درخواستی است ، که یک متغیر سیستمی برای هر درخواست است.

-f  یک وضعیت داخلی است که تأیید می کند که آیا نام درخواست شده در دیسک وجود دارد یا فایل است. ! یک عامل منفی است. ! -f  ترکیبی فقط درصورتی که یک نام مشخص وجود نداشته باشد یا فایل نداشته باشد ، درست ارزیابی می شود.

به طور مشابه ، ! -d  فقط درصورتی که یک نام مشخص وجود نداشته باشد یا یک دیرکتوری نباشد ، درست ارزیابی می شود.

RewriteRule در خط نهایی فقط برای درخواست ها به فایل ها یا دایرکتوری های غیر موجود وارد خواهد شد. خود RewriteRule  بسیار ساده است. نقطه . در این الگو با هر چیزی مطابقت دارد و جایگزینی هر درخواست را به ریشه / وب سایت هدایت می کند.

علاوه بر این ، پرچم [R = 301]  به Apache می گوید یک کد پاسخ HTTP  ، 301 Moved Permanently را به مرورگر بازگرداند ، در نتیجه مرورگر می داند که تغییر مسیر اتفاق افتاده است و صریحاً به جای URL درخواست شده ، ریشه وب سایت را واگذار می کند. و تغییری در نوار آدرس مرورگر اعمال میشود.

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

نتیجه

mod_rewrite  به شما امکان می دهد URL های قابل خواندن توسط انسان را ایجاد کنید. در این آموزش شما از دستورالعمل RewriteRule برای هدایت آدرس های اینترنتی از جمله آدرس ها با رشته های پرس و جو استفاده کرده اید. همچنین با استفاده از دستورالعمل RewriteCond  URL  های هدایت شونده مشروط را نوشتید.

اگر می خواهید در مورد mod_rewrite اطلاعات بیشتری کسب کنید ، به mod_rewrite Introduction و مستندات رسمی Apache  برای mod_rewrite نگاهی بیندازید.

 

نحوه استفاده از Traefik به عنوان پروکسی معکوس برای کانتینرهای Docker در اوبونتو 20.04

نحوه دانلود فایل ها با cURL

نحوه نصب و ایمن سازی Redis در Centos7

چگونه می توان محیط JupyterLab را در اوبونتو 18.04 تنظیم کرد

نحوه نصب Webmin در Ubuntu 20.04

نحوه بازنویسی آدرس های اینترنتی با mod_rewrite برای Apache در اوبونتو 20.04

نحوه مدیریت چندین سرور با دستورات Ad Hoc Ansible

چگونه می توان REST API را با Prisma و PostgreSQL ساخت

نحوه میزبانی وب سایت با استفاده از Cloudflare و Nginx در اوبونتو 18.04

نحوه استفاده از Traefik به عنوان پروکسی معکوس برای کانتینرهای Docker در Ubuntu 18.04

 

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان – 

 

 


نحوه نصب Webmin در Ubuntu 20.04

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

در این آموزش ، Webmin  را بر روی سرور مجازی خود نصب و پیکربندی می کنید و دسترسی به رابط را با داشتن یک گواهی معتبر از Let’s Encrypt  ایمن می کنید. سپس از Webmin برای اضافه کردن حسابهای کاربری جدید استفاده خواهید کرد و کلیه بسته های موجود در داشبورد را روی سرور مجازی خود به روز می کنید.

پیش نیازها

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

  • یک سرور مجازی Ubuntu 20.04. این سرور مجازی باید دارای یک کاربر غیر ریشه با امتیازات sudo و فایروال UFW پیکربندی شده باشد. این کار را با دنبال کردن راهنمای تنظیم اولیه سرور مجازی Ubuntu 20.04 ما انجام دهید.
  • Apache که با دنبال کردن آموزش ما در مورد نحوه نصب وب سرور مجازی Apache در Ubuntu 20.04 نصب شده باشد. اگر این راهنمای پیش نیاز را دنبال می کنید ، حتماً یک هاست مجازی را پیکربندی کنید.
  • نام دامنه کاملاً واجد شرایط (FQDN) ، با یک رکورد A DNS که به آدرس IP سرور مجازی شما اشاره دارد.

مرحله 1 – نصب  Webmin

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

·         $ sudo apt update

سپس باید مخزن Webmin را اضافه کنیم تا بتوانیم Webmin را با استفاده از مدیر بسته خود نصب و به روز کنیم. این کار را با اضافه کردن مخزن به فایل /etc/apt/source.list انجام می دهیم.

فایل را در ویرایشگر مورد نظر خود باز کنید.

·         $ sudo nano /etc/apt/sources.list·

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

/etc/apt/sources.list

. . .

deb http://download.webmin.com/download/repository sarge contrib

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

در مرحله بعد ، کلید Webmin PGP را اضافه خواهید کرد تا سیستم شما به مخزن جدید اعتماد کند. برای انجام این کار، باید بسته gnupg1  را نصب کنید که ابراز GNU برای ارتباط ایمن و ذخیره داده است.

پس از آن، کلید Webmin PGP را با  wget نصب و آن را به لیست کلیدهای سیستم خود اضافه کنید:

  • $ wget -q -O- http://www.webmin.com/jcameron-key.asc | sudo apt-key add

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

·         $ sudo apt update·          ·

سپس Webmin را نصب کنید:

·         $ sudo apt install webmin ·

پس از اتمام نصب ، خروجی زیر ارائه می شود:

Output. . .Webmin install complete. You can now login to https://your_server:10000 as root with your root password, or as any user who can use sudo.·

توجه: اگر ufw را در مرحله پیش شرط نصب کردید ، باید دستور sudo ufw allow 10000را اجرا کنید تا Webmin از طریق فایروال امکان پذیر باشد. برای امنیت بیشتر ، بهتر است فایروال خود را پیکربندی کنید تا فقط از محدوده های خاص IP اجازه دسترسی به این پورت را داشته باشید.

بیایید با افزودن یک گواهی معتبر ، Webmin  را ایمن کنیم.

مرحله 2 – اضافه کردن یک گواهی معتبر با Let’s Encrypt

در حال حاضر Webmin  برای استفاده از HTTPS پیکربندی شده است ، اما از یک گواهی نامه امضاء نشده و غیرقابل اعتماد استفاده می کند. بیایید آن را با یک گواهی معتبر از Let’s Encrypt جایگزین کنیم.

به https: // your_domain: 9000 در مرورگر وب خود بروید و your_domain را با نام دامنه خود به آدرس IP سرور مجازی خود جایگزین کنید.

توجه: هنگام ورود به سیستم برای اولین بار ، یک اخطار “Invalid SSL” مشاهده خواهید کرد. این اخطار ممکن است بسته به مرورگر شما متفاوت باشد اما دلیل آن این است که سرور مجازی یک گواهی self-signed ایجاد کرده است. امکان استثناء  را بدهید و به دامنه خود بروید تا بتوانید گواهی خود امضا شده را با یک گواهی Let’s Encrypt جایگزین کنید.

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

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

Webmin در Ubuntu 20.04شما را به صفحه Hostname and DNS Client میبرد. فیلد Hostname  را پیدا کنید و نام دامنه کاملاً واجد شرایط خود را وارد این قسمت کنید. سپس بر روی دکمه ذخیره در پایین صفحه کلیک کنید تا تنظیمات اعمال شود.

پس از تنظیم نام میزبان خود ، بر روی منوی کشویی Webmin در نوار پیمایش سمت چپ کلیک کنید و سپس بر روی Webmin Configuration  کلیک کنید.

از صفحه پیکربندی Webmin   ، SSL Encryption  را از لیست آیکون ها انتخاب کنید ، و سپس روی سربرگ Let’s Encrypt کلیک کنید. صفحه نمایشی مانند شکل زیر را مشاهده خواهید کرد:

Webmin در Ubuntu 20.04

در این صفحه ، به Webmin  می گویید که چگونه گواهینامه شما را دریافت و تمدید کند. گواهینامه های رمزگذاری شده پس از 3 ماه منقضی میشوند ، اما می توانید به Webmin  دستور دهید که بطور خودکار سعی کند هر ماه مجوز Let’s Encrypt  را تمدید نماید. Let’s Encrypt به دنبال یک فایل تأیید بر روی سرور مجازی میباشد ، بنابراین ما Webmin را پیکربندی می کنیم تا فایل تأیید را درون پوشه / var / www / your_domain قرار دهد ، این پوشه ای است که وب سرور مجازی Apache که در پیش نیازها پیکربندی کرده اید از آن استفاده می کند. برای تنظیم گواهینامه خود این مراحل را دنبال کنید:

1-  Hostnames for certificate  را با FQDN خود پر کنید.

2- برای Website root directory for validation file ، دکمه Other Directory را انتخاب کرده و /var/www/htmlرا وارد کنید. با فرض اینکه آموزش پیش نیاز APACHE را دنبال کرده باشید، /var/www/your_domain خواهد بود.

3- برای بخش Months between automatic renewal ، گزینه Only renew manually را با وارد کردن 1 در جعبه ورودی کنسل کنید، و دکمه رادیو را در سمت چپ جعبه ورودی انتخاب کنید.

روی دکمه  Request Certificate کلیک کنید. بعد از چند ثانیه ، صفحه تأیید را مشاهده خواهید کرد.

برای استفاده از گواهینامه جدید ، روی دکمه بازگشت به پیکربندی Webmin   در صفحه تأیید کلیک کنید. از آن صفحه ، به پایین بروید و بر روی دکمه Restart Webmin کلیک کنید. حدود 30 ثانیه صبر کنید و سپس صفحه را مجدد لود کنید و دوباره وارد سیستم شوید. اکنون مرورگر شما باید نشان دهد که گواهی معتبر است.

مرحله 3 – استفاده از  Webmin

اکنون یک نمونه کار ایمن از Webmin تنظیم کرده اید. بیایید نحوه استفاده از آن را بررسی کنیم.

Webmin  ماژول های مختلف زیادی دارد که می تواند همه چیز را از سرور مجازی BIND DNS گرفته تا چیزی به سادگی اضافه کردن کاربران به سیستم را کنترل کند. بیایید به نحوه ایجاد یک کاربر جدید بپردازیم و سپس نحوه به روزرسانی بسته های سیستم خود را با استفاده از Webmin بررسی کنیم.

مدیریت کاربران و گروه ها

ابتدا بر روی منوی System در نوار کناری سمت چپ کلیک کرده و سپس روی لینک Users and Groups کلیک کنید. از اینجا می توانید کاربران و گروه ها را اضافه و مدیریت کنید.

بیایید کاربر جدیدی به نام deploy ایجاد کنیم که می توانید از آن برای میزبانی برنامه های وب استفاده کنید. هنگام ایجاد کاربر ، می توانید گزینه هایی را برای انقضاء رمز عبور ، پوسته کاربر و اینکه آیا مجاز به ورود به دیرکتوری هوم هستند ، تعیین کنید.

برای افزودن کاربر ، روی Create a new user ، که در بالای جدول کاربران قرار دارد ، کلیک کنید. این گزینه صفحه ایجاد کاربر را نمایش می دهد ، در آنجا می توانید نام کاربری ، رمز عبور ، گروه ها و گزینه های دیگر را ایجاد کنید. برای ایجاد کاربر این دستورالعمل ها را دنبال کنید:

1- نام کاربری را با deploy پر کنید.

2- برای شناسه کاربر automatic را انتخاب کنید.

3- real name را با نام توصیفی مانند deployment user پر کنید.

4- برای Home Directory ، Automatic  را انتخاب کنید.

5- برای Shell ، از لیست کشویی گزینه / bin / bash را انتخاب کنید.

6- برای گذرواژه ، Normal Password  را انتخاب کرده و پسورد مورد نظر خود را تایپ کنید.

7- برای primary group ، New group with same name as userرا انتخاب کنید.

8- برای گروه ثانویه ، از لیست همه گروه ها sudo را انتخاب کنید. باید به طور خودکار به لیست In groups اضافه شود ، اما اگر این گزینه نیست ، دکمه -> را فشار دهید تا آن را اضافه کنید.

برای ایجاد کاربر جدید روی create کلیک کنید. کاربرdeploy  را در یک ترتیب کوتاه ایجاد میکند.

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

به روزرسانی بسته ها

Webmin  به شما امکان می دهد همه بسته های خود را از طریق رابط کاربری آن به روز کنید. برای به روزرسانی همه بسته های خود ، ابتدا بر روی دکمه Dashboard در بالای نوار کناری سمت چپ کلیک کرده و سپس قسمت Update Package را پیدا کنید. اگر به روزرسانی وجود داشته باشد ، پیوندی را مشاهده می کنید که تعداد به روزرسانی های موجود را بیان می کند.

برای شروع به روزرسانی ، روی Update selected packages بزنید تا به روز رسانی شروع شود. ممکن است از شما خواسته شود که سرور مجازی را ریبوت کنید ، که می توانید از طریق رابط Webmin نیز این کار را انجام دهید.

نتیجه

اکنون یک نمونه کار ایمن Webmin  دارید و از رابط کاربری برای ایجاد یک کاربر و به روزرسانی بسته ها استفاده کردید. Webmin  به شما امکان دسترسی به موارد زیادی را می دهد که به طور معمول باید از طریق کنسول به آنها دسترسی پیدا کنید ، و آنها را به روشی بصری سازماندهی می کند. به عنوان مثال ، در صورت نصب Apache ، می توانید زبانه پیکربندی آن را در زیر سرور مجازیها ، و سپس Apache پیدا کنید.

رابط را جستجو کنید یا برای یادگیری بیشتر درباره مدیریت سیستم خود با Webmin ، مطالب Official Webmin wiki را مطالعه کنید.

نحوه استفاده از Traefik به عنوان پروکسی معکوس برای کانتینرهای Docker در اوبونتو 20.04

نحوه دانلود فایل ها با cURL

نحوه نصب و ایمن سازی Redis در Centos7

چگونه می توان محیط JupyterLab را در اوبونتو 18.04 تنظیم کرد

نحوه نصب Webmin در Ubuntu 20.04

نحوه بازنویسی آدرس های اینترنتی با mod_rewrite برای Apache در اوبونتو 20.04

نحوه مدیریت چندین سرور با دستورات Ad Hoc Ansible

چگونه می توان REST API را با Prisma و PostgreSQL ساخت

نحوه میزبانی وب سایت با استفاده از Cloudflare و Nginx در اوبونتو 18.04

نحوه استفاده از Traefik به عنوان پروکسی معکوس برای کانتینرهای Docker در Ubuntu 18.04

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –