Pelican – это невероятно хорошо созданный инструмент Python для создание статических сайтов.
Полный стек Python создается с помощью Шаблоны Pelican, Jinja2 и Markdown. Этот сайт развернут на Amazon S3 и в настоящее время обслуживает более ста тысяч читателей в месяц. Проблемы с масштабированием никогда не возникают, потому что статический сайт предварительно создается перед развертыванием, и веб-сервер просто отвечает с существующими файлами, а не выполнять какой-либо код на сервере во время цикл HTTP-запрос-ответ.
В этом уроке вы узнаете, как создать свой собственный статический сайт с нуля, используя Пеликан.
На нашем простом статическом сайте будут страницы, похожие на приведенный выше снимок экрана. но весь сайт можно легко настроить и расширить с помощью собственного дизайна и содержание.
Наши инструменты
Это руководство должно работать с Python 2 или 3, но Python 3 настоятельно рекомендуется для всех новых приложений. я использовал Python 3.6.1 в напишите этот пост. Помимо Python, в этом руководстве мы также будет использовать следующие зависимости приложения:
Начните с создания новой виртуальной среды для вашего проекта. Мой виртуальный называется staticsite , но вы можете назвать свое имя, соответствующее проекту вы создаете.
python3 -m venv staticsite
Активируйте virtualenv.
source staticsite/bin/activate
Virtualenv добавит свое имя в командную строку, когда активирован.
После активации virtualenv установите соответствующие зависимости. Используйте команду pip для установки Pelican и Markdown, которые также установите Jinja2, потому что Pelican указывает его как зависимость.
pip install pelican==3.7.1 markdown==2.6.8
Запустите команду pip , и после того, как все будет установлено, вы должны увидеть вывод похожее на следующее сообщение «Успешно установлено».
Теперь, когда наши зависимости установлены в virtualenv, мы можем начать создание нашего статического сайта.
Создать базовый сайт
Создайте новый каталог для хранения вашего проекта. Мой сайт будет содержать некоторые из мой любимый ретро-синтвейв художников в качестве примеров, но, конечно, ваш сайт может содержать любые темы что ты хочешь.
После создания перейдите в каталог проекта.
mkdir retrosynth
cd retrosynth
Запустите команду pelican-quickstart в новом каталоге проекта.
(staticsite) $ pelican-quickstart
Скрипт быстрого запуска ответит на кучу вопросов. следить вместе с ответами ниже или измените их для своего собственного имени сайта и желаемая конфигурация.
Welcome to pelican-quickstart v3.7.1.
This script will help you create a new Pelican-based website.
Please answer the following questions so this script can generate the files
needed by Pelican.
> Where do you want to create your new web site? [.]
> What will be the title of this web site? RetroSynthwave
> Who will be the author of this web site? Matt Makai
> What will be the default language of this web site? [en]
> Do you want to specify a URL prefix? e.g., http://example.com (Y/n) n
> Do you want to enable article pagination? (Y/n) n
> What is your time zone? [Europe/Paris] America/New_York
> Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Y/n)y
> Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Y/n) y
> Do you want to upload your website using FTP? (y/N) n
> Do you want to upload your website using SSH? (y/N) n
> Do you want to upload your website using Dropbox? (y/N) n
> Do you want to upload your website using S3? (y/N) y
> What is the name of your S3 bucket? [my_s3_bucket]
> Do you want to upload your website using Rackspace Cloud Files? (y/N) n
> Do you want to upload your website using GitHub Pages? (y/N) n
Done. Your new project is available at /Users/matt/devel/py/retrosynth
(staticsite) $
Что мы только что создали с помощью сценария быстрого запуска Пеликана? Проверять, выписываться новые файлы в каталоге.
(staticsite) $ ls
Makefile develop_server.sh pelicanconf.py
content fabfile.py publishconf.py
При быстром запуске было создано пять файлов и один новый каталог:
Makefile : удобные задачи команды make для общих операций, таких как
запуск сервера разработки, создание сайта и очистка постороннего
файлы сборки
fabfile.py : файл Fabric , содержащий некоторые из
те же типы команд, что и Makefile . Ткань – прекрасный код
библиотека, но пока я рекомендую пропустить файл Fabric, потому что
к сожалению, Fabric еще не поддерживает Python 3.
develop_server.sh : сценарий оболочки для запуска сервера разработки
pelicanconf.py : файл настроек для вашего проекта Pelican. Если тебя используют
в более ранних версиях Пеликана этот файл назывался settings.py
publishconf.py : еще один (необязательный) файл настроек, который можно рассмотреть
как “производственный” файл настроек, когда вы переходите из стадии разработки
и хотите развернуть свой сайт
content : расположение файлов разметки, которые следует хранить в
каталоги pages и posts
Мы можем использовать эти файлы в качестве основы для нашего нового статического сайта. Посмотрим что это выглядит по умолчанию, если запустить его через задачу devserver в Makefile.
make devserver
Сервер разработки Pelican начнет обслуживать ваш сайт с демон процесс. Перейдите к localhost: 8000 в своем Интернете. браузер, и вы увидите первую версию своего статического сайта.
Что делать, если в вашей системе не установлен make ? Перейти в output и используйте команду python -m http.server для использования встроенный HTTP-сервер Python 3 для ваших сгенерированных файлов.
Если вы хотите убить сервер разработки, найдите файл с именем pelican.pid в каталоге вашего проекта. Файл pelican.pid создан. от Pelican и содержит идентификатор процесса для вашего сервера разработки.
(staticsite) $ cat pelican.pid
1365
Используйте команды ps и grep для просмотра процесса, а затем остановите его. с помощью команды kill , как показано ниже. Помните, что ваш идентификатор процесса почти определенно отличаться от идентификатора 1365 для моего процесса.
Убейте сервер разработки сейчас, чтобы мы могли использовать разные команды для обслуживать наш сайт после того, как мы создадим наш первоначальный контент.
Вам решать, хотите ли вы использовать сервер разработки или нет. при создании вашего сайта. Каждый раз, когда я хочу просмотреть свои изменения для Полный стек Python Я регенерирую сайт, используя свой собственный Makefile, который оборачивает команду пеликан . Команда python -m http.server постоянно обслуживает изменения каждой сборки.
Хорошо, теперь, когда у нас есть начальные файлы, мы можем приступить к созданию некоторый исходный контент.
Напишите контент
Пеликан может принимать как Markdown, так и reStructureText. файлы разметки как входные.
Создайте новый подкаталог в content с именем posts . Изменить на каталог posts . Создайте новый файл с именем gunship.markdown с следующее содержание.
title: Gunship
slug: gunship
category: bands
date: 2017-06-09
modified: 2017-06-09
[Gunship](https://www.gunshipmusic.com/) is a *retro synthwave* artist out of the UK.
[Revel in Your Time](https://www.youtube.com/watch?v=uYRZV8dV10w),
[Tech Noir](https://www.youtube.com/watch?v=-nC5TBv3sfU),
[Fly for Your Life](https://www.youtube.com/watch?v=Jv1ZN8c4_Gs)
and
[The Mountain](https://www.youtube.com/watch?v=-HYRTJr8EyA)
are all quality songs by Gunship. Check out those amazing music videos!
Also take a look at other retro synthwave artists such as
[Trevor Something](https://trevorsomething.bandcamp.com/),
[Droid Bishop](https://droidbishop.bandcamp.com/),
[FM-84](https://fm84.bandcamp.com/)
and
[Daniel Deluxe](https://danieldeluxe.bandcamp.com/).
Наш файл make также может помочь нам восстановить сайт при внесении изменений. если мы решим не использовать сервер разработки.
Ранее мы использовали задачу devserver , но какие еще задачи доступны нам через Makefile ?
make
make должен показать нам все следующие задачи, которые мы можем выполнить.
Makefile for a pelican Web site
Usage:
make html (re)generate the web site
make clean remove the generated files
make regenerate regenerate files upon modification
make publish generate using production settings
make serve [PORT=8000] serve site at http://localhost:8000
make serve-global [SERVER=0.0.0.0] serve (as root) to :80
make devserver [PORT=8000] start/restart develop_server.sh
make stopserver stop local server
make ssh_upload upload the web site via SSH
make rsync_upload upload the web site via rsync+ssh
make dropbox_upload upload the web site via Dropbox
make ftp_upload upload the web site via FTP
make s3_upload upload the web site via S3
make cf_upload upload the web site via Cloud Files
make github upload the web site via gh-pages
Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html
Set the RELATIVE variable to 1 to enable relative urls
Задача html – это то, что мы ищем для вызова команды pelican используя наш файл настроек pelicanconf.py .
(staticsite) $ make html
pelican /Users/matt/devel/py/retrosynth/content -o /Users/matt/devel/py/retrosynth/output -s /Users/matt/devel/py/retrosynth/pelicanconf.py
Done: Processed 1 article, 0 drafts, 0 pages and 0 hidden pages in 0.14 seconds.
Наш сайт был регенерирован и помещен в каталог output .
Если вы использовали команду make devserver ранее, перейдите в output каталог и дайте возможность встроенному HTTP-серверу Python с помощью следующих команда.
cd output
python -m http.server
Наш первый пост во всей красе …
Вы можете изменить привязку порта HTTP-сервера, добавив число после команда, если вы хотите обслуживать более одного статического сайта одновременно или вы у вас уже есть приложение, привязанное к порту 8000.
python -m http.server 8005
Обратите внимание, что если вы используете Python 2, эквивалентная команда HTTP-сервера python -m SimpleHTTPServer .
На нашем сайте теперь есть очень простой контент. Мы могли бы расширить это начало до еще много сообщений и страниц, но давайте узнаем, как изменить сайт конфигурация.
Изменить конфигурацию сайта
Быстрый старт Пеликана предполагал множество значений по умолчанию, которые могут или не могут быть применимо к вашему сайту. Откройте файл pelicanconf.py , чтобы изменить некоторые значений по умолчанию.
Найдите переменную TIMEZONE . Если это не подходит для вашего местоположения затем измените его на свою зону. В Википедии есть удобный таблица допустимых значений часовых поясов .
Также измените кортеж LINKS , чтобы включить ваш сайт (или полный стек Python!) вместо ссылки «вы можете изменить эти ссылки». Изменить последняя строка LINKS , чтобы она выглядела как следующий кортеж кортежей.
Вместо использования файла make html на этот раз мы вызовем pelican прямо из командной строки. Нет ничего плохого с помощью Makefile , но лучше освоиться с Пеликаном напрямую, а не только через файлы сборки.
pelican -s pelicanconf.py -o output content
Теперь запустите HTTP-сервер, если он еще не запущен в другом окно терминала.
cd output
python -m http.server
Вернитесь в браузер и обновите, чтобы просмотреть обновленную конфигурацию.
Что происходит, когда мы нажимаем на заголовок сообщения в блоге? Это приводит нас к очень похожая страница с URL localhost: 8000/gunship.html .
Хорошо, мы обновили некоторые основные данные по всему сайту, но наш сайт действительно может используйте смену краски.
Изменить тему сайта
Изменив тему сайта, вы действительно можете превратить стандартный блог в какой бы тип сайта вы ни хотели создать. Хотя по умолчанию Пеликан конфигурация создает шаблон блога, вам не нужно иметь хронологическая структура, если она не подходит для вашего сайта.
Создайте новый каталог в каталоге вашего проекта с именем тема . В theme создайте другой каталог с именем templates . templates – это то место, где будут храниться наши шаблоны Jinja2 и может переопределить тему по умолчанию.
Начните с создания файла с именем base.html , в котором будет храниться шаблон используется шаблонами на сайте.
{% block title %}{% endblock %}
В theme/templates создайте файл с именем article.html , который будет иметь тема для сообщений блога отличается от темы остального сайта. Заполните article.html со следующей разметкой Jinja2.
Затем мы воспользуемся шаблоном Jinja2, чтобы переопределить значение по умолчанию index.html main страница. Снова в каталоге theme/templates создайте файл с именем index.html со следующей разметкой.
Перейдите на localhost: 8000 и обновите страницу. Стиль на главной странице теперь другой, потому что он использует index.html тема.
Щелкните заголовок сообщения о боевом корабле. На этой странице используется article.html шаблон, хотя это сложно сказать, потому что нет CSS применен к странице.
Довольно редко! Мы можем по крайней мере добавить CSS Bootstrap в HTML, чтобы выровняйте наш контент.
В base.html добавьте следующую строку для Bootstrap в {% block title%} {% endblock%} и выше .
Восстановите сайт и обновите страницу Gunship.
По крайней мере, наш дизайн переместился с 1996 на 2001. Я уверен, что вы можете сделайте гораздо больше, чтобы улучшить дизайн вашего собственного сайта.
Новый base.html пока не предоставляет большой части темы, но по крайней мере обеспечивает новый старт для полностью настраиваемых сайтов.
Что дальше?
Вы создали свой первый статический веб-сайт Pelican, используя Markdown и Jinja2. Дополнительные модификации могут быть внесены в шаблоны Jinja2 и контент, содержащийся в Markdown файлы.
Вы хотите развернуть свой новый статический веб-сайт на страницах GitHub или в сегменте S3? Что ж, это история для еще одного учебника Full Stack Python ...