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]                                  #  郵箱隨便
   #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 專案資料夾名/