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 内置字符串处理函数的使用方法
Jun 11 Python
python计算圆周率pi的方法
Jul 11 Python
Python基于二分查找实现求整数平方根的方法
May 12 Python
200 行python 代码实现 2048 游戏
Jan 12 Python
Python进阶之自定义对象实现切片功能
Jan 07 Python
python实现海螺图片的方法示例
May 12 Python
python实现从wind导入数据
Dec 03 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
Mar 06 Python
python中urllib.request和requests的使用及区别详解
May 05 Python
基于Python的Jenkins的二次开发操作
May 12 Python
python获取linux系统信息的三种方法
Oct 14 Python
python 基于selectors库实现文件上传与下载
Dec 31 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开启安全模式后禁用的函数集合
2011/06/26 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
thinkphp框架下实现登录、注册、找回密码功能
2016/04/06 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
JavaScript类和继承 constructor属性
2010/03/04 Javascript
javascript实例分享---具有立体效果的图片特效
2014/06/08 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
2016/06/25 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
详解Node.js:events事件模块
2016/11/24 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
2018/04/10 Javascript
小程序hover-class点击态效果实现
2019/02/26 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
Layui实现带查询条件的分页
2019/07/27 Javascript
NProgress显示顶部进度条效果及使用详解
2019/09/21 Javascript
Python脚本实现虾米网签到功能
2016/04/12 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
Python基础教程之输入输出和运算符
2020/07/26 Python
Python如何执行系统命令
2020/09/23 Python
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
2015试用期转正工作总结
2014/12/12 职场文书
高三语文复习计划
2015/01/19 职场文书
2015年秋季小班开学寄语
2015/05/27 职场文书
三八节祝酒词
2015/08/11 职场文书
小学体育课教学反思
2016/02/16 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
pandas进行数据输入和输出的方法详解
2022/03/23 Python