سحابة للجمعيات الخيرية: دليل الهجرة

سحابة للجمعيات الخيرية: دليل الهجرة

منذ وقت ليس ببعيد، أطلقت Mail.Ru Cloud Solutions (MCS) وخدمة Dobro Mail.Ru المشروع "سحابة للجمعيات الخيرية"، والتي بفضلها يمكن للمنظمات غير الربحية الحصول على موارد النظام الأساسي السحابي MCS مجانًا. مؤسسة خيرية "حسابية الخير» شاركت في المشروع ونشرت بنجاح جزءًا من بنيتها التحتية القائمة على MCS.

بعد اجتياز التحقق من الصحة، يمكن للمنظمة غير الربحية الحصول على سعة افتراضية من MCS، لكن التكوين الإضافي يتطلب مؤهلات معينة. في هذه المادة، نريد مشاركة تعليمات محددة لإعداد خادم يستند إلى Ubuntu Linux لتشغيل موقع المؤسسة الرئيسي وعدد من النطاقات الفرعية باستخدام شهادات SSL المجانية. بالنسبة للكثيرين، سيكون هذا دليلا بسيطا، ولكننا نأمل أن تكون تجربتنا مفيدة للمنظمات الأخرى غير الربحية، وليس فقط.

FYI: ما الذي يمكنك الحصول عليه من MCS؟ 4 وحدات معالجة مركزية، وذاكرة وصول عشوائي سعة 32 جيجابايت، ومحرك أقراص ثابتة سعة 1 تيرابايت، ونظام تشغيل Ubuntu Linux، وتخزين كائنات سعة 500 جيجابايت.

الخطوة 1: إطلاق الخادم الظاهري

دعنا ننتقل مباشرة إلى صلب الموضوع ونقوم بإنشاء خادمنا الافتراضي (المعروف أيضًا باسم "المثيل") في حسابك الشخصي في MCS. في متجر التطبيقات، تحتاج إلى تحديد وتثبيت حزمة LAMP الجاهزة، وهي عبارة عن مجموعة من برامج الخادم (LAMP = Linux، Apache، MySQL، PHP) اللازمة لتشغيل معظم مواقع الويب.

سحابة للجمعيات الخيرية: دليل الهجرة
سحابة للجمعيات الخيرية: دليل الهجرة
سحابة للجمعيات الخيرية: دليل الهجرة
حدد تكوين الخادم المناسب وقم بإنشاء مفتاح SSH جديد. بعد النقر على زر "تثبيت"، سيبدأ تثبيت الخادم ومكدس LAMP، وسيستغرق ذلك بعض الوقت. سيعرض النظام أيضًا تنزيل مفتاح خاص على جهاز الكمبيوتر الخاص بك لإدارة الجهاز الظاهري عبر وحدة التحكم وحفظه.

بعد تثبيت التطبيق، لنقم على الفور بإعداد جدار الحماية، ويتم ذلك أيضًا في حسابك الشخصي: انتقل إلى قسم "الحوسبة السحابية -> الأجهزة الافتراضية" وحدد "إعداد جدار الحماية":

سحابة للجمعيات الخيرية: دليل الهجرة
تحتاج إلى إضافة إذن لحركة المرور الواردة عبر المنفذ 80 و9997. يعد هذا ضروريًا في المستقبل لتثبيت شهادات SSL والعمل مع phpMyAdmin. ونتيجة لذلك، يجب أن تبدو مجموعة القواعد كما يلي:

سحابة للجمعيات الخيرية: دليل الهجرة
يمكنك الآن الاتصال بالخادم الخاص بك عبر سطر الأوامر باستخدام بروتوكول 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 يحتوي على اسم المستخدم الذي قمت بتسجيل الدخول به حاليًا (افتراضيًا، هذا هو 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

أنت الآن بحاجة للتأكد من أن المستخدم يمكنه الوصول إلى موقعك. للقيام بذلك، سنقوم أولاً بتكوين ملفات المضيف الظاهري، والتي تحدد كيفية استجابة خادم الويب Apache للطلبات المقدمة إلى نطاقات مختلفة.

افتراضيًا، يحتوي Apache على ملف مضيف افتراضي 000-default.conf يمكننا استخدامه كنقطة بداية. سنقوم بنسخ هذا لإنشاء ملفات مضيف افتراضية لكل نطاق من نطاقاتنا. سنبدأ بنطاق واحد، ونقوم بتكوينه، ثم نسخه إلى نطاق آخر، ثم إجراء التعديلات اللازمة مرة أخرى.

يتطلب التكوين الافتراضي لـ Ubuntu أن يكون لكل ملف مضيف افتراضي امتداد *.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 لدينا خدمة dns-master.ru، وسنعرضها بمثال.

يُشار عادةً إلى إعداد سجل A للنطاق الرئيسي على النحو التالي (علامة @):

سحابة للجمعيات الخيرية: دليل الهجرة
عادةً ما يتم تحديد السجل A للنطاقات الفرعية على النحو التالي:

سحابة للجمعيات الخيرية: دليل الهجرة
عنوان IP هو عنوان خادم Linux الذي أنشأناه للتو. يمكنك تحديد TTL = 3600.

بعد مرور بعض الوقت، سيكون من الممكن زيارة موقعك، ولكن في الوقت الحالي فقط من خلال http://. في الخطوة التالية سنضيف الدعم https://.

الخطوة 4: إعداد شهادات SSL مجانية

يمكنك الحصول على شهادات Let's Encrypt SSL مجانًا لموقعك الرئيسي وجميع النطاقات الفرعية. يمكنك أيضًا تكوين التجديد التلقائي الخاص بهم، وهو أمر مريح للغاية. للحصول على شهادات SSL، قم بتثبيت Certbot على الخادم الخاص بك:

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

قم بتثبيت حزمة Certbot لـ Apache باستخدام 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 -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. سيتم تحديث التكوين وإعادة تشغيل Apache لتطبيق التغييرات.

تم الآن تنزيل شهاداتك وتثبيتها وتشغيلها. حاول إعادة تحميل موقعك باستخدام https:// وسترى رمز الأمان في متصفحك. إذا قمت باختبار الخادم الخاص بك اختبار خادم مختبرات SSL، سيحصل على درجة 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

إضافة تعليق