Nginx教程

【django云服务器部署流程(1)】django+uwsgi+nginx:准备工作

本文主要是介绍【django云服务器部署流程(1)】django+uwsgi+nginx:准备工作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

·写在前面:
近期参加比赛需要制作小程序,本人负责后端,所以在学习django的搭建和部署,前期还算顺利,但是在使用华为云(学校申请的代金券用不完了)的云耀云服务器部署的时候,静态文件没法在网页访问到,于是查阅了很多资料,包括各种教程与错误的解决,应该看了几百个博客,所以下面我不单独列举这些资料了,只把我觉得重要的写下来。
·再次强调:
本人的这篇文章不是讲原理的,因为我也不懂,只是把我在学习及部署中的过程与遇到的问题做一个分享。

项目的整体结构:
在这里插入图片描述
项目的部署流程:
准备工作

部署前的准备工作

  1. 本人django项目的简介
    由于只是单纯先熟悉一下这个流程,本人的django项目只提供了查询数据库并将查询结果显示在网页的功能,并且本人没有使用django自带的数据库,而是使用pymysql库进行数据库的相关操作;其次本人将一些图片放入静态文件夹作为静态文件进行访问。部署项目之前要确保项目在本地能跑起来(教程也挺多的,此处就不再展示)
    我在本地配置分发路由时碰到的错误:django 2.2.x及以后版本的路由分发(include)

  2. 云服务器
    本人使用的是华为云的云耀云,其他的也可以,申请方式在网上有很多教程,本人在这就不做说明了。以本人用的华为云为例,需要注意购买服务器以后,你可以看到两个IP地址,我们使用的是弹性公网IP(如下图);其次需要注意网上有教程说购买以后进行一次密码修改,那个密码就是远程连接的密码。
    在这里插入图片描述

  3. 安装Xshell:远程操作云服务器
    由于我们买了云服务器以后没法直接对其进行操作,也是为了方便,我们可以在本地安装一个Xshell,安装教程网上也有很多 ,下面贴一个我参考的博客(插一句,如果你用Xshell连虚拟机,需要确保你虚拟机有ssh):
    Xshell7的下载和安装

  4. 在服务器安装MySQL
    在安装好Xshell连上自己服务器以后,就可以在Xshell的命令行操作服务器了,进而就可以在服务器安装MySQL,这个同样也是有很多教程, 本人只贴几个参考过的,仅供参考,大家可自行选择:
    Ubuntu18.04 安装MySQL
    Ubuntu安装MySQL和配置远程连接

  5. 安装Navicat:远程操作数据库
    由于我们在Xshell控制数据库只能使用指令,这样不是很方便,所以安装Navicat进行数据的相关操作,它的功能类似于MySQL自带的workbench,它的安装教程也是很多,还是只贴几个参考过的,大家自行选择:
    [新人向]MySQL和Navicat下载、安装及使用详细教程 —>该教程本人仅参考了Navicat部分

  6. Navicat远程连接云服务器的数据库
    这部分在前面安装MySQL和Navicat的教程中提到过一些,并且一定需要注意:确保你的服务器打开了3306端口,以及在服务器的安全组里添加了3306端口,贴个参考的教程:
    本地navicat连接远程mysql是数据库

  7. 在服务器安装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
    (个人感觉其实无非就是下载编译用的包、安装源程序压缩包、解压、配置、编译、安装、配置软连接,个人感觉最重要的是将编译用的包安装全、软连接要配置正确

  8. django项目的修改与上传

  • 8.1 由于在本地搭建项目时使用的数据库是本地数据库,所以要将连接数据库部分的代码修改为连接服务器的数据库,相应的,sql语句操作的数据库、表也要换成服务器中对应的。
# host填步骤2.中提到的服务器的公网IP
# user和passwd与Navicat连接数据库时使用的相同
# db为服务器中数据库的数据库名
conn = pymysql.connect(host=你服务器的IP,port=3306,user="root",passwd="521429",db="djProject",charset="utf8")
  • 8.2 修改项目的settings.py文件:
# SECURITY WARNING: don't run with debug turned on in production!
# DEBUG为True,则出现bug时页面会显示错误的具体信息,开发时可以打开便于自己调试,但是部署以后要关闭
DEBUG = False
# 中括号内写你的公网IP,表示允许该IP访问,如果填'*'表示允许所有IP访问
ALLOWED_HOSTS = ['你的IP']
  • 8.3 导出项目的安装依赖requirements.txt,便于后续在服务器安装项目依赖:
    由于在服务器内安装的python、pip版本可能与本地项目环境的python、pip版本不同,所以在服务器使用pip安装的项目依赖可能与本地不同,存在不兼容的风险,所以将安装依赖导出,上传到服务器,可直接在服务器根据该文件安装与本地相同的依赖。
    本人建议使用第二种,因为如果你本地项目所在的python环境安装了很多库,第一种方式会导出很多项目使用不到的依赖,所以通过第二种方式导出项目依赖即可。
# 将项目环境内的所有依赖都导出:
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)

这篇关于【django云服务器部署流程(1)】django+uwsgi+nginx:准备工作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!