Django + Python + MySQL 的開發與部署

  前段時間自學了一下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/apache2
sudo 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 os
import sys
path = '/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.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
複製代碼
path是剛創建的工程文件夾位置,對應"mysite"的地方都是對應那個工程的名字。

4. 站點設置文件

去/etc/apache2/sites-available/建站點設置文件
cd /etc/apache2/sites-available
sudo 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 mysite
sudo 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-default
sudo service apache2 reload

這時就能正常訪問剛建的django站點了。


6. 配置端口

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

然後改ports.conf
cd /etc/apache2
sudo 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/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章