django2+uwsgi+nginx上线部署到服务器Ubuntu16.04(最新最详细版)
1.前期准备
1.打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用。
pip freeze >requirements.txt

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


3.准备软件
1.xshell(用于远程操作服务器)
2.FileZilla(用于从客户端将项目包上传到服务器)
3.Navicat 12 (用于同步数据库)
4.环境
云服务器/云主机:京东云
(云服务还是要选大厂的,我也试过一些比较小的厂的云服务,不说是哪家了,哇,简直是坑啊,各种报错各种什么都安不上。友情提醒,云服务还是要在腾讯云、阿里云、百度云、金山云、京东云、网易云这些里面选用吧。国外的像亚马逊啊,虽然云计算的技术上可能领先于国内云,价格也更加公道,但是,有些事,大家应该懂得,所以,贵是贵了点,还是选国内的吧。)
系统:Ubuntu16.04 64位
2.基本配置
1.使用xshell链接云服务器/云主机系统(云服务器和云主机在这里概念差不多可以等同,后面都叫云服务器)
1.打开xshell→【文件】→【新建】,输入你云服务器的公网ip

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

3.输入登录用户名:root

4.输入登录密码

5.连接成功

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

2.切换用户ubuntu

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用户
#vim编辑器常用命令
#英文输入法模式下,i键进入编辑模式,可以通过上下左右键移动光标,进行编辑内容
#英文输入法模式下,Esc键 退出编辑模式,输入:wq 保存并退出,输入q不保存退出,输入q!强行退出
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 '' WITH GRANT OPTION; flush privileges; quit
#用Navicat链接服务器数据库,如果报错:
fuser -k 3306/tcp
#将客户端数据库通过数据传输,传输到服务器
3.使用Navicat 12 同步数据库
1.创立连接

2.建立本地连接

3.建立服务器链接

4.传输数据库


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

5.查看一下数据库是否上传成功
mysql -u root -p
show databases;#查看所有数据库
quit #退出数据库

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包


2.解压项目zip包
sudo apt install unzip
unzip xueyiwang.zip

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要升级,如果版本过时,会提示用户更新命令的

2.修改settings.py
cd xueyiwang
vim settings.py

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


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


7.虚拟环境中安装uwsgi
1.安装
cd ~
pip3 install uwsgi

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


8.安装配置nginx
1.安装nginx
cd ..
sudo apt install nginx -y

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

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

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
}
}

5.建立软链接
sudo ln -s /home/ubuntu/xueyiwang/xueyiwang_nginx.conf /etc/nginx/sites-enabled/

6.手机静态文件
#cd 到项目目录下执行
python manage.py collectstatic
#yes


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


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

9.联系方式
跟着一步一步做下来,应该都可以部署项目成功啦吧?如果遇到了什么报错,可以加我微信来问我^_^。
赞赏5元

我的微信

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04(最新最详细版)的更多相关文章
- django项目在uwsgi+nginx上部署遇到的坑
本文来自网易云社区 作者:王超 问题背景 django框架提供了一个开发调试使用的WSGIServer, 使用这个服务器可以很方便的开发web应用.但是 正式环境下却不建议使用这个服务器, 其性能.安 ...
- Win7 U盘安装Ubuntu16.04 双系统详细教程
Win7 U盘安装Ubuntu16.04 双系统详细教程 安装主要分为以下几步: 一. 下载Ubuntu 16.04镜像软件: 二. 制作U盘启动盘使用ultraISO: 三. 安装Ubuntu系统: ...
- 写给新手看的Flask+uwsgi+Nginx+Ubuntu部署教程
学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...
- Flask+uwsgi+Nginx+Ubuntu部署
学了一段时间flask,可是一直没有做过部署, 于是想着怎么部署呢, 想想,先吧服务给搞通吧,于是呢 就先想着去吧服务给搞起来,这里选择的是Flask+uwsgi+Nginx+Ubuntu, Pyth ...
- uWSGI + Nginx + Django 部署
1. uWSGI 服务器 Django 默认使用 WSGI(Python Web Server Gateway ) 作为 Web 服务器,一般仅用来作为测试使用,实际生产环境而是使用 uWSGI 和 ...
- Flask+uwsgi+Nginx+Ubuntu部署教程
学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...
- Django部署,Django+uWSGI+nginx+Centos部署
说明:系统是在windows上开发的,使用django1.11.4+python3.6.3开发,需要部署在centos6.4服务器上. 第一步:在Centos6.4上安装Python3.6.2 安装请 ...
- 前端vue开发中的跨域问题解决,以及nginx上线部署。(vue devServer与nginx)
前言 最近做的一个项目中使用了vue+springboot的前后端分离模式 在前端开发的的时候,使用vue cli3的devServer来解决跨域问题 上线部署则是用的nginx反向代理至后台服务所开 ...
- django uWSGI nginx搭建一个web服务器 确定可用
网上的找了很多篇 不知道为什么不行,于是自己搭建了一个可用的Web 大家可按步骤尝试 总结下基于uwsgi+Nginx下django项目生产环境的部署 准备条件: .确保有一个能够用runserver ...
随机推荐
- django之路由层
一 Django中路由的作用 二 简单的路由配置 三 有名分组 四 路由分发 五 反向解析 六 名称空间 七 django2.0版的path 一 Django中路由的作用 URL配置(URLconf) ...
- UDP反射DDoS攻击原理和防范
东南大学:UDP反射DDoS攻击原理和防范 2015-04-17 中国教育网络 李刚 丁伟 反射攻击的防范措施 上述协议安装后由于有关服务默认处于开启状态,是其被利用的一个重要因素.因此,防范可以从配 ...
- Android SDK Tools 24.3.2 Build脚本Bug
如下图版本: 在%Android_home%\tools\ant\build.xml中, 在483行附近, 少了aidl,aapt,dx, zipalign四个变量的声明. 加上就OK了. <p ...
- Vue之动态绑定CSS样式
demo.html <!DOCTYPE html> <html lang="en" xmlns:v-bind="http://www.w3.org/19 ...
- How to flash Havoc on enchilada
update fastboot and adb fastboot oem unlock adb debug enchilada reboot to fastboot fastboot devices ...
- 使用Spring的@Scheduled实现定时任务参数详解
Spring配置文件xmlns加入 xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocati ...
- Codevs1541[USACO]围墙涂色
离散加差分有点涨姿势啊 对我这种菜鸡而言还是第一次看到啊qwq 题面 大意 :n次,每次覆盖一个区间,求覆盖过m次的节点个数 sol:大概是差分的思想加上离散,就可以解决普通差分无法解决的问题了,比如 ...
- hashlib 模块用来进行hash
hashlib的基本概述: python中的 hashlib 模块用来进行hash 或者md5加密,而且这种加密是不可逆的,所以这种算法又被称为摘要算法, 其支持Opennssl库提供的所有算法,包括 ...
- power designer 一般常用快捷键(转)
一般快捷键 快捷键 说明 F4 打开检查模型窗口,检查模型 F5 如果图窗口内的图改变过大小,恢复为原有大小即正常大小 F6 放大图窗口内的图 F7 缩小图窗口内的图 F8 在图窗口内中查看全部图内容 ...
- MT【303】估计
(2016浙江填空压轴题)已知实数$a,b,c$则 ( )A.若$|a^2+b+c|+|a+b^2+c|\le1,$则$a^2+b^2+c^2<100$B.若$|a^2+b+c|+|a+ ...