如何在sae中设置django,让sae的工作环境跟本地python环境一致

以下是在sae中设置Django的完整攻略:

1. 创建Sae应用

首先,在sae上创建一个Python应用,选择Python 2.7版本,并绑定自己的域名。绑定域名后,获取到自己的 SAE AccessKey 和 SecretKey。

2. 配置本地开发环境

在本地创建一个虚拟环境,安装Django和其它需要的包

$ mkdir ~/myproject
$ cd ~/myproject
$ virtualenv env
$ source env/bin/activate
$ pip install django==1.11.9
$ pip install MySQL-python==1.2.5

这里以Django 1.11.9版本为例。MySQL-python是Python 2.x中的MySQL数据库连接驱动,也可以选择其它数据库连接驱动。

3. 创建Django项目

在本地虚拟环境下使用Django的命令行工具创建一个Django项目

$ django-admin.py startproject myproject

创建项目后,将Django项目的根目录myproject和虚拟环境下的env下的Lib/python2.7/site-packages等目录一起打包上传到SAE的/data目录下

$ cd ~
$ tar -cvzf myproject.tar.gz myproject
$ cd env && tar -cvzf env.tar.gz Lib/python2.7/site-packages/
$ cd ~
$ scp -P <port> myproject.tar.gz <username>@<appname>.sae.sinacdn.com:/data/
$ scp -P <port> env.tar.gz <username>@<appname>.sae.sinacdn.com:/data/

其中,为SSH端口号,为SAE AccessKey,为SAE应用名。

上传文件后,进入SAE应用的SSH控制台,解压缩上传的文件

$ cd /data
$ tar -xzvf myproject.tar.gz
$ tar -xzvf env.tar.gz

4. 配置SAE应用

在SAE应用的web.yaml文件中加入以下内容,用于指定WSGI处理器和Python路径:

handlers:
- url: /.*
  script: myproject.wsgi.application

sae:
  python: 2
  wsgi: myproject.wsgi.application
  packages: /data/env/lib/python2.7/site-packages

其中,handlers部分用于处理所有请求,调用myproject.wsgi.application处理;sae部分则设置Python的版本号、WSGI处理器以及自定义Python模块路径。

在SAE应用的数据库管理界面中设置MySQL数据库,并记下用户名、密码、主机、端口、数据库名。

然后,在myproject/settings.py文件中配置数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '<db_name>',
        'USER': '<db_username>',
        'PASSWORD': '<db_password>',
        'HOST': '<db_host>',
        'PORT': '<db_port>',
    }
}

替换为数据库名、用户名、密码、主机、端口。

5. 部署Django应用

在SSH控制台中,进入myproject目录,创建一个名为wsgi.py的文件

$ cd /data/myproject
$ touch wsgi.py

在wsgi.py中添加以下内容

import os
import sys

sys.path.insert(0, '/data/myproject')
sys.path.insert(0, '/data/env/lib/python2.7/site-packages')

os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

其中,第2、3行将当前目录和Python包目录加入系统路径中,以便于导入Django包和自定义Python模块。第5行设置Django设置模块名,这里是myproject.settings。最后一行调用get_wsgi_application()获取WSGI处理器,这里是使用Django内置的WSGI处理器。

在SSH控制台中启动应用

$ cd /data
$ sae-python27-manage start myproject

在浏览器中访问自己的域名,即可看到Django的“Welcome to Django”页面,说明应用已经成功启动。

至此,Django应用已经可以正常运行在SAE上,与本地开发环境基本一致。

以下是两个在SAE上使用Django的示例:

示例一:SAE上的Django博客

通过实现博客的方式学习Python Web开发(三):在SAE上部署Django

该博客使用Django 2.1.5版本开发,同时使用MySQL数据库,详细讲解了如何在SAE上部署Django项目,并给出了完整的源码和演示地址。

示例二:SAE上的Django云盘

使用Django+SAE开发云盘(一):环境搭建

该项目是一个简单的文件上传和下载应用,使用Django 1.11.6版本开发,通过插件方式连接到SAE的Storage服务,读写文件。文章讲解了如何在SAE上部署Django项目,配置PyCharm开发环境,并给出了完整的源码和演示地址。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在sae中设置django,让sae的工作环境跟本地python环境一致 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • javascript 获取图片颜色

    以下是详细的“javascript 获取图片颜色”的攻略,希望能够帮助您解决问题。 1. 使用 Canvas API 获取图片颜色 使用 Canvas API 是比较常见的一种获取图片颜色的方法,其主要思路是:将图片绘制到一个 canvas 元素上,然后通过遍历 canvas 上的像素点来获取每个像素的颜色值。 具体实现步骤如下: 步骤一:创建 Canvas…

    人工智能概览 2023年5月25日
    00
  • 利用Psyco提升Python运行速度

    利用Psyco提升Python运行速度是一种优化Python代码性能的方式。Psyco是一个动态的JIT(Just-In-Time)编译器,可以自动分析Python代码,将其转化为高效的机器码,在正确性的前提下尽可能地提高程序的运行速度。下面是Psyco使用的详细攻略及示例说明。 安装Psyco 在Python 2.5及之前的版本中,需要自行安装Psyco模…

    人工智能概论 2023年5月25日
    00
  • Django超详细讲解图书管理系统的实现

    Django超详细讲解图书管理系统的实现 1. 总体介绍 本篇攻略介绍如何使用Django框架实现一套图书管理系统,主要包括以下几个方面的内容: 数据库设计和使用 Django框架的基本使用 图书管理系统的具体实现 2. 数据库设计 本系统涉及的核心数据有图书、作者、出版社、客户等。我们需要先设计出数据库,并使用Django的ORM对其进行操作。 根据需求,…

    人工智能概览 2023年5月25日
    00
  • 在Linux系统中将Redmine和SVN整合入Nginx的方法

    将Redmine和SVN整合入Nginx的方法,可以通过以下步骤完成: 1. 安装和配置Redmine 1.1 安装Ruby和Rails 首先需要安装Ruby和Rails。在命令行输入以下命令: sudo apt-get update sudo apt-get install ruby rails 1.2 下载和解压Redmine 到Redmine官网下载安…

    人工智能概览 2023年5月25日
    00
  • Django 自定义404 500等错误页面的实现

    下面详细讲解一下 Django 自定义404、500等错误页面的实现。 1. 修改默认的错误页面 Django 默认的错误页面位于 templates 目录下的 error 目录中,其中包括了: 500.html:500 Internal Server Error 错误页面 404.html:404 Not Found 错误页面 403.html:403 F…

    人工智能概论 2023年5月25日
    00
  • 终于搞懂了Python中super(XXXX, self).__init__()的作用了

    当我们在Python的类中定义了一个子类,为了让子类能够使用父类中的属性和方法,我们通常会在子类中使用super()关键字调用父类的初始化方法。super()关键字的常用格式是super(子类名, self),当我们在子类中使用这个语句时,实际上是在调用父类中的方法。 下面我们来具体了解一下在Python中使用super()这个关键字的方法: super()…

    人工智能概论 2023年5月24日
    00
  • docker中的volume和bind mount区别讲解

    下面是关于“docker中的volume和bind mount区别讲解”的完整攻略。 什么是 Volume? Volume 是 Docker 中一个独立于容器的数据管理方式,可以让我们在容器和主机之间有效分享数据。在使用 Volume 时,我们可以将数据存储在 Docker 主机或者其他远程数据存储系统上。相较于 Bind Mount,Volume 具有以下…

    人工智能概览 2023年5月25日
    00
  • 基于web管理OpenVPN服务的安装使用详解

    基于web管理OpenVPN服务的安装使用详解 简介 OpenVPN是一种开放源代码的虚拟专用网络(VPN)软件。它可以用于建立安全的站点到站点连接或远程访问网络。 本文将介绍如何在Ubuntu 18.04上安装OpenVPN和web管理界面,方便用户管理OpenVPN服务。 安装OpenVPN和Web管理界面 安装OpenVPN和必要的依赖项 $ sudo…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部