搬瓦工+ubuntu16.04+python3.5下将django部署到apache2.4.x的经验

前言

为了将django挂载在apache上。我为之奋斗了1个星期的休息时间。关于怎么挂载,网上有太多的教程博客,但质量都不高,大多数博客的目的都是为了让自己以后的记得,而不是教会别人怎么从零学起。同时python2和python3的版本问题,apache2.2之前和之后的问题各种版本相互之间不兼容,使我挂载在apache2上踩了太多的坑,几度崩溃。。。在这里建议新手的环境要尽量与自己找的教程一致,先照模照样跑起来再想着根据自己需要做修改。当眼前的教程卡住了时找其他教程,也要先看一下其他教程的环境是什么样的,不然装错了版本,想要卸载,又卸不干净是很麻烦的。同时严谨检查自己的输入,因为各种配置都是靠修改配置文件完成的,一个疏忽少数一个字母符号,就可以让你耽误好久

环境

我的环境是bandwagon 上ubuntu16.04 django1.10.5 python3.5 apache2.4.18

查询ubuntu版本命令

sudo lsb_release -a

查询python命令

python3 -V

查询django命令

python3 -m django --version

查询apache2版本命令

apachectl -v

理论上只要是ubuntu 14以上系统,python3.x,django 1.1x ,apache2.2-apache2.4都可以参考

确保你使用 python3 manage.py runserver 0.0.0.0:8000 这样的命令后,网站能够正常访问。

正题

apache2安装与配置

1.安装apache2

sudo apt-get install apache2

查看端口配置文件

vi /etc/apache2/port.conf

如果你的网站还想使用其他端口8081,则需要在这里后面加入一行 Listen 8081 (坑)

浏览器访问xx.xx.xx.xx:80 ,看到apache的界面it works 说明apache2服务器跑起来了。

ps:如果你使用的是虚拟机,想使用localhost:8080访问,那么你还要查看

vi /etc/hosts

确保有127.0.0.1 localhost,没有就加上。


host

然后访问localhost:8080 即可

2.安装apache2解析python的包

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

(坑:此处如果你是py2开发的话去掉上述命令最后的“-py3”)

配置使apache2加载mod-wsgi包

vi /etc/apache2/apache2.conf

在最后加上

LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so-3.5

注意,我使用python3.5 所以引用的包是mod_wsgi.so-3.5(坑)

(如果你不是python3.5那么进入到/usr/lib/apache2/modules/文件夹去看,找到自己python版本的包)

3.建立自己网站的配置文件

 vi /etc/apache2/sites-available/mystation.conf

(mystation是名字,可以自行定义)
配置内容

# 建立一个虚拟机,指定8080端口
    ServerName xx.xx.xx.xx #定义网站的名字,可随意填
    ServerAlias xx.xx.xx.xx  #定义别名,可随意取
    ServerAdmin [email protected] #定义邮箱,随意填
    
    Alias /static/ /home/my_station/static/#定义你静态文件的路径,具体后面会讲
    
    #你项目的文件夹,注意这个文件夹是里面含有manage.py的那个文件夹。
       Require all granted
    
    WSGIScriptAlias / /home/my_station/movie_station/wsgi.py  #这个文件夹是含有wsgi.py的文件夹
    
    
        
            Require all granted  #设置权限
        
    
    
        Require all granted  #设置静态文件目录权限
    

(坑)搬瓦工vps默认是在/root/文件夹下建立网站文件夹的,但是/root/文件夹,apache2是没有访问权限的,如果你配置里面用的是/root/文件夹下的目录,而且没有开启权限的话,就会出现浏览网站时出现访问被拒绝的页面。所以建议你将网站文件移到/home/目录下

4.修改wsgi.py文件

将以下内容复制,

import os


PROJECT_DIR = os.path.dirname(os.path.dirname(__file__))#3
import sys # 4
sys.path.insert(0,PROJECT_DIR) # 5


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


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

my_station.settings点号前为你自己网站项目的名字,通常就是项目的文件夹名

5.激活网站

a2ensite mystation.conf

其中 mystation 这个是你conf的文件名,启用网站

6.重启apache

sudo /etc/init.d/apache2 restart

重启apache2 浏览 xx.xx.xx.xx:8080如果顺利的话,你将看到你的网站出现了。
看到你的网站出现后,有些静态文件如css、js还没有加载,所以显示比较乱。

配置静态文件

在你项目的settings.py文件中加入
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
定义你的静态文件根目录在哪里
然后执行

sudo  python managy.py  collectstatic

将所有静态文件复制到根目录下
配置网站配置文件

 vi /etc/apache2/sites-available/mystation.conf


Alias /static/ /home/my_station/static/ #定义你静态文件的路径
 
        Require all granted  #设置静态文件目录权限
 

坑:注意Alias的文件目录后面是有 / 而 里的目录最后使没有 /

中途卡壳出现问题怎么办?

查看错误日志error.log

vi /var/log/apache2/error.log

看文件最后的error记录,然后去百度吧。我用了一个星期,你肯定比我厉害

你可能感兴趣的:(搬瓦工+ubuntu16.04+python3.5下将django部署到apache2.4.x的经验)