Linux下安裝Apache並以mod_wsgi方式部署django站點


源碼編譯方式安裝Apache

首先下載Apache源碼壓縮包,地址為http://mirror.bit.edu.cn/apache/httpd/

繼續下載apr和apr-util壓縮包,地址為http://mirror.bit.edu.cn/apache/apr/

下載pcre壓縮包,地址為http://ftp.exim.llorien.org/pcre/

l 安裝arp

tar -zxf apr-1.5.0.tar.gz #解壓壓縮包 壓縮包名稱根據版本號決定
cd apr-1.5.0 #進入解壓目錄
./configure --prefix=/usr/local/apr #進行安裝配置 設置安裝位置
make #編譯
sudo make install #安裝

l 安裝apr-util

tar –zxvf apr-util-1.5.3.tar.gz #解壓 壓縮包名稱根據版本號決定
cd apr-util-1.5.3 #進入解壓目錄
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
make 
sudo make install

l 安裝pcre

unzip –o pcre-8.34.zip #解壓 文件名依據版本號而定
cd pcre-8.34
./configure --prefix=/usr/local/pcre
make
sudo make install

l 安裝Apache

tar –zxvf httpd-2.4.7.tar.gz #解壓 我安裝的為2.4.7版本
cd httpd-2.4.7
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/
make
sudo make install

之后啟動Apache,

cd /usr/local/apache2/bin

sudo apachectl –k start
或者 
sudo service apache2 start

如果看到如下頁面,說明安裝成功。

如何控制Apache服務

啟動:

sudo service apache2 start 
或者
sudo apachectl start

停止:

sudo service apache2 stop
或者
sudo apachectl stop

重啟:

sudo service apache2 restart 
或者
sudo apachectl restart

重新加載站點:

sudo service apache2 reload

 

如何使Apache支持django

采用mod_wsgi的方式。

首先需要下載mod_wsgi-2.4.tar.gz。

可以到官網下載。

還可以到點這里直接下載。

接下來執行如下命令,對壓縮包進行解壓;

tar –zxvf mod_wsgi-3.4.tar.gz

然后cd到解壓之后的目錄,執行如下命令,產生配置編譯配置文件;

./configure --with-apxs=/usr/local/apache2/bin/apxs --with-python=/usr/bin/python

其中/usr/local/apache2為Apache的安裝目錄,確保apxs存在於bin目錄中,/usr/bin/python為Ubuntu中python默認安裝位置。

接下來執行make 命令,進行編譯;

make

最后執行如下命令,進行安裝;

sudo make install

如果到這里都順利的話,會提示“chmod 755 /usr/local/apache2/modules/mod_wsgi.so” 為mod_wsgi.so賦權。如圖:

照着提示輸入命令即可:

chmod 755 /usr/local/apache2/modules/mod_wsgi.so

接下來,安裝Django:

django官網(https://www.djangoproject.com/download/)上提供了兩種安裝方式。

l pip方式

pip install Django==1.6.2

l 直接下載壓縮包安裝,下載地址https://www.djangoproject.com/download/1.6.2/tarball/

tar xzvf Django-1.6.2.tar.gz   #先解壓cd Django-1.6.2 #進入解壓后目錄
sudo python setup.py install

上面兩種方式任選一種即可。

安裝完成后可以在終端窗口中查看是否安裝成功

我安裝的是django 1.7版本。

如何新建一個django網站

Apache的默認www服務地址為/var/www,剛剛安裝好服務后,里面只有一個index.html的網頁文件。

接着說一下Apache,由於Apache在Linux下安裝后,安裝文件是分兩部分存在的,一部分在安裝時指定的目錄中,另一部分在/etc/apache2目錄中。

由於我安裝Apache時,指定的目錄是/usr/local/apache2,所以我的機器上apache分布在如下兩個目錄,即:

/usr/local/apache2   #可執行程序目錄

/etc/apache2         #配置文件目錄

進入/etc/apache2目錄,查看目錄結構,其中藍色為目錄,白色為文件。

httpd.conf 文件通常是一個空文件,以后設置時可以加入以下指令;

下面我們來看一下httpd.conf中的幾條指令,“#”后加入了注釋說明;
Port 80  #定義了web服務器的偵聽端口,默認值為80,它是TCP網絡端口之一。若寫入多個端口,以最后一個為准。 

User apache(Unix平台最流行的WEB服務器平台)  #一般情況下,以nobody用戶和nobody組來運行web服務器,因為web 

Group apache(Unix平台最流行的WEB服務器平台)   #服務器發出的所有的進程都是以root用戶身份運行的,存在安全風險。 

ServerAdmin root@localhost  #指定服務器管理員的E-mail地址。服務器自動將錯誤報告到該地址。 

ServerRoot /etc/httpd    #服務器的根目錄,一般情況下,所有的配置文件在該目錄下 

ServerName new.host.name:80  #web客戶搜索的主機名稱 

KeepAliveTimeout 15  #規定了連續請求之間等待15秒,若超過,則重新建立一條新的TCP連接 

MaxKeepAliveRequests 100   #永久連接的HTTP請求數 

MaxClients 150   #同一時間連接到服務器上的客戶機總數 

ErrorLog logs/error_log   #用來指定錯誤日志文件的名稱和路徑 

PidFile run/httpd.pid   #用來存放httpd進程號,以方便停止服務器。 

Timeout 300  #設置請求超時時間,若網速較慢則應把值設大。 

DocumentRoot /var/www/   #用來存放網頁文件

 

magic文件中包含的是有關mod_mime_magic模塊的數據, 一般不需要修改它;

ports.conf則為服務器監聽IP和端口設置的配置文件;

mods-available目 錄下是一些.conf和.load 文件, 為系統中可以使用的加載各種模塊的配置文件, 而mods-enabled目錄下則是指向這些配置文件的符號連接, 從配置文件apache(Unix平台最流行的WEB服務器平台)2.conf 中可以看出, 系統通過mods-enabled目錄來加載模塊, 也就是說, 系統僅通過在此目錄下創建了符號連接的mods-available 目錄下的配置文件來加載模塊。同時系統還提供了兩個命令 a2enmod 和 a2dismod用於維護這些符號連接。這兩個命令由 apache(Unix平台最流行的WEB服務器平台)2-common 包提供。命令各式也非常簡單: a2enmod [module] 或 a2dismod [module];

sites-available目 錄下為配置好的站點的配置文件, sites-enabled 目錄下則是指向這些配置文件的符號連接, 系統通過這些符號連接來起用站點 sites-enabled目錄下的符號連接附有一個數字前綴, 如000-default, 這個數字用於決定啟動順序, 數字越小, 啟動優先級越高. 系統提供了兩個命令 a2ensite 和 a2dissite 用於維護這些符號連接。這兩個命令由 apache(Unix平台最流行的WEB服務器平台)2-common 包提供;

 

Apache配置介紹到這里,接下來開始配置Django網站。

 

Apache默認的服務器地址為var/www目錄,沒有必要修改此位置,cd到/var/www目錄,新建Django項目,執行如下命令:

sudo django-admin.py startproject mysite

創建的項目目錄結構如下

mysite/

   manage.py

   mysite/ __init__.py

       settings.py

       urls.py

       wsgi.py

可以通過

python manage.py runserver 8000

測試django項目是否創建成功。如果提示錯誤,可能是由於django默認使用sqllite數據庫的原因,只要在mange.py同級目錄中添加db.sqllite3即可。

之后,我打算將mysite這個站點,在端口8888下運行。

修改/etc/apache2/ports.conf ,在其中的

NameVirtualHost *:80
Listen 80

下面添加

NameVirtualHost *:8888
Listen 8888

表示VirtualHost *:8888的虛擬主機監聽8888端口,而默認的VirtualHost *:80的虛擬主機監聽80端口。

接下來讓apache來加載我們自己的工程網站,去apache的配置目錄/etc/apache/sites-available, 新建一個我們網站的配置文件。

sudo vim mysite

添加如下配置:

<VirtualHost *:8888>    
	DocumentRoot /var/www/mysite/mysite    
	<Directory /var/www/mysite/mysite>        
		Order allow,deny        
		Allow from all    
	</Directory>    

WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py</VirtualHost>

在/etc/apache2/httpd.conf添加如下配置:

<VirtualHost *:8888>    
	DocumentRoot /var/www/mysite/mysite    
	<Directory /var/www/mysite/mysite>        
		Order allow,deny        
		Allow from all    
	</Directory>    

WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py</VirtualHost>

最后在/var/www/mysite/mysite/wsgi.py中添加如下代碼:

import sys
sys.path.append("/var/www/mysite/")

將網站目錄添加到環境變量,如果網站目錄不再環境變量中,會出現錯誤。

激活我新建的mysite網站,執行如下命令:

sudo a2ensite mysite #其中mysite就是sites-available中新建的那個配置文件的名稱

重新加載網站:

sudo service apache2 reload

之后執行

sudo service apache2 restart

重啟apache服務。

在瀏覽器打開127.0.0.1:8888,會看到如下頁面:

注:如果不想新建網站配置文件,可直接在etc/apache2/httpd.conf中添加配加默認配置即可:

WSGIScriptAlias / "/ var/www/mysite/mysite/wsgi.py"
	<Directory " /var/www/mysite/mysite">
		Order Deny,Allow
		Allow from all
	</Directory>



初次配置,如有錯誤及疏漏之處,還請各位看官提醒、指點,或者有任何問題也可留言說明。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM