読者です 読者をやめる 読者になる 読者になる

Django1.8.3+Python2.7.6をubuntu14-serverにインストールからhello worldまで

Djangをインストールしてhello worldまで進める。

pipをインストールする。

pythonはdebian server14インストール時に付いてきたもの

giraffy@pe-dev:~$ python --version
Python 2.7.6

バージョン2.7.6だった。3系も同時に管理できるようだが、2.7ですすめる。


pipの使い方 (2014/1バージョン) — そこはかとなく書くよん。 を参考に、pythonライブラリ管理ソフトのpipをインストールする。

giraffy@pe-dev:~$ sudo apt-get install python-pip
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  python-chardet-whl python-colorama python-colorama-whl python-distlib
  python-distlib-whl python-html5lib python-html5lib-whl python-pip-whl
  python-pkg-resources python-requests-whl python-setuptools
  python-setuptools-whl python-six-whl python-urllib3-whl python-wheel
  python3-pkg-resources
Suggested packages:
  python-genshi python-lxml python-distribute python-distribute-doc
  python3-setuptools
Recommended packages:
  python-dev-all
The following NEW packages will be installed:
  python-chardet-whl python-colorama python-colorama-whl python-distlib
  python-distlib-whl python-html5lib python-html5lib-whl python-pip
  python-pip-whl python-requests-whl python-setuptools python-setuptools-whl
  python-six-whl python-urllib3-whl python-wheel python3-pkg-resources
The following packages will be upgraded:
  python-pkg-resources
1 upgraded, 16 newly installed, 0 to remove and 112 not upgraded.
Need to get 1776 kB of archives.
After this operation, 4341 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://jp.archive.ubuntu.com/ubuntu/ trusty-updates/main python3-pkg-resources all 3.3-1ubuntu2 [31.7 kB]

pip経由でvirtualenvをインストールする

バーチャルENVはpythonの実行環境、たとえばバージョンとかを明示的に指定できるツール。開発環境と本番環境でバージョン差異が出て不具合が発生する、などの事態を防ぐ。pythonやdjango環境は頻繁に改修が行われているため、virtualenvをかませるのが一般的なようだ。

giraffy@pe-dev:~$ sudo pip install virtualenv
Downloading/unpacking virtualenv
  Downloading virtualenv-13.1.0-py2.py3-none-any.whl (1.7MB): 1.7MB downloaded
Installing collected packages: virtualenv
Successfully installed virtualenv
Cleaning up...

続いて、Virtualenvwrapper のインストール

giraffy@pe-dev:~$ sudo pip install virtualenvwrapper
Downloading/unpacking virtualenvwrapper
  Downloading virtualenvwrapper-4.6.0-py2.py3-none-any.whl
#(略)
    Installing virtualenv-clone script to /usr/local/bin
  Found existing installation: six 1.5.2
    Not uninstalling six at /usr/lib/python2.7/dist-packages, owned by OS
Successfully installed virtualenvwrapper stevedore virtualenv-clone six pbr
Cleaning up...

.bashrcにvirtualenv設定を追加しておく

giraffy@pe-dev:~$ vi ~/.bashrc
# 以下を追記
source /usr/local/bin/virtualenvwrapper.sh
WORKON_HOME=$HOME/.virtualenvs
export PIP_RESPECT_VIRTUALENV=true
giraffy@pe-dev:~$ source ~/.bashrc
# 追記分をロードする

virtualenvを使ってdjango用のsandbox環境を作る

今回は、django_env1という名前で環境を作成した。

giraffy@pe-dev:~$ mkvirtualenv django_env1
New python executable in django_env1/bin/python
Installing setuptools, pip, wheel...done.

生成が完了すると、プロンプトの前に(django_env1)が付いた。

(django_env1)giraffy@pe-dev:~$

これで環境が固定されたわけだ。

workon django_env1(環境にログイン)/ deactivate(環境を抜ける) / workon(環境一覧) / rmvirtualenv django_env1(環境を削除)

あたりのコマンドを覚えておけば良いだろう。

Djangoをインストール

環境に入る

giraffy@pe-dev:~$ workon
django_env1
giraffy@pe-dev:~$ workon django_env1
(django_env1)giraffy@pe-dev:~$

Djangoのバージョンを指定してインストール

(django_env1)giraffy@pe-dev:~$ pip install django==1.8.3
# 環境内ではsudo不要
#(略)
Installing collected packages: django
Successfully installed django-1.8.3

virtualenv内でDjangoプロジェクトを生成する

Djangoプロジェクトをテスト的に作成する。私の場合は/home/projects 以下に /djtest というディレクトリ名下にdjtestプロジェクトを作成する。

(django_env1)giraffy@pe-dev:~$ cd /home/projects/
(django_env1)giraffy@pe-dev:/home/projects$ django-admin.py startproject djtest
django_env1)giraffy@pe-dev:/home/projects$ tree -a /home/projects/djtest/
/home/projects/djtest/
|-- djtest
|   |-- __init__.py
|   |-- settings.py
|   |-- urls.py
|   `-- wsgi.py
`-- manage.py

1 directory, 5 files

無事プロジェクトの初期ファイルが生成された。

Djangoプロジェクトを初期化してテスト稼働

manage.py migrateをしてテストウェブサーバーを起動して、ブラウザから動作確認する。

(django_env1)giraffy@pe-dev:/home/projects$ cd djtest/
(django_env1)giraffy@pe-dev:/home/projects/djtest$ python manage.py migrate
Operations to perform:
  Synchronize unmigrated apps: staticfiles, messages
  Apply all migrations: admin, contenttypes, auth, sessions
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states... DONE
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... 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 sessions.0001_initial... OK

(django_env1)giraffy@pe-dev:/home/projects/djtest$ ./manage.py runserver 192.168.56.111:8000
Performing system checks...

System check identified no issues (0 silenced).
August 15, 2015 - 06:11:03
Django version 1.8.3, using settings 'djtest.settings'
Starting development server at http://192.168.56.111:8000/
Quit the server with CONTROL-C.

f:id:giraffyk1:20150815151223p:plain
こんな感じで、It worked!が出ればOK。
コンソールのテストサーバーには下記のようなアクセスログが表示されるはず。

[15/Aug/2015 06:11:50]"GET / HTTP/1.1" 200 1767
[15/Aug/2015 06:11:51]"GET /favicon.ico HTTP/1.1" 404 1941