Django是當前流行的基於python的開源web開發框架,容易上手並且代碼的重用性也很好,是敏捷開發的典範。本文將着重介紹如何在ubuntu下安裝django並經過apache發佈django項目。請儘可能按照文中提到的軟件版本號進行安裝有些版本間的兼容問題會致使安裝不成功。例如在ubuntu 12.04上進行部署發現安裝不少軟件都由於依賴關係而不可以安裝。Let's begin!python
1. 安裝pythonmysql
ubuntu自帶python,所以通常不須要安裝,本文所使用的版本爲2.7web
2. 安裝mysql-serversql
sudo apt-cache search mysql-server #查詢能夠安裝的版本 apache
sudo apt-get install mysql-server-5.1 #本文中安裝5.1 django
3. 安裝mysqlPythonubuntu
下載MySQL for Python 1.2.3,到http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/下載對應文件瀏覽器
解壓縮文件框架
tar -zxvf MySQL-python-1.2.3.tar.gz ide
安裝mysql開發包
sudo apt-get install libmysqld-dev
進入目錄,修改文件site.cfg,去掉這一行的註釋 #mysql_config=/usr/local/bin/mysql_config而且更新本地mysql_config的路徑,個人本地路徑是/usr/bin/mysql_config
安裝setuptools
sudo apt-get install python-setuptools
安裝python開發包
sudo apt-get install python-dev
最後,執行編譯安裝
sudo python setup.py install
編譯過程當中可能出現的錯誤及解決方法:
EnvironmentError: /usr/bin/mysql_config not found 解決方法:安裝libmysqld-dev
ImportError: No module named setuptools 解決方法:安裝python-setuptools
pymemcompat.h:10:20: fatal error: Python.h: No such file or directory 解決方法:安裝python-dev
4. 安裝django
以前的三個步驟都爲安裝django作好了準備,打通了python和mysql之間的通道。
解壓以後進入目錄直接執行命令
sudo python setup.py install
5. 安裝apache
sudo apt-get install apache2
6. 安裝mod_python
下載mod_python 3.3.1 http://archive.apache.org/dist/httpd/modpython/
安裝apache開發包
sudo apt-get install apache2-dev
解壓以後進入目錄執行(路徑根據實際路徑更改)
./configure –with-apxs=/usr/bin/apxs2 –with-python=/usr/bin/python
源代碼中有一個公認的bug須要修復,在src/connobject.c的第142行:
!(b == APR_BRIGADE_SENTINEL(b)
改成
!(b == APR_BRIGADE_SENTINEL(bb)
最後編譯安裝
sudo make & make install
7. 配置apache
在mod_python安裝好以後,咱們會在/usr/lib/apache2/modules下發現新建立的mod_python.so, 咱們在目錄/etc/apache2/mods-available下按照其餘文件格式同樣新建文件python.load,內容爲:
LoadModule python_module /usr/lib/apache2/modules/mod_python.so
同時在mods-enabled下創建到這個文件的連接
sudo ln -s ../mods-available/python.load python.load
8. 發佈網頁
這裏將着重介紹如何將一個django項目經過apache向外發佈以讓外網訪問。
首先,創建一個project,取名mysite,目標目錄設在/home/user_name/Workspace
django-admin.py startproject mysite
在/usr/apache2/sites-available下新建site配置文件mysite,內容以下:
<Location "/">
SetHandler python-program
PythonPath "['/home/user_name/Workspace/mysite/'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonOption django.root /
PythonDebug On
</Location>
啓用site
sudo a2ensite mysite
重啓apache,
sudo /etc/init.d/apache2 restart
打開瀏覽器輸入http://localhost/
若是看到如下畫面則說明部署成功
這僅僅是一個最小項目的部署狀況,針對較爲複雜的項目,會在下一篇文章中討論。