前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Python web项目Django部署

Python web项目Django部署

作者头像
py3study
发布于 2020-01-16 03:17:43
发布于 2020-01-16 03:17:43
2.9K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

Django2.1 + Python3.6 + nginx + uwsgi 部署到Ubuntu18.04

材料准备

  1. 准备一个Django项目
  2. 准备一台Ubuntu18.04的主机

ssh连接到主机(腾讯云)

Mac直接在bash中输入ssh root@你的主机ip Windows请下载ssh远程连接工具例如Putty 腾讯云默认不能以root身份登录,请使用以下方式登录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ ssh -q -l ubuntu -p 22 你的主机ip

配置Python3.6环境

Ubuntu18.04已经默认安装了python3.6.5,所以不需要再安装了,可使用python3命令查看 安装pip3:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo apt install python3-pip

在命令行中输入pip3以验证是否安装成功。 接下来安装virtualenv和virtualenvwrapper:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ pip3 install virtualenv
$ pip3 install virtualenvwrapper

#创建你项目的虚拟环境
$ mkvirtualenv django

# 创建虚拟环境的根目录
$ mkdir $HOME/.virtualenvs
#配置环境变量
$ sudo vim ~/.bashrc

将以下内容放到最后面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=~/.local/bin/virtualenv
source ~/.local/bin/virtualenvwrapper.sh

激活环境变量来生效:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ source ~/.bashrc

安装Nginx

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo apt-get install nginx
#查看是否运行
$ ps aux | grep nginx

安装完成后,在浏览器中输入你的ip地址,如果看到以下界面则说明安装完成!

安装Mysql并配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo apt-get install mysql-server
#查看是否运行
$ ps aux | grep mysql

接下来配置mysql的密码和权限问题

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo mysql_secure_installation

执行后会弹出多个选择界面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.是否安装密码校验插件
VALIDATE PASSWORD PLUGIN can be used to test passwords......
选择n

2.设置密码
Please set the password for root here.
New password:xxxxxx
Re-enter new password:xxxxxx

3.删除匿名用户(生产环境有必要删除)
By default, a MySQL installation has an anonymous user......
选择y

4.是否允许root用户远程登录
Normally, root should only be allowed to connect from
‘localhost’. ......
选择y

5.是否删除“测试”库
By default, MySQL comes with a database named ‘test’ that
anyone can access. This is also intended only for testing,......
选择y

6.是否立即生效
Reloading the privilege tables will ensure that all changes......
选择y

配置完mysql后,把bind-address注释掉,使得本机以外的ip都能连接进来:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

# 把这一行注释上
# bind-address 127.0.0.1

#保存退出!wq

然后登录到mysql中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ mysql -uroot -p
mysql> use mysql
mysql> update user set host=%’ where user=‘root’;
mysql> grant all on *.* to root@'%' identified by '你的密码' with grant option;
flush privileges;

重启mysql服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ service mysql restart

到此,mysql配置完成,可以在你的本地机上用navicat连接到远程服务器测试,方便操作数据库

测试Django项目能否正常运行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#进入虚拟环境
$ workon django
$ cd 你的项目根路径
#同步到数据库
$ python manage.py migrate

$ python manage.py runserver 0.0.0.0:8000

在你的本机上输入服务器ip:8000测试能否访问,如果能访问则接着往下看(此时static静态资源还没有被代理加载不出来)

安装uwsgi和测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#首先进入虚拟环境
$ workon django
$ pip3 install uwsgi

然后先测试一下uwsgi能否拉起django项目

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cd 你的项目根路径
$ uwsgi --http :8000 --module 你的项目名.wsgi

如果能拉起的话,就可以来配置nginx和uwsgi了。

nginx配置和uwsgi配置

创建自己的nginx.conf配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim my_nginx.conf
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {

listen    80;
server_name 你的ip地址或者域名;
charset    utf-8;

client_max_body_size 75M;

#代理django的媒体文件
location /media {
        alias 你的项目路径/media;
}
#代理django的静态文件
location /static {
        alias 你的项目路径/static;
}
#端口转发
location / {
        uwsgi_pass django;
        include    uwsgi_params;
}
}

配置完成后把文件复制到nginx目录下并重启服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cp my_nginx.conf /etc/nginx/conf.d/

$ service nginx restart

然后配置uwsgi.ini

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ vim uwsgi.ini
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[uwsgi]
chdir    = 你的项目根路径
module   = 你的项目名.wsgi
master   = true
processes = 10
socket   = 127.0.0.1:8000
vacuum   = true
virtualenv = /home/ubuntu/.virtualenvs/django
#你的项目的虚拟环境地址

Django项目生产环境配置

首先需要收集静态文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#收集静态文件
$ python manage.py collectstatic

在settings.py中,注释掉STATICFILES_DIRS

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#STATICFILES_DIRS=[
#os.path.join(BASE_DIR,'static')
#]

