·写在前面: 近期参加比赛需要制作小程序,本人负责后端,所以在学习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项目的修改与上传
- 8.1 由于在本地搭建项目时使用的数据库是本地数据库,所以要将连接数据库部分的代码修改为连接服务器的数据库,相应的,sql语句操作的数据库、表也要换成服务器中对应的。
conn = pymysql.connect(host=你服务器的IP,port=3306,user="root",passwd="521429",db="djProject",charset="utf8")
DEBUG = False
ALLOWED_HOSTS = ['你的IP']
- 8.3 导出项目的安装依赖requirements.txt,便于后续在服务器安装项目依赖:
由于在服务器内安装的python、pip版本可能与本地项目环境的python、pip版本不同,所以在服务器使用pip安装的项目依赖可能与本地不同,存在不兼容的风险,所以将安装依赖导出,上传到服务器,可直接在服务器根据该文件安装与本地相同的依赖。 本人建议使用第二种,因为如果你本地项目所在的python环境安装了很多库,第一种方式会导出很多项目使用不到的依赖,所以通过第二种方式导出项目依赖即可。
pip freeze > requirements.txt
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)
|