第一次接触django和ubuntu部署,网上教程坑比较多,经过一系列折腾总算完成部署,这里提供最基本的部署方式,仅仅验证apache2将请求交给了django处理
安装apache2,mysql过程略。。。。
安装pip3
sudo apt-get install python3-pip
安装django 的基础依赖包
pip2,3共存下使用pip3: python3 -m pip ........ -m pip 表示用python3的pip模块
requests包:
python3 -m pip install requests
pyquery包:
python3 -m pip install pyquery
pymysql包:
python3 -m pip install pymysql
安装django
python3 -m pip install Django
sudo apt install python-django-common
sudo apt-get install python3-django
安装mod_wsgi
将django与Apache2连接的模块
sudo apt-get install libapache2-mod-wsgi-py3
创建django项目
本例中在var/www/html/下创建
移动到var/www/html/执行命令
django-admin startproject 项目名(本例中采用first)
结果生成一个first文件夹其中包含manage.py和一个名为first的文件夹
修改settiings.py文件(第二层的first文件夹下)
数据库部分
将默认数据库更改为mysql
找到 DATABASES 部分
修改为 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': "xxxx", (数据库名,是已经创建好的数据库) "USER":"xxxxx", "PASSWORD":"xxxxxx", "HOST":"localhost", "PORT":"3306" } }
访问权限部分
允许其他主机访问
找到 ALLOWED_HOSTS 部分
修改为 ALLOWED_HOSTS = ['*']
修改第二层first文件夹下的__init__.py
python3对pymysql包的引用配置
增加
import pymysql pymysql.install_as_MySQLdb()
修改wsgi.py文件(第二层first文件夹下)
wsgi.py文件是django与apache2建立的连接,相当于django给apache2打个招呼
import sys sys.path.append("/var/www/html/first/")
修改apache2的配置文件apache2.conf
修改配置文件让apache2认识django
位置在/etc/apache2/
在文件末尾添加
WSGIScriptAlias / /var/www/html/first/first/wsgi.py WSGIPythonPath /var/www/html/first/ <Directory /var/www/html/first/> <Files wsgi.py> Require all granted </Files> </Directory>
这段配置来自django官方文档,仅仅是最基础的配置
所有工作完成后重启apache2
可以访问admin界面,不过是没有css渲染的,因为静态文件的路径还没有配置
启用apache2后可不能在启动django的runserver了,runserver相当于一个小型服务器,和apache2是冲突的,部署的目的就是要让apache2代替runserver(来自一个小白的痛的领悟)
错误排查:
此处错误原因一般为django端 的代码有问题,即apache将请求交给django处理,出现问题,
排查方法:关闭Apache,单独运行django,使用
python3 manage.py runserver 0.0.0.0:80 表示所有ip的80端口都可访问
根据python的错误信息可以确定python代码的问题,若此时可以正常访问则问题出在apache和wsgi的配置上