Sphinxの立ち上げ(github+Netlify利用)#
Last Updated on 2021-08-13
Sphinxを導入し、github/netlify に連携することで簡単に管理できる自前のサイトを構築したので手順をまとめました。
環境について#
Last Updated on 2021-08-14
本記事執筆時点の作業環境。
OS#
Windows10 1909
Python#
3.9
cmd:
python
とすれば、Microsoft Storeからインストールできます。
edtor#
VSCODE 1.50.1
cmd:
code
とすれば、Microsoft Storeからインストールできます。
Python環境の準備#
Last Updated on 2021-08-22
Python仮想環境準備#
Pythonは事前にインストールしておく。今回は、Python環境をキレイに保つために仮想環境で分離。 poetry を利用しました。
ヒント
pip install poetry は推奨手順ではないので注意
venv環境を独立するためのconfig確認・設定:
poetry config --list
poetry config virtualenvs.in-project true
pyproject.tomlの作成:
poetry init
仮想環境の作成:
poetry install
.venvフォルダが作成され、以後、poetry add コマンドでパッケージを追加できます。
Pythonコードも触るかもしれないので下記を念のため追加
poetry add --dev flake8 autopep8 pylint
Sphinx#
Last Updated on 2021-08-22
Sphinx初期整備#
Sphinxパッケージ追加:
poetry add --dev sphinx
Sphinx初期化する。フォルダターゲットはdocsとした:
portry run sphinx-quickstart docs
docsが初期化されているのでビルドしてみる。
poetry run sphinx-build docs docs/_build/ja
docs/_build/ja/index.html [1] を開くとビルド結果を確認できる
sphinx-autobuildによる効率化#
sphinx-autobuildを利用すると、ビルドとブラウザ確認を効率化できます
sphinx-autobuild追加:
poetry add --dev sphinx-autobuild
以降、下記コマンドを一度実行すれば、http://127.0.0.1:8000 でページ確認でき、自動ビルド・自動リロードされる。
poerty run sphinx-autobuild docs docs/_build/ja
sphinx-autobuild起動の効率化#
起動効率化の方針#
2019年に向けてPythonのモダンな開発環境について考える という記事を参考に実行コマンドを効率化する:
poetry run doc //NG
該当記事のコマンドでの実現は失敗した。理由はpoetryで指定できる[tool.poetry.scripts]は引数指定ができないためである。 [2]
そこで代替パッケージとして poethepoet を活用する:
poetry run poe doc
暫定パッケージを使うことを以外は 2019年に向けてPythonのモダンな開発環境について考える と同一方針。詳細はURLを参照してください。
poethepoetを追加:
poetry add --dev poethepoet
setup.pyの整備#
setup.pyを整備します。
1 import os
2 import subprocess
3 from setuptools import setup, Command
4
5
6 class SimpleCommand(Command):
7 user_options = []
8
9 def initialize_options(self):
10 pass
11
12 def finalize_options(self):
13 pass
14
15
16 class DocCommand(SimpleCommand):
17 def run(self):
18 subprocess.call(["sphinx-autobuild", "docs", "docs/_build/ja"])
19
20
21 setup(
22 cmdclass={
23 "doc": DocCommand,
24 },
25 )
下記コマンドでsetup.pyのコードが実行できる:
poetry run setup.py doc
pyproject.tomlの整備#
1[tool.poe.tasks]
2 doc = "python setup.py doc"
この作業の結果、次のコマンドでsphinx-autobuildが起動するようになります:
poetry run poe doc
テーマ#
テーマは pydata-sphinx-theme を採用。 * conf.pyで下記対応可能
github、twitterへのリンク
navバーの設定
Google Analyticsの設定
bootstrap4対応
Pandas、NumPy、など主要パッケージで採用
pydata-sphinx-themeのインストール:
poetry add --dev pydata-sphinx-theme
conf.pyの整備:
html_theme = "pydata_sphinx_theme"
その他、詳細は pydata-sphinx-theme を参照
githubとの連携#
Last Updated on 2021-04-17
リポジトリを作成してコミットする。
github準備#
アカウント取得
リポジトリ作成:netlify連携のためPublicで作成
ソースを反映:git initからpushまでのガイドがgithubサイトにあり
githubへssh通信する#
コマンドラインから対応できるようにする設定方法
鍵の生成#
生成コマンド:
ssh-keygen -t rsa
.ssh/id_rsa(秘密鍵)/.ssh/id_rsa.pub(公開鍵) が生成される
公開鍵をクリップボードへ#
win:
clip < ~/.ssh/id_rsa.pub
mac:
pbcopy < ~/.ssh/id_rsa.pub
githubへ登録#
「Add SSH Key」というメニューから、クリップボードの内容を貼り付け
githubの.ssh/config#
~/.ssh/config:
Host my.github.com
HostName github.com
User git
Port 22
Hostname github
IdentityFile ~/.ssh/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes
github接続確認#
確認コマンド:
ssh -T git@my.github.com
(参考)gitlabの場合#
netlifyはgitlabも対応している。gitlabの場合のssh接続確認方法。
gitlabの.ssh/config#
~/.ssh/config:
Host my.gitlab.com
HostName gitlab.com
User git
Port 22
IdentityFile ~/.ssh/config/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes
gitlab続確認#
確認コマンド:
ssh -T git@my.gitlab.com
netlify連携#
Last Updated on 2021-04-17
netlifyは、githubリポジトリ連携してnetlify上の仮想マシンにデプロイしサイト公開を可能とする。
netlify連携準備#
bulid定義#
指定したリポジトリにあるnetlify.tomlを読み込んでビルドする仕様となっている。
1[build]
2 publish = "docs/_build/ja"
3 command = "sphinx-build docs/ docs/_build/ja"
publishは公開するフォルダ、commandがビルド時に使われるコマンドの意味である。
pythonバージョン#
netlifyでデフォルトで立ち上がる仮想環境はUbuntu 16.04(2020年11月現在)です。Pythonバージョンは2.7がデフォルトのため変更する必要があります。バージョンを指定するには、rutime.txtというファイルを用意しバージョン番号を記載します。
13.7
なお、Pythonは、2.7、3.5と3.7を選択できます。これ以外のバージョンは指定してもエラーになります。 [3]
netlify github連携#
netlifyにはgithubアカウントでログイン可能です。ログインしビルド対象のリポジトリ連携します。「New Site from git」から連携できます。
サイト確認#
https://jolly-brown-b98547.netlify.app/ のようなランダムなURLでサイトが公開されます。確認してみましょう
URLを独自ドメインに変更する#
ドメインを取得してURLを変更することが可能です。
ドメイン取得#
ドメインの設定#
公式サイトの「Configure an apex domain」という手順 [4] を参考に設定します。
ドメインプロバイダからは、netlifyが指定するDNSを設定します。netlifyDNS側ではNetlifyレコードという特殊なDNSレコードを設定します。
もう一つの別の方法として、ドメインプロバイダー側のDNSにAレコードとしてルートをNetlifyのLBのIPを直接指定し、CNAMEレコードをwwwからapexサブドメインへ設定する方法もあります。
独自ドメインで確認#
設定したURLにアクセスして確認します。成功するとhttpsでアクセスできます。失敗するとnetlifyの管理画面でエラー状況が表示されます。
関連リンク
https://docs.netlify.com/domains-https/custom-domains/configure-external-dns/
当サイトはfreenomで試行後、googleドメインでドメイン取得し直しました。