Django网站的部署

  • 原理
    凡事都要讲个原理嘛。如图所示,就是整个原理啦。详细可以观看哔哩哔哩up主讲的真不错呀!!!
网站用户
网站服务器
socket
uwsgi
Django

图片来源于(https://www.bilibili.com/video/BV1rx411272x)

  • 概览
购买服务器和域名
域名备案
开始部署
远程连接
环境配置
代码上传
完成部署
后期运维
  • 准备工具
    xftp
    xshell

  • 服务器购买
    小编这里用的是阿里云的学生服务器(毕竟是大厂,社区很完善,质量没得问题),价格优美,使用方便(阿里云的云翼计划还是比较良心的)。介绍一下服务器的购买流程。首先登录阿里云,进行实名认证,之后再进行学生认证。

    认证之后便可参加云翼计划,进入之后你看到的样子是这个样子滴。

    然后选择一款服务器类型下单结账就可以了。(当你下单那一刻起你已经再互联网有了一席之地)
    之后你会收到一大堆阿里的邮件。有了自己的服务器之后,点击控制台…
    进入云服务器ECS,在实例中你就能看到自己的公网和私网ip地址。
    点击配置规则。

    设置自己的安全组规则,按照我这个应该就没有太大问题。到此,服务器的购买和设置已经结束。

  • 域名的购买
    首先我们得明确什么是域名,它和url和ip地址的区别。下面放个链接什么是域名。

    明白了什么是域名之后,我们就开始购买域名。进入万网挑选自己的域名,点击购买,之后解析域名,绑定到自己服务器上。(这样说好像不太专业)由于小编已经解析号域名,没法给大家解释了,就放个链接给大家看一下域名解析。
    域名解析好之后,我们需要申请一个免费的ssl证书(这个证书的作用后面再详细解释),ssl证书申请入口

    购买之后,下载并保存相应服务器类型的证书

    小编的系统的Nginx的,所以就下载了nginx的证书。
    下面是最最最重要的域名备案,我们国家所有的网站域名都必须进行备案,这个时间需要20多天,所以购买完域名之后一定尽快备案。备案入口。
    备案完成之后便完成了购买云服务器和域名的全过程。

  • 远程连接

    • 方法一
      进入ECS控制台,点击实例->远程连接


之后会看到登录界面,用户名默认为root,密码为自己设置的密码。(如果没有设置密码,在更多->密码/密匙可自行设置)

点击确定就可以进入服务器系统。

  • 方法二
    利用远程连接工具xshell进行连接。首先打开fshell,点击文件->新建,出现下面这个页面。(主机一栏为你的公网ip地址

    点击确定之后会让你输入你自己设置的密码(也就是登录阿里云远程连接的密码)。之后便可连接。进入服务器之后我们需要对我们现有的环境进行更新。
  • 更新python环境
    首先更新一下我们ubuntu的安装工具:
 sudo apt-get  update


由于ubuntu自带python2.7和3.6(默认python环境是2.7),如果不满足我们生产的需要,我们可以自行更新。

查看python默认环境
 python -V

安装python3.x环境

 sudo apt install python3.8 //安装3.8版本的python

修改ubuntu默认环境

 sudo rm /usr/bin/python //删除原有的软连接sudo ln -s /usr/bin/python3.5 /usr/bin/python    //建立新链接

此时再次查看python默认版本

 python -V

  • 安装Nginx
 sudo apt install nginx

安装完成后,用你的电脑浏览器访问你服务器的公网ip地址,看到如下界面,说明安装成功。

这也说明nginx部分已经和浏览器之间可以正常工作啦!!!(内心是不是很激动,其实我们还差的远呢)

  • 安装虚拟环境
    我们为什么要使用虚拟环境,我们的服务器上不可能就我们一个project,用虚拟环境隔开,防止混乱嘛。
    虚拟环境和Django的关系

    安装虚拟环境
 sudo apt-get pip install virtualenv

下面我们就建立虚拟环境,,ubuntu的默认安装路径是/usr,我们换一个路径

 cd  /var/www/virtualenv your_env_name //建立虚拟环境source your_env_name/bin/activate//激活虚拟环境python -V//查看虚拟环境内的python环境是否和外部一样

到此我们已经搭建了虚拟环境并且激活了它。

  • 项目上传
    服务器的文件夹目录(使用xftp即可看到,登陆方法和xshell一样)
  • 安装项目所需要的库
    在本地环境下,进入到你项目所在的目录,执行命令导出我们项目用到的包
 pip freeze > requiremnets.txt

此时在你本地的项目目录下,就会多出一个requirements.txt文件。记事本打开就能看到我们所用的库。

然后将此文件上传到服务器项目目录下(即和manage.py在同一个目录)
执行命令即可安装所用项目用到的包

 pip install -r requirements.txt

此时运行项目

     python manage.py runserver 0.0.0.0:8000//端口为8000

在浏览器上输入你的公网ip+:8000(端口号),即可访问您的项目。(如果运行失败,请检查自己的8000端口是否放行或仔细检查自己项目是否有错)

  • 安装uwsigi
    概念:Web服务器面向外部世界。它可以直接从文件系统提供文件(HTML,图像,CSS等)。但是,它无法直接与Django应用程序对话;它需要一些东西来运行应用程序,从Web客户端(例如浏览器)获取请求并返回响应。Web服务器网关接口WSGI可以完成此任务。WSGI是Python标准。uWSGI是WSGI实现。在本教程中,我们将设置uWSGI,以便它创建Unix套接字,并通过uwsgi协议将响应提供给Web服务器。最后,我们完整的组件堆栈如下所示:
网站用户
网站服务器
socket
uwsgi
Django

安装uwsgi

 sudo apt-get install python-dev//这一步很重要sudo pip3 install uwsgi

执行uwsgi命令

 uwsgi --http :8000 --module xxx.wsgi//xxx为你含wsgi.py的目录名称

此时浏览器输入你的公网ip+:8000即可访问

  • 配置nginx.conf
    输入
 cd /etc/nginxvim nginx.conf #vim打开nginx配置文件

你会看到

(可能你的和我的不一样,按我这个改就可以了,server_name哪里改成自己的域名,还有的同学可能不会vim,请自行百度)

  • 配置uwsgi.ini
 cd /var/www/vim uwsgi.ini

将这些下面这些代码复制进去

  • 添加uwsgi_params
 cd /var/www/vim uwsgi_params

将这些下面这些代码复制进去

  • 虚拟环境外安装uwsgi
 cd ..deactivate #退出虚拟环境pip install uwsgi
  • 设置开机启动
  1. 复制命令(设置启动参数)
 vim /lib/systemd/system/rc.local.service

2.复制代码(下面代码按ESC再 :wq 回车)

 [Unit]Description=/etc/rc.local CompatibilityDocumentation=man:systemd-rc-local-generator(8)ConditionFileIsExecutable=/etc/rc.localAfter=syslog.target network.target remote-fs.target nss-lookup.target[Service]Type=forkingExecStart=/etc/rc.local startTimeoutSec=0RemainAfterExit=noGuessMainPID=no#这一段原文件没有,需要自己添加[Install]WantedBy=multi-user.targetAlias=rc-local.service

3.复制命令(设置软连接,开机启动回去/etc/……这个目录下去找文件)

 ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/rc.local.service
  1. 复制命令(本身是没有rc.local文件的,后来上帝说要有它,就有了)
 vim /etc/rc.local
  1. 复制命令(添加执行权限)
 sudo chmod +x /etc/rc.local

6.复制代码(要开机启动的脚本、服务或者其他的操作都把命令写入这个脚本)

 #!/bin/bash //这点很重要,一定不要漏掉echo "hello" > /etc/test.log/etc/init.d/webserver startexit 0

7.重启即可。

(文章参考:https://blog.csdn.net/idiot_qi/article/details/86527052)

(未完待续。。。。。。)

Django+nginx+uwsgi+ubuntu18.04网站部署相关推荐

  1. Django + Nginx + Uwsgi + Celery + Rabbitmq 做一个高速响的应网站架构

    Django :渲染页面,站点访问控制,管理网站,网站框架 Nginx:ip访问管理,数据传输控制 Uwsgi:处理链接Diango和Nginx的传输协议,也可以看作是处理客户端数据和Django之间 ...

  2. Django 部署基础【使用 Nginx + uWSGI 的方式来部署来 Django】

    本文主要讲解在 Linux 平台下,使用 Nginx + uWSGI 的方式来部署来 Django,这是目前比较主流的方式.当然你也可以使用 Gunicorn 代替 uWSGI,不过原理都是类似的,弄 ...

  3. django+nginx+uwsgi项目部署文档整理

    django+nginx+uwsgi项目部署文档整理 参考文章:https://blog.csdn.net/qq_42314550/article/details/81805328 一.python安 ...

  4. Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器

    Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器 闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的. 准备工作 我使用的系统是Ubuntu16 ...

  5. Centos7.x快速配置Django+Nginx+Uwsgi服务

    大家好,我是Mr数据杨.今天,将和大家分享如何构建一个完善的服务器环境.折磨了我2天,终于自己调试成功Django+nginx+uwsgi的服务,直接上流程按照这个流程100%能成功,就算你啥也不懂看 ...

  6. ubuntu18.04+GTX2080 部署cuda10.2

    台式机ubuntu18.04+GTX2080 部署cuda开发环境,是个理想的平台.部署不宜,遇到坑,且填且珍惜. 1.安装系统 主流的都是u盘用ultrISO刻录好系统18.04的iso文件安装. ...

  7. Ubuntu18.04安装部署GitLab-ce(HTTP/HTTPS访问,SAML配置)附:docker gitlab-ce部署

    Gitlab推荐配置: 4核 4GB内存 支持500个用户 8核 8GB内存 支持1000个用户 最低配置建议:2核 4G内存 一.安装和配置必要的依赖项 sudo apt update sudo a ...

  8. Python+Django+Nginx+Uwsgi(史上最全步骤)(亲测)

    步骤: Python安装 第一步安装Python (很多购买的服务器linux系统中自带python2和python3,我是直接使用自带的python3.5版本的) 如果系统中没有,则自己安装,如下: ...

  9. 一、ubuntu-django+nginx+uwsgi:ubuntu系统部署django项目,前后端不分离项目

    一.创建用户和文件夹 #创建www文件夹,所有网站项目都放到这里 $ sudo mkdir /www #创建用户组 sudo groupadd www -g 666 #创建用户 $ sudo user ...

最新文章

  1. 巨大冲击!AlphaFold2再登Nature,从业者都懵了:人类98.5%的蛋白质,全都被预测了一遍...
  2. IOS中initWithFrame 和 initWithCoder的区别
  3. 高性能的序列化与反序列化:kryo的简单使用
  4. hive中存Array类型的数据的案例,将字符串的数组格式转成数组的字符串,自定义函数方式处理‘[12,23,23,34]‘字符串格式的数据为array<int>格式的数据。
  5. 税收java_String 类中的 isEmpty() 是判断字符串是否为空的,如果为空返回 true ,不为空返回 false 。 (1.0分)_学小易找答案...
  6. javascript --- 使用语法糖class定义函数
  7. 实现用户操作指引功能
  8. 管理系统中计算机应用 重点章节,11年《管理系统中计算机应用》 第5章 重点要点.doc...
  9. 电动汽车又“火了” 面对频繁自燃事故 蔚来不得不这样做...
  10. 你遇到过最有诗意的句子是什么?
  11. 关于质性分析软件NVivo更新的问题
  12. GPC规范--安全域基础概念
  13. win10电脑连上wifi,后没有网络
  14. java导出doc文档
  15. 使用UDP实现群聊聊天室
  16. setoolkit的钓鱼攻击
  17. 文本分类 之 基于BertForSequenceClassification模型的金融知道 最佳答案推荐
  18. ModuleNotFoundError: No module named ‘torchvision.ops‘
  19. 使用WordPress插件搭建一个商城(一)(小白推荐)
  20. 功能实现_实现指北针(UI图片)效果

热门文章

  1. SpringCloud学习笔记013---Spring的@PostConstruct标签_初始化项目字典
  2. 微信小程序开发学习笔记006--微信小程序组件详解02
  3. java在线支付---05_在线支付_编写用于准备请求数据的Servlet
  4. 1004 C语言设置测试数据个数和测试结束标志
  5. ftk学习记(多窗口篇)
  6. linux java串口读写权限_解决linux下java读取串口之权限问题 No permission to create lock file. | 学步园...
  7. java jolt tuxedo_Java通过Jolt调用Tuxedo服务
  8. mysql 临时表 事务_MySQL学习笔记十:游标/动态SQL/临时表/事务
  9. java url转成pdf_java URL转PDF文件
  10. druid链接mysql-proxy_MySQL读写分离之mysql-proxy