Django部署在apache2 Ubuntu

1. 安装 apache2 和 mod_wsgi

sudo apt-get install apache2
 
# Python 2
sudo apt-get install libapache2-mod-wsgi
 
# Python 3
sudo apt-get install libapache2-mod-wsgi-py3

2. 确认安装的apache2版本号

apachectl -v

Server version: Apache/2.4.6 (ubuntu)

Server built:   Dec  5 2013 18:32:22

3. 准备一个新网站

ubuntuapache2配置文件在 /etc/apache2/

备注:centos 用户 apache 名称为 httpd /etc/httpd/ 中(可以参考文章下面置顶的评论)

新建一个网站配置文件  

sudo vi /etc/apache2/sites-available/mysite.conf

示例内容如下:


    ServerName www.yourdomain.com  # 域名或者ip地址
    #ServerAlias otherdomain.com
    #ServerAdmin [email protected]
 
  DocumentRoot /var/www/mysite    # 项目路径
  '''
  #存放用户上传图片等文件的位置
  Alias /media/ /var/www/mysite/media/
 
  #允许通过网络获取media的内容
   
   Require all granted
   
 
  #静态文件(js/css/images)的存放位置
   Alias /static/ /var/www/mysite/static/
 
  #允许通过网络获取static的内容
   
   Require all granted
   
'''
  #最重要的!通过wsgi.py让Apache识别这是一个Django工程,别漏掉前边的 /
   WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py
  #wsgi.py文件的父级目录
   
       
           Require all granted
       
   
 

如果你的apache版本号是 2.2.x(第二步有方法判断)

用下面的代替  Require all granted

Order deny,allow
Allow from all

编辑 /etc/apache2/ports.conf 添加一行   

Listen 81    #监听81端口,就是我们新建的虚拟主机

编辑 /etc/apache2/mods-enabled/wsgi.load

LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so-3.4   #python3

LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so       #python2

编辑 /etc/apache2/mods-enabled/wsgi.conf  添加一行 

WSGIPythonPath /var/www/mysite   #项目所在路径

4. 修改wsgi.py文件

上面的配置中写的 WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py

就是把apache2和你的网站project联系起来了

import os

from os.path import join,dirname,abspath

PROJECT_DIR = dirname(dirname(abspath(__file__)))#3

import sys # 4
sys.path.insert(0,PROJECT_DIR) # 5
sys.path.append('/var/www/mysite') 

os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings" # 7

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

5. 设置目录和文件权限

一般目录权限设置为 755,文件权限设置为 644 

假如项目位置在 /var/www/mysite (在mysite 下面有一个 manage.pymysite 是项目名称)

cd /var/www/

sudo chmod -R 644 mysite

sudo find zqxt -type d | xargs chmod 755

apache 服务器运行用户可以在 /etc/apache2/envvars 文件里面改,这里使用的是默认值,当然也可以更改成自己的当前用户,这样的话权限问题就简单很多,但在服务器上推荐有 www-data 用户,更安全。以下是默认设置:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

如果你使用的是sqlite3数据库,还会提示 Attempt to write a readonly database,同样要给www-data写数据库的权限,

进入项目目录的上一级,比如project目录为 /var/www/mysite 那就进入 /var/www 执行下面的命令

sudo chgrp www-data mysite

sudo chmod g+w mysite

sudo chgrp www-data mysite/db.sqlite3  # 更改为你的数据库名称

sudo chmod g+w mysite/db.sqlite3

备注:上面的不要加 -R ,-R是更改包括所有的子文件夹和文件,这样不安全。个人建议可以专门弄一个文件夹,用它来放sqlite3数据库,给该文件夹www-data写权限,而不是整个项目给写权限,有些文件只要读的权限就够了,给写权限会造成不安全。

6. 激活新网站

#激活mysite站点
sudo a2ensite mysite  或 sudo a2ensite mysite.conf
sudo service apache2 reload 

关闭站点

a2dissite mysite


 

 


你可能感兴趣的:(PYTHON)