1. 程式人生 > >Apache2 服務配置 ubuntu16.04 + django1.11

Apache2 服務配置 ubuntu16.04 + django1.11

(步驟)

環境

  • 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]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>

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 專案資料夾名/