·写在前面:
近期参加比赛需要制作小程序,本人负责后端,所以在学习django的搭建和部署,前期还算顺利,但是在使用华为云(学校申请的代金券用不完了)的云耀云服务器部署的时候,静态文件没法在网页访问到,于是查阅了很多资料,包括各种教程与错误的解决,应该看了几百个博客,所以下面我不单独列举这些资料了,只把我觉得重要的写下来。
·再次强调:
本人的这篇文章不是讲原理的,因为我也不懂,只是把我在学习及部署中的过程与遇到的问题做一个分享。
项目的整体结构:
项目的部署流程:
本人django项目的简介
由于只是单纯先熟悉一下这个流程,本人的django项目只提供了查询数据库并将查询结果显示在网页的功能,并且本人没有使用django自带的数据库,而是使用pymysql库进行数据库的相关操作;其次本人将一些图片放入静态文件夹作为静态文件进行访问。部署项目之前要确保项目在本地能跑起来(教程也挺多的,此处就不再展示)
我在本地配置分发路由时碰到的错误:django 2.2.x及以后版本的路由分发(include)
云服务器
本人使用的是华为云的云耀云,其他的也可以,申请方式在网上有很多教程,本人在这就不做说明了。以本人用的华为云为例,需要注意购买服务器以后,你可以看到两个IP地址,我们使用的是弹性公网IP(如下图);其次需要注意网上有教程说购买以后进行一次密码修改,那个密码就是远程连接的密码。
安装Xshell:远程操作云服务器
由于我们买了云服务器以后没法直接对其进行操作,也是为了方便,我们可以在本地安装一个Xshell,安装教程网上也有很多 ,下面贴一个我参考的博客(插一句,如果你用Xshell连虚拟机,需要确保你虚拟机有ssh):
Xshell7的下载和安装
在服务器安装MySQL
在安装好Xshell连上自己服务器以后,就可以在Xshell的命令行操作服务器了,进而就可以在服务器安装MySQL,这个同样也是有很多教程, 本人只贴几个参考过的,仅供参考,大家可自行选择:
Ubuntu18.04 安装MySQL
Ubuntu安装MySQL和配置远程连接
安装Navicat:远程操作数据库
由于我们在Xshell控制数据库只能使用指令,这样不是很方便,所以安装Navicat进行数据的相关操作,它的功能类似于MySQL自带的workbench,它的安装教程也是很多,还是只贴几个参考过的,大家自行选择:
[新人向]MySQL和Navicat下载、安装及使用详细教程 —>该教程本人仅参考了Navicat部分
Navicat远程连接云服务器的数据库
这部分在前面安装MySQL和Navicat的教程中提到过一些,并且一定需要注意:确保你的服务器打开了3306端口,以及在服务器的安全组里添加了3306端口,贴个参考的教程:
本地navicat连接远程mysql是数据库
在服务器安装Python 3
Linux系统一般自带python 2,但是我使用的Ubuntu 18自带的是python 3.6,本地是python 3.8.3,以防万一我安装了一个python 3.8.3,教程也很多,下面挂几个:
【Ubuntu】Ubuntu 20.04安装Python3.7
Ubuntu 20 编译安装 Python-3.8.6
(个人感觉其实无非就是下载编译用的包、安装源程序压缩包、解压、配置、编译、安装、配置软连接,个人感觉最重要的是将编译用的包安装全、软连接要配置正确)
django项目的修改与上传
# host填步骤2.中提到的服务器的公网IP # user和passwd与Navicat连接数据库时使用的相同 # db为服务器中数据库的数据库名 conn = pymysql.connect(host=你服务器的IP,port=3306,user="root",passwd="521429",db="djProject",charset="utf8")
# SECURITY WARNING: don't run with debug turned on in production! # DEBUG为True,则出现bug时页面会显示错误的具体信息,开发时可以打开便于自己调试,但是部署以后要关闭 DEBUG = False # 中括号内写你的公网IP,表示允许该IP访问,如果填'*'表示允许所有IP访问 ALLOWED_HOSTS = ['你的IP']
# 将项目环境内的所有依赖都导出: pip freeze > requirements.txt # 或者仅导出项目依赖(首先安装:pip install pipreqs): pipreqs ./ --encoding=utf-8
8.4上传本地项目到服务器
此处有很多种方式,例如使用sftp、WinSCP等软件,由于本人的django项目是使用pycharm搭建的,所以直接使用pycharm上传文件到服务器了(这种方法需要使用pycharm专业版,如果没有的话就用其他办法吧,或者安装一个破解版,资源也是很多的,我安装了太久了,忘记怎么安装的了,就不挂教程了),挂几个配置教程:
使用pycharm在本地开发,并实时同步到服务器
如何使用Pycharm 将代码上传到远程服务器上
配置过程注意:connection中的ssh,一开始没有的话可以点右侧三个点添加,然后可以通过Test_connection进行连接测试;其次Root path如果不确定,可以点Autodetect;最后就是Mappings内的路径要设置正确。
以上就是本人部署前的准备工作,有时间会重新买个服务器,把这个流程从头再走一遍,到时候会再写一个更完整的流程,希望这篇文章能给大家带来一些帮助,也希望大佬能不吝赐教,如果文中有问题希望大家可以指证,非常感谢大家。
本人后续uwsgi+nginx的配置过程会尽快写出来。
我在本地配置分发路由时碰到的错误:django 2.2.x及以后版本的路由分发(include)