邢光斌 王琴竹
摘要:Python语言是目前最热门的程序设计语言之一,提供了类似Django、Flask等流行的网站框架,让学生可以轻松搭建网站。本地测试成功后,在服务器端的部署成为一个难题。文章介绍了Django项目在CentOS7系统下的部署,并对部署过程中可能会遇到的问题进行了解决。
关键词:Python;Django;CentOS7环境部署
中图分类号:TP303 文献标识码:A
文章编号:1009-3044(2019)28-0248-03
Abstract:Python is one of the most popular programming languages at present. It provides a popular website framework like Django and Flask, which makes it easy for students to build websites. After successful local testing, deployment on the server side becomes a challenge. This paper introduces the deployment of Django project under CentOS7 system, and solves the problems that may be encountered in the deployment process.
Key words:Python;Django;CentOS7 Environmental Deployment
随着人工智能、大数据时代的到来,Python语言已成为最热门的程序設计语言之一,对于初学程序设计的学生来说,能够用所学知识开发一个项目不但可以激发其学习兴趣,而且可以提高自信心。Python提供了Django、Flask等流行的网站框架[1],让学生可以轻松搭建网站。但在本地测试成功后,在服务器端的部署往往是学生们较难解决的问题。Django项目在本地测试无误后,还需要将项目上传至购买的服务器进行部署,这是开发项目至关重要的一步。文章从购买基于Linux的CentOS7系统开始[2],介绍了各类软件的安装、防火墙的配置、数据库的创建、代码上传前的修改、代码的服务器端环境部署、域名的解析等步骤,并对可能出现的问题提出了解决方案。
1 软件运行环境的安装
1.1 安装工具类软件
与Windows系统一样,为了方便操作,我们需要安装一些工具类软件。
在CentOS7中,使用“yum install 软件名”来安装软件。在本项目部署中,需要用到的软件有三个:
(1)文本编辑器软件Vim
(2)文件上传下载软件lrzsz
(3)文件解压软件unzip
1.2 安装Nginx
在服务器端,常用的代理服务器有“Apache”和“Nginx”两种。“Nginx”是一个很强大的高性能Web和反向代理服务,且能够支持高达50000个并发连接数的响应,被更多的用于企业级项目中。因此,选用Nginx作为项目部署的服务器。
Nginx与其他服务器端软件不同,在安装时,需要下载对应当前系统版本的Nginx包。然后进入“tmp”目录,通过“wget”工具获取安装包。具体如下:
(1)在http://nginx.org/packages/centos/7/noarch/RPMS/nginx- release-centos
-7-0.el7.ngx.noarch.rpm处下载安装包。
(2)建立Nginx的yum仓库:rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm。
(3)安装Nginx:yum install nginx
至此,Nginx就安装完成了,下一步通过“service nginx start” 命令启动Nginx。
1.3 安装Mysql
Mysql是一款常用的免费数据库软件,被广泛应用。因为Linux系统默认安装了Mariadb数据库,需要使用“yum remove mariadb-libs.x86_64”将Mariadb数据库卸载。然后通过“yum install mysql-devel”安装Mysql开发用到的库以及包含文件。
Mysql客户端的安装与Nginx 大致相同,需要去Mysql官网下载相对应的Mysql版本安装包进行本地安装。具体如下(以Mysql5.7为例,需要进入“/tmp”目录下):
(1)在wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm处下载安装包。
(2)安装源:yum localinstall mysql57-community-release-el7-8.noarch.rpm
(3)安装Mysql:yum install mysql-community-server
(4)启动Mysql:service mysqld start
至此,Mysql已经安装成功。一般还需要获取Mysql的默认密码进入数据库,并修改数据库的密码,具体如下:
(1)获取密码:cat /var/log/mysqld.log | grep password。默认的登录密码如图1中画线部分所示。
(2)输入“mysql -uroot -p”按回车键后,在Password中输入密码进入数据库。
(3)通过“SET PASSWORD = PASSWORD('新密码');”修改密码。
1.4 安装Python所需的环境
Linux系统默认安装了Python,还需要安装Python的运行环境。以Python2.7为例,依次安装以下所有的安装包:
(1)yum install python2-pip
(2)yum install gcc-c++ -y
(3)yum install ncurses-devel –y
(4)yum install zlib-devel
(5)yum install bzip2-devel
(6)yum install openssl-devel
(7)yum install ncurses-devel
(8)yum install sqlite-devel
(9)yum install -y gcc
(10)yum install python-devel
1.5 安装项目所需的依赖包
运行环境安装完成后就可以安装项目所需要的依赖包了。“MySQL-python”在安装过程中最容易,单独的通过Pip命令进行安装即可:pip install MySQL-python。
如果安装中遇到问题,需要检查环境安装包是否全部安装。
由于Django项目所需要的依赖包较多[3],如果挨个安装会很浪费时间,因此,可以在本地运行Django项目,并在命令行中输入“ pip freeze > Requirements.txt”导出所有的依赖包文件,并将文件上传到“/Tmp”目录下。
然后通过命令: pip install -r Requirements.txt 批量安装所需要的依赖包即可。如果中途不报错,表示安装成功。
如果中途遇到安装错误的问题,要将前面安装过的依赖包进行删除,从报错的安装包重新开始安装,且一定要将所有依赖包都安装成功。
2 创建数据库
Django项目的运行离不开数据库,需要新建一个数据库。如果使用“CREATE DATABASE 数据库名”创建数据库,在运行Django项目时会出现一些错误。因此,本文专门提出创建方法,防止后期因为数据库引起的问题。具体如下:
进入数据库后,输入“CREATE DATABASE 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_General_Ci;”创建数据库。这里添加了数据库的编码格式为Utf-8。如果使用的编码为“GBK”则只需要“CREATE DATABASE 数据库名”即可。
3 Django项目的配置修改
在项目上传前,需要对项目中的“settings.py”配置文件进行修改。具体步骤如下:
第一步:将数据库信息修改为服务器端的数据库,HOST依旧为localhost。如图2所示。
第二步:在本地项目中,往往需要添加静态文件地址,如图3所示。
第三步:在上传服务器之前,还需要将图中阴影部分的三行替换为“STATIC_ROOT = os.path.join(BASE_DIR, "static/")”。
为了不出现Utf-8编码的错误,在文件头部添加“DEFAULT_CHARSET = 'utf-8'”。
第四步:修改访问权限。项目上传前,需将“DEBUG”模式调成False,并将下方的HOSTS进行如图4所示的设置,其中最后一项为自己的域名地址。
4 Django项目的上传与测试
项目上传前要将修改好的Django项目压缩为.Zip格式,并在服务器端新建项目的根目录(将“/Data/Www”作为项目的根目录)。
1)通过“mkdir -p /data/www”创建根目录,并通过“cd /data/www”进入根目录下。
2)通过 “rz” 功能,将本地文件上传至服务器端。
3)通过“Unzip 压缩包名”,将文件解压。
4)进入文件目录中,通过“python manage.py createsuperuser ”和“python manage.py migrate ”创建数据库。
5)与本地运行项目一样,通过“python manage.py createsuperuser ”创建超级用户。
6)通过“python manage.py collectstatic” 将所有的静态文件收集到 “Static” 文件下。该步骤必须有,否则网站可以运行但缺少样式文件。
7)通过“python manage.py runserver 8000” 在服务器本地运行项目,如果正常运行,则表明部署成功,如果报错,则将提示问题进行修改,直至运行成功。
5 项目的最终部署
项目测试成功后,需要将服务器与域名进行绑定,这样才可以通過域名访问网站[4]。首先,需要登录购买域名的后台,找到域名解析,并按照提示进行设置。需要注意的是,解析时,主机的IP地址一定要填写外网IP。
为了能通过外网访问项目,需要对Nginx进行相关的配置。
1)通过“cd /etc/nginx/conf.d”进入Nginx的配置文件夹中。
2)通过“vim django.conf”新建一个Nginx的配置文件。
3)编辑文件内容并保存:
4)一切就绪后,需要修改防火墙的配置,开通80端口,让外部能够访问:
通过“vim /etc/sysconfig/iptables” 打开防火墙的配置文件,在文件中,加入
“-A INPUT –p tcp –m state –state NEW –m tcp –dport 80 –j ACCEPT”后保存。
5)修改完成后,通过“service nginx restart ”重启Nginx服务。
6)通过 “nohup python manage.py runserver 8000&” 将项目在后台运行
此时,通过域名访问即可访问到网站。
6 结语
本文对搭建网站在本地测试成功后,在服务器端的部署问题进行了详细的介绍。通过对各类软件的安装防火墙的配置、数据库的创建、代码上传前的修改、代码的服务器端环境部署、域名的解析等步骤的介绍,解决了搭建网站过程中的关键问题。
本文中与Python项目有关的搭建流程,仅适用于Python2版本编辑的Django项目,其余的服务器部署、数据库搭建等在所有项目搭建中都适用。本文介绍的部署过程并没有太多的考虑除防火墙之外的其他保护网站安全的措施,因此,搭建步骤仅适用于学习与研究,并不适用于企业级项目的部署。
参考文献:
[1] 陈勇.基于Django框架的实时课堂投票系统设计与实现[D].大连理工大学,2014.
[2] 杨明.基于CentOS操作系统部署NTP服务[J].电子世界,2018(23).
[3] 曹骏.基于Django的数据收集系统的设计与实现[D].南京大学,2013.
[4] 于涛.基于CentOS平台Tomcat的部署与配置[J].科技咨询,2014(08).
【通联编辑:代影】