はじめに
唐突に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.7
と python3.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
設定をおこなう
Vagrantfile
にconfig.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はまだ先になりそうだ。。。