ubuntu环境下python3-django部署到 apache2

最近学习django,要把项目部署到apache2,搞了好几天终于摸索成了,写出来和大家分享一下。

1.我的环境

      系统:ubuntu14.04 LTS (本来是在16.04上的,按照下面的方式不行,总是报一个错,所以改成14.04了)

      python:3.4.3 这个版本是ubuntu自带的,ubuntu还自带了python2.7.6 ,所以有些地方会有冲突

      django:1.10.6

      apache:2.4.7

2.环境搭建

      这个写出来以便于新手学习,和以后自己回顾吧。

      1,安装pip3: sudo apt-get install python3-pip。

         这里我们安装的是pip3,不是 pip。用pip  install 安装的装在了python2中,pip3 install是安装到python3中的,这个要搞明白。

      2,利用pip3安装django:  sudo pip3 install django。

            测试是否安装成功:终端进入python3   >>>import django    >>>django.VERSION  如果显示版本号则安装成功。

    可以测试一下终端进入python ...应该是 不行的。因为django安装到了python3中。

     3,安装apache2和mod_wsgi

         sudo apt-get install apache2

         sudo apt-get install libapache2-mod-wsgi-py3(PS:Python 2 中:sudo apt-get install libapache2-mod-wsgi)

        确认apaceh2版本号:apachectl -v

 

     4,mysql数据库安装及访问mysql数据库请参看:http://blog.csdn.net/bigboysunshine/article/details/60961845

 

        至此环境搭建好了。

3,部署

将你的django工程放在 /var/www/下,其他位置也可以,这个是apache的默认位置。

1.新建配置文件:sudo vi /etc/apache2/sites-available/sitename.conf

假如工程名是blog,ServerName可以是ip地址或者域名,如果是域名的话还需要修改Django工程下的seeting.py文件,将其ALLOWED_HOSTS=[]改为ALLOWED_HOSTS=['www.yourdomain.com'],多个域名可以通过逗号隔开。

端口号要改的话需要 在/etc/apache2/ports.conf中添加你对应的端口号,来让apache2监听这个端口。

<VirtualHost *:80>
    ServerName www.yourdomain.com
    ServerAlias otherdomain.com
    ServerAdmin wang@163.com
  
    Alias /media/ /var/www/blog/media/
    Alias /static/ /var/www/blog/static/
  
    <Directory /var/www/blog/media>
        Require all granted
    </Directory>
  
    <Directory /var/www/blog/static>
        Require all granted
    </Directory>
  
    WSGIScriptAlias / /var/www/blog/blog/wsgi.py
    # WSGIDaemonProcess ziqiangxuetang.com python-path=/home/tu/blog:/home/tu/.virtualenvs/blog/lib/python2.7/site-packages
    # WSGIProcessGroup ziqiangxuetang.com
  
    <Directory /var/www/blog/blog>
    <Files wsgi.py>
        Require all granted
    </Files>
    </Directory>
</VirtualHost>

2.修改wsgi.py文件

      import os
    from os.path import join,dirname,abspath
    PROJECT_DIR = dirname(dirname(abspath(__file__)))


    import sys
    sys.path.insert(0,PROJECT_DIR)
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "examsys.settings")


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

3.设置mysql字符集
   如果用到mysql数据库需要设置字符集,请参看:http://blog.csdn.net/bigboysunshine/article/details/60961845

4.如果上面设置的端口是80则请参看:http://blog.csdn.net/bigboysunshine/article/details/62418300

5.激活网站

sudo a2ensite sitename.conf

sudo service apache2 restart

6.进入工程目录执行

sudo python3 manage.py collectstatic

然后同步一下数据库

sudo python3 manage.py makemigrations
sudo python3 manage.py migrate

然后应该就ok了。

声明:以上是在ubuntu 14.04中测试的。ubuntu16.04不行。

参考:http://www.ziqiangxuetang.com/django/django-deploy.html

http://www.jianshu.com/p/b40a4a12fff1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值