记一次在 Linux 上创建 Django 应用的过程

0 环境与目标

0.1 环境

  • 服务器端

    • 操作系统: Ubuntu 14.04.2 LTS
    • 运行时: Python 3.4.0
  • 客户机端
    • 浏览器: Firefox 37.0.1
    • 数据库客户端: Navicat Premium 11.1.10

0.2 目标

在服务器端开始一个 Django 工程,采用 PostgreSQL 数据库。

0.3 要点

  • Django 安装
  • PostgreSQL 安装
  • Django 初始化数据库
  • 启动Django 服务

1 实施

1.1 Django 准备

1.1.1 安装 Django

这里安装最新的 Django

$sudo pip3 install django

如果是在原有基础上升级安装 Django,则输入一下命令

$sudo pip3 install django --upgrade

pip 会将旧版本的 Django 卸载后安装最新版。
注意,这里使用的命令是 sudo pip3 而不是简单的使用 pip,是因为没有在 virtualenv 环境下安装,所有操作都是在操作系统实环境下完成的,而 Ubuntu 缺省的 Python 环境是 Python 2,很多系统基础软件都是基于这个版本的 Python 开发,强行改为缺省使用 Python 3 会遇到各种蛋疼的情况(不要问我为什么知道)。之所以采用这种方式,是因为这里只是我个人用来练习的项目,没有生产意义,偷懒没有严格做隔离控制。在生产上做开发部署,经常会有多版本并行使用的需求,需要根据实际情况配置开发和生产环境,这里不做详细讨论。

1.1.2 创建 Django 工程

这里先创建一个名为 teamtea 的项目

$cd workspace/django
$django-admin starproject teamtea

没错,现在可以直接使用 Django 的工程管理命令 django-admin 了。
这里将工程创建好之后先放在一边,稍后进行配置。

1.2 PostgreSQL 准备

1.2.1 安装 PostgreSQL

Ubuntu 官方源的 PostgreSQL 总是会慢一个小版本,版本控表示不愉快,于是按照官方网站上的说明安装了最新版。
首先将 PostgreSQL 官方源添加到 apt 源列表。在 /etc/apt/source.list.d/ 目录下创建 pgdg.list 文件,文件内容为

deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main

这里是针对 Ubuntu 14.04 的源,其他版本的系统可以在文档中找到相关的源。
然后导入源的签名。

$wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

至此就将 PostgreSQL 的官方源添加到源列表中了。接下来更新包列表,安装需要用到的 postgresql-9.4postgresql-server-dev-9.4 两个包。

$sudo apt-get update
$sudo apt-get install postgresql-9.4 postgresql-server-dev-9.4

至此完成了 PostgreSQL 9.4 的基本安装。
同样需要注意的是,这里的数据库版本选择纯粹因为个人喜好,实际开发和生产过程中应按需选择版本。

1.2.2 配置访问权限

安装完 PostgreSQL 之后会自动在系统中创建名为 postgres 的用户,即是 PostgreSQL administrator 用户,对 PostgreSQL 的操作最好都由这个用户来进行,尽量避免使用 root 用户。为了使用这个用户,首先需要修改它的密码。

$sudo passwd postgres

postgres用户密码和访问

以上是操作系统中的 postgres 用户的操作,而我们知道数据库管理系统也有用户的概念,PostgreSQL 的管理员用户也是 postgres,为了能够使用它管理数据库,同样需要设置密码。首先登录到 postgres 用户下,

$su postgres

然后进入 PostgreSQL 的管理程序 psql,此时是不需要密码的,因为访问控制项缺省为 peer 即只允许本地操作系统上的 postgres 用户访问。

$psql

此时命令提示符变为 postgres=#,说明进入了 psql 环境,设置密码,

postgres=# \password

然后退出 psql 环境,

postgres=# \q

之后修改 postgres 用户的访问控制项,编辑 /etc/postgresql/9.4/main/pg_hba.conf 文件,将

local   all             postgres                                peer

修改为

local   all             postgres                                md5

重新载入配置文件使修改生效,

$pg_ctlcluster 9.4 main reload

