Ubuntu下利用Apache2实现Django部署

版权声明:转载请声明原作者并请附带本文链接,谢谢合作! https://blog.csdn.net/Q_QuanTing/article/details/81940193

Ubuntu下利用Apache2实现Django部署


简介

当我们使用Django框架写出自己的web时,那种成就感是不言而喻的。不过好东西自然要和大家分享,因此就需要将自己的web部署在某个地方。废话不多说,接下来将把我的web部署之路和大家分享一下。

如果去网上搜索如何部署Django,你会发现有很多很多的教程。也许你会发现按照他们的一步步走下来还是未必能过够成功部署。当然其中的原因有很多,每个人部署的系统可能不同,系统版本也可能不同,Django的版本也可能不同等等。因此,有可能我的方法也未必能让你成功,但是试试吧,说不定就成功了呢?哈哈哈。

Django部署

部署环境

  • Ubuntu /18.04
  • Apache2 /2.4.29
  • Python /3.6.5
  • Django /2.1

安装

这里默认的是啥都没装的ubuntu系统,如果安装了某些可以跳过。

1. 安装pip

pip是一个非常好用python包的管理工具,这里安装的python3的pip。

sudo apt-get update
sudo apt-get install python3-pip
2. 安装Django

既然是用Django写的,这里怎么能缺呢?

sudo pip3 install django
3. 安装自己需要的包

这里就是个性化的安装了,你的web项目需要哪些库,这里就安装哪些库

sudo pip3 install pymongdb
4. 安装apache2
sudo apt-get install apache2
5. 安装mod_wsgi

mod_wsgi的目标是实现一个简单的Apache模块,支持任何Python WSGI的接口的Python应用程序的托管。我这里安装的是python3的哦。

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

测试

为什么会在这里多一个测试呢?主要是我遇到了一个大坑,就是我的Django项目是从Window系统上移植的。在配置部署过程中,一直存在问题,后来才发现,在移植到Ubuntu上后本身这个项目就存在问题,而非配置错误。

所以在此温馨提醒:如果你的Django项目是从其他地方移植过来的,请先使用Django自带的server测试。

python manage.py runserver

如果能够正常访问,就说明项目是没有问题的,可以进一步的配置了。

配置

1. 创建apache2的配置文件

按照下面的命令在apache2的文件目录下,创建一个配置文件,其中项目名称就填写你的web项目的名称。

sudo vim /etc/apache2/sites-available/项目名称.conf

创建完毕后,需要在配置文件中写入以下内容(当然有些内容要自己增删改):

<VirtualHost *:80> 

ServerName localhost:80     # 填写自己服务器的域名或者ip
ServerAlias otherdomain.com # 其他域名(此处可以不填),多个域名指向同一个站点时可以使用,要多少个就加多少个,空格隔开 
ServerAdmin [email protected]   # 邮箱

Alias /media/ /home/user/项目名称/media/ 
# 多媒体文件存放的路径,具体路径根据你自己的来,这里只是例子
Alias /static/ /home/user/项目名称/static/ 
# 静态文件文件( js, css, 图片,视频等文件)存放的路径,具体路径根据你自己的来,这里只是例子

# 文件授权
<Directory /home/user/项目名称/media>
     Require all granted 
</Directory> 

<Directory /home/user/项目名称/static> 
    Require all granted 
</Directory>

# 通过wsgi.py 连接apache2和你的Django项目
WSGIScriptAlias / /home/user/项目名称/项目名称/wsgi.py

<Directory /home/user/项目名称/项目名称>
    <Files wsgi.py> 
        Require all granted 
    </Files> 
</Directory> 

</VirtualHost> 
2. 修改wsgi.py文件

找到你的Django项目路径,找到项目的wsgi.py文件并打开,在原有的基础上增加以下内容:

from os.path import join,dirname,abspath 
import sys

PROJECT_DIR = dirname(dirname(abspath(__file__)))   
sys.path.insert(0,PROJECT_DIR)
3. 设置权限

apache服务器在运行的时候默认的用户是“www-data”,相关的配置文件的位置在/etc/apache2/envvars

所以我们需要修改Django项目的权限,假如你的项目放在/home/user/项目名称下,可以按照以下命令进行权限修改:

cd /home/user/
sudo chmod -R 644 项目名称
sudo find 项目名称 -type d | xargs chmod 755
sudo chgrp www-data 项目名称
sudo chmod g+w 项目名称

如果在项目中你还有上传目录,请接着上面的步骤修改:

cd media/
sudo chgrp -R www-data uploads
sudo chmod -R g+w uploads

注意:-R是修改包括所有的子文件夹和文件

在修改数据库时:

sudo chgrp www-data 项目名称/db.sqlite3  # 更改为你的数据库名称
sudo chmod g+w 项目名称/db.sqlite3
4. 启动网站

最后一步,让你的网站启动:

sudo service apache2 reload 
sudo a2ensite 项目名称.conf
sudo service apache2 restart

调试

如果完成上述步骤还是无法打开网站,可以去查看一下apache2服务器的错误文件,说不定能够帮你解决问题。

cat /var/log/apache2/error.log

例如下图:

最后

我的网站启动后,效果如图(不要在意细节( ̄y▽, ̄)╭ ):

希望对大家有所帮助!:-)

猜你喜欢

转载自blog.csdn.net/Q_QuanTing/article/details/81940193
今日推荐