话不多说直接上步骤
环境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 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 # 指定域名 刚刚修改的hosts文件添加的域名 ServerAdmin py@163.cn # 邮箱随便 #wsgi文件目录 讲apache和django连接在一起 WSGIDaemonProcess python-path=http://www.likecs.com/var/www/project # python-path=http://www.likecs.com/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 项目文件夹名/