當前位置:
首頁 > 知識 > ubuntu下配置Apache+mod

ubuntu下配置Apache+mod

經過了一個星期的摸索,查找資料以及實驗,我搭建的環境基本能用(還有就是Django後台的靜態文件載入的問題)

這裡面只是介紹一下我的過程,因為對應Apache還不是很熟練,特別是配置文件。只能供大家參考一下。

網上的資料比較多,但是可能不適合自己,只能取其精華,但是沒經驗的話,不知道哪裡是精華,所以就多試試吧。寫這個博客,也是對自己這一段時間堅持學習的鼓勵。

轉發,請標記出處:http://www.cnblogs.com/if-then/p/6959730.html

環境 Ubuntu16.04LTS

Apache 2.4.25

mod_wsgi :mod_wsgi-4.5.15.tar.gz

Django :1.8

Apache 搭建:

Apache搭建有兩種方式

一,下載源碼http://archive.apache.org/dist/httpd/,編譯安裝的方式

這種方式呢,我下載的是httpd-2.4.25.tar.gz

源碼安裝還是要看官方文檔,它對應系統有依賴包主要有 apr-util-1.5.4 、pcre-8.38,下載編譯前看看文檔的注意事項,少走彎路!

二,sudo apt-get install apache2

這種安裝方便,但是我安裝完,配置文件與源碼安裝的方式不一樣,要在site-enable下,而且是虛擬機方式的配置文件,我網上找資料的時候,多半是看到的httpd.conf配置的,所以這個沒深入看。但是看到一個博客下的評論,有人是這樣配置的,跟我的配置意思一樣,可以借鑒,如下:

DocumentRoot /var/other/django/ibooklist/

ServerName *.chedushi.com

ServerAlias *.chedushi.com

WSGIScriptAlias / /var/other/django/ibooklist/ibooklist/wsgi.py

Alias /media/ /var/other/django/ibooklist/media/

Alias /static/ /var/other/django/ibooklist/static/

/var/other/django/ibooklist/static/>

Order deny,allow

Allow from all

Options +ExecCGI

Order allow,deny

網上資料有的寫配置這個,和我配置httpd.conf文件意思一樣(此段補加的20170613)。我只能不嚴謹的說應該差不多,^_^

安裝方式還是比較簡單,不多說了!只有安裝完,訪問127.0.0.1 能看到it"s works ?還是 it works? 就行了!

安裝mod_wsgi

注意: 安裝這個寶貝也需要一些依賴,也要先看官方文檔!

下載了mod_wsgi-4.5.15.tar.gz

解壓

tar -zxvf mod_wsgi-4.5.15.tar.gz

進入目錄,./configure

遇到一個問題 /bin/sh: 1: apxs: not found

百度有的說要安裝httpd-devel

但在Apache網站上,只有for fedora and Centos 的rpm包

本U沒有對應的包

再查查看~~~轉發,請標記出處:http://www.cnblogs.com/if-then/p/6959730.html

上官方文檔,也時有寫的

If you are running Debian or Ubuntu Linux with Apache 2.4 system packages, regardless of which Apache MPM is being used, you would need both:

apache2 (此包應該不用,如果安裝了相當於安裝了一個應用服務,所以你在試的時候先裝下面的dev,如果不行,再裝吧)

apache2-dev

看來一切都得看官方文檔的靠譜!!將這個兩個用 apt-get install 安裝上

再編譯~~~結果還是不行~~我淚~~~