注意 Debian 系的 Linux 采用的是 pg_ctlcluster 命令,而非 pg_ctl 命令。
此时再次尝试使用 psql 就需要输入密码了。

为了能使客户机上的 Navicat 登录管理 PostgreSQL,需要开启对网络端口的监听,编辑 /etc/postgresql/9.4/main/postgresql.conf 文件,将

#listen_addresses = ‘localhost‘

修改为

listen_addresses = ‘*‘

注意,这里去掉了行首的注释。同样,重新载入配置文件使修改生效。

1.2.3 创建应用用户和数据库

现在可以通过 Navicat 连接管理 PostgreSQL 数据库了,在图形化界面下很容易创建用户和数据库,这里创建与应用同名的用户和数据库就好了,全部命名为 teamtea

同样需要添加访问权限,编辑 /etc/postgresql/9.4/main/pg_hba.conf 文件,添加一行

local   teamtea             teamtea                                md5

这里限制了用户 teamtea 只能访问名为 teamtea 的数据库,这对应用来说是足够的,对整个数据库系统来说也是安全的。
完成上述工作后,就可以退出 postgres 用户了。

以下为草稿

1.3 配置 Django,启动服务

1.3.1 配置 Django

现在可以开始配置我们的 Django 工程 teamtea 了,进入工程目录,编辑文件 /teamtea/settings.py 文件,将数据库配置项修改为

DATABASES = {
    ‘default‘: {
        ‘ENGINE‘: ‘django.db.backends.postgresql_psycopg2‘,
        ‘NAME‘: ‘teamtea‘,
        ‘USER‘: ‘teamtea‘,
        ‘PASSWORD‘: ‘teamtea‘,
        ‘HOST‘: ‘localhost‘,
        ‘PORT‘: ‘5432‘,
    }
}

关于数据库配置项可以参考官方文档

这里同时将工程的时区设置为 UTC+8 即北京时间,将时区配置项修改为

TIME_ZONE = ‘Asia/Shanghai‘

1.3.2 初始化项目

现在可以对工程进行初始化了,需要说明的是,从 Django 1.7 开始已经将原有的数据库同步命令 syncdb 标记为 deprecation 了,并将在 1.9 中完全删除该命令,取代它的是 migrate 命令,

python3 manage.py migrate

这里需要说明的是,因为 Django 是通过 pip3 安装在 Python 3 的实环境下的,在执行 manage.py 脚本之前需要指定运行环境为 Python 3,否则会找不到 Django,使用 virtualenv 会有所改善。

1.3.3 启动服务

现在可以启动 Django 内置的简单测试用 web 服务器来测试整个工程是否可以运转起来了,

python3 manage.py runserver 0.0.0.0:8000

这里需要指定 IP 和端口号,否则只能在本地访问。
现在打开用户机的浏览器,访问 http://IP:8000 就可以看到调试用的页面了,说明程序运行正常。
终止服务只需要 Ctrl-C 终止进程就行了。

2 总结

2.1 过程小结

整个过程还是因为不熟悉走了不少弯路,尤其是在我的短板数据库这一块,对 PostgreSQL 还需要加强学习啊。

2.2 还可以做的工作

作为学习用的工程搭建过程,这边文章描写的步骤勉强是够用的,但是还显得很简陋,还有很多工作可以做,例如使用 virtualenv 管理开发环境,避免直接在实环境下进行开发。还可以使用 git 来进行版本控制,这既是在学习阶段也是很有必要的,它能帮助记下每次可以正常运行的代码,防止某次改动后程序无法运行而又毫无头绪的尴尬情形。
当然,部署 web 应用还可以使用 uwsgi + nginx 的方式,不过这更复杂,对 Django 的学习来说意义不大,可以当做另外一个主题去研究了。

时间: 2024-10-28 18:46:45

记一次在 Linux 上创建 Django 应用的过程的相关文章

怎么使用Python和Flask在Linux上创建应用

