PythonでWebアプリ開発02（開発サーバ環境選定〜Django起動）

前の記事: [PythonでWebアプリ開発01（フレームワーク選定: Django vs Flask）](https://qiita.com/TechAngel/items/1182b04d4f5d546abe29)

PythonでWebアプリ開発をしてみるにあたり、どの環境で開発をするかということについて考える必要がある。
選択肢としては

- macまたはWindowsのローカル環境
- macまたはWindowsにVirtualBoxをインストールして、その中にUbuntu、CentOS環境を構築する
- 自分が契約しているレンタルサーバ（例: [さくらのレンタルサーバー](https://www.sakura.ne.jp/)、[VALUE SERVER](https://www.value-server.com/)、その他色々）
- GCP、AWS、Herokuなどクラウド型サーバ

サービスとして最終的に公開する場合には自分が契約しているレンタルサーバーやクラウド型サーバーになるが、まずは手っ取り早くDjangoでHello Worldを試すことが目標なのでとりあえずローカルに環境を構築することに。

サーバ上に構築するにしても何れにせよPythonバージョン、Djangoなどの必要モジュールを正しくセットアップすることが必要になるのでまずはローカルで試してみるのもひとつの手だろう。

当方の開発環境は

- macOS Mojave
- バージョン 10.14.6

pyenvコマンドでpythonのバージョンを調べてみると下記の状況でPython3が使えるようになっている。

```
$ pyenv versions
  system
  2.7.8
* 3.6.8 (set by /Users/xxx/.python-version)
```
下記でDjangoのインストールが問題なく完了することを確認できた。

```
sudo pip3 install Django
```
最初にプロジェクトを作成する。
作業ディレクトリに移動して以下のコマンドを実行。

```
django-admin startproject myDjangoPrj01
```
myDjangoPrj01という名前でプロジェクトを作成。
lsコマンドを叩くとプロジェクトの名前でディレクトリが作成されていることが確認できる。

- 余談: コンピュータを扱っていると、プログラム開発だけでなく、CGやグラフィックスソフト、音楽ソフトなどでプロジェクトという単位がよく出てくる。必要なファイルがディレクトリの中に一式展開されており、このテンプレートに必要な記述やファイルを追加していくことになる。Visual Studio、Eclipseなどでもフレームワークを使って開発するときなど新規プロジェクトをウィザードにしたがって作成するなどもこれに該当する。

```
$ ls
myDjangoPrj01
```
treeコマンドを叩いてみるとディレクトリ、ファイルの階層構造を確認することができる。

```
$ tree
.
└── myDjangoPrj01
    ├── manage.py
    └── myDjangoPrj01
        ├── __init__.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py
```
プロジェクト配下に移動し、サーバを起動してみる。

```
$ cd myDjangoPrj01/
$ python manage.py runserver
```
ブラウザから下記URLにアクセス。

- http://127.0.0.1:8000/

下記画面が表示されていればひとまず成功。
![djangoinitial.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499546/e1ba4668-af99-439d-bdda-a3ffda50b3e9.png)

- サーバ起動時に下記が赤文字で表示されたかもしれない。

```
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
```
下記コマンドで解決できる。

```
$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying sessions.0001_initial... OK

```
再度python manage.py runserverを実行すると同じwarningが表示されずにサーバの起動を確認することができた。

次の記事: [PythonでWebアプリ開発03（DjangoでHello World!を表示させる））](https://qiita.com/TechAngel/items/6f55fad459b6ebef2cfe)