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
- 然后配置Apache, 在 /etc/apache2/apache2.conf 最后行 加入LoadModule wsgi_module/usr/lib/apache2/modules/mod_wsgi.so-3.4 加入的这行加载模块的代码 的路径其实是mod_wsgi.so 所在路径即安装路径)
- sudo service apache2 start 如果找不到这个mod_wsgi.so,Apache服务就会启动失败, 但是会提示 这个mod_wsgi.so模块早已加载,所以跳过了加载的程序(总之没有什么影响),但开机第一次启动Apache服务 去没有这种提示。
8.创建站点mysite.conf
- 首先将Django web项目mysite导入到ubuntu中,rz,再unzip,mv 到/var/www/路径下。
-
创建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 模式,点击这里查看) -
创建站点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> 激活网站
sudo a2ensite mysite 或者 sudo a2ensite mysite.conf
三、登录测试
在浏览器上输入网站ip:端口号访问。