# 加入 STATIC_ROOT=os.path.join(BASE_DIR,'static')

settings.py中,debug改为True:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEBUG = True
ALLOWED_HOSTS = ['*']

启动项目,部署成功

来到uwsgi.ini目录下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
uwsgi -i uwsgi.ini

在浏览器中输入服务器ip地址

成功访问

部署成功!

以上就是Ubuntu18.04的部署 ** 如果想在Ubuntu16.04部署,大致步骤是一模一样的,只是Ubuntu16.04中预装了python2没有python3,需要自行安装python3和pip3,仅仅多了此步骤而已!**

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
通过nginx+uwsgi部署django应用在ubuntu
1.安装python3-pip -------------sudo apt-get install python3-pip 2.安装虚拟环境和虚拟环境管理包 sudo pip3 install virtualenv (报错的话需要把pip也安装一下) sudo pip3 virtualenvwrapper 在~/.bashrc 添加 export WORKON_HOME=~/Envs source /usr/local/bin/virtualenvwrapper.sh (如果没有virtualenvwrapper.sh就在这目录下创建这个文件) source .bashrc 创建虚拟环境:mkvirtualenv ShangOnline –p /usr/bin/python3 3.虚拟环境当中安装项目所依赖的包(mysqlclient会出一个问题,需要首先安装下面这个包) 我们可以通过 pip freeze > requirements.txt 将windows的虚拟环境安装包相应信息导出来移动到ubuntu pip3 install -r requirements.txt 在安装过程中mysqlclient会报错,按照下面两步走 sudo apt-get install libmysqlclient-dev pip install mysqlclient
用户2337871
2019/07/19
4920
centos7 下通过nginx+uwsgi部署django应用
这里需要注意 一定是直接用nginx命令启动, 不要用systemctl启动nginx不然会有权限问题
零式的天空
2022/03/25
6420
Django+nginx+uwsgi部署教程(centos7+ubuntu16.4)
项目部署教程 在线教育平台项目演示地址 1.1.原理介绍 django  一个基于python的开源web框架 uwsgi  一是一个web服务器,也可以当做中间件 nginx 常用高性能代理服务器 wsgi.py django项目携带的一个wsgi接口文件 nginx Nginx是一个Http和反向代理服务器 什么是反向代理服务器呢? 正向的就是由浏览器主动的想代理服务器发出请求,经代理服务器做出处理后再转给目标服务器 反向的就是不管浏览器同不同意,请求都会经过代理服务器处理再发给目标服务器 这其中
zhang_derek
2018/04/24
1.4K0
Django+nginx+uwsgi部署教程(centos7+ubuntu16.4)
ubuntu Django + Uwsgi + Nginx 的生产环境部署
使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了。比如静态文件处理,安全,效率等等,本篇文章总结归纳了一下基于uwsgi+Nginx下django项目生产环境的部署
py3study
2020/03/03
2.8K0
Centos7+Nginx+uWsgi+Virtualenv(python3)+Django项目上线部署总结
同时,将数据库上传到服务器 本例中,用navicat进行数据库的复制。 此时,可以通过python内置的服务器进行测试
好派笔记
2021/09/16
7781
LNMP 一键安装包部署 Django 项目
作者使用的系统是 ubuntu 20.04,所有步骤请使用 root 用户操作,其他系统也可以参考,可能不成功的地方已标注。
Skykguj
2022/09/09
1.2K0
django 项目部署详细教程 【uwsgi + nginx】
mkvirtualenv --python='/root/anaconda3/envs/MyDjango/bin/python' MyDjango
ruochen
2021/05/12
3.1K0
django 项目部署详细教程 【uwsgi + nginx】
Virtualenv 中 Nginx + uWSGI 部署 Django 实战备忘
第一次接触 uwsgi 和 nginx ,这个环境搭建,踩了太多坑,现在记录下来,让后来者少走弯路。 本来在 Ubuntu14.04 上 搭建好了环境,然后到 CentOS7.4 就遇到了一堆问题。下面把步骤记录下来,中间会记录遇到的问题及解决方案。
星哥玩云
2022/07/13
9300
Virtualenv 中 Nginx + uWSGI 部署 Django 实战备忘
Python部署手记:django, gunicorn, virtualenv, circus, nginx
手记,以免下次配置再入坑。有些细节未做详细描述,如果有问题,可以评论或私信我。 初次尝试搭python服务器,强撸python3,花样作死。过程中出现各种错误,不停google,搜到的时间大部分在2012年-2014年。让我不禁怀疑,真的没人用py搭服务器嘛?怎么比ruby还少。。。 相关技术点:django, gunicorn, virtualenv, circus, nginx 陆续花了一个月时间,先是折腾flask,完了折腾django,再到部署。感觉身体被掏空。说好的人生苦短,要用python呢。相
CDA数据分析师
2018/02/05
1.8K0
Python部署手记:django, gunicorn, virtualenv, circus, nginx
Python Web - Flask笔记10
编写uwsgi配置文件: 在项目的路径下面,创建一个文件叫做yingjoy_uwsgi.ini的文件,然后填写以下代码: [uwsgi] # Django相关的配置 # 必须全部为绝对路径 # 项目的路径 chdir = /srv/yingjoy # Django的wsgi文件 module = yingjoy.wsgi # Python虚拟环境的路径 home = /root/.virtualenvs/django-env-py2 # 进程相关的设置 # 主进程 master = true # 最大数量的工作进程 processes = 10 # socket文件路径,绝对路径 socket = /srv/yingjoy/yingjoy.sock # 设置socket的权限 chmod-socket = 666 # 退出的时候是否清理环境 vacuum = true 然后使用命令uwsgi --ini yingjoy.ini,看下是否还能启动这个项目。 安装nginx:
YingJoy_
2018/09/14
5580
Python Web - Flask笔记10
Centos7 安装python虚拟环境+Django
鉴于virtualenv不便于对虚拟环境集中管理,所以推荐直接使用virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和虚拟环境工作变得便利。它把你所有的虚拟环境都放在一个地方。
py3study
2018/08/03
1.6K0
Python+virtualenv+Django+nginx+uwsgi+centos7部署web应用
给公司写的一个工具平台,先部署到自己的服务器上进行测试,真是困难重重,此文章仅记录自己踩坑过程和搭建教程,不保证你能按照教程成功搭建,但能把坑提前暴露出来,避免大家重复踩坑!
cywhat
2022/11/22
5320
Python+virtualenv+Django+nginx+uwsgi+centos7部署web应用
ubuntu上web项目的部署,:uwsgi, uwsgi + nginx, uwsgi+nginx分布式部署
Ubuntu中pip和pip3区别: pip默认给python2用,pip3默认给Python3使用
武军超
2019/02/25
1.1K0
nginx+uwsgi+flask+su
新建一个项目并写一个简单的flask web 服务器app 目录~/Desktop/flask_deploy/manager.py
py3study
2020/01/16
1.2K0
nginx+uwsgi+flask+su
Nginx+uwsgi部署Django应用
本文目的:在centos7.x服务器上利用nginx和uwsgi部署Django应用
Python中文社区
2018/07/26
1.5K0
Python53前后端分离项目上线
创建Django项目 购买服务器 连接服务器 服务器命令 管理员权限 配置终端 重要 更新系统软件包 安装软件管理包和可能使用的依赖 安装Mysql 安装Redis 安装Python3.6 配置pip源:阿里云不用配置,默认配置阿里源 安装uwsgi 安装虚拟环境 了解:服务器运行测试Django项目 安装Nginx Nginx命令 了解:Nginx & uwsgi 运行Django 路飞项目部署:Nginx
DriverZeng
2022/10/31
3880
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04(最新最详细版)
1.前期准备 1.打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用。 pip freeze >requirements.txt 2.将项目文件夹→右键→添加压缩文件
玩蛇的胖纸
2018/07/04
1.6K0
Django环境搭建和开发初体验
开发中, 使用如上命令安装, 会将包安装到/usr/local/lib/python3.6/dist-packages/下
菜菜cc
2022/11/15
3870
Django环境搭建和开发初体验
python3+django2 开发易语言网络验证(下)
第六步:网络验证服务器端项目上线部署  功夫不负有心人,终于部署成功啦! 前期准备: 项目名:netauth 系统:百度云服务器下的Ubuntu16.4 软件:xshell(无论如何想办法用这个跟服务器实例连上,不要用远程连接干敲,不然你会有砸电脑的冲动)    Navicat(用于上传数据库)    FileZille(通过这个软件,将项目的zip包传到服务器系统下)   apt install unzip unzip netauth.zip rm netauth.zip 1.安装MySQL数据库 1.安
玩蛇的胖纸
2018/07/05
7940
Django 布署6.5
布署 从uwsgi、nginx、静态文件三个方面处理 服务器介绍 服务器:私有服务器、公有服务器 私有服务器:公司自己购买、自己维护,只布署自己的应用,可供公司内部或外网访问 公有服务器:集成好运营环境,销售空间或主机,供其布署自己的应用 私有服务器成本高,需要专业人员维护,适合大公司使用 公有服务器适合初创公司使用,成本低 常用的公有服务器,如阿里云、青云等,可根据需要,按流量收费或按时间收费 此处的服务器是物理上的一台非常高、线路全、运行稳定的机器 服务器环境配置 在本地的虚拟环境中,项目根目录下,执行
Lansonli
2021/10/09
6000
推荐阅读
相关推荐
通过nginx+uwsgi部署django应用在ubuntu
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验