Cloud for Charities: Migration Guide

Cloud for Charities: Migration Guide

چندی پیش، Mail.Ru Cloud Solutions (MCS) و سرویس Dobro Mail.Ru این پروژه را راه اندازی کردند.ابر برای خیریه هابه لطف آن سازمان های غیرانتفاعی می توانند منابع پلت فرم ابری MCS را به صورت رایگان دریافت کنند. بنیاد خیریه"حساب خوبی» در این پروژه شرکت کرد و بخشی از زیرساخت خود را بر اساس MCS با موفقیت مستقر کرد.

پس از گذراندن اعتبار، یک NPO می تواند ظرفیت مجازی را از MCS دریافت کند، اما پیکربندی بیشتر به شرایط خاصی نیاز دارد. در این مطلب، می‌خواهیم دستورالعمل‌های خاصی را برای راه‌اندازی یک سرور مبتنی بر لینوکس اوبونتو برای اجرای وب‌سایت پایه اصلی و تعدادی زیردامنه با استفاده از گواهی‌های SSL رایگان به اشتراک بگذاریم. برای بسیاری، این یک راهنمای ساده خواهد بود، اما امیدواریم که تجربیات ما برای سایر سازمان‌های غیرانتفاعی و نه تنها مفید باشد.

FYI: چه چیزی می توانید از MCS دریافت کنید؟ 4 پردازنده، 32 گیگابایت رم، 1 ترابایت هارد دیسک، سیستم عامل لینوکس اوبونتو، 500 گیگابایت فضای ذخیره سازی.

مرحله 1: سرور مجازی را راه اندازی کنید

بیایید مستقیماً به اصل مطلب برویم و سرور مجازی خود (معروف به "نمونه") را در حساب شخصی MCS خود ایجاد کنیم. در اپ استور، باید یک پشته LAMP آماده را انتخاب و نصب کنید، که مجموعه ای از نرم افزارهای سرور (LAMP = Linux، Apache، MySQL، PHP) برای اجرای اکثر وب سایت ها ضروری است.

Cloud for Charities: Migration Guide
Cloud for Charities: Migration Guide
Cloud for Charities: Migration Guide
پیکربندی سرور مناسب را انتخاب کنید و یک کلید SSH جدید ایجاد کنید. پس از کلیک بر روی دکمه "نصب"، نصب سرور و پشته LAMP آغاز می شود، این کار کمی طول می کشد. این سیستم همچنین پیشنهاد می‌کند یک کلید خصوصی را برای مدیریت ماشین مجازی از طریق کنسول، ذخیره آن در رایانه شما دانلود کنید.

پس از نصب برنامه، بیایید بلافاصله فایروال را راه اندازی کنیم، این کار در حساب شخصی شما نیز انجام می شود: به بخش "Cloud computing -> Virtual Machines" بروید و "Setting the firewall" را انتخاب کنید:

Cloud for Charities: Migration Guide
برای ترافیک ورودی از طریق پورت 80 و 9997 باید مجوز اضافه کنید. این در آینده برای نصب گواهینامه های SSL و کار با phpMyAdmin ضروری است. در نتیجه، مجموعه قوانین باید به شکل زیر باشد:

Cloud for Charities: Migration Guide
اکنون می توانید از طریق خط فرمان با استفاده از پروتکل SSH به سرور خود متصل شوید. برای انجام این کار، با اشاره به کلید SSH در رایانه و آدرس IP خارجی سرور خود، دستور زیر را تایپ کنید (می توانید آن را در بخش "ماشین های مجازی" پیدا کنید):

$ ssh -i /путь/к/ключу/key.pem ubuntu@<ip_сервера>

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

$ sudo apt-get update

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

$ sudo apt-get upgrade

پس از نصب به روز رسانی ها، سرور را مجددا راه اندازی کنید:

$ sudo reboot

مرحله 2: میزبان های مجازی را راه اندازی کنید

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

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

$ sudo mkdir -p /var/www/a-dobra.ru/public_html

$ sudo mkdir -p /var/www/promo.a-dobra.ru/public_html

و صاحب کاربر فعلی را مشخص کنید:

$ sudo chown -R $USER:$USER /var/www/a-dobra.ru/public_html

$ sudo chown -R $USER:$USER /var/www/promo.a-dobra.ru/public_html

متغیر $USER شامل نام کاربری است که شما در حال حاضر با آن وارد شده اید (به طور پیش فرض این کاربر است ubuntu). اکنون کاربر فعلی دارای دایرکتوری های public_html است که در آن محتوا را ذخیره می کنیم.

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

$ sudo chmod -R 755 /var/www

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

