Django + Python + MySQL 的开发与部署

来源:互联网 发布:如何下载淘宝卖家版 编辑:程序博客网 时间:2024/06/05 13:16

  前段时间自学了一下Django的web开发,帮自己的部门完成了一个小型资产管理的网站,现在总结一下过程。


一. 开发环境的搭建:


在windows7上采用eclipse + python + pydev + django开发,安装流程如下:


1. 下载并安装python。本文作者使用的是Windows 7 x86_64位,使用python2.7.6版本,默认安装到C:\python27\。


2. 下载并解压Django-1.6.5.tar.gz。运行命令行工具“cmd”,进入解压后的目录,运行C:\python27\python.exe setup.py install完成安装Django

Windows上安装Python+Django+Eclipse开发环境












3. 安装好的Django一般在Python安装目录的Lib\site-packages下, 然后将C:\python27\Python26\Lib\site-packages\django\bin;添加到系统环境变量path中(注意路径值根据个人安装情况而定)。添加成功之后关闭cmd。再重新启动一个cmd,输入命令django-admin.py startproject mysite,如果没有提示错误,则表示安装成功。


4. 安装Eclipse中开发Python的插件PyDev


  • 本来是可以通过eclipse->Windows->Preferences->Install/Update->Available Software Sites增加Pydev网址,然后通过eclipse->help->Install New Software...进行安装PyDev,貌似在我们这篇神奇的国土,这个方法无法访问安装

  • 基于以上原因,我们只能通过手动进行PyDev插件的安装了:从http://www.pydev.org/download.html下载PyDev插件,将其解压后的文件夹里会有featuresplugins两个文件夹,将其内容拷贝到eclipse对应的文件夹下即可:

  • 配置PyDevPreferences->Pydev->Interpreter-PythonAuto Config


二. 部署环境的搭建:

在ubuntu上采用 Django + Apache + Mysql搭建web server.


1. 安装Python, ubuntu一般会自带,可使用python --version 查看版本,推荐2.7+

 

2. 安装Django, 介绍两种方式:

  • 下载安装包直接安装,到网站上下载: www.djangoproject.org  Django-x.x.x.tar.gz 

    解压:tar xzvf  Django-1.2.1.tar.gz

    安装:sudo python install setup.py


  • 使用pip工具安装, 先安装pip工具,sudo apt-get install python-pip, 再安装Django, sudo pip install Django==1.6.7


3. 安装Apache:  sudo apt-get install apache2


4. 安装MySQL:  sudo apt-get install mysql-server mysql-client


5. 需要通过python去访问MySQL,所以需要安装MySQLdb,sudo apt-get install python-mysqldb


6. Apache 需要支持WSGI(Web Server Gateway Interface),这是web server和web application 之间的标准接口, 所以我们需要安装libapache2-mod-python: sudo apt-get install libapache2-mod-python


7. 测试Django 和 MySQLdb是否成功, 在命令行进入python shell:python

>>>import django

>>>import MySQLdb

如果没有报错,说明安装成功


8. 检测Django本地服务器是否能成功工作:

sudo mkdir /home/djangoapps

sudo mkdir /home/djangoapps/work

cd /home/djangoapps/work

django-admin startproject mysite

cd mysite

python manage.py runserver

命令运行成功,会出现以下提示:

Validating models...


0 errors found
September 24, 2014 - 09:57:47
Django version 1.6.7, using settings 'mysite2.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

然后在浏览器输入http://127.0.0.1:8000/,可以看到一个django的页面,说明Django已经没有问题。

三. Apache和Django的关联:

1. 设置Apache的权限:

cd /etc/apache2sudo vim apache2.conf
找到
<Directory />        Options FollowSymLinks        AllowOverride None        #Require all denied        Allow from all</Directory>

#号是我加的,Alow from all也是加的,改成这个样子就是了。


2. 创建Django工程, 这在测试Django本地server的是够已经完成。


3. 创建WSGI

sudo vim /home/djangoapps/work/mysite/apache/django.wsgi

填入如下内容:

复制代码
import osimport syspath = '/home/djangoapps/work/mysite'if path not in sys.path:    sys.path.insert(0, '/home/djangoapps/work/mysite')os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'import django.core.handlers.wsgiapplication = django.core.handlers.wsgi.WSGIHandler()
复制代码
path是刚创建的工程文件夹位置,对应"mysite"的地方都是对应那个工程的名字。

4.站点设置文件

去/etc/apache2/sites-available/建站点设置文件
cd /etc/apache2/sites-availablesudo vim mysite.conf

填入如下内容

复制代码
<VirtualHost *:80>    #ServerName hello.djangoserver    DocumentRoot /home/djangoapps/work/mysite     <Directory /home/djangoapps/work/mysite>          Order allow,deny        Allow from all    </Directory>    WSGIDaemonProcess mydjangosite processes=2 threads=15 display-name=%{GROUP}    WSGIProcessGroup mydjangosite    WSGIScriptAlias / /home/djangoapps/work/mysite/apache/django.wsgi</VirtualHost>
复制代码

5. 启动站点
别离开/etc/apache2/sites-available
sudo a2ensite mysitesudo service apache2 reload

Django站点已经配置好了,这时访问 http://127.0.0.1,可以看到的是Apache的页面了。

在/etc/apache2/sites-available可以看到000-default.conf,这个就是apache默认的站点,对应/var/www/html
如果都用80端口的话,访问到的是apache,而不是刚建的django。
可以关闭这个站点,
sudo a2dissite 000-defaultsudo service apache2 reload

这时就能正常访问刚建的django站点了。


6. 配置端口

也可以换个端口,在mysite.conf文件中,<VirtualHost *:80>改成<VirtualHost *:xxxx>自己要的端口,比如8000。

然后改ports.conf
cd /etc/apache2sudo vim ports.conf

看到Listen 80了吧,下面加一行 Listen 8000,就能用8000端口了。

sudo service apache2 reload


四. 开发过程中的问题

1. 在使用html TextArea控件时,发现输入的内容被POST到服务器,写进数据库时是有换行的,但是从数据库读出来再带入到Django的模板时换行会被忽略掉,使用pre标签可以解决此问题,<pre> {{mode}} </pre>。


五. 相关资源:

https://www.djangoproject.com/

http://djangobook.py3k.cn/2.0/


0 0
原创粉丝点击