報錯如下

  1. /usr/bin/ld: /usr/local/lib/libpython2.7.a(abstract.o): relocation R_X86_64_
  2. 32 against `a local symbol" can not be used when making a shared object; rec
  3. ompile with -fPIC

這是要重新安裝python2.7而且重新編譯 用-fPIC參數(這裡注意,安裝的時候如果你用的是sqlite3的資料庫,這裡就一塊弄了,否則django應用都起不來,先安裝一個sudo apt-get install libsqlite3-dev,這樣再./configure --prefix=/usr/local/ CFLAGS=-fPIC , make的時候就不會提示

Python build finished, but the necessary bits to build these modules were not found:

_bsddb _sqlite3_tkinter ........

需要單獨安裝的這個提示了)

我因為這個和sqlite3安裝的事情,多安裝了好幾遍python2.7 因為時個老電腦1cpu2核的,結果編譯耗費了老久時間了~~~~

命令如下 進入python源碼目錄下

./configure --prefix=/usr/local/ CFLAGS=-fPIC ###ps:--enable-optimizations 這個參數可加可不加,加上的話make的時間長,我經過多次的話,後來在 test_logging 的過程就報錯了,網上沒查到,可能跟我的主機名有關,但不確定)

make

sudo make install

安裝完的路徑為 /usr/local/lib/下的python2.7

然後再安裝mod_wsgi

安裝完後,會在Apache 安裝目錄/usr/local/apache24/下的文件夾modules中存在 mod_wsgi.so,(主要就是為了它!!,網上有說下載so文件,拷貝到這個文件夾下,但我沒找到哪裡下載)到此安裝算成功了,但是我們還是測試一下,看可以用不

在 /usr/local/apache24/cgi-bin/下 建立一個測試腳本 test.wsgi(名字隨便,叫wsgi.py更好吧,因為Django就是用這個呢!)

def application(environ, start_response):

status = "200 OK"

output = "Hello World!"

response_headers = [("Content-type", "text/plain"),

("Content-Length", str(len(output)))]

start_response(status, response_headers)

return [output]

以上腳本在官網上也有,我是在誰的博客里複製了一份。複製粘貼的時候,檢查一下格式是否符合python

然後配置 sudo vi /usr/local/apache24/conf/httpd.conf

找到一堆LoadModule XXXXXXX的地方,增加一條

LoadModule wsgi_module modules/mod_wsgi.so

在 ScriptAlias /cgi-bin/ "/usr/local/apache24/cgi-bin/" #當然了 注意路徑可能不一樣

加上

ScriptAlias /test "/usr/local/apache24/cgi-bin/test.wsgi" #起了一個test的別名指向這個文本,可以在瀏覽器里訪問http://127.0.0.1/test

如果出現Hello World!,就成功了,如果沒有,再加一竄下面的訪問控制許可權的!

Require all granted

到這,環境應該就沒問題了,希望你能夠順利到這!

安裝Django項目

這裡要先說的是,我對與配置文件還不是很熟悉,怎麼配置是最小及最優還不是很了解,只能說是能用

到這呢,就只是配置文件的事情了,如果你的python載入模塊都正常的話,如果不正常,你看缺少什麼模塊就加什麼,用pip安裝很簡單,但是pip建議還是源碼安裝吧

還有就是不要裝多個python,就留一個就行了。

這裡面主要先改一下

DocumentRoot "/usr/local/apache24/htdocs" 路徑換成你的Django的路徑,

指向項目目錄,不要指嚮應用下,如 /usr/app/mystie/

mysit

├── dbshell.bat

├── db.sqlite3

├── manage.py

├── migrate.bat #bat文件是我在window上編寫程序時寫的,可以忽略!

├── mysit

├── __init__.py

├── __init__.pyc

├── settings.py

├── settings.pyc

├── urls.py

├── urls.pyc

├── wsgi.py

└── wsgi.pyc

├── news #我的model view等文件目錄

├── static #靜態文件的文件目錄

└── syncdb.bat

上面的路徑很重要,就是寫路徑的問題了,我DocumentRoot改成下面 DocumentRoot "/usr/app/mysit"

#緊鄰的文件夾就改成這個,指嚮應用的目錄,下面的目錄都是相對於DocumentRoot的

Options Indexes FollowSymLinks ExecCGI

AllowOverride None

裡面配置這些就可以了 ,注意,網上說2.2版本和2.4版本的授權命令是不一樣的,所以你如果查詢了好多,會看到allow from all,這個是2.2的等同於 Require all granted在這條ScriptAlias /test "/usr/local/apache24/cgi-bin/test.wsgi"語句下,插入下面的語句,指定django項目的wsgi.py

WSGIScriptAlias / "/usr/app/mysit/mysit/wsgi.py" ###wsgi.py 不用做任何改動,網上好多要加路徑的,我覺得既然django就支持這個方式,應該不用動的!

再加一段允許訪問的許可權,如下,(我沒明白為什麼還要再給一遍,或者為什麼不行,因為是相對於DocumentRoot了啊???)

Require all granted

因為我的static放在/usr/app/mysit下的static目錄了,所以再加個許可權,(我真不知道為什麼還加,我就是因為這個問題,弄了2晚上)

AllowOverride None

Options all

而且我前面的已經加了一個 /mysti的許可權了!!!

到此,我訪問127.0.0.1/index就可以訪問我的程序了,(小問題是登後台,沒有樣式,並且sqlite3還是訪問不了,目前還沒解決,先把步驟寫了)好了,就寫到這吧,互相學習

轉發,請標記出處:http://www.cnblogs.com/if-then/p/6959730.html

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技優家 的精彩文章:

SQL Server Alwayson可用性副本會話期間的可能故障
尚學堂高琪Java300集視頻精華筆記
Javascript檢測值
創建對象的N種模式
redis內部數據結構深入淺出

TAG:科技優家 |

您可能感興趣

Ubuntu Linux環境下shadowsocks-qt5的安裝與配置
在 Ubuntu 中使用 Slimbook Battery Optimizer 切換電源模式
第三個版本的Ubuntu Linux抵達Windows Store
Chromium和Firefox擁抱Snap格式 可安裝在Ubuntu等發行版本
Ubuntu Docker 安裝
Google宣布其內部的Linux桌面操作系統將從Ubuntu轉到Debian
ubuntu16.04通過Chrome搭建Postman環境
如何在Windows 10上安裝Ubuntu或openSUSE
LinuxUbuntu的apt軟體包管理
微軟:Windows 10 ARM將支持Ubuntu Linux
Debian 取代 Ubuntu 成為 Google 內部 Linux 發行版的新選擇
不用Win 10!大神在Surface Pro 3上運行Ubuntu
Canonical發布信息圖:Ubuntu Linux連接一切
在 Ubuntu 18.04 LTS 上安裝 Microsoft Windows 字體
好消息:Windows 10 ARM將支持Ubuntu Linux
微軟將Ubuntu Linux帶入ARM版Windows 10
Ubuntu下系統在帶Python和conda中安裝的Python共存問題
如何在 Ubuntu 或 Linux Mint 啟用 Chromium 硬體加速的視頻解碼
如何在Ubuntu上開啟MongoDB的IP Security
Linux Ubuntu搭建Git伺服器