学习猿地 python教程 django教程8 Django部署(Apache)

# 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 [email protected]

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

```

掌握学习方法,不如会弯道超车!

学习猿地:成就自己的只需一套精品!

原文地址:https://www.cnblogs.com/itxdl/p/12557288.html

时间: 2024-07-30 19:48:59

学习猿地 python教程 django教程8 Django部署(Apache)的相关文章

学习猿地 python教程 django教程6 华为云部署

# 上线华为云服务器部署(弹性云服务器ECS) >环境配置: > ubuntu 18.04 > Python 3.6.8(python3.7亦可) > nginx version: nginx/1.14.0 (Ubuntu) ## 1. 购买华为云服务器 文档 https://support.huaweicloud.com/ecs/index.html ## 2. 上传到华为云服务器,安装依赖环境,启动项目测试 #### 1.导出当前项目的依赖环境 `pip freeze >

学习猿地 python教程 django教程9 Django使用redis实现缓存

# Django使用redis实现缓存 ### 环境搭建安装 * 1,安装redis服务 ``` sudo apt-get install redis ``` * 2,安装django组件 ``` sudo pip3 install django-redis ``` ### Django项目配置 ```py settings.py CACHES = { "default": { # 引擎 "BACKEND": "django_redis.cache.Red

python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器

python3.5 manage.py runserver python Django教程 之模板渲染.循环.条件判断.常用的标签.过滤器 一.Django模板渲染模板 注: 本节代码是基于 Django 1.8,但 Django 1.4 - Djagno 1.9 操作流程也是一样的. 后文给出示例代码可以在 Django 1.4.x 到 Django 1.9.x 上运行. 不过还是强调一点,一点要动手敲代码!不要偷懒哦,动手才能学到真东西. 1. 创建一个 zqxt_tmpl 项目,和一个 名

python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API

python  Django教程  之 模型(数据库).自定义Field.数据表更改.QuerySet API 一.Django 模型(数据库) Django 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要在settings.py中配置即可,不用更改models.py中的代码,丰富的API极大的方便了使用. 本节的代码:(Django 1.6, Python 2.7 测试环境) 大

python 创建一个简单的Django新手教程

在自己的兴趣下自学了Python语言,创建了一个最基础的django项目,话不多说.直接上流程 Django是一个开放源代码的Web应用框架,由Python写成,在我们开始使用Django前,首先要安装Python的开发环境 Python 安装(已安装的可跳过) 安装Python你只需要去官方网站(https://www.python.org/)下载安装文件,然后直接傻瓜式安装即可. 我这里直接选择的是python最新版本3.6.5进行开发 下载完成后,点击安装,安装完成后你需要设置Python

分享《Python数据分析基础教程:NumPy学习指南(第2版)》高清中文PDF+英文PDF+源代码

下载:https://pan.baidu.com/s/1YSD97Gd3gmmPmNkvuG0eew更多资料分享:http://blog.51cto.com/3215120 <Python数据分析基础教程:NumPy学习指南(第2版)>高清中文PDF+高清英文PDF+源代码 高清中文版PDF,249页,带目录和书签,文字能够复制粘贴:高清英文版PDF,310页,带目录和书签,文字能够复制粘贴:中英文两版可以对比学习.配套源代码:经典书籍,讲解详细:其中高清中文版如图: 原文地址:http://

Numpy学习:《Python数据分析基础教程NumPy学习指南第2版》中文PDF+英文PDF+代码

NumPy是一个优秀的科学计算库,提供了很多实用的数学函数.强大的多维数组对象和优异的计算性能,不仅可以取代Matlab和Mathematica的许多功能,而且业已成为Python科学计算生态系统的重要组成部分.但与这些商业产品不同,它是免费的开源软件. 推荐学习<Python数据分析基础教程NumPy学习指南第2版>,通过书中丰富的示例,学会Matplotlib绘图,并结合使用其他Python科学计算库(如SciPy和Scikits),让工作更有成效,让代码更加简洁而高效. 学习参考: &l

xadmin学习笔记(二)——改造Django教程实例(1)

前言 xadmin是基于Python和Django的管理框架,想要能够熟练使用,学习Django是必须的.在学习Django的过程中,不妨用xadmin来验证下新的效果是怎样的.本文就是在学习Django官方文档的Tutorial的过程中进行的摸索. FAQ 1:如何修改xadmin的site-title和site-footer? site-title和site-footer都是设置在base_site.html模板页面中的,可以从xadmin的安装目录下的xadmin\templates\xa

Django教程

开发环境:Centos7,Django 1.10,Python 2.7 Django入门 本教程内容大部分来源于Django官网,有翻译不到位的欢迎大家指正,这部分的内容有助于新手快速搭建一个网站,让我们通过一个完整的示例来学习 通过这个教程,我们将带你创建一个简单的投票应用,本节内容包含如下几点: 包含两部分内容: 一个开放的网站让人们可以查看投票和投票 一个管理网站,让你可以添加,修改,和删除投票 假设你已经安装好Django.你可以运行一下命令查看安装的是哪个版本 $ python -m