loading...
سرور مجازی
behnam gol mohamadi بازدید : 51 یکشنبه 05 مرداد 1399 نظرات (0)

Postfix یک عامل انتقال ایمیل (MTA) است ، برنامه ای که برای ارسال و دریافت ایمیل استفاده می شود. می توان آن را پیکربندی کرد تا برای ارسال ایمیل فقط با برنامه محلی استفاده نمود. این در شرایطی مفید است که باید به طور مرتب اعلان های ایمیل را از برنامه های خود ارسال کنید یا صرفا ترافیک خروجی زیادی دارید که ارائه دهنده خدمات ایمیل شخص ثالث اجازه نمی دهد. همچنین ضمن حفظ قابلیت های مورد نیاز ، گزینه جایگزین سبک تری برای اجرای یک سرور مجازی SMTP تمام عیار میباشد.
در این آموزش Postfix را به عنوان سرور مجازی SMTP send-onlyنصب و پیکربندی می کنید. همچنین گواهی TLS رایگان را از Let’s Encrypt برای دامنه خود و رمزگذاری ایمیل های خروجی با استفاده از آنها درخواست میدهید.
پیش نیازها
• یک سرور مجازی Ubuntu 20.04 که طبق راهنمای ستاپ اولیه سرور مجازی با اوبونتو 20.04 تنظیم شده باشد ، شامل ایجاد کاربر sudo غیر ریشه.
• نام دامنه کاملاً ثبت شده. در سراسر این آموزش از your_domain استفاده خواهد شد. می توانید نام دامنه را در Namecheap خریداری کنید ، به صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید.
• رکورد A DNS با your_domain که به آدرس IP عمومی سرور مجازی شما اشاره کند. برای جزئیات بیشتر در مورد چگونگی اضافه کردن آنها می توانید این مقدمه را در DigitalOcean DNS دنبال کنید.
می توانید با تایپ hostname  در خط فرمان ، نام میزبان سرور مجازی را تأیید کنید. خروجی باید با نامی که به دراپلت داده اید مطابقت داشته باشد.
مرحله 1 – نصب Postfix
در این مرحله Postfix را نصب خواهید کرد. سریعترین راه نصب بسته mailutils  است که Postfix را با چند برنامه تکمیلی که برای تست ارسال ایمیل استفاده می کنید ، تنظیم می کند.
ابتدا بانک اطلاعاتی بسته را به روز کنید:
⦁ $ sudo apt update

سپس با اجرای دستور زیر Postfix را نصب کنید:
⦁ $ sudo apt install mailutils

نزدیک پایان مراحل نصب ، پنجره پیکربندی Postfix به شما ارائه می شود:

گزینه پیش فرض Internet Site است. این گزینه پیشنهادی برای مورد استفاده شما است ، بنابراین TAB و سپس ENTER را فشار دهید. اگر فقط متن توضیحات را می بینید ، TAB را فشار دهید تا OK را انتخاب کنید ، سپس ENTER را بزنید.
اگر به صورت خودکار نمایش داده نمی شود ، دستور زیر را اجرا کنید تا آن را شروع کنید:
⦁ $ sudo dpkg-reconfigure postfix

پس از آن ، اعلان پیکربندی دیگری در رابطه با System mail name دریافت می کنید:

System mail name باید به همان نامی باشد که هنگام ایجاد سرور مجازی خود به آن اختصاص داده اید. پس از اتمام ، TAB را فشار دهید ، و ENTER را بزنید.
اکنون Postfix را نصب کرده اید و آماده پیکربندی آن هستید.
مرحله 2 – پیکربندی Postfix
در این مرحله ، Postfix را پیکربندی می کنید تا فقط از سرور مجازی  که در آن کار می کند – یعنی از localhost ، ایمیل بفرستد و دریافت کند.
برای این کار ، Postfix باید به گونه ای پیکربندی شود که فقط به رابط حلقه برگشت گوش دهد ، یعنی رابط شبکه مجازی که سرور مجازی برای برقراری ارتباط داخلی استفاده میکند. برای ایجاد تغییرات ، باید فایل اصلی پیکربندی Postfix به نام main.cf را ​​ویرایش کنید ، که تحت etc / postfix ذخیره شده است.
با استفاده از ویرایشگر متن مورد علاقه خود ، آن را برای ویرایش باز کنید:
⦁ $ sudo nano /etc/postfix/main.cf

سطرهای زیر را پیدا کنید:
/etc/postfix/main.cf
. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
. . .

مقدار تنظیمات inet_interfaces را روی loopback-onlyتنظیم کنید:
/etc/postfix/main.cf
. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
. . .

دستور العمل دیگری که باید اصلاح کنید ، mydestination است که برای مشخص کردن لیست دامنه هایی که از طریق انتقال تحویل ایمیل local_transport ارائه می شوند ، استفاده می گردد. به طور پیش فرض ، مقادیر مشابه این است:
/etc/postfix/main.cf
. . .
mydestination = $myhostname, your_domain, localhost.com, , localhost
. . .

خط را تغییر دهید تا مانند این باشد:
/etc/postfix/main.cf
. . .
mydestination = localhost.$mydomain, localhost, $myhostname
. . .

اگر دامنه شما در واقع یک دامنه فرعی است و می خواهید پیام های ایمیل به گونه ای به نظر برسد که از دامنه اصلی ارسال شده اند ، می توانید خط زیر را به انتهای main.cf اضافه کنید:
/etc/postfix/main.cf

masquerade_domains = your_main_domain

تنظیمات اختیاری maskquerade_domains مشخص می کند که برای کدام دامنه ها، قسمت های فرعی باید در آدرس ایمیل حذف شوند.
وقتی کارتان تمام شد ، فایل را ذخیره کنید و ببندید.
توجه: اگر میزبان چندین دامنه در یک سرور مجازی واحد هستید ، سایر دامنه ها نیز می توانند با استفاده از دستورالعمل mydestination به Postfix منتقل شوند.

سپس با اجرای دستور زیر Postfix را ریستارت کنید:
⦁ $ sudo systemctl restart postfix

Postfix را پیکربندی کرده اید تا فقط از سرور مجازی شما ایمیل ارسال کند. اکنون با ارسال یک پیام نمونه به آدرس ایمیل ، آن را آزمایش خواهید کرد.
مرحله 3 – تست سرور مجازی SMTP
در این مرحله ، تست خواهید کرد که آیا Postfix می تواند با استفاده از دستور mail ، که بخشی از بسته mailutils است که در مرحله اول نصب کرده اید ، ایمیل را به یک حساب ایمیل خارجی ارسال کند.
برای ارسال ایمیل تستی ، دستور زیر را اجرا کنید:
⦁ $ echo “This is the body of the email” | mail -s “This is the subject line” your_email_address

می توانید بدنه و موضوع ایمیل را به دلخواه خود تغییر دهید. به یاد داشته باشید که your_email_address را با آدرس ایمیل معتبری که می توانید به آن دسترسی پیدا کنید ، جایگزین کنید.
اکنون آدرس ایمیلی را که برای این پیام ارسال کرده اید ، بررسی کنید. باید پیام را در صندوق ورودی خود ببینید. اگر در آنجا نباشد ، پوشه اسپم خود را بررسی کنید. در این مرحله ، تمام ایمیل هایی که می فرستید غیرقابل رمزگذاری هستند ، که باعث می شود ارائه دهندگان خدمات فکر کنند که این ایمیل احتمالاً اسپم است. رمزگذاری را بعداً در مرحله 5 انجام خواهید داد.
اگر خطایی از فرمان mail دریافت کرده اید ، یا پس از مدت طولانی پیامی دریافت نکرده اید ، بررسی کنید که پیکربندی Postfix که ویرایش کردید معتبر است و نام سرور مجازی و نام هاست روی دامنه شما تنظیم شده باشند.
توجه داشته باشید که با این پیکربندی ، آدرس در قسمت From برای ایمیلهای آزمایشی که ارسال می کنید به شکل your_user_name @ your_domain خواهد بود ، که your_user_name نام کاربری کاربر سرور مجازی است که دستور را با آن اجرا کردید.
اکنون ایمیلی از سرور مجازی خود ارسال کرده اید و تأیید کرده اید که با موفقیت دریافت شده است. در مرحله بعدی ، فوروارد کردن ایمیل برای root را تنظیم می کنید.
مرحله 4 – سیستم فوروارد ایمیل
در این مرحله ، فوروارد ایمیل را برای کاربر root تنظیم می کنید ، بنابراین پیام های ایجاد شده در سیستم که روی سرور مجازی شما به آن ارسال میشود به یک آدرس ایمیل خارجی فوروارد می شوند.
فایل / etc / aliases شامل لیستی از نام های جایگزین برای گیرندگان ایمیل است. آن را برای ویرایش باز کنید:
⦁ $ sudo nano /etc/aliases

در حالت پیش فرض ، اینگونه خواهد بود:
/etc/aliases
# See man 5 aliases for format
postmaster: root

تنها دستورالعمل حاضر مشخص می کند که ایمیل های تولید شده توسط سیستم به root ارسال می شوند.
خط زیر را به انتهای فایل اضافه کنید:
/etc/aliases

root: your_email_address

با این خط ، مشخص می کنید که ایمیل های ارسالی برای root ارسال می شوند به یک آدرس ایمیل فوروارد شوند. به یاد داشته باشید که your_email_address را با آدرس ایمیل شخصی خود جایگزین کنید. وقتی کارتان تمام شد ، فایل را ذخیره کنید و ببندید.
برای اعمال اثر ، دستور زیر را اجرا کنید:
⦁ $ sudo newaliases

اجرای newaliases ، یک پایگاه داده از نامهای مستعار میسازد که فرمان mail از آن استفاده می کند ، و از فایل پیکربندی که اخیراً ویرایش کرده اید گرفته شده است.
با اجرای دستور زیر ارسال ایمیل به root را آزمایش کنید:
⦁ $ echo “This is the body of the email” | mail -s “This is the subject line” root

باید ایمیل را در آدرس ایمیل خود دریافت کنید. اگر در آنجا نبود ، پوشه اسپم خود را بررسی کنید.
در این مرحله ، پیام های ایجاد شده توسط سیستم را به آدرس ایمیل خود فوروارد کرده اید. اکنون رمزگذاری پیام را فعال خواهید کرد ، به گونه ای که تمام ایمیلهایی که سرور مجازی شما ارسال می کند در برابر دستکاری در انتقال مصون باشند و به صورت قانونی تر بررسی شوند.
مرحله 5 – فعال کردن رمزگذاری SMTP
اکنون با درخواست یک گواهی TLS رایگان از Let’s Encrypt برای دامنه خود (با استفاده از Certbot) و پیکربندی Postfix برای استفاده در هنگام ارسال پیام ، رمزگذاری SMTP را فعال می کنید.
اوبونتو شامل Certbot در مخزن بسته پیش فرض خود میباشد ، اما ممکن است به روز نباشد. در عوض ، با اجرای دستور زیر مخزن رسمی را اضافه خواهید کرد:
⦁ $ sudo apt install certbot


وقتی از شما خواسته شد که تایید کنید ، ENTER را فشار دهید. سپس حافظه نهان پکیج منیجر سرور مجازی خود را به روز کنید:
به عنوان بخشی از ستاپ اولیه سرور مجازی در پیش نیازها ، ufw ، فایروال کامپایل نشده را نصب کردید. برای اجازه دادن به پورت HTTP 80 ، باید آن را پیکربندی کنید ، تا تأیید صحت دامنه انجام شود. دستور زیر را برای فعال کردن آن اجرا کنید:
⦁ $ sudo ufw allow 80

خروجی به شرح زیر خواهد بود:
Output
Rule added
Rule added (v6)

اکنون که پورت باز است ، Certbot را اجرا کنید تا مجوز را دریافت کنید:
⦁ $ sudo certbot certonly –standalone –rsa-key-size 4096 –agree-tos –preferred-challenges http -d your_domain

این دستور به Certbot میگوید گواهینامه هایی با کلید RSA و اندازه4096 بیت ، برای اجرای یک وب سرور مجازی مستقل موقت (–standalone) برای تأیید، و بررسی از طریق پورت 80 (–preferred-challenges http) صادر کند. به یاد داشته باشید که قبل از اجرای دستور ، your_domain را با دامنه خود جایگزین کنید و در صورت درخواست آدرس ایمیل خود را وارد کنید.
خروجی مشابه این خواهد بود:
Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for `your_domain`
Waiting for verification…
Cleaning up challenges

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your_domain/privkey.pem
Your cert will expire on 2020-07-11. 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”
– 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

همانطور که در یادداشت ها نوشته شده ، گواهینامه و فایل کلید خصوصی شما تحت / etc / letsencrypt / live / your_domain ذخیره شده اند.
اکنون که گواهینامه خود را دارید ،main.cf را ​​برای ویرایش باز کنید:
⦁ $ sudo nano /etc/postfix/main.cf

بخش زیر را پیدا کنید:
/etc/postfix/main.cf
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level=may

smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

آن را اصلاح کنید تا اینگونه به نظر برسد، هر جا نیاز بود، your_domain را با دامنه خود جایگزین کنید تا تنظیمات TLS برای Postfix به روز شود:
/etc/postfix/main.cf
# TLS parameters
smtpd_tls_cert_file=/etc/letsencrypt/live/your_domain/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/your_domain/privkey.pem
smtpd_tls_security_level=may

smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

پس از اتمام کار ، فایل را ذخیره کنید و ببندید.
با راه اندازی مجدد Postfix ، تغییرات را اعمال کنید:
⦁ $ sudo systemctl restart postfix

اکنون ، دوباره ایمیل بفرستید:
⦁ $ echo “This is the body of an encrypted email” | mail -s “This is the subject line” your_email_address

سپس ، آدرس ایمیل ارائه شده را بررسی کنید. این امکان وجود دارد که فوراً پیام را در صندوق ورودی خود مشاهده کنید ، زیرا ارائه دهندگان ایمیل احتمالاً پیام های بدون رمزگذاری را به عنوان اسپم علامت گذاری می کنند.
می توانید اطلاعات فنی مربوط به پیام ایمیل را در کلاینت خود بررسی کنید تا ببینید که این پیام در واقع رمزگذاری شده است.
نتیجه
اکنون یک سرور مجازی ایمیل صرفا ارسال کننده دارید ، که با Postfix تقویت می شود. رمزگذاری همه پیام های خروجی اولین قدم درست است تا ارائه دهندگان ایمیل پیام های شما را به صورت اسپم علامت گذاری نکنند. اگر این کار را در یک فرآیند توسعه انجام می دهید ، این اقدام کافی خواهد بود.
اما اگر مورد استفاده شما ارسال ایمیل به کاربران بالقوه سایت است (مانند ایمیل تأیید برای ثبت نام) ، باید به دنبال تنظیم سوابق SPF باشید ، تا ایمیل های سرور مجازیشما با احتمال بیشتری به صورت قانونی در نظر گرفته شوند.

 

برچسب‌ها:

behnam gol mohamadi بازدید : 15 یکشنبه 05 مرداد 1399 نظرات (0)

وردپرس یک فناوری منبع باز بسیار محبوب برای ساخت وب سایت و وبلاگ در اینترنت است. 63٪ کل وب سایتهایی که سیستم مدیریت محتوا (CMS) دارند و 36% از سایت هایی که هم اکنون آنلاین هستند از وردپرس استفاده می کنند.
روشهای مختلف زیادی برای دسترسی به وردپرس وجود دارد و برخی از مراحل تنظیمات پیچیده تر از سایر ستاپ ها هستند. این آموزش برای افرادی در نظر گرفته شده است که مایل به نصب و اجرای یک نمونه وردپرس در یک سرور مجازی ابری مدیریت نشده از طریق خط فرمان هستند. گرچه این روش به مراحل بیشتری نسبت به نصب وردپرس آماده نیاز دارد ، اما به ادمین ها کمک میکند کنترل بیشتری بر محیط وردپرس خود داشته باشند.
بسته به نیاز و اهداف خود ، ممکن است گزینه های دیگری پیدا کنید که مناسب تر باشد. وردپرس به عنوان یک نرم افزار منبع باز ، می تواند به صورت رایگان دانلود و نصب شود ، اما برای در دسترس بودن در وب ، به احتمال زیاد نیاز به خرید زیرساخت های ابری و یک نام دامنه دارید. اگر می خواهید از طریق نصب سمت سرور مجازی و راه اندازی سایت وردپرس کار کنید ، این راهنما را دنبال کنید.
این آموزش با استفاده از پشته LAMP (لینوکس ، Apache ، MySQL و PHP) خواهد بود که یکی از گزینه های معماری سرور مجازی است که با سیستم عامل لینوکس ، سرور مجازی وب Apache ، پایگاه داده MySQL و زبان برنامه نویسی PHP از وردپرس پشتیبانی می کند. وردپرس را از طریق LAMP روی سرور مجازی لینوکس اوبونتو 20.04 نصب و تنظیم خواهیم کرد.
پیش نیازها
برای تکمیل این آموزش ، به سرور مجازی اوبونتو 20.04 نیاز دارید و قبل از شروع این راهنما باید این مراحل را انجام دهید:
• با پیروی از راهنمای تنظیم اولیه سرور مجازی Ubuntu 20.04 سرور مجازی خود را تنظیم کنید و از داشتن کاربر سودو غیر ریشه اطمینان حاصل کنید.
• یک پشته LAMP را با دنبال کردن راهنمای LAMP ما برای نصب و پیکربندی این نرم افزار نصب کنید.
• سایت خود را ایمن کنید: وردپرس ورود کاربر را در نظر می گیرد و داده های کاربر را ذخیره می کند ، بنابراین داشتن یک لایه امنیتی برای آن مهم است. TLS / SSL فناوری است که به شما امکان می دهد ترافیک سایت خود را رمزگذاری کنید تا ارتباط شما و کاربران تان ایمن باشد. در اینجا دو گزینه برای رفع این نیاز در دسترس شماست:
o اگر نام دامنه دارید … می توانید سایت خود را با Let’s Encrypt که دارای گواهی نامه های رایگان و قابل اعتماد است ، ایمن کنید. برای تنظیم این برنامه ، راهنمای رمزگذاری ما را برای Apache دنبال کنید.
o اگر دامنه ندارید … و فقط از این پیکربندی برای آزمایش یا استفاده شخصی استفاده می کنید ، می توانید به جای آن از یک گواهی خود امضا شده استفاده کنید. این همان رمزگذاری را ارائه می دهد اما بدون اعتبار دامنه. برای راه اندازی Apache ، راهنمای SSL خود امضا شده ما را دنبال کنید.
پس از اتمام مراحل راه اندازی ، به عنوان کاربر sudo خود وارد سرور مجازی خود شوید و ادامه دهید.
مرحله 1 – ایجاد یک پایگاه داده MySQL و کاربر برای وردپرس
اولین قدمی که برداریم مرحله مقدماتی است. وردپرس از MySQL برای مدیریت و ذخیره اطلاعات سایت و کاربر استفاده می کند. ما MySQL را قبلاً نصب کرده ایم ، اما برای استفاده از وردپرس باید یک بانک اطلاعاتی و یک کاربر ایجاد کنیم.
برای شروع کار ، با صدور این دستور وارد حساب root (ادمین) MySQL شوید (توجه داشته باشید که این کاربر اصلی سرور مجازی شما نیست):
$ mysql -u root -p
هنگام نصب نرم افزار ، گذرواژه ای که برای حساب ریشه MySQL تعیین کرده اید ، از شما خواسته می شود.
توجه: اگر نمی توانید از طریق root به پایگاه داده MySQL خود دسترسی پیدا کنید ، به عنوان یک کاربر سودو می توانید با ورود به پایگاه داده مانند زیر ، رمز ورود کاربر اصلی خود را به روز کنید:
$ sudo mysql -u root
پس از دریافت اعلان MySQL ، می توانید رمز ورود کاربر root را به روز کنید. در اینجا new_password را با گذرواژه قوی به انتخاب خود جایگزین کنید.
Mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘new_password’;
اکنون می توانید EXIT را تایپ کنید. و می توانید از طریق رمز با دستور زیر وارد پایگاه داده شوید:
$ mysql -u root -p
در داخل بانک اطلاعاتی ، می توانیم یک پایگاه داده اختصاصی برای کنترل وردپرس ایجاد کنیم. شما می توانید این را هر چیزی بنامید ، اما ما در این راهنما از اسم wordpress استفاده خواهیم کرد. دیتابیس را برای وردپرس با تایپ کردن دستور زیر ایجاد کنید:
Mysql> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
توجه: هر عبارت MySQL باید به علامت (؛) ختم شود. اگر به مشکلی برخورد کردید مطمئن شوید که این موضوع رعایت شده است.
در مرحله بعد ، قصد داریم یک حساب کاربری MySQL جداگانه ایجاد کنیم که بطور انحصاری برای کار با بانک اطلاعاتی جدید خود استفاده خواهیم کرد. ایجاد بانکهای اطلاعاتی و حسابهای خاص می تواند ما را از منظر مدیریتی و امنیتی پشتیبانی کند. ما در این راهنما از اسم wordpressuser استفاده خواهیم کرد ، اما به راحتی میتوانید از هر اسمی که میخواهید استفاده کنید.
ما قصد داریم این حساب را ایجاد کنیم ، رمزعبور تنظیم کنیم و به دیتابیس ایجاد شده دسترسی پیدا کنیم. می توانیم با تایپ دستور زیر این کار را انجام دهیم. به یاد داشته باشید یک رمزعبور قوی را برای کاربر پایگاه داده خود در جایی که گذرواژه داریم انتخاب کنید:
Mysql> CREATE USER ‘wordpressuser’@’%’ IDENTIFIED WITH mysql_native_password BY ‘password’;
در مرحله بعد ، به دیتابیس اطلاع دهید که وردپرس ما باید به پایگاه داده ای که تنظیم کرده ایم دسترسی کامل داشته باشد:
Mysql> GRANT ALL ON wordpress.* TO ‘wordpressuser’@’%’;
اکنون یک بانک اطلاعاتی و یک حساب کاربری دارید که هر کدام بطور خاص برای وردپرس ساخته شده اند. باید امتیازات را به گونه‌ای فلاش کنیم که نمونه فعلی MySQL در مورد تغییرات اخیر ما مطلع شود:
Mysql> FLUSH PRIVILEGES;
با تایپ کردن از MySQL خارج شوید:
Mysql> EXIT;
در مرحله بعد ، با دانلود برنامه های افزودنی PHP برای سرور مجازی ، چند پایه را برای افزونه های WordPress قرار خواهیم داد.
مرحله 2 – نصب افزونه های اضافی PHP
هنگام تنظیم پشته LAMP ، فقط به مجموعه ای اندک از افزونه ها نیاز داریم تا بتوانیم PHP را با MySQL مرتبط کنیم. WordPress و بسیاری از افزونه های آن از پسوندهای PHP اضافی استفاده می کنند.
می توانیم با تایپ کردن دستورات زیر، برخی از محبوب ترین افزونه های PHP برای استفاده با وردپرس را دانلود و نصب کنیم:
⦁ $ sudo apt update

