Django项目部署 Apache+[Ubuntu / CentOS]

1 django项目测试

# 无报错则继续
cd project_dir
python manage.py runserver 0:8001
# 将项目转移至apache目录
cp project /var/www/

 

2 ubuntu

2.1 安装apache2和mod_wsgi

sudo apt install apache2
sudo apt install libapache2-mod-wsgi

2.2 apache配置

# 添加配置
vi /etc/apache2/apache2.conf
# Django 
# 媒体文件
Alias /media/ /home/ubuntu/media/
Alias /static/ /home/ubuntu/static/

<Directory /home/ubuntu/static/>
Order deny,allow
Require all granted
</Directory>

<Directory /home/ubuntu/media/>
Order deny,allow
Require all granted
</Directory>

# wsgi path
WSGIScriptAlias / /home/ubuntu/resume/resume/wsgi.py
# django project path
WSGIPythonPath /home/ubuntu/resume

<Directory /home/ubuntu/resume/resume>
<Files wsgi.py>
  Order deny,allow
  Require all granted
</Files>
</Directory>
sudo /etc/init.d/apache2 restart
# 重启apache,即可输入网址,测试配置正确与否

 

3 centos 7 (多端口对应多django项目)

3.1 安装apache24 和 mod_wsgi

sudo yum install httpd
sudo yum install mod_wsgi
apachectl -v #确认版本号2

3.2 配置apache

# vim conf/httpd.conf
Listen 9001
Listen 9002
ServerName localhost4.localdomain4 #对应/etc/hosts #避免报错[:error] [pid 19197] Misconfiguration of certificate's CN and virtual name. The certificate CN has localhost4.localdomain4. We expected fe80::b370:151c:e26b:f0df as virtual name.

3.3 添加虚拟主机

# vim /etc/httpd/conf.d/vhost_cancer.conf
<VirtualHost *:9001>
  WSGIScriptAlias / /var/www/chrome/chrome/wsgi.py

  Alias /media/ /var/www/chrome/chrome/media/
  Alias /static/ /var/www/chrome/chrome/static/

  <Directory /var/www/chrome/chrome/media>
    Require all granted
  </Directory>

  <Directory /var/www/chrome/chrome/static>
    Require all granted
  </Directory>

  <Directory /var/www/chrome/chrome/>
  <Files wsgi.py>
    Order deny,allow
    Require all granted
  </Files>
  </Directory>

</VirtualHost>
# vim /etc/httpd/conf.d/vhost_tumor.conf
<VirtualHost *:9002>
  ......略
</VirtualHost>

3.4 修改django项目

#修改项目wsgi.py文件
#添加如下,设定项目路径,使settings模块位于系统路径
import os
PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, PROJECT_DIR)

3.5 重启apache 查看日志

# apachectl restart/start/stop
# cat /var/log/httpd/error_log
 

 

4 apache运行账户和目录权限

4.1 apache运行账户

# 查看运行账户
cat /etc/httpd/conf/httpd.conf | grep User
cat /etc/httpd/conf/httpd.conf | grep Group
# 或者
ps -ef | grep httpd

4.2 目录权限

# 一般目录权限设置为 755,文件权限设置为 644
cd /home/ubuntu # resume下有manage.py文件
sudo chmod -R 644 resume
sudo find resume -type d | xargs chmod 755
# sqlite3数据库权限
cd /home/ubuntu
sudo chown www-data resume/db.sqlite3 sudo chgrp www
-data resume sudo chmod g+w resume sudo chgrp www-data resume/db.sqlite3 # 更改为你的数据库名称 sudo chmod g+w resume/db.sqlite3

 

5 selinux关闭

getenforce # 查看selinux状态
setenforce 0 # 临时关闭
修改/etc/selinux/config 文件,将SELINUX=enforcing改为SELINUX=disabled #永久关闭

 

posted @ 2017-03-12 16:45  YoungAaron  阅读(853)  评论(0编辑  收藏  举报