尝试从头开始设置Django(使用Vagrant、Centos、Python3)

首先

前几天,我在本地环境下尝试使用Anaconda时,突然想到能否在浏览器中展示它呢?于是,我决定创建一个能够使用Django的环境。

这次我从Vagrant的box启动开始,一直到在浏览器上显示Django的虚拟服务器界面。

我希望能够制作一个应用程序,用户最终在浏览器上输入表单数据,然后服务器端根据接收到的数据进行机器学习模型计算,并将结果返回到浏览器。

执行环境

宿主操作系统:Windows10
客户操作系统:Centos7(Vagrant)

制作Vagrant的Box

我在Vagrant+Python3+Django环境中参考了HelloWorld。我将在命令提示符中进行操作。

vagrant box add centos/7
vagrant init centos/7

在生成的Vagrantfile中追加以下两行。

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

回到命令提示符,启动Vagrant。

vagrant up
vagrant ssh

安装Python3

因为默认情况下只安装了Python 2系列,所以我想安装Python 3。考虑到未来,我觉得使用版本管理软件可能是明智的选择,因此我决定使用pyenv。虽然有点不推荐,但是…… 我正在参考使用pyenv进行Python 3安装的指南。

准备必要的一切。我正在使用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入门

通过使用pyenv来安装Python3,可以进行Python的安装和管理。

bannerAds