⦁ $ sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip

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

برای دانلود این برنامه های افزودنی جدید ، باید apache را ریستارت کنیم ، در قسمت بعدی پیکربندی های بیشتری را روی Apache انجام خواهیم داد ، بنابراین می توانید تا آن زمان صبر کنید ، یا اکنون ریستارت کنید تا مراحل پسوند PHP انجام شود.
$ sudo systemctl restart apache2

مرحله 3 – تنظیم پیکربندی apache برای اجازه جهت لغو و بازنویسی .htaccess
در مرحله بعد ، ما در تنظیمات apache چند تعدیل جزئی انجام خواهیم داد. بر اساس آموزش های پیش نیاز ، باید یک فایل پیکربندی برای سایت خود در دیرکتوری / etc / apache2 / sites-available / داشته باشید.
در این راهنما ، از /etc/apache2/sites-available/wordpress.conf به عنوان نمونه در اینجا استفاده خواهیم کرد ، اما شما باید مسیر فایل پیکربندی خود را هر جا که مناسب باشد جایگزین کنید. علاوه بر این ، ما از / var / www / wordpress به عنوان دیرکتوری اصلی نصب وردپرس استفاده خواهیم کرد. شما باید از ریشه وب مشخص شده در پیکربندی خود استفاده کنید. اگر از آموزش LAMP ما پیروی کرده باشید ، ممکن است در هر دو مورد ، به جای وردپرس ، نام دامنه شما وجود داشته باشد.
توجه: این امکان وجود دارد که شما از پیکربندی پیش فرض 000-default.conf (با / var / www / html به عنوان ریشه وب خود) استفاده کنید. اگر فقط میزبان یک وب سایت در این سرور مجازی هستید ، مناسب خواهد بود. در غیر این صورت ، بهتر است پیکربندی لازم را در بخش های منطقی ، در یک فایل در هر سایت تقسیم کنید.
با شناسایی مسیرهای خود ، می توانیم به سراغ کار با .htaccess برویم تا Apache بتواند تغییرات پیکربندی را بر اساس هر دیرکتوری انجام دهد.
فعال کردن لغو .htaccess
در حال حاضر ، استفاده از فایل های .htaccess غیرفعال است. وردپرس و بسیاری از افزونه های وردپرس از این فایل ها به طور گسترده برای ترفندهای درون دایرکتوری نسبت به رفتار سرور مجازی وب استفاده می کنند.
فایل پیکربندی Apache را برای وب سایت خود با ویرایشگر متن مانند nano باز کنید.
$ sudo nano /etc/apache2/sites-available/wordpress.conf
برای اجازه به فایل های .htaccess ، باید دستورالعمل AllowOverride را در یک بلوک دیرکتوری قرار دهیم که به ریشه سند ما اشاره دارد. مطمئن شوید که از دیرکتوری درست ریشه وب استفاده کنید ، بلوک متن زیر را در داخل بلوک VirtualHost اضافه کنید:
/etc/apache2/sites-available/wordpress.conf
<Directory /var/www/wordpress/>
AllowOverride All
</Directory>

پس از اتمام ، فایل را ذخیره کنید وببندید. در nano ، می توانید این کار را با فشار دادن CTRL و X با هم ، سپس Y ، و ENTER انجام دهید.
فعال کردن ماژول بازنویسی
در مرحله بعد می توانیم mod_rewrite را فعال کنیم تا بتوانیم از ویژگی permalink WordPress استفاده کنیم:
$ sudo a2enmod rewrite
این امر به شما امکان می دهد ، مانند دو مثال زیر ، permalink های خواناتری برای افراد داشته باشید:
http://example.com/2012/post-name/
http://example.com/2012/12/30/post-name
دستور a2enmod اسکریپتی را فراخوانی می کند که ماژول مشخص شده را در پیکربندی Apache فعال می کند.
فعال کردن تغییرات
قبل از اجرای تغییراتی که ایجاد کرده ایم ، با انجام آزمایش زیر بررسی کنید که هیچگونه خطای نحوی مرتکب نشده ایم.
$ sudo apache2ctl configtest
ممکن است خروجی مانند زیر دریافت کنید:
Output
AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message
Syntax OK
اگر می خواهید خط بالا را لغو کنید ، کافی است یک دستورالعمل ServerName را به فایل اصلی (جهانی) پیکربندی آپاچی خود در /etc/apache2/apache2.conf اضافه کنید. نام سرور مجازی می تواند دامنه یا آدرس IP سرور مجازی شما باشد. با این حال این فقط یک پیام است و بر عملکرد سایت شما تأثیر نمی گذارد. تا زمانی که خروجی شامل Syntax OK باشد ، میتوانید ادامه دهید.
برای اجرای تغییرات Apache را ریستارت کنید. حتماً دوباره راه اندازی کنید حتی اگر قبلا در این آموزش ریستارت شده باشد.
$ sudo systemctl restart apache2
در مرحله بعد ، خود وردپرس را دانلود و تنظیم خواهیم کرد.
مرحله 4 – دانلود وردپرس
اکنون که پیکربندی نرم افزار سرور مجازی ما انجام شده است ، می توانیم WordPress را دانلود و تنظیم کنیم. به ویژه به دلایل امنیتی ، همیشه توصیه می شود آخرین نسخه وردپرس را از سایت آنها دریافت کنید.
به یک دیرکتوری قابل نوشتن بروید (یک نسخه موقت مانند / tmp را توصیه می کنیم) و نسخه فشرده شده را دانلود کنید.
⦁ $ cd /tmp

⦁ $ curl -O https://wordpress.org/latest.tar.gz

برای ایجاد ساختار دایرکتوری وردپرس ، فایل فشرده شده را اکسترکت کنید:
$ tar xzvf latest.tar.gz
ما این فایل ها را لحظه به لحظه به ریشه سند منتقل می کنیم. قبل از انجام این کار ، می توانیم یک فایل .htaccess ساختگی را اضافه کنیم تا این مورد در مرحله بعد برای استفاده وردپرس در دسترس باشد.
فایل را با تایپ کردن دستور زیر ایجاد کنید:
$ touch /tmp/wordpress/.htaccess
همچنین فایل پیکربندی نمونه را با نام فایل که WordPress می خواند ، کپی می کنیم:
$ cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
همچنین می توانیم دایرکتوری upgrade را ایجاد کنیم ، به طوری که وردپرس هنگام تلاش برای انجام این کار به تنهایی به دنبال بروزرسانی در نرم افزار خود ، به مشکلات مربوط به مجوزها برخورد نکند:
$ mkdir /tmp/wordpress/wp-content/upgrade
اکنون می توانیم کل محتوای دیرکتوری را در ریشه سند خود کپی کنیم. در انتهای دایرکتوری منبع خود از یک نقطه استفاده می کنیم تا نشان دهد که همه چیزهایی که در این دیرکتوری قرار دارند باید کپی شوند ، از جمله فایل های مخفی (مانند فایل .htaccess که ایجاد کردیم):
$ sudo cp -a /tmp/wordpress/. /var/www/wordpress
اطمینان حاصل کنید که پوشه / var / www / wordpress را با دایرکتوری که در سرور مجازی خود تنظیم کرده اید جایگزین کنید.
مرحله 5 – پیکربندی دایرکتوری وردپرس
قبل از انجام تنظیمات وردپرس مبتنی بر وب ، باید برخی موارد را در دایرکتوری WordPress خود تنظیم کنیم.
تنظیم مالکیت و مجوزها
قدم مهمی که ما باید برداریم ، تنظیم مجوزهای مناسب و مالکیت فایل هاست.
با دادن مالکیت کلیه فایل ها به کاربر و گروه داده های www شروع خواهیم کرد. این کاربری است که وب سرور مجازی Apache به عنوان آن اجرا می شود و Apache برای سرویس دهی به وب سایت و انجام به روز رسانی های خودکار باید بتواند فایل های وردپرس را بخواند و بنویسد.
مالکیت را با دستور chown به روز کنید که به شما امکان می دهد مالکیت فایل را تغییر دهید. حتماً به دیرکتوری مربوطه سرور مجازی خود اشاره کنید.
$ sudo chown -R www-data:www-data /var/www/wordpress
در مرحله بعدی دو دستور find را برای تنظیم مجوزهای صحیح در دایرکتوری ها و فایل های وردپرس اجرا خواهیم کرد:
⦁ $ sudo find /var/www/wordpress/ -type d -exec chmod 750 {} \;

⦁ $ sudo find /var/www/wordpress/ -type f -exec chmod 640 {} \;

این مجوزها باید به شما اجازه دهد به طور مؤثر با وردپرس کار کنید ، اما توجه داشته باشید که برخی از افزونه ها و رویه ها ممکن است نیاز به ترفندهای بیشتری داشته باشند.
تنظیم فایل پیکربندی WordPress
حال باید تغییراتی در فایل اصلی پیکربندی وردپرس ایجاد کنیم.
با باز کردن فایل ، اولین کار ما تنظیم برخی کلیدهای مخفی برای فراهم آوردن سطح امنیتی برای نصب ما خواهد بود. WordPress یک مولد مطمئن برای این مقادیر فراهم می کند تا نیازی به تلاش برای دستیابی به مقادیر مناسب به تنهایی نباشد. اینها فقط در داخل مورد استفاده قرار می گیرند ، بنابراین استفاده از مقادیر پیچیده و ایمن در اینجا مشکلی ایجاد نخواهد کرد.
برای دریافت مقادیر ایمن از مولد کلید مخفی WordPress ، تایپ کنید:
$ curl -s https://api.wordpress.org/secret-key/1.1/salt/
مقادیر منحصر به فردی را که شبیه به خروجی مشابه بلوک زیر است ، به شما باز می گرداند.
هشدار! مهم است که هر بار مقادیر منحصر به فرد را درخواست کنید. مقادیر زیر را کپی نکنید!
Output
define(‘AUTH_KEY’, ‘1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H’);
define(‘SECURE_AUTH_KEY’, ‘E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3’);
define(‘LOGGED_IN_KEY’, ‘W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88’);
define(‘NONCE_KEY’, ‘ll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g’);
define(‘AUTH_SALT’, ‘koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES 07VC*Lj*lD&?3w!BT#-‘);
define(‘SECURE_AUTH_SALT’, ‘p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY’);
define(‘LOGGED_IN_SALT’, ‘i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|’);
define(‘NONCE_SALT’, ‘Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%’);

اینها خطوط پیکربندی هستند که می توانیم مستقیماً در فایل پیکربندی خود پیست کنید تا کلیدهای ایمن را تنظیم کنیم. خروجی را که اکنون دریافت کردید کپی کنید.
سپس ، فایل پیکربندی WordPress را باز کنید:
$ sudo nano /var/www/wordpress/wp-config.php
بخشی را پیدا کنید که حاوی مقادیر مثال برای آن تنظیمات است.
/var/www/wordpress/wp-config.php
. . .

define(‘AUTH_KEY’, ‘put your unique phrase here’);
define(‘SECURE_AUTH_KEY’, ‘put your unique phrase here’);
define(‘LOGGED_IN_KEY’, ‘put your unique phrase here’);
define(‘NONCE_KEY’, ‘put your unique phrase here’);
define(‘AUTH_SALT’, ‘put your unique phrase here’);
define(‘SECURE_AUTH_SALT’, ‘put your unique phrase here’);
define(‘LOGGED_IN_SALT’, ‘put your unique phrase here’);
define(‘NONCE_SALT’, ‘put your unique phrase here’);

. . .

آن سطرها را حذف کرده و مقادیری را که کپی کرده اید از خط فرمان پیست کنید:
/var/www/wordpress/wp-config.php
. . .

define(‘AUTH_KEY’, ‘VALUES COPIED FROM THE COMMAND LINE’);
define(‘SECURE_AUTH_KEY’, ‘VALUES COPIED FROM THE COMMAND LINE’);
define(‘LOGGED_IN_KEY’, ‘VALUES COPIED FROM THE COMMAND LINE’);
define(‘NONCE_KEY’, ‘VALUES COPIED FROM THE COMMAND LINE’);
define(‘AUTH_SALT’, ‘VALUES COPIED FROM THE COMMAND LINE’);
define(‘SECURE_AUTH_SALT’, ‘VALUES COPIED FROM THE COMMAND LINE’);
define(‘LOGGED_IN_SALT’, ‘VALUES COPIED FROM THE COMMAND LINE’);
define(‘NONCE_SALT’, ‘VALUES COPIED FROM THE COMMAND LINE’);

. . .

در مرحله بعد می خواهیم برخی از تنظیمات اتصال دیتابیس را در ابتدای فایل تغییر دهیم. شما باید نام پایگاه داده ، کاربر پایگاه داده و رمز عبور مرتبط با آن را در MySQL تنظیم کنید.
تغییر دیگری که ما باید انجام دهیم این است که روشی را که وردپرس باید برای نوشتن در سیستم فایل ها استفاده کند تنظیم کنیم. از آنجا که به سرور مجازی وب اجازه داده ایم هر جا که لازم است بنویسد، می توانیم صریحاً روش سیستم فایل را روی “مستقیم” تنظیم کنیم. عدم انجام این کار با تنظیمات فعلی ما منجر به درخواست اعتبارات FTP از سوی وردپرس در هنگام انجام برخی اقدامات می شود.
این تنظیمات می تواند در زیر تنظیمات اتصال دیتابیس یا هر جای دیگر فایل اضافه شود:
/var/www/wordpress/wp-config.php
. . .

// ** MySQL settings – You can get this info from your web host ** //
/** The name of the database for WordPress */
define( ‘DB_NAME’, ‘wordpress’ );

/** MySQL database username */
define( ‘DB_USER’, ‘wordpressuser’ );

/** MySQL database password */
define( ‘DB_PASSWORD’, ‘password’ );

/** MySQL hostname */
define( ‘DB_HOST’, ‘localhost’ );

/** Database Charset to use in creating database tables. */
define( ‘DB_CHARSET’, ‘utf8’ );

/** The Database Collate type. Don’t change this if in doubt. */
define( ‘DB_COLLATE’, ” );

. . .

define(‘FS_METHOD’, ‘direct’);

پس از اتمام فایل را ذخیره کنید و ببندید.
مرحله 6 – تکمیل نصب از طریق رابط وب
اکنون که پیکربندی سرور مجازی کامل شد ، می توانیم نصب را از طریق رابط وب انجام دهیم.
در مرورگر وب خود ، به نام دامنه سرور مجازی یا آدرس IP عمومی خود بروید:
https://server_domain_or_IP
زبانی را که می خواهید استفاده کنید انتخاب کنید:

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

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

پس از ورود به سیستم ، به داشبورد مدیریت وردپرس منتقل می شوید:

در این مرحله ، می توانید شروع به طراحی وب سایت وردپرس خود کنید! اگر اولین بار است که از WordPress استفاده می کنید ، کمی در رابط جستجو کنید تا با CMS جدید خود آشنا شوید.
نتیجه
اکنون WordPress نصب شده و آماده استفاده است!
در این مرحله میتوانید کارهای زیر را انجام دهید:
• تنظیمات پرمالینک های خود را برای پست های WordPress انتخاب کنید ، که در Settings > Permalinks یافت میشود.
• یک تم جدید در Appearance > Themes انتخاب کنید.
• در زیر Users > Add New افزونه های جدید را نصب کنید تا عملکرد سایتتان افزایش یابد.
• اگر می خواهید با دیگران همکاری کنید ، میتوانید اکنون کاربران دیگری را نیز تحت Users > Add New اضافه کنید.
می توانید منابع دیگری را به عنوان راه های جایگزین برای نصب وردپرس بیابید ، یاد بگیرید چگونه وردپرس را در توزیع سرور مجازی های مختلف نصب کنید، نصب های وردپرس خود را اتوماتیک کنید و سایت های وردپرس خود را با بررسی کردن برچسب انجمن وردپرس مقایسه کنید.

 

برچسب‌ها:

behnam gol mohamadi بازدید : 14 یکشنبه 05 مرداد 1399 نظرات (0)

Node.js یک محیط زمان اجرای جاواسکریپت منبع باز برای ساخت برنامه های شبکه و سمت سرور مجازی است. این پلتفرم روی لینوکس ، macOS ، FreeBSD و ویندوز اجرا می شود. اگر چه میتوانید برنامه های Node.js را در خط فرمان اجرا کرد اما این آموزش روی چگونگی اجرای آنها به عنوان یک سرویس تمرکز دارد. این بدان معناست که به صورت خودکار در هنگام ریبوت یا خرابی ریستارت می شوند ، و می توانید از آنها در یک محیط تولید استفاده کنید.
در این آموزش ، محیط Node.js آماده تولید را روی یک سرور مجازی Ubuntu 20.04 واحد تنظیم خواهیم کرد. این سرور مجازی برنامه های Node.js را مدیریت می کند که توسط PM2 اداره می شود ، و برای کاربران دسترسی ایمن به برنامه از طریق پروکسی معکوس Nginx را فراهم میکند. سرور مجازی Nginx ، HTTPS را با استفاده از مجوز رایگان Let’s Encrypt ارائه میدهد.
پیش نیازها
این راهنما فرض می کند که موارد زیر را دارید:
• ستاپ سرور مجازی Ubuntu 20.04 ، همانطور که در راهنمای اولیه تنظیم سرور مجازی برای اوبونتو 20.04 شرح داده شده است. شما باید دارای یک کاربر غیر ریشه با امتیازات sudo و یک فایروال فعال باشید.
• نام دامنه که به IP عمومی سرور مجازی شما اشاره کند. در سراسر این آموزش از نام دامنه example.com استفاده می شود.
Nginx نصب شده باشد ، همانطور که در نحوه نصب Nginx در اوبونتو 20.04 آمده است.
• Nginx با SSL با استفاده از گواهی نامه های Let’s Encryptپیکربندی شده باشد. مقاله نحوه ایمن سازی Nginx با Let’s Encrypt در Ubuntu 20.04 روند کار را نشان می دهد.
هنگامی که پیش نیازها را تکمیل کردید ، سرور مجازی خواهید داشت که در صفحه https://example.com/ مکان نمای پیش فرض دامنه شما را ارائه می دهد
مرحله 1 – نصب Node.js
بیایید با نصب آخرین نسخه LTS از Node.js ، با استفاده از بایگانی های بسته NodeSource شروع کنیم.
ابتدا ، برای دسترسی به مطالب آن ، NodeSource PPA را نصب کنید. اطمینان حاصل کنید که در دیرکتوری هوم خود قرار دارید و از curl برای بازیابی اسکریپت نصب جدیدترین نسخه LTS Node.js از بایگانی های آن استفاده کنید.
$ cd ~

$ curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_setup.sh

می توانید محتویات این اسکریپت را با nano یا ویرایشگر متن مورد نظر خود بررسی کنید:
$ nano nodesource_setup.sh

پس از بررسی اسکریپت، آن را با sudo اجرا کنید:
$ sudo bash nodesource_setup.sh

PPA به پیکربندی شما اضافه می شود و حافظه نهان بسته محلی به صورت خودکار به روز می شود. بعد از اجرای اسکریپت راه اندازی از Nodesource ، می توانید بسته Node.js را نصب کنید:
$ sudo apt install nodejs

برای بررسی اینکه کدام نسخه از Node.js را بعد از این مراحل اولیه نصب کرده اید ، تایپ کنید:
$ nodejs -v

Output
v14.4.0
توجه: هنگام نصب از NodeSource PPA ، اجرای Node.js به جای node ، nodejs نامیده می شود.
بسته nodejs شامل باینری های nodejs و npm ، مدیر بسته برای ماژول های Node است ، بنابراین نیازی نیست npm را بطور جداگانه نصب کنید.
npm از یک فایل پیکربندی در دیرکتوری هوم شما برای پیگیری به روزرسانی ها استفاده می کند. اگر اولین بار است که npm را اجرا می کنید. برای تأیید نصب npm و ایجاد فایل پیکربندی ، این دستور را اجرا کنید:
$ npm -v

Output
6.14.5
برای کار کردن برخی از بسته های npm (به عنوان مثال آنهایی که نیاز به کامپایل کد از منبع دارند) ، باید بسته build-essential را نصب کنید:
$ sudo apt install build-essential

اکنون ابزارهای لازم را برای کار با بسته های npm که نیاز به کامپایل کردن کد از منبع دارند ، در اختیار دارید.
با نصب زمان اجرای Node.js ، اجازه دهید به سراغ نوشتن یک برنامه Node.js برویم.
مرحله 2 – ایجاد یک برنامه Node.js
بیایید یک برنامه Hello World بنویسیم که “Hello World” را به هر درخواست HTTP بازگرداند. این برنامه نمونه به شما در تنظیم Node.js کمک می کند. می توانید آن را با برنامه شخصی خود جایگزین کنید – فقط مطمئن شوید که برنامه خود را اصلاح می کنید تا به آدرس های IP و پورت های مناسب گوش دهید.
ابتدا ، یک برنامه نمونه بنام hello.js ایجاد کنیم:
$ cd ~

$ nano hello.js
کد زیر را در فایل وارد کنید:
~/hello.js
const http = require(‘http’);

const hostname = ‘localhost’;
const port = 3000;

const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader(‘Content-Type’, ‘text/plain’);
res.end(‘Hello World!\n’);
});

server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});

فایل را ذخیره کرده و از ویرایشگر خارج شوید.
این برنامه Node.js به آدرس مشخص شده (localhost) و پورت (3000) گوش می دهد و ” Hello World!” را با کد موفقیت 200 HTTPبازمیگرداند. از آنجا که ما در حال گوش دادن به localhost هستیم ، کلاینت های از راه دور قادر به اتصال به برنامه ما نخواهند بود.
برای تست برنامه خود ، تایپ کنید:
$ node hello.js
خروجی زیر را دریافت خواهید کرد:
Output
Server running at http://localhost:3000/

توجه: اجرای یک برنامه Node.js به این روش ، دستورات اضافی را مسدود می کند تا اینکه با فشار دادن CTRL + C ، برنامه از بین برود.
برای تست برنامه ، جلسه پایانی دیگری را روی سرور مجازی خود باز کرده و با curl به localhost وصل کنید:
$ curl http://localhost:3000

اگر خروجی زیر را بدست آورید ، برنامه به درستی کار می کند و آدرس و پورت صحیح را گوش می دهد:
Output
Hello World!

اگر خروجی مورد انتظار را دریافت نکردید ، اطمینان حاصل کنید که برنامه Node.js شما در حال اجرا و تنظیم شده است تا به آدرس و پورت مناسب گوش دهید.
پس از اطمینان از کار کردن ، با فشار دادن CTRL + C ، برنامه را متوقف کنید (اگر قبلاً این کار را نکرده اید).
مرحله 3 – نصب PM2
بیایید PM2 ، مدیر فرآیند برنامه های Node.js را نصب کنیم. PM2 امکان daemonize کردن برنامه ها را فراهم می کند تا آنها به عنوان یک سرویس در پس زمینه اجرا شوند.
برای نصب جدیدترین نسخه PM2 روی سرور مجازی خود از npm استفاده کنید:
$ sudo npm install pm2@latest -g

گزینه -g به npm می گوید که ماژول را به صورت جهانی نصب کند ، تا در سطح سیستم موجود باشد.
بیایید ابتدا از دستور start pm2 برای اجرای برنامه خود ،یعنی hello.js ، در پس زمینه استفاده کنیم:
$ pm2 start hello.js

این دستور همچنین برنامه شما را به لیست فرآیند PM2 اضافه می کند ، که هر بار که صادر می شود، خروجی ارائه میدهد:
Output

[PM2] Spawning PM2 daemon with pm2_home=/home/sammy/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /home/sammy/hello.js in fork_mode (1 instance)
[PM2] Done.
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name │ mode │ ↺ │ status │ cpu │ memory │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0 │ hello │ fork │ 0 │ online │ 0% │ 25.2mb │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴───────

همانطور که گفته شد ، PM2 بطور خودکار نام برنامه (بر اساس نام فایل ، بدون پسوند .js) و شناسه PM2 را اختصاص می دهد. PM2 همچنین اطلاعات دیگری مانند PID روند ، وضعیت فعلی آن و استفاده از حافظه را نگه میدارد.
در صورت خرابی یا توقف برنامه ها ، برنامه هایی که تحت PM2 در حال اجرا هستند به صورت خودکار مجدداً راه اندازی می شوند ، اما می توانیم با استفاده از دستور فرعی startup ، یک برنامه اضافی برای راه اندازی برنامه در هنگام شروع سیستم دریافت کنیم. این دستور فرعی برای ایجاد PM2 و فرآیندهای مدیریت شده آن روی بوت های سرور مجازی ، یک اسکریپت راه اندازی را ایجاد و پیکربندی می کند:
$ pm2 startup systemd

آخرین خط خروجی حاصل شامل دستورالعمل اجرا با امتیازات فوق العاده به منظور تنظیم PM2 برای شروع در زمان بوت است:
Output
[PM2] Init System found: systemd
sammy
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u sammy –hp /home/sammy

دستور را از خروجی اجرا کنید و نام کاربری خود را به جای Sammy قرار دهید:
$ sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u sammy –hp /home/sammy

به عنوان یک مرحله دیگر ، می توانیم لیست فرآیند PM2 و محیط های مربوطه را ذخیره کنیم:
$ pm2 save

اکنون یک واحد سیستمی ایجاد کرده اید که PM2 را برای کاربر خود در بوت اجرا می کند. این نمونه pm2 ، به نوبه خود ، hello.js را اجرا می کند.
سرویس را با systemctl شروع کنید:
$ sudo systemctl start pm2-sammy

اگر در این مرحله با خطایی مواجه شدید ، ممکن است نیاز به راه اندازی مجدد داشته باشید که می توانید با sudo reboot این کار را انجام دهید.
وضعیت واحد سیستمی را بررسی کنید:
$ systemctl status pm2-sammy

برای مرور کلی در مورد systemd ، لطفا مقاله ملزومات سیستمی: کار با سرویس ها ، واحدها و ژورنال را مرور کنید.
علاوه بر مواردی که ما پوشش داده ایم ، PM2 زیرمجموعه های زیادی را فراهم می کند که به شما امکان می دهد اطلاعات مربوط به برنامه های خود را مدیریت و جستجو کنید.
یک برنامه را با این دستور متوقف کنید (نام برنامه یا شناسه PM2 برنامه را مشخص کنید):
$ pm2 stop app_name_or_id

برنامه را ریستارت کنید:
$ pm2 restart app_name_or_id

برنامه هایی را که اکنون توسط PM2 مدیریت می شود لیست کنید:
$ pm2 list

اطلاعات مربوط به یک برنامه خاص را با استفاده از نام برنامه خود دریافت کنید:
$ pm2 info app_name

مانیتور فرآیند PM2 را می توان با دستور فرعی monit به دست آورد. وضعیت برنامه ، CPU و استفاده از حافظه را نشان می دهد:
$ pm2 monit

توجه داشته باشید که اجرای pm2 بدون هیچگونه آرگومان ، صفحه راهنما را نیز با استفاده از مثال نشان می دهد.
اکنون که برنامه Node.js شما توسط PM2 اجرا و مدیریت می شود ، بیایید پروکسی معکوس را تنظیم کنیم.
مرحله 4 – تنظیم Nginx به عنوان یک سرور مجازی پروکسی معکوس
برنامه شما روی localhost اجرا میشود و گوش می کند ، اما باید راهی برای دسترسی کاربران خود تنظیم کنید. ما سرور مجازی وب Nginx را به عنوان یک پروکسی معکوس برای این منظور تنظیم خواهیم کرد.
در آموزش پیش نیاز ، تنظیمات Nginx خود را در فایل /etc/nginx/sites-available/example.com تنظیم می کنید. این فایل را برای ویرایش باز کنید:
$ sudo nano /etc/nginx/sites-available/example.com

در بلوک سرور مجازی ، باید یک بلوک location / موجود را داشته باشید. محتوای آن بلوک را با پیکربندی زیر جایگزین کنید. اگر برنامه شما برای گوش دادن به پورت های مختلف تنظیم شده است ، قسمت هایلایت شده را به شماره درست پروت تغییر دهید:
/etc/nginx/sites-available/example.com
server {

location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}

}

این کار سرور مجازی را تنظیم می کند تا به درخواست های ریشه خود پاسخ دهد. با فرض اینکه سرور مجازی ما در example.com در دسترس باشد ، دسترسی به https://example.com/ از طریق یک مرورگر وب ، درخواست را به hello.js ارسال می کند و با گوش دادن به پورت 3000 در localhost ، به پورت 3000 می رسد.
برای دسترسی به سایر برنامه ها در همان سرور مجازی می توانید بلوک های موقعیت مکانی دیگری را به همان سرور مجازی اضافه کنید. به عنوان مثال ، اگر در پورت 3001 برنامه Node.js دیگری را نیز اجرا می کردید ، می توانید از طریق https://example.com/app2 به این بخش مکان اضافه کنید تا به آن دسترسی داشته باشید:
/etc/nginx/sites-available/example.com — Optional
server {

location /app2 {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}

}

پس از پایان یافتن بلوک های مکان برای برنامه های خود ، فایل را ذخیره کنید و از ویرایشگر خود خارج شوید.
با تایپ دستور زیر مطمئن شوید که هیچ خطای نحوی را وارد نکرده اید:
$ sudo nginx -t

Nginxرا ریستارت کنید:
$ sudo systemctl restart nginx

با فرض اینکه برنامه Node.js شما در حال اجرا است و برنامه شما و تنظیمات Nginx صحیح است ، اکنون باید از طریق پروکسی معکوس Nginx به برنامه خود دسترسی پیدا کنید. با دسترسی به URL سرور مجازی خود (آدرس IP عمومی یا نام دامنه آن) آن را امتحان کنید.
نتیجه
تبریک می گوییم! اکنون برنامه Node.js خود را تحت پروکسی معکوس Nginx روی سرور مجازی Ubuntu 20.04 اجرا میکنید. این تنظیم پروکسی معکوس به اندازه کافی انعطاف پذیر است تا دسترسی کاربران دیگر برنامه ها یا محتوای وب استاتیک را که می خواهید به اشتراک بگذارید ، در اختیار کاربران تان قرار دهد.

 

برچسب‌ها:

behnam gol mohamadi بازدید : 33 پنجشنبه 02 مرداد 1399 نظرات (0)

Let’s Encrypt یک مجوز صدور گواهینامه (CA) است که روشی آسان برای به دست آوردن و نصب مجوزهای رایگان TLS / SSL فراهم می کند ، از این طریق HTTPS رمزگذاری شده را روی سرور مجازی های وب فعال می کند. در واقع با ارائه یک کلاینت نرم افزاری ، یعنی Certbot ، که سعی در خودکارسازی اکثر مراحل لازم دارد ، فرایند را ساده می کند. در حال حاضر ، کل مراحل اخذ و نصب گواهینامه هم در Apache و هم در Nginx کاملا به صورت اتوماتیک انجام می شود.
در این آموزش از Certbot برای دریافت گواهینامه رایگان SSL برای Apache روی Debian 9 استفاده می کنید و گواهی خود را برای تمدید خودکار تنظیم می کنید.
در این آموزش به جای فایل پیکربندی پیش فرض از یک فایل هاست مجازی Apache جداگانه استفاده خواهد شد. توصیه می کنیم برای هر دامنه فایل های جدید میزبان مجازی Apache ایجاد کنید زیرا این امر به جلوگیری از اشتباهات رایج کمک می کند و فایل های پیش فرض را به عنوان پیکربندی برگشت پذیر حفظ می کند.
پیش نیازها
برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید:
• یک سرور مجازی Debian 9 که با دنبال کردن راهنمای ستاپ اولیه سرور مجازی Debian 9 تنظیم شده و شامل یک کاربر غیر root با امتیازات sudo و فایروال باشد.
• نام دامنه کاملاً ثبت شده. در این آموزش ، از example.com استفاده می شود. می توانید نام دامنه را در Namecheap خریداری کنید ، به صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید.
• هر دو فایل DNS زیر که برای سرور مجازی شما تنظیم شده اند. برای انجام این کار ، می توانید دستورالعمل های اضافه کردن دامنه ها و سپس دستورالعمل های ایجاد رکوردهای DNS را دنبال کنید.
o یک رکورد A با example.com که به آدرس IP عمومی سرور مجازی شما اشاره کند.
o یک رکورد A با www.example.com که به آدرس IP عمومی سرور مجازی شما اشاره کند.
• Apache که با دنبال کردن نحوه نصب Apache در Debian 9 نصب شده باشد. مطمئن شوید که یک فایل هاست مجازی برای دامنه خود تنظیم کرده اید. در این آموزش از /etc/apache2/sites-available/example.com.conf به عنوان نمونه استفاده می شود.
مرحله 1 – نصب Certbot
اولین قدم برای استفاده از Let’s Encrypt جهت دریافت گواهینامه SSL ، نصب نرم افزار Certbot در سرور مجازی شماست.
در حال حاضر ، Certbot به طور پیش فرض از مخازن نرم افزار Debian در دسترس نیست. برای دانلود نرم افزار با استفاده از apt ، باید مخازن backport را به فایل Source.list خود اضافه کنید جایی که apt به دنبال منابع بسته میباشد. backport ها بسته هایی از تست دبیان و توزیع های ناپایدار هستند که دوباره کامپایل می شوند بنابراین بدون کتابخانه های جدید در توزیع های دبیان پایدار اجرا می شوند.
برای اضافه کردن مخزن backports ، فایل sources.list را در دیرکتوری / etc / apt / خود باز کنید (یا ایجاد کنید):
$ sudo nano /etc/apt/sources.list

در انتهای فایل خط زیر را اضافه کنید:
/etc/apt/sources.list.d/sources.list
. . .
deb http://ftp.debian.org/debian stretch-backports main

شامل بسته های اصلی می باشد که سازگار با دستورالعمل های نرم افزار رایگان Debian (DFSG) و همچنین مولفه های non-free و contrib هستند که خود یا مطابق DFSG نیستند و یا متعلقاتی در این دسته دارند.
فایل را با زدن CTRL + X ، Y ، سپس enter ، ذخیره کرده و ببندید ، سپس لیست بسته های خود را به روز کنید:
$ sudo apt update

سپس Certbot را با دستور زیر نصب کنید. توجه داشته باشید که گزینه -t به apt میگوید که با جستجوی مخزن backports که اخیراً اضافه کردید به دنبال بسته باشد:
$ sudo apt install python-certbot-apache -t buster-backports

Certbot اکنون آماده استفاده است اما برای اینکه SSL برای Apache پیکربندی شود ، باید تأیید کنیم که Apache به درستی پیکربندی شده است.
مرحله 2 – تنظیم گواهی SSL
Certbot باید بتواند میزبان مجازی صحیح را در پیکربندی Apache شما پیدا کند تا SSL را به صورت خودکار پیکربندی کند. به طور خاص ، این کار را با جستجوی یک دستورالعمل ServerName انجام می دهد که با دامنه ای مطابق است که میخواهید برای آن مجوز بگیرید.
اگر مرحله آموزش میزبان مجازی را در آموزش نصب Apache دنبال کرده باشید ، باید یک بلوک VirtualHost برای دامنه خود در /etc/apache2/sites-available/example.com.conf با دستورالعمل ServerName که قبلاً به طور مناسب تنظیم شده است، داشته باشید.
برای بررسی ، فایل میزبان مجازی را برای دامنه خود با استفاده از nano یا ویرایشگر متن مورد علاقه خود باز کنید:
$ sudo nano /etc/apache2/sites-available/example.com.conf

خط ServerName موجود را پیدا کنید. باید مانند این باشد و نام دامنه شما به جای example.com قرار بگیرد:
/etc/apache2/sites-available/example.com.conf

ServerName example.com;

اگر قبلاً این کار را انجام نداده اید ، دستورالعمل ServerName را به روز کنید تا به نام دامنه شما اشاره کنید. سپس فایل را ذخیره کنید ، از ویرایشگر خود خارج شوید و ترکیب ویرایش های پیکربندی خود را تأیید کنید:
$ sudo apache2ctl configtest

اگر خطایی در دستور وجود نداشته باشد ، این خروجی را مشاهده خواهید کرد:
Output
Syntax OK

اگر خطایی رخ داد ، فایل هاست مجازی را مجدداً باز کنید و هرگونه اشتباه تایپی یا کاراکتر جا افتاده را بررسی کنید. پس از اینکه ترکیب فایل پیکربندی شما صحیح شد ، Apache را مجدد لود کنید تا پیکربندی جدید لود شود:
sudo systemctl reload apache2

Certbot اکنون می تواند بلوک صحیح VirtualHost را پیدا کرده و آن را به روز کند.
در مرحله بعد ، بیایید فایروال را به روز کنیم تا امکان ترافیک HTTPS را بدهیم.
مرحله 3 – اجازه ورود ترافیک HTTPS از طریق فایروال
اگر فایروال ufw را فعال کرده باشید ، همانطور که توسط راهنماهای پیش نیاز توصیه شده است ، برای تنظیم ترافیک HTTPS ، باید تنظیماتی را انجام دهید. خوشبختانه ، وقتی روی Debian نصب شده باشد ، ufw با چند پروفایل بسته بندی می شود که به ساده کردن روند تغییر قوانین فایروال برای ترافیک HTTP و HTTPS کمک می کند.
با تایپ دستور زیر می توانید تنظیم فعلی را مشاهده کنید:
$ sudo ufw status

اگر از مرحله 2 راهنمای ما در مورد چگونگی نصب Apache در Debian 9 استفاده کرده باشید، خروجی دستور اینگونه خواهد بود ، نشان می دهد که فقط ترافیک HTTP به سرور مجازی وب مجاز است:
Output
Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
WWW ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
WWW (v6) ALLOW Anywhere (v6)

برای اجزاه ترافیک HTTPS بیشتر، به پروفایل “WWW Full” مجوز بدهید و بخش اضافی “WWW” را حذف کنید:
$ sudo ufw allow ‘WWW Full’

$ sudo ufw delete allow ‘WWW’

وضعیت شما اکنون باید به این شکل باشد:
$ sudo ufw status

Output
Status: active

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

سپس ، بیایید Certbot را اجرا کنیم و گواهینامه هایمان را دریافت کنیم.
مرحله 4 – اخذ گواهینامه SSL
Certbot روشهای مختلفی برای گرفتن گواهینامه های SSL از طریق افزونه ها ارائه می دهد. افزونه Apache از پیکربندی مجدد Apache و لود مجدد تنظیمات در صورت لزوم مراقبت خواهد کرد. برای استفاده از این افزونه ، دستور زیر را تایپ کنید:
$ sudo certbot –apache -d example.com -d www.example.com

این کار Certbot را با افزونه –apache با استفاده از -d برای مشخص کردن نام هایی که معتبر آن هستند اجرا میکند.
اگر اولین بار است که Certbot را اجرا میکنید ، از شما خواسته می شود که آدرس ایمیل را وارد کنید و با شرایط سرویس ها موافقت کنید. بعد از انجام این کار ، certbot با سرور مجازی Let’S Encrypt ارتباط برقرار می کند ، سپس برای تأیید اینکه دامنه مورد نظر خود را کنترل می کنید ، یک چالش اجرا کنید.
اگر موفقیت آمیز باشد ، certbot از شما می پرسد که چگونه می خواهید تنظیمات HTTPS خود را پیکربندی کنید:
Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
——————————————————————————-
1: No redirect – Make no further changes to the webserver configuration.
2: Redirect – Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.
——————————————————————————-
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):

گزینه خود را انتخاب کنید و سپس ENTER بزنید. پیکربندی به طور خودکار به روز می شود ، و Apache برای انتخاب تنظیمات جدید مجدد لود می شود. certbot با پیغامی همراه خواهد بود که به شما می گوید روند موفقیت آمیز بوده و گواهی نامه های شما در کجا ذخیره شده است:
Output
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 2018-12-04. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the “certonly” option. 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

گواهینامه های شما دانلود ، نصب و لود می شوند. سعی کنید وب سایت خود را با استفاده از https: // مجدد لود کنید و به نشانگر امنیتی مرورگر خود توجه کنید. باید نشان دهد که سایت به طور صحیح ایمن است ، معمولاً با نماد قفل سبز انجام میشود. اگر سرور مجازی خود را با استفاده از SSL Labs Server Test آزمایش کنید ، درجه A دریافت می کند.
بیایید با آزمایش روند تجدید کار را به پایان برسانیم.
مرحله 5 – تأیید تمدید خودکار Certbot
گواهی های Let’s Encrypt فقط برای نود روز اعتبار دارند. این امر برای ترغیب کاربران به اتوماسیون کردن فرایند تجدید گواهینامه میباشد. بسته certbot که نصب کردیم با اضافه کردن یک اسکریپت تجدید به /etc/cron.d از این امر مراقبت می کند. این اسکریپت روزانه دو بار اجرا می شود و به طور خودکار هر مدرکی را که کمتر از سی روز از انقضای آن مانده ، تمدید می کند.
برای آزمایش فرایند تجدید ، می توانید با استفاده از certbot این دستور را اجرا کنید:
$ sudo certbot renew –dry-run

اگر خطایی نمی بینید ، همه تنظیمات انجام شده است. در صورت لزوم ، Certbot گواهی های شما را تمدید کرده و Apache را مجدد لود می کند تا تغییرات را اعمال کند. اگر فرایند تمدید خودکار زمانی از کار نافتد ، Let’s Encrypt پیامی را به ایمیلی که مشخص کرده اید ، ارسال می کند و به شما هشدار می دهید که گواهی شما رو به پایان است.
نتیجه
در این آموزش ، کلاینت let’s Encrypt certbot را نصب کردید ، گواهینامه های SSL را برای دامنه خود دانلود کردید ، Apache را برای استفاده از این گواهینامه ها پیکربندی کرده و تمدید خودکار گواهی نامه را فعال نمودید. اگر سؤال دیگری در مورد استفاده از Certbot دارید ، مراجعه به مطالب مربوطه آنها توصیه میشود.

 

برچسب‌ها:

behnam gol mohamadi بازدید : 14 پنجشنبه 02 مرداد 1399 نظرات (0)

ورودهای سیستم یک جزء بسیار مهم مدیریت سیستمهای لینوکس است. چرا که بینشی ارزشمند از نحوه کار سیستم ها و همچنین نحوه استفاده از آنها ارائه می دهد زیرا علاوه بر خطاها ، اطلاعات عملیاتی مانند رخدادهای امنیتی را ضبط می کنند. پیکربندی استاندارد برای سیستم های لینوکس این است که ورودهای مربوط به آنها را بصورت محلی در همان سیستمی که در آن رخ داده است ذخیره کنیم. این برای سیستم های مستقل کار می کند اما با افزایش تعداد سیستم به سرعت مشکل ایجاد می شود. راه حل مدیریت همه این ورودها ایجاد یک سرور مجازی متمرکز ورود به سیستم است که در آن هر میزبان لینوکس ورودهای خود را در زمان واقعی به یک سرور اختصاصی مدیریت ورودها ارسال می کند.
شیوه متمرکز ورود به سیستم مزایای مختلفی را در مقایسه با ذخیره ورودهای مربوط به هر میزبان ارائه می دهد:
• مقدار فضای دیسک مورد نیاز هر میزبان را برای ذخیره فایل های log کاهش می دهد.
• ورودها را می توان طولانی تر نگه داشت زیرا سرور مجازی اختصاصی ورود با ظرفیت ذخیره سازی بیشتر می تواند پیکربندی شود.
• تجزیه و تحلیل پیشرفته ورود به سیستم می تواند انجام شود که به ورودهای مربوط به چندین سیستم و همچنین منابع محاسبه شده تر از آنچه ممکن است در هاست موجود باشد ، نیاز دارد.
• ادمین های سیستم ها می توانند به دلایل امنیتی به طور مستقیم وارد سیستم خود شوند که ممکن است در شرایط دیگر نتوانند مستقیماً وارد گردند.
در این راهنما ، یک مولفه از مجموعه سیستمی ابزارها را برای وابسته کردن پیامهای ورود از سیستمهای کلاینت به یک سرور مجازی جمع آوری متمرکز پیکربندی می کنید. شما سرور مجازی و کلاینت را تنظیم می كنید تا از گواهینامه های TLS برای رمزگذاری پیام های ورود استفاده كنند زیرا آنها در شبکه های ناامن مانند اینترنت و همچنین برای احراز هویت یكدیگر منتقل می شوند.
پیش نیازها
قبل از شروع این راهنما به موارد زیر نیاز خواهید داشت:
• دو سرور مجازی Ubuntu 20.04.
• یک کاربر غیر ریشه با امتیازات sudo در هر دو سرور مجازی. برای راهنمایی در مورد نحوه انجام این کار ، راهنمای ستاپ اولیه سرور مجازی برای اوبونتو 20.04 را دنبال کنید. همچنین باید همانطور که در راهنمای توضیح داده شده است ، فایروال UFW را در هر دو سرور پیکربندی کنید.
• دو نام هاست که به سرور مجازی های شما اشاره می کنند. یک نام هاست برای سیستم کلاینت است که ورودها را تولید می کند و دیگری برای سرور مجازی جمع آوری ورودها.
این راهنما از دو نام هاست مثال زیر استفاده خواهد کرد:
client.your_domain: سیستم کلاینت که ورودها را تولید می کند.
server.your_domain: سرور مجازی جمع آوری log.
برای شروع این آموزش به کلاینت و سرور مجازی در ترمینال های جداگانه از طریق SSH وارد شوید.
توجه: در سرتاسر این آموزش، بلوکهای دستوری با نام سرور مجازی (کلاینت یا سرور مجازی ) برچسب گذاری می شود که دستور باید روی آن اجرا شود.
مرحله 1 – نصب systemd-journal-remote
در این مرحله بسته systemd-magazine-Remote را بر روی کلاینت و سرور مجازی نصب خواهید کرد. این بسته شامل مؤلفه هایی است که کلاینت و سرور مجازی برای وابسته کردن پیام های ورود به سیستم از آنها استفاده می کنند.
ابتدا ، هم در کلاینت و هم سرور مجازی ، یک بروزرسانی سیستم اجرا کنید تا از وجود بانک اطلاعاتی بسته و سیستم اطمینان حاصل شود:
Client and Server
$ sudo apt update

$ sudo apt upgrade

در مرحله بعد ، بسته systemd-journal-remote را نصب کنید:
Client and Server
$ sudo apt install systemd-journal-remote

در سرور مجازی ، دو مؤلفه سیستمی مورد نیاز خود را برای دریافت پیام های ورود به سیستم با استفاده از دستور زیر فعال و راه اندازی کنید:
Server
$ sudo systemctl enable –now systemd-journal-remote.socket

$ sudo systemctl enable systemd-journal-remote.service

گزینه –now در دستور اول سرویس ها را فوراً شروع می کند. در دستور دوم از آن استفاده نکردید زیرا این سرویس تا زمانی که دارای گواهینامه TLS نباشد ، شروع نمی شود ، که در مرحله بعدی ایجاد خواهید کرد.
روی کلاینت ، مؤلفه ای که از systemd  استفاده می کند را برای ارسال پیام های ورود به سرور مجازی فعال کنید:
Client
$ sudo systemctl enable systemd-journal-upload.service

در مرحله بعد ، روی سرور مجازی ، پورت های 19532 و 80 را در فایروال UFW باز کنید. با این کار سرور مجازی می تواند پیام های ورود به سیستم را از کلاینت دریافت کند. پورت 80 پورتي است كه از certbot براي توليد گواهينامه TLS استفاده خواهد كرد. دستورات زیر، این پورت ها را باز می کنند:
Server
$ sudo ufw allow in 19532/tcp

$ sudo ufw allow in 80/tcp
روی کلاینت ، شما فقط باید پورت 80 را با این دستور باز کنید:
Client
$ sudo ufw allow in 80/tcp

اکنون اجزای مورد نیاز را نصب کرده اید و پیکربندی سیستم پایه را روی کلاینت و سرور مجازی تکمیل کرده اید. قبل از اینکه بتوانید این مؤلفه ها را برای شروع رله پیام های ورود به سیستم پیکربندی کنید ، مجوزهای  Let’s Encrypt TLS را برای کلاینت و سرور مجازی با استفاده از ابزار certbot ثبت می کنید.
مرحله 2 – نصب Certbot و ثبت گواهینامه ها
Let’s Encrypt مجوزی است که مجوزهای TLS رایگان صادر می کند. این گواهینامه ها به رایانه ها اجازه می دهد داده هایی را که بین آنها می فرستند رمزگذاری کنند و هویت یکدیگر را نیز بررسی کنند. این گواهینامه ها همان چیزی هستند که به شما امکان می دهند جستجوی اینترنتی خود را با HTTPS تضمین کنید. از همان گواهینامه ها می توانید توسط هر برنامه دیگری که همان سطح امنیتی را می خواهد استفاده کرد. روند ثبت گواهینامه ها یکسان است و مهم نیست از آنها برای چه چیزی استفاده میشود.
در این مرحله ، ابزار certbot را نصب کرده و از آن برای ثبت گواهینامه ها استفاده می کنید. همچنین به طور خودکار از تمدید گواهینامه ها هنگام انقضا مراقبت خواهد کرد. مراحل ثبت نام در اینجا مشابه کلاینت و سرور مجازی است. شما فقط باید نام میزبان را تغییر دهید تا با میزبانی که در آن فرمان ثبت دارید مطابقت داشته باشید.
ابتدا ، مخزن جهانی Ubuntu را فعال کنید چرا که ابزار جهانی certbot در مخزن جهانی اوبونتو قرار گرفته است . اگر قبلاً مخزن جهانی را فعال کرده باشید ، اجرای این دستورات کاری با سیستم شما نخواهد داشت و اجرای آن بی خطر است:
Client and Server
$ sudo apt install software-properties-common

$ sudo add-apt-repository universe

$ sudo apt update

سپس ، هر دو هاست certbot را نصب کنید:
Client and Server
$ sudo apt install certbot

اکنون certbot را نصب کرده اید ، دستور زیر را برای ثبت گواهینامه ها در کلاینت و سرور مجازی اجرا کنید:
Client and Server
$ sudo certbot certonly –standalone –agree-tos –email sammy@your_domain -d your_domain

گزینه های موجود در این دستور به شرح زیر است:
certonly: گواهی را ثبت میکند و هیچ تغییری در سیستم ایجاد نمیکند.
–standalone: ​​برای تأیید درخواست گواهی از سرور مجازی داخلی certbot استفاده میکند.
–agree-tos: به طور خودکار با شرایط سرویس Let’s Encrypt موافقت می کند
name your_email–: آدرس ایمیلی است که Let’s Encrypt برای اطلاع به شما درمورد انقضا گواهینامه و سایر اطلاعات مهم استفاده می کند.
-d your_domain: نام میزبانی که گواهی نامه برای آن ثبت می شود. باید با سیستمی که شما آن را اجرا می کنید مطابقت داشته باشد.
وقتی این دستور را اجرا کردید از شما سؤال می شود که آیا می خواهید آدرس ایمیل را با Let’s Encrypt به اشتراک بگذارید تا بتوانند به شما خبر و اطلاعات دیگری در مورد کارشان ارسال کنند. انجام این کار اختیاری است ، اگر آدرس ایمیل خود را به اشتراک نگذارید ، ثبت نام گواهینامه همچنان به طور عادی کامل می شود.
پس از اتمام مراحل ثبت گواهینامه ، گواهی و فایل های اصلی را در / etc / letsencrypt / live / your_domain / قرار میگیرد، جایی که your_domain نام هاست شماست که گواهی را برای آن ثبت کرده اید.
در آخر باید یک نسخه از گواهی نامه های Let’s Encrypt’s CA و Let’s Encrypt’s واسطه را دانلود کرده و در همان فایل قرار دهید. journald از این فایل برای تأیید صحت گواهینامه های کلاینت و سرور مجازی هنگام برقراری ارتباط با یکدیگر استفاده می کند.
دستور زیر این دو گواهینامه را از وب سایت Let’s Encrypt دانلود می کند و آنها را در یک فایل واحد با نام letsencrypt-Combined-certs.pem در دیرکتوری هوم کاربر شما قرار می دهد.
برای دانلود گواهینامه ها و ایجاد فایل ترکیبی ، این دستور را روی کلاینت و سرور مجازی اجرا کنید:
Client and Server
$ curl -s https://letsencrypt.org/certs/{isrgrootx1.pem.txt,letsencryptauthorityx3.pem.tx

در مرحله بعد ، این فایل را در دیرکتوری Let’s Encrypt که حاوی گواهینامه ها و کلیدها است ، انتقال دهید:
Client and Server
$ sudo cp ~/letsencrypt-combined-certs.pem /etc/letsencrypt/live/your_domain/

اکنون گواهی ها و کلیدها را ثبت کرده اید. در مرحله بعد ، سرور مجازی جمع آوری ورودها را پیکربندی می کنید تا شروع به گوش دادن و ذخیره پیام های ورود به سیستم از کلاینت کنید.
مرحله 3 – پیکربندی سرور مجازی
در این مرحله ، سرور مجازی را پیکربندی می کنید تا از گواهی و فایلهای کلیدی که در آخرین مرحله تولید کرده اید ، استفاده کند تا بتواند شروع به پذیرش پیام های ورود به سیستم از کلاینت کند.
systemd-journal-remote مؤلفه ای است که به پیام های ورود به سیستم گوش می دهد. فایل پیکربندی خود را در /etc/systemd/journal-remote.conf با یک ویرایشگر متن باز کنید تا پیکربندی آن در سرور مجازی شروع شود:
$ sudo nano /etc/systemd/journal-remote.conf

در مرحله بعد ، تمام خطوط را در قسمت [Remote] لغو کنید و مسیرها را برای اشاره به فایل های TLS که اخیراً ایجاد کرده اید تنظیم کنید:
/etc/systemd/journal-remote.conf
[Remote]
Seal=false
SplitMode=host
ServerKeyFile=/etc/letsencrypt/live/server.your_domain/privkey.pem
ServerCertificateFile=/etc/letsencrypt/live/server.your_domain/fullchain.pem
TrustedCertificateFile=/etc/letsencrypt/live/server.your_domain/letsencrypt-combin

گزینه هایی که در اینجا استفاده کرده اید به این شرح است:
Seal = false: داده های ورود به سیستم را در ژورنال امضا میکند. اگر به امنیت حداکثر نیاز دارید ، این گزینه را فعال کنید؛ در غیر این صورت ، می توانید آن را به صورت false رها کنید.
SplitMode = host: ورود های مربوط به کلاینت از راه دور توسط هاست در /var/log/journal/remote تقسیم می شوند. اگر ترجیح می دهید تمام ورودهای مربوط به یک فایل اضافه شوند ، این را روی SplitMode = false قرار دهید.
ServerKeyFile: فایل کلید خصوصی سرور مجازی.
ServerCertificateFile: فایل گواهی سرور مجازی.
TrustedCertificateFile: فایل حاوی گواهی نامه های Let’s Encrypt CA.
حال باید مجوزها را در دایرکتوری های Let’s Encrypt که حاوی گواهی نامه ها و کلید هستند تغییر دهید تا systemd-journal-remote بتواند آنها را بخواند و از آنها استفاده کند.
ابتدا مجوزها را تغییر دهید تا گواهی و کلید خصوصی قابل خواندن باشد:
$ sudo chmod 0755 /etc/letsencrypt/{live,archive}

$ sudo chmod 0640 /etc/letsencrypt/live/server.your_domain/privkey.pem

در مرحله بعد ، مالکیت گروهی کلید خصوصی را به گروه systemd-journal-remote تغییر دهید:
$ sudo chgrp systemd-journal-remote /etc/letsencrypt/live/server.your_domain/privkey.pem

اکنون می توانید systemd-journal-remote را شروع کنید
$ sudo systemctl start systemd-journal-remote.service

سرور مجازی مجموعه ورود به سیستم شما اکنون در حال اجرا و آماده پذیرش پیام های ورود به سیستم از یک کلاینت است. در مرحله بعد ، کلاینت را پیکربندی می کنید تا ورود ها را به سرور مجازی مجموعه خود منتقل کند.
مرحله 4 – پیکربندی کلاینت
در این مرحله ، مؤلفه ای که پیام ها را به سرور مجازی جمع آوری log مرتبط می کند ، پیکربندی می کنید. به این مؤلفه systemd-magazine-upload گفته می شود.
پیکربندی پیش فرض برای systemd-journal-upload این است که از یک کاربر موقتی استفاده می کند که فقط در حین انجام روند وجود دارد. این امر باعث می شود که systemd-journal-upload بتواند گواهی نامه ها و کلیدهای TLS را پیچیده تر بخواند. برای حل این مشکل شما یک کاربر سیستم جدید با همان نام کاربر موقت که به صورت جایگزین استفاده میشود، ایجاد می کنید.
ابتدا کاربر جدیدی بنام systemd-journal-upload را با دستور adduser زیر در کلاینت ایجاد کنید:
sudo adduser –system –home /run/systemd –no-create-home –disabled-login –group systemd-journal-upload

این گزینه ها در دستور عبارتند از:
–system: کاربر جدید را به عنوان کاربر سیستم ایجاد کنید. به کاربر UID (شناسه کاربر) زیر 1000 را می دهد. شناسه های بزرگتر از 1000 معمولاً به حسابهای کاربری داده می شود که یک انسان برای ورود به سیستم از آنها استفاده می کند.:
–home /run/system: –run/systemd را به عنوان دیرکتوری اصلی این کاربر تنظیم میکند.
–no-create-home : مجموعه دیرکتوری هوم را آنگونه که از قبل موجود است ، ایجاد نمیکند.
–disabled-login: کاربر نمی تواند از طریق SS ، به عنوان مثال SS وارد سرور مجازی شود
–group: گروهی را با همان نام کاربری ایجاد میکند.
سپس ، مجوزها و مالکیت فایل های گواهی نامه رمزگذاری شده را تنظیم کنید:
$ sudo chmod 0755 /etc/letsencrypt/{live,archive}

$ sudo chmod 0640 /etc/letsencrypt/live/client.your_domain/privkey.pem

$ sudo chgrp systemd-journal-upload /etc/letsencrypt/live/client.your_domain/privkey.pem

اکنون پیکربندی مربوط به systemd-journal-upload را که در /etc/systemd/journal-upload.conf است ، ویرایش کنید. این فایل را با ویرایشگر متن باز کنید:
$ sudo systemctl restart systemd-journal-upload.service

این فایل را طوری ویرایش کنید که به شکل زیر باشد:
/etc/systemd/journal-upload.conf
[Upload]
URL=https://server.your_domain:19532
ServerKeyFile=/etc/letsencrypt/live/client.your_domain/privkey.pem
ServerCertificateFile=/etc/letsencrypt/live/client.your_domain/fullchain.pem
TrustedCertificateFile=/etc/letsencrypt/live/client.your_domain/letsencrypt-combined-cer

سرانجام ، سرویس systemd-journal-upload را مجدداً راه اندازی کنید تا از تنظیمات جدید استفاده کند:
$ sudo systemctl restart systemd-journal-upload.service

کلاینت شما اکنون تنظیم و راه اندازی شده است و پیامهای ورود به سیستم را به سرور مجازی جمع آوری ورود ارسال می کند. در مرحله بعد ، بررسی می کنید که ورودها به درستی ارسال و ضبط می شوند.
مرحله 5 – آزمایش کلاینت و سرور مجازی
در این مرحله ، آزمایش خواهید کرد که کلاینت در حال انتقال پیام های ورود به سرور مجازی است و اینکه سرور به طور صحیح آنها را ذخیره می کند.
سرور مجازی جمع آوری ، ورودهای مربوط به کلاینت را در یک دیرکتوری در /var/log/journal/remote/ ذخیره می کند. هنگامی که کلاینت را در انتهای آخرین مرحله ریستارت کردید ، شروع به ارسال پیام های ورود به سیستم می کند ، بنابراین اکنون یک فایل ورود به سیستم در /var/log/journal/remoteوجود دارد. این فایل با نام میزبانی که برای گواهی TLS از آن استفاده کرده اید ، نامگذاری می شود.
از دستور ls برای بررسی وجود فایل ورود کلاینت روی سرور مجازی استفاده کنید:
Server
$ sudo ls -la /var/log/journal/remote/
با این کار محتوای دایرکتوری که فایل ورود را نشان می دهد چاپ می شود:
Output
total 16620
drwxr-xr-x 2 systemd-journal-remote systemd-journal-remote 4096 Jun 30 16:17 .
drwxr-sr-x+ 4 root systemd-journal 4096 Jun 30 15:55 ..
-rw-r—– 1 systemd-journal-remote systemd-journal-remote 8388608 Jul 1 10:46 ‘remote-CN=client.your_domain’

در مرحله بعد ، یک پیام ورود به سیستم را برای کلاینت بنویسید تا بررسی کنید که سرور مجازی همانطور که انتظار دارید پیامهای کلاینت را دریافت می کند. برای ایجاد پیام ورود به سیستم بر روی کلاینت از ابزار logger استفاده خواهید کرد. اگر همه چیز کار می کند systemd-magazine-upload این پیام را به سرور مجازیمنتقل می کند.
روی کلاینت دستور logger زیر را اجرا کنید:
Client
$ sudo logger -p syslog.debug “### TEST MESSAGE from client.your_domain ###”

-p syslog.debug در این دستور امکانات و شدت پیام را تعیین می کند. تنظیم این گزینه در syslog.debug ، مشخص خواهد کرد که این یک پیام آزمایشی است. این دستور پیام ### TEST MESSAGE from client.your_domain ### را از ژورنال کلاینت ضبط می کند ، که سپس systemd-journal-upload به سرور مرتبط می نماید.
در مرحله بعدی ، فایل ژورنال کلاینت را روی سرور بخوانید تا بررسی کنید که پیام های ورود به سیستم از کلاینت دریافت می کنند. این فایل یک فایل ورود binary است بنابراین قادر نخواهید بود آن را با ابزارهایی مانند less بخوانید. در عوض ، فایل را با استفاده از Journalctl با گزینه –file = که به شما امکان می دهد یک فایل ژورنال اختصاصی را مشخص کنید ، بخوانید:
Server
$ sudo journalctl –file=/var/log/journal/remote/remote-CN=client.your_domain.journal

پیام ورود به شرح زیر است:
Test log message
. . .
Jun 29 13:10:09 client root[3576]: ### TEST MESSAGE from client.your_domain ###

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

 

برچسب‌ها:

behnam gol mohamadi بازدید : 35 پنجشنبه 02 مرداد 1399 نظرات (0)

TLS یا “امنیت لایه ای انتقال” – و پیش نیاز آن SSL – پروتکل هایی هستند كه برای پوشش ترافیك عادی در یك بسته بندی رمزگذاری شده مورد استفاده قرار می گیرند. با استفاده از این فناوری ، سرورها می توانند با اطمینان اطلاعاتی را برای کلاینت های خود ارسال کنند بدون اینکه پیام های آنها توسط طرف خارجی رهگیری یا خوانده شود.
در این راهنما نحوه ایجاد و استفاده از گواهی SSL خود امضا شده با وب سرور Apache در Ubuntu 20.04 را به شما نشان خواهیم داد.
توجه: گواهی خود امضا شده ارتباط بین سرور شما و هر کلاینت را رمزگذاری می کند. اما ، به دلیل اینکه توسط هیچ یک از مراجع معتبر گواهی نامه های همراه مرورگرهای وب و سیستم عامل ها امضا نشده است ، کاربران نمی توانند از گواهی نامه برای تأیید هویت سرور شما به طور خودکار استفاده کنند. در نتیجه ، کاربران شما هنگام مراجعه به سایت شما ، یک خطای امنیتی را مشاهده می کنند.
به خاطر این محدودیت ، گواهینامه های خود امضا شده برای محیط تولیدی که به مردم ارائه میشوند، مناسب نیستند. معمولاً برای آزمایش و یا برای تأمین امنیت خدمات غیر مهم که توسط یک کاربر واحد یا گروه کوچکی از کاربران استفاده می شود و می توانند به اعتبار گواهی از طریق کانالهای ارتباطی متناوب اعتماد کنند ، استفاده می شوند.
برای یک راه حل آماده تولیدتر، Let’s Encrypt ، یعنی مجوز رایگان را بررسی کنید. می توانید نحوه دانلود و پیکربندی یک گواهی Let’s Encrypt را در آموزش نحوه تأمین امنیت Apache با Let’s Encrypt در اوبونتو 20.04 بیاموزید.
پیش نیازها
قبل از شروع این آموزش ، به موارد زیر نیاز خواهید داشت:
• دسترسی به یک سرور Ubuntu 20.04 با یک کاربر غیر root و فعال با sudo. راهنمای ستاپ اولیه سرور برای اوبونتو 20.04 می تواند نحوه ایجاد این حساب را به شما نشان دهد.
• همچنین باید Apache را نصب کنید. می توانید Apache را با استفاده از apt نصب کنید. ابتدا شاخص بسته محلی را به روز کنید تا آخرین تغییرات بالادست را منعکس کنید:
$ sudo apt update

سپس بسته apache2 را نصب کنید:
$ sudo apt install apache2

• و در آخر ، اگر فایروال ufw را تنظیم کرده اید ، پورت های http و https را باز کنید:
$ sudo ufw allow “Apache Full”

پس از اتمام این مراحل ، مطمئن شوید که به عنوان کاربر غیر ریشه خود وارد شده اید و آموزش را ادامه دهید.
مرحله 1 – فعال کردن mod_ssl
قبل از استفاده از هرگونه گواهی SSL ، ابتدا باید mod_ssl را فعال کنیم ، یک ماژول Apache که پشتیبانی از رمزگذاری SSL را فراهم می کند.
mod_ssl را با دستور a2enmod فعال کنید:
برای فعال کردن ماژول، Apache را ریستارت کنید:
اکنون ماژول mod_ssl فعال و آماده استفاده است.
مرحله 2 – ایجاد گواهی SSL
اکنون که Apache آماده استفاده از رمزگذاری است ، می توانیم به سراغ تولید یک گواهی SSL جدید برویم. این گواهی اطلاعات اصلی در مورد سایت شما را ذخیره می کند و همراه با یک فایل کلیدی است که به سرور اجازه می دهد تا داده های رمزگذاری شده را به طور ایمن اداره کند.
می توانیم کلید SSL و فایل های گواهی نامه را با دستور opensl بسازیم:
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

پس از وارد کردن فرمان ، به شما اعلان می شود که می توانید اطلاعات مربوط به وب سایت خود را وارد کنید. قبل از اینکه به این موضوع بپردازیم ، بیایید نگاهی به آنچه در فرمان های ما صادر می شود نگاهی بیندازیم:
Opensl: این ابزار خط فرمان برای ایجاد و مدیریت گواهینامه ها ، کلیدها و فایل های OpenSSL است.
req -x509: مشخص می کند که ما می خواهیم از مدیریت درخواست امضای گواهی X.509 (CSR) استفاده کنیم. X.509 یک استاندارد زیرساخت کلید عمومی است که SSL و TLS برای مدیریت کلید و گواهینامه از آن رعایت می کنند.
-nodes: به OpenSSL میگوید که از این گزینه برای تأیید گواهینامه با یک عبارت عبور بگذرد. ما به Apache نیاز داریم تا هنگام راه اندازی سرور ، قادر به خواندن فایل بدون دخالت کاربر باشیم. عبارت عبور از وقوع این امر جلوگیری می کند ، زیرا ما باید پس از هر بار مجدد وارد آن شویم.
-days 365: این گزینه مدت زمانی را که گواهی معتبر در نظر گرفته شود تعیین می کند. ما آن را برای یک سال در اینجا تنظیم کردیم. بسیاری از مرورگرهای مدرن هرگونه گواهی نامه معتبر را برای مدت طولانی تر از یک سال رد می کنند.
-newkey rsa: 2048: مشخص می کند که ما می خواهیم همزمان گواهی جدید و کلید جدیدی تولید کنیم. ما کلید لازم را برای امضای گواهینامه در مرحله قبل ایجاد نکردیم ، بنابراین باید آن را همراه گواهی نامه ایجاد کنیم. بخش rsa: 2048 به آن می گوید که یک کلید RSA تهیه کند که طول آن 2048 بیت باشد.
-keyout: خط به OpenSSL می گوید که فایل کلید خصوصی تولید شده را که ایجاد می کنیم در کجا قرار دهد.
-out: به OpenSSL می گوید گواهی را که ایجاد می کنیم در کجا قرار دهد.
دستورالعمل ها را به طور مناسب پر کنید. مهمترین خط خطی است که Common Name را درخواست می کند. برای دسترسی به سرور یا IP عمومی سرور باید نام میزبان مورد استفاده خود را وارد کنید. مهم است که این قسمت برای دسترسی به سایت به نوار آدرس مرورگر شما وارد شود ، زیرا عدم تطابق خطاهای امنیتی بیشتری ایجاد می کند.
لیست کاملی از اعلان ها چیزی شبیه به این خواهد بود:
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:Example
Locality Name (eg, city) [Default City]:Example
Organization Name (eg, company) [Default Company Ltd]:Example Inc
Organizational Unit Name (eg, section) []:Example Dept
Common Name (eg, your name or your server’s hostname) []:your_domain_or_ip
Email Address []:webmaster@example.com

هر دو فایلی که ایجاد کرده اید در زیرمجموعه های مناسب تحت / etc / ssl قرار می گیرند.
در مرحله بعدی پیکربندی Apache خود را برای استفاده از گواهینامه و کلید جدید به روز خواهیم کرد.
مرحله 3 – پیکربندی Apache برای استفاده از SSL
اکنون که گواهی خود امضا شده و کلید دردسترس داریم، برای استفاده از آنها باید پیکربندی Apache خود را به روز کنیم. در اوبونتو ، می توانید فایل های جدید پیکربندی Apache (باید به .conf ختم شوند) را در / etc / apache2 / sites-available قرار دهید و بار دیگر فرایند Apache را لود یا ریستارت کنید.
برای این آموزش یک فایل پیکربندی حداقلی جدید ایجاد خواهیم کرد. (اگر قبلاً Apache <Virtualhost> را تنظیم کرده اید و فقط لازم است SSL را به آن اضافه کنید ، به احتمال زیاد نیاز دارید که خطوط پیکربندی را که با SSL شروع می شود کپی کنید و پورت VirtualHost را از 80 به 443 تغییر دهید. در مرحله بعدی به پورت 80 خواهیم پرداخت).
یک فایل جدید را در دیرکتوری /etc/apache2/sites-available باز کنید:
$ sudo nano /etc/apache2/sites-available/your_domain_or_ip.conf

در پیکربندی حداقلی VirtualHost زیر پیست کنید:
/etc/apache2/sites-available/your_domain_or_ip.conf
<VirtualHost *:443>
ServerName your_domain_or_ip
DocumentRoot /var/www/your_domain_or_ip

SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
</VirtualHost>

حتماً خط ServerName را به روز کنید تا سرور خود را خطاب کنید. این نام می تواند یک نام هاست ، نام دامنه کامل یا یک آدرس IP باشد. اطمینان حاصل کنید که هر چیزی که انتخاب کردید با Common Nameکه هنگام تهیه گواهی انتخاب کرده اید مطابقت دارد.
خطوط باقیمانده دیرکتوری DocumentRoot  برای ارائه فایل ها را تعیین میکند ، و گزینه های SSL مورد نیاز برای نشان دادن Apache به گواهینامه و کلید تازه ایجاد شده ما را مشخص می کنند.
اکنون بیایید DocumentRoot را ایجاد کنیم و یک فایل HTML را فقط برای اهداف آزمایشی در آن قرار دهیم:
$ sudo mkdir /var/www/your_domain_or_ip

فایل جدید index.html را با ویرایشگر متن خود باز کنید:
$ sudo nano /var/www/your_domain_or_ip/index.html

موارد زیر را در فایل خالی قرار دهید:
/var/www/your_domain_or_ip/index.html
<h1>it worked!</h1>

این یک فایل HTML کامل نیست ، اما مرورگرها سخت نمیگیرند و برای تأیید پیکربندی ما کافی خواهد بود.
$ sudo a2ensite your_domain_or_ip.conf

فایل را ذخیره کنید و ببندید.
در مرحله بعد ، باید فایل پیکربندی را با ابزار a2ensite فعال کنیم:
$ sudo a2ensite your_domain_or_ip.conf

سپس ، خطاهای پیکربندی را آزمایش کنید:
$ sudo apache2ctl configtest

اگر همه چیز موفقیت آمیز باشد ، به خروجی خواهید رسید که اینگونه به نظر می رسد:
Output
AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message
Syntax OK

خط اول پیامی است که به شما می گوید دستورالعمل ServerName در سطح جهانی تنظیم نشده است. اگر می خواهید از این پیام خلاص شوید ، می توانید نام سرور یا آدرس IP سرور خود را در /etc/apache2/apache2.conf تنظیم کنید. این کار اختیاری است زیرا این پیام هیچ ضرری نخواهد داشت.
اگر خروجی شما دارای Syntax OK باشد ، فایل پیکربندی شما هیچگونه خطای نحوی ندارد. ما می توانیم با خیال راحت Apache را لود کنیم تا تغییرات خود را اعمال کنیم:
$ sudo systemctl reload apache2

اکنون سایت خود را در یک مرورگر لود کنید ، حتما در ابتدا از https: // استفاده کنید.
باید خطایی را ببینید. این خطا برای گواهی خود امضا شده طبیعی است! مرورگر به شما هشدار می دهد که نمی تواند هویت سرور را تأیید کند ، زیرا گواهی ما توسط هیچ یک از مراجع گواهی شناخته شده آن امضا نشده است. برای اهداف آزمایشی و استفاده شخصی می تواند خوب باشد. باید بتوانید روی advanced و  more information کلیک کنید و ادامه دهید.
بعد از انجام این کار ، مرورگر شما پیام it worked! را نشان میدهد.
توجه: اگر مرورگر شما به هیچ وجه به سرور وصل نمی شود ، مطمئن شوید که اتصال شما توسط فایروال مسدود نشده است. اگر از ufw استفاده می کنید ، دستورات زیر پورت های 80 و 443 را باز می کنند:
$ sudo ufw allow “Apache Full”

در مرحله بعد یک بخش دیگر VirtualHost را به پیکربندی خود اضافه خواهیم کرد تا درخواستهای HTTP ساده ارائه دهیم و آنها را به HTTPS هدایت کنیم.
مرحله 4 – هدایت HTTP به HTTPS
در حال حاضر ، پیکربندی ما فقط به درخواست های HTTPS در پورت 443 پاسخ خواهد داد. این مسئله از ان جهت خوب است که به پورت 80 نیز پاسخ دهید ، حتی اگر می خواهید همه ترافیک ها را مجبور به رمزگذاری کنید. بیایید یک VirtualHost برای پاسخگویی به این درخواست های رمز گذاری نشده و هدایت آنها به HTTPS تنظیم کنیم.
همان فایل پیکربندی Apache را که در مراحل قبلی شروع کرده ایم باز کنید:
$ sudo nano /etc/apache2/sites-available/your_domain_or_ip.conf

در پایین ، یک بلوک VirtualHost دیگر ایجاد کنید تا با درخواست های در پورت 80 مطابقت داشته باشد. از دستورالعمل ServerName استفاده کنید تا دوباره با نام دامنه یا آدرس IP شما مطابقت داشته باشد. سپس از Redirect برای مطابقت با هر درخواستی استفاده کنید و آنها را به SSL VirtualHost ارسال کنید. مطمئن شوید که اسلش دنباله دار را شامل می شود:
/etc/apache2/sites-available/your_domain_or_ip.conf
<VirtualHost *:80>
ServerName your_domain_or_ip
Redirect / https://your_domain_or_ip/
</VirtualHost>

پس از اتمام ، این فایل را ذخیره کنید و ببندید ، سپس دستور پیکربندی خود را دوباره آزمایش کنید و Apache را مجدد لود کنید:
$ sudo apachectl configtest

$ sudo systemctl reload apache2

می توانید با مراجعه به سایت خود با تایپ http://www در مقابل آدرس ، قابلیت تغییر مسیر جدید را آزمایش کنید. باید به صورت خودکار به https: // هدایت شوید.
نتیجه
اکنون Apache را تنظیم کرده اید تا درخواست های رمزگذاری شده را با استفاده از گواهی SSL خود امضا شده ، و درخواست های HTTP رمزگذاری نشده را به HTTPS هدایت کند.
اگر قصد استفاده از SSL برای یک وب سایت عمومی را دارید ، باید به دنبال خرید نام دامنه باشید و از یک مجوز گسترده گواهی پشتیبانی شده مانند Let’s Encrypt استفاده کنید.
برای کسب اطلاعات بیشتر در مورد استفاده از Let’s Encrypt با Apache ، لطفا نحوه ایمن سازی از Apache با Let’s در اوبونتو 20.04 را بخوانید.

 

برچسب‌ها:

behnam gol mohamadi بازدید : 14 دوشنبه 23 تیر 1399 نظرات (0)

Jupyter Notebook یک برنامه وب منبع باز است که به شما امکان می دهد کد تعاملی ، تجسم سازی ها و سایر موارد را ایجاد و به اشتراک بگذارید. از این ابزار می توان همراه با چندین زبان برنامه نویسی از جمله Python ، Julia ، R ، Haskell و Ruby استفاده کرد. این اغلب برای کار با داده ها ، مدل سازی آماری و یادگیری ماشین مورد استفاده قرار می گیرد.
این آموزش شما را با راه اندازی Jupyter notebook برای اجرا از یک سرور مجازی Ubuntu 18.04 و همچنین نحوه اتصال و استفاده از notebook از یک دستگاه محلی از طریق تونل زنی را نشان می دهد.
Jupyter notebooks (یا فقط ” notebooks “) اسنادی هستند که توسط برنامه Jupyter notebook تهیه شده اند و شامل کد رایانه و عناصر متن غنی (پاراگراف ، معادلات ، ارقام ، لینک ها و …) هستند که به ارائه و به اشتراک گذاری تحقیقات قابل چاپ کمک می کنند.
با پایان این راهنما ، قادر خواهید بود با استفاده از Jupyter notebook که روی یک سرور مجازی از راه دور اجرا می شود ، کد Python 3 را اجرا کنید.
پیش نیازها
برای تکمیل این راهنما ، باید یک نمونه سرور مجازی جدید اوبونتو 18.04 با یک فایروال اساسی و یک کاربر غیر ریشه با امتیازات sudo پیکربندی شده داشته باشید. می توانید یاد بگیرید که چگونه این برنامه را با اجرای آموزش اولیه راه اندازی سرور مجازی ما تنظیم کنید.
مرحله 1 – تنظیم پایتون
برای شروع فرآیند ، متعلقات مورد نیاز محیط برنامه نویسی پایتون را از مخازن اوبونتو نصب خواهیم کرد. اوبونتو 18.04 با پایتون 3.6 از پیش نصب شده است. ما بعداً از pip مدیر بسته Python برای نصب قسمت های اضافی استفاده خواهیم کرد.
ابتدا باید شاخص بسته محلی apt را به روز کنیم و سپس بسته ها را دانلود و نصب کنیم:
⦁ $ sudo apt update

در مرحله بعد ، فایلهای هدر و پایتون را که توسط برخی از متعلقات Jupyter استفاده می شود ، نصب کنید:
⦁ $ sudo apt install python3-pip python3-dev

اکنون می توانیم به تنظیم محیط مجازی Python بپردازیم که در آن Jupyter را نصب خواهیم کرد.
مرحله 2 – یک محیط مجازی Python را برای Jupyter ایجاد کنید
اکنون که پایتون 3 را داریم ، فایل های هدر آن و pip آماده هستند ، می توانیم یک محیط مجازی پایتون ایجاد کنیم تا پروژه های خود را مدیریت کنیم. ما Jupyter را در این محیط مجازی نصب خواهیم کرد.
برای این کار ابتدا به دستور virtualenv نیاز داریم که می توانیم با pip نصب کنیم.
pip را به روز کنید و بسته را با تایپ کردن دستور زیر نصب کنید:
⦁ $ sudo -H pip3 install –upgrade pip

⦁ $ sudo -H pip3 install virtualenv

پرچم -H تضمین می کند که رویکرد امنیتی ، محیط هوم را روی دیرکتوری هوم کاربر هدف تنظیم می کند.
با نصب virtualenv ، می توانیم محیط خود را شکل دهیم. یک دایرکتوری ایجاد کنید که در آن بتوانیم فایل های پروژه خود را نگه داریم. این را my_project_dir می نامیم ، اما شما باید از اسمی استفاده کنید که برایتان معنی دار باشد و روی آن کار می کنید.
در داخل دیرکتوری پروژه ، یک محیط مجازی پایتون ایجاد خواهیم کرد. به منظور استفاده از این آموزش ، آن را my_project_env خواهیم نامید اما شما باید آن را به گونه ای نامگذاری کنید که مربوط به پروژه شما باشد.
⦁ $ mkdir ~/my_project_dir

⦁ $ cd ~/my_project_dir

با این کار دایرکتوری به نام my_project_env در دایرکتوری my_project_dir شما ایجاد می شود. در داخل ، یک نسخه محلی Python و یک نسخه محلی از pip را نصب می کند. ما می توانیم از این روش برای نصب و پیکربندی یک محیط جدا شده Python برای Jupyter استفاده کنیم.
قبل از نصب Jupyter ، باید محیط مجازی را فعال کنیم. می توانید این کار را با تایپ کردن دستور زیر انجام دهید:
⦁ $ source my_project_env/bin/activate

اعلان شما باید تغییر کند تا نشان دهد که اکنون در یک محیط مجازی پایتون فعالیت می کنید. خط فرمان شما اکنون چیزی شبیه به این را خواهد بود: (my_project_env)user@host:~/my_project_dir$
در این مرحله ، شما آماده نصب Jupyter در این محیط مجازی هستید.
مرحله 3 – نصب Jupyter
با فعال بودن محیط مجازی ، Jupyter را با نمونه محلی pip نصب کنید.
توجه: هنگامی که محیط مجازی فعال می شود (هنگامی که اعلان شما پیش از خودmy_project_env را دارد ، به جای pip3 از pip استفاده کنید ، حتی اگر از پایتون 3 استفاده می کنید. کپی محیط مجازی ابزار همیشه بدون در نظر گرفتن نسخه پایتون ، pip نامگذاری میشود.
⦁ $ pip install jupyter

در این مرحله ، شما با موفقیت همه نرم افزارهای مورد نیاز برای اجرای Jupyter را نصب کرده اید. اکنون می توانیم سرور مجازی notebook را شروع کنیم.
مرحله 4 – Jupyter notebook را اجرا کنید
اکنون همه موارد لازم برای اجرای Jupyter notebook را دارید! برای اجرای آن ، دستور زیر را اجرا کنید:
⦁ (my_project_env)Sammy@your_server:~/my_project_dir$ jupyter notebook

یک گزارش از فعالیتهای Jupyter notebook به ترمینال فرستاده و چاپ می شود. هنگامی که Jupyter notebook را اجرا می کنید ، روی یک شماره پورت خاص اجرا می شود. اولین notebook که اجرا می کنید از پورت 8888 استفاده می کند. برای بررسی شماره پورت خاصی که Jupyter Notebook روی آن در حال اجرا است ، به خروجی فرمان مورد استفاده برای شروع آن مراجعه کنید:
Output
[I 21:23:21.198 NotebookApp] Writing notebook server cookie secret to /run/user/1001/jupyter/notebook_cookie_secret
[I 21:23:21.361 NotebookApp] Serving notebooks from local directory: /home/sammy/my_project_dir
[I 21:23:21.361 NotebookApp] The Jupyter Notebook is running at:
[I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72
[I 21:23:21.361 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 21:23:21.361 NotebookApp] No web browser found: could not locate runnable browser.
[C 21:23:21.361 NotebookApp]

Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72

اگر Jupyter notebook را روی یک رایانه محلی اجرا می کنید (نه بر روی سرور مجازی) ، می توانید به URL نمایش داده شده بروید تا به Jupyter Notebook بروید. اگر Jupyter notebook را بر روی یک سرور مجازی اجرا می کنید ، باید همانطور که در بخش بعدی بیان شده است ، با استفاده از تونل سازی SSH به سرور مجازی وصل شوید.
در این مرحله ، می توانید اتصال SSH را باز نگه دارید و Jupyter notebook را در حال اجرا نگه دارید یا می توانید پس از تنظیم تونل سازی SSH ، از برنامه خارج شوید و مجدداً آن را اجرا کنید. بیایید فرآیند Jupyter notebook را متوقف کنیم. بعد از تنظیم تونل سازی SSH دوباره آن را اجرا خواهیم کرد. برای متوقف کردن فرآیند Jupyter Notebook ، CTRL + C را فشار دهید ، Y را تایپ کنید و سپس ENTER را بزنید. خروجی زیر نمایش داده می شود:
Output
[C 21:28:28.512 NotebookApp] Shutdown confirmed
[I 21:28:28.512 NotebookApp] Shutting down 0 kernels

اکنون تونل SSH را تنظیم خواهیم کرد تا بتوانیم به notebook دسترسی پیدا کنیم.
مرحله 5 – با استفاده از تنظیم SSH به سرور مجازی متصل شوید
در این بخش نحوه اتصال به رابط وب Jupyter notebook با استفاده از تونل زنی SSH را نشان خواهیم داد. از آنجا که Jupyter notebook روی پورت خاصی روی سرور مجازی اجرا می شود (مانند: 8888 ،: 8889 و غیره) ، تونل سازی SSH شما را قادر می سازد به صورت ایمن به پورت سرور وصل شوید.
دو بخش زیر نحوه ایجاد یک تونل SSH از 1) مک یا لینوکس یا 2) ویندوز را شرح می دهد. لطفاً برای رایانه محلی خود به بخش فرعی مربوطه مراجعه کنید.
تنظیم SSH با Mac یا Linux
اگر از کامپیوتر محلی Mac یا Linux استفاده می کنید ، مراحل ایجاد یک تونل SSH مشابه استفاده از SSH برای ورود به سرور مجازی راه دور است ، به جز اینکه در فرمان ssh پارامترهای دیگری وجود دارد. در این زیر مجموعه پارامترهای اضافی مورد نیاز در فرمان ssh برای تونل زنی موفقیت آمیز ارائه خواهد شد.
تونل زنی SSH با اجرای دستور SSH زیر در یک پنجره ترمینال محلی جدید قابل انجام است:
⦁ $ ssh -L 8888:localhost:8888 your_server_username@your_server_ip

دستور ssh اتصال SSH را باز می کند ، اما -L مشخص می کند که پورت داده شده در هاست محلی (کلاینت) باید به میزبان و پورت داده شده در سمت از راه دور (سرور مجازی) ارسال شود. این بدان معنی است که هر آنچه در شماره پورت دوم (به عنوان مثال 8888) روی سرور مجازی اجرا می شود ، در اولین شماره پورت (به عنوان مثال 8888) در رایانه محلی شما ظاهر می شود.
به صورت اختیاری پورت 8888 را به یکی از انتخاب های خود تغییر دهید تا از استفاده از پورتی که قبلاً توسط یک فرآیند دیگر استفاده شده است خودداری کنید.
server_username نام کاربری شما (به عنوان مثال Sammy) در سرور مجازی ی است که شما ایجاد کرده اید و your_server_ip آدرس IP سرور مجازی شماست.
به عنوان مثال ، برای نام کاربری sammy و آدرس سرور مجازی 203.0.113.0 ، این دستور عبارت است از:
⦁ $ ssh -L 8888:localhost:8888 sammy@203.0.113.0

اگر بعد از اجرای دستور ssh-L خطایی ظاهر نشد ، می توانید به محیط برنامه نویسی خود بروید و Jupyter notebook را اجرا کنید:
(my_project_env)Sammy@your_server:~/my_project_dir$ notebook
خروجی را با URL دریافت خواهید کرد. از یک مرورگر وب در دستگاه محلی خود ، رابط وب Jupyter Notebook را با URL که با http: // localhost: 8888 شروع می شود ، باز کنید. اطمینان حاصل کنید که شماره توکن (token) درج شده است ، یا وقتی در http: // localhost: 8888 از شما خواسته شد رشته شماره توکن را وارد کنید.
تونل زنی SSH با ویندوز و Putty
اگر از ویندوز استفاده می کنید ، می توانید با استفاده از Putty یک تونل SSH ایجاد کنید.
همانطور که نشان داده شده است ابتدا آدرس سرور مجازی یا آدرس IP را به عنوان نام میزبان وارد کنید:

سپس ، برای بازکردن منو ، روی SSH در پایین صفحه سمت چپ کلیک کرده و سپس روی Tunnels کلیک کنید. برای دسترسی به Jupyter در دستگاه محلی خود ، شماره پورت محلی را که می خواهید استفاده کنید وارد کنید. 8000 یا بیشتر را انتخاب کنید تا از پورت های استفاده شده توسط سایر سرویس ها استفاده نکنید ، و مقصد را localhost:8888 تعیین کنید که 8888 تعداد پورتی است که Jupyter notebook در آن کار می کند.
اکنون روی دکمه Add کلیک کنید و پورت ها باید در لیست Forwarded ports ظاهر شوند:

در آخر ، بر روی دکمه Open کلیک کنید تا از طریق SSH به سرور مجازی وصل شوید و پورت های مورد نظر را تونل بزنید. برای اتصال به Jupyter notebook که روی سرور مجازی اجرا می شود ، به http: // localhost: 8000 (یا هر پورتی که انتخاب کردید) در یک مرورگر وب بروید. اطمینان حاصل کنید که شماره توکن درج شده است ، یا وقتی در http: // localhost: 8000 از شما خواسته شده است رشته شماره توکن را وارد کنید.
مرحله 6 – استفاده از Jupyter notebook
در این بخش به اصول استفاده از Jupyter notebook می پردازیم. اگر در حال حاضر Jupyter notebook را اجرا نمی کنید ، آن را با دستور Jupyter notebook شروع کنید.
اکنون باید با استفاده از یک مرورگر وب به آن متصل شوید. Jupyter notebook ابزاری بسیار قدرتمند با ویژگی های بسیار است. در این بخش چند ویژگی اساسی برای تشریح شما در استفاده از notebook ارائه شده است. Jupyter notebook تمام فایل ها و پوشه های موجود در دایرکتوری را که از آن استفاده می شود نشان می دهد ، بنابراین وقتی در حال کار روی یک پروژه هستید ، حتماً آن را از دیرکتوری پروژه شروع کنید.
برای ایجاد یک فایل notebook جدید ، از منوی کشویی بالا سمت راست New > Python 3 را انتخاب کنید:

یک notebook را باز می کند. اکنون می توانیم کد پایتون را در سلول اجرا کنیم یا سلول را به markdown تغییر دهیم. به عنوان مثال ، با کلیک کردن بر روی Cell> Cell Type> Markdown از نوار پیمایش بالا ، اولین سلول را برای پذیرش Markdown تغییر دهید. اکنون می توانیم با استفاده از Markdown یادداشت هایی بنویسیم و حتی معادلات را با قرار دادن آنها بین نمادهای $ $ در LaTeX بگنجانیم. به عنوان مثال ، پس از تغییر آن به نشانه گذاری ، موارد زیر را در سلول تایپ کنید:
# First Equation

Let us now implement the following equation:
$$ y = x^2$$

where $x = 2$

برای تبدیل علامت گذاری به متن غنی ، کلیدهای CTRL و ENTER را فشار دهید. باید خروجی مشابه زیر دریافت کنید:

می توانید از سلول های markdown برای نوت برداری استفاده کرده و کد خود را مستند کنید. بیایید آن معادله را اجرا کنیم و نتیجه را چاپ کنیم. روی سلول بالا کلیک کنید ، سپس کلیدهای ALT و ENTER را با هم فشار دهید تا یک سلول در زیر آن اضافه شود. کد زیر را در سلول جدید وارد کنید.
x = 2
y = x**2
print(y)

برای اجرای کد ، CTRL + ENTER را فشار دهید. نتایج زیر را دریافت خواهید کرد:

اکنون توانایی وارد کردن ماژول ها و استفاده از notebook را همانطور که می خواهید با هر محیط توسعه Python دیگر خواهید داشت!
نتیجه
اکنون می توانید با استفاده از Jupyter notebook کد پایتون و یادداشت های قابل تکرار را در Markdown بنویسید. برای مرور سریع Jupyter Notebooاز داخل رابط ، و کسب اطلاعات بیشتر، Help > User Interface Tour را از منوی پیمایش بالا انتخاب کنید.
از اینجا ، می توانید با خواندن مقاله تجزیه و تحلیل داده ها و تجسم سازی با pandas و Jupyter notebook در پایتون 3 ، شروع به تجزیه و تحلیل داده ها و تجسم سازی کنید.

 

برچسب‌ها:

behnam gol mohamadi بازدید : 16 دوشنبه 23 تیر 1399 نظرات (0)

