Apache上部署Django
0. 部署环境
Ubuntu 14.04 on AliYun
Apache 2.4.7
Python 3 [2.7升级3请看http://www.cnblogs.com/manhua/p/4235049.html]
Django 1.7.3
1. 安装apache
sudo apt-get install apache2
如果之前安装配置过apache2的并且配置很乱,无法修复,建议还是完全卸载之后在安装。完全卸载的命令:
sudo apt-get --purge remove apache-common
sudo apt-get --purge remove apache*
apache2相关的操作:
启动:sudo service apache2 start
停止:sudo service apache2 stop
重启:sudo service apache2 restart
配置文件的位置:
可执行程序:/usr/sbin/apache2
配置文件:/etc/apache2
网站文件:/var/www
(网站的默认位置可以在/etc/apache2/sites-available/default中更改,修改DocumentRoot /var/www改成自己的网站存放地址即可)
2. 安装mod_wsgi.so
2.x python:
sudo apt-get install libapache2-mod-wsgi
3.x python:
sudo apt-get install libapache2-mod-wsgi-py3
#若数据库为mysql,需要连接器
sudo apt-get install mysql-server mysql-client
sudo apt-get install python-mysqldb
3. 安装Django
sudo pip3 install django
4. 创建/上传Django工程
不建议建在/var/www,如果系统设置问题导致不识别.py为网页文件时,/var/www作为Apache默认Web文件夹,.py源文件将可以被下载而泄漏。
mkdir -p /www2
cd /www2
django-admin startproject mysite
完成代码后在随便哪里建wsgi,比如
sudo nano /www2/mysite/apache/django.wsgi
import os
import sys
path = '/www2/mysite'
if path not in sys.path:
sys.path.insert(0, '/www2/mysite')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
【warning】 上面的代码会引起错误
Django:The translation infrastructure cannot be initialized before the apps registry is ready
修改为如下
import os
import sys
path = '/www2/mysite'
if path not in sys.path:
sys.path.insert(0, '/www2/mysite')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
5. apache站点设置文件
apache2.4.7 (Ubuntu 14) [Apache2 Ubuntu Default Page]
cd /etc/apache2/sites-available
sudo nano mysite.conf
<VirtualHost *:8000>
#ServerName hello.djangoserver
DocumentRoot /www2
<Directory /www2>
#DirectoryIndex testMain.html
# Options Indexes FollowSymLinks
Require all granted
</Directory> WSGIDaemonProcess mydjangosite processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup mydjangosite
WSGIScriptAlias / /www2/mysite/apache/django.wsgi
</VirtualHost>
【IGNORE】apache 2.2 (Ubuntu 12) [It works!]
apache2.2主要配置为/etc/apache2/apache2.conf,端口配置在ports.conf,网站根目录在/etc/apache2/sites-available/default,额外的配置可以写在httpd.conf中(默认为空,会被主配置用Include httpd.conf语句引入)
# Include module configuration:
Include mods-enabled/*.load
Include mods-enabled/*.conf # Include all the user configurations:
Include httpd.conf # Include ports listing
Include ports.conf
修改httpd.comf,添加如下内容
WSGIScriptAlias / /www2/mysite/apache/django.wsgi
WSGIPythonPath /www2/mysite <Directory /www2/mysite>
<Files django.wsgi>
Order deny,allow
Allow from all
</Files>
</Directory>
https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/modwsgi/
6. 启动站点
别离开/etc/apache2/sites-available
sudo a2ensite mysite
sudo service apache2 reload
Django站点已经配置好了,但是这时访问127.0.0.1看到的是apache页面。
关于端口
在/etc/apache2/sites-available可以看到000-default.conf,这个就是apache默认的站点,对应/var/www/html
如果都用80端口的话,访问到的是apache,而不是刚建的django。
可以关闭这个站点,
sudo a2dissite 000-default
sudo service apache2 reload
这时就能正常访问刚建的django站点了。
也可以换个端口,在mysite.conf文件中,<VirtualHost *:80>改成<VirtualHost *:xxxx>自己要的端口,比如8000。
然后改ports.conf
cd /etc/apache2
sudo nano ports.conf
看到Listen 80了吧,下面加一行 Listen 8000,就能用8000端口了。
sudo service apache2 reload
这样127.0.0.1访问的是apache站点,127.0.0.1:8000访问的就是我们的django站点了
PS.出错的话,一定要多看看apache2的err log。
命令行输入: tail /var/log/apache2/error.log
7. 关于使用django的admin时SQLite出现的问题
服务器不仅需要对数据库文件可写,而且要对包含该数据库文件的文件夹可写
1.数据库所在文件夹chmod 777
2.数据库文件 chmod 777
django sqlite3 OperationalError: attempt to write a readonly database
Django-想说爱你真不容易--解决“Unable to open database file”(原创)
Reference:
http://www.cnblogs.com/CSGrandeur/p/3741871.html
Apache上部署Django的更多相关文章
- apache上部署django的静态文件
一直在优化自己博客的代码, 昨天把css样式表分离出来, 用作静态 文件, 但是自己还没学django怎么使用静态文件, 经过一番google 终于解决了. django 使用静态文件有两种方法, 一 ...
- 在Apache上部署Django
跟php类似,要想使Apache能够处理python脚本(实际上Apache是不能处理脚本的,只是利用别的扩展模块处理相应脚本),就要给Apache安装相应的扩展模块. Apache起初的python ...
- 如何一步步在生产环境上部署django和vue
本文由云+社区发表 本文主要讲述了如何一步步在生产环境上部署django和vue,操作系统默认为centos 说明:后文中出现的以下字符串均表示具体的路径或者名称,含义如下: DJANGO_DIR-- ...
- CentOS上部署Django+Nginx+Uwsgi环境
在CentOS上部署Django+Nginx+Uwsgi环境 奇谭 2016-09-01 评论 Linux python django nginx uwsgi VirtualEnv的作用:创建隔 ...
- 基于Nginx和uWSGI在Ubuntu上部署Django项目
前言: 对于做Django web项目的童鞋,重要性不言而喻. 参考:https://www.cnblogs.com/alwaysInMe/p/9096565.html https://blog.cs ...
- Ubuntu下Apache中部署Django
环境:ubuntu12.04 server | apache2 | django1.6 | python2.7 | mod_wsgi 1. 安装apache2: sudo apt-get instal ...
- 服务器上部署django项目流程?
1. 简单粗暴 项目开发完毕,在部署之前需要再配置文件中将 ALLOWED_HOSTS配置设置为:当前服务器IP或*,如: ALLOWED_HOSTS = ["*",] 然后将源码 ...
- 在pythonanywhere上部署Django应用
参考:https://tutorial.djangogirls.org/zh/deploy/ 资料讲的很明了,仅在设置上做几点补充. 1.设置相对路径 import os BASE_DIR = os. ...
- 全站之路一路坑(2)——在Apache下部署django博客
上一篇博客:全栈之路一路坑之使用django开发博客 开发完博客之后,很多后续应用需要博客部署之后才可以使用,这篇文章就来尝试一下将开发好的博客部署到服务器上. 开发阶段,一直使用的是virtuale ...
随机推荐
- bzoj4292 PA2015 Równanie 枚举
貌似应该是找出n后,带回去看看是不是对的. #include<cstdio> #include<cstring> #include<algorithm> #incl ...
- flake8(代码规范利器)
flake8(代码规范利器) 概述 flake8是下面三个工具的封装: 1)PyFlakes 2)Pep8 3)NedBatchelder’s McCabe script Flake8的下载地址:ht ...
- 关于微信小程序并发数不能超过五个的问题
wx.request 的最大请求数为5个,超过的部分就请求不到了 昨天遇到个问题,首页的请求数一共有9个,但是在有appid开发时竟然一直都没出错,直到我切到没appid的版本的时候才发现了这个问题. ...
- 【02】【转】Nodejs学习笔记(三)--- 事件模块
目录 简介及资料 事件常用函数及使用 emitter.on(event, listener) emitter.emit(event, [arg1], [arg2], [...]) emitter.on ...
- SpringBoot中使用RestTemplate
spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值类型即可 ...
- Manacher--雾窗寒对遥天暮,暮天遥对寒窗雾
POJ 3974: Palindrome 题意: 最长回文子串的长度... 分析: Manacher板子题... 代码: #include<algorithm> #include<i ...
- div两侧的boder断开 消失 奇怪
原文发布时间为:2009-11-06 -- 来源于本人的百度文章 [由搬家工具导入] 解决方法: 设定外层DIV的宽度即可,如 width:99% ========================== ...
- Maven 集成Tomcat7插件自动部署
1.配置tomcat-users.xml文件 在tomcat安装目录下找到tomcat-users.xml文件.该文件路径为[tomcat安装根目录]/conf/ 修改文件内容,增加下列内容:(一般配 ...
- macro expand error
cat test_macro.c #define TEST_MACRO(b) chip->##b int main(void) { TEST_MACRO(yyy) return 0; } gcc ...
- hdu 4985(模拟)
Little Pony and Permutation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (J ...