Kami dengan senang hati mengumumkan Cactus 3. Cactus 3 menghadirkan serangkaian fitur baru yang hebat seperti sidik jari aset, saluran aset, url cantik, peristiwa sistem file Mac asli, konfigurasi server nama otomatis, dukungan untuk beberapa backend penerapan (Google Sites) dan banyak lagi. Sebagian besar kode telah ditulis ulang, disertai dengan serangkaian pengujian unit yang ekstensif. Terima kasih banyak kepada Thomas Orozco dan kontributor lainnya.
Cactus adalah generator situs web statis yang sederhana namun kuat menggunakan Python dan sistem templat Django. Cactus juga memudahkan pengembangan secara lokal dan menyebarkan situs Anda ke S3 secara langsung. Ini berfungsi baik untuk situs web perusahaan, portofolio, pribadi, dukungan, dan blog.
Untuk mendapatkan gambaran singkat, tonton tutorial video singkat ini.
Cactus didasarkan pada gagasan bahwa sebagian besar fitur dinamis di situs web saat ini dapat dilakukan menggunakan Javascript sementara situs sebenarnya tetap statis. Situs web statis mudah dihosting dan biasanya sangat cepat.
Saya mengembangkan Cactus karena saya menginginkan sistem standar dan mudah yang dapat digunakan oleh para desainer di Sofa untuk membangun dan menerapkan situs web yang cepat. Jadi pengguna umumnya adalah desainer yang paham teknologi, ingin menggunakan templat, tapi tidak suka mengacaukan pengaturan Django atau S3.
Sejak itu telah berkembang cukup banyak dengan sistem plugin yang mendukung blogging, spriting, versioning dan dapat diperluas.
Anda dapat menemukan diskusi lebih lanjut tentang generator situs statis di diskusi Berita Peretas ini.
Ada juga contoh proyek blog yang disertakan.
Instal Cactus dengan satu liner berikut
sudo easy_install cactus
Jika Anda tidak melihat kesalahan, kini Anda dapat membuat proyek baru
cactus create ~/www.mysite.com
Untuk mulai mengedit dan melihat pratinjau situs Anda, ketikkan yang berikut ini. Kemudian arahkan browser Anda ke localhost:8000 dan mulailah mengedit. Cactus akan secara otomatis membangun kembali proyek Anda dan menyegarkan browser Anda jika ada perubahan.
cd ~/www.mysite.com
cactus serve
Setelah Anda siap untuk menyebarkan situs Anda ke S3, Anda dapat menjalankan yang berikut ini. Anda memerlukan kunci akses Amazon Anda. Jika Anda belum memilikinya, baca cara mendapatkannya di sini.
cactus deploy
Voila. Situs web Anda dibuat oleh Cactus dan dihosting di S3!
Anda dapat membuat proyek baru dengan membuat struktur proyek baru seperti ini. Pastikan folder tujuan belum ada.
cactus create [path]
Jika Anda tidak melihat kesalahan apa pun, jalur yang Anda tunjuk sekarang akan terlihat seperti ini.
- .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
Setelah membuat situs, Anda dapat mulai membangun dengan menambahkan halaman ke konten, yang dapat mengandalkan templat. Jadi misalnya jika Anda menginginkan halaman /articles/2010/my-article.html
Anda akan membuat file dengan direktori di folder halaman Anda. Kemudian Anda dapat mengedit berkas dan menggunakan fitur templat Django.
Saat Anda membangun situs Anda, itu akan menghasilkan versi statis di folder build yang dapat Anda unggah ke host mana pun. Pada dasarnya ini akan merender setiap halaman dari folder halaman Anda, menyalinnya ke folder build dan menambahkan semua aset statis ke dalamnya sehingga menjadi situs web mandiri. Anda dapat membangun situs Anda seperti ini:
cd [your-cactus-path]
cactus build
Situs web Anda yang dirender sekarang dapat ditemukan di folder [path]/.build (tersembunyi). Cactus juga dapat menjalankan server web kecil untuk melihat pratinjau situs Anda dan memperbaruinya ketika Anda membuat perubahan apa pun. Ini sangat berguna saat mengembangkan untuk mendapatkan umpan balik visual langsung.
Anda dapat menjalankannya seperti ini:
cactus serve
Cactus memudahkan untuk menautkan ke halaman dan aset statis di dalam proyek Anda dengan menggunakan tag templat {% static %} dan {% url %}. Misalnya jika Anda berada di halaman /blog/2011/Jan/my-article.html
dan ingin menautkan ke /contact.html
Anda akan menulis yang berikut:
<a href="{% url '/contact.html' %}">Contact</a>
Gunakan saja URL yang biasa Anda gunakan: jangan lupa garis miring di depannya.
Kaktus menggunakan templat Django. Mereka harus sangat mirip dengan sistem templating lainnya dan memiliki beberapa kemampuan bagus seperti warisan. Singkatnya: variabel terlihat seperti ini {{ name }}
dan tag seperti ini {% block title %}Welcome{% endblock %}
. Anda dapat membaca dokumentasi lengkap di situs Django.
Untuk mengaktifkan plugin untuk situs Anda, ubah nama file dari [PLUGIN].disabled.py menjadi [PLUGIN].py.
Cactus dapat menyebarkan situs web Anda langsung ke S3, yang Anda perlukan hanyalah kredensial Amazon dan nama bucket. Cactus mengingatnya dalam nama file konfigurasi config.json agar penerapan di masa mendatang tidak menimbulkan kesulitan. Kunci rahasia disimpan dengan aman di Keychain atau layanan serupa di OS lain.
cactus deploy
Setelah menerapkan Anda dapat mengunjungi situs webnya secara langsung. Cactus juga memastikan semua file teks Anda dikompresi dan menambahkan header caching.
Untuk contoh lengkap cara membuat blog di atas Cactus, lihat CactusBlog.
Plugin blog mengambil judul postingan, penulis, dan tanggal dari metadata. Misalnya:
title: My first post
author: Koen Bok
date: 22-07-2012
{% extends "post.html" %}
{% block body %}
{% endblock %}
Ubah config.json
untuk menyetel jalur blog khusus, nama penulis default, atau pola tanggal yang digunakan untuk mengurai metadata. Standarnya adalah:
"blog": {
"path": "blog",
"author": "Unknown",
"date-format": "%d-%m-%Y"
}
Secara default, Anda dapat mendeklarasikan variabel untuk disertakan di atas setiap halaman, misalnya:
test_text: Lorem Ipsum
<p>{{ test_text }}</p>
Anda dapat mendeklarasikan variabel menggunakan YAML. Kelilingi saja blok dengan ---
dan ...
Pemisah Dokumen. Kemudian objek dan array akan tersedia di dalam templat:
---
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>
Pustaka PyYAML digunakan untuk fungsi ini.
Cactus dilengkapi dengan saluran aset untuk file statis Anda. Jika Anda ingin menggunakannya, pastikan Anda menggunakan tag templat {% static %} untuk menautkan ke aset statis Anda: aset tersebut mungkin akan diganti namanya dalam proses tersebut.
Ubah config.json
, dan tambahkan ekstensi yang ingin Anda jadikan sidik jari:
"fingerprint": [
"js",
"css"
],
Ini memungkinkan Anda mengaktifkan cache dengan tanggal kedaluwarsa yang panjang. Ketika sebuah file berubah, namanya akan mencerminkan perubahan tersebut. Cocok untuk saat Anda menggunakan CDN.
Ubah config.json
, dan tambahkan ekstensi yang ingin Anda optimalkan:
"optimize": [
"js",
"css"
],
Secara default, Cactus akan menggunakan:
Lihat plugins/static_optimizes.py
di proyek Anda untuk memahami cara kerjanya. Sangat mudah untuk menambahkan pengoptimal Anda sendiri!
Jika Anda ingin peta situs Anda memiliki jalur absolut, Anda perlu menambahkan kunci url situs ke config.json Anda
Anda dapat mengaktifkannya dengan menambahkan modifikasi konfigurasi Anda dan menambahkan:
"site-url": "http://yoursite.com",
Perhatikan bahwa Anda perlu melakukan ini jika ingin peta situs Anda valid untuk Alat Webmaster Google.
Jika Anda tidak ingin memiliki ".html" di URL Anda, Cactus dapat menulis ulang URL tersebut untuk Anda, dan membuat tampilan "/halaman-saya.html" muncul sebagai "/halaman-saya/", dengan membuat "/halaman-saya/", halaman/index.html".
Anda dapat mengaktifkannya dengan menambahkan modifikasi konfigurasi Anda dan menambahkan:
"prettify": true
Perhatikan bahwa jika Anda akan menggunakan ini, Anda harus menyetel "Meta canonical" ke URL yang Anda gunakan agar tidak merusak peringkat pencarian Anda:
<link rel="canonical" href="{{ CURRENT_PAGE.absolute_final_url }}" />
Untuk menyiapkan zona yang di-hosting dan menghasilkan catatan server nama yang benar untuk domain Anda, pastikan bucket Anda adalah nama domain yang valid, dan jalankan:
cactus domain:setup
Cactus akan kembali dengan satu set server nama yang kemudian dapat Anda masukkan dengan registrar Anda. Untuk melihat daftarnya lagi, jalankan:
cactus domain:list
Jika domain Anda 'telanjang' (misalnya tanpa www), Cactus akan menambahkan keranjang tambahan yang mengalihkan varian www dari domain Anda ke domain telanjang Anda (jadi www.cactus.com ke kaktus.com). Semua hal di atas hanya berlaku di Amazon untuk saat ini.
Cactus akan secara otomatis membuat file robots.txt
dan sitemap.xml
untuk Anda berdasarkan halaman Anda.
Ini akan membantu bot mengindeks halaman Anda untuk Google dan Bing misalnya.
Kaktus diuji pada Python 2.6, 2.7, 3.4 dan 3.5. Ini mungkin juga berfungsi pada Python 3.3.