Django是當前流行的基於python的開源web開發框架,容易上手而且代碼的重用性也很好,是敏捷開發的典範。本文將着重介紹如何在ubuntu下安裝django並通過apache發佈django項目。請儘量按照文中提到的軟件版本號進行安裝有些版本間的兼容問題會導致安裝不成功。例如在ubuntu 12.04上進行部署發現安裝很多軟件都因爲依賴關係而不能夠安裝。Let's begin!
1. 安裝python
ubuntu自帶python,因此一般不需要安裝,本文所使用的版本爲2.7
2. 安裝mysql-server
sudo apt-cache search mysql-server #查詢可以安裝的版本
sudo apt-get install mysql-server-5.1 #本文中安裝5.1
3. 安裝mysqlPython
下載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
安裝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/
如果看到以下畫面則說明部署成功
這僅僅是一個最小項目的部署情況,針對較爲複雜的項目,會在下一篇文章中討論。