这是在自己电脑上进行的试验一个django项目的过程记录。
依托的平台:PC win10 专业版 64位
虚拟机平台:virtualbox 6.0.8 64位
虚拟机系统:ubuntu 18.04.4 desktop
(查看ubuntu版本[在终端==terminal输入命令]:cat /etc/issue。另一个更多内容的查看命令:cat /proc/version)
1、安装apache2
启动ubuntu,打开终端(组合键 ctrl+alt+t):
可能用到的命令参考:
- 更新apt库:sudo apt update
- 安装指令: sudo apt install apache2
- 卸载指令: sudo apt remove apache2
- 启动:sudo service apache2 start
- 停止:sudo service apache2 stop
- 重启:sudo service apache2 restart
打开浏览器,输入localhost。
1上图–安装apache2之前在浏览器输入localhost就是上面这样的
2 上图–在终端命令行输入安装apache2的命令
3 上图–按提示输入口令。然后回车。注意:输入口令的时候光标没有什么反应。如果口令不正确,才有提示。
4 上图–键入y然后回车–开始安装
5 上图–安装顺利完成的话,就回到命令行提示符这里。等待新的命令。
6 上图–转到浏览器。刷新或输入localhost。显示如图的apache2的默认页面,则表示安装apache2成功。
apache2会自动在ubuntu建立目录/var/www/html/。上面页面的文件名及所在位置:/var/www/html/index.html
2、安装libapache2-mod-wsgi-py3
上图–安装libapache2-mod-wsgi-py3完成。(软件包: libapache2-mod-wsgi-py3 Python 3 WSGI adapter module for Apache)
3、安装python3-venv。然后用venv创建虚拟环境
在终端命令行提示符位置,输入以下命令:
cd /var/www
有说python3自带venv,可以直接用以下命令:
python3 -m venv venv4 #(venv4 是自建的虚拟环境的名称。随便自己习惯爱好命名)
建立虚拟环境。试试看----
3a上图–提示权限不够。于是在命令前加上了sudo…
上图–结果是不成功。提示说,在debian/ubuntu系统,需要安装python3-venv。
安装python3-venv----
进入/var/www目录之后,输入以下命令安装python3-venv
sudo apt install python3-venv
1、上图–安装python3-venv
6a、上图–提示无法打开被锁定文件/var/lib/dpkg/lock-front-end。用下面的命令将其删掉即可:
sudo rm /var/lib/dpkg/lock-frontend
然后敲入 y 回车确认继续安装。
8a、上图–python3-venv安装完成后回到命令行。用ls查看目录下有个venv4目录。估计是前面尝试直接使用
python3 -m venv venv4 #创建自己的虚拟环境venv4的时候产生的目录。经过试验,并不能用。将其删除。见下图----
10a、上图–将无用的venv4删除
11、上图–创建自己的虚拟环境 myvenv
12、上图–又提示权限不够。在命令前面加上 sudo。可能会要求输入口令。照办即可。
13、上图–创建myvenv成功。用ls查看目录下有了目录 myvenv
14a、上图–用source命令,运行activate激活并进入虚拟环境。用deactivate退出虚拟环境
4、安装django
1上图–
2s、上图–在过程到安装到pytz,django时,出现红字提示异常:对于某个目录下的文件权限不够。
8t1、上图–用 sudo -s获取临时root权限。但这时所在目录离开了myvenv虚拟环境。需要重新进入myvenv虚拟环境,用以下命令:source myvenv/bin/activate
看命令行的左侧开头出现白色括号里虚拟环境名称(myvenv),表示已经进入虚拟环境了。
再敲入命令:pip install django==2.0 #用 ==2.0 指定django的版本
8t2、上图–安装django成功。进入python看到是3.6版本。用django.get_version()查看django版本是‘2.0’
注:这里用 sudo su 获得root权限也可以。这时也会从虚拟环境退出。所以,获得root权限后,也需要用相关命令重新进入虚拟环境,再安装django。安装完成后,使用ctrl+d组合键退出root)
在(myvenv)root@ubun4-VirtualBox#之后,敲入 python 进入python交互环境,看到python版本是3.6.9 …等等说明。然后出现python命令行提示符 >>>
输入 import django,没有异常提示的话,表明安装成功。可以用命令:
django.get_version() # 查看django版本是‘2.0’。[ also: print(django.VERSION) ]
用exit() 或ctrl+d 退出python交互环境。回到ubuntu 终端命令行。
安装django完成。
5、创建django项目(项目==project)(网站)
使用linux-Ubuntu这类系统经常遇到的提示之一,就是‘权限不够’之类。例如前面安装django的时候。当时解决的办法是临时借用/获得root的权限。加入直接加sudo pip install xx软件包 是不行的,会出现异常/错误并被提示:sudo 没有 pip 这种命令…
解决或避免这种麻烦有若干办法,使用 ‘sudo su…’暂时获得root权限算是一个。更方便的办法可能是把自己加入root组或目录及文件的所属组后修改组的权限;或把自己更改为目录(文件夹)和文件的所有者通常也就具备了更多权限(需要借用root的权限才能做到)。
在Ubuntu(linux)系统里面活动的,被分成三种角色:所有者 (user—u)、组及组成员(group—g)、其它(others—o);还有一个是汇总前三者的名称(all—a)。
通常所有者(user)对自己的文件和目录具有完整权限即读r4、写w2、执行x1 这三项的全部权限==7。其它两者对一个目录或文件经常是只有部分权限。
1上图–用pwd命令查看当前所在的目录;用id、groups命令查看用户ubun4所在的组;用 gpasswd -d 命令把ubun4移出某个所属组(这里是root组)。这里进行了先把ubun4移出root组。在图2里再把它重新加入root组。图2把用户重新加入root组用的是usermod命令(该命令好像没有移出的选项)。也可以用命令 gpasswd -a 添加用户到组。
2上图–把用户ubun4添加到root组。这里usermod 后面的选项 -aG :表示不影响原有组,再附加/添加到一个所属组(这里是重新添加到 root 组)。
3上图–在www目录下用ll(两个L小写)命令查看各目录和文件的权限。
cd … 到上一级用ll命令查看www目录的各角色的权限(图中最下面一行)是drwxr-xr-x,所有者是root:所属组也是root。最开头drwxr-x-r-x的含义是:先忽略字母d,前面的rwx是所有者(user)的权限7,可以读、写、执行;接着的r-x是所属组的权限5,只有读和执行的权限;最后的r-x是其它者权限5,也是只能读和执行。www目录给三方的权限是755。唯所有者(这里是root)具备‘读+写+执行’权限。
4上图–先试验在755 (rwxr-xr-x) 权限下,ubun4先用命令 source myvenv/bin/activate 激活并进入了(myvenv)虚拟环境。给自己打算创建的项目起名为 ‘my’,然后用命令:
django-admin startproject my
创建名称为 my 的django项目。然而,遇到提示‘命令错误’:拒绝访问:/var/www/my。失败。虽然已经把ubun4加入到 root 组了,但是按照图3显示,对于www目录,所属组root的成员没有写入的权限。
5a1上图–未改变时目录www的权限是755(图中最下一行)
5_上图–用 sudo chmod -R 775 www 命令(图中第一行):改变目录www旧权限755为新的775。之后成功创建my项目。
5a2上图–改变后目录www的权限是775(图中第三行),即使得所属组也具备了完整权限。
5b上图–用 ll (两个L的小写。等于ls -l)命令查看项目my目录的权限及其下面子目录的权限。
可以看到,在www目录下,项目my(倒数第三行)的所有者、所属组都是ubun4,权限是755(drwxr-xr-x)。所有者(u)ubun4具备完整权限7。所属组(g)和其它(o)具备读-执行权限5。
项目my目录下有一个同名子目录my。有关项目的设置管理文件包含在这里面。
6上图–用tree命令查看my项目的目录结构。提示不存在tree命令但可以安装。依照提示安装tree
7上图–安装tree完成并查看my目录。目前my项目下的目录和文件就是这些。
上图–!!备注:好像可以删掉本条说明------8使用python manage.py migrate命令创建数据表
9上图–使用python_manage_py_runserver命令启动站点
10上图–在浏览器中网址栏输入、打开127.0.0.1:8000(或 localhost:8000),看到成功运行站点的页面。
6、在项目目录下创建app即应用(app—applications)
创建一个简单的blog应用,命名为‘app2’。
1上图–创建名称app2应用–一个简单blog
2a 上图–ubuntu下预装的是vim tiny版本,功能不全,好像没人知道如何使用。因此,需要安装vim full版本。 用命令sudo apt install vim 进行安装。之后变成vim huge版本,可以正常使用了。
2b上图–选择y同意安装vim
2c上图–安装vim完成
3a上图–用命令vi --version查看vi/vim版本。其中显示是Huge版本(Huge version without GUI)。
4a上图–使用vi编写、修改/var/www/my/app2/(就是项目/应用)下面的由django生成的models.py的文件代码,就是编写数据库模型。
4b上图–原始状态的models.py只有这两行代码。
4c上图–编写数据模型Blog2(就是类class Blog2),按照需要编写四个属性(就是四个栏目/列)。模型会被django转成数据库表(table),属性会被转成数据库表中的字段(fields)。Meta子类的属性ordering可用来设定按照哪个栏目排序。注意这是只有一个元素的元组(tuple),所以跟在元素后的那个逗号不得忽略。此处设定按照 ‘-publish’ 排序,加负号‘-’是反序。str()返回供人类阅读的文本。
4d1上图–用vi打开settings.py文件并编辑。
4d2上图–把前面创建的应用app2添加到/var/www/my/my/settings.py中的INSTALLED_APPS=列表里。目录里面的…/my/my/…两个my,第一个是项目(project)目录,第二个是与项目同名的管理目录(目录下是项目运转需要的一些文件)。
5a上图–为Blog2模型创建迁移数据。使用命令python manage.py makemigrations app2(命令+应用app2)。需要在项目目录下进行。凡是变动数据模型后,都需要再进行这个和后面的几个步骤。
5b上图–执行python manage.py makemigrations …之后的输出。显示创建了模型Blog2。
5c上图–用python manage.py sqlmigrate app2 0001命令查看模型转成数据库的情况
5d上图–用命令python manage.py migrate完成已经前面预备好的模型及数据库相关的迁移。
6a上图–在使用‘管理后台’对网站进行管理前,需要先注册一个超级用户,用 createsuperuser 命令创建超级用户admin2。
6b上图–打开命令行终端,激活虚拟环境,进入django项目my根目录,用命令python manage.py runserver启动django自带的web服务器。打开浏览器输入网址127.0.0.1:8000/admin回车,看到‘管理后台’登录提示。输入用户名admin2和口令登录。
6c上图–登录进去后看到‘管理后台’首页。页面目前只有用户和组。
7a上图–激活并进入虚拟环境myvenv后用vi命令打开 admin.py 文件注册Blog2模型。具体内容看下图7b。
7b上图–用命令vi admin.py 打开该文件,将Blog2模型注册到‘管理后台’。第二行和最下面一行是自己添加的。
7c上图–启动django自带的web服务。打开浏览器,定位到相应网页(127.0.0.1/admin)。看到了模型Blog2s。Blog2之后的‘s’是django自动加上去的。
(待续)