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中的XML 工具
Apr 13 Python
Python线程的两种编程方式
Apr 14 Python
python清除字符串前后空格函数的方法
Oct 21 Python
Python使用pyshp库读取shapefile信息的方法
Dec 29 Python
python实现远程控制电脑
May 23 Python
python实现身份证实名认证的方法实例
Nov 08 Python
pytorch标签转onehot形式实例
Jan 02 Python
python实现126邮箱发送邮件
May 20 Python
Python实现简单的猜单词小游戏
Oct 28 Python
Python就将所有的英文单词首字母变成大写
Feb 12 Python
如何用python反转图片,视频
Apr 24 Python
Python实现文字pdf转换图片pdf效果
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设计模式之命令模式使用示例
2014/03/02 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
js TextArea的选中区域处理
2010/12/28 Javascript
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
JavaScript DOM 对象深入了解
2016/07/20 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
Websocket协议详解及简单实例代码
2016/12/12 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
js module大战
2019/04/19 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
python 字典访问的三种方法小结
2019/12/05 Python
Django实现将views.py中的数据传递到前端html页面,并展示
2020/03/16 Python
Python中的特殊方法以及应用详解
2020/09/20 Python
python不同版本的_new_不同点总结
2020/12/09 Python
Python爬虫入门教程02之笔趣阁小说爬取
2021/01/24 Python
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
上海天奕面试题笔试题
2015/04/19 面试题
北大青鸟学生求职信
2013/09/24 职场文书
两年的个人工作自我评价
2014/01/10 职场文书
《长城》教学反思
2014/02/14 职场文书
市政工程技术专业自荐书
2014/07/06 职场文书
2015元旦标语横幅
2014/12/09 职场文书
学生检讨书怎么写
2015/05/07 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
MySQL 全文索引使用指南
2021/05/25 MySQL