در حال حاضر یک فایل index.php در پوشه /var/www/html وجود دارد، بیایید آن را در دایرکتوری های جدیدمان کپی کنیم - فعلاً این محتوای ما خواهد بود:

$ cp /var/www/html/index.php /var/www/a-dobra.ru/public_html/index.php

$ cp /var/www/html/index.php /var/www/promo.a-dobra.ru/public_html/index.php

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

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

پیکربندی پیش‌فرض اوبونتو مستلزم آن است که هر فایل میزبان مجازی یک پسوند *.conf داشته باشد.

بیایید با کپی کردن فایل برای اولین دامنه شروع کنیم:

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/a-dobra.ru.conf

یک فایل جدید در یک ویرایشگر با حقوق ریشه باز کنید:

$ sudo nano /etc/apache2/sites-available/a-dobra.ru.conf

داده ها را به صورت زیر ویرایش کنید، با مشخص کردن پورت 80، داده های خود را برای ServerAdmin, ServerName, ServerAliasو همچنین مسیر دایرکتوری ریشه سایت خود، فایل را ذخیره کنید (Ctrl+X و سپس Y):

<VirtualHost *:80>
 
    ServerAdmin [email protected]
    ServerName a-dobra.ru
    ServerAlias www.a-dobra.ru
 
    DocumentRoot /var/www/a-dobra.ru/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
 
    <Directory /var/www/a-dobra.ru/public_html>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
 
    <FilesMatch .php$>
        SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
    </FilesMatch>
 
</VirtualHost>

ServerName دامنه اصلی را تنظیم می کند که باید با نام میزبان مجازی مطابقت داشته باشد. این باید نام دامنه شما باشد. دومین، ServerAlias، نام های دیگری را تعریف می کند که باید به گونه ای تفسیر شوند که گویی دامنه اصلی هستند. این برای استفاده از نام های دامنه اضافی، به عنوان مثال استفاده از www، راحت است.

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

$ sudo cp /etc/apache2/sites-available/a-dobra.ru.conf /etc/apache2/sites-available/promo.a-dobra.ru.conf

شما می توانید به تعداد دلخواه دایرکتوری و هاست مجازی برای وب سایت های خود ایجاد کنید! اکنون که فایل های میزبان مجازی خود را ایجاد کرده ایم، باید آنها را فعال کنیم. ما می‌توانیم از ابزار a2ensite برای فعال کردن هر یک از سایت‌هایمان مانند زیر استفاده کنیم:

$ sudo a2ensite a-dobra.ru.conf

$ sudo a2ensite promo.a-dobra.ru.conf 

به طور پیش فرض، پورت 80 در LAMP بسته است و بعداً برای نصب گواهی SSL به آن نیاز خواهیم داشت. بنابراین بیایید بلافاصله فایل ports.conf را ویرایش کنیم و سپس Apache را مجددا راه اندازی کنیم:

$ sudo nano /etc/apache2/ports.conf

یک خط جدید اضافه کنید و فایل را ذخیره کنید تا به شکل زیر باشد:

Listen 80
Listen 443
Listen 9997

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

$ sudo systemctl reload apache2

مرحله 3: نام دامنه را تنظیم کنید

در مرحله بعد، باید رکوردهای DNS را اضافه کنید که به سرور جدید شما اشاره می کنند. برای مدیریت دامنه ها، Arithmetic of Good Foundation ما از سرویس dns-master.ru استفاده می کند، ما آن را با یک مثال نشان خواهیم داد.

تنظیم یک رکورد A برای دامنه اصلی معمولاً به صورت زیر نشان داده می شود (علامت @):

Cloud for Charities: Migration Guide
رکورد A برای زیر دامنه ها معمولاً به صورت زیر مشخص می شود:

Cloud for Charities: Migration Guide
آدرس IP آدرس سرور لینوکس است که ما به تازگی ایجاد کردیم. می توانید TTL = 3600 را مشخص کنید.

پس از مدتی امکان بازدید از سایت شما وجود خواهد داشت اما فعلا فقط از طریق http://. در مرحله بعدی پشتیبانی را اضافه خواهیم کرد https://.

مرحله 4: گواهینامه های SSL رایگان را تنظیم کنید

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

$ sudo add-apt-repository ppa:certbot/certbot

بسته Certbot را برای آپاچی نصب کنید apt:

$ sudo apt install python-certbot-apache 

اکنون Certbot آماده استفاده است، دستور را اجرا کنید:

$ sudo certbot --apache -d a-dobra.ru -d www.a-dobra.ru -d promo.a-dobra.ru

این دستور certbot، keys را اجرا می کند -d نام دامنه هایی را که گواهی باید برای آنها صادر شود را مشخص کنید.

اگر این اولین باری است که certbot را راه اندازی می کنید، از شما خواسته می شود آدرس ایمیل خود را وارد کرده و با شرایط استفاده از سرویس موافقت کنید. سپس certbot با سرور Let's Encrypt تماس می گیرد و سپس تأیید می کند که شما واقعاً دامنه ای را که برای آن گواهی درخواست کرده اید کنترل می کنید.

اگر همه چیز خوب پیش رفت، certbot از شما می پرسد که چگونه می خواهید پیکربندی HTTPS را پیکربندی کنید:

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):

پیشنهاد می کنیم گزینه 2 را انتخاب کرده و ENTER را فشار دهید. پیکربندی به روز می شود و آپاچی برای اعمال تغییرات مجدد راه اندازی می شود.

گواهی‌های شما اکنون دانلود، نصب و کار می‌کنند. سعی کنید سایت خود را با https:// بارگذاری مجدد کنید و نماد امنیتی را در مرورگر خود مشاهده خواهید کرد. اگر سرور خود را تست کنید تست سرور SSL Labs، نمره A دریافت می کند.

گواهینامه های Let's Encrypt فقط برای 90 روز معتبر هستند، اما بسته certbot که ما به تازگی نصب کرده ایم، گواهی ها را به طور خودکار تمدید می کند. برای آزمایش فرآیند به‌روزرسانی، می‌توانیم اجرای خشک certbot را انجام دهیم:

$ sudo certbot renew --dry-run 

اگر هیچ خطایی در نتیجه اجرای این دستور مشاهده نکردید، پس همه چیز کار می کند!

مرحله 5: به MySQL و phpMyAdmin دسترسی پیدا کنید

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

https://<ip-адрес сервера>:9997

رمز عبور برای دسترسی ریشه را می توان در حساب شخصی MCS خود به دست آورد (https://mcs.mail.ru/app/services/marketplace/apps/). فراموش نکنید که رمز عبور ریشه خود را در اولین باری که وارد می شوید تغییر دهید!

مرحله 6: آپلود فایل از طریق SFTP را تنظیم کنید

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

$ sudo adduser webmaster

سیستم از شما می خواهد که یک رمز عبور تعیین کنید و برخی داده های دیگر را وارد کنید.

تغییر مالک دایرکتوری با وب سایت شما:

$ sudo chown -R webmaster:webmaster /var/www/a-dobra.ru/public_html

حالا بیایید پیکربندی SSH را طوری تغییر دهیم که کاربر جدید فقط به SFTP دسترسی داشته باشد نه ترمینال SSH:

$ sudo nano /etc/ssh/sshd_config

به انتهای فایل پیکربندی بروید و بلوک زیر را اضافه کنید:

Match User webmaster
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/www/a-dobra.ru
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

فایل را ذخیره کرده و سرویس را مجددا راه اندازی کنید:

$ sudo systemctl restart sshd

اکنون می توانید از طریق هر سرویس گیرنده SFTP، به عنوان مثال، از طریق FileZilla به سرور متصل شوید.

مجموع

  1. اکنون می دانید که چگونه دایرکتوری های جدید ایجاد کنید و میزبان های مجازی را برای وب سایت های خود در همان سرور پیکربندی کنید.
  2. شما به راحتی می توانید گواهینامه های SSL لازم را ایجاد کنید - این رایگان است و آنها به طور خودکار به روز می شوند.
  3. شما می توانید به راحتی با پایگاه داده MySQL از طریق phpMyAdmin آشنا کار کنید.
  4. ایجاد حساب های SFTP جدید و تنظیم حقوق دسترسی به تلاش زیادی نیاز ندارد. چنین حساب هایی را می توان به توسعه دهندگان وب شخص ثالث و مدیران سایت منتقل کرد.
  5. فراموش نکنید که سیستم را به صورت دوره ای به روز کنید، و همچنین توصیه می کنیم پشتیبان تهیه کنید - در MCS می توانید با یک کلیک از کل سیستم "عکس های فوری" بگیرید و سپس در صورت لزوم کل تصاویر را راه اندازی کنید.

منابع استفاده شده که ممکن است مفید باشد:

https://www.digitalocean.com/community/tutorials/apache-ubuntu-14-04-lts-ru
https://www.digitalocean.com/community/tutorials/apache-let-s-encrypt-ubuntu-18-04-ru
https://www.digitalocean.com/community/tutorials/how-to-enable-sftp-without-shell-access-on-ubuntu-18-04

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

منبع: www.habr.com

اضافه کردن نظر