无论你在linux上娱乐还是工作,这对你而言都是一个使用python来编程的很好的机会,也是一个从零基础开始学习python开发(http://www.maiziedu.com/course/python/)的一个好机会,pyhon学起来很有趣且在实际的应用如yum包管理器中很有用. 给大家分享一个关于很赞的教程贴,本篇教程会带你使用python和一个称为flask的微型框架来构建一个简单的应用,来显示诸如每个进程的内存使用,CPU百分比之类有用的信息. 前置需求 Python基础.列表.类.函

在LINUX上创建GIT服务器【转】

转自:http://blog.csdn.net/xiongmc/article/details/9176785 如果使用git的人数较少,可以使用下面的步骤快速部署一个git服务器环境. 1. Client生成 SSH 公钥,以便Server端识别. 每个需要使用git服务器的工程师,自己需要生成一个ssh公钥 进入自己的~/.ssh目录,看有没有用 文件名 和 文件名.pub 来命名的一对文件,这个 文件名 通常是 id_dsa 或者 id_rsa. .pub 文件是公钥,另一个文件是密钥.假

在Linux上创建webrev(cont)[基于svn]

在前文中,基于git介绍了webrev工具.实际上,webrev工具还支持hg和svn.最近的工作中不可避免地要使用svn,故在此总结一下如何基于svn在Linux上创建webrev.顺便吐个槽,没有网页版的代码比对,用svn diff简直就是刀耕火种茹毛饮血啊!技术再娴熟的老司机,也架不住让你在高速公路上开拖来机Orz! 以前工作上一直用版本管理工具Mercurial (命令为hg), 个人学习的话用Git, 但从来没用过Subversion (命令为svn等) .所以,下面的先简单介绍一下如

在 Linux 上创建第一个 Service Fabric Java 应用程序

先决条件 开始之前,请安装 Service Fabric SDK.Azure CLI,并在 Linux 开发环境中设置开发群集. 如果使用 Mac OS X,则可使用 Vagrant 在虚拟机中设置 Linux 开发环境. 此外还需配置 Azure CLI 2.0(推荐)或 XPlat CLI,以便部署应用程序. 创建应用程序 Service Fabric 应用程序包含一个或多个服务,每个服务都在提供应用程序功能时具有特定角色. 适用于 Linux 的 Service Fabric SDK 包含

在Linux上创建网页版的webrev

在Sun/Oracle工作了N(>12)年后,对网页版的webrev工具甚为喜欢,因为其易用性确实非常非常好.幸运的是,有工程师将webrev工具放到了GitHub上,而且支持git. 下面给出使用webrev工具创建网页版webrev的全过程. 当然,首先保证git在Linux(我用的是Ubuntu14.04)上已经安装好了. 第1步: Clone webrev from here veli$ cd /var/tmp veli$ git clone https://github.com/joy

在openshift上创建django应用

python 3.3 + django 1.7 一.创建新应用 $ rhc app create -a mynewapp -t python-3.3 二.在新建的目录里添加git库 $ cd mynewapp $ git remote add upstream -m master git://github.com/lrivallain/openshift-django1.7-py3.git $ git pull -s recursive -X theirs upstream master 三.设

Linux内核创建新进程的过程

作者:xujianguo  原创作品转载请注明出处,<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ——————————————————————————————————————————————————————-———— 实验目的:  使用gdb跟踪分析一个fork系统调用内核处理函数sys_clone ,验证您对Linux系统创建一个新进程的理解; 分析fork函数对应的内核处理过程sys_clone,理解创建

Linux上创建和更改硬链接和符号链接

概述 在本篇中,学习创建和管理硬链接和符号链接.学习: 创建硬或软链接 识别链接并知道它们的类型 理解复制与链接文件之间的区别 使用链接执行系统管理任务 链接简介 在存储设备上,文件或目录包含在一些数据块中.有关某个文件的信息包含在一个 inode 中,它记录了所有者.最后访问该文件的时间.文件的大小.它是否是目录,以及谁可以读取或写入它等信息.inode 编号也称为文件序列号 ,该编号在特定文件系统内是唯一的.一个 目录条目 包含一个文件或目录的名称,以及用来存储该文件或目录的信息的 inod

Linux上搭建django

Step1: install django #sudo apt-get install python-django 验证安装成功,能在python里import django包#python>>>import django>>>django.VERSION 我用的是1.10.7>>>quit() Step2: 创建项目 >>django-admin startproject djangoproject Step3:启动服务 >>