溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

將本地django項目上傳到apache的方法

發(fā)布時間:2020-09-02 11:01:24 來源:億速云 閱讀:165 作者:小新 欄目:編程語言

這篇文章主要介紹了將本地django項目上傳到apache的方法,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

Django部署到Apache上,步驟如下

安裝必要的包

sudo apt-get update
sudo apt-get install python-pip apache2 libapache2-mod-wsgi

然后還要保證WSGI模塊在運行:

sudo a2enmod wsgi

配置Python虛擬環(huán)境

為了不要修改系統(tǒng)python,事實上我懷疑系統(tǒng)python和xampp的庫對不上有可能這樣可以解決

安裝工具:

sudo pip install virtualenv

進入我們的project目錄,新建環(huán)境:

virtualenv myprojectenv

進入虛擬環(huán)境安裝python包:

source myprojectenv/bin/activate

然后命令行應(yīng)該會長這樣:

(myprojectenv)user@host:~/myproject$

安裝django和django rest_framework

pip install django==1.8
pip install djangorestframework==3.6.4

注意: django2開始就不支持python2了,所以要安裝低級一點的,但是如果djangorestframework不安裝低級一點的話會有匹配不上的

修改apache配置文件/etc/apache2/sites-available/000-default.conf

修改對于Django項目的路徑,這次我們使用守護進程模式,主要需要保留三行:WSGIDaemonProcess,WSGIProcessGroup,和WSGIScriptAlias

```sh
# 這是靜態(tài)文件配置
Alias /demos/todolist/static/ /root/web/demos/todolist/work/static/
#Order deny,allow
#Allow from all
Require all granted
<Files wsgi.py>
Require all granted
WSGIDaemonProcess python-home=/root/web/demos/todolist/tdlenv python-path=/root/web/demos/todolist
WSGIProcessGroup 
WSGIScriptAlias /demos/todolist /root/web/demos/todolist/todolist/wsgi.py process-group=
一個Django項目的結(jié)構(gòu)一般是這樣的:
ProjectName
-- ProjectName
---- wsgi.py
-- AppName
---- static
```

注意有兩個名字一樣的文件夾,別搞混了

靜態(tài)文件配置:

第一行為Alias <URL Path> <FILE PATH>

<URL Path>的含義和上面一樣,從此http://hostname/<URL PATH>/就是訪問靜態(tài)文件夾<FILE PATH>的路徑

第二行為<Directory <FILE PATH> >,填的還是靜態(tài)文件夾的路徑

修改Django的代碼

wsgi.py,直接用生成的

setting.py

為了放到生產(chǎn)環(huán)境上,可以把DEBUG關(guān)了,同時ALLOWED_HOST要修改一下以便外界可以訪問:

```python
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
# ALLOWED_HOSTS = ['*'] # 不建議寫這個
ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'your ip', 'your hostname'] # 一般寫這4個
```

靜態(tài)路徑需要修改

```python
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
STATIC_URL = '/demos/todolist/static/'
``主要是要與Alias 里的`保持一致

在prod里調(diào)試

有很多時候本地服務(wù)器上可,到了server上就有bug,但是卻不知道是哪里的bug,這個時候需要打印一些必要的信息。

最簡單的方式就是將信息打印到stderr,這樣wsgi的log會記錄在Apache的error_log里:

import sysprint 
>> sys.stderr, message

關(guān)于Sqlite3的權(quán)限配置

這個問題下有比較全的情況,翻譯過來如下,對db.sqlite3數(shù)據(jù)庫來說:

確保Apache可以寫數(shù)據(jù)庫的父目錄
確保數(shù)據(jù)庫的完整路徑上的文件夾不以數(shù)字開頭
確保完整路徑上沒有db文件夾
確保/tmp文件夾在三個級別上都可寫
確保settings.py里寫的是完整路徑
確保路徑上沒有特殊字符

在WINDOWS上,路徑要寫成雙反斜杠

最后:

重啟Apache!?。。。。。?!

每次修改python源碼也要重啟?。。。。〔蝗籛SGI會用原來的代碼??!

感謝你能夠認真閱讀完這篇文章,希望小編分享將本地django項目上傳到apache的方法內(nèi)容對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI