在主机商的共享服务器上部署Django站点的方法


Posted in Python onJuly 22, 2015

许多共享主机的服务提供商不允许运行你自己的服务进程,也不允许修改 httpd.conf 文件。 尽管如此,仍然有可能通过Web服务器产生的子进程来运行Django。

记录

如果你要使用服务器的子进程,你没有必要自己去启动FastCGI服务器。 Apache会自动产生一些子进程,产生的数量按照需求和配置会有所不同。

在你的Web根目录下,将下面的内容增加到 .htaccess 文件中:

AddHandler fastcgi-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA,L]

接着,创建一个脚本,告知Apache如何运行你的FastCGI程序。 创建一个 mysite.fcgi 文件,并把它放在你的Web目录中,打开可执行权限。

#!/usr/bin/python
import sys, os

# Add a custom Python path.
sys.path.insert(0, "/home/user/python")

# Switch to the directory of your project. (Optional.)
# os.chdir("/home/user/myproject")

# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ['DJANGO_SETTINGS_MODULE'] = "myproject.settings"

from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")

重启新产生的进程服务器

如果你改变了站点上任何的python代码,你需要告知FastCGI。 但是,这不需要重启Apache,而只需要重新上传 mysite.fcgi 或者编辑改文件,使得修改时间发生了变化,它会自动帮你重启Django应用。 你可以重新上传mysite.fcgi或者编辑这个文件以改变该文件的时间戳。 当阿帕奇服务器发现文档被更新了,它将会为你重启你的Django应用。

如果你拥有Unix系统命令行的可执行权限,只需要简单地使用 touch 命令:

touch mysite.fcgi

Python 相关文章推荐
python生成指定长度的随机数密码
Jan 23 Python
使用Python的Twisted框架编写简单的网络客户端
Apr 16 Python
在Python中处理字符串之ljust()方法的使用简介
May 19 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
python DataFrame 修改列的顺序实例
Apr 10 Python
python logging重复记录日志问题的解决方法
Jul 12 Python
基于Django框架的权限组件rbac实例讲解
Aug 31 Python
python 怎样进行内存管理
Nov 10 Python
python os.rename实例用法详解
Dec 06 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
Feb 07 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
Mar 04 Python
python实现三次密码验证的示例
Apr 29 Python
在Lighttpd服务器中运行Django应用的方法
Jul 22 #Python
简单的Apache+FastCGI+Django配置指南
Jul 22 #Python
使用FastCGI部署Python的Django应用的教程
Jul 22 #Python
使用相同的Apache实例来运行Django和Media文件
Jul 22 #Python
在Apache服务器上同时运行多个Django程序的方法
Jul 22 #Python
通过mod_python配置运行在Apache上的Django框架
Jul 22 #Python
在Django中同时使用多个配置文件的方法
Jul 22 #Python
You might like
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
PHP自动生成月历代码
2006/10/09 PHP
PHP中的类-什么叫类
2006/11/20 PHP
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
php安全之直接用$获取值而不$_GET 字符转义
2012/06/03 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
CodeIgniter生成静态页的方法
2016/05/17 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
jquery实现简单的banner轮播效果【实例】
2016/03/30 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
使用微信小程序开发前端【快速入门】
2016/12/05 Javascript
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
2017/12/28 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
[05:00]TI9战队采访 - Royal Never Give Up
2019/08/20 DOTA
python 从远程服务器下载日志文件的程序
2013/02/10 Python
如何搜索查找并解决Django相关的问题
2014/06/30 Python
Python实现子类调用父类的方法
2014/11/10 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
python3中zip()函数使用详解
2018/06/29 Python
python获取磁盘号下盘符步骤详解
2019/06/19 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
Python多分支if语句的使用
2020/09/03 Python
班级安全教育实施方案
2014/02/23 职场文书
小学生读书活动总结
2014/06/30 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
带你了解Java中的ForkJoin
2022/04/28 Java/Android