Apache2服務配置ubuntu16.04+django1.11
阿新 • • 發佈:2018-11-28
話不多說直接上步驟
環境
- Ubuntu 16.04
- Python 3.5.2
- Django 1.11
- Apache 2.4
1.Apache2安裝
sudo apt-get install apache
檢視版本
apachectl -v
Server version: Apache/2.4.18 (Ubuntu)
Server built: 2017-09-18T15:09:02
2.確保有127.0.0.1 localhost,修改本地hosts檔案
sudo vim /etc/hosts 127.0.0.1 localhost 127.0.0.1 www.pyweb.cn
3.開啟瀏覽器 輸入 127.0.0.1或localhost
出現 Apache2 Ubuntu Default Page
或It works!
則成功
4,安裝apache2解析python的包 wsgi程式包
sudo apt-get install libapache2-mod-wsgi-py3
安裝完成後 進入 /usr/lib/apache2/modules 目錄
cd /usr/lib/apache2/modules
檢視是否存在mod_wsgi.so-3.5
5.配置使apache2載入mod-wsgi包
編輯配置檔案 sudo vim /etc/apache2/apache2.conf 在檔案的最後 新增 LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so-3.5
6,建立網站配置檔案
編輯網站配置檔案 sudo vim /etc/apache2/sites-available/推薦和專案同名或者使用域名.conf 配置內容: <VirtualHost *:80> # 服務埠號 web服務預設80不推薦修改 ServerName www.pyweb.cn # 指定域名 剛剛修改的hosts檔案新增的域名 ServerAdmin [email protected] # 郵箱隨便 #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>
7,將當前的配置檔案建立一個軟連線到/etc/apache2/sites-enabled
cd /etc/apache2/sites-enabled
sudo ln -s ../sites-available/自定義名字推薦域名.conf ./
8,執行命令 生效當前配
sudo a2ensite myproject.conf
如果需要讓這個配置失效,可以執行 sudo a2dissite myproject.conf
9,配置Django專案目錄及修改seeting.py檔案,
首先把myproject專案目錄拷貝至 /var/www/目錄下
在將其ALLOWED_HOSTS=[]改為
ALLOWED_HOSTS=['www.pyweb.cn'],多個域名可以通過逗號隔開。
10,修改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()
11.最後:重啟apache2
sudo service apache2 restart
和python manage.py runserver 測試環境不同 在Apache 下每次修改都要重啟apache
檔案上傳錯誤
給static資料夾或專案目錄檔案遞迴追加一個www-data使用者許可權
sudo setfacl -R -m u:www-data:rwx 專案資料夾名/