記錄下本身的配置過程以及碰見的問題。html
系統: Ubuntu 14.04 64python
系統內置Python版本:2.7.6linux
先聲明,我一下操做都以root身份。 若登陸是非root身份,請在命令前加sudo.web
1. 安裝apache2sql
用 apt-get命令,它是一款適用於Unix和Linux系統的應用程序管理器。用於檢索應用程序並將其加載到Debian Linux系統。想了解apt-get具體用法。數據庫
root@louis:~# apt-get update # 再拿到Ubuntux系統的時候 強烈推薦要跑下該命令,更新一下apt-get應用程序管理器,使其中的應用程序庫又新又全。apache
root@louis:~# apt-get install apache2 django
root@louis:~# apachectl -v # 安裝apache2後,運行改命令查看apache2的版本號,已檢查是否安裝成功。
Server version: Apache/2.4.7 (Ubuntu)
Server built: Jan 14 2016 17:45:23ubuntu
2.安裝django安全
root@louis:~# apt-get install python-pip # 安裝django以前,先安裝一個python-pip。
python-pip是一個安裝和管理 Python 包的工具 , 是 easy_install 的一個替換品。用於安裝、更新和卸載Python包。 這裏沒有用apt-get命令,是由於apt-get安裝出來的Django的版本過低,而我如今還暫時不知道怎麼apt-get命令控制安裝包的版本。
root@louis:~# pip install Django==1.8.2 # pip安裝簡單的選擇版本。瞭解更多的pip具體用法。
root@louis:~# python #檢查Django是否安裝成功,在Ubuntu命令行中輸入:
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 8, 2, 'final', 0)
>>> quit()
3.安裝mod_wsgi
mod_wsgi是一個可安裝與apache中的工具,用於apache上,使得任何支持Python WSGI規格的Python web應用均可以嫁接到apache服務器上,這樣外網就能夠訪問Python web應用了。瞭解更多mod_wsgi。
WSGI: Web Server Gateway Interface。 瞭解更多WSGI。
直接用pip install mod_wsgi命令安裝,遇到兩個問題:
問題1. 報錯 'missing Apache httpd server packages.' % APXS
個人解決方法是: 補齊apache2-threaded-dev、apache2-mpm-worker兩個包, 爲何是這兩個包的緣由在參考資料: https://pypi.python.org/pypi/mod_wsgi:
apt-get install apache2-threaded-dev
apt-get install apache2-mpm-worker
問題2:error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
個人解決方法是: 安裝python-dev包
apt-get install python-dev
參考博客:http://www.cnblogs.com/EncryptingLife/p/4817027.html
解決問題1問題2後,開始安裝mod_wsgi.
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
8. 重啓Apache, 運行命令 apachectl restart
9. 在Apache error log 裏面能看到下面的信息,證實mod_wsgi被actived了。
Apache/2.7.6 (Unix) mod_wsgi/4.5.2 Python/2.7 configured
1~5步是安裝mod_wsgi包的過程,6步是檢查mod_wsgi是否安裝成功。 7~8步是配置激活mod_wsgi, 9步檢查mod_wsgi是否actived.
1~9步都出自mod_wsgi官方安裝步驟
4. 把django項目配置到已經安裝好mod_wsgi的apche上, mod_wsgi和apache一塊兒做用,python web應用才能正常運做。
WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py # 告訴apache wsgi.py文件在哪裏
WSGIPythonPath /var/www/mysite # 告訴apache Python文件根目錄在哪裏
Alias /static/ /var/www/mysite/static/ # 告訴apache 靜態文件放在哪裏
<Directory /var/www/mysite/mysite/>
<Files wsgi.py>
Require all granted
</Files>
</Directory># /var/www/mysite 是小做django項目的根目錄
# 若是Apache版本低於2.4, 用Allow from all和Order deny,allow 來代替 Require all granted
# 瞭解apache的指令語句
2. 修改django項目中的settings.py文件,設置DEBUG = False。 由於要將django項目搭建在apahe服務器上,已是生產環境了,DEBUG = True的話,安全性不好。
3. 從新加載apaceh服務,運行命令 service apache2 reload
3. 訪問網頁
遇到問題:
問題1:訪問網頁 提示 Bad Request (400)
解決方法:
到django項目的settings.py文件,設置ALLOW_HOST=['IP'] # 這樣從外網訪問http://IP/就能看django頁面。
問題2:登陸django內建的admin後臺,沒有樣式。
解決方案:
1. 在django項目的settings.py文件中定義STATIC_ROOT = 'static/' , 在我django項目(小做的django項目名是mysite)中建立 mysite/static文件夾。
2. 在django項目根目錄下運行: python manage.py collectstatic # 將admin後臺的static文件所有收集到第1步建立的文件夾裏
3. 重載apache服務器
問題3:在admin後臺登陸頁面,點擊登陸,提示OperationalError at /admin/login attempt to write a readonly database
解決方法:
修改小做用的數據庫文件db.sqliite3的權限到777
問題4:在糾正了問題3後,又報了新錯。 OperationalError at /admin/login unable to open database file
解決方法:
修改django項目全部文件夾的權限,全改成777.(其實沒有必要777,這裏是小做學藝不精,不知道該多少合適,因此直接給全部權限,望大神指點)
通過安裝、配置和拍錯,成功了。
在這個過程當中,看了網上不少篇的教程,沒有一片能夠完整的解決小做的實際問題。全部寫下小做的經驗,給本身,也分享你們。
有不對的地方,但願不吝賜教。