1. alt
Changes in tags
Changes in body
Source | HTML | Preview
@@ -1,175 +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は公式で)
-```
+```shell-session
vagrant box add centos/7
vagrant init centos/7
vagrant up
vagrant ssh
```
# Python3のインストール
-```
+```shell-session
[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)を参照
-```
+```shell-session
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はあとあと使う予定
```
上のインストールが終わったら、こっちにもどる
-```
+```shell-session
[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系を使い分けれる感じになった
-```
+```shell-session
[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
-```
+```shell-session
[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`にしたいだけ)のとバージョンの最新化を実施
-```
+```shell-session
[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をインストール
-```
+```shell-session
[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がインストールされているかチェック!
-```
+```shell-session
[vagrant@localhost bin]$ python3 -m django --version
2.0.7
```
アプリケーションを置きたいところで、以下を実行
-```
+```shell-session
[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"`がコメントアウトされているので、その下にでも足してください。
再度、仮想環境へログイン
-```
+```shell-session
vagrant reload
vagrant ssh
```
サーバを起動
ただし、今回はちょっとしたオプションを追加(他PCからも見れるよ設定を追加)
-```
+```shell-session
[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はまだ先になりそうだ。。。