django2+uwsgi+nginx上线部署到服务器Ubuntu16.04


Posted in Python onJune 26, 2018

1.前期准备

1.打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用。

pip freeze >requirements.txt

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

2.将项目文件夹→右键→添加压缩文件,压缩为zip包

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

3.准备软件

1.xshell(用于远程操作服务器)2.FileZilla(用于从客户端将项目包上传到服务器)3.Navicat 12 (用于同步数据库)

4.环境云

服务器/云主机:京东云

(云服务还是要选大厂的,我也试过一些比较小的厂的云服务,不说是哪家了,哇,简直是坑啊,各种报错各种什么都安不上。友情提醒,云服务还是要在腾讯云、阿里云、百度云、金山云、京东云、网易云这些里面选用吧。国外的像亚马逊啊,虽然云计算的技术上可能领先于国内云,价格也更加公道,但是,有些事,大家应该懂得,所以,贵是贵了点,还是选国内的吧。)

系统:Ubuntu16.04 64位

2.基本配置

1.使用xshell链接云服务器/云主机系统(云服务器和云主机在这里概念差不多可以等同,后面都叫云服务器)1.打开xshell→【文件】→【新建】,输入你云服务器的公网ip

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

2.选择刚刚建立的会话,然后点【连接】

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

3.输入登录用户名:root

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

4.输入登录密码

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

5.连接成功

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

2.新建用户ubuntu

1.执行命令

adduser ubuntu
#设置密码
#确认密码
#设置姓
#设置名
#设置电话
#设置家庭电话
#除了密码以为,其他的这些信息用处不大
y+回车
cd /home #切换到家目录下
ls #查看家目录下的目录,可以看到ubuntu的目录已经建立

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

2.切换用户ubuntu

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

3.给普通用户ubuntu添加权限

#切换回root用户
su root
#输入root登录密码
chmod u+w /etc/sudoers #给sudoers增加写权利
vim /etc/sudoers#编辑sudoers,在找到这行 root ALL=(ALL) ALL,在他下面添加ubuntu   ALL=(ALL)   NOPASSWD: ALL
chmod u-w /etc/sudoers#取消sudoers的写权利
su ubuntu #切换会ubuntu用户

3.同步数据库

1.安装mysql数据库

sudo apt-get install mysql-server -y
#设置密码:(不显示,请将密码设置的与客户端上数据库密码一致,方便使用)
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev -y

2.配置远程连接权限

su root #切换root用户
#root 登录密码
vim /etc/mysql/mysql.conf.d/mysqld.cnf 
# 英文输入环境下,敲 i 键,进入插入模式
#上下左右键移动光标,注释掉 bind-address = 127.0.0.1
#英文输入环境下,敲Esc键,输入:wq 保存退出
mysql -u root -p
#输入密码(不显示),登录mysql

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

flush privileges;

quit
#用Navicat链接服务器数据库,如果报错:
fuser -k 3306/tcp
#将客户端数据库通过数据传输,传输到服务器

3.使用Navicat 12 同步数据库

1.创立连接

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

2.建立本地连接

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

3.建立服务器链接

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

4.传输数据库

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

然后点击【开始】等待传完100%

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

5.查看一下数据库是否上传成功

mysql -u root -p
show databases;#查看所有数据库
quit #退出数据库

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

4.取消远程连接数据库权限

vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 英文输入环境下,敲 i 键,进入插入模式
#上下左右键移动光标,去掉 bind-address = 127.0.0.1这行的注释
#英文输入环境下,敲Esc键,输入:wq 保存退出

4.上传项目

su ubuntu #切换回ubuntu用户

1.使用FileZilla上传项目zip包

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

2.解压项目zip包

sudo apt install unzip
unzip xueyiwang.zip

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

5.安装Python3.6

sudo add-apt-repository ppa:fkrull/deadsnakes #然后会提示你敲击回车键
#回车
sudo apt-get install python-software-properties -y
sudo apt-get update
sudo apt-get install python3.6-dev python3.6-venv -y

sudo apt install python-pip -y

6.配置虚拟环境

1.安装依赖包

python3.6 -m venv env36
#在当前目录下,创建一个python3.6的虚拟环境,取名为env36,目前自带虚拟环境只支持到3.6.2

. env36/bin/activate
#进入虚拟环境
#退出虚拟环境 deactivate


cd xueyiwang
pip3 install -r requirments.txt
#安装相关依赖包,其中requirments.txt,是在客户端时,通过pip freeze > requirments.txt获得
#这个过程也许需要多等一会,比较low一点的云服务就慢一些,亲身体验,bat里,百度的最慢
#有可能pip要升级,如果版本过时,会提示用户更新命令的

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

2.修改settings.py

cd xueyiwang
vim settings.py

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

#进入settings.py文件中,点击i键,变为编辑模式
#通过上下左右键移动光标
ALLOWED_HOSTS = ['公网ip']
#在最底追加
STATIC_ROOT=os.path.join(BASE_DIR,"static/")
#然后敲Esc键,输入:wq 保存退出

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

3.测试运行项目

cd ..
python manage.py runserver 0.0.0.0:8000 
#浏览器访问:公网ip+8000 
#发现啥都有啦!
#ctrl+c退出项目运行状态

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