Jupyter Notebook یک پوسته دستوری برای محاسبات تعاملی به عنوان برنامه وب ارائه میدهد. این ابزار میتواند با چندین زبان برنامه نویسی از جمله Python ، Julia ، R ، Haskell و Ruby استفاده شود. اغلب برای کار با داده ها ، مدل سازی آماری و یادگیری ماشین مورد استفاده قرار می گیرد.
این آموزش شما را با راه اندازی Jupyter notebook برای اجرا از یک سرور مجازی Debian 9 و همچنین نحوه اتصال و استفاده از notebook از یک دستگاه محلی از طریق تونل زنی را نشان می دهد.
Jupyter notebooks (یا فقط ” notebooks “) اسنادی هستند که توسط برنامه Jupyter notebook تهیه شده اند و شامل کد رایانه و عناصر متن غنی (پاراگراف ، معادلات ، ارقام ، لینک ها و …) هستند که به ارائه و به اشتراک گذاری تحقیقات قابل چاپ کمک می کنند.
با پایان این راهنما ، قادر خواهید بود با استفاده از Jupyter notebook که روی یک سرور مجازی از راه دور اجرا می شود ، کد Python 3 را اجرا کنید.
پیش نیازها
برای تکمیل این راهنما ، باید یک سرور مجازی جدید Debian 9 با یک فایروال اساسی و یک کاربر غیر ریشه با امتیازات sudo پیکربندی شده داشته باشید. با اجرای آموزش ستاپ اولیه سرور مجازی می توانید یاد بگیرید که چگونه این کار را انجام دهید.
مرحله 1 – نصب Pip و هدرهای پایتون
برای شروع فرآیند ، تمام آیتم های مورد نیاز را از مخازن دبیان دانلود و نصب خواهیم کرد. در ادامه از pip مدیر بسته Python برای نصب مولفه های اضافی استفاده خواهیم کرد.
ابتدا باید شاخص بسته محلی apt را به روز کنیم و سپس بسته ها را دانلود و نصب کنیم:
⦁ $ sudo apt update

در مرحله بعد ، فایلهای هدر پایتون و pip را که توسط برخی از متعلقات Jupyter استفاده می شود ، نصب کنید:
⦁ $ sudo apt install python3-pip python3-dev

دبیان 9 از قبل در پایتون 3.5 نصب شده است.
اکنون می توانیم به سراغ تنظیم محیط مجازی Python برویم که در آن Jupyter را نصب خواهیم کرد.
مرحله 2 – یک محیط مجازی Python را برای Jupyter ایجاد کنید
اکنون که پایتون 3 را داریم ، فایل های هدر آن و pip آماده هستند ، می توانیم یک محیط مجازی پایتون ایجاد کنیم تا پروژه های خود را مدیریت کنیم. ما Jupyter را در این محیط مجازی نصب خواهیم کرد.
برای این کار ابتدا به دستور virtualenv نیاز داریم که می توانیم با pip نصب کنیم.
pip را به روز کنید و بسته را با تایپ کردن دستور زیر نصب کنید:
⦁ $ sudo -H pip3 install –upgrade pip

⦁ $ sudo -H pip3 install virtualenv

با نصب virtualenv ، می توانیم محیط خود را شکل دهیم. یک دایرکتوری ایجاد کنید که در آن بتوانیم فایل های پروژه خود را نگه داریم.
⦁ $ mkdir ~/myprojectdir

⦁ $ cd ~/ myprojectdir

در داخل دیرکتوری پروژه ، با تایپ دستور زیر یک محیط مجازی پایتون ایجاد خواهیم کرد.
⦁ $ virtualenv myprojectenv

با این کار دایرکتوری به نام myprojectenv در دایرکتوری myprojectdir شما ایجاد می شود. در داخل ، یک نسخه محلی Python و یک نسخه محلی از pip را نصب می کند. ما می توانیم از این روش برای نصب و پیکربندی یک محیط جدا شده Python برای Jupyter استفاده کنیم.
قبل از نصب Jupyter ، باید محیط مجازی را فعال کنیم. می توانید این کار را با تایپ کردن دستور زیر انجام دهید:
⦁ $ source myprojectenv/bin/activate

اعلان شما باید تغییر کند تا نشان دهد که اکنون در یک محیط مجازی پایتون فعالیت می کنید. خط فرمان شما اکنون چیزی شبیه به این را خواهد بود: (myprojectenv)user@host:~/myprojectdir$
در این مرحله ، شما آماده نصب Jupyter در این محیط مجازی هستید.
مرحله 3 – نصب Jupyter
با فعال بودن محیط مجازی ، Jupyter را با نمونه محلی pip نصب کنید.
توجه: هنگامی که محیط مجازی فعال می شود (هنگامی که اعلان شما پیش از خودmyprojectenv را دارد ، به جای pip3 از pip استفاده کنید ، حتی اگر از پایتون 3 استفاده می کنید. کپی محیط مجازی ابزار همیشه بدون در نظر گرفتن نسخه پایتون ، pip نامگذاری میشود.
⦁ $ pip install jupyter

در این مرحله ، شما با موفقیت همه نرم افزارهای مورد نیاز برای اجرای Jupyter را نصب کرده اید. اکنون می توانیم سرور مجازی notebook را شروع کنیم.
مرحله 4 – Jupyter notebook را اجرا کنید
اکنون همه موارد لازم برای اجرای Jupyter notebook را دارید! برای اجرای آن ، دستور زیر را اجرا کنید:
⦁ (myprojectenv)Sammy@your_server:~/myprojectdir$ jupyter notebook

یک گزارش از فعالیت های Jupyter notebook به ترمینال فرستاده و چاپ می شود. هنگامی که Jupyter notebook را اجرا می کنید ، روی یک شماره پورت خاص اجرا می شود. اولین notebook که اجرا می کنید از پورت 8888 استفاده می کند. برای بررسی شماره پورت خاصی که Jupyter Notebook روی آن در حال اجرا است ، به خروجی فرمان مورد استفاده برای شروع آن مراجعه کنید:
Output
[I 21:23:21.198 NotebookApp] Writing notebook server cookie secret to /run/user/1001/jupyter/notebook_cookie_secret
[I 21:23:21.361 NotebookApp] Serving notebooks from local directory: /home/sammy/myprojectdir
[I 21:23:21.361 NotebookApp] The Jupyter Notebook is running at:
[I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72
[I 21:23:21.361 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 21:23:21.361 NotebookApp] No web browser found: could not locate runnable browser.
[C 21:23:21.361 NotebookApp]

Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72

اگر Jupyter notebook را روی یک رایانه محلی اجرا می کنید (نه بر روی سرور مجازی) ، می توانید به URL نمایش داده شده بروید تا به Jupyter Notebook بروید. اگر Jupyter notebook را بر روی یک سرور مجازی اجرا می کنید ، باید همانطور که در بخش بعدی بیان شده است ، با استفاده از تونل سازی SSH به سرور مجازی وصل شوید.
در این مرحله ، می توانید اتصال SSH را باز نگه دارید و Jupyter notebook را در حال اجرا نگه دارید یا می توانید پس از تنظیم تونل سازی SSH ، از برنامه خارج شوید و مجدداً آن را اجرا کنید. بیایید فرآیند Jupyter notebook را متوقف کنیم. بعد از تنظیم تونل سازی SSH دوباره آن را اجرا خواهیم کرد. برای متوقف کردن فرآیند Jupyter Notebook ، CTRL + C را فشار دهید ، Y را تایپ کنید و سپس ENTER را بزنید. خروجی زیر نمایش داده می شود:
Output
[C 21:28:28.512 NotebookApp] Shutdown confirmed
[I 21:28:28.512 NotebookApp] Shutting down 0 kernels

اکنون تونل SSH را تنظیم خواهیم کرد تا بتوانیم به notebook دسترسی پیدا کنیم.
مرحله 5 – با استفاده از تنظیم SSH به سرور مجازی متصل شوید
در این بخش نحوه اتصال به رابط وب Jupyter notebook با استفاده از تونل زنی SSH را نشان خواهیم داد. از آنجا که Jupyter notebook روی پورت خاصی روی سرور مجازی اجرا می شود (مانند: 8888 ،: 8889 و غیره) ، تونل سازی SSH شما را قادر می سازد به صورت ایمن به پورت سرور مجازی وصل شوید.
دو بخش زیر نحوه ایجاد یک تونل SSH از 1) مک یا لینوکس یا 2) ویندوز را شرح می دهد. لطفاً برای رایانه محلی خود به بخش فرعی مربوطه مراجعه کنید.
تنظیم SSH با Mac یا Linux
اگر از کامپیوتر محلی Mac یا Linux استفاده می کنید ، مراحل ایجاد یک تونل SSH مشابه استفاده از SSH برای ورود به سرور مجازی راه دور است ، به جز اینکه در فرمان ssh پارامترهای دیگری وجود دارد. در این زیر مجموعه پارامترهای اضافی مورد نیاز در فرمان ssh برای تونل زنی موفقیت آمیز ارائه خواهد شد.
تونل زنی SSH با اجرای دستور SSH زیر در یک پنجره ترمینال محلی جدید قابل انجام است:
⦁ $ ssh -L 8888:localhost:8888 your_server_username@your_server_ip

دستور ssh اتصال SSH را باز می کند ، اما -L مشخص می کند که پورت داده شده در هاست محلی (کلاینت) باید به میزبان و پورت داده شده در سمت از راه دور (سرور مجازی) ارسال شود. این بدان معنی است که هر آنچه در شماره پورت دوم (به عنوان مثال 8888) روی سرور مجازی اجرا می شود ، در اولین شماره پورت (به عنوان مثال 8888) در رایانه محلی شما ظاهر می شود.
به صورت اختیاری پورت 8888 را به یکی از انتخاب های خود تغییر دهید تا از استفاده از پورتی که قبلاً توسط یک فرآیند دیگر استفاده شده است خودداری کنید.
server_username نام کاربری شما (به عنوان مثال Sammy) در سرور مجازی ی است که شما ایجاد کرده اید و your_server_ip آدرس IP سرور مجازی شماست.
به عنوان مثال ، برای نام کاربری sammy و آدرس سرور مجازی 203.0.113.0 ، این دستور عبارت است از:
⦁ $ ssh -L 8888:localhost:8888 sammy@203.0.113.0

اگر بعد از اجرای دستور ssh-L خطایی ظاهر نشد ، می توانید به محیط برنامه نویسی خود بروید و Jupyter notebook را اجرا کنید:
(myprojectenv)Sammy@your_server:~/myprojectdir$ notebook
خروجی را با URL دریافت خواهید کرد. از یک مرورگر وب در دستگاه محلی خود ، رابط وب Jupyter Notebook را با URL که با http: // localhost: 8888 شروع می شود ، باز کنید. اطمینان حاصل کنید که شماره توکن (token) درج شده است ، یا وقتی در http: // localhost: 8888 از شما خواسته شد رشته شماره توکن را وارد کنید.
تونل زنی SSH با ویندوز و Putty
اگر از ویندوز استفاده می کنید ، می توانید با استفاده از Putty یک تونل SSH ایجاد کنید.
همانطور که نشان داده شده است ابتدا آدرس سرور مجازی یا آدرس IP را به عنوان نام میزبان وارد کنید:

سپس ، برای بازکردن منو ، روی SSH در پایین صفحه سمت چپ کلیک کرده و سپس روی Tunnels کلیک کنید. برای دسترسی به Jupyter در دستگاه محلی خود ، شماره پورت محلی را که می خواهید استفاده کنید وارد کنید. 8000 یا بیشتر را انتخاب کنید تا از پورت های استفاده شده توسط سایر سرویس ها استفاده نکنید ، و مقصد را localhost:8888 تعیین کنید که 8888 تعداد پورتی است که Jupyter notebook در آن کار می کند.
اکنون روی دکمه Add کلیک کنید و پورت ها باید در لیست Forwarded ports ظاهر شوند:

در آخر ، بر روی دکمه Open کلیک کنید تا از طریق SSH به سرور مجازی وصل شوید و پورت های مورد نظر را تونل بزنید. برای اتصال به Jupyter notebook که روی سرور مجازی اجرا می شود ، به http: // localhost: 8000 (یا هر پورتی که انتخاب کردید) در یک مرورگر وب بروید. اطمینان حاصل کنید که شماره توکن درج شده است ، یا وقتی در http: // localhost: 8000 از شما خواسته شده است رشته شماره توکن را وارد کنید.
مرحله 6 – استفاده از Jupyter notebook
در این بخش به اصول استفاده از Jupyter notebook می پردازیم. اگر در حال حاضر Jupyter notebook را اجرا نمی کنید ، آن را با دستور Jupyter notebook شروع کنید.
اکنون باید با استفاده از یک مرورگر وب به آن متصل شوید. Jupyter notebook ابزاری بسیار قدرتمند با ویژگی های بسیار است. در این بخش چند ویژگی اساسی برای تشریح شما در استفاده از notebook ارائه شده است. Jupyter notebook تمام فایل ها و پوشه های موجود در دایرکتوری را که از آن استفاده می شود نشان می دهد ، بنابراین وقتی در حال کار روی یک پروژه هستید ، حتماً آن را از دیرکتوری پروژه شروع کنید.
برای ایجاد یک فایل notebook جدید ، از منوی کشویی بالا سمت راست New > Python 3 را انتخاب کنید:

یک notebook را باز می کند. اکنون می توانیم کد پایتون را در سلول اجرا کنیم یا سلول را به markdown تغییر دهیم. به عنوان مثال ، با کلیک کردن بر روی Cell> Cell Type> Markdown از نوار پیمایش بالا ، اولین سلول را برای پذیرش Markdown تغییر دهید. اکنون می توانیم با استفاده از Markdown یادداشت هایی بنویسیم و حتی معادلات را با قرار دادن آنها بین نمادهای $ $ در LaTeX بگنجانیم. به عنوان مثال ، پس از تغییر آن به نشانه گذاری ، موارد زیر را در سلول تایپ کنید:
# Simple Equation

Let us now implement the following equation:
$$ y = x^2$$

where $x = 2$

برای تبدیل علامت گذاری به متن غنی ، کلیدهای CTRL و ENTER را فشار دهید. باید خروجی مشابه زیر دریافت کنید:

می توانید از سلول های markdown برای نوت برداری استفاده کرده و کد خود را مستند کنید. بیایید آن معادله را اجرا کنیم و نتیجه را چاپ کنیم. روی سلول بالا کلیک کنید ، سپس کلیدهای ALT و ENTER را با هم فشار دهید تا یک سلول در زیر آن اضافه شود. کد زیر را در سلول جدید وارد کنید.
x = 2
y = x**2
print(y)

برای اجرای کد ، CTRL + ENTER را فشار دهید. نتایج زیر را دریافت خواهید کرد:

اکنون توانایی وارد کردن ماژول ها و استفاده از notebook را همانطور که می خواهید با هر محیط توسعه Python دیگر خواهید داشت!
نتیجه
اکنون می توانید با استفاده از Jupyter notebook کد پایتون و یادداشت های قابل تکرار را در Markdown بنویسید. برای مرور سریع Jupyter Notebooاز داخل رابط ، و کسب اطلاعات بیشتر، Help > User Interface Tour را از منوی پیمایش بالا انتخاب کنید.
از اینجا ، می توانید با خواندن مقاله تجزیه و تحلیل داده ها و تجسم سازی با pandas و Jupyter notebook در پایتون 3 ، شروع به تجزیه و تحلیل داده ها و تجسم سازی کنید.

 

برچسب‌ها:

behnam gol mohamadi بازدید : 14 دوشنبه 23 تیر 1399 نظرات (0)

Nextcloud ، انشعابی از ownCloud ، یک سرور مجازی اشتراک فایل است که به شما امکان می دهد محتوای شخصی خود مانند اسناد و تصاویر را، بسیار شبیه به Dropbox ، در یک مکان متمرکز ذخیره کنید. تفاوتش با Nextcloud در این است که تمام ویژگی های آن منبع باز هستند. همچنین کنترل و امنیت داده های حساس شما را به شما باز می گرداند ، بنابراین استفاده از سرویس میزبانی ابری شخص ثالث را از بین می برد.
در این آموزش ، یک نمونه Nextcloud را روی یک سرور مجازی Debian 9 نصب و پیکربندی خواهیم کرد.
پیش نیازها
برای انجام مراحل در این راهنما به موارد زیر نیاز دارید:
⦁ کاربر غیر ریشه sudo و فایروال که روی سرور مجازی شما تنظیم شده باشند: می توانید با دنبال کردن راهنمای اولیه سرور مجازی Debian 9 یک کاربر با امتیازات sudo ایجاد کرده و یک فایروال پایه را تنظیم کنید.
⦁ (اختیاری) یک نام دامنه که به سرور مجازی شما اشاره کند: ما با TLS / SSL اتصالات را برای نصب Nextcloud ایمن می کنیم. اگر سرور مجازی شما دارای نام دامنه باشد ، Nextcloud می تواند گواهی SSL رایگان و قابل اعتماد را از  ⦁ Let’s Encrypt رمزگذاری و مدیریت کند. در غیر این صورت ، Nextcloud می تواند گواهی SSL خود امضا شده را تنظیم کند که بتواند اتصالات را رمزگذاری کند ، اما به طور پیش فرض در مرورگرهای وب قابل اعتماد نخواهد بود.
پس از اتمام مراحل فوق ، به ادامه نحوه یادگیری راه اندازی Nextcloud در سرور مجازی خود بپردازید.
مرحله 1 – نصب Nextcloud
با استفاده از سیستم بسته بندی snappy، Nextcloud را نصب خواهیم کرد. این سیستم بسته بندی ، که به طور پیش فرض در Debian 9 موجود است ، به سازمان ها امکان می دهد تا نرم افزار را به همراه کلیه متعلقات و پیکربندی های مربوطه ، به یک واحد خودشمول با به روز رسانی های خودکار منتقل کنند. این بدان معنی است که به جای نصب و پیکربندی یک سرور مجازی وب و پایگاه داده و سپس پیکربندی برنامه Nextcloud برای اجرای آن ، می توانیم بسته snap را که به طور خودکار سیستم های زیرین را کنترل می کند نصب کنیم.
برای دانلود بسته snap Nextcloud و نصب آن بر روی سیستم ، این دستورات را تایپ کنید:
⦁ $ sudo apt update

⦁ $ sudo apt install snapd

سپس خارج شوید و یا دوباره وارد شوید، یا اسکریپت/etc/profile.d/apps-bin-path.sh را سورس کنید تا /snap/binرا به متغیر بخش PATH  خود اضافه کنید:
⦁ $ source /etc/profile.d/apps-bin-path.sh

بسته Nextcloud روی سرور مجازی شما دانلود و نصب می شود. شما می توانید با لیست کردن تغییراتی که مربوط به snap است ، تایید کنید که مراحل نصب موفقیت آمیز بوده است:
⦁ $ snap changes nextcloud

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

وضعیت و خلاصه نشان می دهد که نصب بدون هیچ مشکلی انجام شده است.
دریافت اطلاعات اضافی درباره Nextcloud Snap
اگر اطلاعات بیشتری درباره nextcloud snap می خواهید ، چند دستور وجود دارد که می توانند مفید باشند.
دستور snap info می تواند توضیحات ، دستورات مدیریت Nextcloud موجود و همچنین نسخه نصب شده و کانال snap در حال پیگیری را به شما نشان دهد:
⦁ $ snap info nextcloud

snap ​​می تواند اتصالاتی را که پشتیبانی می کنند تعریف کند ، که از یک سوراخ و دو شاخه تشکیل شده است که در صورت اتصال به یکدیگر ، دسترسی سریع به قابلیت های خاص یا سطح دسترسی را به شما می دهد. به عنوان مثال ، snap هایی که باید به عنوان کلاینت شبکه عمل کنند باید رابط شبکه را داشته باشند. برای دیدن اینکه snap کدام رابط ها را تعریف می کند ، تایپ کنید:
⦁ $ snap interfaces nextcloud

