学习猿地 python教程 django教程8 Django部署(Apache)
off999 2024-11-25 15:54 27 浏览 0 评论
# Django部署\(Apache\)
> 在前面的章节中我们使用**python3 manage.py runserver**来运行服务器。这只适用测试环境中使用。
>
> 正式发布的服务,我们需要一个可以稳定而持续的服务器,比如Apache, Nginx, IIS等,本文将以 Apache为例。
>
> 使用[Apache](https://httpd.apache.org/)和[mod\_wsgi](http://www.modwsgi.org/)部署Django 是一种久经考验的将Django投入生产的方法。
>
> mod\_wsgi是一个Apache模块,可以托管任何Python [WSGI](http://www.wsgi.org/)应用程序,包括Django。
>
> Django将使用任何支持mod\_wsgi的Apache版本。
### 测试环境
说明
* Ubuntu 16.04
* Python 3.5.2
* Django 1.11.7
* Apache 2.4
### 配置步骤
#### 1,Apache2安装
```py
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,没有就加上。
```py
sudo vim /etc/hosts
127.0.0.1 localhost
127.0.0.1 www.pyweb.cn
```
#### 3,打开浏览器 输入 127.0.0.1或localhost
```py
出现 Apache2 Ubuntu Default Page
或It works!
则成功
```
#### 4,安装apache2解析python的包 wsgi程序包
```py
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包
```py
编辑配置文件
sudo vim /etc/apache2/apache2.conf
在文件的最后 添加
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so-3.5
```
#### 6,创建网站配置文件
```py
编辑网站配置文件
sudo vim /etc/apache2/sites-available/myproject.conf
配置内容:
<VirtualHost *:80>
ServerName www.pyweb.cn
ServerAdmin py@163.cn
#wsgi文件目录
WSGIDaemonProcess python-path=/var/www/myproject
WSGIScriptAlias / /var/www/myproject/myproject/wsgi.py
<Directory /var/www/myproject/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
#项目文件目录
DocumentRoot /var/www/myproject
<Directory /var/www/myproject>
Require all granted
</Directory>
#静态文件目录
Alias /static/ /var/www/myproject/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
```py
cd /etc/apache2/sites-enabled
sudo ln -s ../sites-available/myproject.conf ./
```
#### 8,执行命令 生效当前配置
```py
sudo a2ensite myproject.conf
如果需要让这个配置失效,可以执行 sudo a2dissite myproject.conf
```
#### 9,配置Django项目目录及修改seeting.py文件,
```py
首先把myproject项目目录拷贝至 /var/www/目录下
在将其ALLOWED_HOSTS=[]改为
ALLOWED_HOSTS=['www.pyweb.cn'],多个域名可以通过逗号隔开。
```
#### 10,修改Django的wsgi.py文件
```py
import os
os.environ["DJANGO_SETTINGS_MODULE"] = "myproject.settings"
#os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pyjfive.settings")
from os.path import join,dirname,abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))
import sys # 4
sys.path.insert(0,PROJECT_DIR)
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
```
#### 最后:重启apache2
```py
sudo service apache2 restart
```
#### 浏览器访问
```py
http://www.pyweb.cn/
```
#### 浏览器错误 500
```
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at [no address given] to inform them of the time this error occurred,
and the actions you performed just before this error.
More information about this error may be available in the server error log.
Apache/2.4.18 (Ubuntu) Server at www.py6web.com Port 80
```
* 查看apache2的错误日志
```js
cd /var/log/apache2/
File "/var/www/myproject-test/myproject/wsgi.py", line 17, in <module>, referer: http://www.pyweb.com/
from django.core.wsgi import get_wsgi_application, referer: http://www.pyweb.com/
ImportError: No module named 'django', referer: http://www.pyweb.com/
```
* 问题分析
```js
进入项目目录,使用命令 pip3 show Djando 查看当前是否已经安装django
---
Metadata-Version: 1.1
Name: Django
Version: 1.11.8
切换至root用户 sudo su
进入python3的shell模式
python3
#加载django模块
import django
#错误:No module named 'django'
```
* **解决方案**
```py
在当前root用户下 安装django
sudo su
pip3 install django==1.11
```
#### 文件上传错误:
** 给static文件夹或web项目目录文件递归追加一个www-data用户权限**
```
sudo setfacl -R -m u:www-data:rwx web/
```
掌握学习方法,不如会弯道超车!
学习猿地:成就自己的只需一套精品!
相关推荐
- 账号密码大全真的(各种账号密码)
-
英雄号,是4399官方版本的账号:1973024549密码:123456这是自己的,不想玩了,送给看到的有缘人吧^o^1、默认的机顶盒密码6321,也可以进行更改,方法:首先,通过搜索“中国电信”...
- windows server2019(windowsserver2019密钥激活码)
-
WindowsServer2019那是给服务器用的系统。服务器的作用是计算数据,而不是图像处理。所以WindowsServer2019里面精简了大量有关图形的功能。办公和打游戏是需要图像处理的...
- 一键还原系统怎么卸载(一键还原系统软件怎么用)
-
打开控制面板,点击“系统”,再点击“高级系统设置”,再点“高级”标签,再点“启动和故障恢复”里的“设置”,,出来新对话框,把“默认操作系统“选到”WIN10,然后下面的”显示操作系统列表的时间“选到0...
- 电脑装两个系统好不好(电脑装两个系统好不好用)
-
安装双系统的好处是根据应用不同,可以选用不同的操作系统,坏处是每次开机后都要对操作系统进行选择,否则就会进入默认操作系统1苹果电脑装双系统是不错的选择。2装双系统可以让用户在同一台电脑上同时运行不...
- office2010以上版本(office2010各版本区别)
-
该版本不是最高的,但是可以满足日常办公,放心使用。DOC文件只有WORD能打开,估计你用的版本不是正版或有什么问题,请参考:microsoftoffice软件是装了高版本软件就自动卸载(或覆盖,建议...
- 强制申诉qq成功人工客服(qq申诉人工秒成功 客服电话)
-
QQ密码申诉结果,一般会在4小时内发到用户的联系邮箱。帐号申诉,是指通过提交个人资料及帐号使用信息,来证明用户是帐号主人的方式。申诉成功后可修改密码或密保。申诉结果一般会在4小时内发到用户的联系邮箱。...
- google框架一键安装(谷歌框架三件套一键安装)
-
一加手机自带手机框架,需要下载Play商店激活。1、google服务框架是可以在系统软件里面可以删除的一个APK程序,但现在有很多的软件和游戏需要谷歌服务的支持,如果没有安装或者又删除系统软件的朋友可...
- office2010家庭和学生版密钥
-
1.MicrosoftExcel2010家庭版的产品密钥是需要购买正版软件时提供的一串字符序列。2.这是为了确保用户使用正版软件,并且能够享受到软件的全部功能和服务。3.为了获得Micros...
- 16949认证费用是多少(16949审核员太难考了)
-
需要参加培训和考试,培训和考试是需要收费的,一般在300到500左右。内审员证书一般3年有效(因为标准是会更改的,更改标准则需要从新培训)大多数由企业组织人员参加培训。费用由企业承担,个人学这个的还是...
-
- mba是什么意思(长江商学院emba是什么意思)
-
工商管理硕士(MBA)是工商管理类硕士研究生学位,MBA是培养能够胜任工商企业和经济管理部门高层管理工作需要的务实型、复合型和应用型高层次管理人才,兼具理论与实践相结合,而其他硕士研究生只是培养科研型和教学型人才,偏向理论,不参与实践。MB...
-
2026-01-14 07:51 off999
- mdf文件游戏怎么安装(win10mdf文件游戏怎么安装)
-
朋友,应该还有一个只有几K的KuaiZipMount.mds文件吧?请确保这两个文件在同一个目录中然后用Daemontools等虚拟光驱软件,载入其中的mds文件之后进入虚拟光驱所在盘符执行...
- c盘莫名其妙的满了怎么办(c盘莫名其妙的满了怎么办windows)
-
当C盘突然满了,首先需要找到原因。可能是因为系统更新或安装了大量软件,也可能是因为存在大量垃圾文件或临时文件。可以通过清理垃圾文件、卸载无用软件、更改默认下载路径等方式来释放C盘空间。另外,可以考虑将...
- 电脑如何修改默认浏览器(电脑上怎样修改默认浏览器)
-
1、按下“windows+i”快捷键打开Windows设置,在设置界面选择系统。2、在系统里左边点击默认程序一项,右边会出现新的选项来。3、右边滚动鼠标滑轮下拉,点击web默认程序,点击选择想要默认打...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