7.虚拟环境中安装uwsgi

1.安装

cd ~
pip3 install uwsgi

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

2.检测是否安装成功

cd xueyiwang
uwsgi --http :8000 --module xueyiwang.wsgi

#通过uwsgi启动项目,这一步必须在项目目录下操作执行
#ctrl+C键关闭项目服务状态
#fuser -k 8000/tcp
#关闭8000端口占用
#浏览器访问公网ip+8000 仍然可以正常访问,证明uwsgi安装成功

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

8.安装配置nginx

1.安装nginx

cd ..
sudo apt install nginx -y

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

2.配置uwsgi与nginx连接

cd xueyiwang
cp /etc/nginx/uwsgi_params .  #在项目目录下执行,注意后面这个点儿别落下 
#回到~目录下
cd ..

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

3.配置uwsgi.ini

vim uwsgi.ini
#进入uwsgi.ini,然后在英文输入下敲i键,进入插入模式,将以下内容填充进去(通过敲i键进入插入模式这一步不能省略,不然粘贴进去的内容会部分丢失)
#然后在英文输入下,Esc键,然后输入冒号wq+回车,保存退出。
[uwsgi]
chdir=/home/ubuntu/xueyiwang
module=xueyiwang.wsgi:application
home=/home/ubuntu/env36
master=true
processes=10
socket=:8001
chmod-socket = 666
vacuum=true

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

4.配置nginx

#cd 到项目目录下
vim xueyiwang_nginx.conf
#新建进入了nginx.conf文件
#在英文输入法下,敲i键,进入可插入模式
#粘贴以下内容
upstream django {
  # server unix:/root/xueyiwang/xueyiwang.sock; # for a file socket
  server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
 
# configuration of the server
server {
  # the port your site will be served on
  listen   8000;
  # the domain name it will serve for
  server_name .example.com; # substitute your machine's IP address or FQDN
  charset   utf-8;
 
  # max upload size
  client_max_body_size 75M;  # adjust to taste
 
  # Django media
  location /media {
    alias /home/ubuntu/xueyiwang/media; # your Django project's media files - amend as required
  }
 
  location /static {
    alias /home/ubuntu/xueyiwang/static; # your Django project's static files - amend as required
  }
 
  # Finally, send all non-media requests to the Django server.
  location / {
    uwsgi_pass django;
    include  /home/ubuntu/xueyiwang/uwsgi_params; # the uwsgi_params file you installed
  }
}

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

5.建立软链接

sudo ln -s /home/ubuntu/xueyiwang/xueyiwang_nginx.conf /etc/nginx/sites-enabled/

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

6.手机静态文件

#cd 到项目目录下执行
python manage.py collectstatic
#yes

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

7.最后测试

#修改settings.py中
DEBUG = False
cd ~
sudo service nginx restart
#重启nginx
#启动uwsgi
uwsgi --ini uwsgi.ini
#浏览器访问http://公网ip:8000

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

#浏览器访问公网ip+:8000 可以看到,能够正常访问,静态文件和媒体文件都在,说明nginx代理正常。

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python数据结构与算法之图结构(Graph)实例分析
Sep 05 Python
python+django+sql学生信息管理后台开发
Jan 11 Python
python如何实现反向迭代
Mar 20 Python
Python的numpy库中将矩阵转换为列表等函数的方法
Apr 04 Python
Python数据持久化shelve模块用法分析
Jun 29 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
kali中python版本的切换方法
Jul 11 Python
Python使用Slider组件实现调整曲线参数功能示例
Sep 06 Python
分享一个pycharm专业版安装的永久使用方法
Sep 24 Python
tensorflow常用函数API介绍
Apr 19 Python
基于Python的Jenkins的二次开发操作
May 12 Python
linux中nohup和后台运行进程查看及终止
Jun 24 Python
pycharm下查看python的变量类型和变量内容的方法
Jun 26 #Python
Python自然语言处理 NLTK 库用法入门教程【经典】
Jun 26 #Python
python实现俄罗斯方块游戏
Mar 25 #Python
python中的变量如何开辟内存
Jun 26 #Python
pyQt4实现俄罗斯方块游戏
Jun 26 #Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
Jun 26 #Python
python实现俄罗斯方块
Jun 26 #Python
You might like
使用phpstorm和xdebug实现远程调试的方法
2015/12/29 PHP
PHP如何将XML转成数组
2016/04/04 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
js日期相关函数总结分享
2013/10/15 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
node.js学习总结之调式代码的方法
2014/06/25 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
详解JS: reduce方法实现 webpack多文件入口
2017/02/14 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
[06:06]2018DOTA2亚洲邀请赛主赛事第四日战况回顾 全明星赛欢乐上演
2018/04/07 DOTA
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
Python冒泡排序注意要点实例详解
2016/09/09 Python
基于Django的python验证码(实例讲解)
2017/10/23 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
基于Python List的赋值方法
2018/06/23 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
jupyter notebook 多行输出实例
2020/04/09 Python
基于python实现操作redis及消息队列
2020/08/27 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
应届生骨科医生求职信
2013/10/31 职场文书
保卫科工作岗位职责
2014/03/01 职场文书
如何写自我鉴定
2014/03/19 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
Python如何加载模型并查看网络
2022/07/15 Python