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/
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 安裝上
再編譯~~~結果還是不行~~我淚~~~
報錯如下
- /usr/bin/ld: /usr/local/lib/libpython2.7.a(abstract.o): relocation R_X86_64_
- 32 against `a local symbol" can not be used when making a shared object; rec
- 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"
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就支持這個方式,應該不用動的!
再加一段允許訪問的許可權,如下,(我沒明白為什麼還要再給一遍,或者
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伺服器