首页 存档 技术 查看内容

Linux-部署-Django-项目过程与问题总结

2018-3-30 13:00 |来自: 互联网 683 0

摘要: 本篇主要用于记录部署 Django 项目所有踩过的坑。最近学习 Django 框架开发,将项目部署到 Linux 服务器上时遇到了很多坑,在此整理一下以作备忘,同时希望对有需要的同学有所帮助。 从 0 开始,在 Linux 上部署 Dja ...

本篇主要用于记录部署 Django 项目所有踩过的坑。

最近学习 Django 框架开发,将项目部署到 Linux 服务器上时遇到了很多坑,在此整理一下以作备忘,同时希望对有需要的同学有所帮助。

从 0 开始,在 Linux 上部署 Django 项目共有如下几步:

1. 安装 Python3.5

2. 安装 Apache2.4

3. 安装 wsgi

4. 配置数据库和静态文件

5. 配置 Apache

6. 处理权限问题

下面一步步来进行详细介绍:


安装Python3.5

1.安装编译环境

2.下载编译 Python3.5 源码包

prefix 指明了 Python3.5 的安装目录,后面的--enable-shared LDFLAGS="-Wl,-rpath=/usr/local/python3" 选项保证了可以正常使用共享库,否则在编译安装后可能会出现以下错误:

我自己在完成后执行 Python3.5 的命令时就遇到了。查找了很多的解决方案,上面这种在编译时进行LDFLAGS配置应该是最简洁有效的方式。

另外这个错误在使用wsgi时也可能会遇到,其官方文档还特地针对该问题作了【介绍】(http://modwsgi.readthedocs.io/en/develop/user-guides/installation-issues.html)。其原因就是无法找到 Python 的共享链接库。

解决方法是找到共享库文件 /etc/ld.so.conf,这个文件记录了编译时使用的动态链接库的路径,一般默认配置了 /lib 和 /usr/lib ,这里我们需要将安装的 Python3.5 的共享库路径添加进去:之后运行 ldconfig 使配置生效就可以正常使用了。

安装完 Python3.5 后可以使用 pip 安装 Django 等需要的库。


安装 Apache 服务器


1. 安装 apr apr-util pcre

1)安装 apr

下载地址: http://apr.apache.org/download.cgi

首先下载 apr,我这里下载的版本是 apr-1.5.2.tar.gz,下载完成后解压编译:

按照上面步骤执行应该基本没有问题。


2)安装 apr-util

apr-util 与 pcre 的安装步骤与上面基本相同,但是需要配置 apr 选项,如果不进行任何设置,在检测编译选项时会报如下错误,提示我们需要配置 apr 选项:

完整配置过程如下:

3)安装 pcre

下载地址:http://pcre.org/

如果系统没有安装 pcre 的话我们还需要手动进行安装,其安装步骤:

2. 安装 apache

下载地址:http://httpd.apache.org/download.cgi

我下载的版本是 httpd-2.4.25.tar.gz

下载之后按照官方文档中的介绍进行安装即可。启动时注意一点,需要使用-f命令指明根据 /usr/local/apache2 下的 httpd.conf 配置文件进行启动。


部署 wsgi


wsgi 官网提供了非常详尽的文档来帮我们进行编译部署,我自己的部署命令如下:编译后的文件将会拷贝到apache2/modules文件夹中,我们需要在其 httpd.conf 配置文件中添加这样就可以是 apache 服务器识别我们的 wsgi 应用了。

在这里我遇到的最大问题还是关于共享库的错误,在上面已经提供了解决方案。


配置数据库与静态文件


关于 Django 项目的创建和其各个文件的意义这里不再赘述,只介绍配置和遇到的坑以及解决方案。

1.配置数据库

一般我们是在本地开发项目,开发完成后将文件上传到 Linux 服务器。就配置文件来说比较简单,可以直接在服务端进行配置。我连接的是阿里云的数据库服务器。其配置如下:另外,本人使用的是 Django1.10 版本,该版本其默认的数据库连接库是 MySQLdb。因为没有这个库,所以连接时会报错,这里我们使用 PyMySQL 进行替代。

1)安装 PyMySQL

注意这里下载下来时要检查版本,最新版是 0.7.10。如果安装了 0.5 等低版本,在连接时会报ImportError: cannot import name Thing2Literal错误。


2)修改 Django mysql 连接配置

安装完 PyMySQL 后就需要修改 Django 的配置文件来替换 MySQLdb 了。找到 /usr/local/python3/lib/python3.5/site-packages/django目录。不知道路径在哪可以直接运行下面的一小段程序查看:进入 /django/db/backends/mysql 目录下修改 base.py和introspection.py文件。将 MySQLdb 全部替换为 pymysql 即可。

2.管理静态文件

诸如 html/css/js 以及图片等静态文件,在开发时我们都是在对应模块下创建 static 目录进行存储的,在部署时需要首先进行静态文件的收集,并进行统一管理。

1)修改项目配置文件

修改项目的 setting.py 文件中的静态管理路径:

2)执行收集命令

在 Linux 上的项目根目录下执行命令:这样根据我们配置的路径,Django 会将我们的静态文件全部收集到根目录下的 static 文件夹中进行管理。


配置 Apache


上面关于项目的内容都配置完毕后就需要配置 Apache 服务器了,其实就是让 Apache 服务器找到我们的项目。上面我的服务器安装到了 /usr/local/apache2目录下,进入该目录打开 conf/httpd.conf 进行配置。另外还可以设置服务器相关的一些内容,其官方文档写得很详细,英文读起来也不难,这里不再赘述。配置完之后启动服务器就可以根据 ip 和端口进行访问了。


权限问题


当我们安装好 apache 服务器启动之后,通常可以顺利访问,但是有时候在部署完 Django 项目后再次进行访问时会发生 403 禁止访问的情形,这是由于文件的访问权限问题造成的,解决方法是使用 chmod 命令将项目的每个目录添加权限。以上就是整个 Django 项目的配置过程,简单来说遇到的最头疼的坑是 wsgi 共享链接库错误、Django 数据库链接问题、访问权限问题。文中都给出了解决方案,希望对有需要的同学有所帮助。

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部