Django 项目部署(apache)

时间:2022-12-21 00:03:02

Django 项目部署(apache)


终于完结,本机浏览器访问外网的(Django)网站连接问题,下面是总结最近一次部署Django基于ubuntu操作系统上的Apache服务器的成功案例。部署这个项目我走了很多的弯路,这是我之前的文章我现在想要把他重新记录,发布到这里。

一、配置环境

1.操作系统的环境

ubuntu@VM-120-230-ubuntu:~$ apachectl -v
Server version: Apache/2.4.7 (Ubuntu)

2. Apache服务器

ubuntu@VM-120-230-ubuntu:~$ apachectl -v
Server version: Apache/2.4.7 (Ubuntu)

3.注意

Django项目是用python3.4(或理解python3.x)编译,Django1.8.6版本的框架 为了减少兼容可能带来的错误和失败,下面的安装过程各个安装都是优先考虑相同版本。


二、ubuntu下安装Apache、mod_wsgi、django

1.安装pip

Sudo apt-get install python-pip  //安装python2.x对应的pip
Sudo apt-get install python3-pip //安装python3.x对应的pip

2.安装Django1.8.6

(sudo) pip install Django  //(针对python2.x 不加“==版本号” 便安装最新版本的Django)
sudo pip3 install django==1.8.6 //安装的Django使用python3.x编译环境)

3.查看Django是否安装成功

import django
django.VERSION
(1, 7, 6, 'final', 0)

django.get_version()

另外针对python3.x环境下的版本的验证

import django
print(django.get_version())

5.安装Apache2

sudo apt-get install apache2

6.安装wsgi模块

sudo apt-get install libapache2-mod-wsgi
sudo apt-get install libapache2-mod-wsgi-py3

7.配置Apache加载mod_wsgi

如果Apache处在运行状态,先要停止
sudo service apache2 stop

  1. 然后配置Apache, 在 /etc/apache2/apache2.conf 最后行 加入LoadModule wsgi_module/usr/lib/apache2/modules/mod_wsgi.so-3.4 加入的这行加载模块的代码 的路径其实是mod_wsgi.so 所在路径即安装路径)
  2. sudo service apache2 start 如果找不到这个mod_wsgi.so,Apache服务就会启动失败, 但是会提示 这个mod_wsgi.so模块早已加载,所以跳过了加载的程序(总之没有什么影响),但开机第一次启动Apache服务 去没有这种提示。

8.创建站点mysite.conf

  1. 首先将Django web项目mysite导入到ubuntu中,rz,再unzip,mv 到/var/www/路径下。
  2. 创建django.wsgi文件,sudo mkdir /var/www/mysite/apache 下sudo vim django.wsgi做如下的编辑:

    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)


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

    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()
    第 3,4,5 行为新加的内容,作用是让脚本找到django项目的位置,也可以在sitename.conf中做,用WSGIPythonPath,想了解的自行搜索, 第 7 行如果一台服务器有多个django project时一定要修改成上面那样,否则访问的时候会发生网站互相串的情况,即访问A网站到了B网站,一会儿正常,一会儿又不正常(当然也可以使用 mod_wsgi daemon 模式,点击这里查看)
  3. 创建站点mysite.conf
    新建一个网站配置文件sudo vim /etc/apache2/sites-available/mysiste.cong

    <VirtualHost *:8000>
    ServerName mysite.com
    DocumentRoot /var/www/mysite
    <Directory /var/www/mysite>
    Order allow,deny
    Allow from all
    </Directory>

    WSGIScriptAlias / /var/www/mysite/apache/django.wsgi
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    </VirtualHost>
  4. 激活网站 sudo a2ensite mysite 或者 sudo a2ensite mysite.conf

三、登录测试

在浏览器上输入网站ip:端口号访问。