Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Pelicanによる www.python.jpの構築

12,609 views

Published on

Pelicanによる www.python.jpの構築

Published in: Internet
  • Hey guys! Who wants to chat with me? More photos with me here 👉 http://www.bit.ly/katekoxx
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Pelicanによる www.python.jpの構築

  1. 1. Pelican による www.python.jp の構築 2014/9/13 PyCon JP 2014 Atsuo Ishimoto
  2. 2. 自己紹介 2 いしもと 石本 敦夫 あつお python.jp 管理人
  3. 3. ㈱ UNCOVER TRUTH勤務 3 社員募集中!
  4. 4. Python本を書きました 4 Python文法詳解 ← NEW パーフェクトPython
  5. 5. 5 python.jp の歴史 Zope(2001年9月 ~) Zope2 Squishdot DTML
  6. 6. python.org専用ツール (2012/9 ~) 6 YAML reStructuredText mako
  7. 7. Pelican (2014/5 ~) 7 reStructuredText Markdown AsciiDoc jinja2
  8. 8. Pelican Static Site Generator, Powered by Python 8 コンテンツ (reStructuredText, Markdown., HTML…) テンプレート (jinj2) HTML RSS CSS etc., http://docs.getpelican.com 設定ファイル
  9. 9. Pelican 9 非技術者でも使えるサイト構築ツール
  10. 10. コンテンツ 10 ブログのエントリ 日付・カテゴリ・タグなどを設定 サイトを構成する静的なページ 著者紹介、Aboutなど アーティクル ページ
  11. 11. テンプレート 11 Pelican テーマ集 https://github.com/getpelican/pelican-themes
  12. 12. Pelicanのインストール 12 pip3 install pelican Markdownを使う場合は、 pip3 install Markdown を追加
  13. 13. Pelicanサイトの作成 13 $ pelican-quickstart Welcome to pelican-quickstart v3.3.0. 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? Test Site > Who will be the author of this web site? Atsuo Ishimoto … pelican-quickstart コマンドでひな形を作成
  14. 14. pelican-quickstart で生成されるファイル 14 プロジェクトディレクトリ ├── content 作成した記事を格納 │ └── (pages) ├── output 記事を変換したHTMLなど │ └── (html, css, etc.,) ├── develop_server.sh テスト用HTTPサーバ ├── fabfile.py サイト構築用fabfile ├── Makefile ビルド用 Makefile ├── pelicanconf.py 設定ファイル └── publishconf.py 本番環境用設定ファイル
  15. 15. contentディレクトリ 15 content │ ├─ アーティクルA.rst 作成した記事 ├─ カテゴリ1 カテゴリ1の記事 │ ├── アーティクルA.rst │ └── アーティクルB.rst ├─ カテゴリ2 格納カテゴリ2の記事 │ └── アーティクルC.rst ├─ pages ページを格納 │ ├── ページ1.rst │ └── ページ2.rst ├─ images 画像ファイル等 │ └── picture1.png
  16. 16. reStructuredText 16 Python公式ドキュメントで採用 高機能 拡張性 デフォルト設定が、Pythonドキュメントの記述用 西洋語向けのマークアップ
  17. 17. Markdown 17 Githubなどでおなじみ シンプル・覚えやすい
  18. 18. 記事のメタデータ 18 記事タイトル ############## :date: 2014-09-14 12:00 :tags: Python, プレゼン :category: python :slug: file_name rstのサンプル 本文中や、ファイル名にメタデータを記述 •タイトル •日付 •タグ •著者 •urlのパス •etc
  19. 19. メタデータでURL/ファイル名を指定 19 記事タイトル ############## :save_as: path/to/save/index.html :url: path/to/save/ output/path/to/save/index.html を作成 ページへのリンクは、 path/to/save/ となる
  20. 20. カテゴリ 20 pelicanconf.py で設定 DEFAULT_CATEGORY = "blog" メタデータで指定 記事タイトル ############## :category: python ディレクトリで指定 Contentディレクトリの、サブディレ クトリ名をカテゴリとする ex) ./content/python/article.rst デフォルトカテゴリ
  21. 21. ページ間リンク 21 ページ間リンクの記述方法 ######################### rstでの `相対リンク <{filename}page1.rst>`_ と `絶対リンク <{filename}/page1.rst>`_
  22. 22. 構文ハイライト 22 .. code-block:: python3 def say(): print('hello') Pygmentsで構文ハイライト
  23. 23. ページ 23 作成方法 content/pages ディレクトリに作成 ブログエントリ以外の、Aboutや著作権表示など 表示方法 •DEFAULT_CATEGORY = True ならリンクを表示 •リンクしないページは、メタデータで :status: hidden
  24. 24. スタティックファイル 24 content │ ├─ images │ └── picture1.png ./content/imagesに配置 ./output/images/ にコピーされる ./content/images/picture1.png → ./ountput/images/picture1.png
  25. 25. サイトのビルド 25 コマンド 機能 make html プロジェクトをローカル環境用にビルドします (pelicanconf.pyを実行) make publish プロジェクトをプロダクション環境用にビルド します (pelicanconf.py + publishconf.py を実行) make regenerate ファイルの変更を検出すると自動的にビルド します make devserver develop_server.sh を実行し、プロジェクト の自動ビルド・テスト用HTTPサーバを起動 します
  26. 26. 設定ファイル 26 pelicanconf.py publishconf.py •make html と make publish で使用 •make publish でのみ使用 •プロダクション環境用
  27. 27. テーマ 27 pelican-themesコマンド 指定方法 pelicanconf.py で、ディレクトリ名を指定 THEME = "my_theme" テーマ設定コマンド $ pelican-themes --list notmyidea two-column@ simple
  28. 28. 記事インデックスページ 28 インデックスページ /index.html すべてのアーティクルのインデックス カテゴリ別インデックスページ /category/カテゴリ名/index.html カテゴリごとに作成される、アーティクルの インデックス その他、タグ別・ 著者別・年別など
  29. 29. アーティクルの保存パスとURL 29 ARTICLE_SAVE_AS 【例】 ARTICLE_SAVE_AS = 'articles/{slug}/index.html' アーティクルの保存ディレクトリを指定 ARTICLE_URL 【例】 ARTICLE_URL = 'articles/{slug}/' アーティクルのURLを指定
  30. 30. SLUGIFY_SOURCE = 'basename' 30 •デフォルトは、SLUGIFY_SOURCE = 'title' •アーティクルのタイトルから、slugを生成 •日本語のタイトルだと、カオスなURLに :title: Zipファイル一個で実行可能なPythonアプリケー ションを作ってみる ziphuairu-ge-deshi-xing-ke-neng- napythonapurikeshiyonwozuo-tsutemiru.html •SLUGIFY_SOURCE = 'basename' なら、ファ イル名からslugを作成できる
  31. 31. スタティックファイルのコピー先 31 EXTRA_PATH_METADATA = { 'images/favicon.ico': {'path': 'favicon.ico'}, } EXTRA_PATH_METADATAで、ファイルを配 置するパスを指定する
  32. 32. フォーム Python関連ニュースなどの登録 ------------------------- :url: news/submit.html :save_as: news/submit.html :category: news ニュース登録フォーム ++++++++++++++++++ .. raw:: html <form method="POST" action="/cgi-bin/submit_news.py"> <p> <label>タイトル <i>(必須)</i></label> <input name="title" id="input_title" size=80> <span class='form_sample'> 例: Python関連書籍 出版のお知らせ 32 submit_news.rst
  33. 33. www.python.jp 33 https://github.com/pyjug/pelican.python.jp

×