Nginx

403 Forbidden が出る

  • 事象
    • Sphinxで作成したドキュメントをVPS上にNginxでhttpサーバーで公開しようとした。
    • Nginx側のnginx.conf内のルートディレクトリを変更したが403 Forbiddenが出た。
  • 原因
    • 公開用ディレクトリに権限が与えられていなかった。
    • この権限とは、SELinuxで与えられているラベルのこと。
  • 解決策1
    • SELinuxを無効にする。 ただし、セキュリティ的にはよくなさそう。
# setenforce Permissive
  • 解決策2
    • restorecon -R ディレクトリでラベルを修正する。(nginx/html/ 以下のフォルダを修正する場合)
# restorecon -R nginx/html/

Sphinxとの連携

  • やりたいこと

    • Spinx用に.md5を作成して、make htmlをしてもNginxの公開用フォルダに移動させるコマンドが面倒
    • Webでよく公開されているsphinx-autobuildのコードだと、移動させることまではカバーされていない。
  • やったこと

    • sphinx-autobuildのインストール
    pip install sphinx-autobuild
    
    • sphinx-autobuild [source] [destination] これだと毎回コマンド打つのが面倒

      • よくあるWebで公開されている対策(make livehtml) Makefileの最後尾に下記のコードを追加
      livehtml:
          sphinx-autobuild -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
      

      これをコピペ貼り付けしちゃうと、Nginxの方に移動させるコマンドが必要になる。

      • 上記のコードの該当箇所 $(ALLSPHINXOPTS) $(BUILDDIR)/html を適切に書き換える。
      livehtml:
          sphinx-autobuild [sourceディレクトリ] [Nginxの公開フォルダ]
      

      この形で書き換えれば、sourceディレクトリを更新すると、Nginxに自動的に反映される。