Help us understand the problem. What is going on with this article?

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はまだ先になりそうだ。。。

192_60_33_2
最近はプロジェクト管理がメイン。開発したいなと思ってる今日この頃
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away