将Django项目搭建到服务器上

本文详细记录了在Ubuntu服务器上部署Django项目的全过程,包括解决Python版本冲突、安装pip及依赖包的问题,并最终通过Apache实现对外服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

服务器是Ubuntu系统,其实按照上面的教程正常情况很快就能搭建成功,但是有时候就是不正常。。。没办法,各种报错

下面一步一步道来:

在服务器上搭建Django和本机上是一样的

搭建Django环境

这里我是下载好Django安装包,然后传到服务器上的(服务器上下载巨慢),然后使用下面语句

tar -xvf django-1.11.4.tar.gz
cd django-1.11.4
(sudo) python3 setup.py install

这里因为我的项目是用python3写的,因此安装时使用python3,然后直接就报错了,找到不xxx文件,这个提示我要安装setuptools,然后我又下载好setuptools安装包后,安装时,又提示要求python环境必须至少为python3.4;于是我查了一下我python3的版本为3.2

然后使用

apt-get install python3

怎么安装都是python3.2,我第一想到的就是下载一个python3.6的安装包,然后下好了,各种修改,什么软链接啊,什么pip,setuptools等等,最后也没有搞好…

于是想到使用apt-get update 这下问题出现了,如下:

GPG error: http://repo.bcm.baidubce.com all Release: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY

这个问题我查了好长时间,才发现百度云服务器下载使用的是百度的镜像,然后查找下载源,最后将sources.list全部修改为其他的源,再次使用apt-get update发现前面几行还是在使用百度云获取,后面才使用其他源,这个我也无能为力了,然后我想试试

apt-get install python3

结果安装了python3.4,说明其他源还是有效的,我以为下面就好了,结果运行Django项目时,报错,要下载xxx包,这个我需要下载pip,使用sudo apt-get install python3-pip,使用pip3时,又报错:

pkg_resources.DistributionNotFound: pip==1.5.4

查到的结果是需要执行如下语句:

sudo easy_install pip==1.4.1

但是悲剧的时这个easy_install还区分2和3,我没有python3的easy_install,只有2的,继续查找下载easy_installs

使用下面的安装成功了:

sudo apt-get install python3-setuptools
sudo easy_install3 pip

至此,全是python2和python3的问题解决了

部署到Apache

有个问题出现了:Django自己就可以运行,为什么要部署到Apache上呢?

知乎上有解答:https://www.zhihu.com/question/35540397

Django是给开发者调试使用的,各方面性能都不如Apache

继续。。。。

安装apache2和mod_wsgi

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

新建网址配置

这里我命名为mysite.conf

sudo vi /etc/apache2/sites-available/mysite.conf

具体如下

<VirtualHost *:80>
ServerName 182.34.34.23
#ServerAlias otherdomain.com
#ServerAdmin youremail@gmail.com 

#Alias /media/ /var/www/ProjectName/media/ 

# 静态文件(js/css/images)的存放位置
Alias /static/ /var/www/mysite/learn/static/

# 允许通过网络获取static的内容
<Directory /var/www/mysite/learn/static/>
    Order allow,deny
    allow from all
</Directory>

# 最重要的!通过wsgi.py让Apache识别这是一个Django工程,别漏掉前边的 /
WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py
# wsgi.py文件的父级目录,第一个ProjectName为Django工程目录,第二个ProjectName为Django自建的与工程同名的目录
<Directory /var/www/mysite/mysite/>
<Files wsgi.py>
    Order allow,deny
    allow from all
</Files>
</Directory>

</VirtualHost>

这个上面的ServerName需要改成自己服务器的IP或者域名

然后是修改wsgi.py 这个见参考网址

最后是激活网站

sudo a2ensite sitename 或 sudo a2ensite sitename.conf

重启服务器

sudo service apache2 restart

当然这个也不是一帆风顺,但都是一些小问题

最后访问

也出了如下问题:

DisallowedHost at /

Invalid HTTP_HOST header: ‘xxxxxx:8000’. You may need to add u’xxxxxx’ to ALLOWED_HOSTS.

这个在setting.py中的ALLOW_HOSTS=[]中添加* 即可

如果要在views.py中读取文件,路径取服务器的根路径:

比如我将项目mysite放在服务器的/var/www目录下,想要读取项目mysite下的all.json文件,如此用:with open(“/var/www/mysite/all.json”,’r’) as f:

完!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值