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实现rest请求api示例
Apr 22 Python
python类继承用法实例分析
Oct 10 Python
python使用wxPython打开并播放wav文件的方法
Apr 24 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
python调用百度语音REST API
Aug 30 Python
Python爬取商家联系电话以及各种数据的方法
Nov 10 Python
python3实现点餐系统
Jan 24 Python
python selenium登录豆瓣网过程解析
Aug 10 Python
Python生成个性签名图片获取GUI过程解析
Dec 16 Python
python编写实现抽奖器
Sep 10 Python
python抢购软件/插件/脚本附完整源码
Mar 04 Python
Python list去重且保持原顺序不变的方法
Apr 03 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
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
json简单介绍
2008/06/10 Javascript
收集的10个免费的jQuery相册
2011/02/26 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
JS访问DOM节点方法详解
2016/11/29 Javascript
js实现瀑布流效果(自动生成新的内容)
2017/03/16 Javascript
微信小程序 数据遍历的实现
2017/04/05 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
vue头部导航动态点击处理方法
2018/11/02 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
js实现表格数据搜索
2020/08/09 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
python将文本分每两行一组并保存到文件
2018/03/19 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
Python使用Matlab命令过程解析
2020/06/04 Python
Manjaro、pip、conda更换国内源的方法
2020/11/17 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
一套软件测试笔试题
2014/07/25 面试题
应付会计岗位职责
2013/12/12 职场文书
幼儿园三八妇女节活动总结
2015/02/06 职场文书
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL