django部署到apache2 ubuntu1604(全网唯一100%配置成功!没有任何坑)

Ubuntu 配置apache2+django

环境 apache2.4 MySQL5.6 python3.6 pip3

1.安装 apache

sudo apt-get install apache2 libapache2-mod-wsgi-py3 -y

django部署到apache2 ubuntu1604(全网唯一100%配置成功!没有任何坑)_第1张图片

2.配置使apache2加载mod-wsgi包

编辑配置文件

sudo vi /etc/apache2/apache2.conf

在文件的最后 添加

LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so-3.6

django部署到apache2 ubuntu1604(全网唯一100%配置成功!没有任何坑)_第2张图片

3. 修改apache字符集

配置apache网站字符编码, /etc/apache2/conf.d/charset文件取消注释#AddDefaultCharset UTF-8

cd /etc/apache2/conf-available
sudo vi charset.conf

django部署到apache2 ubuntu1604(全网唯一100%配置成功!没有任何坑)_第3张图片

4. 准备一个新网站

ubuntu的apache2配置文件在 /etc/apache2/ 下,在文件夹sites-available下新建一个网站配置文件:mysite.conf

配置文件解析

                                     # 服务端口号  web服务默认80不推荐修改
   ServerName www.dd.cn                             # 指定域名  刚刚修改的hosts文件添加的域名
   ServerAdmin [email protected]                               #  邮箱随便
   # wsgi文件目录 将apache和django连接在一起 
   WSGIDaemonProcess python-path=/var/www/mywebsite           # python-path=/var/www/项目名字
   WSGIScriptAlias / /var/www/mywebsite/mywebsite/wsgi.py   # /var/www/项目名/项目同名的文件夹/wsgi.py
                    #  /var/www/项目名/项目同名目录
       
           Require all granted
       
   
   # 项目文件目录
   DocumentRoot /var/www/mywebsite                        # /var/www/项目名   指定项目目录
   
       Require all granted
   
   # 静态文件目录                                          # 指定项目静态资源路径
   Alias /static/ /var/www/mywebsite/static/              #  /var/www/项目名/static/
   
       Require all granted
   
   # 错误日志 日志名可以自己定义
   ErrorLog ${APACHE_LOG_DIR}/django-myproject-error.log
   CustomLog ${APACHE_LOG_DIR}/mywebsite-django.log combined

                 

cd /etc/apache2/sites-available
sudo vi mysite.conf
输入的内容
                                     
   ServerName www.dd.cn                             
   ServerAdmin [email protected]             
   WSGIDaemonProcess python-path=/var/www/mywebsite           
   WSGIScriptAlias / /var/www/mywebsite/mywebsite/wsgi.py  
   
       
           Require all granted
       
   
   # 项目文件目录
   DocumentRoot /var/www/mywebsite                        
   
       Require all granted
   
   Alias /static/ /var/www/mywebsite/static/              
   
       Require all granted
   
   ErrorLog ${APACHE_LOG_DIR}/django-myproject-error.log
   CustomLog ${APACHE_LOG_DIR}/mywebsite-django.log combined

保存退出

配置软连接
将当前的配置文件创建一个软连接到/etc/apache2/sites-enabled

cd /etc/apache2/sites-enabled
sudo ln -s ../sites-available/自定义名字推荐域名.conf ./

5. 执行命令 生效当前配置

sudo a2ensite mysite.conf

如果需要让这个配置失效,可以执行 sudo a2dissite myproject.conf

6. 配置Django项目目录及修改seeting.py文件

首先把mywebsite项目目录拷贝至 /var/www/目录下

在将其ALLOWED_HOSTS=[]改为
ALLOWED_HOSTS=[‘www.pyweb.cn’],多个域名可以通过逗号隔开.

7. 配置Django项目目录及修改seeting.py文件

首先把myproject项目目录拷贝至 /var/www/目录下

你们默认是*,如果不想操纵也可以不做

修改setttings.py
在将其ALLOWED_HOSTS=[]改为
ALLOWED_HOSTS=['www.pyweb.cn'],多个域名可以通过逗号隔开.

8. 修改Django的wsgi.py文件

import os
os.environ["DJANGO_SETTINGS_MODULE"] = "mywebsite.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()

9. 最后:重启apache2

sudo service apache2 restart

和python manage.py runserver测试环境不同,在Apache下每次修改都要重启apache

10. 文件上传错误

给你的文件夹授权

授权: sudochmod -R 777 mywebsite

或者

给static文件夹或项目目录文件递归追加一个www-data用户权限
sudo setfacl -R -m u:www-data:rwx 项目文件夹名/


最后还是发现500错误

django部署到apache2 ubuntu1604(全网唯一100%配置成功!没有任何坑)_第4张图片

我们进入日志去查看

vi django-myproject-error.log

django部署到apache2 ubuntu1604(全网唯一100%配置成功!没有任何坑)_第5张图片

问题分析

掐指一算,貌似ubuntu 默认是py2.7啊。
而且pip中没有装django

修改默认python

Ubuntu默认Python为2.7,所以安装Python包时安装的为py2的包。

利用alternatives机制将python3.x改为默认。

打开终端,依次输入如下两条命令即可:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

django部署到apache2 ubuntu1604(全网唯一100%配置成功!没有任何坑)_第6张图片

安装django使用的包

django
与pillow(pillow 默认存在pip3)

安装pip3

sudo apt-get install python3-pip 

安装django

sudo pip3 install django==1.11.*

其他环境

sudo pip3 install pymysql

配置我们的数据库文件

修改数据库配置
settings.py

进入我们项目 初始化数据库 利用数据迁移(或者直接导入sql文件建议直接导入)

使用命令行导入sql

自己完成!

验证码不显示?! cannot open resource

想想,是不是无法打开资源!
你忘了字体文件吗!

修改字体
django部署到apache2 ubuntu1604(全网唯一100%配置成功!没有任何坑)_第7张图片

全部搞定

django部署到apache2 ubuntu1604(全网唯一100%配置成功!没有任何坑)_第8张图片

django部署到apache2 ubuntu1604(全网唯一100%配置成功!没有任何坑)_第9张图片

你可能感兴趣的:(djongo,python,linux,ubuntu,lamp)