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

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

Apache 介绍

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。同时Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。也是一个基金会的名称、一种武装直升机等等。
Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。

环境

Ubuntu 16.04
Python 3.5.2
Django 1.11
Apache 2.4

1.Apache2安装

sudo apt-get install apache2

查看版本

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

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 项目文件夹名/

版权声明:本文为weixin_43474646原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。