Install pelican 4.0.1, base config & 1st article

This commit is contained in:
Fred Z 2019-01-09 16:21:22 +01:00
parent 4ea54cbbd8
commit 98bec81e58
7 changed files with 290 additions and 0 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
.venv
__pycache__/
output

75
Makefile Normal file
View File

@ -0,0 +1,75 @@
PY?=python3
PELICAN?=pelican
PELICANOPTS=
BASEDIR=$(CURDIR)
INPUTDIR=$(BASEDIR)/content
OUTPUTDIR=$(BASEDIR)/output
CONFFILE=$(BASEDIR)/pelicanconf.py
PUBLISHCONF=$(BASEDIR)/publishconf.py
DEBUG ?= 0
ifeq ($(DEBUG), 1)
PELICANOPTS += -D
endif
RELATIVE ?= 0
ifeq ($(RELATIVE), 1)
PELICANOPTS += --relative-urls
endif
help:
@echo 'Makefile for a pelican Web site '
@echo ' '
@echo 'Usage: '
@echo ' make html (re)generate the web site '
@echo ' make clean remove the generated files '
@echo ' make regenerate regenerate files upon modification '
@echo ' make publish generate using production settings '
@echo ' make serve [PORT=8000] serve site at http://localhost:8000'
@echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
@echo ' make devserver [PORT=8000] serve and regenerate together '
@echo ' make ssh_upload upload the web site via SSH '
@echo ' make rsync_upload upload the web site via rsync+ssh '
@echo ' '
@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
@echo 'Set the RELATIVE variable to 1 to enable relative urls '
@echo ' '
html:
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
clean:
[ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
regenerate:
$(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
serve:
ifdef PORT
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
else
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
endif
serve-global:
ifdef SERVER
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b $(SERVER)
else
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b 0.0.0.0
endif
devserver:
ifdef PORT
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
else
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
endif
publish:
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)
.PHONY: html help clean regenerate serve serve-global devserver stopserver publish

View File

@ -0,0 +1,73 @@
Title: Installer Pelican
Date: 2019-01-09 15:29
Category: tuto
Lang: fr
Slug: installer-pelican
Tags: web, python, pelican
Summary: Installation rapide de _Pelican_
# Démarrage rapide
_C'est une traduction basique du [démarrage rapide](https://docs.getpelican.com/en/4.0.1/quickstart.html) officiel_
---
## Créez le répertoire
```python
mkdir -p ~/projects/yoursite
cd ~/projects/yoursite
```
## Créez un environnement virtuel
```python
virtualenv .venv -p /usr/bin/python3.6
source .venv/bin/activate
```
## Installez _Pelican_ et markdown (si besoin, optionnel)
```python
pip install pelican markdown
```
## Créez le squelette de l'arborescence
```python
pelican-quickstart
```
Pour les questions avec une réponse entre crochet, appuyez sur `Entrée` pour acceptez cette valeur. Quand il vous sera demandé le préfixe de votre URL, entrez votre nom de domaine comme indiqué (`http://example.com`).
## Créez un article
Vous ne pourrez lancer _Pelican_ tant qu'il n'y a pas d'article. Utilisez votre éditeur préféré pour créez votre premier article avec le contenu suivant :
```python
Title: My First Review
Date: 2010-12-03 10:20
Category: Review
Following is a review of my favorite mechanical keyboard.
```
Considerant que cet article est au format Markdown, enregistrez le en temps que `~/projects/yoursite/content/keyboard-review.md.`
## Générez le site
Toujours depuis le répertoire, lancez la commande _Pelican_ pour générez votre site
```python
pelican content
```
Votre site à été généré dans le répertoire `output`. Peut-être aurez vous un message d'alerte relatif aux _flux_, c'est normal en développement et vous pouvez l'ignorer
# Prévisualisation du site
Ouvrez une session de terminal depuis le répertoire d'installation et lancez la commande suivante :
```python
pelican --listen
```
Rendez vous à l'adresse [http://localhost:8000/](http://localhost:8000/) à l'aide de votre navigateur, c'est parfait !

37
pelicanconf.py Normal file
View File

@ -0,0 +1,37 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
AUTHOR = 'Fred'
DEFAULT_LANG = 'fr'
DEFAULT_PAGINATION = False
PATH = 'content'
RELATIVE_URLS = True
SITENAME = 'freezed'
SITESUBTITLE = 'Mon super slogan'
SITEURL = 'https://free_zed.gitlab.io/mypelican'
TIMEZONE = 'Europe/Paris'
# Feed generation is usually not desired when developing
FEED_ALL_ATOM = None
CATEGORY_FEED_ATOM = None
TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None
# Blogroll
LINKS = (('Archives', '/archives.html'),
('Tags', '/tags.html'),
('Mentions légales', '/pages/mentions-legales.html'),)
LINKS_WIDGET_NAME = 'Liens'
# Social widget
SOCIAL = (('Gitlab', 'https://gitlab.com/free_zed'),
('Stack Overflow', 'https://stackoverflow.com/users/6709630/freezed'),
('Github', 'https://github.com/freezed/'),)
SOCIAL_WIDGET_NAME = 'Partage de code'
# my configuration
DELETE_OUTPUT_DIRECTORY = True
OUTPUT_PATH = 'public/'

25
publishconf.py Normal file
View File

@ -0,0 +1,25 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
# This file is only used if you use `make publish` or
# explicitly specify it as your config file.
import os
import sys
sys.path.append(os.curdir)
from pelicanconf import *
# If your site is available via HTTPS, make sure SITEURL begins with https://
SITEURL = 'https://free_zed.gitlab.io'
RELATIVE_URLS = False
FEED_ALL_ATOM = 'feeds/all.atom.xml'
CATEGORY_FEED_ATOM = 'feeds/{slug}.atom.xml'
DELETE_OUTPUT_DIRECTORY = True
# Following items are often useful when publishing
#DISQUS_SITENAME = ""
#GOOGLE_ANALYTICS = ""

2
requirements.txt Normal file
View File

@ -0,0 +1,2 @@
pelican==4.0.1
Markdown==3.0.1

77
tasks.py Normal file
View File

@ -0,0 +1,77 @@
# -*- coding: utf-8 -*-
import os
import shutil
import sys
import datetime
from invoke import task
from invoke.util import cd
from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
CONFIG = {
# Local path configuration (can be absolute or relative to tasks.py)
'deploy_path': 'output',
# Port for `serve`
'port': 8000,
}
@task
def clean(c):
"""Remove generated files"""
if os.path.isdir(CONFIG['deploy_path']):
shutil.rmtree(CONFIG['deploy_path'])
os.makedirs(CONFIG['deploy_path'])
@task
def build(c):
"""Build local version of site"""
c.run('pelican -s pelicanconf.py')
@task
def rebuild(c):
"""`build` with the delete switch"""
c.run('pelican -d -s pelicanconf.py')
@task
def regenerate(c):
"""Automatically regenerate site upon file modification"""
c.run('pelican -r -s pelicanconf.py')
@task
def serve(c):
"""Serve site at http://localhost:8000/"""
class AddressReuseTCPServer(RootedHTTPServer):
allow_reuse_address = True
server = AddressReuseTCPServer(
CONFIG['deploy_path'],
('', CONFIG['port']),
ComplexHTTPRequestHandler)
sys.stderr.write('Serving on port {port} ...\n'.format(**CONFIG))
server.serve_forever()
@task
def reserve(c):
"""`build`, then `serve`"""
build(c)
serve(c)
@task
def preview(c):
"""Build production version of site"""
c.run('pelican -s publishconf.py')
@task
def publish(c):
"""Publish to production via rsync"""
c.run('pelican -s publishconf.py')
c.run(
'rsync --delete --exclude ".DS_Store" -pthrvz -c '
'{} {production}:{dest_path}'.format(
CONFIG['deploy_path'].rstrip('/') + '/',
**CONFIG))