ubuntu18+uwsgi+nginx部署django项目
更新系统软件源
sudo apt-get update
pip3安装
sudo apt install python3-pip
安装virtualenvwrapper
pip3 install virtualenvwrapper
修改.bashrc,最后面添加以下代码:
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
重新加载配置
source ~/.bashrc
创建虚拟环境
mkvirtualenv 虚拟环境名
进入虚拟环境
workon 虚拟环境名
退出虚拟环境
deactivate
安装mysql
sudo apt-get install mysql-server
安装mysql驱动 sudo apt-get install libmysqlclient-dev
设置mysql允许远程访问,方便使用navicat导入数据.首先编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉bind-address = 127.0.0.1: #允许远程连接
进入mysql,修改root密码
mysql>set password for root@localhost = password('123');
创建普通用户
create user 'username'@'%' IDENTIFIED BY 'password';
给普通用户赋权
grant all on *.* to username@'%';
刷新
flush privileges;
退出
exit
重启mysql
service mysql restart
安装redis
sudo apt-get install redis-server
修改redis配置
使用redis的访问账号
sudo vi /etc/redis/redis.conf
#取消注释requirepass
requirepass 密码
允许远程访问
#注释bind
# bind 127.0.0.1
重启redis
sudo /etc/init.d/redis-server restart
桌面创建新目录Project
mkdir Project
在项目中创建项目依赖包文件
pip freeze > package.txt
上传项目到Project,或者进入Project使用git克隆
scp -r 本地项目目录 root@服务器IP:/root/Project
git clone 项目地址
安装依赖包
pip install -r package.txt
进入项目修改settings文件
将mysql账号密码修改成服务器的
修改ALLOWED_HOSTS = ['*']
# 测试之前先将项目用到数据导入数据库,不然肯定报错
测试能否正常运行,然后浏览器访问服务器地址
python3 manage.py runserver 0.0.0.0:80
安装uwsgi
sudo pip3 install uwsgi
在manage.py同级目录下创建uwsgi.ini文件
vim uwsgi.ini
编辑内容如下
[uwsgi] #如果单独使用uwsgi来部署Django项目时,就用这一行。 http=0.0.0.0:80 #如果使用nginx+uwsgi来部署Django项目时,就用这行。 # socket=127.0.0.1:8080 # 和nginx连接的端口 #你项目的完整路径。 chdir=/root/Project/MyProject #给socket文件赋权限,这里不用管。 # chmod-socket=664 #启用主线程。 master=true processes=4 threads=2 #指定日志文件(会自动创建)。这个很重要,如果uwsgi出现错误,可以通过日志文件来查错。 logto=uwsgi.log #指定进程号文件(会自动创建)。这个也很重要,如果要重启和关闭uwsgi,则需要这个文件,里面记录了进程号。 pidfile=uwsgi.pid #指定wsgi文件。在与settings.py同级目录中会有一个wsgi.py文件。 module=MyProject.wsgi:application
保存退出后启动uwsgi,如果报错请查看日志文件
uwsgi --ini uwsgi.ini
安装nginx
sudo apt-get nginx
进入/etc/nginx/备份nginx.conf
sudo cp nginx.conf nginx.conf.bak
删除nginx.conf,重新创建nginx.conf,内容如下:
events { worker_connections 1024; # 不用管 } http{ server { listen 80; #这个端口用来监听浏览器的请求。 server_name 0.0.0.0; # 不用管,如果有域名可以填上域名。 charset UTF-8; #日志文件。如果nginx出现问题,都可以通过日志文件来查错。 access_log /var/log/nginx/MyProject_access.log; error_log /var/log/nginx/MyProject_error.log; client_max_body_size 75M; location / { include uwsgi_params; # 使用uwsgi服务器。 uwsgi_pass 127.0.0.1:8080; # 把浏览器发来的请求转发到8001端口,而uwsgi也正在监听8001端口,所以就实现了nginx与uwsgi的通信。 uwsgi_read_timeout 30; #链接超时时间 } location /static/{ # 处理静态文件,处理链接是以/static/开头的请求。 alias /usr/DjangoProject/MyProject/static/; # 项目静态文件的绝对路径。 } } }
最后
修改uwsgi.ini文件,把http=0.0.0.0:80注释掉,使用socket=127.0.0.1:8080
输入:uwsgi -d --ini uwsgi.ini # 启动uwsgi服务器。-d表示在后台运行。这样就不会占用当前窗口了。
输入:/etc/init.d/nginx start # 启动nginx
浏览器访问
ubuntu18+uwsgi+nginx部署django项目的更多相关文章
- 使用uWSGI+nginx部署Django项目
最近使用django写了一些项目,不过部署到服务器上碰到一些问题,还有静态文件什么的一堆问题,这里总结一下碰到的问题和解决方案,总体思路是按照官方文档走的. 原文地址:http://uwsgi-doc ...
- uwsgi+nginx部署django项目
1. 概念解析(wsgi协议,uwsgi协议,uWSGI) 参考:https://www.cnblogs.com/wspblog/p/8575101.html 1.1 现实世界的web请求: 1.2 ...
- Ubuntu+Django+uWSGI+Nginx部署Django项目
安装uWSGI,pip依据自己要使用的python版本自行选择,python2.x版本使用pip进行安装,python3.x版本使用pip3进行安装 pip install uwsgi 配置uWSGI ...
- 基于腾讯云CentOS7.4+MySQL5.7+Python3+uwsgi+nginx的Django项目部署
准备知识 1.django一个基于python的开源web框架,请确保自己熟悉它的框架目录结构. 2.uWSGI一个基于自有的uwsgi协议.wsgi协议和http服务协议的web网关 3.nginx ...
- uwsgi+anaconda+nginx部署django项目(ubuntu下)
conda 环境不必多说: conda(或source) activate test 进入test虚拟环境 接下来安装uwsgi: pip install uwsgi 在conda环境下大概率安装 ...
- vue+uwsgi+nginx部署luffty项目
在部署项目之前本人已经将前端代码和后端代码发布在了一个网站上,大家可自行下载,当然如果有Xftp工具也可以直接从本地导入. django代码 https://files.cnblogs.com/fil ...
- uwsgi + nginx 部署python项目(一)
uWSGI uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uws ...
- 阿里云轻量级服务器和NGINX部署Django项目
部署条件: 1.一台阿里云服务器(本人的是CentOS系统的服务器) 2.已经构建好的项目 3.服务器上安装并配置Nginx 首先第一步:在服务器上安装并配置Nginx 进入服务器 $ ssh roo ...
- uwsgi + nginx 部署python项目(二)
实现负载均衡 开启两个服务器,nginx负责分发请求到两个服务器,以减轻单个服务器负担. 配置uwsgi服务器 在a项目目录下生成uwsgi.ini文件,在b项目目录下生成uwsgi.ini文件,如何 ...
随机推荐
- [Luogu1291][SHOI2002]百事世界杯之旅
题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯.还不赶 ...
- 使用mongoose-paginate-v2查询缓慢问题
场景 mongoose-paginate-v2 是一个mongoose上的分页插件,我也用过很多次了,但是最近在创建项目遇到了问题. 老代码中不使用分页插件进行查询,然后自己使用中间件进行分页 old ...
- 开源造轮子:一个简洁,高效,轻量级,酷炫的不要不要的canvas粒子运动插件库
一:开篇 哈哈哈,感谢标题党的莅临~ 虽然标题有点夸张的感觉,但实际上,插件库确实是简洁,高效,轻量级,酷炫酷炫的咯.废话不多说,先来看个标配例子吧: (codepen在线演示编辑:http://co ...
- vue系列---snabbdom.js使用及源码分析(九)
一:什么是snabbdom? 在学习Vue或React中,我们了解最多的就是虚拟DOM,虚拟DOM可以看作是一颗模拟了DOM的Javascript树,主要是通过vnode实现一个无状态的组件,当组件状 ...
- Hibernate 查询方式、JPA查询方式
hibernate 查询方式: OID 查询 对象导航查询 HQL 方式查询 QBC方式查询 原生SQL方式查询 JPA 查询方式: OID 查询 对象导航查询 JPQL 方式查询 CriteriaB ...
- Mongoose 基本用法
1. SchemaTypes数据类型 数据类型 描述 String 字符串 Number 数字 Date 日期 Boolean 布尔值 Mixed 混合 Objectid 对象ID Array 数组 ...
- 使用linq实现回调函数
通过输入的Id找到parentId是该Id的列表,然后找到parentId是上面那个Id的列表,以此类推,找到第一目录下所有子目录的的列表. 通过传入第一目录的Id,得到该目录下的所有子目录. 通过回 ...
- 前端上传图片 base64转二进制上传
var dataURItoBlob = function (dataURI) { var byteString = atob(dataURI.split(',')[1]); var mimeStrin ...
- springboot(3)——配置文件和自动配置原理详细讲解
原文地址 目录 概述 1. 配置文件作用 2.配置文件位置 3.配置文件的定义 3.1如果是定义普通变量(数字 字符串 布尔) 3.2如果是定义对象.Map 3.3如果是定义数组 4.配置文件的使用 ...
- Java编程思想——第14章 类型信息(一)
运行时类型信息使得你可以在程序运行时发现和使用类型信息.Java是如何让我们在运行时识别对象和类的信息得呢? 主要有两种方式:1.传统RTTI,他假定我们在编译期间已经知道了所有类型:2.反射,它允许 ...