目次
はじめに
2020年4月時点で、CentOS7系の最終バージョンとなるCentOS7.7ならば、標準のリポジトリから、python 3.6.8をインストールできます。なので、何らかの理由で古いバージョンの環境を構築する時のための記録となりました。
色々な環境で利用できるようになったpythonを、paizaの問題を解きながら基本的な構文は理解できたので、パズルより実用寄りの部分を理解するためにpython製のフレームワークであるDjangoを利用して何か作ることにします。
環境
- CentOS 7.5.1804 (Vagrant 2.1.1、VirtualBox 5.2.12r122591)
- Python3.6.2
- Django 2.0.6
環境構築
Vagrantで作成したCentOS7に、SCL(Software Collection)パッケージからpython3をインストールします。最新バージョンと少しズレますが、元々インストールされているpython2の環境を壊さず残しておけるのでSCLを利用します。
仮想マシン作成
仮想マシンを作成する時に使用したVagrantfile
# vim: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.box_version = "1802.01"
config.vm.network "private_network", ip:"192.168.201.201"
config.vm.provider "virtualbox" do |vb|
# 仮想マシンに割り当てるメモリ容量(MiB)
vb.memory = 4096 # 4GiB
end
end
python3のインストール
# SCLリポジトリの登録
[vagrant@localhost ~]$ sudo yum -y install centos-release-scl
# 色々更新
[vagrant@localhost ~]$ sudo yum -y update
# SCLパッケージのpython3(3.6)をインストール
[vagrant@localhost ~]$ sudo yum -y install rh-python36
SCLでインストールしたpython3を有効化
[vagrant@localhost ~]$ echo ". scl_source enable rh-python36" >> ~/.bash_profile
[vagrant@localhost ~]$ . ./bash_profile
Djangoのインストール
Djangoの公式サイトに従ってpipによりインストールを行います。
pipでインストールする際に、ファイルの書き込みで管理者権限が必要になります。しかし、sudoだけでは一部の環境変数が引き継がれないので、sudo後の環境でSCLの有効化します。
[vagrant@localhost ~]$ sudo sh -c ". scl_source enable rh-python36; pip install django"
[vagrant@localhost ~]$ python -m django --version
2.0.6
Djangoプロジェクト(雛形)の作成
[vagrant@localhost]$ django-admin startproject mysite
[vagrant@localhost]$ cd mysite
[vagrant@localhost mysite]$ tree .
.
├── manage.py
└── mysite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
1 directory, 5 files
データベースの準備(マイグレーション)
初期状態でデータベースにSQLite3を利用するように設定されています。プロジェクトのルートにあるmanage.pyにコマンドを渡してマイグレーションを行います。
[vagrant@localhost mysite]$ 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 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 sessions.0001_initial... OK
開発用サーバーでの実行
オプションを指定しない場合はhttp://127.0.0.1:8000/
で接続要求を待ち受けます。このままでは仮想マシン内からしか接続できません。
[vagrant@localhost mysite]$ python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
June 22, 2018 - 07:05:04
Django version 2.0.6, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
0:8000
オプションを指定して、ホストマシンのブラウザから接続を行えるようにします。
[vagrant@localhost mysite]$ python manage.py runserver 0:8000
Performing system checks...
System check identified no issues (0 silenced).
June 22, 2018 - 07:18:17
Django version 2.0.6, using settings 'mysite.settings'
Starting development server at http://0:8000/
Quit the server with CONTROL-C.
これで、開発用サーバーには接続できすがアクセス許可が無いためにエラーとなります(画面1)。エラーページにはALLOWED_HOSTS
に設定を追加するように書かれています。このALLOWED_HOSTS
は{projectルート}/mysite/settings.py
にあります。
初期状態ではリストに何も設定されていないので、"192.168.201.201"
を追加します。
...省略
ALLOWED_HOSTS = ["192.168.201.201"]
...省略
ALLOWED_HOSTS
を追加後、開発用サーバーを再起動すれば、ホストマシンのブラウザから雛形のトップページにアクセスできます(画面2)。
まとめ
まだ、さわり程度だけどRailsやCakePHPなどより、躓く箇所が少なく環境の構築が行えました。このまま順調に進むといいのですが、はてさて。
それとは別に、ESP32やmicro:bitなどの制御にもpython(MicroPython)が使えるようになって、なかなか面白い状態で試すことがいっぱいです。