Djangoの開発環境を作る

Vagrantにたどり着いた理由

Pythonのバージョン管理は何かと大変なので、仮想マシーン上で環境を管理してしまうのが一番手っ取り早いかつ一番安全だと思ったため。

2系、3系両方入ってると何が何だか分からなくなるしね 笑

使用ツール

Vagrnat

仮想環境を管理するためのツールです。
Vagrantfileを用意すると、ファイルの内容に沿ったコマンドが自動で実行されるため、このファイルを共有するだけで、同じ環境を簡単に用意することができます。

Virtual Box

仮想化ソフトウェア・パッケージの一つ。仮想環境を用意するために必要なツールです。
Python環境は、Ubuntu仮想環境の上に構築します。

仮想環境の構築

現時点で、Cent OSのVagrant Boxファイルがインストールできているかを確認します。できていない場合は、各自でインストールをしてください。

>>> vagrant box list
centos/7           (virtualbox, 1905.1)

次に、以下のコマンドでVagrantfileを作成します。これが仮想マシーンの鋳型のような物になります。

vagrant init <マシーン名>

出来上がった、Vagrantfileを開き、以下のような行を追加します。

config.vm.synced_folder "./workspace", "/home/vagrant/django_rest_framework"

これで、PCのVagrantfileと同じディレクトリ のworkspace`フォルダと仮想マシーンの`django_rest_frameworkディレクトリ が同期されます。この辺りは各自のセンスで命名しましょう。

これで準備は全て整ったので、仮想マシーンを起動させていきます。

# ファイル共有のためのプラグイン
vagrant plugin install vagrant-vbguest
# 起動
vagrant up

で仮想マシーンを起動させ

vagrant status

runnningになっていることを確認したら。

vagrant ssh

仮想環境に接続します。

これで仮想環境の構築までは完了!

基本設定

# yumをアップデート
sudo yum update -y
# gitをインストール
sudo yum install git -y
# 必要なライブラリを入れておく
sudo yum install libffi-devel zlib-devel bzip2 bzip2-devel readline-devel openssl-devel python-devel mysql-devel gcc -y

yum install wget

# firewalldは切っておく
systemctl stop firewalld
# firewalld自動起動停止
systemctl disable firewalld
# SELinixの確認
getenforce
# もし Enforcingの場合は、 以下で編集しSELINUX=enforcingをSELINUX=disabledに書き換える。
sudo vi /etc/selinux/config
# 設定を反映させるためにマシンを一旦シャットダウン
sudo shutdown -r now
# 僕の場合は、何故かDisableにならずにParmissiveになった
getenforce

パスワードを聞かれた場合はvagrantと入力します。

Python環境を整える

今回は、仮想マシーン上でpyenvを使うことにします。

git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
exec $SHELL -l
pyenv -v

pyenv install -l
pyenv install 3.7.0
pyenv versions
pyenv global 3.7.0
pyenv versions

pip install django
pip install djangorestframework
pip install django-filter
pip install djangorestframework-jwt
pip install PyMySQL
pip install mysqlclient
pip install uwsgi

# MySQLをインストール
yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
yum info mysql-community-server 
sudo yum install -y mysql-community-server

MySQLインストール参考
How to Install MySQL on CentOS 7
MySQL5.7の初期設定はこちら
CentOS7でMySQLにログインできない
上記のリンクを参考に環境を作成しました。

Djangoプロジェクトを作成

まず、PCとvファイル共有しているディレクトリ へ移動します。

[vagrant@localhost ~]$ cd django_rest_framework/
[vagrant@localhost django_rest_framework]$ pwd
/home/vagrant/django_rest_framework

できたら、以下のコマンドでプロジェクトを作成

[vagrant@localhost ~]$ django-admin startproject <アプリ名>

これで作業が始められそうです。

.
└── diary_app
    ├── diary_app
    │   ├── __init__.py
    │   ├── asgi.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    └── manage.py

仮想環境をシャットダウンする

exitで仮想環境から抜けます。

[vagrant@localhost django_rest_framework]$ exit
ログアウト
Connection to 127.0.0.1 closed.

最後にvagrant haltで仮想環境をシャットダウンして作業終了です。

Leave a Reply

Your email address will not be published. Required fields are marked *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)