0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Djangoを一からセットアップしてみた(Vagrant, Centos, Python3)

Last updated at Posted at 2020-06-02

はじめに

先日、ローカル環境でAnacondaを使ってみたのですが、「これをブラウザで表示することはできないものか…?」と思い、Djangoを使える環境を作ることにしました。

今回はVagrantのbox立ち上げから、ブラウザにDjangoの仮想サーバ画面を表示するところまで行いました。

最終的には、
 ブラウザ上でフォームに入力
→送られたデータを基にサーバ側で機械学習モデルが計算
→結果をブラウザに返す
という感じのアプリが作れたらなと思っております。

実行環境

ホストOS: Windows10
ゲストOS: Centos7(Vagrant)

VagrantのBoxを作る

こちらはVagrant+Python3+Django環境でHelloWorldを参考にしました。
コマンドプロンプトで作業します。

vagrant box add centos/7
vagrant init centos/7

生成されたVagrantfileに以下の2行を追記。

config.vm.synced_folder "./", "/home/vagrant/work"
config.vm.network "forwarded_port", guest: 8000, host: 18000

コマンドプロンプトに戻ってvagrantを起動します。

vagrant up
vagrant ssh

Python3をインストール

デフォルトで入っているのがpython2系のみだったので、python3を入れたい。今後のことを考えると、バージョン管理ソフトを使うのが得策かなと思ったので、pyenvを使うことにしました。非推奨らしいですが……。
pyenv を用いた Python3 インストールを参考にしています。

必要な諸々を準備。ここからはTeratermで作業しています。vagrant sshでも良いかも知れません。

$ sudo yum groupinstall "Development tools"
$ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel git

pyenvをインストール

$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source .bash_profile

pyenvを最新版に

$ pyenv --version
pyenv 1.2.3-43-g35f7ef8
$ pyenv install --list # インストール可能なpythonが大量に出てきます
$ pyenv install 3.8.3 # 使いたいバージョンがあることを確認し、インストール
$ pyenv global 3.8.3

pyenv, pythonのバージョンを確認

$ pyenv versions
  system
* 3.8.3 (set by /home/vagrant/.pyenv/version)
$ python --version
Python 3.8.3

Djangoをインストール

旧Djangoを削除(存在しないことが確認できれば良し)

$ python -c "import django; print(django.__path__)"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named django

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

$ pip install virtualenv
$ pip install virtualenvwrapper
$ pip install Django

Djangoのバージョン確認

$ python -m django --version
3.0.6

SQLite3のバージョンアップ

Vagrantのデフォルトで入っているSQLite3はバージョンが古いらしく、そのままサーバを立ち上げようとするとエラーが出るので、新しいものをインストールします。
Django入門 (チュートリアル) - とほほのWWW入門が参考になりました。

$ yum install -y wget gcc make
$ wget https://www.sqlite.org/2019/sqlite-autoconf-3290000.tar.gz
$ tar zxvf ./sqlite-autoconf-3290000.tar.gz
$ cd ./sqlite-autoconf-3290000
$ ./configure --prefix=/usr/local
$ make
$ make install
$ cd ..
$ rm -rf ./sqlite-autoconf-3290000 ./sqlite-autoconf-3290000.tar.gz
$ mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
$ ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
$ echo 'export LD_LIBRARY_PATH="/usr/local/lib"' >> ~/.bashrc
$ source ~/.bashrc

Djangoの仮想サーバに接続

/home/vagrant/work配下にプロジェクトを作成。
Vagrantfileで設定したので、ここに作ったファイルやアプリがローカルと仮想環境で共有されます。

※確認(Vagrantfile)

config.vm.synced_folder "./", "/home/vagrant/work"

Djangoプロジェクト作成

$ cd /home/vagrant/work
$ django-admin startproject mysite # mysiteはお好みのプロジェクト名で
$ cd mysite # プロジェクト内へ移動
$ python manage.py runserver 0:8000 # サーバ起動

あとはhttp://127.0.0.1:8000 をブラウザに打ち込めばページが開けます!

django.jpg

後記

当初、サーバは起動しているのにブラウザでは何も表示できず、かなり手間取りました。何とか自力で解決できて良かったです。
でも、やりきったぞ感はあるけどこれはあくまで準備段階。アプリケーションを完成させるまで道のりは遠そうです。

参考

VagrantからDjangoインストールまで全般:
Vagrant+Python3+Django環境でHelloWorld

SQLite3のバージョンアップ:
Django入門 (チュートリアル) - とほほのWWW入門

pythonのインストール・管理:
pyenv を用いた Python3 インストール

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?