Output
Slot Plug
:network nextcloud
:network-bind nextcloud
– nextcloud:removable-media

برای اطلاع از کلیه سرویس ها و برنامه های خاصی که این snap ارائه می دهد ، می توانید با تایپ کردن دستور زیر به فایل تعریف snap نگاهی بیندازید:
⦁ $ less /snap/nextcloud/current/meta/snap.yaml

در صورت نیاز به کمک به اشکال زدایی ، این امکان را به شما می دهد تا مؤلفه های جداگانه موجود در آن را ببینید.
مرحله 2 – پیکربندی یک حساب کاربری
چند روش مختلف برای تنظیم پیکربندی Nextcloud Snap وجود دارد. در این راهنما ، به جای ایجاد یک کاربر اداری از طریق رابط وب ، یک کاربر را در خط فرمان ایجاد خواهیم کرد تا از یک پنجره کوچک جلوگیری کنیم که در آن صفحه ثبت نام ادمین برای هر کسی که از آدرس IP سرور مجازی یا نام دامنه شما بازدید کند ، قابل دسترسی باشد.
برای پیکربندی پیوند Nextcloud با یک حساب ادمین جدید ، از دستور nextcloud.manual-install استفاده کنید. به عنوان آرگومان باید نام کاربری و رمزعبور را وارد کنید:
⦁ $ sudo -i nextcloud.manual-install sammy password


پیام زیر نشان می دهد که Nextcloud به درستی پیکربندی شده است:
Output
Nextcloud is not installed – only a limited number of commands are available
Nextcloud was successfully installed

اکنون که Nextcloud نصب شده است ، باید دامنه های مورد اعتماد را تنظیم کنیم تا Nextcloud با استفاده از نام دامنه یا آدرس IP سرور مجازی به درخواست ها پاسخ دهد.
مرحله 3 – تنظیم دامنه های قابل اعتماد
هنگام نصب از خط فرمان ، Nextcloud نام های هاست را محدود می کند که نمونه به آن پاسخ می دهد. به طور پیش فرض ، این سرویس فقط به درخواست های ارسال شده به نام میزبان “localhost” پاسخ می دهد. ما از طریق نام دامنه سرور مجازی یا آدرس IP سرور مجازی به Nextcloud دسترسی خواهیم داشت ، بنابراین برای پذیرش این نوع درخواست ها ، باید این تنظیم را مشخص کنیم.
می توانید تنظیمات فعلی را با جستجوی مقدار آرایه trusted_domains مشاهده کنید:
⦁ $ sudo -i nextcloud.occ config:system:get trusted_domains

Output
localhost

در حال حاضر ، فقط localhost به عنوان اولین مقدار در آرایه موجود است. می توانیم با تایپ کردن دستور زیر، ورودی برای نام دامنه یا آدرس IP سرور مجازی خود را اضافه کنیم:
⦁ $ sudo -i nextcloud.occ config:system:set trusted_domains 1 –value=example.com

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

اگر مجدداً دامنه های مورد اعتماد را جستجو کنیم ، خواهیم دید که اکنون دو ورودی داریم:
⦁ $ sudo -i nextcloud.occ config:system:get trusted_domains

Output
localhost
example.com

اگر می خواهید یک روش دیگر برای دستیابی به مثال Nextcloud اضافه کنید ، می توانید با اجرای مجدد دستور config:system:set با یک شماره ایندکس افزایشی (“1” در دستور اول) و تنظیم –value دامنه ها یا آدرس های دیگری را اضافه کنید .
مرحله 4 – ایمن سازی رابط وب Nextcloud با SSL
قبل از شروع استفاده از Nextcloud ، باید رابط وب را ایمن کنیم.
اگر یک نام دامنه در ارتباط با سرور مجازی Nextcloud خود دارید ، nextcloud snap می تواند به شما در دستیابی و پیکربندی یک گواهینامه SSL قابل اعتماد از Let’s Encrypt کمک کند. اگر سرور مجازی Nextcloud شما نام دامنه نداشته باشد ، Nextcloud می تواند گواهی خود امضا شده را تنظیم کند که ترافیک وب شما را رمزگذاری می کند اما به طور خودکار توسط مرورگر وب شما قابل اعتماد نخواهد بود.
با این حساب ، بخش زیر را که با سناریوی شما مطابقت دارد ، دنبال کنید.
گزینه 1: تنظیم SSL با Let’s Encrypt
اگر یک نام دامنه در ارتباط با سرور مجازی Nextcloud خود دارید ، بهترین گزینه برای تأمین امنیت رابط وب شما ، دریافت گواهی Let’s Encrypt SSL است.
با باز کردن پورتها در فایروال شروع کنید که Let’s Encryptبرای تأیید مالکیت دامنه استفاده می کند. این کار باعث می شود صفحه ورود Nextcloud به صورت عمومی قابل دسترسی باشد ، اما از آنجا که ما قبلاً یک حساب ادمین تنظیم کرده ایم ، هیچ کس نمی تواند نصب را بدزدد:
⦁ $ sudo ufw allow “WWW Full”

در مرحله بعد با تایپ دستور زیر یک گواهی Let’s Encrypt درخواست کنید:
⦁ $ sudo -i nextcloud.enable-https lets-encrypt

ابتدا از شما سؤال خواهد شد که آیا سرور مجازی شما شرایط لازم را برای درخواست گواهینامه از سرویس Let’s Encrypt را دارد:
Output
In order for Let’s Encrypt to verify that you actually own the
domain(s) for which you’re requesting a certificate, there are a
number of requirements of which you need to be aware:

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

https://letsencrypt.org/repository/

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

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

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

Have you met these requirements? (y/n)

برای ادامه y را تایپ کنید.
در مرحله بعد ، از شما خواسته می شود تا یک آدرس ایمیل برای استفاده در عملیات بازیابی ارائه دهید:
Output
Please enter an email address (for urgent notices or key recovery): your_email@domain.com

در آخر ، نام دامنه مرتبط با سرور مجازی Nextcloud خود را وارد کنید:
Output
Please enter your domain name(s) (space-separated): example.com

از گواهی Let’s Encrypt شما درخواست می شود و به شرط آنکه همه چیز خوب پیش برود ، نمونه داخلی Apache دوباره راه اندازی می شود تا بلافاصله SSL را پیاده سازی کنید:
Output
Attempting to obtain certificates… done
Restarting apache… done

اکنون می توانید به مرحله بعد پیش بروید تا برای اولین بار وارد Nextcloud شوید.
گزینه 2: تنظیم SSL با گواهی خود امضا شده
اگر سرور مجازی Nextcloud شما نام دامنه ندارد ، می توانید با ایجاد یک گواهی SSL خود امضا شده رابط وب را ایمن کنید. این گواهینامه امکان دسترسی به رابط وب از طریق اتصال رمزگذاری شده را می دهد ، اما نمی تواند هویت سرور مجازی شما را تأیید کند ، بنابراین مرورگر شما به احتمال زیاد یک هشدار را نمایش می دهد.
برای تولید یک گواهی خود امضا شده و پیکربندی Nextcloud برای استفاده از آن ، این دستور تایپ کنید:
⦁ $ sudo nextcloud.enable-https self-signed

Output
Generating key and self-signed certificate… done
Restarting apache… done

خروجی فوق نشان می دهد که Nextcloud یک گواهی خود امضا شده تولید و فعال کرده است.
اکنون که رابط ایمن است ، پورت های وب را در فایروال باز کنید تا به رابط وب دسترسی پیدا کنید:
⦁ $ sudo ufw allow “WWW Full”

اکنون برای اولین بار آماده ورود به Nextcloud هستید.
ورود به رابط وب Nextcloud
اکنون که Nextcloud پیکربندی شد ، از نام دامنه یا آدرس IP سرور مجازی خود در مرورگر وب خود بازدید کنید:
https://example.com

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

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

برای ورود به رابط وب Nextcloud روی دکمه Log in کلیک کنید.
اولین باری که وارد می شوید ، پنجره ای با متن معرفی و پیوندهایی با کلاینت های مختلف Nextcloud نمایش داده می شود که می توانند برای دسترسی به نمونه Nextcloud شما استفاده کنند:

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

اکنون نصب شما کامل و ایمن است. برای آشنایی بیشتر با ویژگی ها و کارایی سیستم جدید خود ، می توانید در رابط کاربری خود به راحتی جستجو کنید.
نتیجه
Nextcloud می تواند قابلیت های سرویس های محبوب ذخیره سازی ابری شخص ثالث را کپی کند. محتوا می تواند بین کاربران یا به صورت خارجی با URL های عمومی به اشتراک گذاشته شود. مزیت Nextcloud این است که اطلاعات در مکانی که شما کنترل می کنید بصورت ایمن ذخیره می شوند.
برای عملکردهای بیشتر ، به Nextcloud’s app store مراجعه کنید ، جایی که می توانید افزونه هایی را برای گسترش قابلیت های سرویس نصب کنید.

 

برچسب‌ها:

behnam gol mohamadi بازدید : 15 دوشنبه 23 تیر 1399 نظرات (0)

Postfix یک عامل ارسال ایمیل (MTA) است ، برنامه ای که برای ارسال و دریافت ایمیل استفاده می شود.
در این آموزش Postfix را به گونه ای نصب و پیکربندی می کنید که برای ارسال ایمیل به وسیله برنامه های محلی استفاده شود، یعنی برنامه هایی که روی یک سرور مجازی مشترک با Postfix نصب می شود.
چرا باید این کار را انجام دهید؟
اگر از ارائه دهنده ایمیل شخص ثالث برای ارسال و دریافت ایمیل ها استفاده میکنید، نیاز نیست سرور مجازی سرور میل خود را اجرا کنید. با این حال اگر یک سرور مجازی ابری را مدیریت میکنید و روی آن برنامه هایی نصب کردید که نیاز به ارسال نوتیفیکیشن های ایمیل دارند، اجرای سرور مجازی محلی و فقط ارسال کننده SMTP پیشنهاد خوبی به عنوان جایگزین ارائه دهنده ایمیل شخص ثالث یا اجرای سرور مجازی SMTP تمام عیارخواهد بود.
در این آموزش، Postfix را به عنوان سرور مجازی SMTP به صورت Send-Only روی دبیان 9 نصب و پیکربندی خواهید کرد.
پیش نیازها
• یک سرور مجازی Debian 9 که طبق راهنمای ستاپ اولیه سرور Debian 9 تنظیم شده باشد ، شامل کاربر sudo غیر ریشه.
• نام دامنه معتبر مانند  example.com که به سرور مجازی شما اشاره کند میتوانید این ار را با دنبال کردن این راهنماها در مورد مدیریت هاستینگ تنظیم کنید
توجه کنید که نام هاست سرور مجازی شما باید با نام دامنه و زیر دامنه مطابقت داشته باشد. می توانید با تایپ hostname  در خط فرمان ، نام میزبان سرور مجازی را تأیید کنید. خروجی باید با نامی که در هنگام ایجاد سرور به آن اختصاص داده اید مطابقت داشته باشد.
مرحله 1 – نصب Postfix
در این مرحله Postfix را نصب خواهید کرد. به دو بسته احتیاج خواهید داشت: mailutils  که برنامه های لازم برای عملکرد Postfix و خود Postfix را شامل شود.
ابتدا بانک اطلاعات بسته را به روز کنید:
⦁ $ sudo apt update

سپس mailtuils را نصب کنید
⦁ $ sudo apt install mailutils

در نهایت Postfix را نصب کنید:
⦁ $ sudo apt install mailutils

نزدیک پایان مراحل نصب ، پنجره ای به شما ارائه می شود که مانند تصویر زیر است. گزینه پیش فرض Internet Site است.
این گزینه پیشنهادی برای این آموزش است. بنابراین TAB و سپس ENTER را فشار دهید است.

سپس پنجره دیگری مانند تصویر پایین میبینید. System mail name باید با نامی که به سرور مجازی اختصاص داده اید یکی باشد. اگر زیر دامنه ای مانند subdomain.example.com نشان داد، آن را به example.com تغییر دهید. پس از اتمام TAB و ENTER را فشار دهید.

اکنون Postfix را نصب کرده اید و آماده پیکربندی آن هستید.
مرحله 2 – پیکربندی Postfix
در این مرحله ، Postfix را پیکربندی می کنید تا فقط از سرور مجازی ی که در آن کار می کند – یعنی از localhost ، ایمیل بفرستد و دریافت کند.
برای این کار ، Postfix باید به گونه ای پیکربندی شود که فقط به رابط حلقه برگشت گوش دهد ، یعنی رابط شبکه مجازی که سرور مجازی برای برقراری ارتباط داخلی استفاده میکند. برای ایجاد تغییرات ، باید فایل اصلی پیکربندی Postfix را ​​با nano یا ویرایشگر مورد نظر خود ویرایش کنید
⦁ $ sudo nano /etc/postfix/main.cf

با باز کردن فایل، به پایین بیایید تا قسمت زیر را مشاهده کنید
/etc/postfix/main.cf
. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
. . .

خط inet_interfaces = all را به inet_interfaces = loopback-only تغییر دهید:
/etc/postfix/main.cf
. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
. . .

دستور العمل دیگری که باید اصلاح کنید ، mydestination است که برای مشخص کردن لیست دامنه هایی که از طریق انتقال تحویل ایمیل local_transport ارائه می شوند ، استفاده می گردد. به طور پیش فرض ، مقادیر مشابه این است:
/etc/postfix/main.cf
. . .
mydestination = $myhostname, example.com, localhost.com, , localhost
. . .

خط را تغییر دهید تا مانند این باشد:
/etc/postfix/main.cf
. . .
mydestination = localhost.$mydomain, localhost, $myhostname
. . .

پیش فرض های پیشنهادی برای این دستورالعمل در بلوک کد زیر داده شده است، بنابراین با کد خود تطبیق دهید:
/etc/postfix/main.cf
. . .
mydestination = $myhostname, localhost.$your_domain, $your_domain
. . .

فایل را ذخیره کنید و ببندید.
توجه: اگر میزبان چندین دامنه در یک سرور مجازی واحد هستید ، سایر دامنه ها نیز می توانند با استفاده از دستورالعمل mydestination به Postfix منتقل شوند. اگرچه برای پیکربندی Postfix به حالتی که مقیاس بندی شود و برای چنین ستاپی مشکل ایجاد نکند، به پیکربندی های بیشتری نیاز دارد که فراتر از حوزه این مقاله است.
در انتها Postfix را ریستارت کنید:
⦁ $ sudo systemctl restart postfix

مرحله 3 – تست سرور مجازی SMTP
در این مرحله ، تست خواهید کرد که آیا Postfix می تواند با استفاده از دستور mail ، که بخشی از بسته mailutils است که در مرحله اول نصب کرده اید ، ایمیل را به یک حساب ایمیل خارجی ارسال کند.
برای ارسال ایمیل تستی ، دستور زیر را اجرا کنید:
⦁ $ echo “This is the body of the email” | mail -s “This is the subject line” your_email_address

در انجام تست خود، می توانید بدنه و موضوع ایمیل را به دلخواه خود تغییر دهید. با این حال your_email_address را با آدرس ایمیل معتبری که می توانید به آن دسترسی پیدا کنید ، جایگزین کنید. قسمت دامنه میتواند gmail.com, fastmail.com, yahoo.com یا هر ارائه دهنده خدمات ایمیل دیگری که استفاده میکنید باشد.
اکنون آدرس ایمیلی را که برای این پیام ارسال کرده اید ، بررسی کنید. باید پیام را در صندوق ورودی خود ببینید. اگر در آنجا نباشد ، پوشه اسپم خود را بررسی کنید.
توجه داشته باشید که با این پیکربندی ، آدرس در قسمت From برای ایمیلهای آزمایشی که ارسال می کنید به شکل sammy@example.com خواهد بود ، که sammy  نام کاربری کاربر لینوکس و دامنه نام هاست سرور مجازی است. اگر نام کاربری خود را عوض کنید، آدرس From تغییر میکند.
مرحله 4 – سیستم ایمیل فوروارد
در این مرحله ، فوروارد کردن ایمیل را انجام میدهید ، بنابراین ایمیل های فرستاده شده به root در سیستم شما به آدرس شخصی و خارجی خود را دریافت میکنید.
برای پیکربندی Postfix به گونه ای که ایمیل های ایجاد شده توسط سیستم به آدرس ایمیل شما ارسال شوند، باید فایل /etc/aliases را ویرایش کنید:
⦁ $ sudo nano /etc/aliases

محتوای کل فایل در نصب پیش فرض روی دبیان 9 به صورت زیر است:
/etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root

تنظیمات postmaster: root اطمینان حاصل می کند که ایمیل های تولید شده توسط سیستم به کاربر ریشه ارسال میشوند. شما می خواهید این تنظیمات را ویرایش کنید تا این ایمیلها به آدرس ایمیل شما تغییر مسیر پیدا کنند. برای انجام این کار ، فایل را طوری ویرایش کنید که این گونه باشد:
/etc/aliases
mailer-daemon: postmaster
postmaster: root
root: your_email_address
. . .
your_email_address را با آدرس ایمیل شخصی خود جایگزین کنید. پس از اتمام ، فایل را ذخیره کنید و ببندید. برای اعمال اثر ، دستور زیر را اجرا کنید:
⦁ $ sudo newaliases

با ارسال ایمیل به حساب root می توانید با استفاده از این دستور آزمایش کنید:
⦁ $ echo “This is the body of the email” | mail -s “This is the subject line” root

باید ایمیل را در آدرس ایمیل خود دریافت کنید. اگر دریافت نشد ، پوشه Spam خود را بررسی کنید.
نتیجه
این همه کاری است که باید برای تنظیم سرور مجازی ایمیل send-only با استفاده از Postfix انجام دهید. با این وجود ممکن است بخواهید برخی اقدامات اضافی را برای محافظت از دامنه خود در برابر اسپم ها انجام دهید.
اگر می خواهید اعلان هایی از سرور مجازی خود را در یک آدرس واحد دریافت کنید ، ایمیل هایی که به عنوان Spam علامت گذاری شده اند مشکلی نخواهد بود زیرا می توانید یک whitelist ایجاد کنید. با این حال ، اگر می خواهید ایمیل هایی (مانند ایمیل های تأییدیه برای ثبت نام) به کاربران بالقوه سایت ارسال کنید ، حتماً باید رکوردهای SPF و DKIM را تنظیم کنید تا ایمیلهای سرور مجازی شما قانونی تر به نظر برسد.
⦁ نحوه استفاده از رکوردهای SPF برای جلوگیری از جعل و بهبود قابلیت اطمینان ایمیل
⦁ نحوه نصب و پیکربندی DKIM با Postfix در Debian Wheezy.
در صورت پیکربندی صحیح ، این مراحل ارسال اسپم به آدرسی که از دامنه شما منشا میگیرد را تقریبا غیرممکن میکند. انجام این مراحل پیکربندی اضافی همچنین باعث می شود که ارائه دهندگان ایمیل های سرور مجازی شما را مجاز بدانند.

 

برچسب‌ها:

تعداد صفحات : 12

اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 116
  • کل نظرات : 0
  • افراد آنلاین : 1
  • تعداد اعضا : 0
  • آی پی امروز : 18
  • آی پی دیروز : 23
  • بازدید امروز : 35
  • باردید دیروز : 29
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 86
  • بازدید ماه : 167
  • بازدید سال : 2,425
  • بازدید کلی : 7,124