linuxbrewでエックスサーバーにPythonを導入した話

目的はエックスサーバーへのPythonを導入だ。しかし、Pyenvでインストールしようとしても管理者権限がなく断念。代わりにlinuxbrewからPythonをインストールした。

# Pythonインストールの目的
Wordpressにpythonのスクレイピングスクリプトが仕込めないか確認したい。「外部からSSH接続してMySQLに接続する」パターンも検討したが、外部接続する理由に乏しくNG（むしろ負担が重い）。極力、エックスサーバー内で完結したい。

# 前提
- エックスサーバーには管理者権限がない
http://blog.saboh.net/xserverandpython/
    - **解決策①**：virtualenvを利用する。
ただ以下のページを見ると、導入する意味は特に無いんじゃね？って感じがする。http://www.zopfco.de/entry/2017/04/03/233811
    - **解決策②**：サーバーを変える（AWSとか）。
    - **解決策③**：エックスサーバーで用意されているPython3を使う。
https://teratail.com/questions/124782
    - **解決策④**：linuxbrewを使用する（これで簡単にインストールできた…）
- エックスサーバーはpython3.3.1を利用できる
https://www.xserver.ne.jp/manual/man_program_soft.php
- エックスサーバー上で環境構築をする必要がある
https://qiita.com/ShimantoAkira/items/37d09aca38d9e46ddd9a
"WindowsやOSX上で正しく動作したからといって、Linux上でも正しく動作するとは限りません。
そのため、開発する環境（自分のPC）と、公開する環境（サーバー）のOSを揃える必要があります。"
https://qiita.com/d-yokoi/items/e27193b2f742a058af6e
- スクレイピングで取得したデータを溜め込むMySQLのテーブル作成が必要

# 方針
- エックスサーバーでPythonスクリプトが動くかテスト
- ローカル環境で開発
- サーバー環境とローカル環境のOSを揃える
https://qiita.com/d-yokoi/items/e27193b2f742a058af6e
- エックスサーバーに開発環境を移行

# エックスサーバーでPythonスクリプトが動くかテスト
エックスサーバーでPythonのスクリプトが動くかどうか確かめたい。ただ、ローカル環境で導入していたPython3.6.2をサーバー上でinstallしようとするとエラーが発生。ネットの各記事を参照しlinuxbrewやgitをinstallしたが、エラーの内容は変わらない。具体的には、OpenSSL libはどこだ？と聞かれる訳だが、/etcの認証が弾かれることが原因だと思われる。多分。管理者権限がないことが原因の模様。

## エックスサーバーではPyenvでPythonがインストールできない問題
ネット上の各記事を参照しPyenvを使ってエックスサーバーにPythonをインストールしようとしたが断念した。この章はその試行錯誤の記録である。

目的は、エックスサーバーでPythonスクリプトが動くかどうかのテストだ。エックスサーバーへの接続方法は以下の記事を参照してほしい。
http://vdeep.net/xserver-ssh
https://qiita.com/ShimantoAkira/items/37d09aca38d9e46ddd9a

準備ができたら、以下をシェルスクリプトで入力しエックスサーバーにSSH接続。

```
ssh xsrv
```

まずはgitを入れる必要がある模様。ただし、gitは依存ライブラリが無いとインストールできないので、まずは依存ライブラリをインストールする必要がある。以下のページを参考に、「gettext」と「curl」を導入（疲れた…）。
http://vdeep.net/xserver-git

しかし、gitをインストールしようとすると、

```
The Python ssl extension was not compiled. Missing the OpenSSL lib?
```

と怒られる。色々やったけど無理だったので、Linuxbrewをインストールしてやり直すことにした。こちらの方が何かとインストールしやすい。で、同じところまで行ったんだけど、同じエラーが出てしまう。githubのページに解決策が記載してあるので試す（もちろんPythonのバージョン名は適宜変更）。
https://github.com/pyenv/pyenv/wiki/Common-build-problems

```
CFLAGS="-I$(brew --prefix openssl)/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
pyenv install -v 3.4.3
```

しかし、やはり同じエラーが出てくる。むしろパーミッションが拒否されていることが原因？

```
Last 10 log lines:
File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 646, in _load_unlocked
File "<frozen importlib._bootstrap>", line 616, in _load_backward_compatible
File "/tmp/tmpfgpubifu/pip-9.0.1-py2.py3-none-any.whl/pip/_vendor/distro.py", line 1050, in <module>
_distro = LinuxDistribution()
File "/tmp/tmpfgpubifu/pip-9.0.1-py2.py3-none-any.whl/pip/_vendor/distro.py", line 595, in __init__
self._distro_release_info = self._get_distro_release_info()
File "/tmp/tmpfgpubifu/pip-9.0.1-py2.py3-none-any.whl/pip/_vendor/distro.py", line 984, in _get_distro_release_info
basenames = os.listdir(_UNIXCONFDIR)
PermissionError: [Errno 13] Permission denied: '/etc'
```

以下のページを見ると、
"/etcへのアクセス権がなく、pipを使うとpipの中のos.listdir(_UNIXCONFDIR)で失敗します"
と記載があるので、そもそもPythonインストールの時点で100%つまずくんじゃね？って感じがする（しかし記事の掲載を見るとpyenvで問題なくPythonがインストールできているようだ…）。
https://qiita.com/ShimantoAkira/items/37d09aca38d9e46ddd9a

こっちのページで行けそう？（ダメだった）
https://github.com/pyenv/pyenv/issues/993

やっぱ/etcへのアクセス権がないことが原因っぽい。あれ、違う原因かと思ってたけどdistro.pyを修正するのは同じなので試してみる。
http://blog.saboh.net/anaconda_pip_install_error/

てかそもそもPythonがインストールされてないから修正できないのか（distro.pyというファイルがないから）。詰んだ…周囲はどうやってエックスサーバーにPythonをインストールしてるんだ？というかそもそもPythonのインストールにはgitが必要なのに、gitをインストールしていなかった。そのため、

```
brew install git
```

でgitをインストール。

**ここで断念。**
## linuxbrewでPythonをインストール

代わりにlinuxbrewからPythonをインストールしたところ、無事インストールできた。

```
brew install python3
```

で、すかさずPython3を使用してアップロードしたスクレイピング用ファイルを作動させるために、pip installで必要なライブラリをインストールする（具体的にはBeautifulSoup、requests、htmlをインストール）。

```
pip install <ライブラリ名>
```

が、モジュールがないと怒られる。

```
ModuleNotFoundError: No module named 'requests'
```

ああpip3だったかと思いpip3でinstall

```
pip3 install <ライブラリ名>
```
これで解決。