1. 192_60_33_2

    Posted

    192_60_33_2
Changes in title
+1時間で出来る!Vagrant+Python3+Django環境でHelloWorld
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,175 @@
+# はじめに
+唐突にLINE botを作りたいなぁ、と思い立って、Vagrant、CentOS7でPython3 + Django環境を作りました
+**インストール待ちとか除けば1時間あればHello World!までできる**と思います。
+
+ちなみに前提としてはvagrant+virtualboxがインストールされていることです。
+
+**最終的にLINE bot作成まで行う予定ですが、今回は最初のステップとして環境構築まで**
+
+# VagrantでCentOS7の環境構築
+
+vagrantについては [Vagrant + VirtualBoxでWindows上に開発環境をサクッと構築する](https://qiita.com/ozawan/items/160728f7c6b10c73b97e) がわかりやすいです。(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](https://www.python.org/)からダウンロードして、[Unix プラットフォームで Python を使う](https://docs.python.org/ja/3.7/using/unix.html#building-python) にそってインストールする
+※pythonのバージョン違う場合は、バージョンの数値だけいじれば問題ないと思います。
+
+**先にハマりポイント**
+先に必要なものはインストールしておかないとあとあとハマるから注意!!!
+※どんな感じにハマるかは[python3にpipがインストールされてないし、できなくてハマってる人へ](https://qiita.com/192_60_33_2/items/5de1fe9fcfd89ff0faeb)を参照
+
+```
+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のインストール方法](https://docs.djangoproject.com/ja/2.0/topics/install/)のなすがままにインストールする
+
+### まずは、古いバージョンの 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](https://docs.djangoproject.com/ja/2.0/intro/tutorial01/) のなすがままに進める
+
+**「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はまだ先になりそうだ。。。