vagrant,centos7,python3.6,djangoで環境構築

シェアする

  • このエントリーをはてなブックマークに追加

pythonバージョン管理のpyenvは導入しない方向で!
vagrant,VirtualBox,centos7のboxが用意されている前提で進めます。

centos7の仮想環境作成

入れたboxを確認。

mbazuki:python hide$ vagrant box list
centOS70          (virtualbox, 0)
centOS70-2        (virtualbox, 0)
centos65          (virtualbox, 0)
laravel/homestead (virtualbox, 3.0.0)

作業用ディレクトリを作成します。
今回は「Python」というディレクトリを作成。
その中で、

mbazuki:python hide$ vagrant init centOS70

するとVagrantfileが作成されます。

mbazuki:python hide$ ls
Vagrantfile

vagrantを起動

mbazuki:python hide$ vagrant up


VirtualBoxで起動できているのが確認できます。
(一番下のPython_default…)

起動した環境の中にはいります。

mbazuki:python hide$ vagrant ssh
Last login: Thu Jul 16 08:48:31 2015 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ pwd
/home/vagrant
[vagrant@localhost ~]$ 

ここまででcentos7の仮想環境が作られました。
その中にpythonやらなんやら必要なものをインストールしていきます。

Python3導入

centos7には最初からpythonが用意されています。

[vagrant@localhost ~]$ python -V
Python 2.7.5

python3系をインストールするために、いろいろ調べてみると
pyenvを使うとか、
pyenvいらないとか、
virtualenv/venvだけでいいとか、
出てきて、どうしたらいいんだーって感じなので、
シンプルイズベターの理念に則って、pyenv使わない方向でいきます。
必要に駆られれば入れたら良い。
なるべくシンプルに。

リポジトリ追加

[vagrant@localhost ~]$ sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm

pyrhon3.6関連のものをsearchする。

[vagrant@localhost ~]$ yum search python36
python36u-debuginfo.x86_64 : Debug information for package python36u
python36u-lxml-debuginfo.x86_64 : Debug information for package python36u-lxml
python36u-mod_wsgi-debuginfo.x86_64 : Debug information for package
                                    : python36u-mod_wsgi
python36u-psycopg2-debuginfo.x86_64 : Debug information for package
                                    : python36u-psycopg2
python36u-setproctitle-debuginfo.x86_64 : Debug information for package
                                        : python36u-setproctitle
uwsgi-plugin-python36u-debuginfo.x86_64 : Debug information for package
                                        : uwsgi-plugin-python36u
python36u.x86_64 : Version 3 of the Python programming language aka Python 3000
python36u-debug.x86_64 : Debug version of the Python 3 runtime
python36u-devel.x86_64 : Libraries and header files needed for Python 3
                       : development
python36u-gunicorn.noarch : Python WSGI application server
python36u-libs.x86_64 : Python 3 runtime libraries
python36u-lxml.x86_64 : XML processing library combining libxml2/libxslt with
                      : the ElementTree API
python36u-mod_wsgi.x86_64 : A WSGI interface for Python web applications in
                          : Apache
python36u-pip.noarch : A tool for installing and managing Python packages
python36u-psycopg2.x86_64 : A PostgreSQL database adapter for Python
python36u-redis.noarch : Python interface to the Redis key-value store
python36u-setproctitle.x86_64 : Python module to customize a process title
python36u-setuptools.noarch : Easily build and distribute Python packages
python36u-test.x86_64 : The test modules from the main python 3 package
python36u-tkinter.x86_64 : A GUI toolkit for Python 3
python36u-tools.x86_64 : A collection of tools included with Python 3
uwsgi-plugin-python36u.x86_64 : uWSGI - Plugin for Python support

  Name and summary matches only, use "search all" for everything.

どれを入れたらいいんだ…。

何が必要なのか、どうしてそれが必要なのか、あると何ができるのか、無いとなにができないのか。
などわからないままですが、とりあえずいろいろ検索して他の方が入れてるのを入れてみる。

[vagrant@localhost ~]$ sudo yum install -y python36u.x86_64
<略>
インストール:
  python36u.x86_64 0:3.6.2-1.ius.centos7                                        

依存性関連をインストールしました:
  python36u-libs.x86_64 0:3.6.2-1.ius.centos7  

python36u-libsも入ってくれた。
あとは、python36u-devel.x86_64とpython36u-pip.noarchも必要そうなので試しに入れてみる。

[vagrant@localhost ~]$ sudo yum install yum install -y python36u-devel.x86_64 python36u-pip.noarch
<略>
インストール:
  python36u-devel.x86_64 0:3.6.2-1.ius.centos7                                  
  python36u-pip.noarch 0:9.0.1-1.ius.centos7                                    

依存性関連をインストールしました:
  python36u-setuptools.noarch 0:33.1.1-1.ius.centos7  

これでいけるだろうか?

[vagrant@localhost ~]$ python3.6 --version
Python 3.6.2
[vagrant@localhost ~]$ which python3.6
/usr/bin/python3.6
[vagrant@localhost ~]$ python --version
Python 2.7.5

一応入ってる。
デフォルトは2のまま。

venvでpython3.6の仮想環境を作る

[vagrant@localhost ~]$ python3.6 -m venv testvenv
[vagrant@localhost ~]$ cd testvenv
[vagrant@localhost testvenv]$ python --version
Python 2.7.5

まだ2系。

[vagrant@localhost testvenv]$ source bin/activate
(testvenv) [vagrant@localhost testvenv]$ python --version
Python 3.6.2

有効にするとデフォルトが3系に。

Djangoフレームワークを導入

ここにDjangフレームワークを導入する

(testvenv) [vagrant@localhost testvenv]$ pip install django

プロジェクトを作成

(testvenv) [vagrant@localhost testvenv]$ django-admin startproject mysite

mysite
—-manage.py
—-mysite
——–__init__.py
——–settings.py
——–urls.py
——–wsgi.py
という構造でディレクトリが出来上がります。

開発用サーバーを起動

まずVagrantFileの方を編集。

# config.vm.network "forwarded_port", guest: 80, host: 8080
↓
 config.vm.network "forwarded_port", guest: 8000, host: 8080

一旦vagrantの仮想環境から抜けてvagrant reloadしておきます。
再びvagrant upしてvagrant ssh。

manage.pyがある階層へ移動して

(testvenv) [vagrant@localhost mysite]$ python manage.py runserver 0:8000
Performing system checks...

System check identified no issues (0 silenced).

You have 13 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.

October 07, 2017 - 06:48:08
Django version 1.11.6, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.


そしてブラウザでhttp://127.0.0.1:8080/へアクセスすると、繋がらない。

ポートを開放したらつながるようになりました。

(testvenv) [vagrant@localhost mysite]$ sudo firewall-cmd --permanent --add-port=8000/tcp
success
(testvenv) [vagrant@localhost mysite]$ sudo systemctl restart firewalld.service

runserverは開発用に存在してるので、本番環境では使わないでくださいとのこと。
なので次回は、apache導入して、hello,worldします。