يسعدنا أن نعلن عن Cactus 3. فهو يقدم مجموعة من الميزات الجديدة الرائعة مثل بصمات الأصول، وخط أنابيب الأصول، وعناوين URL الجميلة، وأحداث نظام ملفات Mac الأصلية، والتكوين التلقائي لخادم الأسماء، ودعم واجهات النشر المتعددة (مواقع Google) والمزيد. تمت إعادة كتابة أجزاء كبيرة من التعليمات البرمجية، مصحوبة بمجموعة واسعة من اختبارات الوحدات. شكرا جزيلا لتوماس أوروزكو والمساهمين الآخرين.
Cactus هو منشئ مواقع ويب ثابت بسيط ولكنه قوي يستخدم Python ونظام قوالب Django. تعمل Cactus أيضًا على تسهيل التطوير محليًا ونشر موقعك على S3 مباشرةً. إنه يعمل بشكل رائع مع مواقع الشركة والمحفظة والشخصية ومواقع الدعم والمدونات.
للحصول على نظرة عامة سريعة، شاهد هذا الفيديو التعليمي القصير.
يعتمد Cactus على فكرة أن معظم الميزات الديناميكية على مواقع الويب هذه الأيام يمكن إجراؤها باستخدام Javascript بينما يمكن للموقع الفعلي أن يظل ثابتًا. من السهل استضافة مواقع الويب الثابتة وعادةً ما تكون سريعة جدًا.
لقد قمت بتطوير Cactus لأنني أردت نظامًا قياسيًا وسهلاً يمكن للمصممين في Sofa استخدامه لإنشاء مواقع ويب سريعة ونشرها. لذلك سيكون المستخدمون النموذجيون مصممين ماهرين في التكنولوجيا، ويريدون استخدام القوالب، لكنهم لا يحبون العبث بإعداد Django أو S3.
منذ ذلك الحين تطورت قليلاً مع نظام المكونات الإضافية الذي يدعم التدوين والبرمجة وإصدار الإصدارات وهو قابل للتوسيع.
يمكنك العثور على مزيد من المناقشات حول مولدات المواقع الثابتة في مناقشة Hacker News هذه.
يوجد أيضًا مثال لمشروع مدونة متضمن.
قم بتثبيت Cactus بالبطانة التالية
sudo easy_install cactus
إذا لم ترَ أي أخطاء، فيمكنك الآن إنشاء مشروع جديد
cactus create ~/www.mysite.com
لبدء التحرير ومعاينه موقعك اكتب ما يلي. ثم قم بتوجيه متصفحك إلى localhost:8000 وابدأ في التحرير. سيقوم Cactus تلقائيًا بإعادة بناء مشروعك وتحديث متصفحك بناءً على التغييرات.
cd ~/www.mysite.com
cactus serve
بمجرد أن تصبح جاهزًا لنشر موقعك على S3، يمكنك تشغيل ما يلي. سوف تحتاج إلى مفاتيح الوصول الخاصة بك إلى أمازون. إذا لم يكن لديك واحدة بعد، فاقرأ كيفية الحصول عليها هنا.
cactus deploy
فويلا. موقع الويب الخاص بك تم إنشاؤه بواسطة Cactus وتم استضافته على S3!
يمكنك إنشاء مشروع جديد عن طريق إنشاء هيكل مشروع جديد مثل هذا. تأكد من أن المجلد الوجهة غير موجود بعد.
cactus create [path]
إذا لم ترَ أية أخطاء، فيجب أن يبدو المسار الذي أشرت إليه الآن بهذا الشكل.
- .build Generated site (upload this to your host)
- pages Your actual site pages
- index.html
- sitemap.xml
- robots.txt
- error.html A default 404 page
- templates Holds your django templates
- base.html
- static Directory with static assets
- images
- css
- js
- plugins A list of plugins. To enable remove disabled from the name
بعد إنشاء موقعك، يمكنك البدء في البناء عن طريق إضافة صفحات إلى المحتويات، والتي يمكن أن تعتمد على القوالب. لذلك، على سبيل المثال، إذا كنت تريد صفحة /articles/2010/my-article.html
، فيمكنك إنشاء الملف باستخدام الأدلة في مجلد الصفحات الخاص بك. ثم يمكنك تحرير الملف واستخدام ميزات قالب Django.
عند إنشاء موقعك، سيتم إنشاء إصدار ثابت في مجلد البناء الذي يمكنك تحميله إلى أي مضيف. في الأساس، سيعرض كل صفحة من مجلد الصفحات الخاصة بك، وينسخها إلى مجلد البناء ويضيف جميع الأصول الثابتة إليها حتى يصبح موقع ويب مستقلاً بذاته. يمكنك بناء موقعك مثل هذا:
cd [your-cactus-path]
cactus build
يمكن الآن العثور على موقع الويب الخاص بك في المجلد (المخفي) [path]/.build. يمكن لـ Cactus أيضًا تشغيل خادم ويب صغير لمعاينة موقعك وتحديثه عند إجراء أي تغييرات. يعد هذا مفيدًا حقًا عند التطوير للحصول على تعليقات مرئية مباشرة.
يمكنك تشغيله مثل هذا:
cactus serve
يعمل Cactus على تسهيل الارتباط نسبياً بالصفحات والأصول الثابتة داخل مشروعك باستخدام علامتي القالب {% static %} و{% url %}. على سبيل المثال، إذا كنت في الصفحة /blog/2011/Jan/my-article.html
وترغب في الارتباط بـ /contact.html
، فستكتب ما يلي:
<a href="{% url '/contact.html' %}">Contact</a>
ما عليك سوى استخدام عنوان URL الذي تستخدمه عادةً: لا تنس الشرطة المائلة الرائدة.
يستخدم Cactus قوالب Django. يجب أن تكون مشابهة جدًا لأنظمة القوالب الأخرى وأن تتمتع ببعض الإمكانيات الرائعة مثل الميراث. باختصار: يبدو المتغير مثل هذا {{ name }}
وعلامة مثل {% block title %}Welcome{% endblock %}
. يمكنك قراءة الوثائق الكاملة على موقع جانغو.
لتمكين مكون إضافي لموقعك، قم بتغيير اسم الملف من [PLUGIN].disabled.py إلى [PLUGIN].py.
يمكن لـ Cactus نشر موقع الويب الخاص بك مباشرةً على S3، وكل ما تحتاجه هو بيانات اعتماد Amazon الخاصة بك واسم الحاوية. يتذكر Cactus هذه العناصر في اسم ملف التكوين config.json لتسهيل عمليات النشر المستقبلية. يتم تخزين المفتاح السري بشكل آمن في Keychain أو الخدمات المماثلة على أنظمة تشغيل أخرى.
cactus deploy
بعد النشر يمكنك زيارة الموقع مباشرة. يتأكد Cactus أيضًا من ضغط جميع ملفاتك النصية ويضيف رؤوس التخزين المؤقت.
للحصول على المثال الكامل لكيفية إنشاء مدونة فوق Cactus، راجع CactusBlog.
يأخذ المكون الإضافي للمدونة عنوان المنشور والمؤلف والتاريخ من البيانات الوصفية. على سبيل المثال:
title: My first post
author: Koen Bok
date: 22-07-2012
{% extends "post.html" %}
{% block body %}
{% endblock %}
قم بتعديل config.json
لتعيين مسار مدونة مخصص، أو اسم المؤلف الافتراضي، أو نمط التاريخ المستخدم لتحليل البيانات التعريفية. الإعدادات الافتراضية هي:
"blog": {
"path": "blog",
"author": "Unknown",
"date-format": "%d-%m-%Y"
}
افتراضيًا، يمكنك الإعلان عن تضمين المتغيرات أعلى كل صفحة، على سبيل المثال:
test_text: Lorem Ipsum
<p>{{ test_text }}</p>
يمكنك الإعلان عن المتغيرات باستخدام YAML بدلاً من ذلك. ما عليك سوى إحاطة الكتلة بـ ---
و ...
فواصل المستندات. بعد ذلك ستكون الكائنات والمصفوفات متاحة داخل القوالب:
---
header_text: Lorem Ipsum
custom_object:
name: Lorem
description: Ipsum
custom_array:
-
name: lorem
-
name: ipsum
...
{% for item in custom_array %}
<p>{{ header_text }}: {{ item.name }}</p>
{% endfor %}
<p>{{ custom_object.name }} | {{ custom_object.description }}</p>
يتم استخدام مكتبة PyYAML لهذه الوظيفة.
يأتي Cactus مع مسار أصول لملفاتك الثابتة. إذا كنت ترغب في استخدامه، فتأكد من استخدام علامة القالب {% static %} للربط بأصولك الثابتة: قد تتم إعادة تسميتها في هذه العملية.
قم بتعديل config.json
وأضف الامتدادات التي تريد أخذ بصمات أصابعها:
"fingerprint": [
"js",
"css"
],
يتيح لك هذا تمكين التخزين المؤقت مع تواريخ انتهاء الصلاحية الطويلة. عندما يتغير ملف، سوف يعكس اسمه التغيير. رائع عند استخدام CDN.
قم بتعديل config.json
وأضف الامتدادات التي تريد تحسينها:
"optimize": [
"js",
"css"
],
بشكل افتراضي، سيستخدم Cactus:
قم بمراجعة plugins/static_optimizes.py
في مشروعك لفهم كيفية عمل ذلك. من السهل جدًا إضافة أدوات تحسين الأداء الخاصة بك!
إذا كنت ترغب في أن يكون لخريطة الموقع الخاصة بك مسارات مطلقة، فأنت بحاجة إلى إضافة مفتاح عنوان url للموقع إلى ملف config.json الخاص بك
يمكنك تمكين ذلك عن طريق إضافة تعديل التكوين الخاص بك وإضافة:
"site-url": "http://yoursite.com",
لاحظ أنك تحتاج إلى القيام بذلك إذا كنت تريد أن تكون خريطة الموقع الخاصة بك صالحة لأدوات مشرفي المواقع من Google.
إذا كنت لا ترغب في عدم وجود ".html" في عناوين URL الخاصة بك، فيمكن لـ Cactus إعادة كتابتها لك، وجعل "/my-page.html" يبدو وكأنه "/my-page/"، عن طريق إنشاء "/my- page/index.html" الملف.
يمكنك تمكين ذلك عن طريق إضافة تعديل التكوين الخاص بك وإضافة:
"prettify": true
لاحظ أنه إذا كنت ستستخدم هذا، فيجب عليك بالتأكيد تعيين "Meta canonical" على عنوان URL الذي تستخدمه حتى لا تضر بتصنيفات البحث الخاصة بك:
<link rel="canonical" href="{{ CURRENT_PAGE.absolute_final_url }}" />
لإعداد منطقة مستضافة وإنشاء سجلات خادم الأسماء الصحيحة لنطاقك، تأكد من أن مجموعتك اسم مجال صالح، وقم بتشغيل:
cactus domain:setup
سيعود Cactus بمجموعة من خوادم الأسماء التي يمكنك بعد ذلك إدخالها مع المسجل الخاص بك. لرؤية القائمة مرة أخرى، قم بتشغيل:
cactus domain:list
إذا كان نطاقك "مجردًا" (على سبيل المثال، بدون www)، فستضيف Cactus إنشاء مجموعة إضافية تعيد توجيه متغير www الخاص بنطاقك إلى نطاقك المجرد (لذا من www.cactus.com إلى cactus.com). كل ما سبق هو أمازون فقط في الوقت الحالي.
سيقوم Cactus تلقائيًا بإنشاء ملف robots.txt
و sitemap.xml
لك استنادًا إلى صفحاتك.
سيساعد هذا الروبوتات على فهرسة صفحاتك لـ Google وBing على سبيل المثال.
تم اختبار Cactus على Python 2.6 و2.7 و3.4 و3.5. من المحتمل أنه يعمل على Python 3.3 أيضًا.