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的更多相关文章

  1. apache上部署django的静态文件

    一直在优化自己博客的代码, 昨天把css样式表分离出来, 用作静态 文件, 但是自己还没学django怎么使用静态文件, 经过一番google 终于解决了. django 使用静态文件有两种方法, 一 ...

  2. 在Apache上部署Django

    跟php类似,要想使Apache能够处理python脚本(实际上Apache是不能处理脚本的,只是利用别的扩展模块处理相应脚本),就要给Apache安装相应的扩展模块. Apache起初的python ...

  3. 如何一步步在生产环境上部署django和vue

    本文由云+社区发表 本文主要讲述了如何一步步在生产环境上部署django和vue,操作系统默认为centos 说明:后文中出现的以下字符串均表示具体的路径或者名称,含义如下: DJANGO_DIR-- ...

  4. CentOS上部署Django+Nginx+Uwsgi环境

    在CentOS上部署Django+Nginx+Uwsgi环境 奇谭  2016-09-01 评论  Linux  python django nginx uwsgi VirtualEnv的作用:创建隔 ...

  5. 基于Nginx和uWSGI在Ubuntu上部署Django项目

    前言: 对于做Django web项目的童鞋,重要性不言而喻. 参考:https://www.cnblogs.com/alwaysInMe/p/9096565.html https://blog.cs ...

  6. Ubuntu下Apache中部署Django

    环境:ubuntu12.04 server | apache2 | django1.6 | python2.7 | mod_wsgi 1. 安装apache2: sudo apt-get instal ...

  7. 服务器上部署django项目流程?

    1. 简单粗暴 项目开发完毕,在部署之前需要再配置文件中将 ALLOWED_HOSTS配置设置为:当前服务器IP或*,如: ALLOWED_HOSTS = ["*",] 然后将源码 ...

  8. 在pythonanywhere上部署Django应用

    参考:https://tutorial.djangogirls.org/zh/deploy/ 资料讲的很明了,仅在设置上做几点补充. 1.设置相对路径 import os BASE_DIR = os. ...

  9. 全站之路一路坑(2)——在Apache下部署django博客

    上一篇博客:全栈之路一路坑之使用django开发博客 开发完博客之后,很多后续应用需要博客部署之后才可以使用,这篇文章就来尝试一下将开发好的博客部署到服务器上. 开发阶段,一直使用的是virtuale ...

随机推荐

  1. POJ 1753 Flip Game(高斯消元+状压枚举)

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 45691   Accepted: 19590 Descr ...

  2. 浅谈后缀自动机SAM

    一下是蒟蒻的个人想法,并不很严谨,仅供参考,如有缺误,敬请提出 参考资料: 陈立杰原版课件 litble 某大神 某大神 其实课件讲得最详实了 有限状态自动机 我们要学后缀自动机,我们先来了解一下自动 ...

  3. IX Samara Regional Intercollegiate Programming Contest F 三分

    F. Two Points time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  4. 在vue中使用Element-UI

    Element-UI是一套基于Vue2.0的UI组件库,http://element.eleme.io/#/zh-CN/component/carousel 首先npm install element ...

  5. mac 安装 homebrew 配置

    前言:刚开始转换系统可能安装各种软件继续中... 1. 打开 Mac 中的命令行工具(终端) 2. 在打开的命令行工具中输入如下语句: ruby -e "$(curl --insecure ...

  6. Gate Of Babylon(bzoj 1272)

    Description Input Output Sample Input Sample Output 12 HINT /* 容斥+lucas+乘法逆元 首先,看到有限制的只有15个,因此可以用容斥原 ...

  7. Repeater的使用及其鼠标特效,行链接的使用

    原文发布时间为:2009-04-22 -- 来源于本人的百度文章 [由搬家工具导入] <asp:Repeater ID="rpt" runat="server&qu ...

  8. hdu 6218 Bridge 线段树 set

    题目链接 题意 给一个\(2\)x\(n\)的矩阵,每个格子看成一个点,每个格子与相邻的格子间有边.现进行一些加边与删边操作,问每次操作后图中有多少条割边. 思路 参考 https://www.cnb ...

  9. 小甲鱼PE详解之资源(PE详解11)

    原文出自:www.fishc.com 最近一直在安排第一届鱼C 学习班的事情,忙活了好一阵子,真是对不住大家,还大家久等了,这里要跟大家说声不好意思 ^_^ 今天我们来谈谈资源部分,资源部分可以说是 ...

  10. JavaScript变量提升和函数声明预解析

    1.首先理解函数作用域 在JavaScript中,变量的定义并不是以代码块作为作用域的,而是以函数作用作用域的.也就是说,如果变量是在某个函数中定义的,那么它在函数以外的地方是不可见的.而如果该变量是 ...