البحث في الموقع
المحتوى عن 'توزيع'.
-
مقدمة إنّ azk عبارة عن أداة خفيفة مفتوحة المصدر، تستطيع استخدامها لتنسيق بيئات التطبيقات. هل سبق أن كان لديك تطبيق يعمل على محطة العمل المحليّة الخاصة بك، ووجدت أنّ الإعدادات تختلف كليًا عندما تقوم بنشر التطبيق على مخدّم إنّتاج. تُقدّم هذه المقالة أداة تنسيق، تُدعى azk، والتي يتم استخدامها حاليًا من قبل هذه التطبيقات، وهي قابلة للاستخدام لأكثر من ذلك بكثير. عندما تقوم بنشر تطبيق جاهز للعمل مع azk، فإنّه يمكنك بسهولة إنّ تشغلّه محليًا أو في مخدّم إنّتاج. لا يجعل azk تشغيل التطبيق فقط سهلًا و سريعًا بل كل تبعياته أيضًا، بما فيها نظام التشغيل المطلوب، اللغات، أطر العمل، قواعد البيانات و التبعيات الأخرى (المهام الثقيلة، الطويلة، التكرارية، الأكثر عرضة للخطأ)، سواء كنت تعمل في بيئة محلية أو على مخدم. إنّ غرض هذه المقالة، هو إظهار كيف يعمل azk كأداة تنسيق، باستخدام تطبيق Rails بسيط يُدعى Stringer كمثال. يهتم azk بالعديد من التفاصيل خلف الكواليس، لجعل عملية التنسيق أسهل. لهذا، تحوي هذه المقالة على العديد من الخطوات الاختيارية، التي ليست بضرورية لإعداد التطبيق المثال، ولكنها تشرح آلية عمل azk. سوف نقوم بتشغيل التطبيق من شفرة المصدر على جهاز حاسوب محلي، ثم نشره على مخدّم، و من ثم سنقوم ببعض التغييرات المحليّة، وبعدها نقوم بنشر هذه التغييرات، و من ثم سنقوم بعميلة الإرجاع. بعد إتمام هذه المقالة، سوق تحصل على فكرة جيدة حول كيفية عمل azk كأداة تنسيق سير عملية التطوير والنشر الخاصة بك. كيف يعمل؟ بدايةً، يُنسق azk بيئة التطبيق على جهاز الحاسب المحلي الخاص بك. حالما يعمل التطبيق لديك محليًا، سيقوم azk أيضًا بتنسيق نشره إلى المخدّم Droplet الخاص بك. طالما يُشغل azk التطبيقات من شفرة المصدر، فإنّك تستطيع أن تعمل مع التطبيق محليًا (إذا كنت ترغب بذلك)، و من ثم تقوم بنشره أو استرجاعه مرة ثانية بدون أيّة خطوات إضافية خاصة. يعزل azk البيئات التي تستخدم الحاويات، ولهذا فمن الآمن تشغيل التطبيقات على جهاز الحاسب المحلي الخاص بك. يعمل azk مع كل من المشاريع الجديدة، تلك التي تبدأ منذ الصفر، أو مع الشيفرات الموجودة سابقًا. استخدام azk مع تطبيقات مخصّصة باستخدام القائمة الحالية من التطبيقات التي تم تشكيلها مسبقًا للعمل مع azk كأمثلة، و مع قليل من العمل الإضافي ستستطيع إعداد أي مشروع للعمل مع azk. للقيام بهذا أضف الملف Azkfile إلى مشروعك. Azkfile عبارة عن ملف رئيسي manifest، يحتوي العناصر الضرورية لتشغيل التطبيق، و يقوم بتلخيص علاقاتها فيما بينها (نظام التشغيل، اللغات، قواعد البيانات، … ). فوائد إضافة الملف Azkfile إلى مشروعك: استخدام azk لأتمته إعداد البيئة لمشروعك محليًا و عند النشر. يستطيع الأشخاص الأخرين، الذين يرغبون بنشر تطبيقك، القيام بهذا باستخدام azk. المتطلبات الأساسية للمتابعة مع هذه المقالة، فإنّك ستحتاج إلى جهاز حاسوب يقوم بتشغيل أية من أنظمة التشغيل التالية(64 - بت) للبيئة المحليّة الخاصة بك: Mac OS X 10.6 (Snow Leopard) أو أي إصدار لاحق. Ubuntu 12.04، 14.04 or 15.10 Fedora 21 or 22 أيضاً ستحتاج إلى إنّ تكون قادر على تشكيل git commits. يحتاج جهاز حاسوبك إلى تثبيت Git. إنّظر إلى هذه السلسلة لاستخدام Git من أجل التعليمات الخاصة لأنظمة التشغيل Linux، أو قم بزيارة صفحة تحميل Git. تأكّد من قيامك بتشغيل الأوامر المقترحة : git config --global user.email "you@example.com" git config --global user.name "Your Name" وذلك قبل القيام بقراءة المقالة، انظر الروابط السابقة للحصول على التفاصيل حول Git. لاحظ أنّه لا يوجد ضرورة للحصول على مخدّم فعّال Droplet في هذا الدرس. سيقوم azk بتشكيل واحد باستخدام واجهة التطبيق DigitalOcean’s API. يُكلف نشر مخدم Droplet المال، ومن أجل هذا الدرس ستقوم بنشر مخدم Droplet، يحوي افتراضيًا فقط واحد جيجابايت. مستخدمي Linux : تثبيت الـ Docker: إذا كنت تستخدم نظام تشغيل ( Linux Ubuntu أو Fedora)، ستحتاج لتثبيت الـ 1.8.1 Docker أو أي اصدار لاحق، وذلك لاستخدامه كبرمجية حاويّة. إنّ تشغيل سكريبت تثبيت Docker، هي إحدى طرق تثبيته. (بشكل عام، كُن متأكد من فهمك ماذا يفعل السكريبت، وذلك قبل القيام بتشغيله): $ wget -nv https://get.docker.com/ -O- -t 2 -T 10 | bash إذا كنت ترغب بتعلّم المزيد حول تثبيت Docker في نظام التشغيل Linux، تفحّص تعليمات التثبيت المتاحة في ملفات التوثيق الرسمية. مستخدمي Mac OS X : تثبيت الـ VirtualBox: ستحتاج إلى VirtualBox 4.3.6 أو أي اصدار لاحق، وذلك لاستخدامه كبرمجيّة حاويّة. لتثبيت VirtualBox، حمّل رزمة تثبيت Virtualbox المناسبة من صفحة التحميل الرسميّة. الخطوة الأولى: تثبيت azk محليًا سنقوم بتثبيت azk، باستخدام سكريبت تثبيت المشروع. تأكد من فهمك ماذا يفعل أي سكريبت، قبل تنفيذه في نظامك. إذا كان لديك للتو نسخة قديمة مثبتة من azk، فإنّك تستطيع استخدام سكريبت التثبيت لتحديث الـ azk. وإلا قُم بتفحص إرشادات تثبيت الحزم لنظم التشغيل المدعومة. تثبيت azk على Linux: إذا كنت تستخدم نظام التشغيل (Linux Ubuntu أوFedora)، قُم بتشغيل هذا الأمر في الوحدة الطرفية، وذلك لتثبيت azk باستخدام سكريبت المشروع. نحن ننصح بتدقيق أي سكريبت قبل تشغيله على نظامك: $ wget -nv http://azk.io/install.sh -O- -t 2 -T 10 | bash بعد إتمام التثبيت، قُم بتسجيل الخروج، ومن ثم تسجيل الدخول مرة أخرى، وذلك لجعل كل التعديلات فعّالة. يتجلى سبب تسجيل الخروج، في أنّه خلال عملية التثبيت، سيتم إضافة مستخدمك إلى مجموعة الـ docker. تُعد هذه الخطوة مطلوبة، وبذلك نستطيع استخدام الـ Docker بدون أن تكون المستخدم الأساسي (root). أي عليك الخروج من الجلسة الحالية، لتحصل على كل التعديلات المضافة. إذا كنت ترغب بتعلم المزيد حول مجموعة الـ Docker، فإنّك تستطيع تفحص التوثيق الرسمي لـ Docker. تثبيت azk على Mac OS X: قُم بتشغيل الأمر التالي في الوحدة الطرفية، وذلك لتثبيت azk باستخدام سكريبت المشروع. نحن ننصح بتدقيق أي سكريبت قبل تشغيله على نظامك: $ curl -sSL http://www.azk.io/install.sh | bash الخطوة الثانية: التحقق من تثبيت azk حالما يصبح تثبيت azk كامل، قُم بتشغيل الأمر الذي في الأسفل، وذلك للتحقق من نجاح عملية التثبيت: $ azk version يتحقق هذا الأمر من نسخة الـ azk المثبّتة. إذا أعاد هذا الأمر رقم النسخة (على سبيل المثال azk 0.17.0 أو أي إصدار لاحق)، فالوضع جيد و تستطيع الانتقال إلى الخطوة التالية. تهانينا لك على تثبيت azk في البيئة المحليّة الخاصة بك. إذا لم يكن الأمر كذلك، فاقرأ أدناه أحد أقسام تحرّي الأخطاء وإصلاحها للحصول على المساعدة. استكشاف الأخطاء وإصلاحها في عملية تثبيت azk في Linux: دعونا نتفحص نسخة الـ Docker المثبّتة، وذلك عن طريق تشغيل الأمر: $ docker version ستحتاج إلى الإصدار 1.8.1 أو أحدث. على كل حال، إذا حصلت على رسالة خطأ، فهذا يعني لم تحصل حتى الآن على تثبيت Docker، تتبع إرشادات التثبيت الخاصة بنظام التشغيل في ملفات توثيق Docker. بعد قيامك من التأكد من حصولك على النسخة المثبّتة المناسبة من Docker، قُم بتشغيل الأمر التالي كمستخدم sudo و ذلك للتأكد من أنّ مستخدمك في مجموعة docker: $ id -Gn إذا كانت قائمة المجموعات تتضمن docker، هذا يعني أنه تم إعداده بشكل صحيح. و إلا، إذا لم تحصل على الكلمة docker في قائمة المجموعات، قُم بتشغيل هذا الأمر لإضافة مستخدمك إلى المجموعة: $ sudo usermod -aG docker $USER ومن ثم قُم بتسجيل الخروج، و تسجل الدخول مرة أخرى. تحقق من الأمر id –Gn مرة أخرى للتأكد من أنّه يُعيد قائمة المجموعات مع كلمة docker بينهم. إذا كانت هذه الإرشادات غير كافية لجعل الـ Docker يعمل بالشكل المناسب (على سبيل المثال، لا تزال غير قادر على تشغيل أمر docker version بشكل صحيح)، يّرجى الرجوع إلى تعليمات تثبيت Docker. استكشاف الأخطاء وإصلاحها في عملية تثبيت azk في Mac OS X: تأكّد من تثبيت VirtualBox $ which VBoxManage إذا كان هذا يُعيد مسار ملف (مثل، usr/local/bin/VboxManage/)، فنستطيع المضي قُدمًا. و إلا، إذا كان يُعيد رسالة " not found "، هذا يعني ليس لديك تثبيت VirtualBox. في هذه الحالة، قُم بتحميل و تثبيت رزمة تثبيت VirtualBox من الموقع الرسمي لهم. الخطوة الثالثة (اختيارية): التعلّم حول التطبيق التجريبي Stringer لقد قُمنا باختيار Stringer كتطبيق تجريبي لهذه المقالة، وذلك لأنه تطبيق بسيط، وتم إعداده للعمل مع azk. وهو عبارة عن تطبيق Rails مع حالة استخدام محددة جيدًا: قارئ RSS أساسي. المزيد حول Stringer تُقدم بعض مواقع الأخبار أيضًا محتواها في صيغة تغذية RSS. هذه عبارة عن صيغة ملف XML قياسية، تُمكن الناشرين من نشر المعطيات بشكل اتوماتيكي. قارئ RSS هو عبارة عن برنامج مُستخدم للاشتراك، وتقديم محتوى الـ RSS. تُزيل عملية الاشتراك في تغذية RSS لموقع ما، حاجة المستخدمين للتفحص اليدوي للموقع للحصول على المحتوى الجديد. حيث يستطيع المستخدمين تشكيل قائمة بالتغذيات المُشترك فيها، وتخصيص محتواهم على قارئ RSS (عادةً على شكل قائمة مرتبة ترتيبًا زمنيًا) الخطوة الرابعة (اختيارية): إعداد تطبيق مُخصّص لاستخدام azk طالما أنّ التركيز الأساسي لهذه المقالة هو على إظهار كيفية عمل azk للتطبيقات، التي تملك للتو تفاصيل البيئة المنصوص عليها للعمل مع azk، فعلى المدى الطويل هذه الأداة، هي أكثر فائدة عندما يمكنك استخدامها لنشر أي تطبيق. لهذا، خُذ نظرة عن كيفية مقارنة هذه النسخة من Stringer مع النسخة الأساسية من Stringer في المستودع. تملك نسخة azk فقط إضافتين اثنتين إلى نسخة Stringer الأصلية: ملف Azkfile، الذي يزّود بمعلومات البيئة لـ azk زر azk لتشغيل المشروع Run Project يمكن تعلم المزيد حول جعل azk يعمل مع تطبيقات أخرى، وذلك عن طريق ملفات توثيق azk حول ملف Azkfile و زر تشغيل المشروع Run Project. تالياً، سوف نرى كيف يبدو التطبيق الصديق لـ azk في GitHub. الخطوة الخامسة (اختيارية): استخدام زر تشغيل المشروع لـ azk على GitHub إنّ جزء الممارسات الأفضل من azk من أجل مشاريع GitHub، هو التوضيح الجيد لكيفيّة عمل هذا المشروع مع azk. لهذا، بدلاً من إظهار فقط أمر الـ azk في وسط ملف readme للمشروع، فإنّ المشروع الذي يستخدم azk يستطيع استخدام زر تشغيل المشروع، وذلك للعزل البصري لأمر الـ azk. يستخدم Stringer هذا الزر. قُم بزيارة قسم التشغيل المحلي لنسخة azk المتشعبة من Stringer. أضغط زر تشغيل المشروع Run Project. في أول مرة تضغط فيها زر تشغيل المشروع، سوف ترى شرح بسيط عن ماذا يجري. عندما تصبح جاهزا للمضي قُدماً، انقر على الزر OK، DISMISS في أسفل الشرح. بعدها سيتم توجيهك إلى صفحة مع أمر azk لمشروع Stringer. $ azk start -o run-project/stringer يمكنك دائماً أنّ تنقر على إشارة ما هذا؟ على الزاوية العليا اليُمنى، وذلك لترى الشرح مرّة أخرى. في مركز الشاشة، يوجد صندوق أوامر مع ثلاث علامات تبويب: curl، wget، azk. طالما لدينا للتو مُثبت azk فتستطيع استخدام علامة التبويب azk. هذا هو الأمر، الذي سنستخدمه في الخطوة التالية للتشغيل الفعلي لـ Stringer. الخطوة السادسة: تشغيل Stringer محليًا في هذا القسم سنستخدم azk لتشغيل Stringer على محطّة العمل المحليّة. دعونا نتأكد أنّنا في المسار الرئيسي home على جهاز حاسوبنا المحلي (إذا قمت باستخدام مجلد تثبيت مختلف، تذكر فقط تغيير الأوامر إلى مسارك المختار): $ cd ~ أمضي قُدمًا، و قم بتشغيل الأمر التالي على حاسوبك المحلي، وذلك لتشغيل Stringer: $ azk start -o run-project/stringer طالما هذه هي أول مره تقوم بها بتشغيل azk، سيطلب منك قبول بنود الخدمة. و يجب أنّ تظهر رسالة كالتالية: ? ========================================================================= Thank you for using azk! Welcome! Before we start، we need to ask: do you accept our Terms of Use? http://docs.azk.io/en/terms-of-use ========================================================================= (Y/n) اضغط على Y إذا كنت موافق أو N إذا كنت غير موافق. و من ثم اضغط على ENTER لتأكيد جوابك. في حالة عدم موافقتك، فلن تتمكن من استخدام azk. و اخيراً، سيقوم azk أوتوماتيكيًا بتحميل الشفرة المصدر لـ Stringer، إضافة إلى أنّ الملف المسند Azkfile سيقوم بتشغيل هذا الشفرة في بيئة معزولة و آمنة في حاسوبك المحلي. ومن ثم سيتم سؤالك فيما إذا كنت ترغب ببداية تشغيل عميل الـ azk. ? The agent is not running، would you like to start it? (Y/n) العميل هو عبارة عن مُركب azk، الذي يقوم بإعداد Docker (على نظام التشغيل Linux )، أو بإعداد الآلة الافتراضيّة VirtualBox (على نظام التشغيل Mac OS X). اضغط ENTER للجواب “Yes” (الخيار الافتراضي). في أول مرة تُشغل فيها العميل، سيقوم azk بتشغيل إعداداته. يقوم الإعداد بالعديد من الأشياء وراء الكواليس، بما في ذلك توليد الملف /etc/resolver/dev.azk.io، الذي يحوي إعدادات نظام أسماء النطاقات DNS، لتصميم العناوين التي تنتهي باللاحقة dev.azk.io. يستخدم azk هذه اللاحقة عند تشغيل التطبيقات لاستخدام العناوين القابلة للقراءة بدلاً من الاستخدام اليدوي للعناوين من الشكل http://localhost:PORT_NUMBER . أيضاً هذا يقوم بتجنب تعارض أرقام المنافذ بين التطبيقات المختلفة. بشكل أساسي يقوم هذا بنفس الشيء عند تحرير ملفك /etc/hosts لإعادة توجيه اسم نطاق محليًا. إذا حصلت على رسالة من الشكل التالي: ? Enter the vm ip: (192.168.50.4) فإنّك تستطيع إدخال أي عنون IP محلي، ترغب بتشغيل التطبيق عليه. يجب أن تكون الحالة الافتراضية مناسبة لجميع الحالات. للموافقة على هذا، فقط اضغط ENTER. لإتمام إعدادات عميل الـ azk، سيتم سؤالك عن كلمة المرور الخاصة بالمستخدم sudo (لمستخدمي نظام التشغيل Mac OS X، هي عبارة عن كلمة مرور المُشرف admin). الآن سيبدأ azk بالعمل. سوف ترى أنّ azk يُحمّل العناصر المُسردة في الملف Azkfile (على صيغة صور Docker ). من الممكن أن يستغرق تحميل هذه الصور أول مرة عدة دقائق (حوالي 10 دقائق أو أقل). حالما يُكمل azk الإعداد، سيقوم مُتصفحك بشكل أتوماتيكي بتحميل شاشة البدء لـ Stringer على حاسوبك المحلي. كما تستطيع إنّ ترى، أنّه يستخدم اسم نطاق محلي DNS، و هذا التطبيق مرئي على http://stringer.dev.azk.io. و تستطيع الوصول إلى التطبيق بشكل يدوي عبر الذهاب إلى http://stringer.dev.azk.io . إذا كنت ترغب بإعداد كلمة المرور و بداية التشغيل باستخدام التطبيق، فإنّك تستطيع فعل ذلك. نحن نرغب فقط برؤية أنّ azk يستطيع تشغيل Stringer محلياً. والآن طالما لديك Stringer يعمل على الحاسوب المحلي، فتستطيع نشره من جهاز الحاسوب لديك إلى المخدّم Droplet. الخطوة السابعة: الحصول على الرمز DigitalOcean API Token قبل أن نتمكن من نشر Droplet من azk، فإنّنا نحتاج إلى رمز API token. يُعطي هذا الرمز الإذن لـ azk لنشر مخدّم جديد على حسابك. في أول مرّة تقوم بها بتشغيل azk من هذه البيئة باستخدام هذا الرمز، سيتم نشر واحد جيجابايت مخدّم جديد Ubuntu 14.04 Droplet . و ستستخدم عمليات النشر اللاحقة من نفس البيئة المحليّة، نفس المخدّم المفرد Droplet. اتّبع الإرشادات من قسم المراجع المرتبطة بالمقالة حول كيفية تشكيل رمز الوصول الشخصي. و يجب أن يمتلك الرمز المُشكّل تصاريح الكتابة القراءة. قُم بنسخ المحارف الأربعة و الستين بالترميز الست عشري لرمزك، بشكل مشابه للتالي: Example API Token A17d6a72566200ad1a8f4e090209fe1841d77d7c85223f769e8c5de47475a726 سوف ترى هذا الرمز النصيّ فقط مرة واحدة، لذلك قُم بنسخه إلى مكان آمن. (تذكّر، إذا تم اختراق هذا الرمز، فإنّه يمكن استخدامه للدخول إلى حسابك، لذلك حافظ عليه خاصًا). من أجل الإرشادات أسفلا، تذكر استبدال الرمز المثال بالرمز الحقيقي الخاص بك. اذهب إلى مجلد Stringer: $ cd ~/stringer احفظ رمز الوصول الشخصي في ملف ستدعوه env. للقيام بهذا، قُم بتشغيل أمر تشكيل ملف (لا تنسى استبدال الرمز): $ echo "DEPLOY_API_TOKEN=a17d6a72566200ad1a8f4e090209fe1841d77d7c85223f769e8c5de47475a726" >> .env يجب إنّ يبدو محتوى الملف env. بالشكل التالي: DEPLOY_API_TOKEN=a17d6a72566200ad1a8f4e090209fe1841d77d7c85223f769e8c5de47475a726 الخطوة الثامنة (اختيارية): التعلم حول مفاتيح SSH ليس عليك إنّ تقوم بأي شيء لإعداد مفتاح SSH من أجل azk، ولكن من المفيد معرفة الكيفية التي يستخدم فيها azk هذا المفتاح. يستخدم azk مفتاح SSH للوصول إلى المخدّم Droplet. إذا كان لديك للتو مفتاح SSH، فإنّ azk سيستخدمه. لرؤية فيما إذا كان لديك مفتاح SSH على جهاز الحاسوب لديك، شغّل: $ ls ~/.ssh/*.pub إذا قام بإرجاع رسالة “not found”، فهذا يعني إنّه ليس لديك أيّة مفاتيح SSH على جهاز الحاسوب. في هذه الحالة، سيولّد azk بشكل أتوماتيكي مفتاح SSH جديد، ليتم استخدامه حصريًا لنشر أي تطبيق جديد من جهاز الحاسوب لديك. سيقوم azk بتوليد مفتاحه في الذاكرة المحجوزة له، ولن يقوم بأيّة تعديلات على مسارك ~/.ssh. إذا كنت ترغب بتفحص المفتاح العام المولّد، يمكنك تشغيل الأمر التالي بعد نشر التطبيق الأول: $ azk deploy shell -c "cat /azk/deploy/.config/ssh/*.pub" الخطوة التاسعة: النشر مع azk بشكل افتراضي، سيولد azk مخدّم DigitalOcean Droplet واحد جيجابايت، يُشغّل النظام Ubuntu 14.04، وذلك من أجل نشر تطبيقك. إذا كنت ترغب بنشر Droplet بمواصفات مختلفة، فيمكنك تغيير الإعدادات في خصائص envs لنظام deploy في الملف Azkfile.js . من أجل الإرشادات الإضافية أشر إلى ملفات توثيق حول نشر azk . أولاً، اذهب إلى مسار Stringer ( أو إلى مسار تطبيقك): $ cd ~/stringer ومن ثم، ابدأ عملية النشر، فقط قُم بتشغيل: $ azk deploy إنّ الأمر azk deploy، هو الأمر الذي ستقوم بتشغيله معظم الأوقات، عندما تستخدم azk لتنسيق تطبيقك. من الممكن أن تستغرق أول عملية نشر فترة معينة (حوالي عشر دقائق)، حتى يقوم azk بكل العمل. بشكل مخصص، على azk القيام بما يلي: تحميل عناصر الدعم ( صورة Docker للنشر) تشكيل و إعداد الـ Droplet رفع شفرة المصدر للتطبيق إلى المخدّم Droplet تشغيل التطبيق بعدها ستستغرق كل عملية نشر جديده لهذا التطبيق من جهاز الحاسوب لديك مدة زمنية قليلة (حوالي 30 ثانية أو أقل)، هذا لان معظم الخطوات الطويلة جاهزة للتو. إذا كان مفتاحك SSH محمي بكلمة مرور، فسيكون مطلوباً وقت أكبر لعملية النشر. فقط قُم بكتابة كلمة المرور للمفتاح SSH، و أضغط زر ENTER في كل مرة تظهر رسالة كالتالية: Output Enter passphrase for ~/.ssh/id_rsa: سيظهر خرج الوحدة الطرفية بعض الإجراءات المُتخذة على النظام البعيد، تنتهي برسالة النشر الناجحة App successfully deployed at http://your_server_ip. قُم بزيارة الموقع http://your_server_ip لعرض التطبيق المُستضاف على الخادم الخاص بك. من الآن، يُمكنك تغيير شفرة التطبيق على جهاز الحاسوب الخاص بك، و يمكنك اختباره محلياً، و يمكنك نشر التغييرات على المخدّم Droplet بواسطة الأمر azk deploy. الخطوة العاشرة: تعديل Stringer لتوضيح سهولة استخدام azk لنشر تطبيق، للتخصيص، أو للتحكم في النسخة، دعونا نقوم بعدد من التغييرات على صفحة الاشتراك Stringer، و من ثم نقوم بإعادة نشر التطبيق. تأكد من كونك على مسار Stringer: $ cd ~/stringer دعونا نقوم بتعديل الملف app/views/first_run/password.erb، الذي هو عبارة عن الصفحة الحاوية على النص لصفحة الاشتراك الأولى. استخدم nano أو محرر النصوص المفضل لديك: $ nano ~/stringer/app/views/first_run/password.erb هنا نقوم بإضافة السطر الإضافي، الذي يقول "! It’s easy with azk ": app/views/first_run/password.erb <div class="setup" id="password-setup"> <h1><%= t('first_run.password.title') %> <span class="orange"> <%= t('first_run.password.anti_social') %></span>.</h1> <h2><%= t('first_run.password.subtitle') %></h2> <h2>It's easy with azk!</h2> <hr /> . . . </div> قُم بالحفظ و الخروج من محرر النصوص. إذا كنت تستخدم nano، اضغط CTRL+O للحفظ، و CTRL+X للخروج. طالما إنّ Stringer مُعد افتراضياً للعمل في وضع الانتاج، لذلك فإنّ إعادة تحديث صفحة المتصفح ليس بكافٍ لتشغيل التغييرات. بل قُم بإعادة تشغيل التطبيق من azk: $ azk restart stringer -o يجب على علامة التبويب الجديدة للمتصفح أن تفتح النسخة الجديدة من Stringer. أسفل النص الافتراضي مباشرةً “There is only one user: you”، يجب الآن أن يكتب “!It’s easy with azk”. الخطوة الحادية عشر: إعادة نشر Stringer الآن، دعونا نُودع (commit) التغييرات داخل نسخة نظام التحكم، من أجل أن نستطيع نشرها. $ git add app/views/first_run/password.erb $ git commit . سيظهر لك محرر نصوص (على الأرجح nano أو vim). أدخل رسالة إيداع commit، مثل It is easy with azk. سيتم استخدام هذه الرسالة commit لتسمية الإصدارات من تطبيقك داخل azk، لذلك اختر الرسالة التي من شأنها تحفيز ذاكرتك، إذا كنت بحاجة إلى الرجوع إليها في وقت لاحق. احفظ و أغلق رسالة الـ commit. إذا حصلت على الخطأ : fatal: empty ident name (for <sammy@azk.(none)>) not allowed عندها قُم بتشغيل أوامر الإعدادات المقترحة من أجل Git لإعداد عنوان إيميل و اسم (المزيد من التفاصيل في قسم المتطلبات الأساسية). لنشر تغييراتك و رفع تشغيل التطبيق على Droplet، قُم بتشغيل: $ azk deploy بعد الانتهاء من ذلك، قُم بالوصول إلى عنوان IP لـ Droplet من متصفحك (مثلاً http://your_server_ip) .عندها يجب أن ترى أيضاً هنا السطر الجديد !It’s easy with azk سيقوم هذا النشر الجديد بتشكيل نسخة جديدة من التطبيق على Droplet. إنّ كل نسخ التطبيق مخزنة، لذلك يمكنك العودة إلى نسخة سابقة ومن ثم إلى الأمام مرّة أخرى. الخطوة الثانية عشر: الرجوع إلى خطوة سابقة للحصول على كل النسخ المتاحة من تطبيقنا على Droplet، شغّل الأمر التالي محليًا: $ azk deploy versions يجب إنّ تكون النتيجة بقائمة من الشكل: Output ⇲ Retrieving deployed versions... ➜ v2 It is easy with azk v1 Merge branch 'master' of https://github.com/swanson/stringer لإرجاع التطبيق إلى نسخة أقدم، فقط قوم بتشغيل: $ azk deploy rollback v1 إنّ المعامل v1 عبارة عن رقم النسخة، الذي يظهر على خرج الأمر azk deploy versions. إذا قمت بتشغيل الأمر بدون هذا المعامل (مثلاً، . azk deploy rollback )، سيرجع عندها التطبيق إلى نسخة سابقة تماماً قبل النسخة الحالية. لتفحص إتمام عملية الرجوع، فقط قُم بتحديث علامة تبويب المتصفح، التي تظهر نسخة المخدم. الآن عليك إنّ ترى التطبيق بدون النص الذي قمنا بإدخاله، أي يجب أن ترى النسخة الأصليّة من التطبيق. وإذا كنت ترغب بالرجوع للأمام، يمكنك اختيار النسخة الأحدث: $ azk deploy rollback v2 أتت التسمية لهذه النسخ من رسائل الـ git commit في الخطوة السابقة. الخاتمة في هذا الدليل التعليمي، لقد استخدمنا تطبيق Rails بسيط، لتوضيح كيف يقوم azk بأتمتة مهام إعداد بيئة تطبيقنا. يجعل هذا من السهل نشر التطبيق نفسه في عدة بيئات. إذا أعجبت بعملية النشر من azk، خُذ بعين الاعتبار استخدامه لمشروعك الخاص، أو إضافة الملف Azkfile إلى fork مشروع أخر مفتوح المصدر. يدعم azk بالإضافة إلى عملية rollback و versions، غيرها من الأوامر الفرعيّة المساعدة، التي تسمح لنا بإنّجاز بعض الإجرائيات الإضافية (مثلاً، الوصول إلى Droplet’s shell عن طريق المفتاح SSH ). ترجمة -وبتصرّف- للمقال How To Deploy a Rails App with azk لصاحبه Felipe Arenales
-
تُناسب الأنظمة الشبكية (grids) جيدًا لاستخدامها لتقسيم محتوى مُحدّد مُسبقًا وتوجيهه للتناسب مع الصفحة، ولكن عند تصميم مواقع ويب انسيابية بطبعها، سنكون بحاجة إلى شيء ما إضافي ....حسنا، إنه التصميم المُتجاوب (responsive). إن إدخال النسب التي يستخدمها المهندسون المعماريون والنحاتون ومصمموا الكتب جميعهم قد استخدموها في أعمالهم لمساعدتهم في وضع الأساس لمنتوجاتهم من أجل تطبيق مقياس موادهم من الرسم إلى تشكيل البنية النهائية. يمكننا تطبيق آلية مماثلة على الويب من خلال التركيز على الأساس والشكل للمحتوى الذي نملكه أولًا ومن ثم العمل بشكل عكسي نحو التصميم المُتمدّد والأنظمة الشبكية المبنية على النسب والتي تدعو إلى الانسجام بين المحتوى content والمُخطط layout والشاشة screen. الأعمدة مُملة، مُشيّدة على مفهوم العلاقاتيُمكن لخيارات المخطّط أن تضع الأساس لتصاميمنا، كما أحبت مصممة الجرافيك Anne Burdick أن تُعلّمنا بقولها: هل نؤيد ترتيب المحتوى؟ أم هل يتطلب المحتوى لمسة إنسانية؟ هل ينبغي أن ننقاد نحو الفوضى؟ مهما كان الأساس لذلك، فإن كلًا منها يُمكن أن يُقدّم بشكل ناجح في مخططك من خلال استخدام: النسبة التامّة (even ratio (1:1، النسبة الذهبية (golden ratio (1:1.618، أو النسب العشوائية random proportions (أو اللانسبة) على التوالي. إن النسبة التي نختارها ستكون بمثابة الحمض النووي (DNA) الذي من خلاله تتشكّل كامل قراراتنا في التخطيط. هذا الرقم بمفرده سوف يربط كل عنصر من تصميمنا، ومن خلال ضبطه سنكون قادرين على التأثير بشكل جذري على بُنية تصاميمنا. النسب ذات الدرجات المُنخفضة -أو التي تحوي أرقامًا باختلافات صغيرة فيما بينها- سوف تُسفر عن اختلافات في المُخطط، وستعمل بشكل جيد من أجل الدقة، والمحتوى الهادئ مثل المدونات الشخصية أو المقالات الطويلة.النسب الأكبر ينتج عنها تباين في أحجام المكونات، مما يجعلها مثالية للمزيد من المحتوى الديناميكي. مصفوفة ذات نسبة تامّة الحجم من الصور مرتبة، منظمة وقوية. مصفوفة مبنية على أساس النسبة الذهبية تُشعرك بواقعيتها وديناميكيتها. مصفوفة فوضوية مُثيرة للاهتمام ومُقلقة إلى حدٍ ما. النسب المنطقية Rational Ratiosيُمكن أن تتألف النسبة من أي رقمين مُعطية إيانا عددًا غير محدود من الاحتمالات، ولكن لتضييق الاحتمالات، قد يكون من الأفضل البدء بالشيء المألوف. النسب المنطقية ودّية بنفس القدر الذي تعتبر فيه الرياضيات غير مُخيفة إلى حد كبير: النسبة التامّة Even 1:1 نسبة الأنصاف Halves 1:2 نسبة الأثلاث Thirds 1:3 نسبة الأرباع Fourths 1:4 قاعدة الأثلاث، هي مثال معروف لقوة النسب المنطقية في التخطيط. المحتوى المنظم للغاية مثل مصفوفات الصور أو مقاطع الفيديو أو النص الحيادي أو الرسمي يتم تقديمه بشكل أفضل من خلال نسبة منطقية. هذه النسب تعمل بشكل جيّد عند التصميم المُتناظر، ولكن يمكن استخدامها للتخطيطات غير المُتناظرة أيضًا. النسب غير المنطقية Irrational Ratiosفي كتاب The Book of Rectangles، Spatial Law and Gestures of The Orthogons Described – 1956 جمَع المُصمم والمهندس المعماري التشيكي Wolfgang von Wersin مجموعة من النسب الديناميكية المُستخدمة من طرف الفنانين، المهندسين المعماريين والخطاطين على مرّ التاريخ لتوجيه أعمالهم. حسب Wersin، كان يُعتقد بأنه "لا شيء يتفوّق على هذه النسب". بالتالي فلا بأس أبدا للبدء بها. Quadrat (or Square/Even) 1:1 Hemidiagon 1:1.118 Trion 1:1.154 Quadriagon 1:1.207 Biauron 1:1.236 Penton 1:1.272 Diagon 1:1.414 Bipenton 1:1.458 Hemiolion 1:1.5 Auron (the golden ratio) 1:1.618 Hecton (or Sixton) 1:1.732 Doppelquadrat (Halves) 1:2 النسبة غير المنطقية الأكثر شهرة في التصميم هي بالطبع النسبة الذهبية golden ratio المُشتقة من نماذج في الطبيعة والنموذج البشري. النسب غير المنطقية تعطينا زيادات صغيرة في النسب، وعلاقاتها الخاصة شديدة الحساسية وتعمل بشكل أفضل في المخططات غير المُتكافئة / غير المتناظرة. ماذا غير ذلك؟من تلقاء نفسها فإن النسبة ليست كافية لإنشاء تركيبة مُترابطة. لحسن الحظ فإن الهندسة النقية ليست دليلنا الوحيد هنا. لطالما أحببت مفهوم Bringhurst في اختيار الخطوط استنادًا إلى من قام بتصميمهم وأين تم ذلك. ربما بالإمكان تطبيق منهجية مُماثلة على التخطيط، حيث نشتق النسب من التأثيرات العرضية مثل نوع الخيارات أو حتى الموسيقى. العمل ضمن مقياسالتركيبة الناجحة تستخدم تنوعًا لإنشاء التسلسل الهرمي والحركة. باستخدام النسبة التي اخترناها يُمكننا استقراء مصفوفة من الأحجام مثل الكثير من النوتات على السلم الموسيقي، ثم بناء مخططاتنا باستخدام (النوتات) –أو عروض widths- من ذلك المقياس. ثم بإمكاننا تكرار وتخطي جميع أنحاء المقياس لإنشاء نوع من اللحن البصري. لبناء مقياسنا، نختار أولًا وحدة أساس. أود أن أقترح استخدام أساس حجم الخط للطابعة الخاصة بك من أجل زيادة الربط بين نسب التخطيط والمحتوى الخاصة بك. دعونا نستخدم 1em لإبقاء الحسابات بسيطة، ثم نضرب وحدتنا الأساسية بالرقم على الجانب الأيمن من نسبتنا لتوليد الحجم التالي من المقياس وتكرار ذلك حتى نحصل تنوع كافي من الأحجام لبناء مُخططنا (ثمانية أجزاء ينبغي أن تكون كافية). ثمانية نوتات مولدة باستخدام النسبة الذهبية من خلال تقرير الأحجام بناء على مقياس يُمكننا أن نختار العلاقات التي تتناسب بشكل أفضل مع أساس تصميمنا. الفروقات الكبيرة في المقاييس يمكن أن تكون نتيجتها وخيمة. يمكن أن تكون الفروقات الصغيرة أكثر دقة مما هي عليه في المخططات ذات الأعمدة التقليدية. بغض النظر عن حجم التغيير فإن النتيجة مُتصلة هندسيًا من خلال نسبتنا. مصفوفة صور من شبكة مؤلفة من ستة أعمدة ذات نسبة تامّة مصفوفة صور من شبكة مؤلفة من ستة أعمدة ذات نسبة ذهبية تخفيف الحمل الإدراكيعند العمل مع النسب والمقاييس فإن قراراتك الخاصة بالمُخطط ستصبح مُعرفة بشكل أكثر صرامة. على سبيل المثال، إذا كنا نطرح محتوى مدونة من النمط الشائع –صورة زائد نسخة- (نُسمي هذا الأمر بدعاية مُغالى بها blurb)، وهناك حاجة إلى ثلاثة أو أكثر من الأعمدة في الشبكة ذات النسبة التامّة لإعطاء أي تمييز في الحجم بين العناصر. دعاية مُغالى فيها من شبكة من ثلاثة أعمدة مُعتمدة النسبة التامة في شبكة مُعتمدة على النسبة فإن عمودين فقط سيكونان ضروريان، والمدونات مُعدّة لأن تكون أكثر تعبيرًا عن الشخصية، وأعتقد بأن النسبة الذهبية بأبعادها البشرية ستكون مُناسبة لذلك. دعاية مُغالى فيها في شبكة من عمودين مُعتمدة النسبة الذهبية عرض كل نص هو أكبر بـ 2.618 ضعفًا من الصورة المُقابلة له -أو نحو الضعف على مقياسنا-. الحد من الأعمدة يساعدنا في طريقتين، حيث يُعطينا: * وضوحًا أكبر للمخطط: يتم تعزيز التسلسل الهرمي والمحاذاة من خلال خيارات التقييد الصارمة. * قرارات أقل عند التصميم: القيود تُبقي عقولنا مُركزة على القضايا الكبرى مثل المحتوى وسهولة الاستخدام. ببساطة، فإن شبكة الدعاية المُغالى فيها blurb المُعتمدة على النسبة تُقنن العلاقة فيها بين عنصرين على أساس شكل المحتوى. باستخدام هذه العلاقة كبداية، يُمكننا تجسيد التمدد في نظام الشبكة المبني على المحتوى. لدينا هُنا شبكة دعاية مُغالى فيها شبكات داخل شبكاتيُمكننا الآن تصميم شبكات أبسط مبنية وبداخل بعضها البعض، وتتقاسم نسبة مُشتركة للحفاظ على الانسجام بين السياقات المُختلفة. أسمي شبكات مثل التي استخدمناها لمثالنا في الدعاية المُغالى بها بشبكة محتوى content grid. شبكات المحتوى تُحدّد العلاقات داخل قطعة من المحتوى قابلة للنقل وتعمل بشكل جيّد من أجل المقالات، ووحدات الأعمدة الجانبية sidebar modules، والعناصر الأخرى التي يُمكن إعادة استخدامها من نظام التصميم. لتقسيم مساحة الرؤية المُتاحة يُمكننا استخدام شبكة تخطيط عالمية layout grid والتي تتصرف أكثر كشبكات والتي قمنا باستخدامها في الويب منذ سنوات وحتى الآن. انبثاق نظام A system emergesبالاستمرار في مثال مدونتنا سوف نستخدم مقياسنا لاشتقاق شبكة محتوى أخرى من أجل منشوراتنا. في منشور المدونة النموذجي لدينا صورة كبيرة، وفحوى النص، وروابط الشبكات الاجتماعية، والصور المضمنة، وبعض المحتوى الداعم والموضوع على الهوامش. من خلال تجريب الترتيبات المتنوعة من مقياسنا يمكننا الوصول إلى شبكة تستوعب احتياجات محتوانا. شبكة مقال من أربع أعمدة باستخدام 1 و 2 من مقياسنا، العمود الأول الأرق يستضيف وحدة الشبكات الاجتماعية، بينما جميع الأعمدة الأربعة ستعطينا الفرصة لمحاذاة عناصر منشوراتنا حسب الحاجة. لتحويل هذه العروض إلى نسب CSS مُتمددة فإننا فقط بحاجة إلى إجمالي العروض المُتماثلة مع مقياسنا، ومن ثم تحويل كل عمود باستخدام صيغة Ethan Marcotte الشهيرة: حيث أن الهدف target هو عرض عمود، والسياق context هو مجموع كل الأعمدة المُستخدمة في الشبكة. (أو إذا كنت تواجه "صندوقًا مرنًا - flex-box" من أجل المُخطط فإنه يمكنك فقط استخدام أرقام النسبة بالضبط من مقياسك). يُمكننا بناء قسم ثلاثي بسيط "شبكة تخطيط" لاستيعاب أقسام محتوانا الأكبر: منطقة للعلامات التجارية branding وأزرار التنقل navigation، منطقة من أجل الجسم الرئيسي للمحتوى main body of content، ومنطقة ثالثة من أجل روابط المحتوى content links المُميزة وذات الصلة. من المُتحمل أن منطقة محتوانا الرئيسية تحتاج أن تكون أوسع لاستضافة محتوى منشوراتنا، ومنطقة أزرار التنقل navigation أكثر رقة. سوف نجد عروض الأعمدة من مقياسنا التي تُشعرنا أنها مُلائمة لمُخططنا مُعطية المساحة المُناسبة من أجل كل قسم. التماثل، شبكة مُخطط من ثلاثة أعمدة باستخدام 1 و 3 من مقياسنا. أخيرًا، نحن نضع شبكات محتوانا (شبكة المقال وشبكة الدعاية المُغالى فيها مُسبقًا) إلى شبكة مُخططنا، وخلق مُخطط يكون مُتمدد ويعمل تمامًا من قبل محتوانا. (يُمكنك الاطلاع على عرض تجريبي لمدونة عبر الضغط على الرابط التالي: http://alistapart.com/d/392/content-out-layout/demos/blog-golden.html) محتوانا الجديد المبني على النسبة الذهبية لمخطط المدونة. على سبيل المقارنة، لقد بنيت أيضًا نفس هذا المُخطط على شبكة Twitter Bootstrap’s المؤلفة من 12 عمود. (يُمكنك الاطلاع على عرض تجريبي لمدونة Bootstrap بالضغط على الرابط التالي: http://alistapart.com/d/392/content-out-layout/demos/blog-even.html ). والمُخطط المبني على النسبة يضم المحتويات بشكل أفضل وعند أي مقاس أو حجم عشوائي. التلاؤم مع القيودتكييف مُخططنا لطرق العرض المنوعة أصبح الآن أسهل بكثير، إذا أصبح لدينا مُتغيرات أقل لأخذها بعين الاعتبار. ومن أجل هذه الآلية يُمكننا بناء نموذج أولي مُتمدد في المُتصفح، ثم التدقيق أين يبدأ المُخطط بالتعثر عند تغيير حجم النافذة. التعرف على المفاهيم المُعتادةعندما تتمدد طريقة العرض وتتقلص فإن علاقاتنا سوف تتذبذب وخاصة في الأحجام فيما بين الأجهزة ذات المقاسات النموذجية مثل الجهاز اللوحي tablet والحاسب المكتبي الشخصي desktop. وبعد استكشاف كيفية انهيار المُخططات المُتمددة في العديد من المواقع ذات الزيارات الجيدة فقد قمت بعزل بعض القضايا الشائعة التي تُحدد أهمية أين يُطلب التغيير في الشبكة: سبعات 7sقاعدة السبعات 7s تجد صورة مُقصرة بحيث أن عرضها يتم تصغيره، ويتم ضغط النص المجاور طوليًا، ومقياس غير قابل للقراءة. النموذج الناتج يُشكل الرقم 7 ويخلق مُربع واضح من المساحة البيضاء تحت الصور. وهذا الأمر يصرف الانتباه بشكل خاص عند تكراره عبر المُخطط. أمثلة من نماذج قاعدة 7 والفراغات السلبية الناتجة. التراكمات Driftsتتم إزالة التراكمات من محتواها والذي لم تعد له أي علاقة بشيء. ويُمكن أن تزيل الاقتران مع القطع المُتباينة من المحتوى المُتناثر، أو تجرف فقط كل شيء من خلال هجرها. عبر المُخطط فإن الانجرافات تدمر التسلسل الهرمي وتسبب أنهارًا مُقلقة من المساحات السلبية. الصور قد جُرفت من المحتوى مُشكلة أعمدتها الخاصة بينما محتوى عناوينها ووصفها قد خسرا أي اتصال بصري ببعضها بعض. الالتصاقات Pinchesتحدث الالتصاقات عندما تقترب العناصر جدًا من الأجزاء الأخرى للمحتوى. يتم تدمير العلاقات عندما يقوم المُشاهد بعمل ارتباطات غير صحيحة: زوج من الصور مع عنوان خاطئ، روابط تذهب إلى قائمة من تشكيلها الخاص. وفي الحالات القصوى فإن المحتوى يصطدم على حساب كل قابلية للقراءة. تُسبب الالتصاقات نقاط بصرية ساخنة تصرف العين وتخلط بين العلاقات. إيجاد القيود الجوهرية elemental constraintsمن أجل التمدد فإن عناصر مُعينة ستحتاج انتباهًا خاصًا. ينبغي أن تكون المقاطع مُحافظة على مقياس قابلية القراءة. الإعلانات ينبغي أن تُحافظ على الحجم الموضع والمُتصل نسبيًا، والصور لا ينبغي أن يتم تكبيرها أكثر من دقتها. وضع عرض مُحدّد هو حل سهل، ولكنها لا تبني تمددًا حقيقيًا. عوضًا عن ذلك يُمكننا وضع عرض أدنى min-width و/أو عرض أقصى max-width في كود CSS الخاص بنا للحفاظ على سلامة هذا المحتوى. طريقة أكثر مُلائمة النهج القائم على النسبة للأنظمة الشبكية يسمح لنا بالانتقال إلى حيث لا يكون بإمكاننا معرفة حجم المكان الحاوي، ولا نوع المحتوى الذي سيتوزع في ذلك المكان. يُمكننا أن نبني أنظمة تخطيط من المحتوى لدينا وأن نعتمد على النسب للمحافظة على تركيبة مُتناغمة من هذه الأجزاء المُتفرقة. انطلاقًا من ذلك إن فهمًا عميقًا لكيفية فشل التصاميم المُتمددة يُمكن أن يُظهر لنا متى نتكيف مع هذه النُظم، ومتى نضيف قيودًا. زودنا Ethan Marcotte في 2009، ومرة أخرى في 2010 بالأدوات وأوضح أي منها للتجاوب. أعطانا Mark Boulton في 2011 فلسفة توجيهية. من نسج هذه الأفكار المؤثرة للغاية جنبًا إلى جنب مع الأسلوب المرن يُمكننا المضي قدمًا نحو تخطيطات أكثر تطورًا ومُصممة خصيصًا لاحتياجات محتوانا، ممزوجة بطابع فريد ومُناسبة لطبيعة موقعنا المُتغيرة دائمًا. ترجمة -وبتصرّف- للمقال Content out layout لصاحبه Nathan Ford.