当项目开发完毕后,需要上线。此时,需创建从从uwsgi、nginx、静态文件三个方面处理。(当然,本文只是在Django下的部署,可作参考。)

服务器介绍

  • 服务器:私有服务器、公有服务器
  • 私有服务器:公司自己购买、自己维护,只布署自己的应用,可供公司内部或外网访问
  • 公有服务器:集成好运营环境,销售空间或主机,供其布署自己的应用 私有服务器成本高,需要专业人员维护,适合大公司使用 公有服务器适合初创公司使用,成本低
  • 常用的公有服务器,如阿里云、青云等,可根据需要,按流量收费或按时间收费
  • 此处的服务器是物理上的一台非常高、线路全、运行稳定的机器

服务器环境配置

一般个人配置服务器,是在虚拟机下的Ubuntu下设置的。

安装pip

Ubuntu 默认自带了 python2和python3

默认python代表使用python2,

想使用python3 则需要用python3来进入交互命令行

Ubuntu没有自带pip需要使用

sudo apt install python-pip  安装python2 pip

sudo apt install python3-pip 安装python3 pip

  1. 在本地的虚拟环境中,项目根目录下,执行命令收集所有包

    pip freeze > plist.txt
    
  2. 通过ftp软件将开发好的项目上传到此服务器的某个目录

  3. 安装并创建虚拟环境,如果已有则跳过此步

    #Ubuntu下的虚拟环境配置
    sudo apt install virtualenv
    sudo apt install virtualenvwrapper'''
    默认virtualenvwrapper安装在/usr/local/bin下面,
    需要运行virtualenvwrapper.sh文件才行;所以需要先进行配置一下环境变量:
    '''
    #首先创建虚拟环境管理目录:mkdir $HOME/.local/virtualenvs#进入后,按i进入编译模式,末尾添加:export WORKON_HOME=$HOME/.virtualenvs
    source ~/.local/bin/virtualenvwrapper.sh#随后按esc进入命令模式,再按:进入底部命令行模式
    #输入wq后敲回车,保存并退出。#随后刷新环境变量source ~/.bashrc#1.创建并激活虚拟环境 :
    mkvirtualenv 虚拟环境名称 (默认创建python2.7)#2.创建指定语言版本的虚拟环境
    mkvirtualenv -p python语言版本的路径 虚拟环境的名称mkvirtualenv -p /usr/bin/python3.5 虚拟环境的名称#3、退出虚拟环境 :deactivate#4、继续使用之前的虚拟环境:workon 虚拟环境名称#删除虚拟环境:rmvirtualenv 虚拟环境名称#列出所有环境:workon 或者 lsvirtualenv –b
    
  4. 安装vsftpd

    sudo apt install vsftpd#创建ftp用户
    useradd -m ftpuser#设置密码
    password ftpuser#修改ftpuser用户主目录设置读写权限
    sudo chmod -R 777 /home/ftpuser#设置配置文件 vsftpd.conflocal_enable=YES
    write_enable=YES
    local_umask=022
    pam_service_name=ftp #此处不改会导致530登录失败
    userlist_file=/etc/vsftpd.user_list
    userlist_enable=YES
    userlist_deny=NO
    

    项目上传到Ubuntu/Linux服务器,客户端可以使用可视化软件  FlashFxp

  5. WSGI

    1.python manage.py runserver:这是一款适合开发阶段使用的服务器,不适合运行在真实的生产环境中
    2.在生产环境中使用WSGI
    3.WSGI:Web服务器网关接口,英文为Python Web Server Gateway Interface,缩写为WSGI,是Python应用程序或框 架和Web服务器之间的一种接口,被广泛接受
    4.WSGI没有官方的实现, 因为WSGI更像一个协议,只要遵照这些协议,WSGI应用(Application)都可以在任何服务器 (Server)上运行
    5.命令django-admin startproject会生成一个简单的wsgi.py文件,确定了settings、application对象application对象:在Python模块中使用application对象与应用服务器交互 settings模块:Django需要导入settings模块,这里是应用定义的地方
    6.此处的服务器是一个软件,可以监听网卡端口、遵从网络层传输协议,收发http协议级别的数
  6. uWSGI服务器,nginx服务器及静态文件的设置
    1.uWSGI实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器
    2.uWSGI代码完全用C编写#安装uWSGI
    pip install uwsgi#配置uWSGI,在项目中新建文件uwsgi.ini,编写如下配置[uwsgi]socket=0.0.0.0:7000  #(使用nginx连接时,使用socket)http=0.0.0.0:7000  #(直接做web服务器,使用http)chdir=项目根目录(如:/home/ftpuser/demo2)wsgi-file=项目中wsgi.py文件的目录,相对于项目根目录(如:demo2/wsgi.py)processes=4threads=2master=Truepidfile=uwsgi.piddaemonize=uswgi.log#启动:
    uwsgi --ini uwsgi.ini#停止:
    uwsgi --stop uwsgi.pid#重启:
    uwsgi --reload uwsgi.pid#使用http协议查看网站运行情况,运行正常,但是静态文件无法加载#    启动Uwsgi服务器
    #在uwsgi.ini 同级目录
    uwsgi –ini uwsgi.ini  启动服务'''
    nginx
    使用nginx的作用
    负载均衡:多台服务器轮流处理请求
    反射代理:隐藏真实服务器
    实现构架:客户端请求nginx,再由nginx请求uwsgi,运行django框架下的python代码
    nginx+uwsgi也可以用于其它框架的python web代码,不限于django
    到官网下载nginx压缩文件或通过命令安装
    '''
    sudo apt install nginx#查看版本:
    sudo nginx -v#启动:sudo nginx#停止:
    sudo nginx -s stop#重启:
    sudo nginx -s reload#通过浏览器查看nginx运行结果#指向uwsgi项目:编辑/etc/nginx/nginx.conf文件
    1.在http目录下添加server {listen  0.0.0.0:9000;location / {include uwsgi_params;     uwsgi_pass 0.0.0.0:7000;}}2.在server下添加新的location项,指向uwsgi的ip与端口
    location /static {alias /home/ftpuser/demo2/staticfolder;}#修改完文件后重启uwsgi,nginx服务器
    sudo nginx -s reload
    uwsgi --reload uwsgi.pid
    #但是 在uwsgi中关闭时,需要将文件 uwsgi.pid 中的进程号更改为uwsgi第一个进程的进程号,方便杀死该进程重启uwsgi,如果能正常关闭就不用这样。#查看当前进程
    ps -ef|grep uwsgi
  7. 静态文件

