【Django】【Python】cloud9でDjangoの開発環境構築①【MySQL】【cloud9】

##Djangoでwebアプリケーションを構築するにあたって
・cloud9を使って開発をしたいというニーズは一定数存在すると思います
・また、本格的な運用を考えるとデータベースはDjangoのデフォルトで用意されているSQLiteでは物足りず、MySQLが最適と考える層もある程度いると思います。
・cloud9ではデフォルトの設定ではpythonのバージョンが2系となっており、現在のpythonのメインストリームである3系を使おうとすると最初に設定を変更する必要があり、毎回調べるのが面倒という方もたくさんいるはずです...


##ということで今回も自分向けに、今回はcloud9でDjangoの開発環境構築の手順を記録として残しておきます。
・私を含む初心者向けの記事になりますが、AWSの登録手順やDjango、pythonのチュートリアル的なことはしません...


#まずはcloud9の設定から
・create environmentして初期画面に入ったら、まずは歯車マークのsettings画面から設定を行っていきます。
画像の右上のshareの隣の歯車です！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/265778/1dff31eb-3ffe-7651-bc5e-427e1c7bf156.png)


・まず、Python SupportのPython Versionがデフォルトで`Python 2` になっているのを`Python 3` に変えます。
・PYTHONPATHを`/usr/local/lib/python3.6/site-packages:/usr/local/lib/python2.7/site-packages`
に書き換えます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/265778/549a5d39-c883-785b-e934-306387829f72.png)

・コンソールで以下を打ち込みましょう

```console
$ sudo rm /etc/alternatives/python
$ sudo ln -s /usr/bin/python3.6 /etc/alternatives/python
```

・ここから、エイリアスを設定していきます

```console
$ vi ~/.bashrc
```

ターミナルは今こんな感じになっているはずです。


![image.png](https://qiita-image-store.s3.amazonaws.com/0/265778/d5882c62-f11e-2fbc-e888-be87e9061a61.png)

`i` を打つとINSERTモードになり入力可能になります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/265778/920026e1-21d6-9f57-b161-cca88d5441a3.png)

こんな具合に。

・そして、

```console
# User specific aliases and functions
alias python=python27
```

これを

```console
# User specific aliases and functions
alias python=python36
```
に書き換えます。

書き換え終わったら、INSERTモードは`esc` ボタンで終了→`:wq` で上書き保存できます。

・ではPythonのバージョンを確認してみましょう

```console
$ python --version
Python 3.6.7
```
これでデフォルトのPythonが3.6.7になりました！

# 仮想環境を構築する
Djangoでのwebアプリケーション構築にあたって、仮想環境を構築しプロジェクトごとに設定をしていくというやり方がどうも一般的なようなので、それに従っていきたいと思います。
なお、仮想環境構築にもいくつかの方法があるようですが出来るだけ"今っぽい"と私が感じた方法で進めていきます。

```console
$ python -m venv venv
$ source venv/bin/activate
(venv) ec2-user:~/environment
```

先頭に(venv)がついていれば、自分が仮想環境(venv)上にいるということになります。


# Djangoインストール

これがファーストトライならDjangoはインストールされていないはずです。
確認してみましょう。

```console
$ django --version
bash: django: command not found
```

入ってないことがわかったのでインストールしてみましょう。
せっかく仮想環境作ったので、ぜひ仮想環境上でインストールしてみましょう。

```console
$ pip install Django
Collecting Django
  Downloading https://files.pythonhosted.org/packages/c7/87/fbd666c4f87591ae25b7bb374298e8629816e87193c4099d3608ef11fab9/Django-2.1.7-py3-none-any.whl (7.3MB)
    100% |████████████████████████████████| 7.3MB 7.7MB/s 
Collecting pytz (from Django)  Downloading https://files.pythonhosted.org/packages/61/28/1d3920e4d1d50b19bc5d24398a7cd85cc7b9a75a490570d5a30c57622d34/pytz-2018.9-py2.py3-none-any.whl (510kB)
    100% |████████████████████████████████| 512kB 4.8MB/s 
Installing collected packages: pytz, DjangoSuccessfully installed Django-2.1.7 pytz-2018.9
You are using pip version 10.0.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
```

`pip` のバージョンが古いことを指摘されていますが、upgradeしてもしなくてもいいです、今の所問題なさそうなので。
とにかくDjango入りました。

# Djangoプロジェクトを作ってみましょう
この先皆様がどんなアプリケーションを作るかわかりませんが、
とりあえずここでは一般ユーザーがいて登録なり何なりで
サービスを利用するのにユーザー認証するという前提で、
なおかつユーザー認証はDjangoが用意しているデフォルトのユーザーモデルではなく、
後からこちらでユーザーモデルをカスタマイズできる(custom userモデル)ようにする想定で一旦プロジェクト作成します！

```console
$ django-admin.py startproject config .
```

Djangoの教本では親の顔より見たと言っても過言ではないくらい記載されていますが、
一応申し上げておくと、 `.` を忘れないでください。

# アカウントを管理するためのアプリケーションを作成しておきます

```console
$ python manage.py startapp accounts
```

長くなってしまうので、続きは次の記事にまとめることにします！

お疲れ様でした。