UbuntuにApacheとPythonとDjangoを入れようとした話(1)。(失敗編）

#環境
OS Windows10 64bit
CPU core i7 2600k
メモリ　16GB
GPU　Quadro 400

のVMware上で動かしています。
OSはUbuntu 16.04 LTSです。
UbuntuはOSをインストールした直後の状態となっています。


まずはpythonのバージョンを確認してみます。

```
$ python -V
Python 2.7.12
```
Python2でもいいのですが将来的にPython3に移行することを考えると今のうちにpython3で環境開発を行っておきます。


#pythonのコンパイルに必要なパッケージをインストール

```
$ sudo apt-get install git gcc make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
```

#Pyenvのインストール

localのフォルダにインストールします。
ちなみに/bin・/sbin・/usrにインストールするのはパッケージ管理の対象で
/usr/local/以下にインストールするのはパッケージ管理の対象外となるものです。

/bin・/sbin・/usrには
ユーザーは直接インストールすることは無いです。

```
$ cd /usr/local/
$ sudo git clone git://github.com/yyuu/pyenv.git ./pyenv
$ sudo mkdir -p ./pyenv/versions ./pyenv/shims
```

#Pyenv-virtualenvのインストール

```
$ cd /usr/local/pyenv/plugins/
$ sudo git clone git://github.com/yyuu/pyenv-virtualenv.git
```

#Pathの設定

```
$ echo 'export PYENV_ROOT="/usr/local/pyenv"' | sudo tee -a /etc/profile.d/pyenv.sh
$ echo 'export PATH="${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"' | sudo tee -a /etc/profile.d/pyenv.sh
$ source /etc/profile.d/pyenv.sh 
$ pyenv --version
```
pyenv --vesrionでversionを確認します。

ちなみに自分の環境では

```
pyenv 1.1.5-12-ga2d00cb
```
と表示されました。

#anacondaのインストール
python3を使うためにanacondaをインストールします。

```
$pyenv install -l | grep anaconda
$pyenv install anaconda3-5.0.0
$pyenv rehash
$pyenv global anaconda3-5.0.0
$echo 'export PATH="$PYENV_ROOT/versions/anaconda3-5.0.0/bin/:$PATH"' >> ~/.bashrc
$source ~/.bashrc
$conda update conda
```
これでpython3が使えるようになったと思います

```
$python -V
Python 3.6.2 :: Anaconda, Inc.
```
と表示されるのを確認します。


#Apacheのインストール
```
$sudo apt-get install apache2
$systemctl start apache2 
```
でFirefoxなりWebブラウザのアドレス欄に「localhost」
と入力して

Apache2 Ubuntu Default Page

が表示されれば成功です。
このままではapacheの設定はガバガバなので実際に運用する際はセキュリティの設定をお願いします。

#mod_wsgiのインストール
mod_wsgiはapacheとpythonを繋ぐためのモジュールです。

```
$ sudo apt-get install -y libapache2-mod-wsgi-py3
```

#Djangoのインストール
```
$ sudo pip install django
```

#Djangoのアプリの作成
```
$mkdir /home/django
$cd /home/django
$django-admin startproject proj1
```

#apacheとdjangoの結びつけ

/etc/apache2/sites-available/django.conf
を作成し

```
<VirtualHost *:80>
  WSGIDaemonProcess proj1 python-home=/usr python-path=/home/django/proj1
  WSGIScriptAlias / /home/django/proj1/proj1/wsgi.py process-group=proj1
  <Directory /home/django/proj1/proj1>
    <Files wsgi.py>
      Require all granted
    </Files>
  </Directory>
</VirtualHost>
```
を記載。環境のところは各自で置き換えて下さい。

その後、django.confを有効にするために

```
$sudo a2dissite 000-default
$ sudo a2ensite django
```
を実行します

```
$ systemctl restart apache2
```

#トラブルシューティング
apacheを再起動して、はい終わりって書こうとしました。
が
localhostにアクセスすると
Internal Server Error
が....
こうなると真剣にめんどくさいです。

まずは

```
tail -f /var/log/apache2/error.log
```
でlocalhostに接続したときにapacheが吐いているエラーを確認します。

```
'/home/django/proj1/proj1/wsgi.py' cannot be loaded as Python module.
mod_wsgi (pid=81137): Exception occurred processing WSGI script '/home/django/proj1/proj1/wsgi.py'.
[pid 81137:tid 139969182480128] [remote 127.0.0.1:19222] Traceback (most recent call last):
][wsgi:error] [pid 81137:tid 139969182480128] [remote 127.0.0.1:19222]   File "/home/django/proj1/proj1/wsgi.py", line 12, in <module>
 [wsgi:error] [pid 81137:tid 139969182480128] [remote 127.0.0.1:19222]     from django.core.wsgi import get_wsgi_application
[wsgi:error] [pid 81137:tid 139969182480128] [remote 127.0.0.1:19222] ImportError: No module named 'django'
```
最後の１文気になります。djangoが見つからないらしい。

現在思ってること。
mod_wsgiがインストール時にapt-getを使ってシステム組み込みのpython2系と結びついてしまった？
→pip install mod_wsgiを試す。
→何故かインストール失敗。

apache2-devをインストールし忘れてる？
現在原因解明中。再インストールわんちゃん。

この方法だとうまく行かなかったので別の方法で試してみました。