ubuntu 14.4 apache2 django

記錄下本身的配置過程以及碰見的問題。html

系統: Ubuntu 14.04 64python

系統內置Python版本:2.7.6linux

 

先聲明,我一下操做都以root身份。 若登陸是非root身份,請在命令前加sudo.web

1. 安裝apache2sql

用 apt-get命令,它是一款適用於UnixLinux系統的應用程序管理器。用於檢索應用程序並將其加載到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.

  1. 下載安裝包: 到 https://modwsgi.readthedocs.io/en/develop/user-guides/quick-installation-guide.html 下載最新版本的安裝包mode_wsgi-x.y.z
  2. tar xvfz mod_wsgi-x.y.z.tar.gz
  3. cd mode_wsgi-x.y.z
  4. ./configure  # configure腳本會在各個標準路徑下面找Apache版本工具apxs,也會在PATH中找到安裝的可執行的python。
  5. make
  6. make install # 安裝完後,能夠在/usr/lib/apache2/modules/下看到mod_wsgi.so。
  7. 在apache2的httpd.conf文件(小做用的ubuntu的因爲平臺問題,這個文件名是apache2.conf),加下面語句指令

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應用才能正常運做。

  1. 在apache2的httpd.conf文件(小做用的ubuntu的因爲平臺問題,這個文件名是apache2.conf),加下面語句指令

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,這裏是小做學藝不精,不知道該多少合適,因此直接給全部權限,望大神指點)

 

通過安裝、配置和拍錯,成功了。

 

在這個過程當中,看了網上不少篇的教程,沒有一片能夠完整的解決小做的實際問題。全部寫下小做的經驗,給本身,也分享你們。

有不對的地方,但願不吝賜教。

相關文章
相關標籤/搜索