Cactus 3을 발표하게 되어 기쁘게 생각합니다. 자산 지문 인식, 자산 파이프라인, Pretty URL, 기본 Mac 파일 시스템 이벤트, 자동 이름 서버 구성, 다중 배포 백엔드(Google 사이트 도구) 지원 등과 같은 훌륭한 새 기능 세트를 제공합니다. 광범위한 단위 테스트와 함께 코드의 많은 부분이 다시 작성되었습니다. Thomas Orozco와 기타 기여자들에게 많은 감사를 드립니다.
Cactus는 Python과 Django 템플릿 시스템을 사용하는 간단하지만 강력한 정적 웹 사이트 생성기입니다. Cactus를 사용하면 쉽게 로컬에서 개발하고 사이트를 S3에 직접 배포할 수 있습니다. 회사, 포트폴리오, 개인, 지원 웹사이트 및 블로그에 적합합니다.
빠른 개요를 보려면 이 짧은 비디오 튜토리얼을 시청하세요.
Cactus는 요즘 웹사이트의 대부분의 동적 기능을 Javascript를 사용하여 수행할 수 있으면서도 실제 사이트는 정적으로 유지할 수 있다는 아이디어를 기반으로 합니다. 정적 웹사이트는 호스팅하기 쉽고 일반적으로 매우 빠릅니다.
나는 Sofa의 디자이너가 빠른 웹사이트를 구축하고 배포하는 데 사용할 수 있는 표준적이고 쉬운 시스템을 원했기 때문에 Cactus를 개발했습니다. 따라서 일반적인 사용자는 기술에 능숙하고 템플릿을 사용하고 싶지만 django 또는 S3 설정을 방해하는 것을 좋아하지 않는 디자이너입니다.
그 이후로 블로그, 스프라이트, 버전 관리를 지원하고 확장 가능한 플러그인 시스템으로 상당히 발전했습니다.
이 Hacker News 토론에서 정적 사이트 생성기에 대한 자세한 토론을 찾을 수 있습니다.
예제 블로그 프로젝트도 포함되어 있습니다.
다음 하나의 라이너로 Cactus를 설치하십시오.
sudo easy_install cactus
오류가 표시되지 않으면 이제 새 프로젝트를 생성할 수 있습니다.
cactus create ~/www.mysite.com
사이트 편집 및 미리보기를 시작하려면 다음을 입력하세요. 그런 다음 브라우저에서 localhost:8000을 가리키고 편집을 시작하세요. Cactus는 자동으로 프로젝트를 다시 빌드하고 변경 사항이 있으면 브라우저를 새로 고칩니다.
cd ~/www.mysite.com
cactus serve
사이트를 S3에 배포할 준비가 되면 다음을 실행할 수 있습니다. Amazon 액세스 키가 필요합니다. 아직 가지고 있지 않다면 여기에서 얻는 방법을 읽어보세요.
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 %}
과 같습니다. django 사이트에서 전체 문서를 읽을 수 있습니다.
사이트에 플러그인을 활성화하려면 파일 이름을 [PLUGIN].disabled.py에서 [PLUGIN].py로 변경하세요.
Cactus는 웹 사이트를 S3에 직접 배포할 수 있으며 Amazon 자격 증명과 버킷 이름만 있으면 됩니다. Cactus는 향후 배포 시 어려움을 겪지 않도록 구성 파일 이름 config.json에 이를 기억합니다. 비밀 키는 키체인이나 다른 OS의 유사한 서비스에 안전하게 저장됩니다.
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
확인하세요. 자신만의 옵티마이저를 추가하는 것은 매우 쉽습니다!
사이트맵에 절대 경로를 포함하려면 config.json에 사이트 URL 키를 추가해야 합니다.
구성을 수정하고 다음을 추가하여 이를 활성화할 수 있습니다.
"site-url": "http://yoursite.com",
사이트맵이 Google 웹마스터 도구에 유효하도록 하려면 이 작업을 수행해야 합니다.
URL에 ".html"을 포함하지 않으려면 Cactus가 해당 URL을 다시 작성하고 "/my- page/index.html' 파일입니다.
구성을 수정하고 다음을 추가하여 이를 활성화할 수 있습니다.
"prettify": true
이 기능을 사용하려면 검색 순위가 떨어지지 않도록 "메타 표준"을 사용 중인 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으로). 위의 모든 내용은 현재 Amazon에만 해당됩니다.
Cactus는 페이지를 기반으로 robots.txt
및 sitemap.xml
파일을 자동으로 생성합니다.
이는 예를 들어 봇이 Google 및 Bing에 대한 페이지를 색인화하는 데 도움이 됩니다.
Cactus는 Python 2.6, 2.7, 3.4 및 3.5에서 테스트되었습니다. 아마도 Python 3.3에서도 작동할 것입니다.