1. 静态文件一直都找不到,现在终于可以解决了
2. 所有的静态文件都会由nginx处理,不会将请求转到uwsgi
3. 配置nginx的静态项,打开nginx/nginx.conf文件,找到server,添加新locationlocation /static {alias /home/ftpdir/test2/staticroot;
}#在服务器上创建目录结构“/home/ftpdir/test2/staticroot”#修改目录权限
sudo chmod 777 /home/ftpdir/test2/staticroot#修改settings.py文件
STATIC_ROOT='/home/ftpdir/test2/staticroot'
STATIC_URL='/static/'#收集所有静态文件到static_root指定目录:python manage.py collectstatic
#重启nginx、uwsgi

最后在Ubuntu系统下重启uwsgi和nginx,然后通过Windows客户端测试该网站,URL为Ubuntu的IP地址加入口路由。

Django项目部署上线相关推荐

  1. 如何将本地python项目部署到服务器上_如何将本地的Django项目部署到云服务器

    如何将本地的Django项目部署到云服务器 开发环境 开发语言: Python 后台框架:Django 前端框架:bootstrap web服务器:nginx wsgi服务器:uwsgi 查看本地项目 ...

  2. Django项目部署在Centos7

    把Django项目部署在Centos7下 先有一个Django项目 一个员工管理系统(ems) 员工管理系统 使用VMware创建一个虚拟的Linux系统 Centos7下安装MySql5.7 详细安 ...

  3. python项目上线_django之项目部署上线

    在开始配置之前,需要将整个项目文件拷贝一份,然后移入你想要的放置的目录中. 一.Django配置 1.settings.py配置 复制全局settings.py配置文件,创建一个副本命名为/pro_s ...

  4. Django项目部署(nginx1.18+uwgsi)

    Django项目部署: 9.1uwsgi 遵循wsgi协议的web服务器 9.1.1uwsgi的安装 pip install uwsgi 9.1.2uwsgi的配置 项目部署时,需要把settings ...

  5. 将Django项目部署到服务器

    将Django项目部署到服务器 效果 准备云服务器 服务器链接xshell 安装宝塔 进入宝塔 添加站点 打包本地django文件上传 宝塔面板安装python管理器 django配置文件 配置数据库 ...

  6. pipenv 虚拟环境 Django项目部署

    pipenv 虚拟环境 Django项目部署 1. 创建服务器 创建root 配置ssh 安装python3.7 pip3 ubuntu参考 https://blog.csdn.net/u014775 ...

  7. Django项目部署到阿里云服务器及后台常驻

    本文将记述如何简单的将自己的Django项目部署到阿里云服务器上. 准备条件: 阿里云服务器:centos 7.5 Nginx(反向代理) Python 3.7.3 Django 2.2+注意:cen ...

  8. python项目如何上线_django项目部署上线(示例代码)

    前言 完善的django项目上线,有很多种上线的方法,比如apache, uwsgi, nginx等.这里只介绍2种,一种是django自带的,另外一种则是nginx + uwsgi完成介绍.这里的系 ...

  9. 阿里云运行python项目_荐个人博客开发-06:Nginx + uWSGI + Django项目部署到阿里云服务器运行...

    版本:Python-3.8.1 + Django-2.2 + 阿里云服务器 Ubuntu-16.04 在正式部署前,需要确认几点: 服务器上已经安装相应的 Python MySQL Nginx uWS ...

