Amazon LinuxにMkDocsの環境を作ってみる(未遂)

ちょっと知った[MkDocs](http://www.mkdocs.org/)で、運用手順書なんかを管理できたら良いな、と思い、簡単に環境構築しようとしたのが始まり。

**注意！！**
この記事は結果的に失敗したので、完成は[こちらの記事](http://qiita.com/w-matsumoto/items/1100fd5f21474e5bfe4d)参照していただき、以下の失敗談はかっとばしてください。。。
（これは自分の備忘録的なものです）

# 前提

* AWSにAmazonLinuxのEC2を準備しておく
* `yum update`を行い、最新状態にしておく
* 実行ユーザはデフォルトのec2-userとする
* Python環境はAmazon Linuxのデフォルト（Python 2.7.10）を用いる　※2016/4/6時点

# 環境準備

[MkDocsを使ってドキュメントのサイトの自動でこしらえる](http://qiita.com/keitarou/items/065d4311439cc6b6847d)を参考に実施しました。

## pipのインストール

Pythonのパッケージ管理[pip](https://pip.pypa.io/en/stable/)をインストールする。
公式サイトの手順に従い、以下を実行。

```
$ sudo wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py

Collecting pip
  Downloading pip-8.1.1-py2.py3-none-any.whl (1.2MB)
    100% |████████████████████████████████| 1.2MB 49kB/s 
Collecting wheel
  Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
    100% |████████████████████████████████| 71kB 290kB/s 
Installing collected packages: pip, wheel
  Found existing installation: pip 6.1.1
    Uninstalling pip-6.1.1:
      Successfully uninstalled pip-6.1.1
Successfully installed pip-8.1.1 wheel-0.29.0
```

## mkdocsのインストール

```
$ sudo pip install mkdocs

～～省略～～

Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/pip/basecommand.py", line 209, in main
    status = self.run(options, args)
  File "/usr/local/lib/python2.7/site-packages/pip/commands/install.py", line 317, in run
    prefix=options.prefix_path,
  File "/usr/local/lib/python2.7/site-packages/pip/req/req_set.py", line 732, in install
    **kwargs
  File "/usr/local/lib/python2.7/site-packages/pip/req/req_install.py", line 835, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/usr/local/lib/python2.7/site-packages/pip/req/req_install.py", line 1030, in move_wheel_files
    isolated=self.isolated,
  File "/usr/local/lib/python2.7/site-packages/pip/wheel.py", line 344, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/usr/local/lib/python2.7/site-packages/pip/wheel.py", line 315, in clobber
    ensure_dir(destdir)
  File "/usr/local/lib/python2.7/site-packages/pip/utils/__init__.py", line 83, in ensure_dir
    os.makedirs(path)
  File "/usr/lib64/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/site-packages/markdown'
```

pipが最新化していなかったのを思い出し、以下を実行。

```
$ pip install -U pip
Requirement already up-to-date: pip in /usr/local/lib/python2.7/site-packages
```

多分成功。
ちなみに、sudoをつけたらエラーが出た・・・この辺、疎いので調べてもいません。。。

```
$ sudo pip install -U pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 3020, in <module>
    working_set = WorkingSet._build_master()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 616, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 629, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 807, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pip==6.1.1
```

ん？sudo要らない？
と、思い立ち、sudo無しで実行してみる。

```
$pip install mkdocs
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/site-packages/markdown'
```

となり、やっぱり同じエラー。。。
エラー箇所を見ると、markdownが無いっぽいので、pipでインストールしてみる。

```
$ pip install markdown
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/site-packages/markdown'
```

となり、同じエラー。。。
ここで気がつく。
何かパスが違くね？

```
$ ls -l /usr/local/lib/python2.7/site-packages
total 20
drwxr-xr-x 10 root root 4096 Apr  6 13:11 pip
drwxr-xr-x  2 root root 4096 Apr  6 13:11 pip-8.1.1.dist-info
-rw-r--r--  1 root root  119 Dec  9 03:25 README
drwxr-xr-x  5 root root 4096 Apr  6 13:11 wheel
drwxr-xr-x  2 root root 4096 Apr  6 13:11 wheel-0.29.0.dist-info
```

```
$ ls -l /usr/local/lib64/python2.7/site-packages/
total 4
-rw-r--r-- 1 root root 119 Dec  9 03:25 README
```

どうもsudoによるpathがおかしいように思う。
一度pipを強制再インストールする。

```
$ sudo python get-pip.py --force-reinstall
Collecting pip
  Using cached pip-8.1.1-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 8.1.1
    Uninstalling pip-8.1.1:
      Successfully uninstalled pip-8.1.1
Successfully installed pip-8.1.1
```

```
$ pip install mkdocs

～～省略～～

Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/pip/basecommand.py", line 209, in main
    status = self.run(options, args)
  File "/usr/local/lib/python2.7/site-packages/pip/commands/install.py", line 317, in run
    prefix=options.prefix_path,
  File "/usr/local/lib/python2.7/site-packages/pip/req/req_set.py", line 732, in install
    **kwargs
  File "/usr/local/lib/python2.7/site-packages/pip/req/req_install.py", line 835, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/usr/local/lib/python2.7/site-packages/pip/req/req_install.py", line 1030, in move_wheel_files
    isolated=self.isolated,
  File "/usr/local/lib/python2.7/site-packages/pip/wheel.py", line 344, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/usr/local/lib/python2.7/site-packages/pip/wheel.py", line 315, in clobber
    ensure_dir(destdir)
  File "/usr/local/lib/python2.7/site-packages/pip/utils/__init__.py", line 83, in ensure_dir
    os.makedirs(path)
  File "/usr/lib64/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/site-packages/markdown'
```

やっぱりダメ・・・心が折れたので、一時中断。

# まとめ

* 結局環境構築できなかった
* Amazon Linuxによる権限回りが良く分かっていない
* sudoの有無で参照先が異なるような動き有り


悔しいので、再チャレンジします！！