https://www.cnblogs.com/zhanghuanyu/p/10030796.html
1.Apache2安裝
sudo apt-get install apache 查看版本 apachectl -v Server version: Apache/2.4.18 (Ubuntu) Server built: 2017-09-18T15:09:02
2,安裝apache2解析python的包 wsgi程序包
sudo apt-get install libapache2-mod-wsgi
安裝完成後 進入 /usr/lib/apache2/modules 目錄
cd /usr/lib/apache2/modules
查看是否存在mod_wsgi.so-2.7
3.配置使apache2加載mod-wsgi包
編輯配置文件
sudo vim /etc/apache2/apache2.conf
在文件的最後 添加
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so-2.7
4,創建網站配置文件
編輯網站配置文件
sudo vim /etc/apache2/sites-available/推薦和項目同名或者使用域名.conf
配置內容:
<VirtualHost *:80> # 服務端口號 web服務默認80不推薦修改
ServerName www.pyweb.cn # 指定域名 剛剛修改的hosts文件添加的域名
ServerAdmin py@163.cn # 郵箱隨便
#wsgi文件目錄 講apache和django連接在一起
WSGIDaemonProcess python-path=/var/www/project # python-path=/var/www/項目名字
WSGIScriptAlias / /var/www/myproject/myproject/wsgi.py # /var/www/項目名/項目同名的文件夾/wsgi.py
<Directory /var/www/myproject/myproject> # /var/www/項目名/項目同名目錄
<Files wsgi.py>
Require all granted
</Files>
</Directory>
#項目文件目錄
DocumentRoot /var/www/myproject # /var/www/項目名 指定項目目錄
<Directory /var/www/myproject>
Require all granted
</Directory>
#靜態文件目錄 # 指定項目靜態資源路徑
Alias /static/ /var/www/myproject/static/ # /var/www/項目名/static/
<Directory /var/www/myproject/static/>
Require all granted
</Directory>
#錯誤日誌 日誌名可以自己定義
ErrorLog ${APACHE_LOG_DIR}/django-myproject-error.log
CustomLog ${APACHE_LOG_DIR}/myproject-django.log combined
</VirtualHost>
5,將當前的配置文件創建一個軟連接到/etc/apache2/sites-enabled
cd /etc/apache2/sites-enabled
sudo ln -s ../sites-available/自定義名字推薦域名.conf ./
6,執行命令 生效當前配
sudo a2ensite myproject.conf
如果需要讓這個配置失效,可以執行 sudo a2dissite myproject.conf
7,配置Django項目目錄及修改seeting.py文件,
首先把myproject項目目錄拷貝至 /var/www/目錄下
在將其ALLOWED_HOSTS=[]改爲
ALLOWED_HOSTS=['www.pyweb.cn'],多個域名可以通過逗號隔開。
8,修改Django的wsgi.py文件
import os
os.environ["DJANGO_SETTINGS_MODULE"] = "myproject.settings" # myproject.settings 改成 項目名.settings 不改會報服務器內部錯誤
from os.path import join,dirname,abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))
import sys
sys.path.insert(0,PROJECT_DIR)
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
9.最後:重啓apache2
sudo service apache2 restart
和python manage.py runserver 測試環境不同 在Apache 下每次修改都要重啓apache
文件上傳錯誤
給static文件夾或項目目錄文件遞歸追加一個www-data用戶權限
sudo setfacl -R -m u:www-data:rwx 項目文件夾名/