最新文章

  1. 解决ThinkPHP关闭调试模式时报错的问题汇总
  2. matlab面向对象排序,matlab面向对象编程基础
  3. Python的scrapy框架POST方式爬虫时碰见__VIEWSTATE和__EVENTVALIDATION的参数处理
  4. Loj#2769-「ROI 2017 Day 1」前往大都会【最短路树,斜率优化】
  5. Ubuntu 16.04 安装mysql5.7
  6. React开发(228):ant design table根据宽度自动忽略
  7. shell 进入hadoop_Hadoop Shell命令
  8. MySQL的字符集和校对规则,你都会了吗?
  9. linux网易云打不开的问题
  10. asa 防火墙拦截了https_思科ASA防火墙下抓包方法
  11. 数据结构--创建并输出二叉树的c语言实现(超详细注释/实验报告)
  12. ipad 视频播放器的渐变播放效果
  13. 光猫路由器与交换机的连接方式
  14. python海伦公式计算三角形面积
  15. maven 打包把依赖jar打进去
  16. 【JavaScript实训】-- 限时秒杀
  17. POST 还是 GET?
  18. 如何将磁盘从GPT格式转换成MBR
  19. 死了都要try!(转)
  20. (转)爱剪辑学习记录_2.快速添加、截取、删除视频片段

热门文章

  1. Tomcat xml文件的部署失败问题解决
  2. 在站点新建lxwm的html文件,小溪空间
  3. 深度学习最全面试题总结(一)
  4. B站笔试真题之[编程题]简单表达式计算
  5. 台式电脑硬盘坏了怎么办?硬盘数据怎么恢复回来
  6. C语言常用math函数
  7. mmkv跨进程,闭关60天学懂NDK+Flutter,好文推荐
  8. Vue.js----入门 (3)----v-bind、v-on、v-model等指令以及其语法糖的用法
  9. 利用Python开发智能阅卷系统(附源代码)
  10. Linux网络配置nmtui激活网卡失败