Edited at

Vagrant+Python3+Django環境でHelloWorld

More than 1 year has passed since last update.


はじめに

唐突にLINE botを作りたいなぁ、と思い立って、Vagrant、CentOS7でPython3 + Django環境を作りました

インストール待ちとか除けば1時間あればHello World!までできると思います。

ちなみに前提としてはvagrant+virtualboxがインストールされていることです。

最終的にLINE bot作成まで行う予定ですが、今回は最初のステップとして環境構築まで


VagrantでCentOS7の環境構築

vagrantについては Vagrant + VirtualBoxでWindows上に開発環境をサクッと構築する がわかりやすいです。(Windowsへのインストールですが。。。)

centos7をboxに追加+立ち上げ+ログイン(cents7は公式で)

vagrant box add centos/7

vagrant init centos/7
vagrant up
vagrant ssh


Python3のインストール

[vagrant@localhost ~]$ python --version

Python 2.7.5
[vagrant@localhost ~]$ yum search python3

どうやら2系しか入っていないので、Python.orgからダウンロードして、Unix プラットフォームで Python を使う にそってインストールする

※pythonのバージョン違う場合は、バージョンの数値だけいじれば問題ないと思います。

先にハマりポイント

先に必要なものはインストールしておかないとあとあとハマるから注意!!!

※どんな感じにハマるかはpython3にpipがインストールされてないし、できなくてハマってる人へを参照

sudo yum install -y zlib-devel

sudo yum install -y libffi-devel
sudo yum install -y wget
sudo yum install -y openssl-devel
sudo yum install -y postgresql-devel
sudo yum install -y sqlite-devel

## postgresqlはあとあと使う予定

上のインストールが終わったら、こっちにもどる

[vagrant@localhost ~]$ cd /usr/local/bin

[vagrant@localhost bin]$ sudo wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
[vagrant@localhost bin]$ sudo tar xvzf Python-3.7.0.tgz
[vagrant@localhost bin]$ cd Python-3.7.0/
[vagrant@localhost Python-3.7.0]$ sudo ./configure
[vagrant@localhost Python-3.7.0]$ sudo make altinstall
[vagrant@localhost Python-3.7.0]$ /usr/local/bin/python3.7 --version
Python 3.7.0

一応パスを通す(python3にしたいだけ)

そしたら、python2系と3系を使い分けれる感じになった

[vagrant@localhost Python-3.7.0]$ sudo ln -s /usr/local/bin/python3.7 /usr/bin/python3

[vagrant@localhost Python-3.7.0]$ python3 --version
Python 3.7.0
[vagrant@localhost Python-3.7.0]$ python --version
Python 2.7.5


Djangoをインストール

Djangoのインストール方法のなすがままにインストールする


まずは、古いバージョンの Django を削除する

pip or easy_installでインストールしていれば特に削除する必要なし。勝手に最新版になる。

python setup.py install使ったならDjangoのディレクトリごと消してやればいい。

(って解釈しました)

で、このコマンドでバージョンが返ってこなければOK

[vagrant@localhost app]$ python -c "import django; print(django.__path__)"

Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named django


pipでインストールする(オフィシャルリリースをインストールするのやり方)

pipは、python3.4以降であればデフォルトで入っているので気にしない、パスを通す(pip3にしたいだけ)のとバージョンの最新化を実施

[vagrant@localhost bin]$ pip3.7 list

Package Version
---------- -------
pip 10.0.1
setuptools 39.0.1
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skippin
[vagrant@localhost bin]$ sudo ln -s /usr/local/bin/pip3.7 /usr/bin/pip3
[vagrant@localhost bin]$ pip3 --version
pip 10.0.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
[vagrant@localhost bin]$ sudo pip3 install --upgrade pip
Successfully installed pip-18.0

※ちなみにpip3.7python3.7 -m pip は同じです

virtualenv、virtualenvwrapper、djangoをインストール

[vagrant@localhost bin]$ sudo pip3 install virtualenv

[vagrant@localhost bin]$ sudo pip3 install virtualenvwrapper
[vagrant@localhost bin]$ sudo pip3 install Django


DjangoでHello World!

はじめての Django アプリ作成、その 1 のなすがままに進める

「python」→「python3」で実行する(3.7を新しくインストールしたので。)

Djangoがインストールされているかチェック!

[vagrant@localhost bin]$ python3 -m django --version

2.0.7

アプリケーションを置きたいところで、以下を実行

[vagrant@localhost app]$ django-admin startproject mysite

[vagrant@localhost app]$ cd mysite
[vagrant@localhost mysite]$ python3 manage.py runserver

本来、ここでHelloWorldのページが見れるはず。

しかし、仮想環境に作成したためhttp://127.0.0.1:8000では確認できず。

一度、仮想環境からログアウトしてforwarded_port設定をおこなう

Vagrantfileconfig.vm.network "forwarded_port", guest: 8000, host: 18000を追加する

※元々、config.vm.network "forwarded_port"がコメントアウトされているので、その下にでも足してください。

再度、仮想環境へログイン

vagrant reload

vagrant ssh

サーバを起動

ただし、今回はちょっとしたオプションを追加(他PCからも見れるよ設定を追加)

[vagrant@localhost -]$ cd app/mysite

[vagrant@localhost mysite]$ python3 manage.py runserver 0:8000

これでhttp://127.0.0.1:18000/でページがひらけたはず!

「The install worked successfully! Congratulations!」というメッセージとロケットみたいなのが表示されたらOK!


おわりに

今回はここまで

どうですかね?待ち時間含めても2〜3時間でここまでいけたのでは?と思います。

もしハマりポイントがあれば、ご指摘ください。

次回は、DjangoでCRUDを作るところを記載しようと思います。

LINE botはまだ先になりそうだ。。。